* [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode
@ 2022-03-30 14:50 Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 01/13] gpiolib: Introduce for_each_gpiochip_node() loop helper Andy Shevchenko
` (12 more replies)
0 siblings, 13 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
This is a spin-off of the previous work of switching GPIO library
to use fwnode instead of of_node. Here we introduce a couple of
a new macro helpers, which allows to switch some of the drivers
to use fwnode and partially fwnode APIs.
Bart, Linus, I can take it thru my tree with an immutable branch if
it's the way you prefer, otherwise please suggest on how to proceed.
Changelog v3:
- moved count initialization to the definition in patch 2 (Geert)
- replaced of_args by args, used %pfwP in patch 7 (Geert)
- fixed kernel doc warning in patch 7
- added tags to patches 1, 2, 6, and 7 (Geert)
- added tag to patch 4 (Fabien)
- renamed MREG to MESON_REG in patch 9 (Neil)
- added tag to patch 10 (Neil)
- used --base for cover-letter
Changelog v2:
- properly based, so kbuild bot may test it (LKP)
- fixed typo in the macro (Geert)
- split to two macro helpers and rename the gpiochip_count()
- tagged one of stm32 and one of meson patches (Fabien, Neil)
- unified previously standalone armada patch
- due to above rewrote the armada patch from v1 completely (Sergey)
- added a lot of a new patches
- compile tested all of them on x86
Andy Shevchenko (13):
gpiolib: Introduce for_each_gpiochip_node() loop helper
gpiolib: Introduce gpiochip_node_count() helper
pinctrl: stm32: Replace custom code by gpiochip_node_count() call
pinctrl: stm32: Switch to use for_each_gpiochip_node() helper
pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
pinctrl: renesas: rza1: Replace custom code by gpiochip_node_count()
call
pinctrl: renesas: rza1: Switch to use for_each_gpiochip_node() helper
pinctrl: npcm7xx: Switch to use for_each_gpiochip_node() helper
pinctrl: meson: Rename REG_* to MESON_REG_*
pinctrl: meson: Enable COMPILE_TEST
pinctrl: meson: Replace custom code by gpiochip_node_count() call
pinctrl: armada-37xx: Switch to use fwnode instead of of_node
pinctrl: armada-37xx: Reuse GPIO fwnode in
armada_37xx_irqchip_register()
drivers/pinctrl/meson/Kconfig | 2 +-
drivers/pinctrl/meson/pinctrl-meson.c | 52 ++++---
drivers/pinctrl/meson/pinctrl-meson.h | 24 ++--
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 34 ++---
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 142 +++++++++-----------
drivers/pinctrl/renesas/pinctrl-rza1.c | 47 ++-----
drivers/pinctrl/samsung/pinctrl-samsung.c | 30 ++---
drivers/pinctrl/samsung/pinctrl-samsung.h | 2 +-
drivers/pinctrl/stm32/pinctrl-stm32.c | 80 +++++------
include/linux/gpio/driver.h | 18 ++-
10 files changed, 191 insertions(+), 240 deletions(-)
base-commit: a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57
--
2.35.1
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 01/13] gpiolib: Introduce for_each_gpiochip_node() loop helper
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 02/13] gpiolib: Introduce gpiochip_node_count() helper Andy Shevchenko
` (11 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Introduce for_each_gpiochip_node() loop helper which iterates over
the GPIO controller child nodes of a given device.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
include/linux/gpio/driver.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h
index b0728c8ad90c..2142ffc7338c 100644
--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -3,13 +3,14 @@
#define __LINUX_GPIO_DRIVER_H
#include <linux/device.h>
-#include <linux/types.h>
#include <linux/irq.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/lockdep.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinconf-generic.h>
+#include <linux/property.h>
+#include <linux/types.h>
struct gpio_desc;
struct of_phandle_args;
@@ -747,4 +748,8 @@ static inline void gpiochip_unlock_as_irq(struct gpio_chip *gc,
}
#endif /* CONFIG_GPIOLIB */
+#define for_each_gpiochip_node(dev, child) \
+ device_for_each_child_node(dev, child) \
+ if (!fwnode_property_present(child, "gpio-controller")) {} else
+
#endif /* __LINUX_GPIO_DRIVER_H */
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 02/13] gpiolib: Introduce gpiochip_node_count() helper
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 01/13] gpiolib: Introduce for_each_gpiochip_node() loop helper Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 03/13] pinctrl: stm32: Replace custom code by gpiochip_node_count() call Andy Shevchenko
` (10 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
The gpiochip_node_count() helper iterates over the device child nodes that
have the "gpio-controller" property set. It returns the number of such nodes
under a given device.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
include/linux/gpio/driver.h | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h
index 2142ffc7338c..e38565a5056c 100644
--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -752,4 +752,15 @@ static inline void gpiochip_unlock_as_irq(struct gpio_chip *gc,
device_for_each_child_node(dev, child) \
if (!fwnode_property_present(child, "gpio-controller")) {} else
+static inline unsigned int gpiochip_node_count(struct device *dev)
+{
+ struct fwnode_handle *child;
+ unsigned int count = 0;
+
+ for_each_gpiochip_node(dev, child)
+ count++;
+
+ return count;
+}
+
#endif /* __LINUX_GPIO_DRIVER_H */
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 03/13] pinctrl: stm32: Replace custom code by gpiochip_node_count() call
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 01/13] gpiolib: Introduce for_each_gpiochip_node() loop helper Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 02/13] gpiolib: Introduce gpiochip_node_count() helper Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 04/13] pinctrl: stm32: Switch to use for_each_gpiochip_node() helper Andy Shevchenko
` (9 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Since we have generic function to count GPIO controller nodes
under a given device, there is no need to open code it. Replace
custom code by gpiochip_node_count() call.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Fabien Dessenne <fabien.dessenne@foss.st.com>
---
drivers/pinctrl/stm32/pinctrl-stm32.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c
index 9ed764731570..91b9a64b649e 100644
--- a/drivers/pinctrl/stm32/pinctrl-stm32.c
+++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
@@ -1423,7 +1423,8 @@ int stm32_pctl_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct stm32_pinctrl *pctl;
struct pinctrl_pin_desc *pins;
- int i, ret, hwlock_id, banks = 0;
+ int i, ret, hwlock_id;
+ unsigned int banks;
if (!np)
return -EINVAL;
@@ -1513,10 +1514,7 @@ int stm32_pctl_probe(struct platform_device *pdev)
return PTR_ERR(pctl->pctl_dev);
}
- for_each_available_child_of_node(np, child)
- if (of_property_read_bool(child, "gpio-controller"))
- banks++;
-
+ banks = gpiochip_node_count(dev);
if (!banks) {
dev_err(dev, "at least one GPIO bank is required\n");
return -EINVAL;
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 04/13] pinctrl: stm32: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (2 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 03/13] pinctrl: stm32: Replace custom code by gpiochip_node_count() call Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
` (8 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Switch the code to use for_each_gpiochip_node() helper.
While at it, in order to avoid additional churn in the future,
switch to fwnode APIs where it makes sense.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Fabien Dessenne <fabien.dessenne@foss.st.com>
---
drivers/pinctrl/stm32/pinctrl-stm32.c | 72 ++++++++++++---------------
1 file changed, 33 insertions(+), 39 deletions(-)
diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c
index 91b9a64b649e..09952c463f67 100644
--- a/drivers/pinctrl/stm32/pinctrl-stm32.c
+++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
@@ -24,6 +24,7 @@
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <linux/slab.h>
@@ -1215,13 +1216,12 @@ static const struct pinconf_ops stm32_pconf_ops = {
.pin_config_dbg_show = stm32_pconf_dbg_show,
};
-static int stm32_gpiolib_register_bank(struct stm32_pinctrl *pctl,
- struct device_node *np)
+static int stm32_gpiolib_register_bank(struct stm32_pinctrl *pctl, struct fwnode_handle *fwnode)
{
struct stm32_gpio_bank *bank = &pctl->banks[pctl->nbanks];
int bank_ioport_nr;
struct pinctrl_gpio_range *range = &bank->range;
- struct of_phandle_args args;
+ struct fwnode_reference_args args;
struct device *dev = pctl->dev;
struct resource res;
int npins = STM32_GPIO_PINS_PER_BANK;
@@ -1230,7 +1230,7 @@ static int stm32_gpiolib_register_bank(struct stm32_pinctrl *pctl,
if (!IS_ERR(bank->rstc))
reset_control_deassert(bank->rstc);
- if (of_address_to_resource(np, 0, &res))
+ if (of_address_to_resource(to_of_node(fwnode), 0, &res))
return -ENODEV;
bank->base = devm_ioremap_resource(dev, &res);
@@ -1245,15 +1245,15 @@ static int stm32_gpiolib_register_bank(struct stm32_pinctrl *pctl,
bank->gpio_chip = stm32_gpio_template;
- of_property_read_string(np, "st,bank-name", &bank->gpio_chip.label);
+ fwnode_property_read_string(fwnode, "st,bank-name", &bank->gpio_chip.label);
- if (!of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, i, &args)) {
+ if (!fwnode_property_get_reference_args(fwnode, "gpio-ranges", NULL, 3, i, &args)) {
bank_nr = args.args[1] / STM32_GPIO_PINS_PER_BANK;
bank->gpio_chip.base = args.args[1];
/* get the last defined gpio line (offset + nb of pins) */
npins = args.args[0] + args.args[2];
- while (!of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, ++i, &args))
+ while (!fwnode_property_get_reference_args(fwnode, "gpio-ranges", NULL, 3, ++i, &args))
npins = max(npins, (int)(args.args[0] + args.args[2]));
} else {
bank_nr = pctl->nbanks;
@@ -1268,20 +1268,20 @@ static int stm32_gpiolib_register_bank(struct stm32_pinctrl *pctl,
&pctl->banks[bank_nr].range);
}
- if (of_property_read_u32(np, "st,bank-ioport", &bank_ioport_nr))
+ if (fwnode_property_read_u32(fwnode, "st,bank-ioport", &bank_ioport_nr))
bank_ioport_nr = bank_nr;
bank->gpio_chip.base = bank_nr * STM32_GPIO_PINS_PER_BANK;
bank->gpio_chip.ngpio = npins;
- bank->gpio_chip.of_node = np;
+ bank->gpio_chip.fwnode = fwnode;
bank->gpio_chip.parent = dev;
bank->bank_nr = bank_nr;
bank->bank_ioport_nr = bank_ioport_nr;
spin_lock_init(&bank->lock);
/* create irq hierarchical domain */
- bank->fwnode = of_node_to_fwnode(np);
+ bank->fwnode = fwnode;
bank->domain = irq_domain_create_hierarchy(pctl->domain, 0,
STM32_GPIO_IRQ_LINE, bank->fwnode,
@@ -1418,7 +1418,7 @@ static int stm32_pctrl_create_pins_tab(struct stm32_pinctrl *pctl,
int stm32_pctl_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
- struct device_node *child;
+ struct fwnode_handle *child;
const struct of_device_id *match;
struct device *dev = &pdev->dev;
struct stm32_pinctrl *pctl;
@@ -1525,40 +1525,34 @@ int stm32_pctl_probe(struct platform_device *pdev)
return -ENOMEM;
i = 0;
- for_each_available_child_of_node(np, child) {
+ for_each_gpiochip_node(dev, child) {
struct stm32_gpio_bank *bank = &pctl->banks[i];
+ struct device_node *np = to_of_node(child);
- if (of_property_read_bool(child, "gpio-controller")) {
- bank->rstc = of_reset_control_get_exclusive(child,
- NULL);
- if (PTR_ERR(bank->rstc) == -EPROBE_DEFER) {
- of_node_put(child);
- return -EPROBE_DEFER;
- }
-
- bank->clk = of_clk_get_by_name(child, NULL);
- if (IS_ERR(bank->clk)) {
- if (PTR_ERR(bank->clk) != -EPROBE_DEFER)
- dev_err(dev,
- "failed to get clk (%ld)\n",
- PTR_ERR(bank->clk));
- of_node_put(child);
- return PTR_ERR(bank->clk);
- }
- i++;
+ bank->rstc = of_reset_control_get_exclusive(np, NULL);
+ if (PTR_ERR(bank->rstc) == -EPROBE_DEFER) {
+ fwnode_handle_put(child);
+ return -EPROBE_DEFER;
}
- }
- for_each_available_child_of_node(np, child) {
- if (of_property_read_bool(child, "gpio-controller")) {
- ret = stm32_gpiolib_register_bank(pctl, child);
- if (ret) {
- of_node_put(child);
- return ret;
- }
+ bank->clk = of_clk_get_by_name(np, NULL);
+ if (IS_ERR(bank->clk)) {
+ if (PTR_ERR(bank->clk) != -EPROBE_DEFER)
+ dev_err(dev, "failed to get clk (%ld)\n", PTR_ERR(bank->clk));
+ fwnode_handle_put(child);
+ return PTR_ERR(bank->clk);
+ }
+ i++;
+ }
- pctl->nbanks++;
+ for_each_gpiochip_node(dev, child) {
+ ret = stm32_gpiolib_register_bank(pctl, child);
+ if (ret) {
+ fwnode_handle_put(child);
+ return ret;
}
+
+ pctl->nbanks++;
}
dev_info(dev, "Pinctrl STM32 initialized\n");
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 05/13] pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (3 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 04/13] pinctrl: stm32: Switch to use for_each_gpiochip_node() helper Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 17:25 ` kernel test robot
` (4 more replies)
2022-03-30 14:50 ` [PATCH v3 06/13] pinctrl: renesas: rza1: Replace custom code by gpiochip_node_count() call Andy Shevchenko
` (7 subsequent siblings)
12 siblings, 5 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Switch the code to use for_each_gpiochip_node() helper.
While at it, in order to avoid additional churn in the future,
switch to fwnode APIs where it makes sense.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/samsung/pinctrl-samsung.c | 30 +++++++++++------------
drivers/pinctrl/samsung/pinctrl-samsung.h | 2 +-
2 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
index f610beab23a0..26d309d2516d 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.c
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
@@ -18,6 +18,7 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/io.h>
+#include <linux/property.h>
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/gpio/driver.h>
@@ -966,7 +967,7 @@ static int samsung_gpiolib_register(struct platform_device *pdev,
gc->base = bank->grange.base;
gc->ngpio = bank->nr_pins;
gc->parent = &pdev->dev;
- gc->of_node = bank->of_node;
+ gc->fwnode = bank->fwnode;
gc->label = bank->name;
ret = devm_gpiochip_add_data(&pdev->dev, gc, bank);
@@ -1002,27 +1003,25 @@ samsung_pinctrl_get_soc_data_for_of_alias(struct platform_device *pdev)
return &(of_data->ctrl[id]);
}
-static void samsung_banks_of_node_put(struct samsung_pinctrl_drv_data *d)
+static void samsung_banks_node_put(struct samsung_pinctrl_drv_data *d)
{
struct samsung_pin_bank *bank;
unsigned int i;
bank = d->pin_banks;
for (i = 0; i < d->nr_banks; ++i, ++bank)
- of_node_put(bank->of_node);
+ fwnode_handle_put(bank->fwnode);
}
/*
* Iterate over all driver pin banks to find one matching the name of node,
* skipping optional "-gpio" node suffix. When found, assign node to the bank.
*/
-static void samsung_banks_of_node_get(struct device *dev,
- struct samsung_pinctrl_drv_data *d,
- struct device_node *node)
+static void samsung_banks_node_get(struct device *dev, struct samsung_pinctrl_drv_data *d)
{
const char *suffix = "-gpio-bank";
struct samsung_pin_bank *bank;
- struct device_node *child;
+ struct fwnode_handle *child;
/* Pin bank names are up to 4 characters */
char node_name[20];
unsigned int i;
@@ -1038,17 +1037,17 @@ static void samsung_banks_of_node_get(struct device *dev,
continue;
}
- for_each_child_of_node(node, child) {
- if (!of_find_property(child, "gpio-controller", NULL))
- continue;
- if (of_node_name_eq(child, node_name))
+ for_each_gpiochip_node(dev, child) {
+ struct device_node *np = to_of_node(child);
+
+ if (of_node_name_eq(np, node_name))
break;
- else if (of_node_name_eq(child, bank->name))
+ if (of_node_name_eq(np, bank->name))
break;
}
if (child)
- bank->of_node = child;
+ bank->fwnode = child;
else
dev_warn(dev, "Missing node for bank %s - invalid DTB\n",
bank->name);
@@ -1061,7 +1060,6 @@ static const struct samsung_pin_ctrl *
samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d,
struct platform_device *pdev)
{
- struct device_node *node = pdev->dev.of_node;
const struct samsung_pin_bank_data *bdata;
const struct samsung_pin_ctrl *ctrl;
struct samsung_pin_bank *bank;
@@ -1125,7 +1123,7 @@ samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d,
*/
d->virt_base = virt_base[0];
- samsung_banks_of_node_get(&pdev->dev, d, node);
+ samsung_banks_node_get(&pdev->dev, d);
d->pin_base = pin_base;
pin_base += d->nr_pins;
@@ -1186,7 +1184,7 @@ static int samsung_pinctrl_probe(struct platform_device *pdev)
err_unregister:
samsung_pinctrl_unregister(pdev, drvdata);
err_put_banks:
- samsung_banks_of_node_put(drvdata);
+ samsung_banks_node_put(drvdata);
return ret;
}
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.h b/drivers/pinctrl/samsung/pinctrl-samsung.h
index 5b32d3f30fcd..fc6f5199c548 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.h
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.h
@@ -165,7 +165,7 @@ struct samsung_pin_bank {
u32 pin_base;
void *soc_priv;
- struct device_node *of_node;
+ struct fwnode_handle *fwnode;
struct samsung_pinctrl_drv_data *drvdata;
struct irq_domain *irq_domain;
struct gpio_chip gpio_chip;
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 06/13] pinctrl: renesas: rza1: Replace custom code by gpiochip_node_count() call
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (4 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 07/13] pinctrl: renesas: rza1: Switch to use for_each_gpiochip_node() helper Andy Shevchenko
` (6 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Since we have generic function to count GPIO controller nodes
under a given device, there is no need to open code it. Replace
custom code by gpiochip_node_count() call.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
drivers/pinctrl/renesas/pinctrl-rza1.c | 17 +----------------
1 file changed, 1 insertion(+), 16 deletions(-)
diff --git a/drivers/pinctrl/renesas/pinctrl-rza1.c b/drivers/pinctrl/renesas/pinctrl-rza1.c
index c1d6e9512c7a..acc00b1a955d 100644
--- a/drivers/pinctrl/renesas/pinctrl-rza1.c
+++ b/drivers/pinctrl/renesas/pinctrl-rza1.c
@@ -1154,21 +1154,6 @@ static const struct pinmux_ops rza1_pinmux_ops = {
* RZ/A1 pin controller driver operations
*/
-static unsigned int rza1_count_gpio_chips(struct device_node *np)
-{
- struct device_node *child;
- unsigned int count = 0;
-
- for_each_child_of_node(np, child) {
- if (!of_property_read_bool(child, "gpio-controller"))
- continue;
-
- count++;
- }
-
- return count;
-}
-
/**
* rza1_parse_gpiochip() - parse and register a gpio chip and pin range
*
@@ -1255,7 +1240,7 @@ static int rza1_gpio_register(struct rza1_pinctrl *rza1_pctl)
unsigned int i;
int ret;
- ngpiochips = rza1_count_gpio_chips(np);
+ ngpiochips = gpiochip_node_count(rza1_pctl->dev);
if (ngpiochips == 0) {
dev_dbg(rza1_pctl->dev, "No gpiochip registered\n");
return 0;
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 07/13] pinctrl: renesas: rza1: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (5 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 06/13] pinctrl: renesas: rza1: Replace custom code by gpiochip_node_count() call Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 08/13] pinctrl: npcm7xx: " Andy Shevchenko
` (5 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Switch the code to use for_each_gpiochip_node() helper.
While at it, in order to avoid additional churn in the future,
switch to fwnode APIs where it makes sense.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
drivers/pinctrl/renesas/pinctrl-rza1.c | 30 +++++++++++---------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/pinctrl/renesas/pinctrl-rza1.c b/drivers/pinctrl/renesas/pinctrl-rza1.c
index acc00b1a955d..529c0fc4ec06 100644
--- a/drivers/pinctrl/renesas/pinctrl-rza1.c
+++ b/drivers/pinctrl/renesas/pinctrl-rza1.c
@@ -24,6 +24,7 @@
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
+#include <linux/property.h>
#include <linux/slab.h>
#include "../core.h"
@@ -1161,22 +1162,22 @@ static const struct pinmux_ops rza1_pinmux_ops = {
* defined by gpio device tree binding documentation.
*
* @rza1_pctl: RZ/A1 pin controller device
- * @np: of gpio-controller node
+ * @fwnode: gpio-controller firmware node
* @chip: gpio chip to register to gpiolib
* @range: pin range to register to pinctrl core
*/
static int rza1_parse_gpiochip(struct rza1_pinctrl *rza1_pctl,
- struct device_node *np,
+ struct fwnode_handle *fwnode,
struct gpio_chip *chip,
struct pinctrl_gpio_range *range)
{
const char *list_name = "gpio-ranges";
- struct of_phandle_args of_args;
+ struct fwnode_reference_args args;
unsigned int gpioport;
u32 pinctrl_base;
int ret;
- ret = of_parse_phandle_with_fixed_args(np, list_name, 3, 0, &of_args);
+ ret = fwnode_property_get_reference_args(fwnode, list_name, NULL, 3, 0, &args);
if (ret) {
dev_err(rza1_pctl->dev, "Unable to parse %s list property\n",
list_name);
@@ -1187,7 +1188,7 @@ static int rza1_parse_gpiochip(struct rza1_pinctrl *rza1_pctl,
* Find out on which port this gpio-chip maps to by inspecting the
* second argument of the "gpio-ranges" property.
*/
- pinctrl_base = of_args.args[1];
+ pinctrl_base = args.args[1];
gpioport = RZA1_PIN_ID_TO_PORT(pinctrl_base);
if (gpioport >= RZA1_NPORTS) {
dev_err(rza1_pctl->dev,
@@ -1197,19 +1198,18 @@ static int rza1_parse_gpiochip(struct rza1_pinctrl *rza1_pctl,
*chip = rza1_gpiochip_template;
chip->base = -1;
- chip->label = devm_kasprintf(rza1_pctl->dev, GFP_KERNEL, "%pOFn",
- np);
+ chip->ngpio = args.args[2];
+ chip->label = devm_kasprintf(rza1_pctl->dev, GFP_KERNEL, "%pfwP", fwnode);
if (!chip->label)
return -ENOMEM;
- chip->ngpio = of_args.args[2];
- chip->of_node = np;
+ chip->fwnode = fwnode;
chip->parent = rza1_pctl->dev;
range->id = gpioport;
range->name = chip->label;
range->pin_base = range->base = pinctrl_base;
- range->npins = of_args.args[2];
+ range->npins = args.args[2];
range->gc = chip;
ret = devm_gpiochip_add_data(rza1_pctl->dev, chip,
@@ -1232,10 +1232,9 @@ static int rza1_parse_gpiochip(struct rza1_pinctrl *rza1_pctl,
*/
static int rza1_gpio_register(struct rza1_pinctrl *rza1_pctl)
{
- struct device_node *np = rza1_pctl->dev->of_node;
struct pinctrl_gpio_range *gpio_ranges;
struct gpio_chip *gpio_chips;
- struct device_node *child;
+ struct fwnode_handle *child;
unsigned int ngpiochips;
unsigned int i;
int ret;
@@ -1254,14 +1253,11 @@ static int rza1_gpio_register(struct rza1_pinctrl *rza1_pctl)
return -ENOMEM;
i = 0;
- for_each_child_of_node(np, child) {
- if (!of_property_read_bool(child, "gpio-controller"))
- continue;
-
+ for_each_gpiochip_node(rza1_pctl->dev, child) {
ret = rza1_parse_gpiochip(rza1_pctl, child, &gpio_chips[i],
&gpio_ranges[i]);
if (ret) {
- of_node_put(child);
+ fwnode_handle_put(child);
return ret;
}
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 08/13] pinctrl: npcm7xx: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (6 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 07/13] pinctrl: renesas: rza1: Switch to use for_each_gpiochip_node() helper Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 09/13] pinctrl: meson: Rename REG_* to MESON_REG_* Andy Shevchenko
` (4 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Switch the code to use for_each_gpiochip_node() helper.
While at it, in order to avoid additional churn in the future,
do the following:
- use a temporary variable for struct device pointer to shorten a few lines
- get rid of a temporary variable for vIRQ number, assign it directly
- switch to fwnode APIs where it makes sense
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 142 ++++++++++------------
1 file changed, 62 insertions(+), 80 deletions(-)
diff --git a/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c b/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
index 9557fac5d11c..90a184a28ae7 100644
--- a/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
+++ b/drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c
@@ -17,6 +17,7 @@
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regmap.h>
/* GCR registers */
@@ -1862,88 +1863,69 @@ static int npcm7xx_gpio_of(struct npcm7xx_pinctrl *pctrl)
{
int ret = -ENXIO;
struct resource res;
- int id = 0, irq;
- struct device_node *np;
- struct of_phandle_args pinspec;
-
- for_each_available_child_of_node(pctrl->dev->of_node, np)
- if (of_find_property(np, "gpio-controller", NULL)) {
- ret = of_address_to_resource(np, 0, &res);
- if (ret < 0) {
- dev_err(pctrl->dev,
- "Resource fail for GPIO bank %u\n", id);
- return ret;
- }
-
- pctrl->gpio_bank[id].base =
- ioremap(res.start, resource_size(&res));
-
- irq = irq_of_parse_and_map(np, 0);
- if (irq < 0) {
- dev_err(pctrl->dev,
- "No IRQ for GPIO bank %u\n", id);
- ret = irq;
- return ret;
- }
-
- ret = bgpio_init(&pctrl->gpio_bank[id].gc,
- pctrl->dev, 4,
- pctrl->gpio_bank[id].base +
- NPCM7XX_GP_N_DIN,
- pctrl->gpio_bank[id].base +
- NPCM7XX_GP_N_DOUT,
- NULL,
- NULL,
- pctrl->gpio_bank[id].base +
- NPCM7XX_GP_N_IEM,
- BGPIOF_READ_OUTPUT_REG_SET);
- if (ret) {
- dev_err(pctrl->dev, "bgpio_init() failed\n");
- return ret;
- }
-
- ret = of_parse_phandle_with_fixed_args(np,
- "gpio-ranges", 3,
- 0, &pinspec);
- if (ret < 0) {
- dev_err(pctrl->dev,
- "gpio-ranges fail for GPIO bank %u\n",
- id);
- return ret;
- }
-
- pctrl->gpio_bank[id].irq = irq;
- pctrl->gpio_bank[id].irq_chip = npcmgpio_irqchip;
- pctrl->gpio_bank[id].gc.parent = pctrl->dev;
- pctrl->gpio_bank[id].irqbase =
- id * NPCM7XX_GPIO_PER_BANK;
- pctrl->gpio_bank[id].pinctrl_id = pinspec.args[0];
- pctrl->gpio_bank[id].gc.base = pinspec.args[1];
- pctrl->gpio_bank[id].gc.ngpio = pinspec.args[2];
- pctrl->gpio_bank[id].gc.owner = THIS_MODULE;
- pctrl->gpio_bank[id].gc.label =
- devm_kasprintf(pctrl->dev, GFP_KERNEL, "%pOF",
- np);
- if (pctrl->gpio_bank[id].gc.label == NULL)
- return -ENOMEM;
-
- pctrl->gpio_bank[id].gc.dbg_show = npcmgpio_dbg_show;
- pctrl->gpio_bank[id].direction_input =
- pctrl->gpio_bank[id].gc.direction_input;
- pctrl->gpio_bank[id].gc.direction_input =
- npcmgpio_direction_input;
- pctrl->gpio_bank[id].direction_output =
- pctrl->gpio_bank[id].gc.direction_output;
- pctrl->gpio_bank[id].gc.direction_output =
- npcmgpio_direction_output;
- pctrl->gpio_bank[id].request =
- pctrl->gpio_bank[id].gc.request;
- pctrl->gpio_bank[id].gc.request = npcmgpio_gpio_request;
- pctrl->gpio_bank[id].gc.free = npcmgpio_gpio_free;
- pctrl->gpio_bank[id].gc.of_node = np;
- id++;
+ struct device *dev = pctrl->dev;
+ struct fwnode_reference_args args;
+ struct fwnode_handle *child;
+ int id = 0;
+
+ for_each_gpiochip_node(dev, child) {
+ struct device_node *np = to_of_node(child);
+
+ ret = of_address_to_resource(np, 0, &res);
+ if (ret < 0) {
+ dev_err(dev, "Resource fail for GPIO bank %u\n", id);
+ return ret;
+ }
+
+ pctrl->gpio_bank[id].base = ioremap(res.start, resource_size(&res));
+
+ ret = bgpio_init(&pctrl->gpio_bank[id].gc, dev, 4,
+ pctrl->gpio_bank[id].base + NPCM7XX_GP_N_DIN,
+ pctrl->gpio_bank[id].base + NPCM7XX_GP_N_DOUT,
+ NULL,
+ NULL,
+ pctrl->gpio_bank[id].base + NPCM7XX_GP_N_IEM,
+ BGPIOF_READ_OUTPUT_REG_SET);
+ if (ret) {
+ dev_err(dev, "bgpio_init() failed\n");
+ return ret;
}
+ ret = fwnode_property_get_reference_args(child, "gpio-ranges", NULL, 3, 0, &args);
+ if (ret < 0) {
+ dev_err(dev, "gpio-ranges fail for GPIO bank %u\n", id);
+ return ret;
+ }
+
+ ret = irq_of_parse_and_map(np, 0);
+ if (ret < 0) {
+ dev_err(dev, "No IRQ for GPIO bank %u\n", id);
+ return ret;
+ }
+ pctrl->gpio_bank[id].irq = ret;
+ pctrl->gpio_bank[id].irq_chip = npcmgpio_irqchip;
+ pctrl->gpio_bank[id].irqbase = id * NPCM7XX_GPIO_PER_BANK;
+ pctrl->gpio_bank[id].pinctrl_id = args.args[0];
+ pctrl->gpio_bank[id].gc.base = args.args[1];
+ pctrl->gpio_bank[id].gc.ngpio = args.args[2];
+ pctrl->gpio_bank[id].gc.owner = THIS_MODULE;
+ pctrl->gpio_bank[id].gc.parent = dev;
+ pctrl->gpio_bank[id].gc.label = devm_kasprintf(dev, GFP_KERNEL, "%pfw", child);
+ if (pctrl->gpio_bank[id].gc.label == NULL)
+ return -ENOMEM;
+
+ pctrl->gpio_bank[id].gc.dbg_show = npcmgpio_dbg_show;
+ pctrl->gpio_bank[id].direction_input = pctrl->gpio_bank[id].gc.direction_input;
+ pctrl->gpio_bank[id].gc.direction_input = npcmgpio_direction_input;
+ pctrl->gpio_bank[id].direction_output = pctrl->gpio_bank[id].gc.direction_output;
+ pctrl->gpio_bank[id].gc.direction_output = npcmgpio_direction_output;
+ pctrl->gpio_bank[id].request = pctrl->gpio_bank[id].gc.request;
+ pctrl->gpio_bank[id].gc.request = npcmgpio_gpio_request;
+ pctrl->gpio_bank[id].gc.free = npcmgpio_gpio_free;
+ pctrl->gpio_bank[id].gc.fwnode = child;
+ id++;
+ }
+
pctrl->bank_num = id;
return ret;
}
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 09/13] pinctrl: meson: Rename REG_* to MESON_REG_*
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (7 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 08/13] pinctrl: npcm7xx: " Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 15:22 ` Neil Armstrong
2022-03-30 14:50 ` [PATCH v3 10/13] pinctrl: meson: Enable COMPILE_TEST Andy Shevchenko
` (3 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Rename REG_* to MESON_REG_* as a prerequisite for enabling COMPILE_TEST.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/meson/pinctrl-meson.c | 24 ++++++++++++------------
drivers/pinctrl/meson/pinctrl-meson.h | 24 ++++++++++++------------
2 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index 49851444a6e3..5b46a0979db7 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -218,13 +218,13 @@ static int meson_pinconf_set_output(struct meson_pinctrl *pc,
unsigned int pin,
bool out)
{
- return meson_pinconf_set_gpio_bit(pc, pin, REG_DIR, !out);
+ return meson_pinconf_set_gpio_bit(pc, pin, MESON_REG_DIR, !out);
}
static int meson_pinconf_get_output(struct meson_pinctrl *pc,
unsigned int pin)
{
- int ret = meson_pinconf_get_gpio_bit(pc, pin, REG_DIR);
+ int ret = meson_pinconf_get_gpio_bit(pc, pin, MESON_REG_DIR);
if (ret < 0)
return ret;
@@ -236,13 +236,13 @@ static int meson_pinconf_set_drive(struct meson_pinctrl *pc,
unsigned int pin,
bool high)
{
- return meson_pinconf_set_gpio_bit(pc, pin, REG_OUT, high);
+ return meson_pinconf_set_gpio_bit(pc, pin, MESON_REG_OUT, high);
}
static int meson_pinconf_get_drive(struct meson_pinctrl *pc,
unsigned int pin)
{
- return meson_pinconf_get_gpio_bit(pc, pin, REG_OUT);
+ return meson_pinconf_get_gpio_bit(pc, pin, MESON_REG_OUT);
}
static int meson_pinconf_set_output_drive(struct meson_pinctrl *pc,
@@ -269,7 +269,7 @@ static int meson_pinconf_disable_bias(struct meson_pinctrl *pc,
if (ret)
return ret;
- meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
+ meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
ret = regmap_update_bits(pc->reg_pullen, reg, BIT(bit), 0);
if (ret)
return ret;
@@ -288,7 +288,7 @@ static int meson_pinconf_enable_bias(struct meson_pinctrl *pc, unsigned int pin,
if (ret)
return ret;
- meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit);
+ meson_calc_reg_and_bit(bank, pin, MESON_REG_PULL, ®, &bit);
if (pull_up)
val = BIT(bit);
@@ -296,7 +296,7 @@ static int meson_pinconf_enable_bias(struct meson_pinctrl *pc, unsigned int pin,
if (ret)
return ret;
- meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
+ meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
ret = regmap_update_bits(pc->reg_pullen, reg, BIT(bit), BIT(bit));
if (ret)
return ret;
@@ -321,7 +321,7 @@ static int meson_pinconf_set_drive_strength(struct meson_pinctrl *pc,
if (ret)
return ret;
- meson_calc_reg_and_bit(bank, pin, REG_DS, ®, &bit);
+ meson_calc_reg_and_bit(bank, pin, MESON_REG_DS, ®, &bit);
if (drive_strength_ua <= 500) {
ds_val = MESON_PINCONF_DRV_500UA;
@@ -407,7 +407,7 @@ static int meson_pinconf_get_pull(struct meson_pinctrl *pc, unsigned int pin)
if (ret)
return ret;
- meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
+ meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
ret = regmap_read(pc->reg_pullen, reg, &val);
if (ret)
@@ -416,7 +416,7 @@ static int meson_pinconf_get_pull(struct meson_pinctrl *pc, unsigned int pin)
if (!(val & BIT(bit))) {
conf = PIN_CONFIG_BIAS_DISABLE;
} else {
- meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit);
+ meson_calc_reg_and_bit(bank, pin, MESON_REG_PULL, ®, &bit);
ret = regmap_read(pc->reg_pull, reg, &val);
if (ret)
@@ -447,7 +447,7 @@ static int meson_pinconf_get_drive_strength(struct meson_pinctrl *pc,
if (ret)
return ret;
- meson_calc_reg_and_bit(bank, pin, REG_DS, ®, &bit);
+ meson_calc_reg_and_bit(bank, pin, MESON_REG_DS, ®, &bit);
ret = regmap_read(pc->reg_ds, reg, &val);
if (ret)
@@ -595,7 +595,7 @@ static int meson_gpio_get(struct gpio_chip *chip, unsigned gpio)
if (ret)
return ret;
- meson_calc_reg_and_bit(bank, gpio, REG_IN, ®, &bit);
+ meson_calc_reg_and_bit(bank, gpio, MESON_REG_IN, ®, &bit);
regmap_read(pc->reg_gpio, reg, &val);
return !!(val & BIT(bit));
diff --git a/drivers/pinctrl/meson/pinctrl-meson.h b/drivers/pinctrl/meson/pinctrl-meson.h
index ff5372e0a475..fa042cd6a7ff 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.h
+++ b/drivers/pinctrl/meson/pinctrl-meson.h
@@ -63,12 +63,12 @@ struct meson_reg_desc {
* enum meson_reg_type - type of registers encoded in @meson_reg_desc
*/
enum meson_reg_type {
- REG_PULLEN,
- REG_PULL,
- REG_DIR,
- REG_OUT,
- REG_IN,
- REG_DS,
+ MESON_REG_PULLEN,
+ MESON_REG_PULL,
+ MESON_REG_DIR,
+ MESON_REG_OUT,
+ MESON_REG_IN,
+ MESON_REG_DS,
NUM_REG,
};
@@ -150,12 +150,12 @@ struct meson_pinctrl {
.irq_first = fi, \
.irq_last = li, \
.regs = { \
- [REG_PULLEN] = { per, peb }, \
- [REG_PULL] = { pr, pb }, \
- [REG_DIR] = { dr, db }, \
- [REG_OUT] = { or, ob }, \
- [REG_IN] = { ir, ib }, \
- [REG_DS] = { dsr, dsb }, \
+ [MESON_REG_PULLEN] = { per, peb }, \
+ [MESON_REG_PULL] = { pr, pb }, \
+ [MESON_REG_DIR] = { dr, db }, \
+ [MESON_REG_OUT] = { or, ob }, \
+ [MESON_REG_IN] = { ir, ib }, \
+ [MESON_REG_DS] = { dsr, dsb }, \
}, \
}
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 10/13] pinctrl: meson: Enable COMPILE_TEST
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (8 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 09/13] pinctrl: meson: Rename REG_* to MESON_REG_* Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 11/13] pinctrl: meson: Replace custom code by gpiochip_node_count() call Andy Shevchenko
` (2 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Enable COMPILE_TEST for a better test coverage.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
---
drivers/pinctrl/meson/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/meson/Kconfig b/drivers/pinctrl/meson/Kconfig
index d1955c65b4b6..64fb9e074ac6 100644
--- a/drivers/pinctrl/meson/Kconfig
+++ b/drivers/pinctrl/meson/Kconfig
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
menuconfig PINCTRL_MESON
tristate "Amlogic SoC pinctrl drivers"
- depends on ARCH_MESON
+ depends on ARCH_MESON || COMPILE_TEST
depends on OF
default y
select PINMUX
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 11/13] pinctrl: meson: Replace custom code by gpiochip_node_count() call
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (9 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 10/13] pinctrl: meson: Enable COMPILE_TEST Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 12/13] pinctrl: armada-37xx: Switch to use fwnode instead of of_node Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 13/13] pinctrl: armada-37xx: Reuse GPIO fwnode in armada_37xx_irqchip_register() Andy Shevchenko
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Since we have generic function to count GPIO controller nodes
under a given device, there is no need to open code it. Replace
custom code by gpiochip_node_count() call.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
---
drivers/pinctrl/meson/pinctrl-meson.c | 28 ++++++++++++---------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index 5b46a0979db7..1b078da81523 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -49,6 +49,7 @@
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/seq_file.h>
@@ -662,27 +663,22 @@ static struct regmap *meson_map_resource(struct meson_pinctrl *pc,
return devm_regmap_init_mmio(pc->dev, base, &meson_regmap_config);
}
-static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc,
- struct device_node *node)
+static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc)
{
- struct device_node *np, *gpio_np = NULL;
+ struct device_node *gpio_np;
+ unsigned int chips;
- for_each_child_of_node(node, np) {
- if (!of_find_property(np, "gpio-controller", NULL))
- continue;
- if (gpio_np) {
- dev_err(pc->dev, "multiple gpio nodes\n");
- of_node_put(np);
- return -EINVAL;
- }
- gpio_np = np;
- }
-
- if (!gpio_np) {
+ chips = gpiochip_node_count(pc->dev);
+ if (!chips) {
dev_err(pc->dev, "no gpio node found\n");
return -EINVAL;
}
+ if (chips > 1) {
+ dev_err(pc->dev, "multiple gpio nodes\n");
+ return -EINVAL;
+ }
+ gpio_np = to_of_node(device_get_named_child_node(pc->dev, "gpio-controller"));
pc->of_node = gpio_np;
pc->reg_mux = meson_map_resource(pc, gpio_np, "mux");
@@ -751,7 +747,7 @@ int meson_pinctrl_probe(struct platform_device *pdev)
pc->dev = dev;
pc->data = (struct meson_pinctrl_data *) of_device_get_match_data(dev);
- ret = meson_pinctrl_parse_dt(pc, dev->of_node);
+ ret = meson_pinctrl_parse_dt(pc);
if (ret)
return ret;
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 12/13] pinctrl: armada-37xx: Switch to use fwnode instead of of_node
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (10 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 11/13] pinctrl: meson: Replace custom code by gpiochip_node_count() call Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 13/13] pinctrl: armada-37xx: Reuse GPIO fwnode in armada_37xx_irqchip_register() Andy Shevchenko
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
GPIO library now accepts fwnode as a firmware node,
so switch the driver to use it.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
index 08cad14042e2..1fef8a38f574 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
@@ -21,6 +21,7 @@
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <linux/string_helpers.h>
@@ -787,18 +788,13 @@ static int armada_37xx_gpiochip_register(struct platform_device *pdev,
struct armada_37xx_pinctrl *info)
{
struct device *dev = &pdev->dev;
- struct device_node *np;
+ struct fwnode_handle *fwnode;
struct gpio_chip *gc;
- int ret = -ENODEV;
+ int ret;
- for_each_child_of_node(dev->of_node, np) {
- if (of_find_property(np, "gpio-controller", NULL)) {
- ret = 0;
- break;
- }
- }
- if (ret)
- return ret;
+ fwnode = device_get_named_child_node(dev, "gpio-controller");
+ if (!fwnode)
+ return -ENODEV;
info->gpio_chip = armada_37xx_gpiolib_chip;
@@ -806,7 +802,7 @@ static int armada_37xx_gpiochip_register(struct platform_device *pdev,
gc->ngpio = info->data->nr_pins;
gc->parent = dev;
gc->base = -1;
- gc->of_node = np;
+ gc->fwnode = fwnode;
gc->label = info->data->name;
ret = armada_37xx_irqchip_register(pdev, info);
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 13/13] pinctrl: armada-37xx: Reuse GPIO fwnode in armada_37xx_irqchip_register()
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
` (11 preceding siblings ...)
2022-03-30 14:50 ` [PATCH v3 12/13] pinctrl: armada-37xx: Switch to use fwnode instead of of_node Andy Shevchenko
@ 2022-03-30 14:50 ` Andy Shevchenko
12 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2022-03-30 14:50 UTC (permalink / raw)
To: Qianggui Song, Andy Shevchenko, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
Since we have fwnode of the first found GPIO controller assigned to the
struct gpio_chip, we may reuse it in the armada_37xx_irqchip_register().
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
index 1fef8a38f574..c0384661ea48 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
@@ -727,23 +727,13 @@ static int armada_37xx_irqchip_register(struct platform_device *pdev,
struct gpio_chip *gc = &info->gpio_chip;
struct irq_chip *irqchip = &info->irq_chip;
struct gpio_irq_chip *girq = &gc->irq;
+ struct device_node *np = to_of_node(gc->fwnode);
struct device *dev = &pdev->dev;
- struct device_node *np;
- int ret = -ENODEV, i, nr_irq_parent;
-
- /* Check if we have at least one gpio-controller child node */
- for_each_child_of_node(dev->of_node, np) {
- if (of_property_read_bool(np, "gpio-controller")) {
- ret = 0;
- break;
- }
- }
- if (ret)
- return dev_err_probe(dev, ret, "no gpio-controller child node\n");
+ unsigned int i, nr_irq_parent;
- nr_irq_parent = of_irq_count(np);
spin_lock_init(&info->irq_lock);
+ nr_irq_parent = of_irq_count(np);
if (!nr_irq_parent) {
dev_err(dev, "invalid or no IRQ\n");
return 0;
--
2.35.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v3 09/13] pinctrl: meson: Rename REG_* to MESON_REG_*
2022-03-30 14:50 ` [PATCH v3 09/13] pinctrl: meson: Rename REG_* to MESON_REG_* Andy Shevchenko
@ 2022-03-30 15:22 ` Neil Armstrong
0 siblings, 0 replies; 20+ messages in thread
From: Neil Armstrong @ 2022-03-30 15:22 UTC (permalink / raw)
To: Andy Shevchenko, Qianggui Song, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Andrew Lunn,
Gregory Clement, Sebastian Hesselbarth, Avi Fishman,
Tomer Maimon, Tali Perry, Patrick Venture, Nancy Yuen,
Benjamin Fair, Tomasz Figa, Sylwester Nawrocki, Alim Akhtar,
Maxime Coquelin, Alexandre Torgue, Bartosz Golaszewski,
Philipp Zabel
On 30/03/2022 16:50, Andy Shevchenko wrote:
> Rename REG_* to MESON_REG_* as a prerequisite for enabling COMPILE_TEST.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> drivers/pinctrl/meson/pinctrl-meson.c | 24 ++++++++++++------------
> drivers/pinctrl/meson/pinctrl-meson.h | 24 ++++++++++++------------
> 2 files changed, 24 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
> index 49851444a6e3..5b46a0979db7 100644
> --- a/drivers/pinctrl/meson/pinctrl-meson.c
> +++ b/drivers/pinctrl/meson/pinctrl-meson.c
> @@ -218,13 +218,13 @@ static int meson_pinconf_set_output(struct meson_pinctrl *pc,
> unsigned int pin,
> bool out)
> {
> - return meson_pinconf_set_gpio_bit(pc, pin, REG_DIR, !out);
> + return meson_pinconf_set_gpio_bit(pc, pin, MESON_REG_DIR, !out);
> }
>
> static int meson_pinconf_get_output(struct meson_pinctrl *pc,
> unsigned int pin)
> {
> - int ret = meson_pinconf_get_gpio_bit(pc, pin, REG_DIR);
> + int ret = meson_pinconf_get_gpio_bit(pc, pin, MESON_REG_DIR);
>
> if (ret < 0)
> return ret;
> @@ -236,13 +236,13 @@ static int meson_pinconf_set_drive(struct meson_pinctrl *pc,
> unsigned int pin,
> bool high)
> {
> - return meson_pinconf_set_gpio_bit(pc, pin, REG_OUT, high);
> + return meson_pinconf_set_gpio_bit(pc, pin, MESON_REG_OUT, high);
> }
>
> static int meson_pinconf_get_drive(struct meson_pinctrl *pc,
> unsigned int pin)
> {
> - return meson_pinconf_get_gpio_bit(pc, pin, REG_OUT);
> + return meson_pinconf_get_gpio_bit(pc, pin, MESON_REG_OUT);
> }
>
> static int meson_pinconf_set_output_drive(struct meson_pinctrl *pc,
> @@ -269,7 +269,7 @@ static int meson_pinconf_disable_bias(struct meson_pinctrl *pc,
> if (ret)
> return ret;
>
> - meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
> + meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
> ret = regmap_update_bits(pc->reg_pullen, reg, BIT(bit), 0);
> if (ret)
> return ret;
> @@ -288,7 +288,7 @@ static int meson_pinconf_enable_bias(struct meson_pinctrl *pc, unsigned int pin,
> if (ret)
> return ret;
>
> - meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit);
> + meson_calc_reg_and_bit(bank, pin, MESON_REG_PULL, ®, &bit);
> if (pull_up)
> val = BIT(bit);
>
> @@ -296,7 +296,7 @@ static int meson_pinconf_enable_bias(struct meson_pinctrl *pc, unsigned int pin,
> if (ret)
> return ret;
>
> - meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
> + meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
> ret = regmap_update_bits(pc->reg_pullen, reg, BIT(bit), BIT(bit));
> if (ret)
> return ret;
> @@ -321,7 +321,7 @@ static int meson_pinconf_set_drive_strength(struct meson_pinctrl *pc,
> if (ret)
> return ret;
>
> - meson_calc_reg_and_bit(bank, pin, REG_DS, ®, &bit);
> + meson_calc_reg_and_bit(bank, pin, MESON_REG_DS, ®, &bit);
>
> if (drive_strength_ua <= 500) {
> ds_val = MESON_PINCONF_DRV_500UA;
> @@ -407,7 +407,7 @@ static int meson_pinconf_get_pull(struct meson_pinctrl *pc, unsigned int pin)
> if (ret)
> return ret;
>
> - meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
> + meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
>
> ret = regmap_read(pc->reg_pullen, reg, &val);
> if (ret)
> @@ -416,7 +416,7 @@ static int meson_pinconf_get_pull(struct meson_pinctrl *pc, unsigned int pin)
> if (!(val & BIT(bit))) {
> conf = PIN_CONFIG_BIAS_DISABLE;
> } else {
> - meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit);
> + meson_calc_reg_and_bit(bank, pin, MESON_REG_PULL, ®, &bit);
>
> ret = regmap_read(pc->reg_pull, reg, &val);
> if (ret)
> @@ -447,7 +447,7 @@ static int meson_pinconf_get_drive_strength(struct meson_pinctrl *pc,
> if (ret)
> return ret;
>
> - meson_calc_reg_and_bit(bank, pin, REG_DS, ®, &bit);
> + meson_calc_reg_and_bit(bank, pin, MESON_REG_DS, ®, &bit);
>
> ret = regmap_read(pc->reg_ds, reg, &val);
> if (ret)
> @@ -595,7 +595,7 @@ static int meson_gpio_get(struct gpio_chip *chip, unsigned gpio)
> if (ret)
> return ret;
>
> - meson_calc_reg_and_bit(bank, gpio, REG_IN, ®, &bit);
> + meson_calc_reg_and_bit(bank, gpio, MESON_REG_IN, ®, &bit);
> regmap_read(pc->reg_gpio, reg, &val);
>
> return !!(val & BIT(bit));
> diff --git a/drivers/pinctrl/meson/pinctrl-meson.h b/drivers/pinctrl/meson/pinctrl-meson.h
> index ff5372e0a475..fa042cd6a7ff 100644
> --- a/drivers/pinctrl/meson/pinctrl-meson.h
> +++ b/drivers/pinctrl/meson/pinctrl-meson.h
> @@ -63,12 +63,12 @@ struct meson_reg_desc {
> * enum meson_reg_type - type of registers encoded in @meson_reg_desc
> */
> enum meson_reg_type {
> - REG_PULLEN,
> - REG_PULL,
> - REG_DIR,
> - REG_OUT,
> - REG_IN,
> - REG_DS,
> + MESON_REG_PULLEN,
> + MESON_REG_PULL,
> + MESON_REG_DIR,
> + MESON_REG_OUT,
> + MESON_REG_IN,
> + MESON_REG_DS,
> NUM_REG,
> };
>
> @@ -150,12 +150,12 @@ struct meson_pinctrl {
> .irq_first = fi, \
> .irq_last = li, \
> .regs = { \
> - [REG_PULLEN] = { per, peb }, \
> - [REG_PULL] = { pr, pb }, \
> - [REG_DIR] = { dr, db }, \
> - [REG_OUT] = { or, ob }, \
> - [REG_IN] = { ir, ib }, \
> - [REG_DS] = { dsr, dsb }, \
> + [MESON_REG_PULLEN] = { per, peb }, \
> + [MESON_REG_PULL] = { pr, pb }, \
> + [MESON_REG_DIR] = { dr, db }, \
> + [MESON_REG_OUT] = { or, ob }, \
> + [MESON_REG_IN] = { ir, ib }, \
> + [MESON_REG_DS] = { dsr, dsb }, \
> }, \
> }
>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 05/13] pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
@ 2022-03-30 17:25 ` kernel test robot
2022-03-30 18:46 ` kernel test robot
` (3 subsequent siblings)
4 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2022-03-30 17:25 UTC (permalink / raw)
To: Andy Shevchenko, Qianggui Song, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: kbuild-all, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Andrew Lunn, Gregory Clement,
Sebastian Hesselbarth, Avi Fishman, Tomer Maimon, Tali Perry,
Patrick Venture, Nancy Yuen, Benjamin Fair, Tomasz Figa,
Sylwester Nawrocki, Alim Akhtar
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
base: a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57
config: riscv-buildonly-randconfig-r006-20220330 (https://download.01.org/0day-ci/archive/20220331/202203310151.Iu2JvLIF-lkp@intel.com/config)
compiler: riscv32-linux-gcc (GCC) 11.2.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/3539d23dd289ca77a85d66fe8721e4febfc50ea4
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
git checkout 3539d23dd289ca77a85d66fe8721e4febfc50ea4
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=riscv SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/pinctrl/samsung/pinctrl-s3c64xx.c: In function 's3c64xx_eint_gpio_init':
>> drivers/pinctrl/samsung/pinctrl-s3c64xx.c:474:64: error: 'struct samsung_pin_bank' has no member named 'of_node'; did you mean 'fwnode'?
474 | bank->irq_domain = irq_domain_add_linear(bank->of_node,
| ^~~~~~~
| fwnode
drivers/pinctrl/samsung/pinctrl-s3c64xx.c: In function 's3c64xx_eint_eint0_init':
drivers/pinctrl/samsung/pinctrl-s3c64xx.c:746:64: error: 'struct samsung_pin_bank' has no member named 'of_node'; did you mean 'fwnode'?
746 | bank->irq_domain = irq_domain_add_linear(bank->of_node,
| ^~~~~~~
| fwnode
vim +474 drivers/pinctrl/samsung/pinctrl-s3c64xx.c
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 444
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 445 /**
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 446 * s3c64xx_eint_gpio_init() - setup handling of external gpio interrupts.
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 447 * @d: driver data of samsung pinctrl driver.
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 448 */
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 449 static int s3c64xx_eint_gpio_init(struct samsung_pinctrl_drv_data *d)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 450 {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 451 struct s3c64xx_eint_gpio_data *data;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 452 struct samsung_pin_bank *bank;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 453 struct device *dev = d->dev;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 454 unsigned int nr_domains;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 455 unsigned int i;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 456
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 457 if (!d->irq) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 458 dev_err(dev, "irq number not available\n");
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 459 return -EINVAL;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 460 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 461
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 462 nr_domains = 0;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 463 bank = d->pin_banks;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 464 for (i = 0; i < d->nr_banks; ++i, ++bank) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 465 unsigned int nr_eints;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 466 unsigned int mask;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 467
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 468 if (bank->eint_type != EINT_TYPE_GPIO)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 469 continue;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 470
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 471 mask = bank->eint_mask;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 472 nr_eints = fls(mask);
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 473
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 @474 bank->irq_domain = irq_domain_add_linear(bank->of_node,
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 475 nr_eints, &s3c64xx_gpio_irqd_ops, bank);
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 476 if (!bank->irq_domain) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 477 dev_err(dev, "gpio irq domain add failed\n");
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 478 return -ENXIO;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 479 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 480
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 481 ++nr_domains;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 482 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 483
0ed2dd03b94b7b drivers/pinctrl/samsung/pinctrl-s3c64xx.c Kees Cook 2018-05-08 484 data = devm_kzalloc(dev, struct_size(data, domains, nr_domains),
0ed2dd03b94b7b drivers/pinctrl/samsung/pinctrl-s3c64xx.c Kees Cook 2018-05-08 485 GFP_KERNEL);
fa5c0f46e2b9a1 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Marek Szyprowski 2017-01-19 486 if (!data)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 487 return -ENOMEM;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 488 data->drvdata = d;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 489
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 490 bank = d->pin_banks;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 491 nr_domains = 0;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 492 for (i = 0; i < d->nr_banks; ++i, ++bank) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 493 if (bank->eint_type != EINT_TYPE_GPIO)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 494 continue;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 495
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 496 data->domains[nr_domains++] = bank->irq_domain;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 497 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 498
623a650ebc886f drivers/pinctrl/samsung/pinctrl-s3c64xx.c Thomas Gleixner 2015-06-21 499 irq_set_chained_handler_and_data(d->irq, s3c64xx_eint_gpio_irq, data);
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 500
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 501 return 0;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 502 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 503
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 05/13] pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
2022-03-30 17:25 ` kernel test robot
@ 2022-03-30 18:46 ` kernel test robot
2022-03-30 19:58 ` kernel test robot
` (2 subsequent siblings)
4 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2022-03-30 18:46 UTC (permalink / raw)
To: Andy Shevchenko, Qianggui Song, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: llvm, kbuild-all, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Andrew Lunn, Gregory Clement,
Sebastian Hesselbarth, Avi Fishman, Tomer Maimon, Tali Perry,
Patrick Venture, Nancy Yuen, Benjamin Fair, Tomasz Figa,
Sylwester Nawrocki, Alim Akhtar
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
base: a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57
config: riscv-randconfig-r032-20220330 (https://download.01.org/0day-ci/archive/20220331/202203310240.Za1Wqczl-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0f6d9501cf49ce02937099350d08f20c4af86f3d)
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-riscv64-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/3539d23dd289ca77a85d66fe8721e4febfc50ea4
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
git checkout 3539d23dd289ca77a85d66fe8721e4febfc50ea4
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/pinctrl/samsung/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/pinctrl/samsung/pinctrl-s3c24xx.c:528:50: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'?
bank->irq_domain = irq_domain_add_linear(bank->of_node,
^~~~~~~
fwnode
drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
1 error generated.
vim +528 drivers/pinctrl/samsung/pinctrl-s3c24xx.c
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 457
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 458 static int s3c24xx_eint_init(struct samsung_pinctrl_drv_data *d)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 459 {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 460 struct device *dev = d->dev;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 461 const struct of_device_id *match;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 462 struct device_node *eint_np = NULL;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 463 struct device_node *np;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 464 struct samsung_pin_bank *bank;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 465 struct s3c24xx_eint_data *eint_data;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 466 const struct irq_domain_ops *ops;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 467 unsigned int i;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 468 bool eint0_3_parent_only;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 469 irq_flow_handler_t *handlers;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 470
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 471 for_each_child_of_node(dev->of_node, np) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 472 match = of_match_node(s3c24xx_eint_irq_ids, np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 473 if (match) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 474 eint_np = np;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 475 eint0_3_parent_only = (bool)match->data;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 476 break;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 477 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 478 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 479 if (!eint_np)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 480 return -ENODEV;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 481
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 482 eint_data = devm_kzalloc(dev, sizeof(*eint_data), GFP_KERNEL);
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 483 if (!eint_data) {
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 484 of_node_put(eint_np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 485 return -ENOMEM;
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 486 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 487
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 488 eint_data->drvdata = d;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 489
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 490 handlers = eint0_3_parent_only ? s3c2410_eint_handlers
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 491 : s3c2412_eint_handlers;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 492 for (i = 0; i < NUM_EINT_IRQ; ++i) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 493 unsigned int irq;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 494
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 495 irq = irq_of_parse_and_map(eint_np, i);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 496 if (!irq) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 497 dev_err(dev, "failed to get wakeup EINT IRQ %d\n", i);
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 498 of_node_put(eint_np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 499 return -ENXIO;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 500 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 501
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 502 eint_data->parents[i] = irq;
0cfc45cfdf5065 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Thomas Gleixner 2015-06-21 503 irq_set_chained_handler_and_data(irq, handlers[i], eint_data);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 504 }
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 505 of_node_put(eint_np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 506
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Tomasz Figa 2014-09-23 507 bank = d->pin_banks;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Tomasz Figa 2014-09-23 508 for (i = 0; i < d->nr_banks; ++i, ++bank) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 509 struct s3c24xx_eint_domain_data *ddata;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 510 unsigned int mask;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 511 unsigned int irq;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 512 unsigned int pin;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 513
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 514 if (bank->eint_type != EINT_TYPE_WKUP)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 515 continue;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 516
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 517 ddata = devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 518 if (!ddata)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 519 return -ENOMEM;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 520
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 521 ddata->bank = bank;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 522 ddata->eint_data = eint_data;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 523 ddata->eint0_3_parent_only = eint0_3_parent_only;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 524
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 525 ops = (bank->eint_offset == 0) ? &s3c24xx_gpf_irq_ops
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 526 : &s3c24xx_gpg_irq_ops;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 527
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 @528 bank->irq_domain = irq_domain_add_linear(bank->of_node,
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 529 bank->nr_pins, ops, ddata);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 530 if (!bank->irq_domain) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 531 dev_err(dev, "wkup irq domain add failed\n");
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 532 return -ENXIO;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 533 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 534
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 535 irq = bank->eint_offset;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 536 mask = bank->eint_mask;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 537 for (pin = 0; mask; ++pin, mask >>= 1) {
774e2d981f517e drivers/pinctrl/pinctrl-s3c24xx.c Dan Carpenter 2013-08-27 538 if (irq >= NUM_EINT)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 539 break;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 540 if (!(mask & 1))
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 541 continue;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 542 eint_data->domains[irq] = bank->irq_domain;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 543 ++irq;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 544 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 545 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 546
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 547 return 0;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 548 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 549
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 05/13] pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
2022-03-30 17:25 ` kernel test robot
2022-03-30 18:46 ` kernel test robot
@ 2022-03-30 19:58 ` kernel test robot
2022-03-31 18:16 ` kernel test robot
2022-03-31 22:31 ` kernel test robot
4 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2022-03-30 19:58 UTC (permalink / raw)
To: Andy Shevchenko, Qianggui Song, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: kbuild-all, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Andrew Lunn, Gregory Clement,
Sebastian Hesselbarth, Avi Fishman, Tomer Maimon, Tali Perry,
Patrick Venture, Nancy Yuen, Benjamin Fair, Tomasz Figa,
Sylwester Nawrocki, Alim Akhtar
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
base: a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57
config: alpha-randconfig-r013-20220330 (https://download.01.org/0day-ci/archive/20220331/202203310305.QZp98VzT-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 11.2.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/3539d23dd289ca77a85d66fe8721e4febfc50ea4
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
git checkout 3539d23dd289ca77a85d66fe8721e4febfc50ea4
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=alpha SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c24xx_eint_init':
>> drivers/pinctrl/samsung/pinctrl-s3c24xx.c:528:64: error: 'struct samsung_pin_bank' has no member named 'of_node'; did you mean 'fwnode'?
528 | bank->irq_domain = irq_domain_add_linear(bank->of_node,
| ^~~~~~~
| fwnode
vim +528 drivers/pinctrl/samsung/pinctrl-s3c24xx.c
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 457
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 458 static int s3c24xx_eint_init(struct samsung_pinctrl_drv_data *d)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 459 {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 460 struct device *dev = d->dev;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 461 const struct of_device_id *match;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 462 struct device_node *eint_np = NULL;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 463 struct device_node *np;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 464 struct samsung_pin_bank *bank;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 465 struct s3c24xx_eint_data *eint_data;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 466 const struct irq_domain_ops *ops;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 467 unsigned int i;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 468 bool eint0_3_parent_only;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 469 irq_flow_handler_t *handlers;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 470
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 471 for_each_child_of_node(dev->of_node, np) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 472 match = of_match_node(s3c24xx_eint_irq_ids, np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 473 if (match) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 474 eint_np = np;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 475 eint0_3_parent_only = (bool)match->data;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 476 break;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 477 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 478 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 479 if (!eint_np)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 480 return -ENODEV;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 481
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 482 eint_data = devm_kzalloc(dev, sizeof(*eint_data), GFP_KERNEL);
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 483 if (!eint_data) {
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 484 of_node_put(eint_np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 485 return -ENOMEM;
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 486 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 487
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 488 eint_data->drvdata = d;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 489
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 490 handlers = eint0_3_parent_only ? s3c2410_eint_handlers
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 491 : s3c2412_eint_handlers;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 492 for (i = 0; i < NUM_EINT_IRQ; ++i) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 493 unsigned int irq;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 494
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 495 irq = irq_of_parse_and_map(eint_np, i);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 496 if (!irq) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 497 dev_err(dev, "failed to get wakeup EINT IRQ %d\n", i);
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 498 of_node_put(eint_np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 499 return -ENXIO;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 500 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 501
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 502 eint_data->parents[i] = irq;
0cfc45cfdf5065 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Thomas Gleixner 2015-06-21 503 irq_set_chained_handler_and_data(irq, handlers[i], eint_data);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 504 }
6fbbcb050802d6 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Krzysztof Kozlowski 2019-08-05 505 of_node_put(eint_np);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 506
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Tomasz Figa 2014-09-23 507 bank = d->pin_banks;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Tomasz Figa 2014-09-23 508 for (i = 0; i < d->nr_banks; ++i, ++bank) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 509 struct s3c24xx_eint_domain_data *ddata;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 510 unsigned int mask;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 511 unsigned int irq;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 512 unsigned int pin;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 513
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 514 if (bank->eint_type != EINT_TYPE_WKUP)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 515 continue;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 516
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 517 ddata = devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 518 if (!ddata)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 519 return -ENOMEM;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 520
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 521 ddata->bank = bank;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 522 ddata->eint_data = eint_data;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 523 ddata->eint0_3_parent_only = eint0_3_parent_only;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 524
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 525 ops = (bank->eint_offset == 0) ? &s3c24xx_gpf_irq_ops
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 526 : &s3c24xx_gpg_irq_ops;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 527
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 @528 bank->irq_domain = irq_domain_add_linear(bank->of_node,
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 529 bank->nr_pins, ops, ddata);
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 530 if (!bank->irq_domain) {
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 531 dev_err(dev, "wkup irq domain add failed\n");
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 532 return -ENXIO;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 533 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 534
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 535 irq = bank->eint_offset;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 536 mask = bank->eint_mask;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 537 for (pin = 0; mask; ++pin, mask >>= 1) {
774e2d981f517e drivers/pinctrl/pinctrl-s3c24xx.c Dan Carpenter 2013-08-27 538 if (irq >= NUM_EINT)
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 539 break;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 540 if (!(mask & 1))
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 541 continue;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 542 eint_data->domains[irq] = bank->irq_domain;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 543 ++irq;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 544 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 545 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 546
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 547 return 0;
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 548 }
af99a7507469d4 drivers/pinctrl/pinctrl-s3c24xx.c Heiko Stuebner 2013-05-21 549
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 05/13] pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
` (2 preceding siblings ...)
2022-03-30 19:58 ` kernel test robot
@ 2022-03-31 18:16 ` kernel test robot
2022-03-31 22:31 ` kernel test robot
4 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2022-03-31 18:16 UTC (permalink / raw)
To: Andy Shevchenko, Qianggui Song, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: llvm, kbuild-all, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Andrew Lunn, Gregory Clement,
Sebastian Hesselbarth, Avi Fishman, Tomer Maimon, Tali Perry,
Patrick Venture, Nancy Yuen, Benjamin Fair, Tomasz Figa,
Sylwester Nawrocki, Alim Akhtar
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
base: a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57
config: riscv-randconfig-c006-20220331 (https://download.01.org/0day-ci/archive/20220401/202204010248.AB6ZnOyw-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 881350a92d821d4f8e4fa648443ed1d17e251188)
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-riscv64-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/3539d23dd289ca77a85d66fe8721e4febfc50ea4
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
git checkout 3539d23dd289ca77a85d66fe8721e4febfc50ea4
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/pinctrl/samsung/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from drivers/pinctrl/samsung/pinctrl-s3c64xx.c:15:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:136:
include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
^
In file included from drivers/pinctrl/samsung/pinctrl-s3c64xx.c:15:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:136:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
^
In file included from drivers/pinctrl/samsung/pinctrl-s3c64xx.c:15:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/riscv/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/riscv/include/asm/io.h:136:
include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:1024:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
~~~~~~~~~~ ^
>> drivers/pinctrl/samsung/pinctrl-s3c64xx.c:474:50: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'?
bank->irq_domain = irq_domain_add_linear(bank->of_node,
^~~~~~~
fwnode
drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
drivers/pinctrl/samsung/pinctrl-s3c64xx.c:746:50: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'?
bank->irq_domain = irq_domain_add_linear(bank->of_node,
^~~~~~~
fwnode
drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
7 warnings and 2 errors generated.
vim +474 drivers/pinctrl/samsung/pinctrl-s3c64xx.c
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 444
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 445 /**
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 446 * s3c64xx_eint_gpio_init() - setup handling of external gpio interrupts.
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 447 * @d: driver data of samsung pinctrl driver.
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 448 */
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 449 static int s3c64xx_eint_gpio_init(struct samsung_pinctrl_drv_data *d)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 450 {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 451 struct s3c64xx_eint_gpio_data *data;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 452 struct samsung_pin_bank *bank;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 453 struct device *dev = d->dev;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 454 unsigned int nr_domains;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 455 unsigned int i;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 456
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 457 if (!d->irq) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 458 dev_err(dev, "irq number not available\n");
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 459 return -EINVAL;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 460 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 461
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 462 nr_domains = 0;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 463 bank = d->pin_banks;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 464 for (i = 0; i < d->nr_banks; ++i, ++bank) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 465 unsigned int nr_eints;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 466 unsigned int mask;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 467
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 468 if (bank->eint_type != EINT_TYPE_GPIO)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 469 continue;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 470
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 471 mask = bank->eint_mask;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 472 nr_eints = fls(mask);
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 473
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 @474 bank->irq_domain = irq_domain_add_linear(bank->of_node,
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 475 nr_eints, &s3c64xx_gpio_irqd_ops, bank);
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 476 if (!bank->irq_domain) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 477 dev_err(dev, "gpio irq domain add failed\n");
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 478 return -ENXIO;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 479 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 480
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 481 ++nr_domains;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 482 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 483
0ed2dd03b94b7b drivers/pinctrl/samsung/pinctrl-s3c64xx.c Kees Cook 2018-05-08 484 data = devm_kzalloc(dev, struct_size(data, domains, nr_domains),
0ed2dd03b94b7b drivers/pinctrl/samsung/pinctrl-s3c64xx.c Kees Cook 2018-05-08 485 GFP_KERNEL);
fa5c0f46e2b9a1 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Marek Szyprowski 2017-01-19 486 if (!data)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 487 return -ENOMEM;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 488 data->drvdata = d;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 489
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 490 bank = d->pin_banks;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 491 nr_domains = 0;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-s3c64xx.c Tomasz Figa 2014-09-23 492 for (i = 0; i < d->nr_banks; ++i, ++bank) {
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 493 if (bank->eint_type != EINT_TYPE_GPIO)
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 494 continue;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 495
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 496 data->domains[nr_domains++] = bank->irq_domain;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 497 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 498
623a650ebc886f drivers/pinctrl/samsung/pinctrl-s3c64xx.c Thomas Gleixner 2015-06-21 499 irq_set_chained_handler_and_data(d->irq, s3c64xx_eint_gpio_irq, data);
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 500
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 501 return 0;
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 502 }
61dd7261317770 drivers/pinctrl/pinctrl-s3c64xx.c Tomasz Figa 2013-03-18 503
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 05/13] pinctrl: samsung: Switch to use for_each_gpiochip_node() helper
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
` (3 preceding siblings ...)
2022-03-31 18:16 ` kernel test robot
@ 2022-03-31 22:31 ` kernel test robot
4 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2022-03-31 22:31 UTC (permalink / raw)
To: Andy Shevchenko, Qianggui Song, Geert Uytterhoeven,
Krzysztof Kozlowski, Fabien Dessenne, Linus Walleij, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel, openbmc,
linux-renesas-soc, linux-samsung-soc, linux-stm32
Cc: llvm, kbuild-all, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Andrew Lunn, Gregory Clement,
Sebastian Hesselbarth, Avi Fishman, Tomer Maimon, Tali Perry,
Patrick Venture, Nancy Yuen, Benjamin Fair, Tomasz Figa,
Sylwester Nawrocki, Alim Akhtar
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
base: a67ba3cf9551f8c92d5ec9d7eae1aadbb9127b57
config: arm-randconfig-c002-20220331 (https://download.01.org/0day-ci/archive/20220401/202204010610.Wk5CAkQ7-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 881350a92d821d4f8e4fa648443ed1d17e251188)
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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/3539d23dd289ca77a85d66fe8721e4febfc50ea4
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/gpiolib-Two-new-helpers-and-way-toward-fwnode/20220330-225341
git checkout 3539d23dd289ca77a85d66fe8721e4febfc50ea4
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/pinctrl/samsung/pinctrl-exynos.c:310:50: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'?
bank->irq_domain = irq_domain_add_linear(bank->of_node,
^~~~~~~
fwnode
drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
drivers/pinctrl/samsung/pinctrl-exynos.c:568:50: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'?
bank->irq_domain = irq_domain_add_linear(bank->of_node,
^~~~~~~
fwnode
drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
drivers/pinctrl/samsung/pinctrl-exynos.c:576:31: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'?
if (!of_find_property(bank->of_node, "interrupts", NULL)) {
^~~~~~~
fwnode
drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
drivers/pinctrl/samsung/pinctrl-exynos.c:591:37: error: no member named 'of_node' in 'struct samsung_pin_bank'; did you mean 'fwnode'?
irq = irq_of_parse_and_map(bank->of_node, idx);
^~~~~~~
fwnode
drivers/pinctrl/samsung/pinctrl-samsung.h:168:24: note: 'fwnode' declared here
struct fwnode_handle *fwnode;
^
4 errors generated.
vim +310 drivers/pinctrl/samsung/pinctrl-exynos.c
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 273
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 274 /*
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 275 * exynos_eint_gpio_init() - setup handling of external gpio interrupts.
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 276 * @d: driver data of samsung pinctrl driver.
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 277 */
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 278 __init int exynos_eint_gpio_init(struct samsung_pinctrl_drv_data *d)
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 279 {
595be7268a8573 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2012-10-11 280 struct samsung_pin_bank *bank;
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 281 struct device *dev = d->dev;
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 282 int ret;
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 283 int i;
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 284
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 285 if (!d->irq) {
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 286 dev_err(dev, "irq number not available\n");
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 287 return -EINVAL;
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 288 }
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 289
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 290 ret = devm_request_irq(dev, d->irq, exynos_eint_gpio_irq,
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 291 0, dev_name(dev), d);
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 292 if (ret) {
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 293 dev_err(dev, "irq request failed\n");
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 294 return -ENXIO;
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 295 }
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 296
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-exynos.c Tomasz Figa 2014-09-23 297 bank = d->pin_banks;
1bf00d7a6dbff0 drivers/pinctrl/samsung/pinctrl-exynos.c Tomasz Figa 2014-09-23 298 for (i = 0; i < d->nr_banks; ++i, ++bank) {
595be7268a8573 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2012-10-11 299 if (bank->eint_type != EINT_TYPE_GPIO)
595be7268a8573 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2012-10-11 300 continue;
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 301
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 302 bank->irq_chip = devm_kmemdup(dev, &exynos_gpio_irq_chip,
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 303 sizeof(*bank->irq_chip), GFP_KERNEL);
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 304 if (!bank->irq_chip) {
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 305 ret = -ENOMEM;
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 306 goto err_domains;
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 307 }
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 308 bank->irq_chip->chip.name = bank->name;
85745c870a757c drivers/pinctrl/samsung/pinctrl-exynos.c Marek Szyprowski 2020-07-20 309
595be7268a8573 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2012-10-11 @310 bank->irq_domain = irq_domain_add_linear(bank->of_node,
6f5e41bd8fc6d3 drivers/pinctrl/samsung/pinctrl-exynos.c Abhilash Kesavan 2014-10-09 311 bank->nr_pins, &exynos_eint_irqd_ops, bank);
595be7268a8573 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2012-10-11 312 if (!bank->irq_domain) {
595be7268a8573 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2012-10-11 313 dev_err(dev, "gpio irq domain add failed\n");
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 314 ret = -ENXIO;
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 315 goto err_domains;
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 316 }
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 317
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 318 bank->soc_priv = devm_kzalloc(d->dev,
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 319 sizeof(struct exynos_eint_gpio_save), GFP_KERNEL);
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 320 if (!bank->soc_priv) {
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 321 irq_domain_remove(bank->irq_domain);
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 322 ret = -ENOMEM;
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 323 goto err_domains;
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 324 }
0d3d30db936359 drivers/pinctrl/samsung/pinctrl-exynos.c Abhilash Kesavan 2014-10-09 325
595be7268a8573 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2012-10-11 326 }
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 327
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 328 return 0;
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 329
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 330 err_domains:
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 331 for (--i, --bank; i >= 0; --i, --bank) {
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 332 if (bank->eint_type != EINT_TYPE_GPIO)
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 333 continue;
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 334 irq_domain_remove(bank->irq_domain);
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 335 }
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 336
7ccbc60cd9c293 drivers/pinctrl/pinctrl-exynos.c Tomasz Figa 2013-05-22 337 return ret;
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 338 }
43b169db184184 drivers/pinctrl/pinctrl-exynos.c Thomas Abraham 2012-09-07 339
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2022-03-31 22:31 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-30 14:50 [PATCH v3 00/13] gpiolib: Two new helpers and way toward fwnode Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 01/13] gpiolib: Introduce for_each_gpiochip_node() loop helper Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 02/13] gpiolib: Introduce gpiochip_node_count() helper Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 03/13] pinctrl: stm32: Replace custom code by gpiochip_node_count() call Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 04/13] pinctrl: stm32: Switch to use for_each_gpiochip_node() helper Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 05/13] pinctrl: samsung: " Andy Shevchenko
2022-03-30 17:25 ` kernel test robot
2022-03-30 18:46 ` kernel test robot
2022-03-30 19:58 ` kernel test robot
2022-03-31 18:16 ` kernel test robot
2022-03-31 22:31 ` kernel test robot
2022-03-30 14:50 ` [PATCH v3 06/13] pinctrl: renesas: rza1: Replace custom code by gpiochip_node_count() call Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 07/13] pinctrl: renesas: rza1: Switch to use for_each_gpiochip_node() helper Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 08/13] pinctrl: npcm7xx: " Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 09/13] pinctrl: meson: Rename REG_* to MESON_REG_* Andy Shevchenko
2022-03-30 15:22 ` Neil Armstrong
2022-03-30 14:50 ` [PATCH v3 10/13] pinctrl: meson: Enable COMPILE_TEST Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 11/13] pinctrl: meson: Replace custom code by gpiochip_node_count() call Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 12/13] pinctrl: armada-37xx: Switch to use fwnode instead of of_node Andy Shevchenko
2022-03-30 14:50 ` [PATCH v3 13/13] pinctrl: armada-37xx: Reuse GPIO fwnode in armada_37xx_irqchip_register() Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).