diff options
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/Kconfig | 1 | ||||
-rw-r--r-- | drivers/gpio/gpio-da9055.c | 8 | ||||
-rw-r--r-- | drivers/gpio/gpio-ich.c | 1 | ||||
-rw-r--r-- | drivers/gpio/gpio-mvebu.c | 23 | ||||
-rw-r--r-- | drivers/gpio/gpio-samsung.c | 14 | ||||
-rw-r--r-- | drivers/gpio/gpio-ts5500.c | 6 | ||||
-rw-r--r-- | drivers/gpio/gpio-viperboard.c | 6 |
7 files changed, 19 insertions, 40 deletions
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 8ae1f5b1966..682de754d63 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -172,6 +172,7 @@ config GPIO_MSM_V2 config GPIO_MVEBU def_bool y depends on PLAT_ORION + depends on OF select GPIO_GENERIC select GENERIC_IRQ_CHIP diff --git a/drivers/gpio/gpio-da9055.c b/drivers/gpio/gpio-da9055.c index 55d83c7d9c7..fd6dfe382f1 100644 --- a/drivers/gpio/gpio-da9055.c +++ b/drivers/gpio/gpio-da9055.c @@ -126,7 +126,7 @@ static int da9055_gpio_to_irq(struct gpio_chip *gc, u32 offset) DA9055_IRQ_GPI0 + offset); } -static struct gpio_chip reference_gp __devinitdata = { +static struct gpio_chip reference_gp = { .label = "da9055-gpio", .owner = THIS_MODULE, .get = da9055_gpio_get, @@ -139,7 +139,7 @@ static struct gpio_chip reference_gp __devinitdata = { .base = -1, }; -static int __devinit da9055_gpio_probe(struct platform_device *pdev) +static int da9055_gpio_probe(struct platform_device *pdev) { struct da9055_gpio *gpio; struct da9055_pdata *pdata; @@ -170,7 +170,7 @@ err_mem: return ret; } -static int __devexit da9055_gpio_remove(struct platform_device *pdev) +static int da9055_gpio_remove(struct platform_device *pdev) { struct da9055_gpio *gpio = platform_get_drvdata(pdev); @@ -179,7 +179,7 @@ static int __devexit da9055_gpio_remove(struct platform_device *pdev) static struct platform_driver da9055_gpio_driver = { .probe = da9055_gpio_probe, - .remove = __devexit_p(da9055_gpio_remove), + .remove = da9055_gpio_remove, .driver = { .name = "da9055-gpio", .owner = THIS_MODULE, diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c index 6cc87ac8e01..6f2306db859 100644 --- a/drivers/gpio/gpio-ich.c +++ b/drivers/gpio/gpio-ich.c @@ -390,6 +390,7 @@ static int ichx_gpio_probe(struct platform_device *pdev) return -ENODEV; } + spin_lock_init(&ichx_priv.lock); res_base = platform_get_resource(pdev, IORESOURCE_IO, ICH_RES_GPIO); ichx_priv.use_gpio = ich_info->use_gpio; err = ichx_gpio_request_regions(res_base, pdev->name, diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index d767b534c4a..6819d63cb16 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c @@ -41,7 +41,6 @@ #include <linux/io.h> #include <linux/of_irq.h> #include <linux/of_device.h> -#include <linux/platform_device.h> #include <linux/pinctrl/consumer.h> /* @@ -469,19 +468,6 @@ static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) } } -static struct platform_device_id mvebu_gpio_ids[] = { - { - .name = "orion-gpio", - }, { - .name = "mv78200-gpio", - }, { - .name = "armadaxp-gpio", - }, { - /* sentinel */ - }, -}; -MODULE_DEVICE_TABLE(platform, mvebu_gpio_ids); - static struct of_device_id mvebu_gpio_of_match[] = { { .compatible = "marvell,orion-gpio", @@ -555,15 +541,12 @@ static int mvebu_gpio_probe(struct platform_device *pdev) mvchip->chip.base = id * MVEBU_MAX_GPIO_PER_BANK; mvchip->chip.ngpio = ngpios; mvchip->chip.can_sleep = 0; -#ifdef CONFIG_OF mvchip->chip.of_node = np; -#endif spin_lock_init(&mvchip->lock); mvchip->membase = devm_request_and_ioremap(&pdev->dev, res); if (! mvchip->membase) { dev_err(&pdev->dev, "Cannot ioremap\n"); - kfree(mvchip->chip.label); return -ENOMEM; } @@ -573,14 +556,12 @@ static int mvebu_gpio_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_MEM, 1); if (! res) { dev_err(&pdev->dev, "Cannot get memory resource\n"); - kfree(mvchip->chip.label); return -ENODEV; } mvchip->percpu_membase = devm_request_and_ioremap(&pdev->dev, res); if (! mvchip->percpu_membase) { dev_err(&pdev->dev, "Cannot ioremap\n"); - kfree(mvchip->chip.label); return -ENOMEM; } } @@ -641,7 +622,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev) mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1); if (mvchip->irqbase < 0) { dev_err(&pdev->dev, "no irqs\n"); - kfree(mvchip->chip.label); return -ENOMEM; } @@ -649,7 +629,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev) mvchip->membase, handle_level_irq); if (! gc) { dev_err(&pdev->dev, "Cannot allocate generic irq_chip\n"); - kfree(mvchip->chip.label); return -ENOMEM; } @@ -684,7 +663,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev) irq_remove_generic_chip(gc, IRQ_MSK(ngpios), IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE); kfree(gc); - kfree(mvchip->chip.label); return -ENODEV; } @@ -698,7 +676,6 @@ static struct platform_driver mvebu_gpio_driver = { .of_match_table = mvebu_gpio_of_match, }, .probe = mvebu_gpio_probe, - .id_table = mvebu_gpio_ids, }; static int __init mvebu_gpio_init(void) diff --git a/drivers/gpio/gpio-samsung.c b/drivers/gpio/gpio-samsung.c index 01f7fe95559..76be7eed79d 100644 --- a/drivers/gpio/gpio-samsung.c +++ b/drivers/gpio/gpio-samsung.c @@ -32,7 +32,6 @@ #include <mach/hardware.h> #include <mach/map.h> -#include <mach/regs-clock.h> #include <mach/regs-gpio.h> #include <plat/cpu.h> @@ -446,7 +445,7 @@ static struct samsung_gpio_cfg s3c24xx_gpiocfg_banka = { }; #endif -#if defined(CONFIG_ARCH_EXYNOS4) || defined(CONFIG_ARCH_EXYNOS5) +#if defined(CONFIG_ARCH_EXYNOS4) || defined(CONFIG_SOC_EXYNOS5250) static struct samsung_gpio_cfg exynos_gpio_cfg = { .set_pull = exynos_gpio_setpull, .get_pull = exynos_gpio_getpull, @@ -2446,7 +2445,7 @@ static struct samsung_gpio_chip exynos4_gpios_3[] = { }; #endif -#ifdef CONFIG_ARCH_EXYNOS5 +#ifdef CONFIG_SOC_EXYNOS5250 static struct samsung_gpio_chip exynos5_gpios_1[] = { { .chip = { @@ -2614,7 +2613,7 @@ static struct samsung_gpio_chip exynos5_gpios_1[] = { }; #endif -#ifdef CONFIG_ARCH_EXYNOS5 +#ifdef CONFIG_SOC_EXYNOS5250 static struct samsung_gpio_chip exynos5_gpios_2[] = { { .chip = { @@ -2675,7 +2674,7 @@ static struct samsung_gpio_chip exynos5_gpios_2[] = { }; #endif -#ifdef CONFIG_ARCH_EXYNOS5 +#ifdef CONFIG_SOC_EXYNOS5250 static struct samsung_gpio_chip exynos5_gpios_3[] = { { .chip = { @@ -2711,7 +2710,7 @@ static struct samsung_gpio_chip exynos5_gpios_3[] = { }; #endif -#ifdef CONFIG_ARCH_EXYNOS5 +#ifdef CONFIG_SOC_EXYNOS5250 static struct samsung_gpio_chip exynos5_gpios_4[] = { { .chip = { @@ -3010,7 +3009,7 @@ static __init int samsung_gpiolib_init(void) int i, nr_chips; int group = 0; -#ifdef CONFIG_PINCTRL_SAMSUNG +#if defined(CONFIG_PINCTRL_EXYNOS) || defined(CONFIG_PINCTRL_EXYNOS5440) /* * This gpio driver includes support for device tree support and there * are platforms using it. In order to maintain compatibility with those @@ -3026,6 +3025,7 @@ static __init int samsung_gpiolib_init(void) static const struct of_device_id exynos_pinctrl_ids[] = { { .compatible = "samsung,pinctrl-exynos4210", }, { .compatible = "samsung,pinctrl-exynos4x12", }, + { .compatible = "samsung,pinctrl-exynos5440", }, }; for_each_matching_node(pctrl_np, exynos_pinctrl_ids) if (pctrl_np && of_device_is_available(pctrl_np)) diff --git a/drivers/gpio/gpio-ts5500.c b/drivers/gpio/gpio-ts5500.c index 0634ceea3c2..cc53cab8df2 100644 --- a/drivers/gpio/gpio-ts5500.c +++ b/drivers/gpio/gpio-ts5500.c @@ -319,7 +319,7 @@ static void ts5500_disable_irq(struct ts5500_priv *priv) spin_unlock_irqrestore(&priv->lock, flags); } -static int __devinit ts5500_dio_probe(struct platform_device *pdev) +static int ts5500_dio_probe(struct platform_device *pdev) { enum ts5500_blocks block = platform_get_device_id(pdev)->driver_data; struct ts5500_dio_platform_data *pdata = pdev->dev.platform_data; @@ -432,7 +432,7 @@ cleanup: return ret; } -static int __devexit ts5500_dio_remove(struct platform_device *pdev) +static int ts5500_dio_remove(struct platform_device *pdev) { struct ts5500_priv *priv = platform_get_drvdata(pdev); @@ -455,7 +455,7 @@ static struct platform_driver ts5500_dio_driver = { .owner = THIS_MODULE, }, .probe = ts5500_dio_probe, - .remove = __devexit_p(ts5500_dio_remove), + .remove = ts5500_dio_remove, .id_table = ts5500_dio_ids, }; diff --git a/drivers/gpio/gpio-viperboard.c b/drivers/gpio/gpio-viperboard.c index 13772996cf2..59d72391de2 100644 --- a/drivers/gpio/gpio-viperboard.c +++ b/drivers/gpio/gpio-viperboard.c @@ -400,7 +400,7 @@ static int vprbrd_gpiob_direction_output(struct gpio_chip *chip, /* ----- end of gpio b chip ---------------------------------------------- */ -static int __devinit vprbrd_gpio_probe(struct platform_device *pdev) +static int vprbrd_gpio_probe(struct platform_device *pdev) { struct vprbrd *vb = dev_get_drvdata(pdev->dev.parent); struct vprbrd_gpio *vb_gpio; @@ -456,7 +456,7 @@ err_gpioa: return ret; } -static int __devexit vprbrd_gpio_remove(struct platform_device *pdev) +static int vprbrd_gpio_remove(struct platform_device *pdev) { struct vprbrd_gpio *vb_gpio = platform_get_drvdata(pdev); int ret; @@ -472,7 +472,7 @@ static struct platform_driver vprbrd_gpio_driver = { .driver.name = "viperboard-gpio", .driver.owner = THIS_MODULE, .probe = vprbrd_gpio_probe, - .remove = __devexit_p(vprbrd_gpio_remove), + .remove = vprbrd_gpio_remove, }; static int __init vprbrd_gpio_init(void) |