Re: [PATCH phy v4 4/5] Revert "usb: host: xhci: mvebu: make USB 3.0 PHY optional for Armada 3720"

Marek Behún
2022-02-24T15:12:15Z

Dear Greg,

could you please send Ack for this patch?
https://lore.kernel.org/linux-phy/20220203214444.1508-5-kabel@kernel.org/

It is a revert of another patch that was added because of potential
problems in comphy driver, and these are now solved by this series, but
Vinod says he can apply the USB patch but he needs your Ack.

Thanks.

Marek

On Thu, 3 Feb 2022 22:44:43 +0100
Marek Behún <kabel@kernel.org> wrote:

> From: Pali Rohár <pali@kernel.org>
>
> This reverts commit 3241929b67d28c83945d3191c6816a3271fd6b85.
>
> Armada 3720 phy driver (phy-mvebu-a3700-comphy.c) does not return
> -EOPNOTSUPP from phy_power_on() callback anymore.
>
> So remove XHCI_SKIP_PHY_INIT flag from xhci_mvebu_a3700_plat_setup() and
> then also whole xhci_mvebu_a3700_plat_setup() function which is there just
> to handle -EOPNOTSUPP for XHCI_SKIP_PHY_INIT.
>
> xhci plat_setup callback is not used by any other xhci plat driver, so
> remove this callback completely.
>
> Signed-off-by: Pali Rohár <pali@kernel.org>
> Signed-off-by: Marek Behún <kabel@kernel.org>
> Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
> ---
> drivers/usb/host/xhci-mvebu.c | 42 -----------------------------------
> drivers/usb/host/xhci-mvebu.h | 6 -----
> drivers/usb/host/xhci-plat.c | 20 +----------------
> drivers/usb/host/xhci-plat.h | 1 -
> 4 files changed, 1 insertion(+), 68 deletions(-)
>
> diff --git a/drivers/usb/host/xhci-mvebu.c b/drivers/usb/host/xhci-mvebu.c
> index 8ca1a235d164..60651a50770f 100644
> --- a/drivers/usb/host/xhci-mvebu.c
> +++ b/drivers/usb/host/xhci-mvebu.c
> @@ -8,7 +8,6 @@
> #include <linux/mbus.h>
> #include <linux/of.h>
> #include <linux/platform_device.h>
> -#include <linux/phy/phy.h>
>
> #include <linux/usb.h>
> #include <linux/usb/hcd.h>
> @@ -75,47 +74,6 @@ int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
> return 0;
> }
>
> -int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd)
> -{
> - struct xhci_hcd *xhci = hcd_to_xhci(hcd);
> - struct device *dev = hcd->self.controller;
> - struct phy *phy;
> - int ret;
> -
> - /* Old bindings miss the PHY handle */
> - phy = of_phy_get(dev->of_node, "usb3-phy");
> - if (IS_ERR(phy) && PTR_ERR(phy) == -EPROBE_DEFER)
> - return -EPROBE_DEFER;
> - else if (IS_ERR(phy))
> - goto phy_out;
> -
> - ret = phy_init(phy);
> - if (ret)
> - goto phy_put;
> -
> - ret = phy_set_mode(phy, PHY_MODE_USB_HOST_SS);
> - if (ret)
> - goto phy_exit;
> -
> - ret = phy_power_on(phy);
> - if (ret == -EOPNOTSUPP) {
> - /* Skip initializatin of XHCI PHY when it is unsupported by firmware */
> - dev_warn(dev, "PHY unsupported by firmware\n");
> - xhci->quirks |= XHCI_SKIP_PHY_INIT;
> - }
> - if (ret)
> - goto phy_exit;
> -
> - phy_power_off(phy);
> -phy_exit:
> - phy_exit(phy);
> -phy_put:
> - of_phy_put(phy);
> -phy_out:
> -
> - return 0;
> -}
> -
> int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
> {
> struct xhci_hcd *xhci = hcd_to_xhci(hcd);
> diff --git a/drivers/usb/host/xhci-mvebu.h b/drivers/usb/host/xhci-mvebu.h
> index 01bf3fcb3eca..3be021793cc8 100644
> --- a/drivers/usb/host/xhci-mvebu.h
> +++ b/drivers/usb/host/xhci-mvebu.h
> @@ -12,7 +12,6 @@ struct usb_hcd;
>
> #if IS_ENABLED(CONFIG_USB_XHCI_MVEBU)
> int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd);
> -int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd);
> int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd);
> #else
> static inline int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
> @@ -20,11 +19,6 @@ static inline int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
> return 0;
> }
>
> -static inline int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd)
> -{
> - return 0;
> -}
> -
> static inline int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
> {
> return 0;
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index dc570ce4e831..5810036ff363 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -44,16 +44,6 @@ static void xhci_priv_plat_start(struct usb_hcd *hcd)
> priv->plat_start(hcd);
> }
>
> -static int xhci_priv_plat_setup(struct usb_hcd *hcd)
> -{
> - struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd);
> -
> - if (!priv->plat_setup)
> - return 0;
> -
> - return priv->plat_setup(hcd);
> -}
> -
> static int xhci_priv_init_quirk(struct usb_hcd *hcd)
> {
> struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd);
> @@ -121,7 +111,6 @@ static const struct xhci_plat_priv xhci_plat_marvell_armada = {
> };
>
> static const struct xhci_plat_priv xhci_plat_marvell_armada3700 = {
> - .plat_setup = xhci_mvebu_a3700_plat_setup,
> .init_quirk = xhci_mvebu_a3700_init_quirk,
> };
>
> @@ -341,14 +330,7 @@ static int xhci_plat_probe(struct platform_device *pdev)
>
> hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node);
> xhci->shared_hcd->tpl_support = hcd->tpl_support;
> -
> - if (priv) {
> - ret = xhci_priv_plat_setup(hcd);
> - if (ret)
> - goto disable_usb_phy;
> - }
> -
> - if ((xhci->quirks & XHCI_SKIP_PHY_INIT) || (priv && (priv->quirks & XHCI_SKIP_PHY_INIT)))
> + if (priv && (priv->quirks & XHCI_SKIP_PHY_INIT))
> hcd->skip_phy_initialization = 1;
>
> if (priv && (priv->quirks & XHCI_SG_TRB_CACHE_SIZE_QUIRK))
> diff --git a/drivers/usb/host/xhci-plat.h b/drivers/usb/host/xhci-plat.h
> index 561d0b7bce09..1fb149d1fbce 100644
> --- a/drivers/usb/host/xhci-plat.h
> +++ b/drivers/usb/host/xhci-plat.h
> @@ -13,7 +13,6 @@
> struct xhci_plat_priv {
> const char *firmware_name;
> unsigned long long quirks;
> - int (*plat_setup)(struct usb_hcd *);
> void (*plat_start)(struct usb_hcd *);
> int (*init_quirk)(struct usb_hcd *);
> int (*suspend_quirk)(struct usb_hcd *);