* [PATCH v4 0/6] Support the rk3399 gmac and pd function @ 2016-09-01 17:49 Caesar Wang 2016-09-01 17:49 ` [PATCH v4 1/6] net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data Caesar Wang ` (4 more replies) 0 siblings, 5 replies; 11+ messages in thread From: Caesar Wang @ 2016-09-01 17:49 UTC (permalink / raw) To: linux-arm-kernel This patch have the following changes: 7edf13e net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data 26e004e net: stmmac: dwmac-rk: fixes the gmac resume after PD on/off b216c2f net: stmmac: dwmac-rk: add pd_gmac support for rk3399 848bb71 arm64: dts: rockchip: add the gmac power domain on rk3399 508e41f arm64: dts: rockchip: add the gmac needed node for rk3399 fb26795 arm64: dts: rockchip: enable the gmac for rk3399 evb board Hi David, The patch 1,2,3 is related to the rockchip net/stammc driver, Hi Heiko, The patch 4,5,6 is related to the dts changes. The History version: v1: https://lkml.org/lkml/2016/8/30/668 v2: https://lkml.org/lkml/2016/8/31/27 v3: https://lkml.org/lkml/2016/8/31/981 Thanks your reviewing! - Caesar Changes in v4: - Fixes from the original patch on https://patchwork.kernel.org/patch/9274557/ - remove the Roger signed-off for domain patch. - The Roger had posted patch on https://patchwork.kernel.org/patch/9274561/. - re-fixup to original author. Changes in v3: - leave into two patches based on patchv2, and fix nits and commit, as comment on https://patchwork.kernel.org/patch/9306339/ - generate a patch from https://patchwork.kernel.org/patch/9306339/. Changes in v2: - rk_gmac_powerup instead of the rk_gmac_init. - fixes the build error on next kernel. - Fixes the order, ss Heiko commnets on https://patchwork.kernel.org/patch/9305991/ Caesar Wang (1): arm64: dts: rockchip: add the gmac power domain on rk3399 David Wu (1): net: stmmac: dwmac-rk: add pd_gmac support for rk3399 Roger Chen (4): net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data net: stmmac: dwmac-rk: fixes the gmac resume after PD on/off arm64: dts: rockchip: add the gmac needed node for rk3399 arm64: dts: rockchip: enable the gmac for rk3399 evb board .../devicetree/bindings/net/rockchip-dwmac.txt | 8 +- arch/arm64/boot/dts/rockchip/rk3399-evb.dts | 31 +++ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 90 ++++++++ drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 254 ++++++++++++++++++++- 4 files changed, 372 insertions(+), 11 deletions(-) -- 1.9.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 1/6] net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data 2016-09-01 17:49 [PATCH v4 0/6] Support the rk3399 gmac and pd function Caesar Wang @ 2016-09-01 17:49 ` Caesar Wang 2016-09-12 13:28 ` Rob Herring 2016-09-01 17:50 ` [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 Caesar Wang ` (3 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Caesar Wang @ 2016-09-01 17:49 UTC (permalink / raw) To: linux-arm-kernel From: Roger Chen <roger.chen@rock-chips.com> Add constants and callback functions for the dwmac on rk3228/rk3229 socs. As can be seen, the base structure is the same, only registers and the bits in them moved slightly. Signed-off-by: Roger Chen <roger.chen@rock-chips.com> Signed-off-by: Caesar Wang <wxt@rock-chips.com> Reviewed-by: Heiko Stuebner <heiko@sntech.de> --- Changes in v4: - Fixes from the original patch on https://patchwork.kernel.org/patch/9274557/ Changes in v3: None Changes in v2: None .../devicetree/bindings/net/rockchip-dwmac.txt | 8 +- drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 226 +++++++++++++++++++++ 2 files changed, 232 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt index cccd945..95383c5 100644 --- a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt +++ b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt @@ -3,8 +3,12 @@ Rockchip SoC RK3288 10/100/1000 Ethernet driver(GMAC) The device node has following properties. Required properties: - - compatible: Can be one of "rockchip,rk3228-gmac", "rockchip,rk3288-gmac", - "rockchip,rk3368-gmac" + - compatible: should be "rockchip,<name>-gamc" + "rockchip,rk3228-gmac": found on RK322x SoCs + "rockchip,rk3288-gmac": found on RK3288 SoCs + "rockchip,rk3366-gmac": found on RK3366 SoCs + "rockchip,rk3368-gmac": found on RK3368 SoCs + "rockchip,rk3399-gmac": found on RK3399 SoCs - reg: addresses and length of the register sets for the device. - interrupts: Should contain the GMAC interrupts. - interrupt-names: Should contain the interrupt names "macirq". diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c index 9210591..4e6a270 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c @@ -301,6 +301,118 @@ static const struct rk_gmac_ops rk3288_ops = { .set_rmii_speed = rk3288_set_rmii_speed, }; +#define RK3366_GRF_SOC_CON6 0x0418 +#define RK3366_GRF_SOC_CON7 0x041c + +/* RK3366_GRF_SOC_CON6 */ +#define RK3366_GMAC_PHY_INTF_SEL_RGMII (GRF_BIT(9) | GRF_CLR_BIT(10) | \ + GRF_CLR_BIT(11)) +#define RK3366_GMAC_PHY_INTF_SEL_RMII (GRF_CLR_BIT(9) | GRF_CLR_BIT(10) | \ + GRF_BIT(11)) +#define RK3366_GMAC_FLOW_CTRL GRF_BIT(8) +#define RK3366_GMAC_FLOW_CTRL_CLR GRF_CLR_BIT(8) +#define RK3366_GMAC_SPEED_10M GRF_CLR_BIT(7) +#define RK3366_GMAC_SPEED_100M GRF_BIT(7) +#define RK3366_GMAC_RMII_CLK_25M GRF_BIT(3) +#define RK3366_GMAC_RMII_CLK_2_5M GRF_CLR_BIT(3) +#define RK3366_GMAC_CLK_125M (GRF_CLR_BIT(4) | GRF_CLR_BIT(5)) +#define RK3366_GMAC_CLK_25M (GRF_BIT(4) | GRF_BIT(5)) +#define RK3366_GMAC_CLK_2_5M (GRF_CLR_BIT(4) | GRF_BIT(5)) +#define RK3366_GMAC_RMII_MODE GRF_BIT(6) +#define RK3366_GMAC_RMII_MODE_CLR GRF_CLR_BIT(6) + +/* RK3366_GRF_SOC_CON7 */ +#define RK3366_GMAC_TXCLK_DLY_ENABLE GRF_BIT(7) +#define RK3366_GMAC_TXCLK_DLY_DISABLE GRF_CLR_BIT(7) +#define RK3366_GMAC_RXCLK_DLY_ENABLE GRF_BIT(15) +#define RK3366_GMAC_RXCLK_DLY_DISABLE GRF_CLR_BIT(15) +#define RK3366_GMAC_CLK_RX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 8) +#define RK3366_GMAC_CLK_TX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 0) + +static void rk3366_set_to_rgmii(struct rk_priv_data *bsp_priv, + int tx_delay, int rx_delay) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, + RK3366_GMAC_PHY_INTF_SEL_RGMII | + RK3366_GMAC_RMII_MODE_CLR); + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON7, + RK3366_GMAC_RXCLK_DLY_ENABLE | + RK3366_GMAC_TXCLK_DLY_ENABLE | + RK3366_GMAC_CLK_RX_DL_CFG(rx_delay) | + RK3366_GMAC_CLK_TX_DL_CFG(tx_delay)); +} + +static void rk3366_set_to_rmii(struct rk_priv_data *bsp_priv) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, + RK3366_GMAC_PHY_INTF_SEL_RMII | RK3366_GMAC_RMII_MODE); +} + +static void rk3366_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + if (speed == 10) + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, + RK3366_GMAC_CLK_2_5M); + else if (speed == 100) + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, + RK3366_GMAC_CLK_25M); + else if (speed == 1000) + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, + RK3366_GMAC_CLK_125M); + else + dev_err(dev, "unknown speed value for RGMII! speed=%d", speed); +} + +static void rk3366_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + if (speed == 10) { + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, + RK3366_GMAC_RMII_CLK_2_5M | + RK3366_GMAC_SPEED_10M); + } else if (speed == 100) { + regmap_write(bsp_priv->grf, RK3366_GRF_SOC_CON6, + RK3366_GMAC_RMII_CLK_25M | + RK3366_GMAC_SPEED_100M); + } else { + dev_err(dev, "unknown speed value for RMII! speed=%d", speed); + } +} + +static const struct rk_gmac_ops rk3366_ops = { + .set_to_rgmii = rk3366_set_to_rgmii, + .set_to_rmii = rk3366_set_to_rmii, + .set_rgmii_speed = rk3366_set_rgmii_speed, + .set_rmii_speed = rk3366_set_rmii_speed, +}; + #define RK3368_GRF_SOC_CON15 0x043c #define RK3368_GRF_SOC_CON16 0x0440 @@ -413,6 +525,118 @@ static const struct rk_gmac_ops rk3368_ops = { .set_rmii_speed = rk3368_set_rmii_speed, }; +#define RK3399_GRF_SOC_CON5 0xc214 +#define RK3399_GRF_SOC_CON6 0xc218 + +/* RK3399_GRF_SOC_CON5 */ +#define RK3399_GMAC_PHY_INTF_SEL_RGMII (GRF_BIT(9) | GRF_CLR_BIT(10) | \ + GRF_CLR_BIT(11)) +#define RK3399_GMAC_PHY_INTF_SEL_RMII (GRF_CLR_BIT(9) | GRF_CLR_BIT(10) | \ + GRF_BIT(11)) +#define RK3399_GMAC_FLOW_CTRL GRF_BIT(8) +#define RK3399_GMAC_FLOW_CTRL_CLR GRF_CLR_BIT(8) +#define RK3399_GMAC_SPEED_10M GRF_CLR_BIT(7) +#define RK3399_GMAC_SPEED_100M GRF_BIT(7) +#define RK3399_GMAC_RMII_CLK_25M GRF_BIT(3) +#define RK3399_GMAC_RMII_CLK_2_5M GRF_CLR_BIT(3) +#define RK3399_GMAC_CLK_125M (GRF_CLR_BIT(4) | GRF_CLR_BIT(5)) +#define RK3399_GMAC_CLK_25M (GRF_BIT(4) | GRF_BIT(5)) +#define RK3399_GMAC_CLK_2_5M (GRF_CLR_BIT(4) | GRF_BIT(5)) +#define RK3399_GMAC_RMII_MODE GRF_BIT(6) +#define RK3399_GMAC_RMII_MODE_CLR GRF_CLR_BIT(6) + +/* RK3399_GRF_SOC_CON6 */ +#define RK3399_GMAC_TXCLK_DLY_ENABLE GRF_BIT(7) +#define RK3399_GMAC_TXCLK_DLY_DISABLE GRF_CLR_BIT(7) +#define RK3399_GMAC_RXCLK_DLY_ENABLE GRF_BIT(15) +#define RK3399_GMAC_RXCLK_DLY_DISABLE GRF_CLR_BIT(15) +#define RK3399_GMAC_CLK_RX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 8) +#define RK3399_GMAC_CLK_TX_DL_CFG(val) HIWORD_UPDATE(val, 0x7F, 0) + +static void rk3399_set_to_rgmii(struct rk_priv_data *bsp_priv, + int tx_delay, int rx_delay) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, + RK3399_GMAC_PHY_INTF_SEL_RGMII | + RK3399_GMAC_RMII_MODE_CLR); + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON6, + RK3399_GMAC_RXCLK_DLY_ENABLE | + RK3399_GMAC_TXCLK_DLY_ENABLE | + RK3399_GMAC_CLK_RX_DL_CFG(rx_delay) | + RK3399_GMAC_CLK_TX_DL_CFG(tx_delay)); +} + +static void rk3399_set_to_rmii(struct rk_priv_data *bsp_priv) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, + RK3399_GMAC_PHY_INTF_SEL_RMII | RK3399_GMAC_RMII_MODE); +} + +static void rk3399_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + if (speed == 10) + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, + RK3399_GMAC_CLK_2_5M); + else if (speed == 100) + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, + RK3399_GMAC_CLK_25M); + else if (speed == 1000) + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, + RK3399_GMAC_CLK_125M); + else + dev_err(dev, "unknown speed value for RGMII! speed=%d", speed); +} + +static void rk3399_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) +{ + struct device *dev = &bsp_priv->pdev->dev; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "%s: Missing rockchip,grf property\n", __func__); + return; + } + + if (speed == 10) { + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, + RK3399_GMAC_RMII_CLK_2_5M | + RK3399_GMAC_SPEED_10M); + } else if (speed == 100) { + regmap_write(bsp_priv->grf, RK3399_GRF_SOC_CON5, + RK3399_GMAC_RMII_CLK_25M | + RK3399_GMAC_SPEED_100M); + } else { + dev_err(dev, "unknown speed value for RMII! speed=%d", speed); + } +} + +static const struct rk_gmac_ops rk3399_ops = { + .set_to_rgmii = rk3399_set_to_rgmii, + .set_to_rmii = rk3399_set_to_rmii, + .set_rgmii_speed = rk3399_set_rgmii_speed, + .set_rmii_speed = rk3399_set_rmii_speed, +}; + static int gmac_clk_init(struct rk_priv_data *bsp_priv) { struct device *dev = &bsp_priv->pdev->dev; @@ -760,7 +984,9 @@ static int rk_gmac_probe(struct platform_device *pdev) static const struct of_device_id rk_gmac_dwmac_match[] = { { .compatible = "rockchip,rk3228-gmac", .data = &rk3228_ops }, { .compatible = "rockchip,rk3288-gmac", .data = &rk3288_ops }, + { .compatible = "rockchip,rk3366-gmac", .data = &rk3366_ops }, { .compatible = "rockchip,rk3368-gmac", .data = &rk3368_ops }, + { .compatible = "rockchip,rk3399-gmac", .data = &rk3399_ops }, { } }; MODULE_DEVICE_TABLE(of, rk_gmac_dwmac_match); -- 1.9.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4 1/6] net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data 2016-09-01 17:49 ` [PATCH v4 1/6] net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data Caesar Wang @ 2016-09-12 13:28 ` Rob Herring 0 siblings, 0 replies; 11+ messages in thread From: Rob Herring @ 2016-09-12 13:28 UTC (permalink / raw) To: linux-arm-kernel On Fri, Sep 02, 2016 at 01:49:59AM +0800, Caesar Wang wrote: > From: Roger Chen <roger.chen@rock-chips.com> > > Add constants and callback functions for the dwmac on rk3228/rk3229 socs. > As can be seen, the base structure is the same, only registers and the > bits in them moved slightly. > > Signed-off-by: Roger Chen <roger.chen@rock-chips.com> > Signed-off-by: Caesar Wang <wxt@rock-chips.com> > Reviewed-by: Heiko Stuebner <heiko@sntech.de> > > --- > > Changes in v4: > - Fixes from the original patch on https://patchwork.kernel.org/patch/9274557/ > > Changes in v3: None > Changes in v2: None > > .../devicetree/bindings/net/rockchip-dwmac.txt | 8 +- > drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 226 +++++++++++++++++++++ > 2 files changed, 232 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt > index cccd945..95383c5 100644 > --- a/Documentation/devicetree/bindings/net/rockchip-dwmac.txt > +++ b/Documentation/devicetree/bindings/net/rockchip-dwmac.txt > @@ -3,8 +3,12 @@ Rockchip SoC RK3288 10/100/1000 Ethernet driver(GMAC) > The device node has following properties. > > Required properties: > - - compatible: Can be one of "rockchip,rk3228-gmac", "rockchip,rk3288-gmac", > - "rockchip,rk3368-gmac" > + - compatible: should be "rockchip,<name>-gamc" s/gamc/gmac/ Please send a follow-up patch to fix. > + "rockchip,rk3228-gmac": found on RK322x SoCs > + "rockchip,rk3288-gmac": found on RK3288 SoCs > + "rockchip,rk3366-gmac": found on RK3366 SoCs > + "rockchip,rk3368-gmac": found on RK3368 SoCs > + "rockchip,rk3399-gmac": found on RK3399 SoCs > - reg: addresses and length of the register sets for the device. > - interrupts: Should contain the GMAC interrupts. > - interrupt-names: Should contain the interrupt names "macirq". ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 2016-09-01 17:49 [PATCH v4 0/6] Support the rk3399 gmac and pd function Caesar Wang 2016-09-01 17:49 ` [PATCH v4 1/6] net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data Caesar Wang @ 2016-09-01 17:50 ` Caesar Wang 2016-09-01 21:57 ` Doug Anderson 2016-09-02 11:00 ` Heiko Stübner 2016-09-01 17:50 ` [PATCH v4 5/6] arm64: dts: rockchip: add the gmac needed node for rk3399 Caesar Wang ` (2 subsequent siblings) 4 siblings, 2 replies; 11+ messages in thread From: Caesar Wang @ 2016-09-01 17:50 UTC (permalink / raw) To: linux-arm-kernel This patch supports the gmac pd to save power consumption. Even though some boards not need Ethernet support, the driver core can also take care of powering up the pd before probe. Signed-off-by: Caesar Wang <wxt@rock-chips.com> --- Changes in v4: - remove the Roger signed-off for domain patch. Changes in v3: - leave into two patches based on patchv2, and fix nits and commit, as comment on https://patchwork.kernel.org/patch/9306339/ Changes in v2: - Fixes the order, ss Heiko commnets on https://patchwork.kernel.org/patch/9305991/ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi index 32aebc8..2ab233f 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi @@ -611,6 +611,11 @@ status = "disabled"; }; + qos_gmac: qos at ffa5c000 { + compatible = "syscon"; + reg = <0x0 0xffa5c000 0x0 0x20>; + }; + qos_hdcp: qos at ffa90000 { compatible = "syscon"; reg = <0x0 0xffa90000 0x0 0x20>; @@ -739,6 +744,11 @@ }; /* These power domains are grouped by VD_LOGIC */ + pd_gmac at RK3399_PD_GMAC { + reg = <RK3399_PD_GMAC>; + clocks = <&cru ACLK_GMAC>; + pm_qos = <&qos_gmac>; + }; pd_vio at RK3399_PD_VIO { reg = <RK3399_PD_VIO>; #address-cells = <1>; -- 1.9.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 2016-09-01 17:50 ` [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 Caesar Wang @ 2016-09-01 21:57 ` Doug Anderson 2016-09-02 11:00 ` Heiko Stübner 1 sibling, 0 replies; 11+ messages in thread From: Doug Anderson @ 2016-09-01 21:57 UTC (permalink / raw) To: linux-arm-kernel Hi, On Thu, Sep 1, 2016 at 10:50 AM, Caesar Wang <wxt@rock-chips.com> wrote: > This patch supports the gmac pd to save power consumption. > Even though some boards not need Ethernet support, the driver > core can also take care of powering up the pd before probe. > > Signed-off-by: Caesar Wang <wxt@rock-chips.com> > --- > > Changes in v4: > - remove the Roger signed-off for domain patch. > > Changes in v3: > - leave into two patches based on patchv2, and fix nits and commit, as > comment on https://patchwork.kernel.org/patch/9306339/ > > Changes in v2: > - Fixes the order, ss Heiko commnets on > https://patchwork.kernel.org/patch/9305991/ > > arch/arm64/boot/dts/rockchip/rk3399.dtsi | 10 ++++++++++ > 1 file changed, 10 insertions(+) Reviewed-by: Douglas Anderson <dianders@chromium.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 2016-09-01 17:50 ` [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 Caesar Wang 2016-09-01 21:57 ` Doug Anderson @ 2016-09-02 11:00 ` Heiko Stübner 1 sibling, 0 replies; 11+ messages in thread From: Heiko Stübner @ 2016-09-02 11:00 UTC (permalink / raw) To: linux-arm-kernel Am Freitag, 2. September 2016, 01:50:02 schrieb Caesar Wang: > This patch supports the gmac pd to save power consumption. > Even though some boards not need Ethernet support, the driver > core can also take care of powering up the pd before probe. > > Signed-off-by: Caesar Wang <wxt@rock-chips.com> applied to my dts64 branch for 4.9 with Doug's Review-tag. I'd like to also pick up the other two dts patches after Dave is satisfied with the driver-side changes in patches 1-3. Heiko ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 5/6] arm64: dts: rockchip: add the gmac needed node for rk3399 2016-09-01 17:49 [PATCH v4 0/6] Support the rk3399 gmac and pd function Caesar Wang 2016-09-01 17:49 ` [PATCH v4 1/6] net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data Caesar Wang 2016-09-01 17:50 ` [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 Caesar Wang @ 2016-09-01 17:50 ` Caesar Wang 2016-09-07 18:12 ` Heiko Stuebner 2016-09-01 17:50 ` [PATCH v4 6/6] arm64: dts: rockchip: enable the gmac for rk3399 evb board Caesar Wang 2016-09-03 0:09 ` [PATCH v4 0/6] Support the rk3399 gmac and pd function David Miller 4 siblings, 1 reply; 11+ messages in thread From: Caesar Wang @ 2016-09-01 17:50 UTC (permalink / raw) To: linux-arm-kernel From: Roger Chen <roger.chen@rock-chips.com> The RK3399 GMAC Ethernet Controller provides a complete Ethernet interface from processor to a Reduced Media Independent Interface (RMII) and Reduced Gigabit Media Independent Interface (RGMII) compliant Ethernet PHY. This patch adds the related needed device information. e.g.: interrupts, grf, clocks, pinctrl and so on. The full details are in [0]. [0]: Documentation/devicetree/bindings/net/rockchip-dwmac.txt Signed-off-by: Roger Chen <roger.chen@rock-chips.com> Signed-off-by: Caesar Wang <wxt@rock-chips.com> --- Changes in v4: - The Roger had posted patch on https://patchwork.kernel.org/patch/9274561/. - re-fixup to original author. Changes in v3: - generate a patch from https://patchwork.kernel.org/patch/9306339/. Changes in v2: None arch/arm64/boot/dts/rockchip/rk3399.dtsi | 80 ++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi index 2ab233f..092bb45 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi @@ -200,6 +200,26 @@ }; }; + gmac: ethernet at fe300000 { + compatible = "rockchip,rk3399-gmac"; + reg = <0x0 0xfe300000 0x0 0x10000>; + interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq"; + clocks = <&cru SCLK_MAC>, <&cru SCLK_MAC_RX>, + <&cru SCLK_MAC_TX>, <&cru SCLK_MACREF>, + <&cru SCLK_MACREF_OUT>, <&cru ACLK_GMAC>, + <&cru PCLK_GMAC>; + clock-names = "stmmaceth", "mac_clk_rx", + "mac_clk_tx", "clk_mac_ref", + "clk_mac_refout", "aclk_mac", + "pclk_mac"; + power-domains = <&power RK3399_PD_GMAC>; + resets = <&cru SRST_A_GMAC>; + reset-names = "stmmaceth"; + rockchip,grf = <&grf>; + status = "disabled"; + }; + sdio0: dwmmc at fe310000 { compatible = "rockchip,rk3399-dw-mshc", "rockchip,rk3288-dw-mshc"; @@ -1193,6 +1213,66 @@ drive-strength = <13>; }; + gmac { + rgmii_pins: rgmii-pins { + rockchip,pins = + /* mac_txclk */ + <3 17 RK_FUNC_1 &pcfg_pull_none_13ma>, + /* mac_rxclk */ + <3 14 RK_FUNC_1 &pcfg_pull_none>, + /* mac_mdio */ + <3 13 RK_FUNC_1 &pcfg_pull_none>, + /* mac_txen */ + <3 12 RK_FUNC_1 &pcfg_pull_none_13ma>, + /* mac_clk */ + <3 11 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxdv */ + <3 9 RK_FUNC_1 &pcfg_pull_none>, + /* mac_mdc */ + <3 8 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxd1 */ + <3 7 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxd0 */ + <3 6 RK_FUNC_1 &pcfg_pull_none>, + /* mac_txd1 */ + <3 5 RK_FUNC_1 &pcfg_pull_none_13ma>, + /* mac_txd0 */ + <3 4 RK_FUNC_1 &pcfg_pull_none_13ma>, + /* mac_rxd3 */ + <3 3 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxd2 */ + <3 2 RK_FUNC_1 &pcfg_pull_none>, + /* mac_txd3 */ + <3 1 RK_FUNC_1 &pcfg_pull_none_13ma>, + /* mac_txd2 */ + <3 0 RK_FUNC_1 &pcfg_pull_none_13ma>; + }; + + rmii_pins: rmii-pins { + rockchip,pins = + /* mac_mdio */ + <3 13 RK_FUNC_1 &pcfg_pull_none>, + /* mac_txen */ + <3 12 RK_FUNC_1 &pcfg_pull_none_13ma>, + /* mac_clk */ + <3 11 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxer */ + <3 10 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxdv */ + <3 9 RK_FUNC_1 &pcfg_pull_none>, + /* mac_mdc */ + <3 8 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxd1 */ + <3 7 RK_FUNC_1 &pcfg_pull_none>, + /* mac_rxd0 */ + <3 6 RK_FUNC_1 &pcfg_pull_none>, + /* mac_txd1 */ + <3 5 RK_FUNC_1 &pcfg_pull_none_13ma>, + /* mac_txd0 */ + <3 4 RK_FUNC_1 &pcfg_pull_none_13ma>; + }; + }; + i2c0 { i2c0_xfer: i2c0-xfer { rockchip,pins = -- 1.9.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4 5/6] arm64: dts: rockchip: add the gmac needed node for rk3399 2016-09-01 17:50 ` [PATCH v4 5/6] arm64: dts: rockchip: add the gmac needed node for rk3399 Caesar Wang @ 2016-09-07 18:12 ` Heiko Stuebner 0 siblings, 0 replies; 11+ messages in thread From: Heiko Stuebner @ 2016-09-07 18:12 UTC (permalink / raw) To: linux-arm-kernel Am Freitag, 2. September 2016, 01:50:03 CEST schrieb Caesar Wang: > From: Roger Chen <roger.chen@rock-chips.com> > > The RK3399 GMAC Ethernet Controller provides a complete Ethernet interface > from processor to a Reduced Media Independent Interface (RMII) and Reduced > Gigabit Media Independent Interface (RGMII) compliant Ethernet PHY. > > This patch adds the related needed device information. > e.g.: interrupts, grf, clocks, pinctrl and so on. > > The full details are in [0]. > > [0]: > Documentation/devicetree/bindings/net/rockchip-dwmac.txt > > Signed-off-by: Roger Chen <roger.chen@rock-chips.com> > Signed-off-by: Caesar Wang <wxt@rock-chips.com> > --- > > Changes in v4: > - The Roger had posted patch on https://patchwork.kernel.org/patch/9274561/. > - re-fixup to original author. > > Changes in v3: > - generate a patch from https://patchwork.kernel.org/patch/9306339/. > > Changes in v2: None > > arch/arm64/boot/dts/rockchip/rk3399.dtsi | 80 > ++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) > > diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi > b/arch/arm64/boot/dts/rockchip/rk3399.dtsi index 2ab233f..092bb45 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi > +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi > @@ -200,6 +200,26 @@ > }; > }; > > + gmac: ethernet at fe300000 { > + compatible = "rockchip,rk3399-gmac"; > + reg = <0x0 0xfe300000 0x0 0x10000>; > + interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; applied to my dts64 branch, after making this a + interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH 0>; (due to the 4-cell interrupt change) Heiko ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 6/6] arm64: dts: rockchip: enable the gmac for rk3399 evb board 2016-09-01 17:49 [PATCH v4 0/6] Support the rk3399 gmac and pd function Caesar Wang ` (2 preceding siblings ...) 2016-09-01 17:50 ` [PATCH v4 5/6] arm64: dts: rockchip: add the gmac needed node for rk3399 Caesar Wang @ 2016-09-01 17:50 ` Caesar Wang 2016-09-07 18:16 ` Heiko Stuebner 2016-09-03 0:09 ` [PATCH v4 0/6] Support the rk3399 gmac and pd function David Miller 4 siblings, 1 reply; 11+ messages in thread From: Caesar Wang @ 2016-09-01 17:50 UTC (permalink / raw) To: linux-arm-kernel From: Roger Chen <roger.chen@rock-chips.com> We add the required and optional properties for evb board. See the [0] to get the detail information. [0]: Documentation/devicetree/bindings/net/rockchip-dwmac.txt Signed-off-by: Roger Chen <roger.chen@rock-chips.com> Signed-off-by: Caesar Wang <wxt@rock-chips.com> --- Changes in v4: None Changes in v3: None Changes in v2: None arch/arm64/boot/dts/rockchip/rk3399-evb.dts | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3399-evb.dts b/arch/arm64/boot/dts/rockchip/rk3399-evb.dts index d47b4e9..ed6f2e8 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-evb.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-evb.dts @@ -94,12 +94,43 @@ regulator-always-on; regulator-boot-on; }; + + clkin_gmac: external-gmac-clock { + compatible = "fixed-clock"; + clock-frequency = <125000000>; + clock-output-names = "clkin_gmac"; + #clock-cells = <0>; + }; + + vcc_phy: vcc-phy-regulator { + compatible = "regulator-fixed"; + regulator-name = "vcc_phy"; + regulator-always-on; + regulator-boot-on; + }; + }; &emmc_phy { status = "okay"; }; +&gmac { + phy-supply = <&vcc_phy>; + phy-mode = "rgmii"; + clock_in_out = "input"; + snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>; + snps,reset-active-low; + snps,reset-delays-us = <0 10000 50000>; + assigned-clocks = <&cru SCLK_RMII_SRC>; + assigned-clock-parents = <&clkin_gmac>; + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; + tx_delay = <0x28>; + rx_delay = <0x11>; + status = "okay"; +}; + &pwm0 { status = "okay"; }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4 6/6] arm64: dts: rockchip: enable the gmac for rk3399 evb board 2016-09-01 17:50 ` [PATCH v4 6/6] arm64: dts: rockchip: enable the gmac for rk3399 evb board Caesar Wang @ 2016-09-07 18:16 ` Heiko Stuebner 0 siblings, 0 replies; 11+ messages in thread From: Heiko Stuebner @ 2016-09-07 18:16 UTC (permalink / raw) To: linux-arm-kernel Am Freitag, 2. September 2016, 01:50:04 CEST schrieb Caesar Wang: > From: Roger Chen <roger.chen@rock-chips.com> > > We add the required and optional properties for evb board. > See the [0] to get the detail information. > > [0]: > Documentation/devicetree/bindings/net/rockchip-dwmac.txt > > Signed-off-by: Roger Chen <roger.chen@rock-chips.com> > Signed-off-by: Caesar Wang <wxt@rock-chips.com> applied to my dts64 branch, after moving clkin_gmac and sorting the gmac properties according to their alphabetical position. Heiko ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 0/6] Support the rk3399 gmac and pd function 2016-09-01 17:49 [PATCH v4 0/6] Support the rk3399 gmac and pd function Caesar Wang ` (3 preceding siblings ...) 2016-09-01 17:50 ` [PATCH v4 6/6] arm64: dts: rockchip: enable the gmac for rk3399 evb board Caesar Wang @ 2016-09-03 0:09 ` David Miller 4 siblings, 0 replies; 11+ messages in thread From: David Miller @ 2016-09-03 0:09 UTC (permalink / raw) To: linux-arm-kernel From: Caesar Wang <wxt@rock-chips.com> Date: Fri, 2 Sep 2016 01:49:58 +0800 > This patch have the following changes: > > 7edf13e net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data > 26e004e net: stmmac: dwmac-rk: fixes the gmac resume after PD on/off > b216c2f net: stmmac: dwmac-rk: add pd_gmac support for rk3399 > 848bb71 arm64: dts: rockchip: add the gmac power domain on rk3399 > 508e41f arm64: dts: rockchip: add the gmac needed node for rk3399 > fb26795 arm64: dts: rockchip: enable the gmac for rk3399 evb board > > Hi David, > The patch 1,2,3 is related to the rockchip net/stammc driver, > > Hi Heiko, > The patch 4,5,6 is related to the dts changes. Patches 1, 2, and 3 applied to net-next, thanks. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-09-12 13:28 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-09-01 17:49 [PATCH v4 0/6] Support the rk3399 gmac and pd function Caesar Wang 2016-09-01 17:49 ` [PATCH v4 1/6] net: stmmac: dwmac-rk: add rk3366 & rk3399 specific data Caesar Wang 2016-09-12 13:28 ` Rob Herring 2016-09-01 17:50 ` [PATCH v4 4/6] arm64: dts: rockchip: add the gmac power domain on rk3399 Caesar Wang 2016-09-01 21:57 ` Doug Anderson 2016-09-02 11:00 ` Heiko Stübner 2016-09-01 17:50 ` [PATCH v4 5/6] arm64: dts: rockchip: add the gmac needed node for rk3399 Caesar Wang 2016-09-07 18:12 ` Heiko Stuebner 2016-09-01 17:50 ` [PATCH v4 6/6] arm64: dts: rockchip: enable the gmac for rk3399 evb board Caesar Wang 2016-09-07 18:16 ` Heiko Stuebner 2016-09-03 0:09 ` [PATCH v4 0/6] Support the rk3399 gmac and pd function David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).