2010-09-29 18:16:32 +04:00
/*
* 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 23:22:26 +04:00
# include <linux/platform_device.h>
# include <linux/dma-mapping.h>
# include <linux/sys_soc.h>
2012-04-03 15:00:18 +04:00
# include <linux/amba/bus.h>
2012-06-12 00:56:26 +04:00
# include <linux/platform_data/i2c-nomadik.h>
2012-08-24 17:19:33 +04:00
# include <linux/platform_data/crypto-ux500.h>
2010-09-29 18:16:32 +04:00
struct spi_master_cntlr ;
static inline struct amba_device *
2012-02-06 23:22:21 +04:00
dbx500_add_msp_spi ( struct device * parent , const char * name ,
resource_size_t base , int irq ,
2010-09-29 18:16:32 +04:00
struct spi_master_cntlr * pdata )
{
2012-04-03 15:00:18 +04:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 ,
pdata , 0 ) ;
2010-09-29 18:16:32 +04:00
}
static inline struct amba_device *
2012-02-06 23:22:21 +04:00
dbx500_add_spi ( struct device * parent , const char * name , resource_size_t base ,
int irq , struct spi_master_cntlr * pdata ,
2011-03-24 18:13:13 +03:00
u32 periphid )
2010-09-29 18:16:32 +04:00
{
2012-04-03 15:00:18 +04:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 ,
pdata , periphid ) ;
2010-09-29 18:16:32 +04:00
}
struct mmci_platform_data ;
static inline struct amba_device *
2012-02-06 23:22:21 +04: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 18:16:32 +04:00
{
2012-04-03 15:00:18 +04:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 ,
pdata , periphid ) ;
2010-09-29 18:16:32 +04:00
}
2010-10-14 15:57:59 +04:00
struct amba_pl011_data ;
2010-09-29 18:16:32 +04:00
static inline struct amba_device *
2012-02-06 23:22:21 +04:00
dbx500_add_uart ( struct device * parent , const char * name , resource_size_t base ,
int irq , struct amba_pl011_data * pdata )
2010-09-29 18:16:32 +04:00
{
2012-04-03 15:00:18 +04:00
return amba_ahb_device_add ( parent , name , base , SZ_4K , irq , 0 , pdata , 0 ) ;
2010-09-29 18:16:32 +04:00
}
struct nmk_i2c_controller ;
2012-06-12 00:56:38 +04:00
static inline struct amba_device *
2012-02-06 23:22:21 +04:00
dbx500_add_i2c ( struct device * parent , int id , resource_size_t base , int irq ,
2012-02-06 23:22:26 +04:00
struct nmk_i2c_controller * data )
2010-09-29 18:16:32 +04:00
{
2012-06-12 00:56:38 +04:00
/* Conjure a name similar to what the platform device used to have */
char name [ 16 ] ;
2012-02-06 23:22:26 +04:00
2012-06-12 00:56:38 +04:00
snprintf ( name , sizeof ( name ) , " nmk-i2c.%d " , id ) ;
return amba_apb_device_add ( parent , name , base , SZ_4K , irq , 0 , data , 0 ) ;
2010-09-29 18:16:32 +04:00
}
static inline struct amba_device *
2012-02-06 23:22:21 +04:00
dbx500_add_rtc ( struct device * parent , resource_size_t base , int irq )
2010-09-29 18:16:32 +04:00
{
2012-04-03 15:00:18 +04:00
return amba_apb_device_add ( parent , " rtc-pl031 " , base , SZ_4K , irq ,
0 , NULL , 0 ) ;
2010-09-29 18:16:32 +04:00
}
2012-05-10 12:14:06 +04: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 08:37:55 +03:00
struct nmk_gpio_platform_data ;
2012-02-06 23:22:21 +04: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 08:37:55 +03:00
2012-04-27 01:57:25 +04:00
static inline void
2012-10-25 10:46:53 +04:00
dbx500_add_pinctrl ( struct device * parent , const char * name ,
resource_size_t base )
2012-04-27 01:57:25 +04:00
{
2012-10-25 10:46:53 +04:00
struct resource res [ ] = {
DEFINE_RES_MEM ( base , SZ_8K ) ,
} ;
2012-04-27 01:57:25 +04:00
struct platform_device_info pdevinfo = {
. parent = parent ,
. name = name ,
. id = - 1 ,
2012-10-25 10:46:53 +04:00
. res = res ,
. num_res = ARRAY_SIZE ( res ) ,
2012-04-27 01:57:25 +04:00
} ;
platform_device_register_full ( & pdevinfo ) ;
}
2010-09-29 18:16:32 +04:00
# endif