Message ID | 20241112160125.2340972-1-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | [v1,1/1] usb: cdns3: Synchronise PCI IDs via common data base | expand |
On Tue, Nov 12, 2024 at 06:01:25PM +0200, Andy Shevchenko wrote: > There are a few places in the kernel where PCI IDs for different Cadence > USB controllers are being used. Besides different naming, they duplicate > each other. Make this all in order by providing common definitions via > PCI IDs database and use in all users. While doing that, rename > definitions as Roger suggested. > > Suggested-by: Roger Quadros <rogerq@kernel.org> > Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Looks like maybe something for the USB tree? > --- > drivers/usb/cdns3/cdns3-pci-wrap.c | 4 +--- > drivers/usb/cdns3/cdnsp-pci.c | 26 +++++++++--------------- > drivers/usb/gadget/udc/cdns2/cdns2-pci.c | 3 +-- > drivers/usb/host/xhci-pci.c | 5 ++--- > include/linux/pci_ids.h | 4 ++++ > 5 files changed, 18 insertions(+), 24 deletions(-) > > diff --git a/drivers/usb/cdns3/cdns3-pci-wrap.c b/drivers/usb/cdns3/cdns3-pci-wrap.c > index 591d149de8f3..3b3b3dc75f35 100644 > --- a/drivers/usb/cdns3/cdns3-pci-wrap.c > +++ b/drivers/usb/cdns3/cdns3-pci-wrap.c > @@ -37,8 +37,6 @@ struct cdns3_wrap { > #define PCI_DRIVER_NAME "cdns3-pci-usbss" > #define PLAT_DRIVER_NAME "cdns-usb3" > > -#define PCI_DEVICE_ID_CDNS_USB3 0x0100 > - > static struct pci_dev *cdns3_get_second_fun(struct pci_dev *pdev) > { > struct pci_dev *func; > @@ -189,7 +187,7 @@ static void cdns3_pci_remove(struct pci_dev *pdev) > } > > static const struct pci_device_id cdns3_pci_ids[] = { > - { PCI_VDEVICE(CDNS, PCI_DEVICE_ID_CDNS_USB3) }, > + { PCI_VDEVICE(CDNS, PCI_DEVICE_ID_CDNS_USBSS) }, > { 0, } > }; > > diff --git a/drivers/usb/cdns3/cdnsp-pci.c b/drivers/usb/cdns3/cdnsp-pci.c > index 2d05368a6745..a51144504ff3 100644 > --- a/drivers/usb/cdns3/cdnsp-pci.c > +++ b/drivers/usb/cdns3/cdnsp-pci.c > @@ -28,12 +28,6 @@ > #define PCI_DRIVER_NAME "cdns-pci-usbssp" > #define PLAT_DRIVER_NAME "cdns-usbssp" > > -#define PCI_DEVICE_ID_CDNS_USB3 0x0100 > -#define PCI_DEVICE_ID_CDNS_UDC 0x0200 > - > -#define PCI_CLASS_SERIAL_USB_CDNS_USB3 (PCI_CLASS_SERIAL_USB << 8 | 0x80) > -#define PCI_CLASS_SERIAL_USB_CDNS_UDC PCI_CLASS_SERIAL_USB_DEVICE > - > static struct pci_dev *cdnsp_get_second_fun(struct pci_dev *pdev) > { > /* > @@ -41,10 +35,10 @@ static struct pci_dev *cdnsp_get_second_fun(struct pci_dev *pdev) > * Platform has two function. The fist keeps resources for > * Host/Device while the secon keeps resources for DRD/OTG. > */ > - if (pdev->device == PCI_DEVICE_ID_CDNS_UDC) > - return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_USB3, NULL); > - if (pdev->device == PCI_DEVICE_ID_CDNS_USB3) > - return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_UDC, NULL); > + if (pdev->device == PCI_DEVICE_ID_CDNS_USBSSP) > + return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_USBSS, NULL); > + if (pdev->device == PCI_DEVICE_ID_CDNS_USBSS) > + return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_USBSSP, NULL); > > return NULL; > } > @@ -221,12 +215,12 @@ static const struct dev_pm_ops cdnsp_pci_pm_ops = { > }; > > static const struct pci_device_id cdnsp_pci_ids[] = { > - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_UDC), > - .class = PCI_CLASS_SERIAL_USB_CDNS_UDC }, > - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_UDC), > - .class = PCI_CLASS_SERIAL_USB_CDNS_USB3 }, > - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USB3), > - .class = PCI_CLASS_SERIAL_USB_CDNS_USB3 }, > + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSSP), > + .class = PCI_CLASS_SERIAL_USB_DEVICE }, > + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSSP), > + .class = PCI_CLASS_SERIAL_USB_CDNS }, > + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSS), > + .class = PCI_CLASS_SERIAL_USB_CDNS }, > { 0, } > }; > > diff --git a/drivers/usb/gadget/udc/cdns2/cdns2-pci.c b/drivers/usb/gadget/udc/cdns2/cdns2-pci.c > index b1a8f772467c..e589593b4cbf 100644 > --- a/drivers/usb/gadget/udc/cdns2/cdns2-pci.c > +++ b/drivers/usb/gadget/udc/cdns2/cdns2-pci.c > @@ -15,7 +15,6 @@ > #include "cdns2-gadget.h" > > #define PCI_DRIVER_NAME "cdns-pci-usbhs" > -#define PCI_DEVICE_ID_CDNS_USB2 0x0120 > #define PCI_BAR_DEV 0 > #define PCI_DEV_FN_DEVICE 0 > > @@ -113,7 +112,7 @@ static const struct dev_pm_ops cdns2_pci_pm_ops = { > }; > > static const struct pci_device_id cdns2_pci_ids[] = { > - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USB2), > + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USB), > .class = PCI_CLASS_SERIAL_USB_DEVICE }, > { 0, } > }; > diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c > index 47c4f70793e4..b21474e81482 100644 > --- a/drivers/usb/host/xhci-pci.c > +++ b/drivers/usb/host/xhci-pci.c > @@ -82,8 +82,6 @@ > #define PCI_DEVICE_ID_ASMEDIA_3042_XHCI 0x3042 > #define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242 > > -#define PCI_DEVICE_ID_CDNS_SSP 0x0200 > - > static const char hcd_name[] = "xhci_hcd"; > > static struct hc_driver __read_mostly xhci_pci_hc_driver; > @@ -475,8 +473,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) > if (pdev->device == 0x9203) > xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH; > } > + > if (pdev->vendor == PCI_VENDOR_ID_CDNS && > - pdev->device == PCI_DEVICE_ID_CDNS_SSP) > + pdev->device == PCI_DEVICE_ID_CDNS_USBSSP) > xhci->quirks |= XHCI_CDNS_SCTX_QUIRK; > > /* xHC spec requires PCI devices to support D3hot and D3cold */ > diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h > index e4bddb927795..d2402bf4aea2 100644 > --- a/include/linux/pci_ids.h > +++ b/include/linux/pci_ids.h > @@ -121,6 +121,7 @@ > #define PCI_CLASS_SERIAL_USB_OHCI 0x0c0310 > #define PCI_CLASS_SERIAL_USB_EHCI 0x0c0320 > #define PCI_CLASS_SERIAL_USB_XHCI 0x0c0330 > +#define PCI_CLASS_SERIAL_USB_CDNS 0x0c0380 > #define PCI_CLASS_SERIAL_USB_DEVICE 0x0c03fe > #define PCI_CLASS_SERIAL_FIBER 0x0c04 > #define PCI_CLASS_SERIAL_SMBUS 0x0c05 > @@ -2421,6 +2422,9 @@ > #define PCI_VENDOR_ID_QCOM 0x17cb > > #define PCI_VENDOR_ID_CDNS 0x17cd > +#define PCI_DEVICE_ID_CDNS_USBSS 0x0100 > +#define PCI_DEVICE_ID_CDNS_USB 0x0120 > +#define PCI_DEVICE_ID_CDNS_USBSSP 0x0200 > > #define PCI_VENDOR_ID_ARECA 0x17d3 > #define PCI_DEVICE_ID_ARECA_1110 0x1110 > -- > 2.43.0.rc1.1336.g36b5255a03ac >
On Tue, Nov 12, 2024 at 03:24:47PM -0600, Bjorn Helgaas wrote: > On Tue, Nov 12, 2024 at 06:01:25PM +0200, Andy Shevchenko wrote: > > There are a few places in the kernel where PCI IDs for different Cadence > > USB controllers are being used. Besides different naming, they duplicate > > each other. Make this all in order by providing common definitions via > > PCI IDs database and use in all users. While doing that, rename > > definitions as Roger suggested. > > > > Suggested-by: Roger Quadros <rogerq@kernel.org> > > Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Acked-by: Bjorn Helgaas <bhelgaas@google.com> > > Looks like maybe something for the USB tree? Sure, I'll take it, thanks! greg k-h
diff --git a/drivers/usb/cdns3/cdns3-pci-wrap.c b/drivers/usb/cdns3/cdns3-pci-wrap.c index 591d149de8f3..3b3b3dc75f35 100644 --- a/drivers/usb/cdns3/cdns3-pci-wrap.c +++ b/drivers/usb/cdns3/cdns3-pci-wrap.c @@ -37,8 +37,6 @@ struct cdns3_wrap { #define PCI_DRIVER_NAME "cdns3-pci-usbss" #define PLAT_DRIVER_NAME "cdns-usb3" -#define PCI_DEVICE_ID_CDNS_USB3 0x0100 - static struct pci_dev *cdns3_get_second_fun(struct pci_dev *pdev) { struct pci_dev *func; @@ -189,7 +187,7 @@ static void cdns3_pci_remove(struct pci_dev *pdev) } static const struct pci_device_id cdns3_pci_ids[] = { - { PCI_VDEVICE(CDNS, PCI_DEVICE_ID_CDNS_USB3) }, + { PCI_VDEVICE(CDNS, PCI_DEVICE_ID_CDNS_USBSS) }, { 0, } }; diff --git a/drivers/usb/cdns3/cdnsp-pci.c b/drivers/usb/cdns3/cdnsp-pci.c index 2d05368a6745..a51144504ff3 100644 --- a/drivers/usb/cdns3/cdnsp-pci.c +++ b/drivers/usb/cdns3/cdnsp-pci.c @@ -28,12 +28,6 @@ #define PCI_DRIVER_NAME "cdns-pci-usbssp" #define PLAT_DRIVER_NAME "cdns-usbssp" -#define PCI_DEVICE_ID_CDNS_USB3 0x0100 -#define PCI_DEVICE_ID_CDNS_UDC 0x0200 - -#define PCI_CLASS_SERIAL_USB_CDNS_USB3 (PCI_CLASS_SERIAL_USB << 8 | 0x80) -#define PCI_CLASS_SERIAL_USB_CDNS_UDC PCI_CLASS_SERIAL_USB_DEVICE - static struct pci_dev *cdnsp_get_second_fun(struct pci_dev *pdev) { /* @@ -41,10 +35,10 @@ static struct pci_dev *cdnsp_get_second_fun(struct pci_dev *pdev) * Platform has two function. The fist keeps resources for * Host/Device while the secon keeps resources for DRD/OTG. */ - if (pdev->device == PCI_DEVICE_ID_CDNS_UDC) - return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_USB3, NULL); - if (pdev->device == PCI_DEVICE_ID_CDNS_USB3) - return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_UDC, NULL); + if (pdev->device == PCI_DEVICE_ID_CDNS_USBSSP) + return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_USBSS, NULL); + if (pdev->device == PCI_DEVICE_ID_CDNS_USBSS) + return pci_get_device(pdev->vendor, PCI_DEVICE_ID_CDNS_USBSSP, NULL); return NULL; } @@ -221,12 +215,12 @@ static const struct dev_pm_ops cdnsp_pci_pm_ops = { }; static const struct pci_device_id cdnsp_pci_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_UDC), - .class = PCI_CLASS_SERIAL_USB_CDNS_UDC }, - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_UDC), - .class = PCI_CLASS_SERIAL_USB_CDNS_USB3 }, - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USB3), - .class = PCI_CLASS_SERIAL_USB_CDNS_USB3 }, + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSSP), + .class = PCI_CLASS_SERIAL_USB_DEVICE }, + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSSP), + .class = PCI_CLASS_SERIAL_USB_CDNS }, + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USBSS), + .class = PCI_CLASS_SERIAL_USB_CDNS }, { 0, } }; diff --git a/drivers/usb/gadget/udc/cdns2/cdns2-pci.c b/drivers/usb/gadget/udc/cdns2/cdns2-pci.c index b1a8f772467c..e589593b4cbf 100644 --- a/drivers/usb/gadget/udc/cdns2/cdns2-pci.c +++ b/drivers/usb/gadget/udc/cdns2/cdns2-pci.c @@ -15,7 +15,6 @@ #include "cdns2-gadget.h" #define PCI_DRIVER_NAME "cdns-pci-usbhs" -#define PCI_DEVICE_ID_CDNS_USB2 0x0120 #define PCI_BAR_DEV 0 #define PCI_DEV_FN_DEVICE 0 @@ -113,7 +112,7 @@ static const struct dev_pm_ops cdns2_pci_pm_ops = { }; static const struct pci_device_id cdns2_pci_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USB2), + { PCI_DEVICE(PCI_VENDOR_ID_CDNS, PCI_DEVICE_ID_CDNS_USB), .class = PCI_CLASS_SERIAL_USB_DEVICE }, { 0, } }; diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 47c4f70793e4..b21474e81482 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -82,8 +82,6 @@ #define PCI_DEVICE_ID_ASMEDIA_3042_XHCI 0x3042 #define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242 -#define PCI_DEVICE_ID_CDNS_SSP 0x0200 - static const char hcd_name[] = "xhci_hcd"; static struct hc_driver __read_mostly xhci_pci_hc_driver; @@ -475,8 +473,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) if (pdev->device == 0x9203) xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH; } + if (pdev->vendor == PCI_VENDOR_ID_CDNS && - pdev->device == PCI_DEVICE_ID_CDNS_SSP) + pdev->device == PCI_DEVICE_ID_CDNS_USBSSP) xhci->quirks |= XHCI_CDNS_SCTX_QUIRK; /* xHC spec requires PCI devices to support D3hot and D3cold */ diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index e4bddb927795..d2402bf4aea2 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -121,6 +121,7 @@ #define PCI_CLASS_SERIAL_USB_OHCI 0x0c0310 #define PCI_CLASS_SERIAL_USB_EHCI 0x0c0320 #define PCI_CLASS_SERIAL_USB_XHCI 0x0c0330 +#define PCI_CLASS_SERIAL_USB_CDNS 0x0c0380 #define PCI_CLASS_SERIAL_USB_DEVICE 0x0c03fe #define PCI_CLASS_SERIAL_FIBER 0x0c04 #define PCI_CLASS_SERIAL_SMBUS 0x0c05 @@ -2421,6 +2422,9 @@ #define PCI_VENDOR_ID_QCOM 0x17cb #define PCI_VENDOR_ID_CDNS 0x17cd +#define PCI_DEVICE_ID_CDNS_USBSS 0x0100 +#define PCI_DEVICE_ID_CDNS_USB 0x0120 +#define PCI_DEVICE_ID_CDNS_USBSSP 0x0200 #define PCI_VENDOR_ID_ARECA 0x17d3 #define PCI_DEVICE_ID_ARECA_1110 0x1110
There are a few places in the kernel where PCI IDs for different Cadence USB controllers are being used. Besides different naming, they duplicate each other. Make this all in order by providing common definitions via PCI IDs database and use in all users. While doing that, rename definitions as Roger suggested. Suggested-by: Roger Quadros <rogerq@kernel.org> Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/usb/cdns3/cdns3-pci-wrap.c | 4 +--- drivers/usb/cdns3/cdnsp-pci.c | 26 +++++++++--------------- drivers/usb/gadget/udc/cdns2/cdns2-pci.c | 3 +-- drivers/usb/host/xhci-pci.c | 5 ++--- include/linux/pci_ids.h | 4 ++++ 5 files changed, 18 insertions(+), 24 deletions(-)