[PATCH] phy: nop-phy: Fix phy reset if no reset-gpio defined

Ensure there is a valid reset-gpio defined before using it.
Fixes: f9852acdce02 ("phy: nop-phy: Fix enabling reset") Cc: Adam Ford aford173@gmail.com Signed-off-by: Tim Harvey tharvey@gateworks.com --- drivers/phy/nop-phy.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/phy/nop-phy.c b/drivers/phy/nop-phy.c index e2ee6e92068e..d0904f4f075b 100644 --- a/drivers/phy/nop-phy.c +++ b/drivers/phy/nop-phy.c @@ -45,11 +45,13 @@ static int nop_phy_init(struct phy *phy)
#if CONFIG_IS_ENABLED(DM_GPIO) /* Take phy out of reset */ - ret = dm_gpio_set_value(&priv->reset_gpio, false); - if (ret) { - if (CONFIG_IS_ENABLED(CLK)) - clk_disable_bulk(&priv->bulk); - return ret; + if (dm_gpio_is_valid(&priv->reset_gpio)) { + ret = dm_gpio_set_value(&priv->reset_gpio, false); + if (ret) { + if (CONFIG_IS_ENABLED(CLK)) + clk_disable_bulk(&priv->bulk); + return ret; + } } #endif return 0;

On Mon, Feb 28, 2022 at 4:53 PM Tim Harvey tharvey@gateworks.com wrote:
Ensure there is a valid reset-gpio defined before using it.
Fixes: f9852acdce02 ("phy: nop-phy: Fix enabling reset") Cc: Adam Ford aford173@gmail.com Signed-off-by: Tim Harvey tharvey@gateworks.com
Reviewed-by: Adam Ford aford173@gmail.com
drivers/phy/nop-phy.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/phy/nop-phy.c b/drivers/phy/nop-phy.c index e2ee6e92068e..d0904f4f075b 100644 --- a/drivers/phy/nop-phy.c +++ b/drivers/phy/nop-phy.c @@ -45,11 +45,13 @@ static int nop_phy_init(struct phy *phy)
#if CONFIG_IS_ENABLED(DM_GPIO) /* Take phy out of reset */
ret = dm_gpio_set_value(&priv->reset_gpio, false);
if (ret) {
if (CONFIG_IS_ENABLED(CLK))
clk_disable_bulk(&priv->bulk);
return ret;
if (dm_gpio_is_valid(&priv->reset_gpio)) {
I didn't realize this was necessary. Sorry if I broke your board. Thanks for fixing it.
adam
ret = dm_gpio_set_value(&priv->reset_gpio, false);
if (ret) {
if (CONFIG_IS_ENABLED(CLK))
clk_disable_bulk(&priv->bulk);
return ret;
} }
#endif return 0; -- 2.17.1

On Tue, Mar 1, 2022 at 2:57 AM Adam Ford aford173@gmail.com wrote:
On Mon, Feb 28, 2022 at 4:53 PM Tim Harvey tharvey@gateworks.com wrote:
Ensure there is a valid reset-gpio defined before using it.
Fixes: f9852acdce02 ("phy: nop-phy: Fix enabling reset") Cc: Adam Ford aford173@gmail.com Signed-off-by: Tim Harvey tharvey@gateworks.com
Reviewed-by: Adam Ford aford173@gmail.com
drivers/phy/nop-phy.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/phy/nop-phy.c b/drivers/phy/nop-phy.c index e2ee6e92068e..d0904f4f075b 100644 --- a/drivers/phy/nop-phy.c +++ b/drivers/phy/nop-phy.c @@ -45,11 +45,13 @@ static int nop_phy_init(struct phy *phy)
#if CONFIG_IS_ENABLED(DM_GPIO) /* Take phy out of reset */
ret = dm_gpio_set_value(&priv->reset_gpio, false);
if (ret) {
if (CONFIG_IS_ENABLED(CLK))
clk_disable_bulk(&priv->bulk);
return ret;
if (dm_gpio_is_valid(&priv->reset_gpio)) {
I didn't realize this was necessary. Sorry if I broke your board. Thanks for fixing it.
No worries... it's not broken yet as I only recently submitted the patch to enable USB for imx8mm/imx8mn venice boards and just yesterday I realized I needed this as well. Maybe this patch will get merged before the imx one but either way USB won't work for venice until they are both merged :)
I think it was the imx8mm-beacon board that you did the nopphy reset-gpios for. On that board you have usbotg1 with a vbus-supply and usbotg2 with a reset-gpios on its phy node - is usbotg2 routed to a hub with HUB_RST as that gpio? I have some boards like that but I've always setup the dt as if the HUB reset was a gpio-controlled voltage regulator. It looks like now with the nopphy having reset control that is a more proper way to describe this in dt.
Best Regards,
Tim
participants (2)
-
Adam Ford
-
Tim Harvey