From: Mattijs Korpershoek <mkorpershoek@baylibre.com>
To: Marek Vasut <marek.vasut+renesas@mailbox.org>, u-boot@lists.denx.de
Cc: Marek Vasut <marek.vasut+renesas@mailbox.org>,
Caleb Connolly <caleb.connolly@linaro.org>,
Fabio Estevam <festevam@gmail.com>,
Fabrice Gasnier <fabrice.gasnier@foss.st.com>,
Jonas Karlman <jonas@kwiboo.se>,
Mathieu Othacehe <othacehe@gnu.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Nishanth Menon <nm@ti.com>,
Nobuhiro Iwamatsu <iwamatsu@nigauri.org>,
Sean Anderson <seanga2@gmail.com>, Simon Glass <sjg@chromium.org>,
Sumit Garg <sumit.garg@linaro.org>,
Tim Harvey <tharvey@gateworks.com>, Tom Rini <trini@konsulko.com>,
Xavier Drudis Ferran <xdrudis@tinet.cat>,
u-boot-qcom@groups.io
Subject: Re: [PATCH v2 1/3] phy: Extend generic_setup_phy() with PHY mode and submode
Date: Tue, 09 Jul 2024 11:20:18 +0200 [thread overview]
Message-ID: <87sewij50t.fsf@baylibre.com> (raw)
In-Reply-To: <20240617173740.80822-1-marek.vasut+renesas@mailbox.org>
Hi Marek,
Thank you for the patch.
On lun., juin 17, 2024 at 19:36, Marek Vasut <marek.vasut+renesas@mailbox.org> wrote:
> Extend generic_setup_phy() parameter list with PHY mode and submode and
> call generic_phy_set_mode() in generic_setup_phy(), so the generic PHY
> setup function can configure the PHY into correct mode before powering
> the PHY up.
>
> Update all call sites of generic_setup_phy() as well, all of which are
> USB host related, except for DM test which now behaves as a USB host
> test.
>
> Note that if the PHY driver does not implement the .set_mode callback,
> generic_phy_set_mode() call returns 0 and does not error out, so this
> should not break any existing systems.
>
> 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: Add failpath to return errno from generic_phy_set_mode()
> ---
> drivers/phy/phy-uclass.c | 13 +++++++++++--
> drivers/usb/host/ehci-generic.c | 2 +-
> drivers/usb/host/ehci-msm.c | 2 +-
> drivers/usb/host/ehci-mx6.c | 2 +-
> drivers/usb/host/ehci-pci.c | 2 +-
> drivers/usb/host/ohci-generic.c | 2 +-
> include/generic-phy.h | 5 ++++-
> test/dm/phy.c | 8 ++++----
> 8 files changed, 24 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
> index acdcda15b5b..777d952b041 100644
> --- a/drivers/phy/phy-uclass.c
> +++ b/drivers/phy/phy-uclass.c
> @@ -508,7 +508,8 @@ int generic_phy_power_off_bulk(struct phy_bulk *bulk)
> return ret;
> }
>
> -int generic_setup_phy(struct udevice *dev, struct phy *phy, int index)
> +int generic_setup_phy(struct udevice *dev, struct phy *phy, int index,
> + enum phy_mode mode, int submode)
> {
> int ret;
>
> @@ -520,10 +521,18 @@ int generic_setup_phy(struct udevice *dev, struct phy *phy, int index)
> if (ret)
> return ret;
>
> + ret = generic_phy_set_mode(phy, mode, submode);
> + if (ret)
> + goto phys_mode_err;
> +
> ret = generic_phy_power_on(phy);
> if (ret)
> - generic_phy_exit(phy);
> + goto phys_mode_err;
> +
> + return 0;
>
> +phys_mode_err:
> + generic_phy_exit(phy);
> return ret;
> }
>
> diff --git a/drivers/usb/host/ehci-generic.c b/drivers/usb/host/ehci-generic.c
> index 23c3ed25554..1ae3619ce25 100644
> --- a/drivers/usb/host/ehci-generic.c
> +++ b/drivers/usb/host/ehci-generic.c
> @@ -94,7 +94,7 @@ static int ehci_usb_probe(struct udevice *dev)
> if (err)
> goto reset_err;
>
> - err = generic_setup_phy(dev, &priv->phy, 0);
> + err = generic_setup_phy(dev, &priv->phy, 0, PHY_MODE_USB_HOST, 0);
> if (err)
> goto regulator_err;
>
> diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c
> index a081f71b187..b0c060b8173 100644
> --- a/drivers/usb/host/ehci-msm.c
> +++ b/drivers/usb/host/ehci-msm.c
> @@ -56,7 +56,7 @@ static int ehci_usb_probe(struct udevice *dev)
> hcor = (struct ehci_hcor *)((phys_addr_t)hccr +
> HC_LENGTH(ehci_readl(&(hccr)->cr_capbase)));
>
> - ret = generic_setup_phy(dev, &p->phy, 0);
> + ret = generic_setup_phy(dev, &p->phy, 0, PHY_MODE_USB_HOST, 0);
> if (ret)
> return ret;
>
> diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
> index 31cd8a50f4a..a93fa5d5455 100644
> --- a/drivers/usb/host/ehci-mx6.c
> +++ b/drivers/usb/host/ehci-mx6.c
> @@ -703,7 +703,7 @@ static int ehci_usb_probe(struct udevice *dev)
> usb_phy_enable(ehci, priv->phy_addr);
> #endif
> #else
> - ret = generic_setup_phy(dev, &priv->phy, 0);
> + ret = generic_setup_phy(dev, &priv->phy, 0, PHY_MODE_USB_HOST, 0);
> if (ret)
> goto err_regulator;
> #endif
> diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
> index 572686580cd..8d05b14e898 100644
> --- a/drivers/usb/host/ehci-pci.c
> +++ b/drivers/usb/host/ehci-pci.c
> @@ -30,7 +30,7 @@ static int ehci_pci_init(struct udevice *dev, struct ehci_hccr **ret_hccr,
> int ret;
> u32 cmd;
>
> - ret = generic_setup_phy(dev, &priv->phy, 0);
> + ret = generic_setup_phy(dev, &priv->phy, 0, PHY_MODE_USB_HOST, 0);
> if (ret)
> return ret;
>
> diff --git a/drivers/usb/host/ohci-generic.c b/drivers/usb/host/ohci-generic.c
> index f1325cd4953..cc44226f5e0 100644
> --- a/drivers/usb/host/ohci-generic.c
> +++ b/drivers/usb/host/ohci-generic.c
> @@ -50,7 +50,7 @@ static int ohci_usb_probe(struct udevice *dev)
> goto reset_err;
> }
>
> - err = generic_setup_phy(dev, &priv->phy, 0);
> + err = generic_setup_phy(dev, &priv->phy, 0, PHY_MODE_USB_HOST, 0);
> if (err)
> goto reset_err;
>
> diff --git a/include/generic-phy.h b/include/generic-phy.h
> index eaab7491660..47962023236 100644
> --- a/include/generic-phy.h
> +++ b/include/generic-phy.h
> @@ -415,10 +415,13 @@ int generic_phy_power_off_bulk(struct phy_bulk *bulk);
> * @dev: The consumer device.
> * @phy: A pointer to the PHY port
> * @index: The index in the list of available PHYs
> + * @mode: PHY mode
> + * @submode: PHY submode
> *
> * Return: 0 if OK, or negative error code.
> */
> -int generic_setup_phy(struct udevice *dev, struct phy *phy, int index);
> +int generic_setup_phy(struct udevice *dev, struct phy *phy, int index,
> + enum phy_mode mode, int submode);
>
> /**
> * generic_shutdown_phy() - Power off and de-initialize phy.
> diff --git a/test/dm/phy.c b/test/dm/phy.c
> index d14117f6f7a..a90881b12ab 100644
> --- a/test/dm/phy.c
> +++ b/test/dm/phy.c
> @@ -243,20 +243,20 @@ static int dm_test_phy_setup(struct unit_test_state *uts)
> "gen_phy_user", &parent));
>
> /* normal */
> - ut_assertok(generic_setup_phy(parent, &phy, 0));
> + ut_assertok(generic_setup_phy(parent, &phy, 0, PHY_MODE_USB_HOST, 0));
> ut_assertok(generic_shutdown_phy(&phy));
>
> /* power_off fail with -EIO */
> - ut_assertok(generic_setup_phy(parent, &phy, 1));
> + ut_assertok(generic_setup_phy(parent, &phy, 1, PHY_MODE_USB_HOST, 0));
> ut_asserteq(-EIO, generic_shutdown_phy(&phy));
>
> /* power_on fail with -EIO */
> - ut_asserteq(-EIO, generic_setup_phy(parent, &phy, 2));
> + ut_asserteq(-EIO, generic_setup_phy(parent, &phy, 2, PHY_MODE_USB_HOST, 0));
> ut_assertok(generic_shutdown_phy(&phy));
>
> /* generic_phy_get_by_index fail with -ENOENT */
> ut_asserteq(-ENOENT, generic_phy_get_by_index(parent, 3, &phy));
> - ut_assertok(generic_setup_phy(parent, &phy, 3));
> + ut_assertok(generic_setup_phy(parent, &phy, 3, PHY_MODE_USB_HOST, 0));
> ut_assertok(generic_shutdown_phy(&phy));
>
> return 0;
> --
> 2.43.0
next prev parent reply other threads:[~2024-07-09 9:20 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-17 17:36 [PATCH v2 1/3] phy: Extend generic_setup_phy() with PHY mode and submode Marek Vasut
2024-06-17 17:36 ` [PATCH v2 2/3] phy: rcar: Split init and set_mode operations Marek Vasut
2024-07-09 9:24 ` Mattijs Korpershoek
2024-06-17 17:36 ` [PATCH v2 3/3] phy: test: Implement sandbox PHY .set_mode and DM test Marek Vasut
2024-07-09 9:33 ` Mattijs Korpershoek
2024-07-09 9:20 ` Mattijs Korpershoek [this message]
2024-09-08 18:11 ` [PATCH v2 1/3] phy: Extend generic_setup_phy() with PHY mode and submode Marek Vasut
2024-09-09 7:16 ` Mattijs Korpershoek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87sewij50t.fsf@baylibre.com \
--to=mkorpershoek@baylibre.com \
--cc=caleb.connolly@linaro.org \
--cc=fabrice.gasnier@foss.st.com \
--cc=festevam@gmail.com \
--cc=iwamatsu@nigauri.org \
--cc=jonas@kwiboo.se \
--cc=marek.vasut+renesas@mailbox.org \
--cc=neil.armstrong@linaro.org \
--cc=nm@ti.com \
--cc=othacehe@gnu.org \
--cc=seanga2@gmail.com \
--cc=sjg@chromium.org \
--cc=sumit.garg@linaro.org \
--cc=tharvey@gateworks.com \
--cc=trini@konsulko.com \
--cc=u-boot-qcom@groups.io \
--cc=u-boot@lists.denx.de \
--cc=xdrudis@tinet.cat \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.