2021-05-03 11:39:22

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH v7 1/5] usb: dwc3: host: Set PHY mode during suspend


Hi,

Sandeep Maheswaram <[email protected]> writes:
>>> @@ -11,6 +11,14 @@
>>> #include <linux/platform_device.h>
>>>
>>> #include "core.h"
>>> +#include "../host/xhci.h"
>>> +#include "../host/xhci-plat.h"
>>> +
>>> +static int xhci_dwc3_suspend_quirk(struct usb_hcd *hcd);
>>> +
>>> +static const struct xhci_plat_priv xhci_plat_dwc3_xhci = {
>>> + .suspend_quirk = xhci_dwc3_suspend_quirk,
>>> +};
>> we're passing data using device_properties, why do you want this here?
> Similar implemenation was done in
> drivers/usb/cdns3/host.c<https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/usb/cdns3/host.c?h=next-20210503>

then it seems we have two places to correct :-)

>>> @@ -127,6 +142,50 @@ int dwc3_host_init(struct dwc3 *dwc)
>>> return ret;
>>> }
>>>
>>> +static void dwc3_set_phy_mode(struct usb_hcd *hcd)
>>> +{
>>> +
>>> + int i, num_ports;
>>> + u32 reg;
>>> + unsigned int ss_phy_mode = 0;
>>> + struct dwc3 *dwc = dev_get_drvdata(hcd->self.controller->parent);
>>> + struct xhci_hcd *xhci_hcd = hcd_to_xhci(hcd);
>>> +
>>> + dwc->hs_phy_mode = 0;
>>> +
>>> + reg = readl(&xhci_hcd->cap_regs->hcs_params1);
>>> + num_ports = HCS_MAX_PORTS(reg);
>> there's a big assumption here that xhci is still alive. Why isn't this
>> quirk implemented in xhci-plat itself?
>>
>>> +int xhci_dwc3_suspend_quirk(struct usb_hcd *hcd)
>> who calls this?
> This will be called from
> xhci_plat_suspend->xhci_priv_suspend_quirk->xhci_dwc3_suspend_quirk

So xhci.ko calls a function from dwc3.ko? That sounds odd, doesn't it?
It really looks like we're just finding ways to bypass the driver
layering, rather than working with it.

--
balbi


Attachments:
signature.asc (521.00 B)