[v1,2/2] gpiolib: Get rid of not used of_node member
Commit Message
All new drivers should use fwnode and / or parent to provide the
necessary information to the GPIO library.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/gpio/gpiolib-acpi.c | 10 ----------
drivers/gpio/gpiolib-acpi.h | 4 ----
drivers/gpio/gpiolib-of.c | 22 +++-------------------
drivers/gpio/gpiolib-of.h | 5 -----
drivers/gpio/gpiolib.c | 15 +--------------
include/linux/gpio/driver.h | 7 -------
6 files changed, 4 insertions(+), 59 deletions(-)
Comments
On Wed, Nov 09, 2022 at 05:07:06PM +0200, Andy Shevchenko wrote:
> All new drivers should use fwnode and / or parent to provide the
> necessary information to the GPIO library.
Please, ignore this series, it was wrong offset to send the patches from.
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on brgl/gpio/for-next]
[also build test ERROR on next-20221110]
[cannot apply to linus/master v6.1-rc4]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-of-Drop-redundant-check-in-of_mm_gpiochip_remove/20221109-230741
base: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
patch link: https://lore.kernel.org/r/20221109150706.38823-2-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 2/2] gpiolib: Get rid of not used of_node member
config: parisc-randconfig-r022-20221110
compiler: hppa-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/5f1308f0c8de844767f5bb944834bf7d71a714c6
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-of-Drop-redundant-check-in-of_mm_gpiochip_remove/20221109-230741
git checkout 5f1308f0c8de844767f5bb944834bf7d71a714c6
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=parisc SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/gpio/gpiolib-of.c: In function 'of_mm_gpiochip_add_data':
>> drivers/gpio/gpiolib-of.c:938:31: error: 'struct gpio_chip' has no member named 'of_node'; did you mean 'fwnode'?
938 | of_node_put(mm_gc->gc.of_node);
| ^~~~~~~
| fwnode
drivers/gpio/gpiolib-of.c:939:19: error: 'struct gpio_chip' has no member named 'of_node'; did you mean 'fwnode'?
939 | mm_gc->gc.of_node = of_node_get(np);
| ^~~~~~~
| fwnode
vim +938 drivers/gpio/gpiolib-of.c
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 897
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 898 /**
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 899 * of_mm_gpiochip_add_data - Add memory mapped GPIO chip (bank)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 900 * @np: device node of the GPIO chip
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 901 * @mm_gc: pointer to the of_mm_gpio_chip allocated structure
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 902 * @data: driver data to store in the struct gpio_chip
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 903 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 904 * To use this function you should allocate and fill mm_gc with:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 905 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 906 * 1) In the gpio_chip structure:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 907 * - all the callbacks
a19e3da5bc5fc6 drivers/of/gpio.c Anton Vorontsov 2010-06-08 908 * - of_gpio_n_cells
a19e3da5bc5fc6 drivers/of/gpio.c Anton Vorontsov 2010-06-08 909 * - of_xlate callback (optional)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 910 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 911 * 3) In the of_mm_gpio_chip structure:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 912 * - save_regs callback (optional)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 913 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 914 * If succeeded, this function will map bank's memory and will
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 915 * do all necessary work for you. Then you'll able to use .regs
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 916 * to manage GPIOs from the callbacks.
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 917 */
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 918 int of_mm_gpiochip_add_data(struct device_node *np,
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 919 struct of_mm_gpio_chip *mm_gc,
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 920 void *data)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 921 {
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 922 int ret = -ENOMEM;
a19e3da5bc5fc6 drivers/of/gpio.c Anton Vorontsov 2010-06-08 923 struct gpio_chip *gc = &mm_gc->gc;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 924
7eb6ce2f272336 drivers/gpio/gpiolib-of.c Rob Herring 2017-07-18 925 gc->label = kasprintf(GFP_KERNEL, "%pOF", np);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 926 if (!gc->label)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 927 goto err0;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 928
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 929 mm_gc->regs = of_iomap(np, 0);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 930 if (!mm_gc->regs)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 931 goto err1;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 932
21451155d88587 drivers/of/gpio.c Anton Vorontsov 2008-04-30 933 gc->base = -1;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 934
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 935 if (mm_gc->save_regs)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 936 mm_gc->save_regs(mm_gc);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 937
5d07a692f9562f drivers/gpio/gpiolib-of.c Liang He 2022-07-11 @938 of_node_put(mm_gc->gc.of_node);
5d07a692f9562f drivers/gpio/gpiolib-of.c Liang He 2022-07-11 939 mm_gc->gc.of_node = of_node_get(np);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 940
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 941 ret = gpiochip_add_data(gc, data);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 942 if (ret)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 943 goto err2;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 944
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 945 return 0;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 946 err2:
5d07a692f9562f drivers/gpio/gpiolib-of.c Liang He 2022-07-11 947 of_node_put(np);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 948 iounmap(mm_gc->regs);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 949 err1:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 950 kfree(gc->label);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 951 err0:
7eb6ce2f272336 drivers/gpio/gpiolib-of.c Rob Herring 2017-07-18 952 pr_err("%pOF: GPIO chip registration failed with status %d\n", np, ret);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 953 return ret;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 954 }
6d6624554da4a6 drivers/gpio/gpiolib-of.c Geert Uytterhoeven 2019-09-06 955 EXPORT_SYMBOL_GPL(of_mm_gpiochip_add_data);
594fa265e08407 drivers/of/gpio.c Grant Likely 2010-06-08 956
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on brgl/gpio/for-next]
[also build test ERROR on next-20221111]
[cannot apply to linus/master v6.1-rc4]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-of-Drop-redundant-check-in-of_mm_gpiochip_remove/20221109-230741
base: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
patch link: https://lore.kernel.org/r/20221109150706.38823-2-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v1 2/2] gpiolib: Get rid of not used of_node member
config: riscv-randconfig-r023-20221110
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 463da45892e2d2a262277b91b96f5f8c05dc25d0)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/5f1308f0c8de844767f5bb944834bf7d71a714c6
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-of-Drop-redundant-check-in-of_mm_gpiochip_remove/20221109-230741
git checkout 5f1308f0c8de844767f5bb944834bf7d71a714c6
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/gpio/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/gpio/gpiolib-of.c:938:24: error: no member named 'of_node' in 'struct gpio_chip'; did you mean 'fwnode'?
of_node_put(mm_gc->gc.of_node);
^~~~~~~
fwnode
include/linux/gpio/driver.h:411:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
drivers/gpio/gpiolib-of.c:939:12: error: no member named 'of_node' in 'struct gpio_chip'; did you mean 'fwnode'?
mm_gc->gc.of_node = of_node_get(np);
^~~~~~~
fwnode
include/linux/gpio/driver.h:411:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
2 errors generated.
vim +938 drivers/gpio/gpiolib-of.c
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 897
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 898 /**
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 899 * of_mm_gpiochip_add_data - Add memory mapped GPIO chip (bank)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 900 * @np: device node of the GPIO chip
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 901 * @mm_gc: pointer to the of_mm_gpio_chip allocated structure
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 902 * @data: driver data to store in the struct gpio_chip
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 903 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 904 * To use this function you should allocate and fill mm_gc with:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 905 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 906 * 1) In the gpio_chip structure:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 907 * - all the callbacks
a19e3da5bc5fc6 drivers/of/gpio.c Anton Vorontsov 2010-06-08 908 * - of_gpio_n_cells
a19e3da5bc5fc6 drivers/of/gpio.c Anton Vorontsov 2010-06-08 909 * - of_xlate callback (optional)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 910 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 911 * 3) In the of_mm_gpio_chip structure:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 912 * - save_regs callback (optional)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 913 *
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 914 * If succeeded, this function will map bank's memory and will
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 915 * do all necessary work for you. Then you'll able to use .regs
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 916 * to manage GPIOs from the callbacks.
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 917 */
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 918 int of_mm_gpiochip_add_data(struct device_node *np,
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 919 struct of_mm_gpio_chip *mm_gc,
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 920 void *data)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 921 {
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 922 int ret = -ENOMEM;
a19e3da5bc5fc6 drivers/of/gpio.c Anton Vorontsov 2010-06-08 923 struct gpio_chip *gc = &mm_gc->gc;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 924
7eb6ce2f272336 drivers/gpio/gpiolib-of.c Rob Herring 2017-07-18 925 gc->label = kasprintf(GFP_KERNEL, "%pOF", np);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 926 if (!gc->label)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 927 goto err0;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 928
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 929 mm_gc->regs = of_iomap(np, 0);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 930 if (!mm_gc->regs)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 931 goto err1;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 932
21451155d88587 drivers/of/gpio.c Anton Vorontsov 2008-04-30 933 gc->base = -1;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 934
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 935 if (mm_gc->save_regs)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 936 mm_gc->save_regs(mm_gc);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 937
5d07a692f9562f drivers/gpio/gpiolib-of.c Liang He 2022-07-11 @938 of_node_put(mm_gc->gc.of_node);
5d07a692f9562f drivers/gpio/gpiolib-of.c Liang He 2022-07-11 939 mm_gc->gc.of_node = of_node_get(np);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 940
3208b0f0c010b2 drivers/gpio/gpiolib-of.c Linus Walleij 2015-12-04 941 ret = gpiochip_add_data(gc, data);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 942 if (ret)
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 943 goto err2;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 944
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 945 return 0;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 946 err2:
5d07a692f9562f drivers/gpio/gpiolib-of.c Liang He 2022-07-11 947 of_node_put(np);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 948 iounmap(mm_gc->regs);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 949 err1:
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 950 kfree(gc->label);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 951 err0:
7eb6ce2f272336 drivers/gpio/gpiolib-of.c Rob Herring 2017-07-18 952 pr_err("%pOF: GPIO chip registration failed with status %d\n", np, ret);
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 953 return ret;
863fbf4966a7ac drivers/of/gpio.c Anton Vorontsov 2008-04-11 954 }
6d6624554da4a6 drivers/gpio/gpiolib-of.c Geert Uytterhoeven 2019-09-06 955 EXPORT_SYMBOL_GPL(of_mm_gpiochip_add_data);
594fa265e08407 drivers/of/gpio.c Grant Likely 2010-06-08 956
@@ -1363,16 +1363,6 @@ void acpi_gpiochip_remove(struct gpio_chip *chip)
kfree(acpi_gpio);
}
-void acpi_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev)
-{
- /* Set default fwnode to parent's one if present */
- if (gc->parent)
- ACPI_COMPANION_SET(&gdev->dev, ACPI_COMPANION(gc->parent));
-
- if (gc->fwnode)
- device_set_node(&gdev->dev, gc->fwnode);
-}
-
static int acpi_gpio_package_count(const union acpi_object *obj)
{
const union acpi_object *element = obj->package.elements;
@@ -38,8 +38,6 @@ struct acpi_gpio_info {
void acpi_gpiochip_add(struct gpio_chip *chip);
void acpi_gpiochip_remove(struct gpio_chip *chip);
-void acpi_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev);
-
void acpi_gpiochip_request_interrupts(struct gpio_chip *chip);
void acpi_gpiochip_free_interrupts(struct gpio_chip *chip);
@@ -62,8 +60,6 @@ int acpi_gpio_count(struct device *dev, const char *con_id);
static inline void acpi_gpiochip_add(struct gpio_chip *chip) { }
static inline void acpi_gpiochip_remove(struct gpio_chip *chip) { }
-static inline void acpi_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev) { }
-
static inline void
acpi_gpiochip_request_interrupts(struct gpio_chip *chip) { }
@@ -669,7 +669,7 @@ static struct gpio_desc *of_parse_own_gpio(struct device_node *np,
u32 tmp;
int ret;
- chip_np = chip->of_node;
+ chip_np = to_of_node(chip->fwnode);
if (!chip_np)
return ERR_PTR(-EINVAL);
@@ -761,7 +761,7 @@ static int of_gpiochip_scan_gpios(struct gpio_chip *chip)
struct device_node *np;
int ret;
- for_each_available_child_of_node(chip->of_node, np) {
+ for_each_available_child_of_node(to_of_node(chip->fwnode), np) {
if (!of_property_read_bool(np, "gpio-hog"))
continue;
@@ -972,7 +972,7 @@ EXPORT_SYMBOL_GPL(of_mm_gpiochip_remove);
#ifdef CONFIG_PINCTRL
static int of_gpiochip_add_pin_range(struct gpio_chip *chip)
{
- struct device_node *np = chip->of_node;
+ struct device_node *np = to_of_node(chip->fwnode);
struct of_phandle_args pinspec;
struct pinctrl_dev *pctldev;
int index = 0, ret;
@@ -1094,19 +1094,3 @@ void of_gpiochip_remove(struct gpio_chip *chip)
{
fwnode_handle_put(chip->fwnode);
}
-
-void of_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev)
-{
- /* Set default OF node to parent's one if present */
- if (gc->parent)
- gdev->dev.of_node = gc->parent->of_node;
-
- if (gc->fwnode)
- gc->of_node = to_of_node(gc->fwnode);
-
- /* If the gpiochip has an assigned OF node this takes precedence */
- if (gc->of_node)
- gdev->dev.of_node = gc->of_node;
- else
- gc->of_node = gdev->dev.of_node;
-}
@@ -14,7 +14,6 @@ struct gpio_desc *of_find_gpio(struct device *dev,
int of_gpiochip_add(struct gpio_chip *gc);
void of_gpiochip_remove(struct gpio_chip *gc);
int of_gpio_get_count(struct device *dev, const char *con_id);
-void of_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev);
#else
static inline struct gpio_desc *of_find_gpio(struct device *dev,
const char *con_id,
@@ -29,10 +28,6 @@ static inline int of_gpio_get_count(struct device *dev, const char *con_id)
{
return 0;
}
-static inline void of_gpio_dev_init(struct gpio_chip *gc,
- struct gpio_device *gdev)
-{
-}
#endif /* CONFIG_OF_GPIO */
extern struct notifier_block gpio_of_notifier;
@@ -646,7 +646,6 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
struct lock_class_key *lock_key,
struct lock_class_key *request_key)
{
- struct fwnode_handle *fwnode = NULL;
struct gpio_device *gdev;
unsigned long flags;
int base = gc->base;
@@ -654,11 +653,6 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
int ret = 0;
u32 ngpios;
- if (gc->fwnode)
- fwnode = gc->fwnode;
- else if (gc->parent)
- fwnode = dev_fwnode(gc->parent);
-
/*
* First: allocate and populate the internal stat container, and
* set up the struct device.
@@ -671,14 +665,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
gdev->chip = gc;
gc->gpiodev = gdev;
- of_gpio_dev_init(gc, gdev);
- acpi_gpio_dev_init(gc, gdev);
-
- /*
- * Assign fwnode depending on the result of the previous calls,
- * if none of them succeed, assign it to the parent's one.
- */
- gdev->dev.fwnode = dev_fwnode(&gdev->dev) ?: fwnode;
+ device_set_node(&gdev->dev, gc->fwnode ?: dev_fwnode(gc->parent));
gdev->id = ida_alloc(&gpio_ida, GFP_KERNEL);
if (gdev->id < 0) {
@@ -503,13 +503,6 @@ struct gpio_chip {
* the device tree automatically may have an OF translation
*/
- /**
- * @of_node:
- *
- * Pointer to a device tree node representing this GPIO controller.
- */
- struct device_node *of_node;
-
/**
* @of_gpio_n_cells:
*