| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | 
							- From: Felix Fietkau <[email protected]>
 
- Subject: debloat: disable common USB quirks
 
- Signed-off-by: Felix Fietkau <[email protected]>
 
- ---
 
-  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
 
- @@ -128,6 +128,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;
 
- @@ -633,6 +635,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.
 
- @@ -712,8 +718,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;
 
- @@ -1285,3 +1300,4 @@ static void quirk_usb_early_handoff(stru
 
-  }
 
-  DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
 
-  			PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
 
- +#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_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev);
 
-  bool usb_amd_hang_symptom_quirk(void);
 
-  bool usb_amd_prefetch_quirk(void);
 
- @@ -19,6 +22,18 @@ void sb800_prefetch(struct device *dev,
 
-  bool usb_amd_pt_check_port(struct device *device, int port);
 
-  #else
 
-  struct pci_dev;
 
- +static inline int usb_amd_quirk_pll_check(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) {}
 
- @@ -29,6 +44,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
 
- @@ -498,7 +498,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;
 
 
  |