Merge branch 'for-2.6.37/misc' of git://git.kernel.dk/linux-2.6-block
[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 <mach/i2c.h>
33 struct imx_imx_i2c_data {
34         int id;
35         resource_size_t iobase;
36         resource_size_t iosize;
37         resource_size_t irq;
38 };
39 struct platform_device *__init imx_add_imx_i2c(
40                 const struct imx_imx_i2c_data *data,
41                 const struct imxi2c_platform_data *pdata);
42
43 #include <mach/ssi.h>
44 struct imx_imx_ssi_data {
45         int id;
46         resource_size_t iobase;
47         resource_size_t iosize;
48         resource_size_t irq;
49         resource_size_t dmatx0;
50         resource_size_t dmarx0;
51         resource_size_t dmatx1;
52         resource_size_t dmarx1;
53 };
54 struct platform_device *__init imx_add_imx_ssi(
55                 const struct imx_imx_ssi_data *data,
56                 const struct imx_ssi_platform_data *pdata);
57
58 #include <mach/imx-uart.h>
59 struct imx_imx_uart_3irq_data {
60         int id;
61         resource_size_t iobase;
62         resource_size_t iosize;
63         resource_size_t irqrx;
64         resource_size_t irqtx;
65         resource_size_t irqrts;
66 };
67 struct platform_device *__init imx_add_imx_uart_3irq(
68                 const struct imx_imx_uart_3irq_data *data,
69                 const struct imxuart_platform_data *pdata);
70
71 struct imx_imx_uart_1irq_data {
72         int id;
73         resource_size_t iobase;
74         resource_size_t iosize;
75         resource_size_t irq;
76 };
77 struct platform_device *__init imx_add_imx_uart_1irq(
78                 const struct imx_imx_uart_1irq_data *data,
79                 const struct imxuart_platform_data *pdata);
80
81 #include <mach/mxc_nand.h>
82 struct imx_mxc_nand_data {
83         /*
84          * id is traditionally 0, but -1 is more appropriate.  We use -1 for new
85          * machines but don't change existing devices as the nand device usually
86          * appears in the kernel command line to pass its partitioning.
87          */
88         int id;
89         resource_size_t iobase;
90         resource_size_t iosize;
91         resource_size_t axibase;
92         resource_size_t irq;
93 };
94 struct platform_device *__init imx_add_mxc_nand(
95                 const struct imx_mxc_nand_data *data,
96                 const struct mxc_nand_platform_data *pdata);
97
98 #include <mach/spi.h>
99 struct imx_spi_imx_data {
100         const char *devid;
101         int id;
102         resource_size_t iobase;
103         resource_size_t iosize;
104         int irq;
105 };
106 struct platform_device *__init imx_add_spi_imx(
107                 const struct imx_spi_imx_data *data,
108                 const struct spi_imx_master *pdata);
109
110 #include <mach/esdhc.h>
111 struct imx_esdhc_imx_data {
112         int id;
113         resource_size_t iobase;
114         resource_size_t irq;
115 };
116 struct platform_device *__init imx_add_esdhc(
117                 const struct imx_esdhc_imx_data *data,
118                 const struct esdhc_platform_data *pdata);