123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- From: Felix Fietkau <nbd@nbd.name>
- Subject: debloat: disable common USB quirks
- Signed-off-by: Felix Fietkau <nbd@nbd.name>
- ---
- drivers/usb/host/pci-quirks.c | 16 ++++++++++++++++
- drivers/usb/host/pci-quirks.h | 18 +++++++++++++++++-
- include/linux/usb/hcd.h | 7 +++++++
- 3 files changed, 40 insertions(+), 1 deletion(-)
- --- a/drivers/usb/host/pci-quirks.c
- +++ b/drivers/usb/host/pci-quirks.c
- @@ -124,6 +124,8 @@ struct amd_chipset_type {
- u8 rev;
- };
-
- +#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
- +
- static struct amd_chipset_info {
- struct pci_dev *nb_dev;
- struct pci_dev *smbus_dev;
- @@ -620,6 +622,10 @@ bool usb_amd_pt_check_port(struct device
- }
- EXPORT_SYMBOL_GPL(usb_amd_pt_check_port);
-
- +#endif /* CONFIG_PCI_DISABLE_COMMON_QUIRKS */
- +
- +#if IS_ENABLED(CONFIG_USB_UHCI_HCD)
- +
- /*
- * Make sure the controller is completely inactive, unable to
- * generate interrupts or do DMA.
- @@ -699,8 +705,17 @@ reset_needed:
- uhci_reset_hc(pdev, base);
- return 1;
- }
- +#else
- +int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base)
- +{
- + return 0;
- +}
- +
- +#endif
- EXPORT_SYMBOL_GPL(uhci_check_and_reset_hc);
-
- +#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
- +
- static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
- {
- u16 cmd;
- @@ -1287,3 +1302,4 @@ bool usb_xhci_needs_pci_reset(struct pci
- return false;
- }
- EXPORT_SYMBOL_GPL(usb_xhci_needs_pci_reset);
- +#endif
- --- a/drivers/usb/host/pci-quirks.h
- +++ b/drivers/usb/host/pci-quirks.h
- @@ -5,6 +5,9 @@
- #ifdef CONFIG_USB_PCI
- void uhci_reset_hc(struct pci_dev *pdev, unsigned long base);
- int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base);
- +#endif /* CONFIG_USB_PCI */
- +
- +#if defined(CONFIG_USB_PCI) && !defined(CONFIG_PCI_DISABLE_COMMON_QUIRKS)
- int usb_amd_find_chipset_info(void);
- int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev);
- bool usb_amd_hang_symptom_quirk(void);
- @@ -20,6 +23,18 @@ bool usb_xhci_needs_pci_reset(struct pci
- bool usb_amd_pt_check_port(struct device *device, int port);
- #else
- struct pci_dev;
- +static inline int usb_amd_find_chipset_info(void)
- +{
- + return 0;
- +}
- +static inline bool usb_amd_hang_symptom_quirk(void)
- +{
- + return false;
- +}
- +static inline bool usb_amd_prefetch_quirk(void)
- +{
- + return false;
- +}
- static inline void usb_amd_quirk_pll_disable(void) {}
- static inline void usb_amd_quirk_pll_enable(void) {}
- static inline void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev) {}
- @@ -30,6 +45,11 @@ static inline bool usb_amd_pt_check_port
- {
- return false;
- }
- +static inline void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev) {}
- +static inline bool usb_xhci_needs_pci_reset(struct pci_dev *pdev)
- +{
- + return false;
- +}
- #endif /* CONFIG_USB_PCI */
-
- #endif /* __LINUX_USB_PCI_QUIRKS_H */
- --- a/include/linux/usb/hcd.h
- +++ b/include/linux/usb/hcd.h
- @@ -465,7 +465,14 @@ extern int usb_hcd_pci_probe(struct pci_
- extern void usb_hcd_pci_remove(struct pci_dev *dev);
- extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
-
- +#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
- extern int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *dev);
- +#else
- +static inline int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *dev)
- +{
- + return 0;
- +}
- +#endif
-
- #ifdef CONFIG_PM
- extern const struct dev_pm_ops usb_hcd_pci_pm_ops;
|