aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/files/drivers/gpio
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-08-07 15:25:12 +0200
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-08-30 22:18:35 +0200
commit4e4ee4649553ab536225060a27fc320bf54e458c (patch)
tree711fbf5485f94baec8b708edba00c7250b923872 /target/linux/ar71xx/files/drivers/gpio
parent47b2ee2d9a9a1790f9bf8a528640c333af39e4ba (diff)
downloadupstream-4e4ee4649553ab536225060a27fc320bf54e458c.tar.gz
upstream-4e4ee4649553ab536225060a27fc320bf54e458c.tar.bz2
upstream-4e4ee4649553ab536225060a27fc320bf54e458c.zip
ar71xx: drop target
This target has been mostly replaced by ath79 and won't be included in the upcoming release anymore. Finally put it to rest. This also removes all references in packages, tools, etc. as well as the uboot-ar71xx and vsc73x5-ucode packages. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Diffstat (limited to 'target/linux/ar71xx/files/drivers/gpio')
-rw-r--r--target/linux/ar71xx/files/drivers/gpio/gpio-latch.c220
-rw-r--r--target/linux/ar71xx/files/drivers/gpio/gpio-nxp-74hc153.c243
2 files changed, 0 insertions, 463 deletions
diff --git a/target/linux/ar71xx/files/drivers/gpio/gpio-latch.c b/target/linux/ar71xx/files/drivers/gpio/gpio-latch.c
deleted file mode 100644
index d911f6a2cb..0000000000
--- a/target/linux/ar71xx/files/drivers/gpio/gpio-latch.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * GPIO latch driver
- *
- * Copyright (C) 2014 Gabor Juhos <juhosg@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published
- * by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/gpio.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-
-#include <linux/platform_data/gpio-latch.h>
-
-struct gpio_latch_chip {
- struct gpio_chip gc;
-
- struct mutex mutex;
- struct mutex latch_mutex;
- bool latch_enabled;
- int le_gpio;
- bool le_active_low;
- int *gpios;
-};
-
-static inline struct gpio_latch_chip *to_gpio_latch_chip(struct gpio_chip *gc)
-{
- return container_of(gc, struct gpio_latch_chip, gc);
-}
-
-static void gpio_latch_lock(struct gpio_latch_chip *glc, bool enable)
-{
- mutex_lock(&glc->mutex);
-
- if (enable)
- glc->latch_enabled = true;
-
- if (glc->latch_enabled)
- mutex_lock(&glc->latch_mutex);
-}
-
-static void gpio_latch_unlock(struct gpio_latch_chip *glc, bool disable)
-{
- if (glc->latch_enabled)
- mutex_unlock(&glc->latch_mutex);
-
- if (disable)
- glc->latch_enabled = true;
-
- mutex_unlock(&glc->mutex);
-}
-
-static int
-gpio_latch_get(struct gpio_chip *gc, unsigned offset)
-{
- struct gpio_latch_chip *glc = to_gpio_latch_chip(gc);
- int ret;
-
- gpio_latch_lock(glc, false);
- ret = gpio_get_value(glc->gpios[offset]);
- gpio_latch_unlock(glc, false);
-
- return ret;
-}
-
-static void
-gpio_latch_set(struct gpio_chip *gc, unsigned offset, int value)
-{
- struct gpio_latch_chip *glc = to_gpio_latch_chip(gc);
- bool enable_latch = false;
- bool disable_latch = false;
- int gpio;
-
- gpio = glc->gpios[offset];
-
- if (gpio == glc->le_gpio) {
- enable_latch = value ^ glc->le_active_low;
- disable_latch = !enable_latch;
- }
-
- gpio_latch_lock(glc, enable_latch);
- gpio_set_value(gpio, value);
- gpio_latch_unlock(glc, disable_latch);
-}
-
-static int
-gpio_latch_direction_input(struct gpio_chip *gc, unsigned offset)
-{
- struct gpio_latch_chip *glc = to_gpio_latch_chip(gc);
- int ret;
-
- gpio_latch_lock(glc, false);
- ret = gpio_direction_input(glc->gpios[offset]);
- gpio_latch_unlock(glc, false);
-
- return ret;
-}
-
-static int
-gpio_latch_direction_output(struct gpio_chip *gc, unsigned offset, int value)
-{
- struct gpio_latch_chip *glc = to_gpio_latch_chip(gc);
- bool enable_latch = false;
- bool disable_latch = false;
- int gpio;
- int ret;
-
- gpio = glc->gpios[offset];
-
- if (gpio == glc->le_gpio) {
- enable_latch = value ^ glc->le_active_low;
- disable_latch = !enable_latch;
- }
-
- gpio_latch_lock(glc, enable_latch);
- ret = gpio_direction_output(gpio, value);
- gpio_latch_unlock(glc, disable_latch);
-
- return ret;
-}
-
-static int gpio_latch_probe(struct platform_device *pdev)
-{
- struct gpio_latch_chip *glc;
- struct gpio_latch_platform_data *pdata;
- struct gpio_chip *gc;
- int size;
- int ret;
- int i;
-
- pdata = dev_get_platdata(&pdev->dev);
- if (!pdata)
- return -EINVAL;
-
- if (pdata->le_gpio_index >= pdata->num_gpios ||
- !pdata->num_gpios ||
- !pdata->gpios)
- return -EINVAL;
-
- for (i = 0; i < pdata->num_gpios; i++) {
- int gpio = pdata->gpios[i];
-
- ret = devm_gpio_request(&pdev->dev, gpio,
- GPIO_LATCH_DRIVER_NAME);
- if (ret)
- return ret;
- }
-
- glc = devm_kzalloc(&pdev->dev, sizeof(*glc), GFP_KERNEL);
- if (!glc)
- return -ENOMEM;
-
- mutex_init(&glc->mutex);
- mutex_init(&glc->latch_mutex);
-
- size = pdata->num_gpios * sizeof(glc->gpios[0]);
- glc->gpios = devm_kzalloc(&pdev->dev, size , GFP_KERNEL);
- if (!glc->gpios)
- return -ENOMEM;
-
- memcpy(glc->gpios, pdata->gpios, size);
-
- glc->le_gpio = glc->gpios[pdata->le_gpio_index];
- glc->le_active_low = pdata->le_active_low;
-
- gc = &glc->gc;
-
- gc->label = GPIO_LATCH_DRIVER_NAME;
- gc->base = pdata->base;
- gc->can_sleep = true;
- gc->ngpio = pdata->num_gpios;
- gc->get = gpio_latch_get;
- gc->set = gpio_latch_set;
- gc->direction_input = gpio_latch_direction_input,
- gc->direction_output = gpio_latch_direction_output;
-
- platform_set_drvdata(pdev, glc);
-
- ret = gpiochip_add(&glc->gc);
- if (ret)
- return ret;
-
- return 0;
-}
-
-static int gpio_latch_remove(struct platform_device *pdev)
-{
- struct gpio_latch_chip *glc = platform_get_drvdata(pdev);
-
- gpiochip_remove(&glc->gc);
- return 0;
-}
-
-
-static struct platform_driver gpio_latch_driver = {
- .probe = gpio_latch_probe,
- .remove = gpio_latch_remove,
- .driver = {
- .name = GPIO_LATCH_DRIVER_NAME,
- .owner = THIS_MODULE,
- },
-};
-
-static int __init gpio_latch_init(void)
-{
- return platform_driver_register(&gpio_latch_driver);
-}
-
-postcore_initcall(gpio_latch_init);
-
-MODULE_DESCRIPTION("GPIO latch driver");
-MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>");
-MODULE_LICENSE("GPL v2");
-MODULE_ALIAS("platform:" GPIO_LATCH_DRIVER_NAME);
diff --git a/target/linux/ar71xx/files/drivers/gpio/gpio-nxp-74hc153.c b/target/linux/ar71xx/files/drivers/gpio/gpio-nxp-74hc153.c
deleted file mode 100644
index 82e6e943ff..0000000000
--- a/target/linux/ar71xx/files/drivers/gpio/gpio-nxp-74hc153.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * NXP 74HC153 - Dual 4-input multiplexer GPIO driver
- *
- * Copyright (C) 2010 Gabor Juhos <juhosg@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/version.h>
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/gpio.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-#include <linux/nxp_74hc153.h>
-
-#define NXP_74HC153_NUM_GPIOS 8
-#define NXP_74HC153_S0_MASK 0x1
-#define NXP_74HC153_S1_MASK 0x2
-#define NXP_74HC153_BANK_MASK 0x4
-
-struct nxp_74hc153_chip {
- struct device *parent;
- struct gpio_chip gpio_chip;
- struct mutex lock;
-};
-
-static struct nxp_74hc153_chip *gpio_to_nxp(struct gpio_chip *gc)
-{
- return container_of(gc, struct nxp_74hc153_chip, gpio_chip);
-}
-
-static int nxp_74hc153_direction_input(struct gpio_chip *gc, unsigned offset)
-{
- return 0;
-}
-
-static int nxp_74hc153_direction_output(struct gpio_chip *gc,
- unsigned offset, int val)
-{
- return -EINVAL;
-}
-
-static int nxp_74hc153_get_value(struct gpio_chip *gc, unsigned offset)
-{
- struct nxp_74hc153_chip *nxp;
- struct nxp_74hc153_platform_data *pdata;
- unsigned s0;
- unsigned s1;
- unsigned pin;
- int ret;
-
- nxp = gpio_to_nxp(gc);
- pdata = nxp->parent->platform_data;
-
- s0 = !!(offset & NXP_74HC153_S0_MASK);
- s1 = !!(offset & NXP_74HC153_S1_MASK);
- pin = (offset & NXP_74HC153_BANK_MASK) ? pdata->gpio_pin_2y
- : pdata->gpio_pin_1y;
-
- mutex_lock(&nxp->lock);
- gpio_set_value(pdata->gpio_pin_s0, s0);
- gpio_set_value(pdata->gpio_pin_s1, s1);
- ret = gpio_get_value(pin);
- mutex_unlock(&nxp->lock);
-
- return ret;
-}
-
-static void nxp_74hc153_set_value(struct gpio_chip *gc,
- unsigned offset, int val)
-{
- /* not supported */
-}
-
-static int nxp_74hc153_probe(struct platform_device *pdev)
-{
- struct nxp_74hc153_platform_data *pdata;
- struct nxp_74hc153_chip *nxp;
- struct gpio_chip *gc;
- int err;
-
- pdata = pdev->dev.platform_data;
- if (pdata == NULL) {
- dev_dbg(&pdev->dev, "no platform data specified\n");
- return -EINVAL;
- }
-
- nxp = kzalloc(sizeof(struct nxp_74hc153_chip), GFP_KERNEL);
- if (nxp == NULL) {
- dev_err(&pdev->dev, "no memory for private data\n");
- return -ENOMEM;
- }
-
- err = gpio_request(pdata->gpio_pin_s0, dev_name(&pdev->dev));
- if (err) {
- dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n",
- pdata->gpio_pin_s0, err);
- goto err_free_nxp;
- }
-
- err = gpio_request(pdata->gpio_pin_s1, dev_name(&pdev->dev));
- if (err) {
- dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n",
- pdata->gpio_pin_s1, err);
- goto err_free_s0;
- }
-
- err = gpio_request(pdata->gpio_pin_1y, dev_name(&pdev->dev));
- if (err) {
- dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n",
- pdata->gpio_pin_1y, err);
- goto err_free_s1;
- }
-
- err = gpio_request(pdata->gpio_pin_2y, dev_name(&pdev->dev));
- if (err) {
- dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n",
- pdata->gpio_pin_2y, err);
- goto err_free_1y;
- }
-
- err = gpio_direction_output(pdata->gpio_pin_s0, 0);
- if (err) {
- dev_err(&pdev->dev,
- "unable to set direction of gpio %u, err=%d\n",
- pdata->gpio_pin_s0, err);
- goto err_free_2y;
- }
-
- err = gpio_direction_output(pdata->gpio_pin_s1, 0);
- if (err) {
- dev_err(&pdev->dev,
- "unable to set direction of gpio %u, err=%d\n",
- pdata->gpio_pin_s1, err);
- goto err_free_2y;
- }
-
- err = gpio_direction_input(pdata->gpio_pin_1y);
- if (err) {
- dev_err(&pdev->dev,
- "unable to set direction of gpio %u, err=%d\n",
- pdata->gpio_pin_1y, err);
- goto err_free_2y;
- }
-
- err = gpio_direction_input(pdata->gpio_pin_2y);
- if (err) {
- dev_err(&pdev->dev,
- "unable to set direction of gpio %u, err=%d\n",
- pdata->gpio_pin_2y, err);
- goto err_free_2y;
- }
-
- nxp->parent = &pdev->dev;
- mutex_init(&nxp->lock);
-
- gc = &nxp->gpio_chip;
-
- gc->direction_input = nxp_74hc153_direction_input;
- gc->direction_output = nxp_74hc153_direction_output;
- gc->get = nxp_74hc153_get_value;
- gc->set = nxp_74hc153_set_value;
- gc->can_sleep = 1;
-
- gc->base = pdata->gpio_base;
- gc->ngpio = NXP_74HC153_NUM_GPIOS;
- gc->label = dev_name(nxp->parent);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0)
- gc->dev = nxp->parent;
-#else
- gc->parent = nxp->parent;
-#endif
- gc->owner = THIS_MODULE;
-
- err = gpiochip_add(&nxp->gpio_chip);
- if (err) {
- dev_err(&pdev->dev, "unable to add gpio chip, err=%d\n", err);
- goto err_free_2y;
- }
-
- platform_set_drvdata(pdev, nxp);
- return 0;
-
-err_free_2y:
- gpio_free(pdata->gpio_pin_2y);
-err_free_1y:
- gpio_free(pdata->gpio_pin_1y);
-err_free_s1:
- gpio_free(pdata->gpio_pin_s1);
-err_free_s0:
- gpio_free(pdata->gpio_pin_s0);
-err_free_nxp:
- kfree(nxp);
- return err;
-}
-
-static int nxp_74hc153_remove(struct platform_device *pdev)
-{
- struct nxp_74hc153_chip *nxp = platform_get_drvdata(pdev);
- struct nxp_74hc153_platform_data *pdata = pdev->dev.platform_data;
-
- if (nxp) {
- gpiochip_remove(&nxp->gpio_chip);
- gpio_free(pdata->gpio_pin_2y);
- gpio_free(pdata->gpio_pin_1y);
- gpio_free(pdata->gpio_pin_s1);
- gpio_free(pdata->gpio_pin_s0);
-
- kfree(nxp);
- platform_set_drvdata(pdev, NULL);
- }
-
- return 0;
-}
-
-static struct platform_driver nxp_74hc153_driver = {
- .probe = nxp_74hc153_probe,
- .remove = nxp_74hc153_remove,
- .driver = {
- .name = NXP_74HC153_DRIVER_NAME,
- .owner = THIS_MODULE,
- },
-};
-
-static int __init nxp_74hc153_init(void)
-{
- return platform_driver_register(&nxp_74hc153_driver);
-}
-subsys_initcall(nxp_74hc153_init);
-
-static void __exit nxp_74hc153_exit(void)
-{
- platform_driver_unregister(&nxp_74hc153_driver);
-}
-module_exit(nxp_74hc153_exit);
-
-MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>");
-MODULE_DESCRIPTION("GPIO expander driver for NXP 74HC153");
-MODULE_LICENSE("GPL v2");
-MODULE_ALIAS("platform:" NXP_74HC153_DRIVER_NAME);