131-arm-gemini-add-usb-platform-device.patch 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. --- a/arch/arm/mach-gemini/devices.c
  2. +++ b/arch/arm/mach-gemini/devices.c
  3. @@ -185,3 +185,62 @@ int __init platform_register_ethernet(st
  4. return platform_device_register(&ethernet_device);
  5. }
  6. +
  7. +static u64 usb0_dmamask = DMA_BIT_MASK(32);
  8. +static struct resource usb0_resources[] = {
  9. + {
  10. + .start = 0x68000000,
  11. + .end = 0x68000fff,
  12. + .flags = IORESOURCE_MEM,
  13. + },
  14. + {
  15. + .start = IRQ_USB0,
  16. + .end = IRQ_USB0,
  17. + .flags = IORESOURCE_IRQ,
  18. + },
  19. +};
  20. +
  21. +static u64 usb1_dmamask = DMA_BIT_MASK(32);
  22. +static struct resource usb1_resources[] = {
  23. + {
  24. + .start = 0x69000000,
  25. + .end = 0x69000fff,
  26. + .flags = IORESOURCE_MEM,
  27. + },
  28. + {
  29. + .start = IRQ_USB1,
  30. + .end = IRQ_USB1,
  31. + .flags = IORESOURCE_IRQ,
  32. + },
  33. +};
  34. +
  35. +static struct platform_device usb_device[] = {
  36. + {
  37. + .name = "ehci-fotg2xx",
  38. + .id = 0,
  39. + .dev = {
  40. + .dma_mask = &usb0_dmamask,
  41. + .coherent_dma_mask = DMA_BIT_MASK(32),
  42. + },
  43. + .num_resources = ARRAY_SIZE(usb0_resources),
  44. + .resource = usb0_resources,
  45. + },
  46. + {
  47. + .name = "ehci-fotg2xx",
  48. + .id = 1,
  49. + .dev = {
  50. + .dma_mask = &usb1_dmamask,
  51. + .coherent_dma_mask = DMA_BIT_MASK(32),
  52. + },
  53. + .num_resources = ARRAY_SIZE(usb1_resources),
  54. + .resource = usb1_resources,
  55. + },
  56. +};
  57. +
  58. +int __init platform_register_usb(unsigned int id)
  59. +{
  60. + if (id > 1)
  61. + return -EINVAL;
  62. +
  63. + return platform_device_register(&usb_device[id]);
  64. +}
  65. --- a/arch/arm/mach-gemini/common.h
  66. +++ b/arch/arm/mach-gemini/common.h
  67. @@ -28,6 +28,7 @@ extern int platform_register_pflash(unsi
  68. unsigned int nr_parts);
  69. extern int platform_register_watchdog(void);
  70. extern int platform_register_ethernet(struct gemini_gmac_platform_data *pdata);
  71. +extern int platform_register_usb(unsigned int id);
  72. extern void gemini_restart(char mode, const char *cmd);