blob: 2f7b2d3c2b184f9717307076d281c82619f628c8 [file] [log] [blame]
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -05001#ifndef __ASM_MACH_MMP2_H
2#define __ASM_MACH_MMP2_H
3
Zhangfei Gaobfed3452011-06-20 22:11:52 +08004#include <linux/platform_data/pxa_sdhci.h>
Zhangfei Gao5382f412010-09-29 16:18:51 -04005
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>
Sebastian Andrzej Siewiorb4593962011-02-23 12:38:16 +010014#include <linux/i2c/pxa-i2c.h>
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050015#include <mach/devices.h>
Leo Yan101bf4c2011-08-15 11:09:53 +080016#include <mach/sram.h>
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050017
18extern struct pxa_device_desc mmp2_device_uart1;
19extern struct pxa_device_desc mmp2_device_uart2;
20extern struct pxa_device_desc mmp2_device_uart3;
21extern struct pxa_device_desc mmp2_device_uart4;
22extern struct pxa_device_desc mmp2_device_twsi1;
23extern struct pxa_device_desc mmp2_device_twsi2;
24extern struct pxa_device_desc mmp2_device_twsi3;
25extern struct pxa_device_desc mmp2_device_twsi4;
26extern struct pxa_device_desc mmp2_device_twsi5;
27extern struct pxa_device_desc mmp2_device_twsi6;
Zhangfei Gao5382f412010-09-29 16:18:51 -040028extern struct pxa_device_desc mmp2_device_sdh0;
29extern struct pxa_device_desc mmp2_device_sdh1;
30extern struct pxa_device_desc mmp2_device_sdh2;
31extern struct pxa_device_desc mmp2_device_sdh3;
Leo Yan101bf4c2011-08-15 11:09:53 +080032extern struct pxa_device_desc mmp2_device_asram;
Leo Yanbca7ab32011-08-15 11:09:54 +080033extern struct pxa_device_desc mmp2_device_isram;
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050034
35static inline int mmp2_add_uart(int id)
36{
37 struct pxa_device_desc *d = NULL;
38
39 switch (id) {
40 case 1: d = &mmp2_device_uart1; break;
41 case 2: d = &mmp2_device_uart2; break;
42 case 3: d = &mmp2_device_uart3; break;
43 case 4: d = &mmp2_device_uart4; break;
44 default:
45 return -EINVAL;
46 }
47
48 return pxa_register_device(d, NULL, 0);
49}
50
51static inline int mmp2_add_twsi(int id, struct i2c_pxa_platform_data *data,
52 struct i2c_board_info *info, unsigned size)
53{
54 struct pxa_device_desc *d = NULL;
55 int ret;
56
57 switch (id) {
Haojian Zhuangfed24052010-04-28 15:34:04 -040058 case 1: d = &mmp2_device_twsi1; break;
59 case 2: d = &mmp2_device_twsi2; break;
60 case 3: d = &mmp2_device_twsi3; break;
61 case 4: d = &mmp2_device_twsi4; break;
62 case 5: d = &mmp2_device_twsi5; break;
63 case 6: d = &mmp2_device_twsi6; break;
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050064 default:
65 return -EINVAL;
66 }
67
Haojian Zhuangfed24052010-04-28 15:34:04 -040068 ret = i2c_register_board_info(id - 1, info, size);
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -050069 if (ret)
70 return ret;
71
72 return pxa_register_device(d, data, sizeof(*data));
73}
74
Zhangfei Gao5382f412010-09-29 16:18:51 -040075static inline int mmp2_add_sdhost(int id, struct sdhci_pxa_platdata *data)
76{
77 struct pxa_device_desc *d = NULL;
78
79 switch (id) {
80 case 0: d = &mmp2_device_sdh0; break;
81 case 1: d = &mmp2_device_sdh1; break;
82 case 2: d = &mmp2_device_sdh2; break;
83 case 3: d = &mmp2_device_sdh3; break;
84 default:
85 return -EINVAL;
86 }
87
88 return pxa_register_device(d, data, sizeof(*data));
89}
90
Leo Yan101bf4c2011-08-15 11:09:53 +080091static inline int mmp2_add_asram(struct sram_platdata *data)
92{
93 return pxa_register_device(&mmp2_device_asram, data, sizeof(*data));
94}
95
Leo Yanbca7ab32011-08-15 11:09:54 +080096static inline int mmp2_add_isram(struct sram_platdata *data)
97{
98 return pxa_register_device(&mmp2_device_isram, data, sizeof(*data));
99}
100
Haojian Zhuang2f7e8fa2009-12-04 09:41:28 -0500101#endif /* __ASM_MACH_MMP2_H */
102