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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Sandeep Maheswaram <sanm@xxxxxxxxxxxxxx> 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

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux