mirror of https://github.com/torvalds/linux.git
gpiolib: of: Get rid of <linux/gpio/legacy-of-mm-gpiochip.h>
Last user of linux/gpio/legacy-of-mm-gpiochip.h is gone. Remove linux/gpio/legacy-of-mm-gpiochip.h and CONFIG_OF_GPIO_MM_GPIOCHIP Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
8d0d46da40
commit
eba11116f3
|
|
@ -42,14 +42,6 @@ config GPIOLIB_IRQCHIP
|
|||
select IRQ_DOMAIN
|
||||
bool
|
||||
|
||||
config OF_GPIO_MM_GPIOCHIP
|
||||
bool
|
||||
help
|
||||
This adds support for the legacy 'struct of_mm_gpio_chip' interface
|
||||
from PowerPC. Existing drivers using this interface need to select
|
||||
this symbol, but new drivers should use the generic gpio-regmap
|
||||
infrastructure instead.
|
||||
|
||||
config DEBUG_GPIO
|
||||
bool "Debug GPIO calls"
|
||||
depends on DEBUG_KERNEL
|
||||
|
|
|
|||
|
|
@ -86,17 +86,6 @@ Work items:
|
|||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Get rid of <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||
|
||||
Work items:
|
||||
|
||||
- Get rid of struct of_mm_gpio_chip altogether: use the generic MMIO
|
||||
GPIO for all current users (see below). Delete struct of_mm_gpio_chip,
|
||||
to_of_mm_gpio_chip(), of_mm_gpiochip_add_data(), of_mm_gpiochip_remove(),
|
||||
CONFIG_OF_GPIO_MM_GPIOCHIP from the kernel.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Collect drivers
|
||||
|
||||
Collect GPIO drivers from arch/* and other places that should be placed
|
||||
|
|
|
|||
|
|
@ -1031,85 +1031,6 @@ static int of_gpio_threecell_xlate(struct gpio_chip *gc,
|
|||
return gpiospec->args[1];
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_OF_GPIO_MM_GPIOCHIP)
|
||||
#include <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||
/**
|
||||
* of_mm_gpiochip_add_data - Add memory mapped GPIO chip (bank)
|
||||
* @np: device node of the GPIO chip
|
||||
* @mm_gc: pointer to the of_mm_gpio_chip allocated structure
|
||||
* @data: driver data to store in the struct gpio_chip
|
||||
*
|
||||
* To use this function you should allocate and fill mm_gc with:
|
||||
*
|
||||
* 1) In the gpio_chip structure:
|
||||
* - all the callbacks
|
||||
* - of_gpio_n_cells
|
||||
* - of_xlate callback (optional)
|
||||
*
|
||||
* 3) In the of_mm_gpio_chip structure:
|
||||
* - save_regs callback (optional)
|
||||
*
|
||||
* If succeeded, this function will map bank's memory and will
|
||||
* do all necessary work for you. Then you'll able to use .regs
|
||||
* to manage GPIOs from the callbacks.
|
||||
*
|
||||
* Returns:
|
||||
* 0 on success, or negative errno on failure.
|
||||
*/
|
||||
int of_mm_gpiochip_add_data(struct device_node *np,
|
||||
struct of_mm_gpio_chip *mm_gc,
|
||||
void *data)
|
||||
{
|
||||
int ret = -ENOMEM;
|
||||
struct gpio_chip *gc = &mm_gc->gc;
|
||||
|
||||
gc->label = kasprintf(GFP_KERNEL, "%pOF", np);
|
||||
if (!gc->label)
|
||||
goto err0;
|
||||
|
||||
mm_gc->regs = of_iomap(np, 0);
|
||||
if (!mm_gc->regs)
|
||||
goto err1;
|
||||
|
||||
gc->base = -1;
|
||||
|
||||
if (mm_gc->save_regs)
|
||||
mm_gc->save_regs(mm_gc);
|
||||
|
||||
fwnode_handle_put(mm_gc->gc.fwnode);
|
||||
mm_gc->gc.fwnode = fwnode_handle_get(of_fwnode_handle(np));
|
||||
|
||||
ret = gpiochip_add_data(gc, data);
|
||||
if (ret)
|
||||
goto err2;
|
||||
|
||||
return 0;
|
||||
err2:
|
||||
of_node_put(np);
|
||||
iounmap(mm_gc->regs);
|
||||
err1:
|
||||
kfree(gc->label);
|
||||
err0:
|
||||
pr_err("%pOF: GPIO chip registration failed with status %d\n", np, ret);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_mm_gpiochip_add_data);
|
||||
|
||||
/**
|
||||
* of_mm_gpiochip_remove - Remove memory mapped GPIO chip (bank)
|
||||
* @mm_gc: pointer to the of_mm_gpio_chip allocated structure
|
||||
*/
|
||||
void of_mm_gpiochip_remove(struct of_mm_gpio_chip *mm_gc)
|
||||
{
|
||||
struct gpio_chip *gc = &mm_gc->gc;
|
||||
|
||||
gpiochip_remove(gc);
|
||||
iounmap(mm_gc->regs);
|
||||
kfree(gc->label);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_mm_gpiochip_remove);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PINCTRL
|
||||
static int of_gpiochip_add_pin_range(struct gpio_chip *chip)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* OF helpers for the old of_mm_gpio_chip, used on ppc32 and nios2,
|
||||
* do not use in new code.
|
||||
*
|
||||
* Copyright (c) 2007-2008 MontaVista Software, Inc.
|
||||
*
|
||||
* Author: Anton Vorontsov <avorontsov@ru.mvista.com>
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_GPIO_LEGACY_OF_MM_GPIO_CHIP_H
|
||||
#define __LINUX_GPIO_LEGACY_OF_MM_GPIO_CHIP_H
|
||||
|
||||
#include <linux/gpio/driver.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
/*
|
||||
* OF GPIO chip for memory mapped banks
|
||||
*/
|
||||
struct of_mm_gpio_chip {
|
||||
struct gpio_chip gc;
|
||||
void (*save_regs)(struct of_mm_gpio_chip *mm_gc);
|
||||
void __iomem *regs;
|
||||
};
|
||||
|
||||
static inline struct of_mm_gpio_chip *to_of_mm_gpio_chip(struct gpio_chip *gc)
|
||||
{
|
||||
return container_of(gc, struct of_mm_gpio_chip, gc);
|
||||
}
|
||||
|
||||
extern int of_mm_gpiochip_add_data(struct device_node *np,
|
||||
struct of_mm_gpio_chip *mm_gc,
|
||||
void *data);
|
||||
extern void of_mm_gpiochip_remove(struct of_mm_gpio_chip *mm_gc);
|
||||
|
||||
#endif /* __LINUX_GPIO_LEGACY_OF_MM_GPIO_CHIP_H */
|
||||
Loading…
Reference in New Issue