Re: [PATCH -v3 1/4] pci, usb: Make usb handoff func all take baseremapping

From: Yinghai Lu
Date: Mon Jan 10 2011 - 20:21:24 EST


On 01/10/2011 05:07 PM, Greg KH wrote:
> On Mon, Jan 10, 2011 at 04:55:17PM -0800, Yinghai Lu wrote:
>>
>> So later could reuse them to do usb handoff much early for x86.
>>
>> will make arch early code get MMIO BAR and do remapping itself.
>>
>> -v2: still keep pci_device *pdev as parameter according to BenH.
>> -v3: expose three functions that take *base instead of including .c file.
>>
>> Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx>
>>
>> ---
>> drivers/usb/host/pci-quirks.c | 195 ++++++++++++++++++++++++------------------
>> drivers/usb/host/pci-quirks.h | 6 +
>> 2 files changed, 120 insertions(+), 81 deletions(-)
>>
>> Index: linux-2.6/drivers/usb/host/pci-quirks.c
>> ===================================================================
>> --- linux-2.6.orig/drivers/usb/host/pci-quirks.c
>> +++ linux-2.6/drivers/usb/host/pci-quirks.c
>> @@ -17,6 +17,19 @@
>> #include "pci-quirks.h"
>> #include "xhci-ext-caps.h"
>>
>> +static void default_usb_handoff_udelay(unsigned long usecs)
>> +{
>> + udelay(usecs);
>> +}
>> +
>> +static void __devinit default_usb_handoff_msleep(unsigned long msecs)
>> +{
>> + msleep(msecs);
>> +}
>
> What?
>
> Why in the world would you not just call the real functions here?
> That's not acceptable, sorry.

for early access, can not use udelay yet, it will take some one.
Also msleep will cause crash, because it needs scheduler there.

>
>
>> +
>> +void (*usb_handoff_udelay)(unsigned long) = default_usb_handoff_udelay;
>> +void (*usb_handoff_msleep)(unsigned long) __devinitdata =
>> + default_usb_handoff_msleep;

or do you mean use ..
+void (*usb_handoff_udelay)(unsigned long) = udelay;
+void (*usb_handoff_msleep)(unsigned long) __devinitdata =
+ msleep;



>> --- linux-2.6.orig/drivers/usb/host/pci-quirks.h
>> +++ linux-2.6/drivers/usb/host/pci-quirks.h
>> @@ -3,5 +3,11 @@
>>
>> void uhci_reset_hc(struct pci_dev *pdev, unsigned long base);
>> int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base);
>> +void __usb_handoff_ohci(struct pci_dev *pdev, void __iomem *base);
>> +void __usb_handoff_ehci(struct pci_dev *pdev, void __iomem *base);
>> +void __usb_handoff_xhci(struct pci_dev *pdev, void __iomem *base);
>
> External functions should never have "__" at the start of them, sorry.

will change that.

Thanks

Yinghai
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/