mirror of
https://github.com/torvalds/linux
synced 2024-07-23 03:29:48 +00:00
gpiolib: split of_mm_gpio_chip out of linux/of_gpio.h
This is a rarely used feature that has nothing to do with the client-side of_gpio.h. Split it out with a separate header file and Kconfig option so it can be removed on its own timeline aside from removing the of_gpio consumer interfaces. Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
parent
a8e59744e1
commit
a99cc66807
|
@ -230,6 +230,7 @@ config PPC4xx_GPIO
|
||||||
bool "PPC4xx GPIO support"
|
bool "PPC4xx GPIO support"
|
||||||
depends on 44x
|
depends on 44x
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
|
select OF_GPIO_MM_GPIOCHIP
|
||||||
help
|
help
|
||||||
Enable gpiolib support for ppc440 based boards
|
Enable gpiolib support for ppc440 based boards
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_gpio.h>
|
#include <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||||
#include <linux/gpio/driver.h>
|
#include <linux/gpio/driver.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
|
|
@ -101,6 +101,7 @@ comment "Generic MPC8xx Options"
|
||||||
config 8xx_GPIO
|
config 8xx_GPIO
|
||||||
bool "GPIO API Support"
|
bool "GPIO API Support"
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
|
select OF_GPIO_MM_GPIOCHIP
|
||||||
help
|
help
|
||||||
Saying Y here will cause the ports on an MPC8xx processor to be used
|
Saying Y here will cause the ports on an MPC8xx processor to be used
|
||||||
with the GPIO API. If you say N here, the kernel needs less memory.
|
with the GPIO API. If you say N here, the kernel needs less memory.
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
#include <asm/fs_pd.h>
|
#include <asm/fs_pd.h>
|
||||||
|
|
||||||
#ifdef CONFIG_8xx_GPIO
|
#ifdef CONFIG_8xx_GPIO
|
||||||
#include <linux/of_gpio.h>
|
#include <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CPM_MAP_SIZE (0x4000)
|
#define CPM_MAP_SIZE (0x4000)
|
||||||
|
|
|
@ -244,6 +244,7 @@ config QE_GPIO
|
||||||
bool "QE GPIO support"
|
bool "QE GPIO support"
|
||||||
depends on QUICC_ENGINE
|
depends on QUICC_ENGINE
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
|
select OF_GPIO_MM_GPIOCHIP
|
||||||
help
|
help
|
||||||
Say Y here if you're going to use hardware that connects to the
|
Say Y here if you're going to use hardware that connects to the
|
||||||
QE GPIOs.
|
QE GPIOs.
|
||||||
|
@ -254,6 +255,7 @@ config CPM2
|
||||||
select CPM
|
select CPM
|
||||||
select HAVE_PCI
|
select HAVE_PCI
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
|
select OF_GPIO_MM_GPIOCHIP
|
||||||
help
|
help
|
||||||
The CPM2 (Communications Processor Module) is a coprocessor on
|
The CPM2 (Communications Processor Module) is a coprocessor on
|
||||||
embedded CPUs made by Freescale. Selecting this option means that
|
embedded CPUs made by Freescale. Selecting this option means that
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <mm/mmu_decl.h>
|
#include <mm/mmu_decl.h>
|
||||||
|
|
||||||
#if defined(CONFIG_CPM2) || defined(CONFIG_8xx_GPIO)
|
#if defined(CONFIG_CPM2) || defined(CONFIG_8xx_GPIO)
|
||||||
#include <linux/of_gpio.h>
|
#include <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int __init cpm_init(void)
|
static int __init cpm_init(void)
|
||||||
|
|
|
@ -39,6 +39,14 @@ config GPIOLIB_IRQCHIP
|
||||||
select IRQ_DOMAIN
|
select IRQ_DOMAIN
|
||||||
bool
|
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
|
config DEBUG_GPIO
|
||||||
bool "Debug GPIO calls"
|
bool "Debug GPIO calls"
|
||||||
depends on DEBUG_KERNEL
|
depends on DEBUG_KERNEL
|
||||||
|
@ -131,6 +139,7 @@ config GPIO_ALTERA
|
||||||
tristate "Altera GPIO"
|
tristate "Altera GPIO"
|
||||||
depends on OF_GPIO
|
depends on OF_GPIO
|
||||||
select GPIOLIB_IRQCHIP
|
select GPIOLIB_IRQCHIP
|
||||||
|
select OF_GPIO_MM_GPIOCHIP
|
||||||
help
|
help
|
||||||
Say Y or M here to build support for the Altera PIO device.
|
Say Y or M here to build support for the Altera PIO device.
|
||||||
|
|
||||||
|
@ -403,6 +412,7 @@ config GPIO_MENZ127
|
||||||
config GPIO_MM_LANTIQ
|
config GPIO_MM_LANTIQ
|
||||||
bool "Lantiq Memory mapped GPIOs"
|
bool "Lantiq Memory mapped GPIOs"
|
||||||
depends on LANTIQ && SOC_XWAY
|
depends on LANTIQ && SOC_XWAY
|
||||||
|
select OF_GPIO_MM_GPIOCHIP
|
||||||
help
|
help
|
||||||
This enables support for memory mapped GPIOs on the External Bus Unit
|
This enables support for memory mapped GPIOs on the External Bus Unit
|
||||||
(EBU) found on Lantiq SoCs. The GPIOs are output only as they are
|
(EBU) found on Lantiq SoCs. The GPIOs are output only as they are
|
||||||
|
@ -411,6 +421,7 @@ config GPIO_MM_LANTIQ
|
||||||
config GPIO_MPC5200
|
config GPIO_MPC5200
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on PPC_MPC52xx
|
depends on PPC_MPC52xx
|
||||||
|
select OF_GPIO_MM_GPIOCHIP
|
||||||
|
|
||||||
config GPIO_MPC8XXX
|
config GPIO_MPC8XXX
|
||||||
bool "MPC512x/MPC8xxx/QorIQ GPIO support"
|
bool "MPC512x/MPC8xxx/QorIQ GPIO support"
|
||||||
|
|
|
@ -59,11 +59,6 @@ the device tree back-end. It is legacy and should not be used in new code.
|
||||||
|
|
||||||
Work items:
|
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()
|
|
||||||
from the kernel.
|
|
||||||
|
|
||||||
- Change all consumer drivers that #include <linux/of_gpio.h> to
|
- Change all consumer drivers that #include <linux/of_gpio.h> to
|
||||||
#include <linux/gpio/consumer.h> and stop doing custom parsing of the
|
#include <linux/gpio/consumer.h> and stop doing custom parsing of the
|
||||||
GPIO lines from the device tree. This can be tricky and often ivolves
|
GPIO lines from the device tree. This can be tricky and often ivolves
|
||||||
|
@ -81,6 +76,16 @@ Work items:
|
||||||
uses <linux/gpio/consumer.h> or <linux/gpio/driver.h> instead.
|
uses <linux/gpio/consumer.h> or <linux/gpio/driver.h> instead.
|
||||||
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
Get rid of <linux/gpio.h>
|
Get rid of <linux/gpio.h>
|
||||||
|
|
||||||
This legacy header is a one stop shop for anything GPIO is closely tied
|
This legacy header is a one stop shop for anything GPIO is closely tied
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/gpio/driver.h>
|
#include <linux/gpio/driver.h>
|
||||||
#include <linux/of_gpio.h> /* For of_mm_gpio_chip */
|
#include <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
#define ALTERA_GPIO_MAX_NGPIO 32
|
#define ALTERA_GPIO_MAX_NGPIO 32
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/gpio/driver.h>
|
#include <linux/gpio/driver.h>
|
||||||
|
#include <linux/gpio/legacy-of-mm-gpiochip.h.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_gpio.h>
|
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/of_gpio.h>
|
#include <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
|
@ -892,6 +892,8 @@ static int of_gpio_simple_xlate(struct gpio_chip *gc,
|
||||||
return gpiospec->args[0];
|
return gpiospec->args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#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)
|
* of_mm_gpiochip_add_data - Add memory mapped GPIO chip (bank)
|
||||||
* @np: device node of the GPIO chip
|
* @np: device node of the GPIO chip
|
||||||
|
@ -964,6 +966,7 @@ void of_mm_gpiochip_remove(struct of_mm_gpio_chip *mm_gc)
|
||||||
kfree(gc->label);
|
kfree(gc->label);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(of_mm_gpiochip_remove);
|
EXPORT_SYMBOL_GPL(of_mm_gpiochip_remove);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PINCTRL
|
#ifdef CONFIG_PINCTRL
|
||||||
static int of_gpiochip_add_pin_range(struct gpio_chip *chip)
|
static int of_gpiochip_add_pin_range(struct gpio_chip *chip)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_gpio.h> /* for of_mm_gpio_chip */
|
#include <linux/gpio/legacy-of-mm-gpiochip.h>
|
||||||
#include <linux/gpio/consumer.h>
|
#include <linux/gpio/consumer.h>
|
||||||
#include <linux/gpio/driver.h>
|
#include <linux/gpio/driver.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
|
36
include/linux/gpio/legacy-of-mm-gpiochip.h
Normal file
36
include/linux/gpio/legacy-of-mm-gpiochip.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/* 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 */
|
|
@ -19,30 +19,9 @@ struct device_node;
|
||||||
|
|
||||||
#ifdef CONFIG_OF_GPIO
|
#ifdef CONFIG_OF_GPIO
|
||||||
|
|
||||||
#include <linux/container_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_get_named_gpio(const struct device_node *np,
|
extern int of_get_named_gpio(const struct device_node *np,
|
||||||
const char *list_name, int index);
|
const char *list_name, int index);
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
#else /* CONFIG_OF_GPIO */
|
#else /* CONFIG_OF_GPIO */
|
||||||
|
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
|
Loading…
Reference in a new issue