* [PATCH] double requested gpio problem @ 2014-09-16 12:15 Silvio Fricke 2014-09-16 12:15 ` [PATCH] gpiolib: gpio_request: correct return code of a already requested gpio Silvio Fricke 0 siblings, 1 reply; 7+ messages in thread From: Silvio Fricke @ 2014-09-16 12:15 UTC (permalink / raw) To: barebox; +Cc: Silvio Fricke Hi, I have seen that our phy_reset pin is not correctly configured because the gpiopin information is requested more than one time. I get this as error message. (My board is the eDM-QMX6 from Data-Modul) gpiolib: _gpio_request: gpio-25 (phy-reset) status -16 Because gpiolib is used so many times, I don't know if this is a correct solution for my problem. Can someone check this patch and give me some comments? Thx, Silvio Silvio Fricke (1): gpiolib: gpio_request: correct return code of a already requested gpio drivers/gpio/gpiolib.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) -- 2.1.0 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] gpiolib: gpio_request: correct return code of a already requested gpio 2014-09-16 12:15 [PATCH] double requested gpio problem Silvio Fricke @ 2014-09-16 12:15 ` Silvio Fricke 2014-09-17 6:32 ` [PATCH] gpio phy-reset problem Silvio Fricke 2014-09-17 6:33 ` [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin Silvio Fricke 0 siblings, 2 replies; 7+ messages in thread From: Silvio Fricke @ 2014-09-16 12:15 UTC (permalink / raw) To: barebox; +Cc: Silvio Fricke Signed-off-by: Silvio Fricke <silvio.fricke@gmail.com> --- drivers/gpio/gpiolib.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 611e41e..3370438 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -55,10 +55,8 @@ int gpio_request(unsigned gpio, const char *label) goto done; } - if (gi->requested) { - ret = -EBUSY; - goto done; - } + if (gi->requested) + return 0; ret = 0; -- 2.1.0 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] gpio phy-reset problem 2014-09-16 12:15 ` [PATCH] gpiolib: gpio_request: correct return code of a already requested gpio Silvio Fricke @ 2014-09-17 6:32 ` Silvio Fricke 2014-09-17 6:33 ` [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin Silvio Fricke 1 sibling, 0 replies; 7+ messages in thread From: Silvio Fricke @ 2014-09-17 6:32 UTC (permalink / raw) To: barebox, Sascha Hauer; +Cc: Silvio Fricke Hi, okay - I have found the problem: Silvio - know YOUR BOARDS code! :-) Sasha: Please ignore the first patch, and add this to your repo. Thx, Silvio Silvio Fricke (1): ARM: i.MX: edmqmx6: free phy-reset gpio pin arch/arm/boards/datamodul-edm-qmx6/board.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -- 2.1.0 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin 2014-09-16 12:15 ` [PATCH] gpiolib: gpio_request: correct return code of a already requested gpio Silvio Fricke 2014-09-17 6:32 ` [PATCH] gpio phy-reset problem Silvio Fricke @ 2014-09-17 6:33 ` Silvio Fricke 2014-09-17 7:11 ` Sascha Hauer 2014-09-22 4:57 ` Sascha Hauer 1 sibling, 2 replies; 7+ messages in thread From: Silvio Fricke @ 2014-09-17 6:33 UTC (permalink / raw) To: barebox, Sascha Hauer; +Cc: Silvio Fricke Since 93a6c6a808("dts: update to v3.17-rc2") we have a correct gpio configuration. This results in a double gpio request what receipted in a error message like this one: gpiolib: _gpio_request: gpio-25 (phy-reset) status -16 Now with this patch the problem is gone. Signed-off-by: Silvio Fricke <silvio.fricke@gmail.com> --- arch/arm/boards/datamodul-edm-qmx6/board.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/arm/boards/datamodul-edm-qmx6/board.c b/arch/arm/boards/datamodul-edm-qmx6/board.c index e388e28..25f45df 100644 --- a/arch/arm/boards/datamodul-edm-qmx6/board.c +++ b/arch/arm/boards/datamodul-edm-qmx6/board.c @@ -49,6 +49,7 @@ #define RQ7_GPIO_ENET_MODE2 IMX_GPIO_NR(6, 28) #define RQ7_GPIO_ENET_MODE3 IMX_GPIO_NR(6, 29) #define RQ7_GPIO_ENET_EN_CLK125 IMX_GPIO_NR(6, 24) +#define RQ7_GPIO_ENET_RESET IMX_GPIO_NR(1, 25) static iomux_v3_cfg_t realq7_pads_gpio[] = { MX6Q_PAD_RGMII_RXC__GPIO_6_30, @@ -57,6 +58,7 @@ static iomux_v3_cfg_t realq7_pads_gpio[] = { MX6Q_PAD_RGMII_RD2__GPIO_6_28, MX6Q_PAD_RGMII_RD3__GPIO_6_29, MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24, + MX6Q_PAD_ENET_CRS_DV__GPIO_1_25, }; static int ksz9031rn_phy_fixup(struct phy_device *dev) @@ -85,12 +87,14 @@ static int realq7_enet_init(void) gpio_direction_output(RQ7_GPIO_ENET_MODE3, 1); gpio_direction_output(RQ7_GPIO_ENET_EN_CLK125, 1); - gpio_direction_output(25, 0); + gpio_direction_output(RQ7_GPIO_ENET_RESET, 0); mdelay(50); - gpio_direction_output(25, 1); + gpio_direction_output(RQ7_GPIO_ENET_RESET, 1); mdelay(50); + gpio_free(RQ7_GPIO_ENET_RESET); + phy_register_fixup_for_uid(PHY_ID_KSZ9031, MICREL_PHY_ID_MASK, ksz9031rn_phy_fixup); -- 2.1.0 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin 2014-09-17 6:33 ` [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin Silvio Fricke @ 2014-09-17 7:11 ` Sascha Hauer 2014-09-17 7:17 ` Alexander Shiyan 2014-09-22 4:57 ` Sascha Hauer 1 sibling, 1 reply; 7+ messages in thread From: Sascha Hauer @ 2014-09-17 7:11 UTC (permalink / raw) To: Silvio Fricke; +Cc: barebox Hi Silvio, On Wed, Sep 17, 2014 at 08:33:00AM +0200, Silvio Fricke wrote: > Since 93a6c6a808("dts: update to v3.17-rc2") we have a correct gpio > configuration. This results in a double gpio request what receipted in a > error message like this one: > > gpiolib: _gpio_request: gpio-25 (phy-reset) status -16 > > Now with this patch the problem is gone. > > Signed-off-by: Silvio Fricke <silvio.fricke@gmail.com> > --- > arch/arm/boards/datamodul-edm-qmx6/board.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/boards/datamodul-edm-qmx6/board.c b/arch/arm/boards/datamodul-edm-qmx6/board.c > index e388e28..25f45df 100644 > --- a/arch/arm/boards/datamodul-edm-qmx6/board.c > +++ b/arch/arm/boards/datamodul-edm-qmx6/board.c > @@ -49,6 +49,7 @@ > #define RQ7_GPIO_ENET_MODE2 IMX_GPIO_NR(6, 28) > #define RQ7_GPIO_ENET_MODE3 IMX_GPIO_NR(6, 29) > #define RQ7_GPIO_ENET_EN_CLK125 IMX_GPIO_NR(6, 24) > +#define RQ7_GPIO_ENET_RESET IMX_GPIO_NR(1, 25) > > static iomux_v3_cfg_t realq7_pads_gpio[] = { > MX6Q_PAD_RGMII_RXC__GPIO_6_30, > @@ -57,6 +58,7 @@ static iomux_v3_cfg_t realq7_pads_gpio[] = { > MX6Q_PAD_RGMII_RD2__GPIO_6_28, > MX6Q_PAD_RGMII_RD3__GPIO_6_29, > MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24, > + MX6Q_PAD_ENET_CRS_DV__GPIO_1_25, > }; > > static int ksz9031rn_phy_fixup(struct phy_device *dev) > @@ -85,12 +87,14 @@ static int realq7_enet_init(void) > gpio_direction_output(RQ7_GPIO_ENET_MODE3, 1); > gpio_direction_output(RQ7_GPIO_ENET_EN_CLK125, 1); > > - gpio_direction_output(25, 0); > + gpio_direction_output(RQ7_GPIO_ENET_RESET, 0); > mdelay(50); > > - gpio_direction_output(25, 1); > + gpio_direction_output(RQ7_GPIO_ENET_RESET, 1); > mdelay(50); > > + gpio_free(RQ7_GPIO_ENET_RESET); > + > phy_register_fixup_for_uid(PHY_ID_KSZ9031, MICREL_PHY_ID_MASK, > ksz9031rn_phy_fixup); I'm not sure this fully works as expected. Here the code configures the ethernet pins as gpios with defined output states and resets the phy afterwards. This makes sure the phy bootstrap pins are configured correctly during phy reset. Now the driver core sets up the ethernet pins to their functional mode and the fec driver resets the phy again with some undefined states. IMO this phy-reset-gpio property really stinks. Not that it's in the wrong place (should be in a phy node, not the ethernet node), it also destroys all careful phy setup done earlier. I don't know a good way out of this situation, but it seems we should create a way to reset the phy either properly or not at all. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin 2014-09-17 7:11 ` Sascha Hauer @ 2014-09-17 7:17 ` Alexander Shiyan 0 siblings, 0 replies; 7+ messages in thread From: Alexander Shiyan @ 2014-09-17 7:17 UTC (permalink / raw) To: Sascha Hauer; +Cc: barebox, Silvio Fricke Wed, 17 Sep 2014 09:11:37 +0200 от Sascha Hauer <s.hauer@pengutronix.de>: > Hi Silvio, > > On Wed, Sep 17, 2014 at 08:33:00AM +0200, Silvio Fricke wrote: > > Since 93a6c6a808("dts: update to v3.17-rc2") we have a correct gpio > > configuration. This results in a double gpio request what receipted in a > > error message like this one: > > > > gpiolib: _gpio_request: gpio-25 (phy-reset) status -16 > > > > Now with this patch the problem is gone. Funny, at this time I trying to resolve a similar problem with the BUSY state for GPIO, but in 3.16 kernel... --- _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin 2014-09-17 6:33 ` [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin Silvio Fricke 2014-09-17 7:11 ` Sascha Hauer @ 2014-09-22 4:57 ` Sascha Hauer 1 sibling, 0 replies; 7+ messages in thread From: Sascha Hauer @ 2014-09-22 4:57 UTC (permalink / raw) To: Silvio Fricke; +Cc: barebox On Wed, Sep 17, 2014 at 08:33:00AM +0200, Silvio Fricke wrote: > Since 93a6c6a808("dts: update to v3.17-rc2") we have a correct gpio > configuration. This results in a double gpio request what receipted in a > error message like this one: > > gpiolib: _gpio_request: gpio-25 (phy-reset) status -16 > > Now with this patch the problem is gone. > > Signed-off-by: Silvio Fricke <silvio.fricke@gmail.com> Applied, thanks Sascha > --- > arch/arm/boards/datamodul-edm-qmx6/board.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/boards/datamodul-edm-qmx6/board.c b/arch/arm/boards/datamodul-edm-qmx6/board.c > index e388e28..25f45df 100644 > --- a/arch/arm/boards/datamodul-edm-qmx6/board.c > +++ b/arch/arm/boards/datamodul-edm-qmx6/board.c > @@ -49,6 +49,7 @@ > #define RQ7_GPIO_ENET_MODE2 IMX_GPIO_NR(6, 28) > #define RQ7_GPIO_ENET_MODE3 IMX_GPIO_NR(6, 29) > #define RQ7_GPIO_ENET_EN_CLK125 IMX_GPIO_NR(6, 24) > +#define RQ7_GPIO_ENET_RESET IMX_GPIO_NR(1, 25) > > static iomux_v3_cfg_t realq7_pads_gpio[] = { > MX6Q_PAD_RGMII_RXC__GPIO_6_30, > @@ -57,6 +58,7 @@ static iomux_v3_cfg_t realq7_pads_gpio[] = { > MX6Q_PAD_RGMII_RD2__GPIO_6_28, > MX6Q_PAD_RGMII_RD3__GPIO_6_29, > MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24, > + MX6Q_PAD_ENET_CRS_DV__GPIO_1_25, > }; > > static int ksz9031rn_phy_fixup(struct phy_device *dev) > @@ -85,12 +87,14 @@ static int realq7_enet_init(void) > gpio_direction_output(RQ7_GPIO_ENET_MODE3, 1); > gpio_direction_output(RQ7_GPIO_ENET_EN_CLK125, 1); > > - gpio_direction_output(25, 0); > + gpio_direction_output(RQ7_GPIO_ENET_RESET, 0); > mdelay(50); > > - gpio_direction_output(25, 1); > + gpio_direction_output(RQ7_GPIO_ENET_RESET, 1); > mdelay(50); > > + gpio_free(RQ7_GPIO_ENET_RESET); > + > phy_register_fixup_for_uid(PHY_ID_KSZ9031, MICREL_PHY_ID_MASK, > ksz9031rn_phy_fixup); > > -- > 2.1.0 > > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-09-22 4:57 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-09-16 12:15 [PATCH] double requested gpio problem Silvio Fricke 2014-09-16 12:15 ` [PATCH] gpiolib: gpio_request: correct return code of a already requested gpio Silvio Fricke 2014-09-17 6:32 ` [PATCH] gpio phy-reset problem Silvio Fricke 2014-09-17 6:33 ` [PATCH] ARM: i.MX: edmqmx6: free phy-reset gpio pin Silvio Fricke 2014-09-17 7:11 ` Sascha Hauer 2014-09-17 7:17 ` Alexander Shiyan 2014-09-22 4:57 ` Sascha Hauer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox