Commit 49045b9c authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'mediatek-next'

Biao Huang says:

====================
MediaTek Ethernet Patches on MT8195

Changes in v13:
1. add reviewed-by in "net: dt-bindings: dwmac: add support for mt8195"
   as Rob's comments.
2. drop num_clks defined in mediatek_dwmac_plat_data struct in "stmmac:
   dwmac-mediatek: Reuse more common features" as Angelo's comments.

Changes in v12:
1. add a new patch "stmmac: dwmac-mediatek: re-arrange clock setting" to
   this series, to simplify clock handling in driver, which benefits to
   binding file mediatek-dwmac.yaml.
2. modify dt-binding description in patch "net: dt-bindings: dwmac: add
   support for mt8195" as Rob's comments in v10 series, put mac_cg to the
   end of clock list.
3. there are small changes in patch "stmmac: dwmac-mediatek: add support
   for mt8195", @AngeloGioacchino, please review it kindly.

Changes in v11:
1. add reivewed-by in "net: dt-bindings: dwmac: Convert mediatek-dwmac to
   DT schema" as Rob's comments.
2. fall back "net: dt-bindings: dwmac: add support for mt8195" to v8 version
   as mentioned in previous reply(https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20211216055328.15953-7-biao.huang@mediatek.com/):
   2.1 there is already a special clock named "rmii_internal", which need to
       be put to the end of the clock list(driver special handling),
       so we can't simply put new "mac_cg" for mt8195 to the end of the clock
       list.
   2.2 we prefer the if-then schema, which will make mt8195 clock list clearer
       with some duplicated information.
   2.3 we expect the future IC will follow mt2712 or mt8195, so we only need
       add new IC name to compatible list for future IC, and will not make the
       clock list binding files worse.

Changes in v10:
1. add detailed description in "arm64: dts: mt2712: update ethernet
   device node" to make the modifications clearer as Matthias's comments.
2. modify dt-binding description as Rob's comments, and "make dtbs_check" runs
   pass locally with "arm64: dts: mt2712: update ethernet device node"
   in this series.

Changes in v9:
1. remove oneOf for 1 entry as Rob's comments.
2. add new clocks to the end of existing clocks to simplify
   the binding as Rob's comments.

Changes in v8:
1. add acked-by in "stmmac: dwmac-mediatek: add platform level clocks
   management" patch

Changes in v7:
1. fix uninitialized warning as Jakub's comments.

Changes in v6:
1. update commit message as Jakub's comments.
2. split mt8195 eth dts patch("arm64: dts: mt8195: add ethernet device
   node") from this series, since mt8195 dtsi/dts basic patches is still
   under reviewing.
   https://patchwork.kernel.org/project/linux-mediatek/list/?series=579071


   we'll resend mt8195 eth dts patch once all the dependent patches are
   accepted.

Changes in v5:
1. remove useless inclusion in dwmac-mediatek.c as Angelo's comments.
2. add acked-by in "net-next: stmmac: dwmac-mediatek: add support for
   mt8195" patch

Changes in v4:
1. add changes in commit message in "net-next: dt-bindings: dwmac:
   Convert mediatek-dwmac to DT schema" patch.
2. remove ethernet-controller.yaml since snps,dwmac.yaml already include it.

Changes in v3:
1. Add prefix "net-next" to support new IC as Denis's suggestion.
2. Split dt-bindings to two patches, one for conversion, and the other for
   new IC.
3. add a new patch to update device node in mt2712-evb.dts to accommodate to
   changes in driver.
4. remove unnecessary wrapper as Angelo's suggestion.
5. Add acked-by in "net-next: stmmac: dwmac-mediatek: Reuse more common
   features" patch.

Changes in v2:
1. fix errors/warnings in mediatek-dwmac.yaml with upgraded dtschema tools

Changes in v1:
This series include 5 patches:
1. add platform level clocks management for dwmac-mediatek
2. resue more common features defined in stmmac_platform.c
3. add ethernet entry for mt8195
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 79b04108 ee410d51
Loading
Loading
Loading
Loading
+0 −91
Original line number Diff line number Diff line
MediaTek DWMAC glue layer controller

This file documents platform glue layer for stmmac.
Please see stmmac.txt for the other unchanged properties.

The device node has following properties.

Required properties:
- compatible:  Should be "mediatek,mt2712-gmac" for MT2712 SoC
- reg:  Address and length of the register set for the device
- interrupts:  Should contain the MAC interrupts
- interrupt-names: Should contain a list of interrupt names corresponding to
	the interrupts in the interrupts property, if available.
	Should be "macirq" for the main MAC IRQ
- clocks: Must contain a phandle for each entry in clock-names.
- clock-names: The name of the clock listed in the clocks property. These are
	"axi", "apb", "mac_main", "ptp_ref", "rmii_internal" for MT2712 SoC.
- mac-address: See ethernet.txt in the same directory
- phy-mode: See ethernet.txt in the same directory
- mediatek,pericfg: A phandle to the syscon node that control ethernet
	interface and timing delay.

Optional properties:
- mediatek,tx-delay-ps: TX clock delay macro value. Default is 0.
	It should be defined for RGMII/MII interface.
	It should be defined for RMII interface when the reference clock is from MT2712 SoC.
- mediatek,rx-delay-ps: RX clock delay macro value. Default is 0.
	It should be defined for RGMII/MII interface.
	It should be defined for RMII interface.
Both delay properties need to be a multiple of 170 for RGMII interface,
or will round down. Range 0~31*170.
Both delay properties need to be a multiple of 550 for MII/RMII interface,
or will round down. Range 0~31*550.

- mediatek,rmii-rxc: boolean property, if present indicates that the RMII
	reference clock, which is from external PHYs, is connected to RXC pin
	on MT2712 SoC.
	Otherwise, is connected to TXC pin.
- mediatek,rmii-clk-from-mac: boolean property, if present indicates that
	MT2712 SoC provides the RMII reference clock, which outputs to TXC pin only.
- mediatek,txc-inverse: boolean property, if present indicates that
	1. tx clock will be inversed in MII/RGMII case,
	2. tx clock inside MAC will be inversed relative to reference clock
	   which is from external PHYs in RMII case, and it rarely happen.
	3. the reference clock, which outputs to TXC pin will be inversed in RMII case
	   when the reference clock is from MT2712 SoC.
- mediatek,rxc-inverse: boolean property, if present indicates that
	1. rx clock will be inversed in MII/RGMII case.
	2. reference clock will be inversed when arrived at MAC in RMII case, when
	   the reference clock is from external PHYs.
	3. the inside clock, which be sent to MAC, will be inversed in RMII case when
	   the reference clock is from MT2712 SoC.
- assigned-clocks: mac_main and ptp_ref clocks
- assigned-clock-parents: parent clocks of the assigned clocks

Example:
	eth: ethernet@1101c000 {
		compatible = "mediatek,mt2712-gmac";
		reg = <0 0x1101c000 0 0x1300>;
		interrupts = <GIC_SPI 237 IRQ_TYPE_LEVEL_LOW>;
		interrupt-names = "macirq";
		phy-mode ="rgmii-rxid";
		mac-address = [00 55 7b b5 7d f7];
		clock-names = "axi",
			      "apb",
			      "mac_main",
			      "ptp_ref",
			      "rmii_internal";
		clocks = <&pericfg CLK_PERI_GMAC>,
			 <&pericfg CLK_PERI_GMAC_PCLK>,
			 <&topckgen CLK_TOP_ETHER_125M_SEL>,
			 <&topckgen CLK_TOP_ETHER_50M_SEL>,
			 <&topckgen CLK_TOP_ETHER_50M_RMII_SEL>;
		assigned-clocks = <&topckgen CLK_TOP_ETHER_125M_SEL>,
				  <&topckgen CLK_TOP_ETHER_50M_SEL>,
				  <&topckgen CLK_TOP_ETHER_50M_RMII_SEL>;
		assigned-clock-parents = <&topckgen CLK_TOP_ETHERPLL_125M>,
					 <&topckgen CLK_TOP_APLL1_D3>,
					 <&topckgen CLK_TOP_ETHERPLL_50M>;
		power-domains = <&scpsys MT2712_POWER_DOMAIN_AUDIO>;
		mediatek,pericfg = <&pericfg>;
		mediatek,tx-delay-ps = <1530>;
		mediatek,rx-delay-ps = <1530>;
		mediatek,rmii-rxc;
		mediatek,txc-inverse;
		mediatek,rxc-inverse;
		snps,txpbl = <1>;
		snps,rxpbl = <1>;
		snps,reset-gpio = <&pio 87 GPIO_ACTIVE_LOW>;
		snps,reset-active-low;
	};
+175 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/mediatek-dwmac.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: MediaTek DWMAC glue layer controller

maintainers:
  - Biao Huang <biao.huang@mediatek.com>

description:
  This file documents platform glue layer for stmmac.

# We need a select here so we don't match all nodes with 'snps,dwmac'
select:
  properties:
    compatible:
      contains:
        enum:
          - mediatek,mt2712-gmac
          - mediatek,mt8195-gmac
  required:
    - compatible

allOf:
  - $ref: "snps,dwmac.yaml#"

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - mediatek,mt2712-gmac
          - const: snps,dwmac-4.20a
      - items:
          - enum:
              - mediatek,mt8195-gmac
          - const: snps,dwmac-5.10a

  clocks:
    minItems: 5
    items:
      - description: AXI clock
      - description: APB clock
      - description: MAC Main clock
      - description: PTP clock
      - description: RMII reference clock provided by MAC
      - description: MAC clock gate

  clock-names:
    minItems: 5
    items:
      - const: axi
      - const: apb
      - const: mac_main
      - const: ptp_ref
      - const: rmii_internal
      - const: mac_cg

  mediatek,pericfg:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      The phandle to the syscon node that control ethernet
      interface and timing delay.

  mediatek,tx-delay-ps:
    description:
      The internal TX clock delay (provided by this driver) in nanoseconds.
      For MT2712 RGMII interface, Allowed value need to be a multiple of 170,
      or will round down. Range 0~31*170.
      For MT2712 RMII/MII interface, Allowed value need to be a multiple of 550,
      or will round down. Range 0~31*550.
      For MT8195 RGMII/RMII/MII interface, Allowed value need to be a multiple of 290,
      or will round down. Range 0~31*290.

  mediatek,rx-delay-ps:
    description:
      The internal RX clock delay (provided by this driver) in nanoseconds.
      For MT2712 RGMII interface, Allowed value need to be a multiple of 170,
      or will round down. Range 0~31*170.
      For MT2712 RMII/MII interface, Allowed value need to be a multiple of 550,
      or will round down. Range 0~31*550.
      For MT8195 RGMII/RMII/MII interface, Allowed value need to be a multiple
      of 290, or will round down. Range 0~31*290.

  mediatek,rmii-rxc:
    type: boolean
    description:
      If present, indicates that the RMII reference clock, which is from external
      PHYs, is connected to RXC pin. Otherwise, is connected to TXC pin.

  mediatek,rmii-clk-from-mac:
    type: boolean
    description:
      If present, indicates that MAC provides the RMII reference clock, which
      outputs to TXC pin only.

  mediatek,txc-inverse:
    type: boolean
    description:
      If present, indicates that
      1. tx clock will be inversed in MII/RGMII case,
      2. tx clock inside MAC will be inversed relative to reference clock
         which is from external PHYs in RMII case, and it rarely happen.
      3. the reference clock, which outputs to TXC pin will be inversed in RMII case
         when the reference clock is from MAC.

  mediatek,rxc-inverse:
    type: boolean
    description:
      If present, indicates that
      1. rx clock will be inversed in MII/RGMII case.
      2. reference clock will be inversed when arrived at MAC in RMII case, when
         the reference clock is from external PHYs.
      3. the inside clock, which be sent to MAC, will be inversed in RMII case when
         the reference clock is from MAC.

  mediatek,mac-wol:
    type: boolean
    description:
      If present, indicates that MAC supports WOL(Wake-On-LAN), and MAC WOL will be enabled.
      Otherwise, PHY WOL is perferred.

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - clocks
  - clock-names
  - phy-mode
  - mediatek,pericfg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/mt2712-clk.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/power/mt2712-power.h>

    eth: ethernet@1101c000 {
        compatible = "mediatek,mt2712-gmac", "snps,dwmac-4.20a";
        reg = <0x1101c000 0x1300>;
        interrupts = <GIC_SPI 237 IRQ_TYPE_LEVEL_LOW>;
        interrupt-names = "macirq";
        phy-mode ="rgmii-rxid";
        mac-address = [00 55 7b b5 7d f7];
        clock-names = "axi",
                      "apb",
                      "mac_main",
                      "ptp_ref",
                      "rmii_internal";
        clocks = <&pericfg CLK_PERI_GMAC>,
                 <&pericfg CLK_PERI_GMAC_PCLK>,
                 <&topckgen CLK_TOP_ETHER_125M_SEL>,
                 <&topckgen CLK_TOP_ETHER_50M_SEL>,
                 <&topckgen CLK_TOP_ETHER_50M_RMII_SEL>;
        assigned-clocks = <&topckgen CLK_TOP_ETHER_125M_SEL>,
                          <&topckgen CLK_TOP_ETHER_50M_SEL>,
                          <&topckgen CLK_TOP_ETHER_50M_RMII_SEL>;
        assigned-clock-parents = <&topckgen CLK_TOP_ETHERPLL_125M>,
                                 <&topckgen CLK_TOP_APLL1_D3>,
                                 <&topckgen CLK_TOP_ETHERPLL_50M>;
        power-domains = <&scpsys MT2712_POWER_DOMAIN_AUDIO>;
        mediatek,pericfg = <&pericfg>;
        mediatek,tx-delay-ps = <1530>;
        snps,txpbl = <1>;
        snps,rxpbl = <1>;
        snps,reset-gpio = <&pio 87 GPIO_ACTIVE_LOW>;
        snps,reset-delays-us = <0 10000 10000>;
    };
+1 −0
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@
	phy-handle = <&ethernet_phy0>;
	mediatek,tx-delay-ps = <1530>;
	snps,reset-gpio = <&pio 87 GPIO_ACTIVE_LOW>;
	snps,reset-delays-us = <0 10000 10000>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&eth_default>;
	pinctrl-1 = <&eth_sleep>;
+9 −5
Original line number Diff line number Diff line
@@ -726,7 +726,7 @@
	};

	eth: ethernet@1101c000 {
		compatible = "mediatek,mt2712-gmac";
		compatible = "mediatek,mt2712-gmac", "snps,dwmac-4.20a";
		reg = <0 0x1101c000 0 0x1300>;
		interrupts = <GIC_SPI 237 IRQ_TYPE_LEVEL_LOW>;
		interrupt-names = "macirq";
@@ -734,15 +734,19 @@
		clock-names = "axi",
			      "apb",
			      "mac_main",
			      "ptp_ref";
			      "ptp_ref",
			      "rmii_internal";
		clocks = <&pericfg CLK_PERI_GMAC>,
			 <&pericfg CLK_PERI_GMAC_PCLK>,
			 <&topckgen CLK_TOP_ETHER_125M_SEL>,
			 <&topckgen CLK_TOP_ETHER_50M_SEL>;
			 <&topckgen CLK_TOP_ETHER_50M_SEL>,
			 <&topckgen CLK_TOP_ETHER_50M_RMII_SEL>;
		assigned-clocks = <&topckgen CLK_TOP_ETHER_125M_SEL>,
				  <&topckgen CLK_TOP_ETHER_50M_SEL>;
				  <&topckgen CLK_TOP_ETHER_50M_SEL>,
				  <&topckgen CLK_TOP_ETHER_50M_RMII_SEL>;
		assigned-clock-parents = <&topckgen CLK_TOP_ETHERPLL_125M>,
					 <&topckgen CLK_TOP_APLL1_D3>;
					 <&topckgen CLK_TOP_APLL1_D3>,
					 <&topckgen CLK_TOP_ETHERPLL_50M>;
		power-domains = <&scpsys MT2712_POWER_DOMAIN_AUDIO>;
		mediatek,pericfg = <&pericfg>;
		snps,axi-config = <&stmmac_axi_setup>;
+340 −48

File changed.

Preview size limit exceeded, changes collapsed.