
Hi Marek,
Thank you for the patch.
On lun., juin 17, 2024 at 19:36, Marek Vasut marek.vasut+renesas@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+renesas@mailbox.org
Reviewed-by: Mattijs Korpershoek mkorpershoek@baylibre.com
Cc: Caleb Connolly caleb.connolly@linaro.org Cc: Fabio Estevam festevam@gmail.com Cc: Fabrice Gasnier fabrice.gasnier@foss.st.com Cc: Jonas Karlman jonas@kwiboo.se Cc: Mathieu Othacehe othacehe@gnu.org Cc: Mattijs Korpershoek mkorpershoek@baylibre.com Cc: Neil Armstrong neil.armstrong@linaro.org Cc: Nishanth Menon nm@ti.com Cc: Nobuhiro Iwamatsu iwamatsu@nigauri.org Cc: Sean Anderson seanga2@gmail.com Cc: Simon Glass sjg@chromium.org Cc: Sumit Garg sumit.garg@linaro.org Cc: Tim Harvey tharvey@gateworks.com Cc: Tom Rini trini@konsulko.com Cc: Xavier Drudis Ferran xdrudis@tinet.cat Cc: u-boot-qcom@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