1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * arch/arm/plat-iop/gpio.c
4 * GPIO handling for Intel IOP3xx processors.
6 * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
10 #include <linux/module.h>
11 #include <linux/gpio/driver.h>
12 #include <linux/platform_device.h>
14 #define IOP3XX_GPOE 0x0000
15 #define IOP3XX_GPID 0x0004
16 #define IOP3XX_GPOD 0x0008
18 static int iop3xx_gpio_probe(struct platform_device
*pdev
)
24 gc
= devm_kzalloc(&pdev
->dev
, sizeof(*gc
), GFP_KERNEL
);
28 base
= devm_platform_ioremap_resource(pdev
, 0);
32 err
= bgpio_init(gc
, &pdev
->dev
, 1, base
+ IOP3XX_GPID
,
33 base
+ IOP3XX_GPOD
, NULL
, NULL
, base
+ IOP3XX_GPOE
, 0);
38 gc
->owner
= THIS_MODULE
;
39 gc
->label
= "gpio-iop";
41 return devm_gpiochip_add_data(&pdev
->dev
, gc
, NULL
);
44 static struct platform_driver iop3xx_gpio_driver
= {
48 .probe
= iop3xx_gpio_probe
,
51 static int __init
iop3xx_gpio_init(void)
53 return platform_driver_register(&iop3xx_gpio_driver
);
55 arch_initcall(iop3xx_gpio_init
);
57 MODULE_DESCRIPTION("GPIO handling for Intel IOP3xx processors");
58 MODULE_AUTHOR("Lennert Buytenhek <buytenh@wantstofly.org>");
59 MODULE_LICENSE("GPL");