2006-09-19 02:23:07 +04:00
/*
* arch / arm / plat - iop / gpio . c
* GPIO handling for Intel IOP3xx processors .
*
* Copyright ( C ) 2006 Lennert Buytenhek < buytenh @ wantstofly . org >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or ( at
* your option ) any later version .
*/
2016-09-09 09:20:03 +03:00
# include <linux/err.h>
# include <linux/module.h>
# include <linux/gpio/driver.h>
2013-09-09 18:39:51 +04:00
# include <linux/platform_device.h>
2013-09-09 17:00:40 +04:00
2016-09-09 09:20:03 +03:00
# define IOP3XX_GPOE 0x0000
# define IOP3XX_GPID 0x0004
# define IOP3XX_GPOD 0x0008
2008-07-09 02:07:48 +04:00
2013-09-09 18:39:51 +04:00
static int iop3xx_gpio_probe ( struct platform_device * pdev )
2008-07-09 02:07:48 +04:00
{
2013-09-09 18:39:51 +04:00
struct resource * res ;
2016-09-09 09:20:03 +03:00
struct gpio_chip * gc ;
void __iomem * base ;
int err ;
gc = devm_kzalloc ( & pdev - > dev , sizeof ( * gc ) , GFP_KERNEL ) ;
if ( ! gc )
return - ENOMEM ;
2013-09-09 18:39:51 +04:00
res = platform_get_resource ( pdev , IORESOURCE_MEM , 0 ) ;
2013-09-09 18:59:54 +04:00
base = devm_ioremap_resource ( & pdev - > dev , res ) ;
2014-03-18 13:58:33 +04:00
if ( IS_ERR ( base ) )
return PTR_ERR ( base ) ;
2013-09-09 18:39:51 +04:00
2016-09-09 09:20:03 +03:00
err = bgpio_init ( gc , & pdev - > dev , 1 , base + IOP3XX_GPID ,
base + IOP3XX_GPOD , NULL , NULL , base + IOP3XX_GPOE , 0 ) ;
if ( err )
return err ;
gc - > base = 0 ;
gc - > owner = THIS_MODULE ;
return devm_gpiochip_add_data ( & pdev - > dev , gc , NULL ) ;
2008-07-09 02:07:48 +04:00
}
2013-09-09 18:39:51 +04:00
static struct platform_driver iop3xx_gpio_driver = {
. driver = {
. name = " gpio-iop " ,
} ,
. probe = iop3xx_gpio_probe ,
} ;
static int __init iop3xx_gpio_init ( void )
{
return platform_driver_register ( & iop3xx_gpio_driver ) ;
}
arch_initcall ( iop3xx_gpio_init ) ;
2017-11-20 23:54:52 +03:00
MODULE_DESCRIPTION ( " GPIO handling for Intel IOP3xx processors " ) ;
MODULE_AUTHOR ( " Lennert Buytenhek <buytenh@wantstofly.org> " ) ;
MODULE_LICENSE ( " GPL " ) ;