RE: linux-next: Tree for Dec 9 (usb/cdns3)

From: Pawel Laszczak
Date: Thu Dec 10 2020 - 11:43:01 EST


Peter,

>
>>
>>>
>>>On 20-12-09 16:58:16, Randy Dunlap wrote:
>>>> On 12/9/20 2:44 AM, Stephen Rothwell wrote:
>>>> > Hi all,
>>>> >
>>>> > Changes since 20201208:
>>>> >
>>>>
>>>> (I don't know what to do about this one -- seeking help.)
>>>
>>>Add Pawel.
>>>
>>>Hi Pawel,
>>>
>>>Add old cdns3 logic, when the CONFIG_USB=m
>>>If CONFIG_USB_CDNS3 is M, the host will be built as module
>>>If CONFIG_USB_CDNS3 is build-in, the host will not built due to
>>>USB=m, so USB!= USB_CDNS3 at below dependency.
>>>
>>>config USB_CDNS3_HOST
>>> bool "Cadence USB3 host controller"
>>> depends on USB=y || USB=USB_CDNS3
>>>
>>>So, it has no such issue.
>>>
>>>But after adding CDNSSP support, the configuration relationship is
>>>much complicated, both CDNS3 and CDNSSP could choose host file,
>>>would you have a check for this issue?
>>
>>I can recreate this issue. I will try to resolve it.
>
>config USB_CDNS3_HOST
> bool "Cadence USB3 host controller"
>- depends on USB=y || USB=USB_CDNS3
>+ depends on USB=USB_CDNS3
> select USB_CDNS_HOST
> help
> Say Y here to enable host controller functionality of the
>@@ -110,7 +110,7 @@ config USB_CDNSP_GADGET
>
> config USB_CDNSP_HOST
> bool "Cadence CDNSP host controller"
>- depends on USB=y || USB=USB_CDNSP_PCI
>+ depends on USB=USB_CDNSP_PCI
> select USB_CDNS_HOST
> help
> Say Y here to enable host controller functionality of the
>
>Peter, what about such change. It fix this issue but I need to check
>It with some other kernel configurations.
>At this moment it's the only solution which I've found but
>it's introduces some limitation in CDNS3/CDNSP configuration.

It doesn't work correct.
I posted the patch with other solution.

>
>>
>>>
>>>Peter
>>>
>>>>
>>>>
>>>> on x86_64:
>>>>
>>>> ld: drivers/usb/cdns3/host.o: in function `xhci_cdns3_suspend_quirk':
>>>> host.c:(.text+0x9): undefined reference to `usb_hcd_is_primary_hcd'
>>>>
>>>> This reference to 'usb_hdc_is_primary_hcd' is from hcd_to_xhci(),
>>>> which is being built as a loadable module:
>>>>
>>>> int xhci_cdns3_suspend_quirk(struct usb_hcd *hcd)
>>>> {
>>>> struct xhci_hcd *xhci = hcd_to_xhci(hcd);
>>>>
>>>>
>>>>
>>>>
>>>> CONFIG_USB_GADGET=y
>>>> CONFIG_USB_SUPPORT=y
>>>> CONFIG_USB_COMMON=y
>>>> # CONFIG_USB_CONN_GPIO is not set
>>>> CONFIG_USB_ARCH_HAS_HCD=y
>>>> CONFIG_USB=m
>>>>
>>>> CONFIG_USB_CDNS_SUPPORT=y
>>>> CONFIG_USB_CDNS_HOST=y
>>>> CONFIG_USB_CDNS3=m
>>>> CONFIG_USB_CDNS3_GADGET=y
>>>> CONFIG_USB_CDNS3_HOST=y
>>>>
>>>> Problem is mostly that CONFIG_USB=m and CONFIG_USB_GADGET=y.
>>>>
>>>>
>>>> Full randconfig file is attached.
>>>>
>>>>
>>>> thanks.
>>>> --
>>>> ~Randy
>>>> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
>>>
>>>
>>>
--

Thanks
Pawel Laszczak