2010-09-29 19:46:32 +05:30
/*
* Copyright ( C ) ST - Ericsson SA 2010
*
* Author : Rabin Vincent < rabin . vincent @ stericsson . com > for ST - Ericsson
* License terms : GNU General Public License ( GPL ) , version 2.
*/
# ifndef __DEVICES_COMMON_H
# define __DEVICES_COMMON_H
2012-02-06 11:22:26 -08:00
# include <linux/platform_device.h>
# include <linux/dma-mapping.h>
# include <linux/sys_soc.h>
2012-04-03 12:00:18 +01:00
# include <linux/amba/bus.h>
2012-02-06 11:22:26 -08:00
# include <plat/i2c.h>
2012-05-10 10:14:06 +02:00
# include <mach/crypto-ux500.h>
2010-09-29 19:46:32 +05:30
struct spi_master_cntlr ;
static inline struct amba_device *
2012-02-06 11:22:21 -08:00
dbx500_add_msp_spi ( struct device * parent , const char * name ,
resource_size_t base , int irq ,
2010-09-29 19:46:32 +05:30
struct spi_master_cntlr * pdata )
{
2012-04-03 12:00:18 +01:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 ,
pdata , 0 ) ;
2010-09-29 19:46:32 +05:30
}
static inline struct amba_device *
2012-02-06 11:22:21 -08:00
dbx500_add_spi ( struct device * parent , const char * name , resource_size_t base ,
int irq , struct spi_master_cntlr * pdata ,
2011-03-24 16:13:13 +01:00
u32 periphid )
2010-09-29 19:46:32 +05:30
{
2012-04-03 12:00:18 +01:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 ,
pdata , periphid ) ;
2010-09-29 19:46:32 +05:30
}
struct mmci_platform_data ;
static inline struct amba_device *
2012-02-06 11:22:21 -08:00
dbx500_add_sdi ( struct device * parent , const char * name , resource_size_t base ,
int irq , struct mmci_platform_data * pdata , u32 periphid )
2010-09-29 19:46:32 +05:30
{
2012-04-03 12:00:18 +01:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 ,
pdata , periphid ) ;
2010-09-29 19:46:32 +05:30
}
2010-10-14 13:57:59 +02:00
struct amba_pl011_data ;
2010-09-29 19:46:32 +05:30
static inline struct amba_device *
2012-02-06 11:22:21 -08:00
dbx500_add_uart ( struct device * parent , const char * name , resource_size_t base ,
int irq , struct amba_pl011_data * pdata )
2010-09-29 19:46:32 +05:30
{
2012-04-03 12:00:18 +01:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 , pdata , 0 ) ;
2010-09-29 19:46:32 +05:30
}
struct nmk_i2c_controller ;
static inline struct platform_device *
2012-02-06 11:22:21 -08:00
dbx500_add_i2c ( struct device * parent , int id , resource_size_t base , int irq ,
2012-02-06 11:22:26 -08:00
struct nmk_i2c_controller * data )
2010-09-29 19:46:32 +05:30
{
2012-02-06 11:22:26 -08:00
struct resource res [ ] = {
DEFINE_RES_MEM ( base , SZ_4K ) ,
DEFINE_RES_IRQ ( irq ) ,
} ;
struct platform_device_info pdevinfo = {
. parent = parent ,
. name = " nmk-i2c " ,
. id = id ,
. res = res ,
. num_res = ARRAY_SIZE ( res ) ,
. data = data ,
. size_data = sizeof ( * data ) ,
. dma_mask = DMA_BIT_MASK ( 32 ) ,
} ;
return platform_device_register_full ( & pdevinfo ) ;
2010-09-29 19:46:32 +05:30
}
static inline struct amba_device *
2012-02-06 11:22:21 -08:00
dbx500_add_rtc ( struct device * parent , resource_size_t base , int irq )
2010-09-29 19:46:32 +05:30
{
2012-04-03 12:00:18 +01:00
return amba_apb_device_add ( parent , " rtc-pl031 " , base , SZ_4K , irq ,
0 , NULL , 0 ) ;
2010-09-29 19:46:32 +05:30
}
2012-05-10 10:14:06 +02:00
struct cryp_platform_data ;
static inline struct platform_device *
dbx500_add_cryp1 ( struct device * parent , int id , resource_size_t base , int irq ,
struct cryp_platform_data * pdata )
{
struct resource res [ ] = {
DEFINE_RES_MEM ( base , SZ_4K ) ,
DEFINE_RES_IRQ ( irq ) ,
} ;
struct platform_device_info pdevinfo = {
. parent = parent ,
. name = " cryp1 " ,
. id = id ,
. res = res ,
. num_res = ARRAY_SIZE ( res ) ,
. data = pdata ,
. size_data = sizeof ( * pdata ) ,
. dma_mask = DMA_BIT_MASK ( 32 ) ,
} ;
return platform_device_register_full ( & pdevinfo ) ;
}
struct hash_platform_data ;
static inline struct platform_device *
dbx500_add_hash1 ( struct device * parent , int id , resource_size_t base ,
struct hash_platform_data * pdata )
{
struct resource res [ ] = {
DEFINE_RES_MEM ( base , SZ_4K ) ,
} ;
struct platform_device_info pdevinfo = {
. parent = parent ,
. name = " hash1 " ,
. id = id ,
. res = res ,
. num_res = ARRAY_SIZE ( res ) ,
. data = pdata ,
. size_data = sizeof ( * pdata ) ,
. dma_mask = DMA_BIT_MASK ( 32 ) ,
} ;
return platform_device_register_full ( & pdevinfo ) ;
}
2010-12-08 11:07:55 +05:30
struct nmk_gpio_platform_data ;
2012-02-06 11:22:21 -08:00
void dbx500_add_gpios ( struct device * parent , resource_size_t * base , int num ,
int irq , struct nmk_gpio_platform_data * pdata ) ;
2010-12-08 11:07:55 +05:30
2012-04-26 23:57:25 +02:00
static inline void
dbx500_add_pinctrl ( struct device * parent , const char * name )
{
struct platform_device_info pdevinfo = {
. parent = parent ,
. name = name ,
. id = - 1 ,
} ;
platform_device_register_full ( & pdevinfo ) ;
}
2010-09-29 19:46:32 +05:30
# endif