mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 15:04:27 +08:00
4bb9f7251c
The Kconfig currently controlling compilation of this code is: drivers/gpio/Kconfig:config GPIO_MOXART drivers/gpio/Kconfig: bool "MOXART GPIO support" ...meaning that it currently is not being built as a module by anyone. Lets remove the couple traces of modular references so that when reading the driver there is no doubt it is builtin-only. Since module_platform_driver() uses the same init level priority as builtin_platform_driver() the init ordering remains unchanged with this commit. We also delete the MODULE_LICENSE tag etc. since all that information is already contained at the top of the file in the comments. We don't replace module.h with init.h since the file already has that. Cc: Jonas Jensen <jonas.jensen@gmail.com> Cc: Alexandre Courbot <gnurou@gmail.com> Cc: linux-gpio@vger.kernel.org Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
85 lines
1.9 KiB
C
85 lines
1.9 KiB
C
/*
|
|
* MOXA ART SoCs GPIO driver.
|
|
*
|
|
* Copyright (C) 2013 Jonas Jensen
|
|
*
|
|
* Jonas Jensen <jonas.jensen@gmail.com>
|
|
*
|
|
* This file is licensed under the terms of the GNU General Public
|
|
* License version 2. This program is licensed "as is" without any
|
|
* warranty of any kind, whether express or implied.
|
|
*/
|
|
|
|
#include <linux/err.h>
|
|
#include <linux/init.h>
|
|
#include <linux/irq.h>
|
|
#include <linux/io.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/of_address.h>
|
|
#include <linux/of_gpio.h>
|
|
#include <linux/pinctrl/consumer.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/timer.h>
|
|
#include <linux/bitops.h>
|
|
#include <linux/gpio/driver.h>
|
|
|
|
#define GPIO_DATA_OUT 0x00
|
|
#define GPIO_DATA_IN 0x04
|
|
#define GPIO_PIN_DIRECTION 0x08
|
|
|
|
static int moxart_gpio_probe(struct platform_device *pdev)
|
|
{
|
|
struct device *dev = &pdev->dev;
|
|
struct resource *res;
|
|
struct gpio_chip *gc;
|
|
void __iomem *base;
|
|
int ret;
|
|
|
|
gc = devm_kzalloc(dev, sizeof(*gc), GFP_KERNEL);
|
|
if (!gc)
|
|
return -ENOMEM;
|
|
|
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
base = devm_ioremap_resource(dev, res);
|
|
if (IS_ERR(base))
|
|
return PTR_ERR(base);
|
|
|
|
ret = bgpio_init(gc, dev, 4, base + GPIO_DATA_IN,
|
|
base + GPIO_DATA_OUT, NULL,
|
|
base + GPIO_PIN_DIRECTION, NULL,
|
|
BGPIOF_READ_OUTPUT_REG_SET);
|
|
if (ret) {
|
|
dev_err(&pdev->dev, "bgpio_init failed\n");
|
|
return ret;
|
|
}
|
|
|
|
gc->label = "moxart-gpio";
|
|
gc->request = gpiochip_generic_request;
|
|
gc->free = gpiochip_generic_free;
|
|
gc->base = 0;
|
|
gc->owner = THIS_MODULE;
|
|
|
|
ret = devm_gpiochip_add_data(dev, gc, NULL);
|
|
if (ret) {
|
|
dev_err(dev, "%s: gpiochip_add failed\n",
|
|
dev->of_node->full_name);
|
|
return ret;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
static const struct of_device_id moxart_gpio_match[] = {
|
|
{ .compatible = "moxa,moxart-gpio" },
|
|
{ }
|
|
};
|
|
|
|
static struct platform_driver moxart_gpio_driver = {
|
|
.driver = {
|
|
.name = "moxart-gpio",
|
|
.of_match_table = moxart_gpio_match,
|
|
},
|
|
.probe = moxart_gpio_probe,
|
|
};
|
|
builtin_platform_driver(moxart_gpio_driver);
|