Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.20 64 lines 1.6 kB view raw
1/* 2 * arch/arm/plat-iop/gpio.c 3 * GPIO handling for Intel IOP3xx processors. 4 * 5 * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or (at 10 * your option) any later version. 11 */ 12 13#include <linux/err.h> 14#include <linux/module.h> 15#include <linux/gpio/driver.h> 16#include <linux/platform_device.h> 17 18#define IOP3XX_GPOE 0x0000 19#define IOP3XX_GPID 0x0004 20#define IOP3XX_GPOD 0x0008 21 22static int iop3xx_gpio_probe(struct platform_device *pdev) 23{ 24 struct resource *res; 25 struct gpio_chip *gc; 26 void __iomem *base; 27 int err; 28 29 gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL); 30 if (!gc) 31 return -ENOMEM; 32 33 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 34 base = devm_ioremap_resource(&pdev->dev, res); 35 if (IS_ERR(base)) 36 return PTR_ERR(base); 37 38 err = bgpio_init(gc, &pdev->dev, 1, base + IOP3XX_GPID, 39 base + IOP3XX_GPOD, NULL, NULL, base + IOP3XX_GPOE, 0); 40 if (err) 41 return err; 42 43 gc->base = 0; 44 gc->owner = THIS_MODULE; 45 46 return devm_gpiochip_add_data(&pdev->dev, gc, NULL); 47} 48 49static struct platform_driver iop3xx_gpio_driver = { 50 .driver = { 51 .name = "gpio-iop", 52 }, 53 .probe = iop3xx_gpio_probe, 54}; 55 56static int __init iop3xx_gpio_init(void) 57{ 58 return platform_driver_register(&iop3xx_gpio_driver); 59} 60arch_initcall(iop3xx_gpio_init); 61 62MODULE_DESCRIPTION("GPIO handling for Intel IOP3xx processors"); 63MODULE_AUTHOR("Lennert Buytenhek <buytenh@wantstofly.org>"); 64MODULE_LICENSE("GPL");