Skip to content

Commit

Permalink
Merge branch 'stmmac-mt2712-support'
Browse files Browse the repository at this point in the history
Biao Huang says:

====================
add Ethernet driver support for mt2712

Changes in v6:
 modifications according to comments from Rob/Andrew/Sean:
 1. use delay_ps instead of delay stage.
 2. add comments in driver to avoid confusion.
 2. rewrite set_delay function.
 3. modify binding document for properties: tx-delay-ps/rx-delay-ps/pericfg etc.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Dec 12, 2018
2 parents 3f9b7ee + 58ee902 commit 9a58ee2
Show file tree
Hide file tree
Showing 4 changed files with 504 additions and 0 deletions.
87 changes: 87 additions & 0 deletions Documentation/devicetree/bindings/net/mediatek-dwmac.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
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" 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/rgmii-rxid/mii interface.
- mediatek,rx-delay-ps: RX clock delay macro value. Default is 0.
It should be defined for rgmii/rgmii-txid/mii/rmii interface.
Both delay properties need to be a multiple of 170 for fine-tune rgmii,
range 0~31*170.
Both delay properties need to be a multiple of 550 for coarse-tune rgmii,
range 0~31*550.
Both delay properties need to be a multiple of 550 for mii/rmii,
range 0~31*550.

- mediatek,fine-tune: boolean property, if present indicates that fine delay
is selected for rgmii interface.
If present, tx-delay-ps/rx-delay-ps is 170+/-50ps per stage.
Else tx-delay-ps/rx-delay-ps of coarse delay macro is 0.55+/-0.2ns per stage.
This property do not apply to non-rgmii PHYs.
Only coarse-tune delay is supported for mii/rmii PHYs.
- 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,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.
- 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.
- 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";
mac-address = [00 55 7b b5 7d f7];
clock-names = "axi",
"apb",
"mac_main",
"ptp_ref",
"ptp_top";
clocks = <&pericfg CLK_PERI_GMAC>,
<&pericfg CLK_PERI_GMAC_PCLK>,
<&topckgen CLK_TOP_ETHER_125M_SEL>,
<&topckgen CLK_TOP_ETHER_50M_SEL>;
assigned-clocks = <&topckgen CLK_TOP_ETHER_125M_SEL>,
<&topckgen CLK_TOP_ETHER_50M_SEL>;
assigned-clock-parents = <&topckgen CLK_TOP_ETHERPLL_125M>,
<&topckgen CLK_TOP_APLL1_D3>;
mediatek,pericfg = <&pericfg>;
mediatek,tx-delay-ps = <1530>;
mediatek,rx-delay-ps = <1530>;
mediatek,fine-tune;
mediatek,rmii-rxc;
mediatek,txc-inverse;
mediatek,rxc-inverse;
snps,txpbl = <32>;
snps,rxpbl = <32>;
snps,reset-gpio = <&pio 87 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
};
8 changes: 8 additions & 0 deletions drivers/net/ethernet/stmicro/stmmac/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,14 @@ config DWMAC_LPC18XX
---help---
Support for NXP LPC18xx/43xx DWMAC Ethernet.

config DWMAC_MEDIATEK
tristate "MediaTek MT27xx GMAC support"
depends on OF && (ARCH_MEDIATEK || COMPILE_TEST)
help
Support for MediaTek GMAC Ethernet controller.

This selects the MT2712 SoC support for the stmmac driver.

config DWMAC_MESON
tristate "Amlogic Meson dwmac support"
default ARCH_MESON
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/stmicro/stmmac/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ obj-$(CONFIG_STMMAC_PLATFORM) += stmmac-platform.o
obj-$(CONFIG_DWMAC_ANARION) += dwmac-anarion.o
obj-$(CONFIG_DWMAC_IPQ806X) += dwmac-ipq806x.o
obj-$(CONFIG_DWMAC_LPC18XX) += dwmac-lpc18xx.o
obj-$(CONFIG_DWMAC_MEDIATEK) += dwmac-mediatek.o
obj-$(CONFIG_DWMAC_MESON) += dwmac-meson.o dwmac-meson8b.o
obj-$(CONFIG_DWMAC_OXNAS) += dwmac-oxnas.o
obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o
Expand Down
Loading

0 comments on commit 9a58ee2

Please sign in to comment.