2009-01-20 14:15:18 +08:00
# ifndef __ASM_MACH_PXA168_H
# define __ASM_MACH_PXA168_H
2013-07-08 16:01:40 -07:00
# include <linux/reboot.h>
2012-11-08 12:40:59 -07:00
extern void pxa168_timer_init ( void ) ;
2013-04-21 13:21:48 +08:00
extern void __init icu_init_irq ( void ) ;
2010-07-15 22:22:33 +08:00
extern void __init pxa168_init_irq ( void ) ;
2013-07-08 16:01:40 -07:00
extern void pxa168_restart ( enum reboot_mode , const char * ) ;
2010-09-03 18:28:10 -04:00
extern void pxa168_clear_keypad_wakeup ( void ) ;
2010-07-15 22:22:33 +08:00
2009-04-13 15:34:54 +08:00
# include <linux/i2c.h>
2011-02-23 12:38:16 +01:00
# include <linux/i2c/pxa-i2c.h>
2012-08-24 15:16:48 +02:00
# include <linux/platform_data/mtd-nand-pxa3xx.h>
2010-08-25 23:51:54 -04:00
# include <video/pxa168fb.h>
2012-08-24 15:16:48 +02:00
# include <linux/platform_data/keypad-pxa27x.h>
2011-05-02 11:29:59 +05:30
# include <linux/pxa168_eth.h>
2012-05-03 14:19:15 +08:00
# include <linux/platform_data/mv_usb.h>
2009-01-20 14:15:18 +08:00
2014-04-15 20:38:32 +02:00
# include "devices.h"
# include "cputype.h"
2009-01-20 14:15:18 +08:00
extern struct pxa_device_desc pxa168_device_uart1 ;
extern struct pxa_device_desc pxa168_device_uart2 ;
2011-05-02 11:29:58 +05:30
extern struct pxa_device_desc pxa168_device_uart3 ;
2009-04-13 15:34:54 +08:00
extern struct pxa_device_desc pxa168_device_twsi0 ;
extern struct pxa_device_desc pxa168_device_twsi1 ;
2009-04-13 18:29:52 +08:00
extern struct pxa_device_desc pxa168_device_pwm1 ;
extern struct pxa_device_desc pxa168_device_pwm2 ;
extern struct pxa_device_desc pxa168_device_pwm3 ;
extern struct pxa_device_desc pxa168_device_pwm4 ;
2010-03-19 11:53:17 -04:00
extern struct pxa_device_desc pxa168_device_ssp1 ;
extern struct pxa_device_desc pxa168_device_ssp2 ;
extern struct pxa_device_desc pxa168_device_ssp3 ;
extern struct pxa_device_desc pxa168_device_ssp4 ;
extern struct pxa_device_desc pxa168_device_ssp5 ;
2009-10-13 15:24:55 +08:00
extern struct pxa_device_desc pxa168_device_nand ;
2010-08-25 23:51:54 -04:00
extern struct pxa_device_desc pxa168_device_fb ;
2010-09-03 18:28:07 -04:00
extern struct pxa_device_desc pxa168_device_keypad ;
2011-05-02 11:29:59 +05:30
extern struct pxa_device_desc pxa168_device_eth ;
2009-01-20 14:15:18 +08:00
2011-07-20 10:00:58 +05:30
/* pdata can be NULL */
2012-05-03 14:19:15 +08:00
extern int __init pxa168_add_usb_host ( struct mv_usb_platform_data * pdata ) ;
2011-07-20 10:00:58 +05:30
2011-10-17 20:37:52 +08:00
extern struct platform_device pxa168_device_gpio ;
2009-01-20 14:15:18 +08:00
static inline int pxa168_add_uart ( int id )
{
struct pxa_device_desc * d = NULL ;
switch ( id ) {
case 1 : d = & pxa168_device_uart1 ; break ;
case 2 : d = & pxa168_device_uart2 ; break ;
2011-05-02 11:29:58 +05:30
case 3 : d = & pxa168_device_uart3 ; break ;
2009-01-20 14:15:18 +08:00
}
if ( d = = NULL )
return - EINVAL ;
return pxa_register_device ( d , NULL , 0 ) ;
}
2009-04-13 15:34:54 +08:00
static inline int pxa168_add_twsi ( int id , struct i2c_pxa_platform_data * data ,
struct i2c_board_info * info , unsigned size )
{
struct pxa_device_desc * d = NULL ;
int ret ;
switch ( id ) {
case 0 : d = & pxa168_device_twsi0 ; break ;
case 1 : d = & pxa168_device_twsi1 ; break ;
default :
return - EINVAL ;
}
ret = i2c_register_board_info ( id , info , size ) ;
if ( ret )
return ret ;
return pxa_register_device ( d , data , sizeof ( * data ) ) ;
}
2009-04-13 18:29:52 +08:00
static inline int pxa168_add_pwm ( int id )
{
struct pxa_device_desc * d = NULL ;
switch ( id ) {
case 1 : d = & pxa168_device_pwm1 ; break ;
case 2 : d = & pxa168_device_pwm2 ; break ;
case 3 : d = & pxa168_device_pwm3 ; break ;
case 4 : d = & pxa168_device_pwm4 ; break ;
default :
return - EINVAL ;
}
return pxa_register_device ( d , NULL , 0 ) ;
}
2009-10-13 15:24:55 +08:00
2010-03-19 11:53:17 -04:00
static inline int pxa168_add_ssp ( int id )
{
struct pxa_device_desc * d = NULL ;
switch ( id ) {
case 1 : d = & pxa168_device_ssp1 ; break ;
case 2 : d = & pxa168_device_ssp2 ; break ;
case 3 : d = & pxa168_device_ssp3 ; break ;
case 4 : d = & pxa168_device_ssp4 ; break ;
case 5 : d = & pxa168_device_ssp5 ; break ;
default :
return - EINVAL ;
}
return pxa_register_device ( d , NULL , 0 ) ;
}
2009-10-13 15:24:55 +08:00
static inline int pxa168_add_nand ( struct pxa3xx_nand_platform_data * info )
{
return pxa_register_device ( & pxa168_device_nand , info , sizeof ( * info ) ) ;
}
2010-08-25 23:51:54 -04:00
static inline int pxa168_add_fb ( struct pxa168fb_mach_info * mi )
{
return pxa_register_device ( & pxa168_device_fb , mi , sizeof ( * mi ) ) ;
}
2010-09-03 18:28:07 -04:00
static inline int pxa168_add_keypad ( struct pxa27x_keypad_platform_data * data )
{
2010-09-03 18:28:10 -04:00
if ( cpu_is_pxa168 ( ) )
data - > clear_wakeup_event = pxa168_clear_keypad_wakeup ;
2010-09-03 18:28:07 -04:00
return pxa_register_device ( & pxa168_device_keypad , data , sizeof ( * data ) ) ;
}
2011-05-02 11:29:59 +05:30
static inline int pxa168_add_eth ( struct pxa168_eth_platform_data * data )
{
return pxa_register_device ( & pxa168_device_eth , data , sizeof ( * data ) ) ;
}
2009-01-20 14:15:18 +08:00
# endif /* __ASM_MACH_PXA168_H */