mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-22 20:58:22 +00:00
phy: Fix generic_setup_phy() return value on power on failure
generic_phy_exit() typically return 0 for a struct phy that has been
initialized with a generic_phy_init() call.
generic_setup_phy() returns the value from a generic_phy_exit() call
when generic_phy_power_on() fails. This hides the failed state of the
power_on ops from the caller of generic_setup_phy().
Fix this by ignoring the return value of the generic_phy_exit() call and
return the value from the generic_phy_power_on() call.
Fixes: 84e561407a
("phy: Add generic_{setup,shutdown}_phy() helpers")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
This commit is contained in:
parent
3b4e6e9462
commit
bd78f2c2c2
2 changed files with 25 additions and 1 deletions
|
@ -526,7 +526,7 @@ int generic_setup_phy(struct udevice *dev, struct phy *phy, int index)
|
||||||
|
|
||||||
ret = generic_phy_power_on(phy);
|
ret = generic_phy_power_on(phy);
|
||||||
if (ret)
|
if (ret)
|
||||||
ret = generic_phy_exit(phy);
|
generic_phy_exit(phy);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -234,3 +234,27 @@ static int dm_test_phy_multi_exit(struct unit_test_state *uts)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
DM_TEST(dm_test_phy_multi_exit, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
DM_TEST(dm_test_phy_multi_exit, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
||||||
|
|
||||||
|
static int dm_test_phy_setup(struct unit_test_state *uts)
|
||||||
|
{
|
||||||
|
struct phy phy;
|
||||||
|
struct udevice *parent;
|
||||||
|
|
||||||
|
ut_assertok(uclass_get_device_by_name(UCLASS_SIMPLE_BUS,
|
||||||
|
"gen_phy_user", &parent));
|
||||||
|
|
||||||
|
/* normal */
|
||||||
|
ut_assertok(generic_setup_phy(parent, &phy, 0));
|
||||||
|
ut_assertok(generic_shutdown_phy(&phy));
|
||||||
|
|
||||||
|
/* power_off fail with -EIO */
|
||||||
|
ut_assertok(generic_setup_phy(parent, &phy, 1));
|
||||||
|
ut_asserteq(-EIO, generic_shutdown_phy(&phy));
|
||||||
|
|
||||||
|
/* power_on fail with -EIO */
|
||||||
|
ut_asserteq(-EIO, generic_setup_phy(parent, &phy, 2));
|
||||||
|
ut_assertok(generic_shutdown_phy(&phy));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
DM_TEST(dm_test_phy_setup, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
|
||||||
|
|
Loading…
Add table
Reference in a new issue