blob: 705e963574d9171e0e02bded04b314b2106efd9b [file] [log] [blame]
Eric Miao49cbe782009-01-20 14:15:18 +08001#ifndef __ASM_MACH_PXA168_H
2#define __ASM_MACH_PXA168_H
3
Eric Miao27287012010-07-15 22:22:33 +08004struct sys_timer;
5
6extern struct sys_timer pxa168_timer;
7extern void __init pxa168_init_irq(void);
Mark F. Brownab5739a2010-09-03 18:28:10 -04008extern void pxa168_clear_keypad_wakeup(void);
Eric Miao27287012010-07-15 22:22:33 +08009
Eric Miao1a779202009-04-13 15:34:54 +080010#include <linux/i2c.h>
Sebastian Andrzej Siewiorb4593962011-02-23 12:38:16 +010011#include <linux/i2c/pxa-i2c.h>
Eric Miao49cbe782009-01-20 14:15:18 +080012#include <mach/devices.h>
Haojian Zhuanga0f266c2009-10-13 15:24:55 +080013#include <plat/pxa3xx_nand.h>
Mark F. Brown58cf68b2010-08-25 23:51:54 -040014#include <video/pxa168fb.h>
Mark F. Brown6d109462010-09-03 18:28:07 -040015#include <plat/pxa27x_keypad.h>
Mark F. Brownab5739a2010-09-03 18:28:10 -040016#include <mach/cputype.h>
Eric Miao49cbe782009-01-20 14:15:18 +080017
18extern struct pxa_device_desc pxa168_device_uart1;
19extern struct pxa_device_desc pxa168_device_uart2;
Tanmay Upadhyay26407f82011-05-02 11:29:58 +053020extern struct pxa_device_desc pxa168_device_uart3;
Eric Miao1a779202009-04-13 15:34:54 +080021extern struct pxa_device_desc pxa168_device_twsi0;
22extern struct pxa_device_desc pxa168_device_twsi1;
Eric Miaoa27ba762009-04-13 18:29:52 +080023extern struct pxa_device_desc pxa168_device_pwm1;
24extern struct pxa_device_desc pxa168_device_pwm2;
25extern struct pxa_device_desc pxa168_device_pwm3;
26extern struct pxa_device_desc pxa168_device_pwm4;
Haojian Zhuang7e499222010-03-19 11:53:17 -040027extern struct pxa_device_desc pxa168_device_ssp1;
28extern struct pxa_device_desc pxa168_device_ssp2;
29extern struct pxa_device_desc pxa168_device_ssp3;
30extern struct pxa_device_desc pxa168_device_ssp4;
31extern struct pxa_device_desc pxa168_device_ssp5;
Haojian Zhuanga0f266c2009-10-13 15:24:55 +080032extern struct pxa_device_desc pxa168_device_nand;
Mark F. Brown58cf68b2010-08-25 23:51:54 -040033extern struct pxa_device_desc pxa168_device_fb;
Mark F. Brown6d109462010-09-03 18:28:07 -040034extern struct pxa_device_desc pxa168_device_keypad;
Eric Miao49cbe782009-01-20 14:15:18 +080035
36static inline int pxa168_add_uart(int id)
37{
38 struct pxa_device_desc *d = NULL;
39
40 switch (id) {
41 case 1: d = &pxa168_device_uart1; break;
42 case 2: d = &pxa168_device_uart2; break;
Tanmay Upadhyay26407f82011-05-02 11:29:58 +053043 case 3: d = &pxa168_device_uart3; break;
Eric Miao49cbe782009-01-20 14:15:18 +080044 }
45
46 if (d == NULL)
47 return -EINVAL;
48
49 return pxa_register_device(d, NULL, 0);
50}
Eric Miao1a779202009-04-13 15:34:54 +080051
52static inline int pxa168_add_twsi(int id, struct i2c_pxa_platform_data *data,
53 struct i2c_board_info *info, unsigned size)
54{
55 struct pxa_device_desc *d = NULL;
56 int ret;
57
58 switch (id) {
59 case 0: d = &pxa168_device_twsi0; break;
60 case 1: d = &pxa168_device_twsi1; break;
61 default:
62 return -EINVAL;
63 }
64
65 ret = i2c_register_board_info(id, info, size);
66 if (ret)
67 return ret;
68
69 return pxa_register_device(d, data, sizeof(*data));
70}
Eric Miaoa27ba762009-04-13 18:29:52 +080071
72static inline int pxa168_add_pwm(int id)
73{
74 struct pxa_device_desc *d = NULL;
75
76 switch (id) {
77 case 1: d = &pxa168_device_pwm1; break;
78 case 2: d = &pxa168_device_pwm2; break;
79 case 3: d = &pxa168_device_pwm3; break;
80 case 4: d = &pxa168_device_pwm4; break;
81 default:
82 return -EINVAL;
83 }
84
85 return pxa_register_device(d, NULL, 0);
86}
Haojian Zhuanga0f266c2009-10-13 15:24:55 +080087
Haojian Zhuang7e499222010-03-19 11:53:17 -040088static inline int pxa168_add_ssp(int id)
89{
90 struct pxa_device_desc *d = NULL;
91
92 switch (id) {
93 case 1: d = &pxa168_device_ssp1; break;
94 case 2: d = &pxa168_device_ssp2; break;
95 case 3: d = &pxa168_device_ssp3; break;
96 case 4: d = &pxa168_device_ssp4; break;
97 case 5: d = &pxa168_device_ssp5; break;
98 default:
99 return -EINVAL;
100 }
101 return pxa_register_device(d, NULL, 0);
102}
103
Haojian Zhuanga0f266c2009-10-13 15:24:55 +0800104static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info)
105{
106 return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
107}
Mark F. Brown58cf68b2010-08-25 23:51:54 -0400108
109static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi)
110{
111 return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi));
112}
113
Mark F. Brown6d109462010-09-03 18:28:07 -0400114static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data)
115{
Mark F. Brownab5739a2010-09-03 18:28:10 -0400116 if (cpu_is_pxa168())
117 data->clear_wakeup_event = pxa168_clear_keypad_wakeup;
118
Mark F. Brown6d109462010-09-03 18:28:07 -0400119 return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data));
120}
121
Eric Miao49cbe782009-01-20 14:15:18 +0800122#endif /* __ASM_MACH_PXA168_H */