mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 22:14:54 +00:00
phy: test: Implement sandbox PHY .set_mode and DM test
Implement trivial extension to the sandbox PHY, which makes it pretend to support selecting USB Host mode and nothing else. Any other mode is rejected with -EINVAL. Any submode except for default submode 0 is rejected with -EOPNOTSUPP . The implementation behaves in this trivial way to permit easy unit testing using test which is also added in this commit. To run the test, use e.g. sandbox64_defconfig and run U-Boot as follows: $ ./u-boot -Tc 'ut dm phy_setup' Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
This commit is contained in:
parent
a1f841a33c
commit
e72e683e36
2 changed files with 20 additions and 0 deletions
|
@ -72,6 +72,18 @@ static int sandbox_phy_exit(struct phy *phy)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
sandbox_phy_set_mode(struct phy *phy, enum phy_mode mode, int submode)
|
||||||
|
{
|
||||||
|
if (submode)
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
|
if (mode != PHY_MODE_USB_HOST)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int sandbox_phy_bind(struct udevice *dev)
|
static int sandbox_phy_bind(struct udevice *dev)
|
||||||
{
|
{
|
||||||
if (dev_get_driver_data(dev) != DRIVER_DATA)
|
if (dev_get_driver_data(dev) != DRIVER_DATA)
|
||||||
|
@ -96,6 +108,7 @@ static struct phy_ops sandbox_phy_ops = {
|
||||||
.power_off = sandbox_phy_power_off,
|
.power_off = sandbox_phy_power_off,
|
||||||
.init = sandbox_phy_init,
|
.init = sandbox_phy_init,
|
||||||
.exit = sandbox_phy_exit,
|
.exit = sandbox_phy_exit,
|
||||||
|
.set_mode = sandbox_phy_set_mode,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct udevice_id sandbox_phy_ids[] = {
|
static const struct udevice_id sandbox_phy_ids[] = {
|
||||||
|
|
|
@ -246,6 +246,13 @@ static int dm_test_phy_setup(struct unit_test_state *uts)
|
||||||
ut_assertok(generic_setup_phy(parent, &phy, 0, PHY_MODE_USB_HOST, 0));
|
ut_assertok(generic_setup_phy(parent, &phy, 0, PHY_MODE_USB_HOST, 0));
|
||||||
ut_assertok(generic_shutdown_phy(&phy));
|
ut_assertok(generic_shutdown_phy(&phy));
|
||||||
|
|
||||||
|
/* set_mode as USB Host passes, anything else is not supported */
|
||||||
|
ut_assertok(generic_setup_phy(parent, &phy, 0, PHY_MODE_USB_HOST, 0));
|
||||||
|
ut_assertok(generic_phy_set_mode(&phy, PHY_MODE_USB_HOST, 0));
|
||||||
|
ut_asserteq(-EOPNOTSUPP, generic_phy_set_mode(&phy, PHY_MODE_USB_HOST, 1));
|
||||||
|
ut_asserteq(-EINVAL, generic_phy_set_mode(&phy, PHY_MODE_USB_DEVICE, 0));
|
||||||
|
ut_assertok(generic_shutdown_phy(&phy));
|
||||||
|
|
||||||
/* power_off fail with -EIO */
|
/* power_off fail with -EIO */
|
||||||
ut_assertok(generic_setup_phy(parent, &phy, 1, PHY_MODE_USB_HOST, 0));
|
ut_assertok(generic_setup_phy(parent, &phy, 1, PHY_MODE_USB_HOST, 0));
|
||||||
ut_asserteq(-EIO, generic_shutdown_phy(&phy));
|
ut_asserteq(-EIO, generic_shutdown_phy(&phy));
|
||||||
|
|
Loading…
Add table
Reference in a new issue