ARM: imx: change the way flexcan devices are registered
[pandora-kernel.git] / arch / arm / plat-mxc / include / mach / devices-common.h
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
13 struct platform_device *imx_add_platform_device_dmamask(
14                 const char *name, int id,
15                 const struct resource *res, unsigned int num_resources,
16                 const void *data, size_t size_data, u64 dmamask);
17
18 static inline struct platform_device *imx_add_platform_device(
19                 const char *name, int id,
20                 const struct resource *res, unsigned int num_resources,
21                 const void *data, size_t size_data)
22 {
23         return imx_add_platform_device_dmamask(
24                         name, id, res, num_resources, data, size_data, 0);
25 }
26
27 #include <linux/fec.h>
28 struct imx_fec_data {
29         resource_size_t iobase;
30         resource_size_t irq;
31 };
32 struct platform_device *__init imx_add_fec(
33                 const struct imx_fec_data *data,
34                 const struct fec_platform_data *pdata);
35
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
47 #include <linux/gpio_keys.h>
48 struct platform_device *__init imx_add_gpio_keys(
49                 const struct gpio_keys_platform_data *pdata);
50
51 struct imx_imx2_wdt_data {
52         resource_size_t iobase;
53 };
54 struct platform_device *__init imx_add_imx2_wdt(
55                 const struct imx_imx2_wdt_data *data);
56
57 #include <mach/i2c.h>
58 struct imx_imx_i2c_data {
59         int id;
60         resource_size_t iobase;
61         resource_size_t iosize;
62         resource_size_t irq;
63 };
64 struct platform_device *__init imx_add_imx_i2c(
65                 const struct imx_imx_i2c_data *data,
66                 const struct imxi2c_platform_data *pdata);
67
68 #include <mach/ssi.h>
69 struct imx_imx_ssi_data {
70         int id;
71         resource_size_t iobase;
72         resource_size_t iosize;
73         resource_size_t irq;
74         resource_size_t dmatx0;
75         resource_size_t dmarx0;
76         resource_size_t dmatx1;
77         resource_size_t dmarx1;
78 };
79 struct platform_device *__init imx_add_imx_ssi(
80                 const struct imx_imx_ssi_data *data,
81                 const struct imx_ssi_platform_data *pdata);
82
83 #include <mach/imx-uart.h>
84 struct imx_imx_uart_3irq_data {
85         int id;
86         resource_size_t iobase;
87         resource_size_t iosize;
88         resource_size_t irqrx;
89         resource_size_t irqtx;
90         resource_size_t irqrts;
91 };
92 struct platform_device *__init imx_add_imx_uart_3irq(
93                 const struct imx_imx_uart_3irq_data *data,
94                 const struct imxuart_platform_data *pdata);
95
96 struct imx_imx_uart_1irq_data {
97         int id;
98         resource_size_t iobase;
99         resource_size_t iosize;
100         resource_size_t irq;
101 };
102 struct platform_device *__init imx_add_imx_uart_1irq(
103                 const struct imx_imx_uart_1irq_data *data,
104                 const struct imxuart_platform_data *pdata);
105
106 #include <mach/usb.h>
107 struct imx_imx_udc_data {
108         resource_size_t iobase;
109         resource_size_t iosize;
110         resource_size_t irq0;
111         resource_size_t irq1;
112         resource_size_t irq2;
113         resource_size_t irq3;
114         resource_size_t irq4;
115         resource_size_t irq5;
116         resource_size_t irq6;
117 };
118 struct platform_device *__init imx_add_imx_udc(
119                 const struct imx_imx_udc_data *data,
120                 const struct imxusb_platform_data *pdata);
121
122 #include <mach/mx1_camera.h>
123 struct imx_mx1_camera_data {
124         resource_size_t iobase;
125         resource_size_t iosize;
126         resource_size_t irq;
127 };
128 struct platform_device *__init imx_add_mx1_camera(
129                 const struct imx_mx1_camera_data *data,
130                 const struct mx1_camera_pdata *pdata);
131
132 #include <mach/mx2_cam.h>
133 struct imx_mx2_camera_data {
134         resource_size_t iobasecsi;
135         resource_size_t iosizecsi;
136         resource_size_t irqcsi;
137         resource_size_t iobaseemmaprp;
138         resource_size_t iosizeemmaprp;
139         resource_size_t irqemmaprp;
140 };
141 struct platform_device *__init imx_add_mx2_camera(
142                 const struct imx_mx2_camera_data *data,
143                 const struct mx2_camera_platform_data *pdata);
144
145 #include <mach/mxc_nand.h>
146 struct imx_mxc_nand_data {
147         /*
148          * id is traditionally 0, but -1 is more appropriate.  We use -1 for new
149          * machines but don't change existing devices as the nand device usually
150          * appears in the kernel command line to pass its partitioning.
151          */
152         int id;
153         resource_size_t iobase;
154         resource_size_t iosize;
155         resource_size_t axibase;
156         resource_size_t irq;
157 };
158 struct platform_device *__init imx_add_mxc_nand(
159                 const struct imx_mxc_nand_data *data,
160                 const struct mxc_nand_platform_data *pdata);
161
162 struct imx_mxc_w1_data {
163         resource_size_t iobase;
164 };
165 struct platform_device *__init imx_add_mxc_w1(
166                 const struct imx_mxc_w1_data *data);
167
168 #include <mach/spi.h>
169 struct imx_spi_imx_data {
170         const char *devid;
171         int id;
172         resource_size_t iobase;
173         resource_size_t iosize;
174         int irq;
175 };
176 struct platform_device *__init imx_add_spi_imx(
177                 const struct imx_spi_imx_data *data,
178                 const struct spi_imx_master *pdata);
179
180 #include <mach/esdhc.h>
181 struct imx_esdhc_imx_data {
182         int id;
183         resource_size_t iobase;
184         resource_size_t irq;
185 };
186 struct platform_device *__init imx_add_esdhc(
187                 const struct imx_esdhc_imx_data *data,
188                 const struct esdhc_platform_data *pdata);