--- zzzz-none-000/linux-2.6.13.1/drivers/usb/host/ohci-hcd.c 2005-09-10 02:42:58.000000000 +0000 +++ ohio-7170-487/linux-2.6.13.1/drivers/usb/host/ohci-hcd.c 2007-05-11 17:26:09.000000000 +0000 @@ -132,6 +132,17 @@ #define IR_DISABLE #endif +#ifdef CONFIG_USB_OHCI_DMA_ADDRESS_TRANSLATION +/*forward declaration, set value in ohci-vlynq.c*/ +static const u64 ohci_dma_translation_offset; +#define DMA_TO_OHCI_ADDRESS(x) ((x) - ohci_dma_translation_offset) +#define OHCI_TO_DMA_ADDRESS(x) ((x) + ohci_dma_translation_offset) + +#else +#define DMA_TO_OHCI_ADDRESS(x) (x) +#define OHCI_TO_DMA_ADDRESS(x) (x) +#endif /* CONFIG_USB_OHCI_DMA_ADDRESS_TRANSLATION */ + /*-------------------------------------------------------------------------*/ static const char hcd_name [] = "ohci_hcd"; @@ -489,7 +500,10 @@ return 0; ohci->hcca = dma_alloc_coherent (ohci_to_hcd(ohci)->self.controller, - sizeof *ohci->hcca, &ohci->hcca_dma, 0); + sizeof *ohci->hcca, &ohci->hcca_dma, 0); +#ifdef CONFIG_USB_OHCI_DMA_ADDRESS_TRANSLATION + ohci->hcca_dma = DMA_TO_OHCI_ADDRESS (ohci->hcca_dma); +#endif if (!ohci->hcca) return -ENOMEM; @@ -779,7 +793,7 @@ if (ohci->hcca) { dma_free_coherent (hcd->self.controller, sizeof *ohci->hcca, - ohci->hcca, ohci->hcca_dma); + ohci->hcca, OHCI_TO_DMA_ADDRESS (ohci->hcca_dma)); ohci->hcca = NULL; ohci->hcca_dma = 0; } @@ -911,6 +925,10 @@ #include "ohci-ppc-soc.c" #endif +#ifdef CONFIG_USB_OHCI_VLYNQ +#include "ohci-vlynq.c" +#endif + #if !(defined(CONFIG_PCI) \ || defined(CONFIG_SA1111) \ || defined(CONFIG_ARCH_S3C2410) \ @@ -919,6 +937,7 @@ || defined (CONFIG_PXA27x) \ || defined (CONFIG_SOC_AU1X00) \ || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \ + || defined (CONFIG_USB_OHCI_VLYNQ) \ ) #error "missing bus glue for ohci-hcd" #endif