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.
*/
# 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 14:27:58 +02:00
# include <linux/platform_data/pinctrl-nomadik.h>
2010-12-08 11:07:55 +05:30
2010-09-29 19:46:32 +05:30
# include <mach/hardware.h>
2012-10-18 11:08:05 +02:00
# include <mach/irqs.h>
2010-09-29 19:46:32 +05:30
# include "devices-common.h"
2010-12-08 11:07:55 +05:30
static struct platform_device *
2012-02-06 11:22:21 -08:00
dbx500_add_gpio ( struct device * parent , int id , resource_size_t addr , int irq ,
2010-12-08 11:07:55 +05:30
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 11:22:25 -08:00
return platform_device_register_resndata (
parent ,
" gpio " ,
id ,
resources ,
ARRAY_SIZE ( resources ) ,
pdata ,
sizeof ( * pdata ) ) ;
2010-12-08 11:07:55 +05:30
}
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
{
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 12:35:22 +05:30
pdata - > num_gpio = 32 ;
2010-12-08 11:07:55 +05:30
2012-02-06 11:22:21 -08:00
dbx500_add_gpio ( parent , i , base [ i ] , irq , pdata ) ;
2010-12-08 11:07:55 +05:30
}
}