mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
gpio: mxs: use new generic GPIO chip API
Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20250826-gpio-mmio-gpio-conv-part2-v1-3-f67603e4b27e@linaro.org Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
d3332dd1f6
commit
c7357c8b67
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include <linux/err.h>
|
||||
#include <linux/gpio/driver.h>
|
||||
#include <linux/gpio/generic.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
|
|
@ -48,7 +49,7 @@ struct mxs_gpio_port {
|
|||
int id;
|
||||
int irq;
|
||||
struct irq_domain *domain;
|
||||
struct gpio_chip gc;
|
||||
struct gpio_generic_chip chip;
|
||||
struct device *dev;
|
||||
enum mxs_gpio_id devid;
|
||||
u32 both_edges;
|
||||
|
|
@ -258,6 +259,7 @@ MODULE_DEVICE_TABLE(of, mxs_gpio_dt_ids);
|
|||
static int mxs_gpio_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
struct gpio_generic_chip_config config;
|
||||
struct device_node *parent;
|
||||
static void __iomem *base;
|
||||
struct mxs_gpio_port *port;
|
||||
|
|
@ -319,19 +321,24 @@ static int mxs_gpio_probe(struct platform_device *pdev)
|
|||
irq_set_chained_handler_and_data(port->irq, mxs_gpio_irq_handler,
|
||||
port);
|
||||
|
||||
err = bgpio_init(&port->gc, &pdev->dev, 4,
|
||||
port->base + PINCTRL_DIN(port),
|
||||
port->base + PINCTRL_DOUT(port) + MXS_SET,
|
||||
port->base + PINCTRL_DOUT(port) + MXS_CLR,
|
||||
port->base + PINCTRL_DOE(port), NULL, 0);
|
||||
config = (typeof(config)){
|
||||
.dev = &pdev->dev,
|
||||
.sz = 4,
|
||||
.dat = port->base + PINCTRL_DIN(port),
|
||||
.set = port->base + PINCTRL_DOUT(port) + MXS_SET,
|
||||
.clr = port->base + PINCTRL_DOUT(port) + MXS_CLR,
|
||||
.dirout = port->base + PINCTRL_DOE(port),
|
||||
};
|
||||
|
||||
err = gpio_generic_chip_init(&port->chip, &config);
|
||||
if (err)
|
||||
goto out_irqdomain_remove;
|
||||
|
||||
port->gc.to_irq = mxs_gpio_to_irq;
|
||||
port->gc.get_direction = mxs_gpio_get_direction;
|
||||
port->gc.base = port->id * 32;
|
||||
port->chip.gc.to_irq = mxs_gpio_to_irq;
|
||||
port->chip.gc.get_direction = mxs_gpio_get_direction;
|
||||
port->chip.gc.base = port->id * 32;
|
||||
|
||||
err = gpiochip_add_data(&port->gc, port);
|
||||
err = gpiochip_add_data(&port->chip.gc, port);
|
||||
if (err)
|
||||
goto out_irqdomain_remove;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user