blob: 4aec493640b41c1656bbdded16c1b55e0c2f4f60 [file] [log] [blame]
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -05001#ifndef __ASM_MACH_MMP2_H
2#define __ASM_MACH_MMP2_H
3
Zhangfei Gao5382f412010-09-29 16:18:51 -04004#include <plat/sdhci.h>
5
Eric Miao27287012010-07-15 22:22:33 +08006struct sys_timer;
7
8extern struct sys_timer mmp2_timer;
9extern void __init mmp2_init_icu(void);
10extern void __init mmp2_init_irq(void);
11extern void mmp2_clear_pmic_int(void);
12
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050013#include <linux/i2c.h>
14#include <mach/devices.h>
15#include <plat/i2c.h>
16
17extern struct pxa_device_desc mmp2_device_uart1;
18extern struct pxa_device_desc mmp2_device_uart2;
19extern struct pxa_device_desc mmp2_device_uart3;
20extern struct pxa_device_desc mmp2_device_uart4;
21extern struct pxa_device_desc mmp2_device_twsi1;
22extern struct pxa_device_desc mmp2_device_twsi2;
23extern struct pxa_device_desc mmp2_device_twsi3;
24extern struct pxa_device_desc mmp2_device_twsi4;
25extern struct pxa_device_desc mmp2_device_twsi5;
26extern struct pxa_device_desc mmp2_device_twsi6;
Zhangfei Gao5382f412010-09-29 16:18:51 -040027extern struct pxa_device_desc mmp2_device_sdh0;
28extern struct pxa_device_desc mmp2_device_sdh1;
29extern struct pxa_device_desc mmp2_device_sdh2;
30extern struct pxa_device_desc mmp2_device_sdh3;
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050031
32static inline int mmp2_add_uart(int id)
33{
34 struct pxa_device_desc *d = NULL;
35
36 switch (id) {
37 case 1: d = &mmp2_device_uart1; break;
38 case 2: d = &mmp2_device_uart2; break;
39 case 3: d = &mmp2_device_uart3; break;
40 case 4: d = &mmp2_device_uart4; break;
41 default:
42 return -EINVAL;
43 }
44
45 return pxa_register_device(d, NULL, 0);
46}
47
48static inline int mmp2_add_twsi(int id, struct i2c_pxa_platform_data *data,
49 struct i2c_board_info *info, unsigned size)
50{
51 struct pxa_device_desc *d = NULL;
52 int ret;
53
54 switch (id) {
Haojian Zhuangfed24052010-04-28 15:34:04 -040055 case 1: d = &mmp2_device_twsi1; break;
56 case 2: d = &mmp2_device_twsi2; break;
57 case 3: d = &mmp2_device_twsi3; break;
58 case 4: d = &mmp2_device_twsi4; break;
59 case 5: d = &mmp2_device_twsi5; break;
60 case 6: d = &mmp2_device_twsi6; break;
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050061 default:
62 return -EINVAL;
63 }
64
Haojian Zhuangfed24052010-04-28 15:34:04 -040065 ret = i2c_register_board_info(id - 1, info, size);
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050066 if (ret)
67 return ret;
68
69 return pxa_register_device(d, data, sizeof(*data));
70}
71
Zhangfei Gao5382f412010-09-29 16:18:51 -040072static inline int mmp2_add_sdhost(int id, struct sdhci_pxa_platdata *data)
73{
74 struct pxa_device_desc *d = NULL;
75
76 switch (id) {
77 case 0: d = &mmp2_device_sdh0; break;
78 case 1: d = &mmp2_device_sdh1; break;
79 case 2: d = &mmp2_device_sdh2; break;
80 case 3: d = &mmp2_device_sdh3; break;
81 default:
82 return -EINVAL;
83 }
84
85 return pxa_register_device(d, data, sizeof(*data));
86}
87
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050088#endif /* __ASM_MACH_MMP2_H */
89