Hi Marek, Thank you for the patch.
On lun., juin 17, 2024 at 19:36, Marek Vasut <marek.vasut+rene...@mailbox.org> wrote: > 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' > > Signed-off-by: Marek Vasut <marek.vasut+rene...@mailbox.org> Reviewed-by: Mattijs Korpershoek <mkorpersh...@baylibre.com> > --- > Cc: Caleb Connolly <caleb.conno...@linaro.org> > Cc: Fabio Estevam <feste...@gmail.com> > Cc: Fabrice Gasnier <fabrice.gasn...@foss.st.com> > Cc: Jonas Karlman <jo...@kwiboo.se> > Cc: Mathieu Othacehe <othac...@gnu.org> > Cc: Mattijs Korpershoek <mkorpersh...@baylibre.com> > Cc: Neil Armstrong <neil.armstr...@linaro.org> > Cc: Nishanth Menon <n...@ti.com> > Cc: Nobuhiro Iwamatsu <iwama...@nigauri.org> > Cc: Sean Anderson <sean...@gmail.com> > Cc: Simon Glass <s...@chromium.org> > Cc: Sumit Garg <sumit.g...@linaro.org> > Cc: Tim Harvey <thar...@gateworks.com> > Cc: Tom Rini <tr...@konsulko.com> > Cc: Xavier Drudis Ferran <xdru...@tinet.cat> > Cc: u-boot-q...@groups.io > Cc: u-boot@lists.denx.de > --- > V2: New patch > --- > drivers/phy/sandbox-phy.c | 13 +++++++++++++ > test/dm/phy.c | 7 +++++++ > 2 files changed, 20 insertions(+) > > diff --git a/drivers/phy/sandbox-phy.c b/drivers/phy/sandbox-phy.c > index b159147a765..e70d20432e0 100644 > --- a/drivers/phy/sandbox-phy.c > +++ b/drivers/phy/sandbox-phy.c > @@ -72,6 +72,18 @@ static int sandbox_phy_exit(struct phy *phy) > 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) > { > 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, > .init = sandbox_phy_init, > .exit = sandbox_phy_exit, > + .set_mode = sandbox_phy_set_mode, > }; > > static const struct udevice_id sandbox_phy_ids[] = { > diff --git a/test/dm/phy.c b/test/dm/phy.c > index a90881b12ab..a93aa83ab10 100644 > --- a/test/dm/phy.c > +++ b/test/dm/phy.c > @@ -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_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 */ > ut_assertok(generic_setup_phy(parent, &phy, 1, PHY_MODE_USB_HOST, 0)); > ut_asserteq(-EIO, generic_shutdown_phy(&phy)); > -- > 2.43.0