Re: [PATCH resend] USB host: Move AMD PLL quirk to pci-quirks.c

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

 



Hello.

On 18-02-2011 12:48, Andiry Xu wrote:

This patch moves the AMD PLL quirk code in OHCI/EHCI driver to pci-quirks.c,
and exports the functions to be used by xHCI driver later.

AMD PLL quirk disable the optional PM feature inside specific
SB700/SB800/Hudson-2/3 platforms under the following conditions:

1. If an isochronous device is connected to OHCI/EHCI/xHCI port and is active;
2. Optional PM feature that powers down the internal Bus PLL when the link is
    in low power state is enabled.

Without AMD PLL quirk, USB isochronous stream may stutter or have breaks
occasionally, which greatly impair the performance of audio/video streams.

Currently AMD PLL quirk is implemented in OHCI and EHCI driver, and will be
added to xHCI driver too. They are doing similar things actually, so move
the quirk code to pci-quirks.c, which has several advantages:

1. Remove duplicate defines and functions in OHCI/EHCI (and xHCI) driver and
    make them cleaner;
2. AMD chipset information will be probed only once and then stored.
    Currently they're probed during every OHCI/EHCI initialization, move
    the detect code to pci-quirks.c saves the repeat detect cost;
3. Build up synchronization among OHCI/EHCI/xHCI driver. In current
    code, every host controller enable/disable PLL only according to
    its own status, and may enable PLL while there is still isoc transfer on
    other HCs. Move the quirk to pci-quirks.c prevents this issue.

Signed-off-by: Andiry Xu<andiry.xu@xxxxxxx>
Cc: David Brownell<dbrownell@xxxxxxxxxxxxxxxxxxxxx>
Cc: Alex He<alex.he@xxxxxxx>

This is not a resend, this is a new version. I see you've dropped the revision ID register reads -- you should have mentioned this under --- tearline.

diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h
index 1564edf..4d2118c 100644
--- a/drivers/usb/host/pci-quirks.h
+++ b/drivers/usb/host/pci-quirks.h
@@ -1,7 +1,26 @@
  #ifndef __LINUX_USB_PCI_QUIRKS_H
  #define __LINUX_USB_PCI_QUIRKS_H

+#ifdef CONFIG_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);
+int usb_amd_find_chipset_info(void);
+void usb_amd_dev_put(void);
+void usb_amd_quirk_pll_disable(void);
+void usb_amd_quirk_pll_enable(void);
+#else
+static inline void usb_amd_quirk_pll_disable(void)
+{
+	return;
+}
+static inline void usb_amd_quirk_pll_enable(void)
+{
+	return;
+}
+static inline void usb_amd_dev_put(void)
+{
+	return;
+}
+#endif  /* CONFIG_PCI */

   As I said, these *return* statements are not needed..

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

  Powered by Linux