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.
*/
# include <linux/kernel.h>
# include <linux/dma-mapping.h>
# include <linux/err.h>
# include <linux/irq.h>
# include <linux/slab.h>
# include <linux/platform_device.h>
2012-10-10 16:27:58 +04:00
# include <linux/platform_data/pinctrl-nomadik.h>
2010-12-08 08:37:55 +03:00
2010-09-29 18:16:32 +04:00
# include <mach/hardware.h>
2012-10-18 13:08:05 +04:00
# include <mach/irqs.h>
2010-09-29 18:16:32 +04:00
# include "devices-common.h"
2010-12-08 08:37:55 +03:00
static struct platform_device *
2012-02-06 23:22:21 +04:00
dbx500_add_gpio ( struct device * parent , int id , resource_size_t addr , int irq ,
2010-12-08 08:37:55 +03:00
struct nmk_gpio_platform_data * pdata )
{
struct resource resources [ ] = {
{
. start = addr ,
. end = addr + 127 ,
. flags = IORESOURCE_MEM ,
} ,
{
. start = irq ,
. end = irq ,
. flags = IORESOURCE_IRQ ,
}
} ;
2012-02-06 23:22:25 +04:00
return platform_device_register_resndata (
parent ,
" gpio " ,
id ,
resources ,
ARRAY_SIZE ( resources ) ,
pdata ,
sizeof ( * pdata ) ) ;
2010-12-08 08:37:55 +03:00
}
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
{
int first = 0 ;
int i ;
for ( i = 0 ; i < num ; i + + , first + = 32 , irq + + ) {
pdata - > first_gpio = first ;
pdata - > first_irq = NOMADIK_GPIO_TO_IRQ ( first ) ;
2010-03-18 10:05:22 +03:00
pdata - > num_gpio = 32 ;
2010-12-08 08:37:55 +03:00
2012-02-06 23:22:21 +04:00
dbx500_add_gpio ( parent , i , base [ i ] , irq , pdata ) ;
2010-12-08 08:37:55 +03:00
}
}