Re: [PATCH 6/6] usb: dwc3: host: Set quirks base on version

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

 



Greg Kroah-Hartman wrote:
> On Thu, Apr 08, 2021 at 06:42:32PM -0700, Thinh Nguyen wrote:
>> We can check for host quirks at runtime base on the controller IP and
>> version check. Set the following quirks for the DWC_usb31 IP host mode
>> before creating a platform device for the xHCI driver:
>>
>>  * XHCI_ISOC_BLOCKED_DISCONNECT
>>  * XHCI_LIMIT_FS_BI_INTR_EP
>>  * XHCI_LOST_DISCONNECT_QUIRK
>>
>> Signed-off-by: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx>
>> ---
>>  drivers/usb/dwc3/host.c | 21 +++++++++++++++++++++
>>  1 file changed, 21 insertions(+)
>>
>> diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
>> index f29a264635aa..a486d7fbb163 100644
>> --- a/drivers/usb/dwc3/host.c
>> +++ b/drivers/usb/dwc3/host.c
>> @@ -9,6 +9,7 @@
>>  
>>  #include <linux/acpi.h>
>>  #include <linux/platform_device.h>
>> +#include <linux/usb/xhci-quirks.h>
>>  
>>  #include "core.h"
>>  
>> @@ -42,6 +43,17 @@ static int dwc3_host_get_irq(struct dwc3 *dwc)
>>  	return irq;
>>  }
>>  
>> +static void dwc3_host_init_quirks(struct dwc3 *dwc, struct xhci_plat_priv *priv)
>> +{
>> +	memset(priv, 0, sizeof(*priv));
>> +
>> +	if (DWC3_VER_IS_WITHIN(DWC31, ANY, 190A)) {
>> +		priv->quirks |= XHCI_ISOC_BLOCKED_DISCONNECT;
>> +		priv->quirks |= XHCI_LIMIT_FS_BI_INTR_EP;
>> +		priv->quirks |= XHCI_LOST_DISCONNECT_QUIRK;
>> +	}
>> +}
>> +
>>  int dwc3_host_init(struct dwc3 *dwc)
>>  {
>>  	struct property_entry	props[4];
>> @@ -49,6 +61,7 @@ int dwc3_host_init(struct dwc3 *dwc)
>>  	int			ret, irq;
>>  	struct resource		*res;
>>  	struct platform_device	*dwc3_pdev = to_platform_device(dwc->dev);
>> +	struct xhci_plat_priv	dwc3_priv;
> 
> Tying the dwc3 code to the xhci code like this feels really wrong to me,
> are you sure this is the correct resolution?
> 
> greg k-h
> 

Can you clarify what feels wrong? The way it's originally implemented
already tied them in that way. What we're doing here simply takes
advantage of what xhci-plat glue layer can use to set the xhci quirks.
With this, we don't have to create new and duplicate DT properties for
dwc3 and xhci to set some quirks. With the expanding list of dwc3 DT, I
see this as a plus.

Thanks,
Thinh




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

  Powered by Linux