Blame view

buildroot/buildroot-2016.08.1/board/freescale/p2020ds/linux-fix-c6187597-breakage.patch 1.74 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  From: Nikita Yushchenko <nyushchenko@dev.rtsoft.ru>
  Subject: [PATCH] usb: pci-quirks: do not access OHCI_FMINTERVAL register on ULI hw
  
  This access causes hang on Freescale P2020DS board (that has OHCI
  provided by ULI 1533 chip).
  
  Since preserving OHCI_FMINTERVAL was originally done only for NVIDIA
  hardware and only later (in c6187597) was turned unconditional, and
  c6187597 commit message again mentions only NVIDIA, I think it should be
  safe to disable preserving OHCI_FMINTERVAL if device vendor is ULI.
  
  Signed-off-by: Nikita Yushchenko <nyushchenko@dev.rtsoft.ru>
  ---
   drivers/usb/host/pci-quirks.c |    8 +++++---
   1 file changed, 5 insertions(+), 3 deletions(-)
  
  diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
  index 00661d3..5acbd5b 100644
  --- a/drivers/usb/host/pci-quirks.c
  +++ b/drivers/usb/host/pci-quirks.c
  @@ -571,7 +571,7 @@ static void quirk_usb_handoff_ohci(struct pci_dev *pdev)
   {
   	void __iomem *base;
   	u32 control;
  -	u32 fminterval;
  +	u32 uninitialized_var(fminterval);
   	int cnt;
   
   	if (!mmio_resource_enabled(pdev, 0))
  @@ -619,7 +619,8 @@ static void quirk_usb_handoff_ohci(struct pci_dev *pdev)
   	}
   
   	/* software reset of the controller, preserving HcFmInterval */
  -	fminterval = readl(base + OHCI_FMINTERVAL);
  +	if (pdev->vendor != PCI_VENDOR_ID_AL)
  +		fminterval = readl(base + OHCI_FMINTERVAL);
   	writel(OHCI_HCR, base + OHCI_CMDSTATUS);
   
   	/* reset requires max 10 us delay */
  @@ -628,7 +629,8 @@ static void quirk_usb_handoff_ohci(struct pci_dev *pdev)
   			break;
   		udelay(1);
   	}
  -	writel(fminterval, base + OHCI_FMINTERVAL);
  +	if (pdev->vendor != PCI_VENDOR_ID_AL)
  +		writel(fminterval, base + OHCI_FMINTERVAL);
   
   	/* Now the controller is safely in SUSPEND and nothing can wake it up */
   	iounmap(base);
  -- 
  1.7.10.4