devices-common.h 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. /*
  2. * Copyright (C) 2009-2010 Pengutronix
  3. * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
  4. *
  5. * This program is free software; you can redistribute it and/or modify it under
  6. * the terms of the GNU General Public License version 2 as published by the
  7. * Free Software Foundation.
  8. */
  9. #include <linux/kernel.h>
  10. #include <linux/platform_device.h>
  11. #include <linux/init.h>
  12. #include <mach/sdma.h>
  13. extern struct device mxc_aips_bus;
  14. extern struct device mxc_ahb_bus;
  15. struct platform_device *imx_add_platform_device_dmamask(
  16. const char *name, int id,
  17. const struct resource *res, unsigned int num_resources,
  18. const void *data, size_t size_data, u64 dmamask);
  19. static inline struct platform_device *imx_add_platform_device(
  20. const char *name, int id,
  21. const struct resource *res, unsigned int num_resources,
  22. const void *data, size_t size_data)
  23. {
  24. return imx_add_platform_device_dmamask(
  25. name, id, res, num_resources, data, size_data, 0);
  26. }
  27. #include <linux/fec.h>
  28. struct imx_fec_data {
  29. const char *devid;
  30. resource_size_t iobase;
  31. resource_size_t irq;
  32. };
  33. struct platform_device *__init imx_add_fec(
  34. const struct imx_fec_data *data,
  35. const struct fec_platform_data *pdata);
  36. #include <linux/can/platform/flexcan.h>
  37. struct imx_flexcan_data {
  38. int id;
  39. resource_size_t iobase;
  40. resource_size_t iosize;
  41. resource_size_t irq;
  42. };
  43. struct platform_device *__init imx_add_flexcan(
  44. const struct imx_flexcan_data *data,
  45. const struct flexcan_platform_data *pdata);
  46. #include <linux/fsl_devices.h>
  47. struct imx_fsl_usb2_udc_data {
  48. resource_size_t iobase;
  49. resource_size_t irq;
  50. };
  51. struct platform_device *__init imx_add_fsl_usb2_udc(
  52. const struct imx_fsl_usb2_udc_data *data,
  53. const struct fsl_usb2_platform_data *pdata);
  54. #include <linux/gpio_keys.h>
  55. struct platform_device *__init imx_add_gpio_keys(
  56. const struct gpio_keys_platform_data *pdata);
  57. #include <mach/mx21-usbhost.h>
  58. struct imx_imx21_hcd_data {
  59. resource_size_t iobase;
  60. resource_size_t irq;
  61. };
  62. struct platform_device *__init imx_add_imx21_hcd(
  63. const struct imx_imx21_hcd_data *data,
  64. const struct mx21_usbh_platform_data *pdata);
  65. struct imx_imx2_wdt_data {
  66. int id;
  67. resource_size_t iobase;
  68. resource_size_t iosize;
  69. };
  70. struct platform_device *__init imx_add_imx2_wdt(
  71. const struct imx_imx2_wdt_data *data);
  72. struct imx_imxdi_rtc_data {
  73. resource_size_t iobase;
  74. resource_size_t irq;
  75. };
  76. struct platform_device *__init imx_add_imxdi_rtc(
  77. const struct imx_imxdi_rtc_data *data);
  78. #include <mach/imxfb.h>
  79. struct imx_imx_fb_data {
  80. resource_size_t iobase;
  81. resource_size_t iosize;
  82. resource_size_t irq;
  83. };
  84. struct platform_device *__init imx_add_imx_fb(
  85. const struct imx_imx_fb_data *data,
  86. const struct imx_fb_platform_data *pdata);
  87. #include <mach/i2c.h>
  88. struct imx_imx_i2c_data {
  89. int id;
  90. resource_size_t iobase;
  91. resource_size_t iosize;
  92. resource_size_t irq;
  93. };
  94. struct platform_device *__init imx_add_imx_i2c(
  95. const struct imx_imx_i2c_data *data,
  96. const struct imxi2c_platform_data *pdata);
  97. #include <linux/input/matrix_keypad.h>
  98. struct imx_imx_keypad_data {
  99. resource_size_t iobase;
  100. resource_size_t iosize;
  101. resource_size_t irq;
  102. };
  103. struct platform_device *__init imx_add_imx_keypad(
  104. const struct imx_imx_keypad_data *data,
  105. const struct matrix_keymap_data *pdata);
  106. #include <mach/ssi.h>
  107. struct imx_imx_ssi_data {
  108. int id;
  109. resource_size_t iobase;
  110. resource_size_t iosize;
  111. resource_size_t irq;
  112. resource_size_t dmatx0;
  113. resource_size_t dmarx0;
  114. resource_size_t dmatx1;
  115. resource_size_t dmarx1;
  116. };
  117. struct platform_device *__init imx_add_imx_ssi(
  118. const struct imx_imx_ssi_data *data,
  119. const struct imx_ssi_platform_data *pdata);
  120. #include <mach/imx-uart.h>
  121. struct imx_imx_uart_3irq_data {
  122. int id;
  123. resource_size_t iobase;
  124. resource_size_t iosize;
  125. resource_size_t irqrx;
  126. resource_size_t irqtx;
  127. resource_size_t irqrts;
  128. };
  129. struct platform_device *__init imx_add_imx_uart_3irq(
  130. const struct imx_imx_uart_3irq_data *data,
  131. const struct imxuart_platform_data *pdata);
  132. struct imx_imx_uart_1irq_data {
  133. int id;
  134. resource_size_t iobase;
  135. resource_size_t iosize;
  136. resource_size_t irq;
  137. };
  138. struct platform_device *__init imx_add_imx_uart_1irq(
  139. const struct imx_imx_uart_1irq_data *data,
  140. const struct imxuart_platform_data *pdata);
  141. #include <mach/usb.h>
  142. struct imx_imx_udc_data {
  143. resource_size_t iobase;
  144. resource_size_t iosize;
  145. resource_size_t irq0;
  146. resource_size_t irq1;
  147. resource_size_t irq2;
  148. resource_size_t irq3;
  149. resource_size_t irq4;
  150. resource_size_t irq5;
  151. resource_size_t irq6;
  152. };
  153. struct platform_device *__init imx_add_imx_udc(
  154. const struct imx_imx_udc_data *data,
  155. const struct imxusb_platform_data *pdata);
  156. #include <mach/ipu.h>
  157. #include <mach/mx3fb.h>
  158. #include <mach/mx3_camera.h>
  159. struct imx_ipu_core_data {
  160. resource_size_t iobase;
  161. resource_size_t synirq;
  162. resource_size_t errirq;
  163. };
  164. struct platform_device *__init imx_add_ipu_core(
  165. const struct imx_ipu_core_data *data,
  166. const struct ipu_platform_data *pdata);
  167. struct platform_device *__init imx_alloc_mx3_camera(
  168. const struct imx_ipu_core_data *data,
  169. const struct mx3_camera_pdata *pdata);
  170. struct platform_device *__init imx_add_mx3_sdc_fb(
  171. const struct imx_ipu_core_data *data,
  172. struct mx3fb_platform_data *pdata);
  173. #include <mach/mx1_camera.h>
  174. struct imx_mx1_camera_data {
  175. resource_size_t iobase;
  176. resource_size_t iosize;
  177. resource_size_t irq;
  178. };
  179. struct platform_device *__init imx_add_mx1_camera(
  180. const struct imx_mx1_camera_data *data,
  181. const struct mx1_camera_pdata *pdata);
  182. #include <mach/mx2_cam.h>
  183. struct imx_mx2_camera_data {
  184. resource_size_t iobasecsi;
  185. resource_size_t iosizecsi;
  186. resource_size_t irqcsi;
  187. resource_size_t iobaseemmaprp;
  188. resource_size_t iosizeemmaprp;
  189. resource_size_t irqemmaprp;
  190. };
  191. struct platform_device *__init imx_add_mx2_camera(
  192. const struct imx_mx2_camera_data *data,
  193. const struct mx2_camera_platform_data *pdata);
  194. #include <mach/mxc_ehci.h>
  195. struct imx_mxc_ehci_data {
  196. int id;
  197. resource_size_t iobase;
  198. resource_size_t irq;
  199. };
  200. struct platform_device *__init imx_add_mxc_ehci(
  201. const struct imx_mxc_ehci_data *data,
  202. const struct mxc_usbh_platform_data *pdata);
  203. #include <mach/mmc.h>
  204. struct imx_mxc_mmc_data {
  205. int id;
  206. resource_size_t iobase;
  207. resource_size_t iosize;
  208. resource_size_t irq;
  209. resource_size_t dmareq;
  210. };
  211. struct platform_device *__init imx_add_mxc_mmc(
  212. const struct imx_mxc_mmc_data *data,
  213. const struct imxmmc_platform_data *pdata);
  214. #include <mach/mxc_nand.h>
  215. struct imx_mxc_nand_data {
  216. /*
  217. * id is traditionally 0, but -1 is more appropriate. We use -1 for new
  218. * machines but don't change existing devices as the nand device usually
  219. * appears in the kernel command line to pass its partitioning.
  220. */
  221. int id;
  222. resource_size_t iobase;
  223. resource_size_t iosize;
  224. resource_size_t axibase;
  225. resource_size_t irq;
  226. };
  227. struct platform_device *__init imx_add_mxc_nand(
  228. const struct imx_mxc_nand_data *data,
  229. const struct mxc_nand_platform_data *pdata);
  230. struct imx_mxc_pwm_data {
  231. int id;
  232. resource_size_t iobase;
  233. resource_size_t iosize;
  234. resource_size_t irq;
  235. };
  236. struct platform_device *__init imx_add_mxc_pwm(
  237. const struct imx_mxc_pwm_data *data);
  238. /* mxc_rtc */
  239. struct imx_mxc_rtc_data {
  240. resource_size_t iobase;
  241. resource_size_t irq;
  242. };
  243. struct platform_device *__init imx_add_mxc_rtc(
  244. const struct imx_mxc_rtc_data *data);
  245. /* mxc_w1 */
  246. struct imx_mxc_w1_data {
  247. resource_size_t iobase;
  248. };
  249. struct platform_device *__init imx_add_mxc_w1(
  250. const struct imx_mxc_w1_data *data);
  251. #include <mach/esdhc.h>
  252. struct imx_sdhci_esdhc_imx_data {
  253. const char *devid;
  254. int id;
  255. resource_size_t iobase;
  256. resource_size_t irq;
  257. };
  258. struct platform_device *__init imx_add_sdhci_esdhc_imx(
  259. const struct imx_sdhci_esdhc_imx_data *data,
  260. const struct esdhc_platform_data *pdata);
  261. #include <mach/spi.h>
  262. struct imx_spi_imx_data {
  263. const char *devid;
  264. int id;
  265. resource_size_t iobase;
  266. resource_size_t iosize;
  267. int irq;
  268. };
  269. struct platform_device *__init imx_add_spi_imx(
  270. const struct imx_spi_imx_data *data,
  271. const struct spi_imx_master *pdata);
  272. struct platform_device *imx_add_imx_dma(void);
  273. struct platform_device *imx_add_imx_sdma(char *name,
  274. resource_size_t iobase, int irq, struct sdma_platform_data *pdata);