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