1#ifndef __ASM_MACH_PXA168_H
2#define __ASM_MACH_PXA168_H
3
4#include <linux/reboot.h>
5
6extern void pxa168_timer_init(void);
7extern void __init icu_init_irq(void);
8extern void __init pxa168_init_irq(void);
9extern void pxa168_restart(enum reboot_mode, const char *);
10extern void pxa168_clear_keypad_wakeup(void);
11
12#include <linux/i2c.h>
13#include <linux/i2c/pxa-i2c.h>
14#include <mach/devices.h>
15#include <linux/platform_data/mtd-nand-pxa3xx.h>
16#include <video/pxa168fb.h>
17#include <linux/platform_data/keypad-pxa27x.h>
18#include <mach/cputype.h>
19#include <linux/pxa168_eth.h>
20#include <linux/platform_data/mv_usb.h>
21
22extern struct pxa_device_desc pxa168_device_uart1;
23extern struct pxa_device_desc pxa168_device_uart2;
24extern struct pxa_device_desc pxa168_device_uart3;
25extern struct pxa_device_desc pxa168_device_twsi0;
26extern struct pxa_device_desc pxa168_device_twsi1;
27extern struct pxa_device_desc pxa168_device_pwm1;
28extern struct pxa_device_desc pxa168_device_pwm2;
29extern struct pxa_device_desc pxa168_device_pwm3;
30extern struct pxa_device_desc pxa168_device_pwm4;
31extern struct pxa_device_desc pxa168_device_ssp1;
32extern struct pxa_device_desc pxa168_device_ssp2;
33extern struct pxa_device_desc pxa168_device_ssp3;
34extern struct pxa_device_desc pxa168_device_ssp4;
35extern struct pxa_device_desc pxa168_device_ssp5;
36extern struct pxa_device_desc pxa168_device_nand;
37extern struct pxa_device_desc pxa168_device_fb;
38extern struct pxa_device_desc pxa168_device_keypad;
39extern struct pxa_device_desc pxa168_device_eth;
40
41/* pdata can be NULL */
42extern int __init pxa168_add_usb_host(struct mv_usb_platform_data *pdata);
43
44
45extern struct platform_device pxa168_device_gpio;
46
47static inline int pxa168_add_uart(int id)
48{
49	struct pxa_device_desc *d = NULL;
50
51	switch (id) {
52	case 1: d = &pxa168_device_uart1; break;
53	case 2: d = &pxa168_device_uart2; break;
54	case 3: d = &pxa168_device_uart3; break;
55	}
56
57	if (d == NULL)
58		return -EINVAL;
59
60	return pxa_register_device(d, NULL, 0);
61}
62
63static inline int pxa168_add_twsi(int id, struct i2c_pxa_platform_data *data,
64				  struct i2c_board_info *info, unsigned size)
65{
66	struct pxa_device_desc *d = NULL;
67	int ret;
68
69	switch (id) {
70	case 0: d = &pxa168_device_twsi0; break;
71	case 1: d = &pxa168_device_twsi1; break;
72	default:
73		return -EINVAL;
74	}
75
76	ret = i2c_register_board_info(id, info, size);
77	if (ret)
78		return ret;
79
80	return pxa_register_device(d, data, sizeof(*data));
81}
82
83static inline int pxa168_add_pwm(int id)
84{
85	struct pxa_device_desc *d = NULL;
86
87	switch (id) {
88	case 1: d = &pxa168_device_pwm1; break;
89	case 2: d = &pxa168_device_pwm2; break;
90	case 3: d = &pxa168_device_pwm3; break;
91	case 4: d = &pxa168_device_pwm4; break;
92	default:
93		return -EINVAL;
94	}
95
96	return pxa_register_device(d, NULL, 0);
97}
98
99static inline int pxa168_add_ssp(int id)
100{
101	struct pxa_device_desc *d = NULL;
102
103	switch (id) {
104	case 1: d = &pxa168_device_ssp1; break;
105	case 2: d = &pxa168_device_ssp2; break;
106	case 3: d = &pxa168_device_ssp3; break;
107	case 4: d = &pxa168_device_ssp4; break;
108	case 5: d = &pxa168_device_ssp5; break;
109	default:
110		return -EINVAL;
111	}
112	return pxa_register_device(d, NULL, 0);
113}
114
115static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info)
116{
117	return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
118}
119
120static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi)
121{
122	return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi));
123}
124
125static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data)
126{
127	if (cpu_is_pxa168())
128		data->clear_wakeup_event = pxa168_clear_keypad_wakeup;
129
130	return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data));
131}
132
133static inline int pxa168_add_eth(struct pxa168_eth_platform_data *data)
134{
135	return pxa_register_device(&pxa168_device_eth, data, sizeof(*data));
136}
137#endif /* __ASM_MACH_PXA168_H */
138