ARM: shmobile: sh-eth pins in DT for armadillo800eva
Subsystems (9)
cover ARM: shmobile: sh-eth pins in DT for armadillo800eva
This patch series gets rid of gpio_request()-style ethernet pin configuration on armadillo800eva in reference implementation.
Guennadi Liakhovetski (3):
pinctrl: add ethernet pin groups to r8a7740
ethernet: add a PHY reset GPIO DT binding to sh_eth
ARM: shmobile: move pin configuration on armadillo800eva-reference to
DT
Documentation/devicetree/bindings/net/sh_ether.txt | 2 + .../boot/dts/r8a7740-armadillo800eva-reference.dts | 7 ++++ .../board-armadillo800eva-reference.c | 24 --------------- drivers/net/ethernet/renesas/sh_eth.c | 9 +++++- drivers/pinctrl/sh-pfc/pfc-r8a7740.c | 31 ++++++++++++++++++++ 5 files changed, 48 insertions(+), 25 deletions(-)
Signature · 8 lines
1.7.2.5 Thanks Guennadi --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/
PATCH 1/3 pinctrl: add ethernet pin groups to r8a7740
r8a7740 SoCs have an integrated gigabit ethernet MAC. This patch adds two pin groups: base for 100mbps and additional pins for the gigabit mode.
--- drivers/pinctrl/sh-pfc/pfc-r8a7740.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
drivers/pinctrl/sh-pfc/pfc-r8a7740.c +31 -0
@@ -2052,6 +2052,29 @@ static const unsigned int mmc0_ctrl_1_mux[] = { MMC1_CMD_PORT104_MARK, MMC1_CLK_PORT103_MARK, }; +static const unsigned int eth_base_pins[] = { +203 ,204 ,205 ,206 ,207 , +183 ,184 , +185 ,186 ,187 ,188 , +171 ,170 ,169 ,168 , +161 ,163 ,164 ,174 , +}; +static const unsigned int eth_base_mux[] = { +ET_TX_ER_MARK ,ET_RX_ER_MARK ,ET_CRS_MARK ,ET_MDC_MARK ,ET_MDIO_MARK , +ET_TX_EN_MARK ,ET_TX_CLK_MARK , +ET_ERXD0_MARK ,ET_ERXD1_MARK ,ET_ERXD2_MARK ,ET_ERXD3_MARK , +ET_ETXD0_MARK ,ET_ETXD1_MARK ,ET_ETXD2_MARK ,ET_ETXD3_MARK , +ET_RX_DV_MARK ,ET_COL_MARK ,ET_PHY_INT_MARK ,ET_RX_CLK_MARK , +}; +static const unsigned int eth_gbit_pins[] = { +189 ,190 ,191 ,192 , +167 ,166 ,173 ,172 , +}; +static const unsigned int eth_gbit_mux[] = { +ET_ERXD4_MARK ,ET_ERXD5_MARK ,ET_ERXD6_MARK ,ET_ERXD7_MARK , +ET_ETXD4_MARK ,ET_ETXD5_MARK ,ET_ETXD6_MARK ,ET_ETXD7_MARK , +}; +static const struct sh_pfc_pin_group pinmux_groups[] = {SH_PFC_PIN_GROUP (lcd0_data8),SH_PFC_PIN_GROUP (lcd0_data9),
@@ -2100,6 +2123,8 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {SH_PFC_PIN_GROUP (mmc0_data4_1),SH_PFC_PIN_GROUP (mmc0_data8_1 ),SH_PFC_PIN_GROUP (mmc0_ctrl_1 ), +SH_PFC_PIN_GROUP (eth_base ), + SH_PFC_PIN_GROUP(eth_gbit), };static const char *const lcd0_groups[] = {
@@ -2167,6 +2192,11 @@ static const char * const mmc0_groups[] = { "mmc0_ctrl_1", }; +static const char *const eth_groups[] = { +"eth_base" , +"eth_gbit" , +}; +static const struct sh_pfc_function pinmux_functions[] = {SH_PFC_FUNCTION (lcd0),SH_PFC_FUNCTION (lcd1),
@@ -2174,6 +2204,7 @@ static const struct sh_pfc_function pinmux_functions[] = {SH_PFC_FUNCTION (sdhi1),SH_PFC_FUNCTION (sdhi2),SH_PFC_FUNCTION (mmc0), + SH_PFC_FUNCTION(eth), };#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)
Signature · 1 line
1.7.2.5
PATCH 1/3 pinctrl: add ethernet pin groups to r8a7740
Hi Guennadi,
Thanks for the patch.
Quoted 52 lines · On Thursday 24 January 2013 17:07:31 Guennadi Liakhovetski wrote:
r8a7740 SoCs have an integrated gigabit ethernet MAC. This patch adds two pin groups: base for 100mbps and additional pins for the gigabit mode.
Signed-off-by Guennadi Liakhovetski <[email protected]>--- drivers/pinctrl/sh-pfc/pfc-r8a7740.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)(quoted diff) +0
-0
b/drivers/pinctrl/sh-pfc/pfc-r8a7740.cindex 4c92af8..d7f69dd 100644drivers/pinctrl/sh-pfc/pfc-r8a7740.c +25
-0@@ -2052,6 +2052,29 @@ static const unsigned int mmc0_ctrl_1_mux[] = { MMC1_CMD_PORT104_MARK, MMC1_CLK_PORT103_MARK, }; +static const unsigned int eth_base_pins[] = { +203 ,204 ,205 ,206 ,207 , +183 ,184 , +185 ,186 ,187 ,188 , +171 ,170 ,169 ,168 , +161 ,163 ,164 ,174 , +}; +static const unsigned int eth_base_mux[] = { +ET_TX_ER_MARK ,ET_RX_ER_MARK ,ET_CRS_MARK ,ET_MDC_MARK ,ET_MDIO_MARK , +ET_TX_EN_MARK ,ET_TX_CLK_MARK , +ET_ERXD0_MARK ,ET_ERXD1_MARK ,ET_ERXD2_MARK ,ET_ERXD3_MARK , +ET_ETXD0_MARK ,ET_ETXD1_MARK ,ET_ETXD2_MARK ,ET_ETXD3_MARK , +ET_RX_DV_MARK ,ET_COL_MARK ,ET_PHY_INT_MARK ,ET_RX_CLK_MARK , +}; +static const unsigned int eth_gbit_pins[] = { +189 ,190 ,191 ,192 , +167 ,166 ,173 ,172 , +}; +static const unsigned int eth_gbit_mux[] = { +ET_ERXD4_MARK ,ET_ERXD5_MARK ,ET_ERXD6_MARK ,ET_ERXD7_MARK , +ET_ETXD4_MARK ,ET_ETXD5_MARK ,ET_ETXD6_MARK ,ET_ETXD7_MARK , +}; +static const struct sh_pfc_pin_group pinmux_groups[] = {SH_PFC_PIN_GROUP (lcd0_data8),SH_PFC_PIN_GROUP (lcd0_data9),@@ -2100,6 +2123,8 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {SH_PFC_PIN_GROUP (mmc0_data4_1),SH_PFC_PIN_GROUP (mmc0_data8_1),SH_PFC_PIN_GROUP (mmc0_ctrl_1), +SH_PFC_PIN_GROUP (eth_base), + SH_PFC_PIN_GROUP(eth_gbit), }; static const char * const lcd0_groups[] = {
drivers/pinctrl/sh-pfc/pfc-r8a7740.c static const char * const mmc0_groups[] = { · line 2199
Quoted 8 lines
drivers/pinctrl/sh-pfc/pfc-r8a7740.c +5
-0@@ -2167,6 +2192,11 @@ static const char * const mmc0_groups[] = { "mmc0_ctrl_1", }; +static const char *const eth_groups[] = { +"eth_base" , +"eth_gbit" , +}; +
What about calling the groups mdio (for management), mii, gmii and rmii ? You can duplicate common pins in mii and gmii.
The WOL, GTK_CLK and LINK pins are missing BTW.
Quoted 11 lines
drivers/pinctrl/sh-pfc/pfc-r8a7740.c +1
-0static const struct sh_pfc_function pinmux_functions[] = {SH_PFC_FUNCTION (lcd0),SH_PFC_FUNCTION (lcd1),@@ -2174,6 +2204,7 @@ static const struct sh_pfc_function pinmux_functions[] = {SH_PFC_FUNCTION (sdhi1),SH_PFC_FUNCTION (sdhi2),SH_PFC_FUNCTION (mmc0), +SH_PFC_FUNCTION (eth), };#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)
Signature · 3 lines
Regards, Laurent Pinchart
PATCH 2/3 ethernet: add a PHY reset GPIO DT binding to sh_eth
In reply to Guennadi LiakhovetskiIf an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add a binding and code to parse it, request the GPIO and take the PHY out of reset.
--- Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++ drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletions(-)
Documentation/devicetree/bindings/net/sh_ether.txt +2 -0
@@ -12,6 +12,7 @@ Required properties: - interrupts: Interrupt mapping for the sh_eth interrupt sources (vector id). - phy-mode: String, operation mode of the PHY interface. +- phy-reset-gpios: PHY reset GPIO tuple - sh-eth,edmac-endian: String, endian of sh_eth dmac. - sh-eth,register-type: String, register type of sh_eth. Please select "gigabit", "fast-sh4" or
@@ -37,6 +38,7 @@ Example (armadillo800eva): reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>; interrupts = <0x500>; phy-mode = "mii"; + phy-reset-gpios = <&gpio 18 0>; sh-eth,edmac-endian = "little"; sh-eth,register-type = "gigabit"; sh-eth,phy-id = <0>;
drivers/net/ethernet/renesas/sh_eth.c +8 -1
@@ -20,6 +20,7 @@* the file called "COPYING". */ +#include <linux/gpio.h> #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h>
@@ -33,6 +34,7 @@#include <linux/netdevice.h> #include <linux/of.h> #include <linux/of_device.h> +#include <linux/of_gpio.h> #include <linux/of_platform.h> #include <linux/of_address.h> #include <linux/of_irq.h>
@@ -2376,10 +2378,11 @@ sh_eth_of_get_register_type(struct device_node *np)static struct sh_eth_plat_data *sh_eth_parse_dt (struct device *dev,struct net_device *ndev) { -int ret; +int ret, gpio;const char *of_str;struct device_node *np = dev->of_node;struct sh_eth_plat_data *pdata; +enum of_gpio_flags flags; pdata =devm_kzalloc (dev,sizeof (struct sh_eth_plat_data ),GFP_KERNEL );
@@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct net_device *ndev)else pdata->needs_init =0 ; + gpio =of_get_named_gpio_flags (np,"phy-reset-gpios" ,0 , &flags); +if (gpio_is_valid (gpio) && !devm_gpio_request (dev, gpio,NULL )) +gpio_direction_output (gpio, !!(flags &OF_GPIO_ACTIVE_LOW )); +#ifdef CONFIG_OF_NET if (!is_valid_ether_addr (ndev->dev_addr)) {const char *macaddr =of_get_mac_address (np);
Signature · 1 line
1.7.2.5
Re: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
Hi Guennadi,
Quoted 18 lines · On Thursday 24 January 2013 17:07:32 Guennadi Liakhovetski wrote:
If an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add a binding and code to parse it, request the GPIO and take the PHY out of reset.
Signed-off-by Guennadi Liakhovetski <[email protected]>Cc devicetree-discuss at lists.ozlabs.orgCc netdev at vger.kernel.org--- Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++ drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletions(-)(quoted diff) +0
-0
b/Documentation/devicetree/bindings/net/sh_ether.txtindex c11e45d..edaf683 100644
Documentation/devicetree/bindings/net/sh_ether.txt Required properties: · line 15
Quoted 4 lines
Documentation/devicetree/bindings/net/sh_ether.txt +1
-0@@ -12,6 +12,7 @@ Required properties: - interrupts: Interrupt mapping for the sh_eth interrupt sources (vector id). - phy-mode: String, operation mode of the PHY interface. +- phy-reset-gpios: PHY reset GPIO tuple
If you can't have more than one GPIO here, what about calling it phy-reset- gpio ?
Quoted 45 lines
Documentation/devicetree/bindings/net/sh_ether.txt +1
-0- sh-eth,edmac-endian: String, endian of sh_eth dmac. - sh-eth,register-type: String, register type of sh_eth. Please select "gigabit", "fast-sh4" or@@ -37,6 +38,7 @@ Example (armadillo800eva): reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>; interrupts = <0x500>; phy-mode = "mii"; + phy-reset-gpios = <&gpio 18 0>; sh-eth,edmac-endian = "little"; sh-eth,register-type = "gigabit"; sh-eth,phy-id = <0>;(quoted diff) +0
-0
b/drivers/net/ethernet/renesas/sh_eth.cindex 1f64848..06035a2 100644drivers/net/ethernet/renesas/sh_eth.c +4
-1@@ -20,6 +20,7 @@* the file called "COPYING". */ +#include <linux/gpio.h> #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> @@ -33,6 +34,7 @@#include <linux/netdevice.h> #include <linux/of.h> #include <linux/of_device.h> +#include <linux/of_gpio.h> #include <linux/of_platform.h> #include <linux/of_address.h> #include <linux/of_irq.h> @@ -2376,10 +2378,11 @@ sh_eth_of_get_register_type(struct device_node *np)static struct sh_eth_plat_data *sh_eth_parse_dt (struct device *dev,struct net_device *ndev) { -int ret; +int ret, gpio;const char *of_str;struct device_node *np = dev->of_node;struct sh_eth_plat_data *pdata; +enum of_gpio_flags flags; pdata =devm_kzalloc (dev,sizeof (struct sh_eth_plat_data ),GFP_KERNEL );
drivers/net/ethernet/renesas/sh_eth.c sh_eth_parse_dt(struct device *dev, struct net_device · line 2428
Quoted 6 lines
drivers/net/ethernet/renesas/sh_eth.c +3
-0@@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct net_device *ndev) else pdata->needs_init =0 ; + gpio =of_get_named_gpio_flags (np,"phy-reset-gpios" ,0 , &flags); +if (gpio_is_valid (gpio) && !devm_gpio_request (dev, gpio,NULL )) +gpio_direction_output (gpio, !!(flags &OF_GPIO_ACTIVE_LOW ));
You could use devm_gpio_request_one() here.
Is there no need to reset the phy at runtime ?
Quoted 4 lines
drivers/net/ethernet/renesas/sh_eth.c +1
-0+#ifdef CONFIG_OF_NET if (!is_valid_ether_addr (ndev->dev_addr)) {const char *macaddr =of_get_mac_address (np);
Signature · 3 lines
Regards, Laurent Pinchart
Re: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
Hi Laurent
Quoted 29 lines · Laurent Pinchart
Hi Guennadi,
Quoted 18 lines · On Thursday 24 January 2013 17:07:32 Guennadi Liakhovetski wrote:
If an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add a binding and code to parse it, request the GPIO and take the PHY out of reset.
Signed-off-by Guennadi Liakhovetski <[email protected]>Cc devicetree-discuss at lists.ozlabs.orgCc netdev at vger.kernel.org--- Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++ drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletions(-)(quoted diff) +0
-0
b/Documentation/devicetree/bindings/net/sh_ether.txtindex c11e45d..edaf683 100644Documentation/devicetree/bindings/net/sh_ether.txt Required properties: · line 15
Quoted 4 lines
Documentation/devicetree/bindings/net/sh_ether.txt +1
-0@@ -12,6 +12,7 @@ Required properties: - interrupts: Interrupt mapping for the sh_eth interrupt sources (vector id). - phy-mode: String, operation mode of the PHY interface. +- phy-reset-gpios: PHY reset GPIO tupleIf you can't have more than one GPIO here, what about calling it phy-reset- gpio ?
Quoted 1 line
From
Documentation/devicetree/bindings/gpio/gpio.txt:
<quote>
GPIO properties should be named "[<name>-]gpios".
</quote>
Quoted 48 lines
Quoted 48 lines
Documentation/devicetree/bindings/net/sh_ether.txt +1
-0- sh-eth,edmac-endian: String, endian of sh_eth dmac. - sh-eth,register-type: String, register type of sh_eth. Please select "gigabit", "fast-sh4" or@@ -37,6 +38,7 @@ Example (armadillo800eva): reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>; interrupts = <0x500>; phy-mode = "mii"; + phy-reset-gpios = <&gpio 18 0>; sh-eth,edmac-endian = "little"; sh-eth,register-type = "gigabit"; sh-eth,phy-id = <0>;(quoted diff) +0
-0
b/drivers/net/ethernet/renesas/sh_eth.cindex 1f64848..06035a2 100644drivers/net/ethernet/renesas/sh_eth.c +4
-1@@ -20,6 +20,7 @@* the file called "COPYING". */ +#include <linux/gpio.h> #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> @@ -33,6 +34,7 @@#include <linux/netdevice.h> #include <linux/of.h> #include <linux/of_device.h> +#include <linux/of_gpio.h> #include <linux/of_platform.h> #include <linux/of_address.h> #include <linux/of_irq.h> @@ -2376,10 +2378,11 @@ sh_eth_of_get_register_type(struct device_node *np)static struct sh_eth_plat_data *sh_eth_parse_dt (struct device *dev,struct net_device *ndev) { -int ret; +int ret, gpio;const char *of_str;struct device_node *np = dev->of_node;struct sh_eth_plat_data *pdata; +enum of_gpio_flags flags; pdata =devm_kzalloc (dev,sizeof (struct sh_eth_plat_data ),GFP_KERNEL );@@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct net_device *ndev) else pdata->needs_init =0 ;
Quoted 5 lines
drivers/net/ethernet/renesas/sh_eth.c sh_eth_parse_dt(struct device *dev, struct net_device *ndev) · line 2428
Quoted 3 lines
drivers/net/ethernet/renesas/sh_eth.c +3
-0+ gpio =of_get_named_gpio_flags (np,"phy-reset-gpios" ,0 , &flags); +if (gpio_is_valid (gpio) && !devm_gpio_request (dev, gpio,NULL )) +gpio_direction_output (gpio, !!(flags &OF_GPIO_ACTIVE_LOW ));You could use
devm_gpio_request_one()here.
Yes, but then the flag would look uglier, something like
devm_gpio_request_one(dev, gpio, flags &
OF_GPIO_ACTIVE_LOW ? GPIOF_OUT_INIT_HIGH :
GPIOF_OUT_INIT_LOW);
Does it really look like an improvement? :)
Quoted 1 line
Is there no need to reset the phy at runtime ?
No idea, I'm not developing the driver, I'm just porting one specific feature from one API to another with no functional changes (apart from postponing setting the GPIO).
Thanks
Guennadi
Quoted 9 lines
Quoted 4 lines
drivers/net/ethernet/renesas/sh_eth.c +1
-0+#ifdef CONFIG_OF_NET if (!is_valid_ether_addr (ndev->dev_addr)) {const char *macaddr =of_get_mac_address (np);Signature · 3 lines
Regards, Laurent Pinchart
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
Re: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
Quoted 5 lines · Guennadi Liakhovetski
Quoted 1 line
Is there no need to reset the phy at runtime ?
No idea, I'm not developing the driver, I'm just porting one specific feature from one API to another with no functional changes (apart from postponing setting the GPIO).
Generally Linux relies on resetting the phy via the inband MDIO method, which is what Linux does. It is pretty much never required to reset via the hard pin - but you do need to generate a robust reset edge on the reset pin once after power up.
Jason
A message that is not in the archive (sent off-list or not yet received): 20130125182137.GB7393-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org
Re: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
Hi Jason
Sorry for resuming an old thread, but I'd like to get this solved eventually.
Quoted 4 lines · Jason Gunthorpe
Quoted 2 lines · Guennadi Liakhovetski
Quoted 1 line
Is there no need to reset the phy at runtime ?
Quoted 8 lines
Quoted 3 lines
No idea, I'm not developing the driver, I'm just porting one specific feature from one API to another with no functional changes (apart from postponing setting the GPIO).
Generally Linux relies on resetting the phy via the inband MDIO method, which is what Linux does. It is pretty much never required to reset via the hard pin - but you do need to generate a robust reset edge on the reset pin once after power up.
This all sounds good. So, is there a preferred way to do that? Where in the ethernet framework would you propose to hook up such a reset edge generation?
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
Re: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
In reply to Guennadi LiakhovetskiHi Guennadi,
Quoted 14 lines · On Friday 25 January 2013 11:34:55 Guennadi Liakhovetski wrote:
Quoted 13 lines · Laurent Pinchart
Quoted 12 lines · On Thursday 24 January 2013 17:07:32 Guennadi Liakhovetski wrote:
If an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add a binding and code to parse it, request the GPIO and take the PHY out of reset.
Signed-off-by Guennadi Liakhovetski <[email protected]>Cc devicetree-discuss at lists.ozlabs.orgCc netdev at vger.kernel.org---
Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++ drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletions(-)
[snip]
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
(quoted diff) +0
-0
b/drivers/net/ethernet/renesas/sh_eth.cindex 1f64848..06035a2 100644drivers/net/ethernet/renesas/sh_eth.c +0
-0
[snip]
Quoted 11 lines
Quoted 10 lines
drivers/net/ethernet/renesas/sh_eth.c sh_eth_parse_dt(struct device *dev, struct net_device *ndev) · line 2428
Quoted 8 lines
drivers/net/ethernet/renesas/sh_eth.c +0
-0@@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct
net_device*ndev) elsedrivers/net/ethernet/renesas/sh_eth.c +3
-0pdata->needs_init =0 ; + gpio =of_get_named_gpio_flags (np,"phy-reset-gpios" ,0 , &flags); +if (gpio_is_valid (gpio) && !devm_gpio_request (dev, gpio,NULL )) +gpio_direction_output (gpio, !!(flags &OF_GPIO_ACTIVE_LOW ));You could use
devm_gpio_request_one()here.
Quoted 7 lines
Yes, but then the flag would look uglier, something like
devm_gpio_request_one(dev, gpio, flags &
OF_GPIO_ACTIVE_LOW?GPIOF_OUT_INIT_HIGH:
GPIOF_OUT_INIT_LOW);Does it really look like an improvement? :)
It's one less function call, so to me it does :-) Feel free to ignore that though.
Signature · 3 lines
Regards, Laurent Pinchart
PATCH 3/3 ARM: shmobile: move pin configuration on armadillo800eva-reference to DT
In reply to Guennadi LiakhovetskiUse pinctrl and sh-eth DT bindings to configure sh-eth MAC pins on armadillo800eva in reference implementation.
--- .../boot/dts/r8a7740-armadillo800eva-reference.dts | 7 +++++ .../board-armadillo800eva-reference.c | 24 -------------------- 2 files changed, 7 insertions(+), 24 deletions(-)
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts +7 -0
@@ -26,9 +26,12 @@ reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>; interrupts = <0x500>; phy-mode = "mii"; + phy-reset-gpios = <&gpio 18 1>; sh-eth,edmac-endian = "little"; sh-eth,register-type = "gigabit"; sh-eth,phy-id = <0>; + pinctrl-names = "default"; + pinctrl-0 = <ð_pins>; }; reg_3p3v: regulator at 0 {
@@ -137,4 +140,8 @@ renesas,pins = "mmc0_data8_1", "mmc0_ctrl_1"; renesas,function = "mmc0"; }; + eth_pins: pfc_eth_pins { + renesas,pins = "eth_base"; + renesas,function = "eth"; + }; };
arch/arm/mach-shmobile/board-armadillo800eva-reference.c +0 -24
@@ -152,30 +152,6 @@ static void __init eva_init(void)gpio_request (GPIO_FN_SCIFA1_RXD ,NULL );gpio_request (GPIO_FN_SCIFA1_TXD ,NULL ); -/* GETHER */ -gpio_request (GPIO_FN_ET_CRS ,NULL ); -gpio_request (GPIO_FN_ET_MDC ,NULL ); -gpio_request (GPIO_FN_ET_MDIO ,NULL ); -gpio_request (GPIO_FN_ET_TX_ER ,NULL ); -gpio_request (GPIO_FN_ET_RX_ER ,NULL ); -gpio_request (GPIO_FN_ET_ERXD0 ,NULL ); -gpio_request (GPIO_FN_ET_ERXD1 ,NULL ); -gpio_request (GPIO_FN_ET_ERXD2 ,NULL ); -gpio_request (GPIO_FN_ET_ERXD3 ,NULL ); -gpio_request (GPIO_FN_ET_TX_CLK ,NULL ); -gpio_request (GPIO_FN_ET_TX_EN ,NULL ); -gpio_request (GPIO_FN_ET_ETXD0 ,NULL ); -gpio_request (GPIO_FN_ET_ETXD1 ,NULL ); -gpio_request (GPIO_FN_ET_ETXD2 ,NULL ); -gpio_request (GPIO_FN_ET_ETXD3 ,NULL ); -gpio_request (GPIO_FN_ET_PHY_INT ,NULL ); -gpio_request (GPIO_FN_ET_COL ,NULL ); -gpio_request (GPIO_FN_ET_RX_DV ,NULL ); -gpio_request (GPIO_FN_ET_RX_CLK ,NULL ); - -gpio_request (GPIO_PORT18 ,NULL );/* PHY_RST */ -gpio_direction_output (GPIO_PORT18 ,1 ); -#ifdef CONFIG_CACHE_L2X0 /* Early BRESP enable, Shared attribute override enable, 32K*8way */ l2x0_init (IOMEM (0xf0002000 ),0x40440000 ,0x82000fff );
Signature · 1 line
1.7.2.5
cover ARM: shmobile: sh-eth pins in DT for armadillo800eva
In reply to Guennadi LiakhovetskiQuoted 2 lines · Guennadi Liakhovetski
This patch series gets rid of gpio_request()-style ethernet pin configuration on armadillo800eva in reference implementation.
Hi Guennadi,
these changes seem to be reasonable to me.
Are there any dependencies for the sh_eth patch?
I assume this will be handled by David Miller through the net-next tree. Are there any dependencies? The last time I checked the DT bindings for sh_eth had not been merged.
For the remaining two patches, which I assume will go through my renesas tree:
* Are there any dependencies that aren't satisfied by the of-intc branch?
* Could you get some Acks. At least from Laurent?
Quoted 23 lines
Guennadi Liakhovetski (3):
pinctrl: add ethernet pin groups to r8a7740
ethernet: add a PHY reset GPIO DT binding tosh_eth
ARM: shmobile: move pin configuration on armadillo800eva-reference to
DTDocumentation/devicetree/bindings/net/sh_ether.txt | 2 + .../boot/dts/r8a7740-armadillo800eva-reference.dts | 7 ++++ .../board-armadillo800eva-reference.c | 24 --------------- drivers/net/ethernet/renesas/sh_eth.c | 9 +++++- drivers/pinctrl/sh-pfc/pfc-r8a7740.c | 31 ++++++++++++++++++++ 5 files changed, 48 insertions(+), 25 deletions(-)Signature · 8 lines
1.7.2.5 Thanks Guennadi --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/
cover ARM: shmobile: sh-eth pins in DT for armadillo800eva
Hi Simon
Quoted 4 lines · Simon Horman
Quoted 2 lines · Guennadi Liakhovetski
This patch series gets rid of gpio_request()-style ethernet pin configuration on armadillo800eva in reference implementation.
Quoted 8 lines
Hi Guennadi,
these changes seem to be reasonable to me.
Are there any dependencies for the
sh_ethpatch?
I assume this will be handled by David Miller through the net-next tree. Are there any dependencies? The last time I checked the DT bindings forsh_ethhad not been merged.
Obviously, it can only be applied, if the Documentation/devicetree/bindings/net/sh_ether.txt file and the sh_eth_parse_dt() function exist. Also, if there are no objections against the new phy-reset-gpios DT property. Otherwise there are no dependencies - as long as the phy-reset-gpios property isn't found in DT, the patch doesn't affect the driver.
Quoted 3 lines
For the remaining two patches, which I assume will go through my renesas tree:
* Are there any dependencies that aren't satisfied by the of-intc branch?
AFAICS, that your branch doesn't contain Laurent's pinctrl patches, which are needed for patch 1 to apply and for patch 3 to make sense. My earlier MMC DT / pinctrl patches aren't required for these patches to function, but these patches won't apply cleanly without them, since they touch the same code fragments. So, it would be easier to merge them in the order of submission.
Quoted 1 line
* Could you get some Acks. At least from Laurent?
Sure, let's give reviewers some more time :)
Thanks
Guennadi
Quoted 16 lines
Quoted 16 lines
Guennadi Liakhovetski (3):
pinctrl: add ethernet pin groups to r8a7740
ethernet: add a PHY reset GPIO DT binding tosh_eth
ARM: shmobile: move pin configuration on armadillo800eva-reference to
DTDocumentation/devicetree/bindings/net/sh_ether.txt | 2 + .../boot/dts/r8a7740-armadillo800eva-reference.dts | 7 ++++ .../board-armadillo800eva-reference.c | 24 --------------- drivers/net/ethernet/renesas/sh_eth.c | 9 +++++- drivers/pinctrl/sh-pfc/pfc-r8a7740.c | 31 ++++++++++++++++++++ 5 files changed, 48 insertions(+), 25 deletions(-)Signature · 1 line
1.7.2.5
Quoted 8 lines
Quoted 7 lines
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
cover ARM: shmobile: sh-eth pins in DT for armadillo800eva
Quoted 17 lines · Guennadi Liakhovetski
Hi Simon
Quoted 4 lines · Simon Horman
Quoted 2 lines · Guennadi Liakhovetski
This patch series gets rid of gpio_request()-style ethernet pin configuration on armadillo800eva in reference implementation.
Quoted 8 lines
Hi Guennadi,
these changes seem to be reasonable to me.
Are there any dependencies for the
sh_ethpatch?
I assume this will be handled by David Miller through the net-next tree. Are there any dependencies? The last time I checked the DT bindings forsh_ethhad not been merged.
Quoted 6 lines
Obviously, it can only be applied, if the
Documentation/devicetree/bindings/net/sh_ether.txtfile and thesh_eth_parse_dt()function exist. Also, if there are no objections against the new phy-reset-gpios DT property. Otherwise there are no dependencies - as long as the phy-reset-gpios property isn't found in DT, the patch doesn't affect the driver.
Thanks, I'm slightly concerned that the other patch(es) relating to Documentation/devicetree/bindings/net/sh_ether.txt have gone missing in action.
Do you have an interest in chasing them down or would you like me to?
Quoted 11 lines
Quoted 3 lines
For the remaining two patches, which I assume will go through my renesas tree:
* Are there any dependencies that aren't satisfied by the of-intc branch?AFAICS, that your branch doesn't contain Laurent's pinctrl patches, which are needed for patch 1 to apply and for patch 3 to make sense. My earlier MMC DT / pinctrl patches aren't required for these patches to function, but these patches won't apply cleanly without them, since they touch the same code fragments. So, it would be easier to merge them in the order of submission.
Quoted 3 lines
Quoted 1 line
* Could you get some Acks. At least from Laurent?
Sure, let's give reviewers some more time :)
Indeed.
Laurent, if there are patches ready for me to take into the renesas tree please let me know. I'm reluctant to add any more pinmux changes for 3.9. But if a topic branch would help let me know.
cover ARM: shmobile: sh-eth pins in DT for armadillo800eva
Hi Simon,
Quoted 42 lines · On Friday 25 January 2013 18:05:44 Simon Horman wrote:
Quoted 14 lines · Guennadi Liakhovetski
Quoted 4 lines · Simon Horman
Quoted 2 lines · Guennadi Liakhovetski
This patch series gets rid of gpio_request()-style ethernet pin configuration on armadillo800eva in reference implementation.
Quoted 8 lines
Hi Guennadi,
these changes seem to be reasonable to me.
Are there any dependencies for the
sh_ethpatch?
I assume this will be handled by David Miller through the net-next tree. Are there any dependencies? The last time I checked the DT bindings forsh_ethhad not been merged.Quoted 6 lines
Obviously, it can only be applied, if the
Documentation/devicetree/bindings/net/sh_ether.txtfile and thesh_eth_parse_dt()function exist. Also, if there are no objections against the new phy-reset-gpios DT property. Otherwise there are no dependencies - as long as the phy-reset-gpios property isn't found in DT, the patch doesn't affect the driver.Thanks, I'm slightly concerned that the other patch(es) relating to
Documentation/devicetree/bindings/net/sh_ether.txthave gone missing in action.Do you have an interest in chasing them down or would you like me to?
Quoted 14 lines
Quoted 4 lines
For the remaining two patches, which I assume will go through my renesas tree:
* Are there any dependencies that aren't satisfied by the of-intc branch?AFAICS, that your branch doesn't contain Laurent's pinctrl patches, which are needed for patch 1 to apply and for patch 3 to make sense. My earlier MMC DT / pinctrl patches aren't required for these patches to function, but these patches won't apply cleanly without them, since they touch the same code fragments. So, it would be easier to merge them in the order of submission.
Quoted 1 line
* Could you get some Acks. At least from Laurent?
Quoted 7 lines
Quoted 1 line
Sure, let's give reviewers some more time :)
Indeed.
Laurent, if there are patches ready for me to take into the renesas tree please let me know. I'm reluctant to add any more pinmux changes for 3.9. But if a topic branch would help let me know.
I'd like the gpio_request_one() patches to go to v3.9 if possible. The other pinctrl patches will need to wait until v3.10 I'm afraid.
Signature · 3 lines
Regards, Laurent Pinchart
cover ARM: shmobile: sh-eth pins in DT for armadillo800eva
Quoted 47 lines · Laurent Pinchart
Hi Simon,
Quoted 44 lines · On Friday 25 January 2013 18:05:44 Simon Horman wrote:
Quoted 14 lines · Guennadi Liakhovetski
Quoted 4 lines · Simon Horman
Quoted 2 lines · Guennadi Liakhovetski
This patch series gets rid of gpio_request()-style ethernet pin configuration on armadillo800eva in reference implementation.
Quoted 8 lines
Hi Guennadi,
these changes seem to be reasonable to me.
Are there any dependencies for the
sh_ethpatch?
I assume this will be handled by David Miller through the net-next tree. Are there any dependencies? The last time I checked the DT bindings forsh_ethhad not been merged.Quoted 6 lines
Obviously, it can only be applied, if the
Documentation/devicetree/bindings/net/sh_ether.txtfile and thesh_eth_parse_dt()function exist. Also, if there are no objections against the new phy-reset-gpios DT property. Otherwise there are no dependencies - as long as the phy-reset-gpios property isn't found in DT, the patch doesn't affect the driver.Thanks, I'm slightly concerned that the other patch(es) relating to
Documentation/devicetree/bindings/net/sh_ether.txthave gone missing in action.Do you have an interest in chasing them down or would you like me to?
Quoted 15 lines
Quoted 4 lines
For the remaining two patches, which I assume will go through my renesas tree:
* Are there any dependencies that aren't satisfied by the of-intc branch?AFAICS, that your branch doesn't contain Laurent's pinctrl patches, which are needed for patch 1 to apply and for patch 3 to make sense. My earlier MMC DT / pinctrl patches aren't required for these patches to function, but these patches won't apply cleanly without them, since they touch the same code fragments. So, it would be easier to merge them in the order of submission.
Quoted 1 line
* Could you get some Acks. At least from Laurent?
Sure, let's give reviewers some more time :)
Quoted 8 lines
Quoted 5 lines
Indeed.
Laurent, if there are patches ready for me to take into the renesas tree please let me know. I'm reluctant to add any more pinmux changes for 3.9. But if a topic branch would help let me know.
I'd like the
gpio_request_one()patches to go to v3.9 if possible. The other pinctrl patches will need to wait until v3.10 I'm afraid.
Understood. I have now queued the gpio_request_one() patches up for v3.9.