Merge branch 'for-2.6.37' into HEAD
[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(const char *name, int id,
14                 const struct resource *res, unsigned int num_resources,
15                 const void *data, size_t size_data);
16
17 #include <linux/fec.h>
18 struct imx_fec_data {
19         resource_size_t iobase;
20         resource_size_t irq;
21 };
22 struct platform_device *__init imx_add_fec(
23                 const struct imx_fec_data *data,
24                 const struct fec_platform_data *pdata);
25
26 #include <linux/can/platform/flexcan.h>
27 struct platform_device *__init imx_add_flexcan(int id,
28                 resource_size_t iobase, resource_size_t iosize,
29                 resource_size_t irq,
30                 const struct flexcan_platform_data *pdata);
31
32 #include <linux/gpio_keys.h>
33 struct platform_device *__init imx_add_gpio_keys(
34                 const struct gpio_keys_platform_data *pdata);
35
36 #include <mach/i2c.h>
37 struct imx_imx_i2c_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_imx_i2c(
44                 const struct imx_imx_i2c_data *data,
45                 const struct imxi2c_platform_data *pdata);
46
47 #include <mach/ssi.h>
48 struct imx_imx_ssi_data {
49         int id;
50         resource_size_t iobase;
51         resource_size_t iosize;
52         resource_size_t irq;
53         resource_size_t dmatx0;
54         resource_size_t dmarx0;
55         resource_size_t dmatx1;
56         resource_size_t dmarx1;
57 };
58 struct platform_device *__init imx_add_imx_ssi(
59                 const struct imx_imx_ssi_data *data,
60                 const struct imx_ssi_platform_data *pdata);
61
62 #include <mach/imx-uart.h>
63 struct imx_imx_uart_3irq_data {
64         int id;
65         resource_size_t iobase;
66         resource_size_t iosize;
67         resource_size_t irqrx;
68         resource_size_t irqtx;
69         resource_size_t irqrts;
70 };
71 struct platform_device *__init imx_add_imx_uart_3irq(
72                 const struct imx_imx_uart_3irq_data *data,
73                 const struct imxuart_platform_data *pdata);
74
75 struct imx_imx_uart_1irq_data {
76         int id;
77         resource_size_t iobase;
78         resource_size_t iosize;
79         resource_size_t irq;
80 };
81 struct platform_device *__init imx_add_imx_uart_1irq(
82                 const struct imx_imx_uart_1irq_data *data,
83                 const struct imxuart_platform_data *pdata);
84
85 #include <mach/mxc_nand.h>
86 struct imx_mxc_nand_data {
87         /*
88          * id is traditionally 0, but -1 is more appropriate.  We use -1 for new
89          * machines but don't change existing devices as the nand device usually
90          * appears in the kernel command line to pass its partitioning.
91          */
92         int id;
93         resource_size_t iobase;
94         resource_size_t iosize;
95         resource_size_t axibase;
96         resource_size_t irq;
97 };
98 struct platform_device *__init imx_add_mxc_nand(
99                 const struct imx_mxc_nand_data *data,
100                 const struct mxc_nand_platform_data *pdata);
101
102 #include <mach/spi.h>
103 struct imx_spi_imx_data {
104         const char *devid;
105         int id;
106         resource_size_t iobase;
107         resource_size_t iosize;
108         int irq;
109 };
110 struct platform_device *__init imx_add_spi_imx(
111                 const struct imx_spi_imx_data *data,
112                 const struct spi_imx_master *pdata);
113
114 #include <mach/esdhc.h>
115 struct imx_esdhc_imx_data {
116         int id;
117         resource_size_t iobase;
118         resource_size_t irq;
119 };
120 struct platform_device *__init imx_add_esdhc(
121                 const struct imx_esdhc_imx_data *data,
122                 const struct esdhc_platform_data *pdata);