* [PATCH v2 00/15] gpio: Use modern PM macros
@ 2025-11-18 0:32 Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 01/15] gpio: dwapb: " Jisheng Zhang
` (15 more replies)
0 siblings, 16 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards or
__maybe_unused.
This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.
Almost all drivers are converted, only gpio-tegra and gpio-mlxbf are
left as is, because the memory for saving HW context is not trivial,
if we convert them, then the two drivers' users may complain for
!CONFIG_PM && !CONFIG_PM_SLEEP case. So I didn't touch them.
patch to gpio-dwapb.c is tested on real HW, others are compile-tested only.
since v1:
- rebase on the latest gpio/for-next branch.
- collect Acked-by, Reviewed-by tags.
- clarify the trival memory wasted numbers with CONFIG_PM=n in the
dwapb's patch commit message as suggested by Andy.
- drop patch to bt8xxx since the clean up is acchieved when switching
to generic PCI pm framework.
Jisheng Zhang (15):
gpio: dwapb: Use modern PM macros
gpio: brcmstb: Use modern PM macros
gpio: htc-egpio: Use modern PM macros
gpio: pl061: Use modern PM macros
gpio: pxa: Use modern PM macros
gpio: ml-ioh: Use modern PM macros
gpio: mlxbf2: Use modern PM macros
gpio: msc313: Use modern PM macros
gpio: omap: Use modern PM macros
gpio: pch: Use modern PM macros
gpio: tqmx86: Use modern PM macros
gpio: uniphier: Use modern PM macros
gpio: xgene: Use modern PM macros
gpio: xilinx: Use modern PM macros
gpio: zynq: Use modern PM macros
drivers/gpio/gpio-brcmstb.c | 12 +++---------
drivers/gpio/gpio-dwapb.c | 32 ++++++++------------------------
drivers/gpio/gpio-htc-egpio.c | 21 ++++++++-------------
drivers/gpio/gpio-ml-ioh.c | 12 ++++++------
drivers/gpio/gpio-mlxbf2.c | 8 ++++----
drivers/gpio/gpio-msc313.c | 8 ++++----
drivers/gpio/gpio-omap.c | 15 +++++++--------
drivers/gpio/gpio-pch.c | 12 ++++++------
drivers/gpio/gpio-pl061.c | 17 ++---------------
drivers/gpio/gpio-pxa.c | 12 ++----------
drivers/gpio/gpio-tqmx86.c | 9 ++++-----
drivers/gpio/gpio-uniphier.c | 9 ++++-----
drivers/gpio/gpio-xgene.c | 8 ++++----
drivers/gpio/gpio-xilinx.c | 15 +++++++--------
drivers/gpio/gpio-zynq.c | 15 +++++++--------
15 files changed, 76 insertions(+), 129 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v2 01/15] gpio: dwapb: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 10:15 ` Andy Shevchenko
2025-11-18 0:32 ` [PATCH v2 02/15] gpio: brcmstb: " Jisheng Zhang
` (14 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.
The dwapb_context structure is always embedded into struct
dwapb_gpio_port to simplify code. Sure this brings a tiny 36 bytes
data overhead for !CONFIG_PM_SLEP. After greping the arm/arm64/riscv
dts dir, the max port number is 6, the berlin2q soc families, so this
means current we have wasted 216 bytes memory which is trivial
compared to the system memory.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-dwapb.c | 32 ++++++++------------------------
1 file changed, 8 insertions(+), 24 deletions(-)
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index b42ff46d292b..a431bea959ed 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -79,7 +79,6 @@ struct dwapb_platform_data {
unsigned int nports;
};
-#ifdef CONFIG_PM_SLEEP
/* Store GPIO context across system-wide suspend/resume transitions */
struct dwapb_context {
u32 data;
@@ -92,7 +91,6 @@ struct dwapb_context {
u32 int_deb;
u32 wake_en;
};
-#endif
struct dwapb_gpio_port_irqchip {
unsigned int nr_irqs;
@@ -103,9 +101,7 @@ struct dwapb_gpio_port {
struct gpio_generic_chip chip;
struct dwapb_gpio_port_irqchip *pirq;
struct dwapb_gpio *gpio;
-#ifdef CONFIG_PM_SLEEP
- struct dwapb_context *ctx;
-#endif
+ struct dwapb_context ctx;
unsigned int idx;
};
@@ -363,12 +359,11 @@ static int dwapb_irq_set_type(struct irq_data *d, u32 type)
return 0;
}
-#ifdef CONFIG_PM_SLEEP
static int dwapb_irq_set_wake(struct irq_data *d, unsigned int enable)
{
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
struct dwapb_gpio *gpio = to_dwapb_gpio(gc);
- struct dwapb_context *ctx = gpio->ports[0].ctx;
+ struct dwapb_context *ctx = &gpio->ports[0].ctx;
irq_hw_number_t bit = irqd_to_hwirq(d);
if (enable)
@@ -378,9 +373,6 @@ static int dwapb_irq_set_wake(struct irq_data *d, unsigned int enable)
return 0;
}
-#else
-#define dwapb_irq_set_wake NULL
-#endif
static const struct irq_chip dwapb_irq_chip = {
.name = DWAPB_DRIVER_NAME,
@@ -390,7 +382,7 @@ static const struct irq_chip dwapb_irq_chip = {
.irq_set_type = dwapb_irq_set_type,
.irq_enable = dwapb_irq_enable,
.irq_disable = dwapb_irq_disable,
- .irq_set_wake = dwapb_irq_set_wake,
+ .irq_set_wake = pm_sleep_ptr(dwapb_irq_set_wake),
.flags = IRQCHIP_IMMUTABLE,
GPIOCHIP_IRQ_RESOURCE_HELPERS,
};
@@ -515,12 +507,6 @@ static int dwapb_gpio_add_port(struct dwapb_gpio *gpio,
port->gpio = gpio;
port->idx = pp->idx;
-#ifdef CONFIG_PM_SLEEP
- port->ctx = devm_kzalloc(gpio->dev, sizeof(*port->ctx), GFP_KERNEL);
- if (!port->ctx)
- return -ENOMEM;
-#endif
-
dat = gpio->regs + GPIO_EXT_PORTA + pp->idx * GPIO_EXT_PORT_STRIDE;
set = gpio->regs + GPIO_SWPORTA_DR + pp->idx * GPIO_SWPORT_DR_STRIDE;
dirout = gpio->regs + GPIO_SWPORTA_DDR + pp->idx * GPIO_SWPORT_DDR_STRIDE;
@@ -759,7 +745,6 @@ static int dwapb_gpio_probe(struct platform_device *pdev)
return 0;
}
-#ifdef CONFIG_PM_SLEEP
static int dwapb_gpio_suspend(struct device *dev)
{
struct dwapb_gpio *gpio = dev_get_drvdata(dev);
@@ -770,7 +755,7 @@ static int dwapb_gpio_suspend(struct device *dev)
for (i = 0; i < gpio->nr_ports; i++) {
unsigned int offset;
unsigned int idx = gpio->ports[i].idx;
- struct dwapb_context *ctx = gpio->ports[i].ctx;
+ struct dwapb_context *ctx = &gpio->ports[i].ctx;
offset = GPIO_SWPORTA_DDR + idx * GPIO_SWPORT_DDR_STRIDE;
ctx->dir = dwapb_read(gpio, offset);
@@ -818,7 +803,7 @@ static int dwapb_gpio_resume(struct device *dev)
for (i = 0; i < gpio->nr_ports; i++) {
unsigned int offset;
unsigned int idx = gpio->ports[i].idx;
- struct dwapb_context *ctx = gpio->ports[i].ctx;
+ struct dwapb_context *ctx = &gpio->ports[i].ctx;
offset = GPIO_SWPORTA_DR + idx * GPIO_SWPORT_DR_STRIDE;
dwapb_write(gpio, offset, ctx->data);
@@ -844,15 +829,14 @@ static int dwapb_gpio_resume(struct device *dev)
return 0;
}
-#endif
-static SIMPLE_DEV_PM_OPS(dwapb_gpio_pm_ops, dwapb_gpio_suspend,
- dwapb_gpio_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(dwapb_gpio_pm_ops,
+ dwapb_gpio_suspend, dwapb_gpio_resume);
static struct platform_driver dwapb_gpio_driver = {
.driver = {
.name = DWAPB_DRIVER_NAME,
- .pm = &dwapb_gpio_pm_ops,
+ .pm = pm_sleep_ptr(&dwapb_gpio_pm_ops),
.of_match_table = dwapb_of_match,
.acpi_match_table = dwapb_acpi_match,
},
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 02/15] gpio: brcmstb: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 01/15] gpio: dwapb: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 18:35 ` Florian Fainelli
2025-11-18 0:32 ` [PATCH v2 03/15] gpio: htc-egpio: " Jisheng Zhang
` (13 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Doug Berger <opendmb@gmail.com>
---
drivers/gpio/gpio-brcmstb.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/gpio/gpio-brcmstb.c b/drivers/gpio/gpio-brcmstb.c
index f40c9472588b..af9287ff5dc4 100644
--- a/drivers/gpio/gpio-brcmstb.c
+++ b/drivers/gpio/gpio-brcmstb.c
@@ -533,7 +533,6 @@ static void brcmstb_gpio_shutdown(struct platform_device *pdev)
brcmstb_gpio_quiesce(&pdev->dev, false);
}
-#ifdef CONFIG_PM_SLEEP
static void brcmstb_gpio_bank_restore(struct brcmstb_gpio_priv *priv,
struct brcmstb_gpio_bank *bank)
{
@@ -572,14 +571,9 @@ static int brcmstb_gpio_resume(struct device *dev)
return 0;
}
-#else
-#define brcmstb_gpio_suspend NULL
-#define brcmstb_gpio_resume NULL
-#endif /* CONFIG_PM_SLEEP */
-
static const struct dev_pm_ops brcmstb_gpio_pm_ops = {
- .suspend_noirq = brcmstb_gpio_suspend,
- .resume_noirq = brcmstb_gpio_resume,
+ .suspend_noirq = pm_sleep_ptr(brcmstb_gpio_suspend),
+ .resume_noirq = pm_sleep_ptr(brcmstb_gpio_resume),
};
static int brcmstb_gpio_probe(struct platform_device *pdev)
@@ -755,7 +749,7 @@ static struct platform_driver brcmstb_gpio_driver = {
.driver = {
.name = "brcmstb-gpio",
.of_match_table = brcmstb_gpio_of_match,
- .pm = &brcmstb_gpio_pm_ops,
+ .pm = pm_sleep_ptr(&brcmstb_gpio_pm_ops),
},
.probe = brcmstb_gpio_probe,
.remove = brcmstb_gpio_remove,
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 03/15] gpio: htc-egpio: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 01/15] gpio: dwapb: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 02/15] gpio: brcmstb: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 04/15] gpio: pl061: " Jisheng Zhang
` (12 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-htc-egpio.c | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/drivers/gpio/gpio-htc-egpio.c b/drivers/gpio/gpio-htc-egpio.c
index 2eaed83214d8..72935d6dbebf 100644
--- a/drivers/gpio/gpio-htc-egpio.c
+++ b/drivers/gpio/gpio-htc-egpio.c
@@ -364,21 +364,20 @@ static int __init egpio_probe(struct platform_device *pdev)
return 0;
}
-#ifdef CONFIG_PM
-static int egpio_suspend(struct platform_device *pdev, pm_message_t state)
+static int egpio_suspend(struct device *dev)
{
- struct egpio_info *ei = platform_get_drvdata(pdev);
+ struct egpio_info *ei = dev_get_drvdata(dev);
- if (ei->chained_irq && device_may_wakeup(&pdev->dev))
+ if (ei->chained_irq && device_may_wakeup(dev))
enable_irq_wake(ei->chained_irq);
return 0;
}
-static int egpio_resume(struct platform_device *pdev)
+static int egpio_resume(struct device *dev)
{
- struct egpio_info *ei = platform_get_drvdata(pdev);
+ struct egpio_info *ei = dev_get_drvdata(dev);
- if (ei->chained_irq && device_may_wakeup(&pdev->dev))
+ if (ei->chained_irq && device_may_wakeup(dev))
disable_irq_wake(ei->chained_irq);
/* Update registers from the cache, in case
@@ -386,19 +385,15 @@ static int egpio_resume(struct platform_device *pdev)
egpio_write_cache(ei);
return 0;
}
-#else
-#define egpio_suspend NULL
-#define egpio_resume NULL
-#endif
+static DEFINE_SIMPLE_DEV_PM_OPS(egpio_pm_ops, egpio_suspend, egpio_resume);
static struct platform_driver egpio_driver = {
.driver = {
.name = "htc-egpio",
.suppress_bind_attrs = true,
+ .pm = pm_sleep_ptr(&egpio_pm_ops),
},
- .suspend = egpio_suspend,
- .resume = egpio_resume,
};
static int __init egpio_init(void)
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 04/15] gpio: pl061: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (2 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 03/15] gpio: htc-egpio: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 05/15] gpio: pxa: " Jisheng Zhang
` (11 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.
The pl061_context_save_regs structure is always embedded into struct
pl061 to simplify code, so this brings a tiny 8 bytes memory overhead
for !CONFIG_PM_SLEP.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/gpio/gpio-pl061.c | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c
index 02e4ffcf5a6f..919cf86fd590 100644
--- a/drivers/gpio/gpio-pl061.c
+++ b/drivers/gpio/gpio-pl061.c
@@ -37,7 +37,6 @@
#define PL061_GPIO_NR 8
-#ifdef CONFIG_PM
struct pl061_context_save_regs {
u8 gpio_data;
u8 gpio_dir;
@@ -46,7 +45,6 @@ struct pl061_context_save_regs {
u8 gpio_iev;
u8 gpio_ie;
};
-#endif
struct pl061 {
raw_spinlock_t lock;
@@ -55,9 +53,7 @@ struct pl061 {
struct gpio_chip gc;
int parent_irq;
-#ifdef CONFIG_PM
struct pl061_context_save_regs csave_regs;
-#endif
};
static int pl061_get_direction(struct gpio_chip *gc, unsigned offset)
@@ -367,7 +363,6 @@ static int pl061_probe(struct amba_device *adev, const struct amba_id *id)
return 0;
}
-#ifdef CONFIG_PM
static int pl061_suspend(struct device *dev)
{
struct pl061 *pl061 = dev_get_drvdata(dev);
@@ -411,13 +406,7 @@ static int pl061_resume(struct device *dev)
return 0;
}
-static const struct dev_pm_ops pl061_dev_pm_ops = {
- .suspend = pl061_suspend,
- .resume = pl061_resume,
- .freeze = pl061_suspend,
- .restore = pl061_resume,
-};
-#endif
+static DEFINE_SIMPLE_DEV_PM_OPS(pl061_dev_pm_ops, pl061_suspend, pl061_resume);
static const struct amba_id pl061_ids[] = {
{
@@ -431,9 +420,7 @@ MODULE_DEVICE_TABLE(amba, pl061_ids);
static struct amba_driver pl061_gpio_driver = {
.drv = {
.name = "pl061_gpio",
-#ifdef CONFIG_PM
- .pm = &pl061_dev_pm_ops,
-#endif
+ .pm = pm_sleep_ptr(&pl061_dev_pm_ops),
},
.id_table = pl061_ids,
.probe = pl061_probe,
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (3 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 04/15] gpio: pl061: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 12:06 ` Andy Shevchenko
2025-11-18 0:32 ` [PATCH v2 06/15] gpio: ml-ioh: " Jisheng Zhang
` (10 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-pxa.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index fa22f3faa163..288c72f9c015 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -66,13 +66,10 @@ struct pxa_gpio_bank {
unsigned long irq_mask;
unsigned long irq_edge_rise;
unsigned long irq_edge_fall;
-
-#ifdef CONFIG_PM
unsigned long saved_gplr;
unsigned long saved_gpdr;
unsigned long saved_grer;
unsigned long saved_gfer;
-#endif
};
struct pxa_gpio_chip {
@@ -746,7 +743,6 @@ static int __init pxa_gpio_dt_init(void)
}
device_initcall(pxa_gpio_dt_init);
-#ifdef CONFIG_PM
static int pxa_gpio_suspend(void)
{
struct pxa_gpio_chip *pchip = pxa_gpio_chip;
@@ -787,14 +783,10 @@ static void pxa_gpio_resume(void)
writel_relaxed(c->saved_gpdr, c->regbase + GPDR_OFFSET);
}
}
-#else
-#define pxa_gpio_suspend NULL
-#define pxa_gpio_resume NULL
-#endif
static struct syscore_ops pxa_gpio_syscore_ops = {
- .suspend = pxa_gpio_suspend,
- .resume = pxa_gpio_resume,
+ .suspend = pm_ptr(pxa_gpio_suspend),
+ .resume = pm_ptr(pxa_gpio_resume),
};
static int __init pxa_gpio_sysinit(void)
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 06/15] gpio: ml-ioh: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (4 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 05/15] gpio: pxa: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 07/15] gpio: mlxbf2: " Jisheng Zhang
` (9 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Andy Shevchenko <andy@kernel.org>
---
drivers/gpio/gpio-ml-ioh.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpio/gpio-ml-ioh.c b/drivers/gpio/gpio-ml-ioh.c
index f6af81bf2b13..6576e5dcb0ee 100644
--- a/drivers/gpio/gpio-ml-ioh.c
+++ b/drivers/gpio/gpio-ml-ioh.c
@@ -160,7 +160,7 @@ static int ioh_gpio_direction_input(struct gpio_chip *gpio, unsigned nr)
/*
* Save register configuration and disable interrupts.
*/
-static void __maybe_unused ioh_gpio_save_reg_conf(struct ioh_gpio *chip)
+static void ioh_gpio_save_reg_conf(struct ioh_gpio *chip)
{
int i;
@@ -186,7 +186,7 @@ static void __maybe_unused ioh_gpio_save_reg_conf(struct ioh_gpio *chip)
/*
* This function restores the register configuration of the GPIO device.
*/
-static void __maybe_unused ioh_gpio_restore_reg_conf(struct ioh_gpio *chip)
+static void ioh_gpio_restore_reg_conf(struct ioh_gpio *chip)
{
int i;
@@ -479,7 +479,7 @@ static int ioh_gpio_probe(struct pci_dev *pdev,
return 0;
}
-static int __maybe_unused ioh_gpio_suspend(struct device *dev)
+static int ioh_gpio_suspend(struct device *dev)
{
struct ioh_gpio *chip = dev_get_drvdata(dev);
unsigned long flags;
@@ -491,7 +491,7 @@ static int __maybe_unused ioh_gpio_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused ioh_gpio_resume(struct device *dev)
+static int ioh_gpio_resume(struct device *dev)
{
struct ioh_gpio *chip = dev_get_drvdata(dev);
unsigned long flags;
@@ -505,7 +505,7 @@ static int __maybe_unused ioh_gpio_resume(struct device *dev)
return 0;
}
-static SIMPLE_DEV_PM_OPS(ioh_gpio_pm_ops, ioh_gpio_suspend, ioh_gpio_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(ioh_gpio_pm_ops, ioh_gpio_suspend, ioh_gpio_resume);
static const struct pci_device_id ioh_gpio_pcidev_id[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x802E) },
@@ -518,7 +518,7 @@ static struct pci_driver ioh_gpio_driver = {
.id_table = ioh_gpio_pcidev_id,
.probe = ioh_gpio_probe,
.driver = {
- .pm = &ioh_gpio_pm_ops,
+ .pm = pm_sleep_ptr(&ioh_gpio_pm_ops),
},
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 07/15] gpio: mlxbf2: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (5 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 06/15] gpio: ml-ioh: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 08/15] gpio: msc313: " Jisheng Zhang
` (8 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-mlxbf2.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpio/gpio-mlxbf2.c b/drivers/gpio/gpio-mlxbf2.c
index abffce3894fc..6668686a28ff 100644
--- a/drivers/gpio/gpio-mlxbf2.c
+++ b/drivers/gpio/gpio-mlxbf2.c
@@ -424,7 +424,7 @@ mlxbf2_gpio_probe(struct platform_device *pdev)
return 0;
}
-static int __maybe_unused mlxbf2_gpio_suspend(struct device *dev)
+static int mlxbf2_gpio_suspend(struct device *dev)
{
struct mlxbf2_gpio_context *gs = dev_get_drvdata(dev);
@@ -436,7 +436,7 @@ static int __maybe_unused mlxbf2_gpio_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused mlxbf2_gpio_resume(struct device *dev)
+static int mlxbf2_gpio_resume(struct device *dev)
{
struct mlxbf2_gpio_context *gs = dev_get_drvdata(dev);
@@ -447,7 +447,7 @@ static int __maybe_unused mlxbf2_gpio_resume(struct device *dev)
return 0;
}
-static SIMPLE_DEV_PM_OPS(mlxbf2_pm_ops, mlxbf2_gpio_suspend, mlxbf2_gpio_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(mlxbf2_pm_ops, mlxbf2_gpio_suspend, mlxbf2_gpio_resume);
static const struct acpi_device_id __maybe_unused mlxbf2_gpio_acpi_match[] = {
{ "MLNXBF22", 0 },
@@ -459,7 +459,7 @@ static struct platform_driver mlxbf2_gpio_driver = {
.driver = {
.name = "mlxbf2_gpio",
.acpi_match_table = mlxbf2_gpio_acpi_match,
- .pm = &mlxbf2_pm_ops,
+ .pm = pm_sleep_ptr(&mlxbf2_pm_ops),
},
.probe = mlxbf2_gpio_probe,
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 08/15] gpio: msc313: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (6 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 07/15] gpio: mlxbf2: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 09/15] gpio: omap: " Jisheng Zhang
` (7 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-msc313.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpio/gpio-msc313.c b/drivers/gpio/gpio-msc313.c
index b0cccd856840..7345afdc78de 100644
--- a/drivers/gpio/gpio-msc313.c
+++ b/drivers/gpio/gpio-msc313.c
@@ -694,7 +694,7 @@ static const struct of_device_id msc313_gpio_of_match[] = {
* SoC goes into suspend to memory mode so we need to save some
* of the register bits before suspending and put it back when resuming
*/
-static int __maybe_unused msc313_gpio_suspend(struct device *dev)
+static int msc313_gpio_suspend(struct device *dev)
{
struct msc313_gpio *gpio = dev_get_drvdata(dev);
int i;
@@ -705,7 +705,7 @@ static int __maybe_unused msc313_gpio_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused msc313_gpio_resume(struct device *dev)
+static int msc313_gpio_resume(struct device *dev)
{
struct msc313_gpio *gpio = dev_get_drvdata(dev);
int i;
@@ -716,13 +716,13 @@ static int __maybe_unused msc313_gpio_resume(struct device *dev)
return 0;
}
-static SIMPLE_DEV_PM_OPS(msc313_gpio_ops, msc313_gpio_suspend, msc313_gpio_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(msc313_gpio_ops, msc313_gpio_suspend, msc313_gpio_resume);
static struct platform_driver msc313_gpio_driver = {
.driver = {
.name = DRIVER_NAME,
.of_match_table = msc313_gpio_of_match,
- .pm = &msc313_gpio_ops,
+ .pm = pm_sleep_ptr(&msc313_gpio_ops),
},
.probe = msc313_gpio_probe,
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 09/15] gpio: omap: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (7 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 08/15] gpio: msc313: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 10/15] gpio: pch: " Jisheng Zhang
` (6 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-omap.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index a268c76bdca6..e136e81794df 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1503,7 +1503,7 @@ static void omap_gpio_remove(struct platform_device *pdev)
clk_unprepare(bank->dbck);
}
-static int __maybe_unused omap_gpio_runtime_suspend(struct device *dev)
+static int omap_gpio_runtime_suspend(struct device *dev)
{
struct gpio_bank *bank = dev_get_drvdata(dev);
unsigned long flags;
@@ -1516,7 +1516,7 @@ static int __maybe_unused omap_gpio_runtime_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused omap_gpio_runtime_resume(struct device *dev)
+static int omap_gpio_runtime_resume(struct device *dev)
{
struct gpio_bank *bank = dev_get_drvdata(dev);
unsigned long flags;
@@ -1529,7 +1529,7 @@ static int __maybe_unused omap_gpio_runtime_resume(struct device *dev)
return 0;
}
-static int __maybe_unused omap_gpio_suspend(struct device *dev)
+static int omap_gpio_suspend(struct device *dev)
{
struct gpio_bank *bank = dev_get_drvdata(dev);
@@ -1541,7 +1541,7 @@ static int __maybe_unused omap_gpio_suspend(struct device *dev)
return omap_gpio_runtime_suspend(dev);
}
-static int __maybe_unused omap_gpio_resume(struct device *dev)
+static int omap_gpio_resume(struct device *dev)
{
struct gpio_bank *bank = dev_get_drvdata(dev);
@@ -1554,9 +1554,8 @@ static int __maybe_unused omap_gpio_resume(struct device *dev)
}
static const struct dev_pm_ops gpio_pm_ops = {
- SET_RUNTIME_PM_OPS(omap_gpio_runtime_suspend, omap_gpio_runtime_resume,
- NULL)
- SET_LATE_SYSTEM_SLEEP_PM_OPS(omap_gpio_suspend, omap_gpio_resume)
+ RUNTIME_PM_OPS(omap_gpio_runtime_suspend, omap_gpio_runtime_resume, NULL)
+ LATE_SYSTEM_SLEEP_PM_OPS(omap_gpio_suspend, omap_gpio_resume)
};
static struct platform_driver omap_gpio_driver = {
@@ -1564,7 +1563,7 @@ static struct platform_driver omap_gpio_driver = {
.remove = omap_gpio_remove,
.driver = {
.name = "omap_gpio",
- .pm = &gpio_pm_ops,
+ .pm = pm_ptr(&gpio_pm_ops),
.of_match_table = omap_gpio_match,
},
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 10/15] gpio: pch: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (8 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 09/15] gpio: omap: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 11/15] gpio: tqmx86: " Jisheng Zhang
` (5 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Andy Shevchenko <andy@kernel.org>
---
drivers/gpio/gpio-pch.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c
index 9925687e05fb..4ffa0955a9e3 100644
--- a/drivers/gpio/gpio-pch.c
+++ b/drivers/gpio/gpio-pch.c
@@ -171,7 +171,7 @@ static int pch_gpio_direction_input(struct gpio_chip *gpio, unsigned int nr)
/*
* Save register configuration and disable interrupts.
*/
-static void __maybe_unused pch_gpio_save_reg_conf(struct pch_gpio *chip)
+static void pch_gpio_save_reg_conf(struct pch_gpio *chip)
{
chip->pch_gpio_reg.ien_reg = ioread32(&chip->reg->ien);
chip->pch_gpio_reg.imask_reg = ioread32(&chip->reg->imask);
@@ -187,7 +187,7 @@ static void __maybe_unused pch_gpio_save_reg_conf(struct pch_gpio *chip)
/*
* This function restores the register configuration of the GPIO device.
*/
-static void __maybe_unused pch_gpio_restore_reg_conf(struct pch_gpio *chip)
+static void pch_gpio_restore_reg_conf(struct pch_gpio *chip)
{
iowrite32(chip->pch_gpio_reg.ien_reg, &chip->reg->ien);
iowrite32(chip->pch_gpio_reg.imask_reg, &chip->reg->imask);
@@ -402,7 +402,7 @@ static int pch_gpio_probe(struct pci_dev *pdev,
return pch_gpio_alloc_generic_chip(chip, irq_base, gpio_pins[chip->ioh]);
}
-static int __maybe_unused pch_gpio_suspend(struct device *dev)
+static int pch_gpio_suspend(struct device *dev)
{
struct pch_gpio *chip = dev_get_drvdata(dev);
unsigned long flags;
@@ -414,7 +414,7 @@ static int __maybe_unused pch_gpio_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused pch_gpio_resume(struct device *dev)
+static int pch_gpio_resume(struct device *dev)
{
struct pch_gpio *chip = dev_get_drvdata(dev);
unsigned long flags;
@@ -428,7 +428,7 @@ static int __maybe_unused pch_gpio_resume(struct device *dev)
return 0;
}
-static SIMPLE_DEV_PM_OPS(pch_gpio_pm_ops, pch_gpio_suspend, pch_gpio_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(pch_gpio_pm_ops, pch_gpio_suspend, pch_gpio_resume);
static const struct pci_device_id pch_gpio_pcidev_id[] = {
{ PCI_DEVICE_DATA(INTEL, EG20T_PCH, INTEL_EG20T_PCH) },
@@ -444,7 +444,7 @@ static struct pci_driver pch_gpio_driver = {
.id_table = pch_gpio_pcidev_id,
.probe = pch_gpio_probe,
.driver = {
- .pm = &pch_gpio_pm_ops,
+ .pm = pm_sleep_ptr(&pch_gpio_pm_ops),
},
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 11/15] gpio: tqmx86: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (9 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 10/15] gpio: pch: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 12/15] gpio: uniphier: " Jisheng Zhang
` (4 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-tqmx86.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/gpio/gpio-tqmx86.c b/drivers/gpio/gpio-tqmx86.c
index 27dd09273292..d79f515137a5 100644
--- a/drivers/gpio/gpio-tqmx86.c
+++ b/drivers/gpio/gpio-tqmx86.c
@@ -279,19 +279,18 @@ static void tqmx86_gpio_irq_handler(struct irq_desc *desc)
}
/* Minimal runtime PM is needed by the IRQ subsystem */
-static int __maybe_unused tqmx86_gpio_runtime_suspend(struct device *dev)
+static int tqmx86_gpio_runtime_suspend(struct device *dev)
{
return 0;
}
-static int __maybe_unused tqmx86_gpio_runtime_resume(struct device *dev)
+static int tqmx86_gpio_runtime_resume(struct device *dev)
{
return 0;
}
static const struct dev_pm_ops tqmx86_gpio_dev_pm_ops = {
- SET_RUNTIME_PM_OPS(tqmx86_gpio_runtime_suspend,
- tqmx86_gpio_runtime_resume, NULL)
+ RUNTIME_PM_OPS(tqmx86_gpio_runtime_suspend, tqmx86_gpio_runtime_resume, NULL)
};
static void tqmx86_init_irq_valid_mask(struct gpio_chip *chip,
@@ -425,7 +424,7 @@ static int tqmx86_gpio_probe(struct platform_device *pdev)
static struct platform_driver tqmx86_gpio_driver = {
.driver = {
.name = "tqmx86-gpio",
- .pm = &tqmx86_gpio_dev_pm_ops,
+ .pm = pm_sleep_ptr(&tqmx86_gpio_dev_pm_ops),
},
.probe = tqmx86_gpio_probe,
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 12/15] gpio: uniphier: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (10 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 11/15] gpio: tqmx86: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 13/15] gpio: xgene: " Jisheng Zhang
` (3 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-uniphier.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/gpio/gpio-uniphier.c b/drivers/gpio/gpio-uniphier.c
index 197bb1d22b3c..0574dde5b5bb 100644
--- a/drivers/gpio/gpio-uniphier.c
+++ b/drivers/gpio/gpio-uniphier.c
@@ -426,7 +426,7 @@ static void uniphier_gpio_remove(struct platform_device *pdev)
irq_domain_remove(priv->domain);
}
-static int __maybe_unused uniphier_gpio_suspend(struct device *dev)
+static int uniphier_gpio_suspend(struct device *dev)
{
struct uniphier_gpio_priv *priv = dev_get_drvdata(dev);
unsigned int nbanks = uniphier_gpio_get_nbanks(priv->chip.ngpio);
@@ -448,7 +448,7 @@ static int __maybe_unused uniphier_gpio_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused uniphier_gpio_resume(struct device *dev)
+static int uniphier_gpio_resume(struct device *dev)
{
struct uniphier_gpio_priv *priv = dev_get_drvdata(dev);
unsigned int nbanks = uniphier_gpio_get_nbanks(priv->chip.ngpio);
@@ -473,8 +473,7 @@ static int __maybe_unused uniphier_gpio_resume(struct device *dev)
}
static const struct dev_pm_ops uniphier_gpio_pm_ops = {
- SET_LATE_SYSTEM_SLEEP_PM_OPS(uniphier_gpio_suspend,
- uniphier_gpio_resume)
+ LATE_SYSTEM_SLEEP_PM_OPS(uniphier_gpio_suspend, uniphier_gpio_resume)
};
static const struct of_device_id uniphier_gpio_match[] = {
@@ -489,7 +488,7 @@ static struct platform_driver uniphier_gpio_driver = {
.driver = {
.name = "uniphier-gpio",
.of_match_table = uniphier_gpio_match,
- .pm = &uniphier_gpio_pm_ops,
+ .pm = pm_sleep_ptr(&uniphier_gpio_pm_ops),
},
};
module_platform_driver(uniphier_gpio_driver);
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 13/15] gpio: xgene: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (11 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 12/15] gpio: uniphier: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 14/15] gpio: xilinx: " Jisheng Zhang
` (2 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-xgene.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpio/gpio-xgene.c b/drivers/gpio/gpio-xgene.c
index 4f627de3f56c..809668449dbe 100644
--- a/drivers/gpio/gpio-xgene.c
+++ b/drivers/gpio/gpio-xgene.c
@@ -130,7 +130,7 @@ static int xgene_gpio_dir_out(struct gpio_chip *gc,
return 0;
}
-static __maybe_unused int xgene_gpio_suspend(struct device *dev)
+static int xgene_gpio_suspend(struct device *dev)
{
struct xgene_gpio *gpio = dev_get_drvdata(dev);
unsigned long bank_offset;
@@ -143,7 +143,7 @@ static __maybe_unused int xgene_gpio_suspend(struct device *dev)
return 0;
}
-static __maybe_unused int xgene_gpio_resume(struct device *dev)
+static int xgene_gpio_resume(struct device *dev)
{
struct xgene_gpio *gpio = dev_get_drvdata(dev);
unsigned long bank_offset;
@@ -156,7 +156,7 @@ static __maybe_unused int xgene_gpio_resume(struct device *dev)
return 0;
}
-static SIMPLE_DEV_PM_OPS(xgene_gpio_pm, xgene_gpio_suspend, xgene_gpio_resume);
+static DEFINE_SIMPLE_DEV_PM_OPS(xgene_gpio_pm, xgene_gpio_suspend, xgene_gpio_resume);
static int xgene_gpio_probe(struct platform_device *pdev)
{
@@ -204,7 +204,7 @@ static struct platform_driver xgene_gpio_driver = {
.name = "xgene-gpio",
.of_match_table = xgene_gpio_of_match,
.acpi_match_table = ACPI_PTR(xgene_gpio_acpi_match),
- .pm = &xgene_gpio_pm,
+ .pm = pm_sleep_ptr(&xgene_gpio_pm),
},
.probe = xgene_gpio_probe,
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 14/15] gpio: xilinx: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (12 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 13/15] gpio: xgene: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 15/15] gpio: zynq: " Jisheng Zhang
2025-11-19 13:40 ` [PATCH v2 00/15] gpio: " Linus Walleij
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-xilinx.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c
index 83675ac81077..be4b4d730547 100644
--- a/drivers/gpio/gpio-xilinx.c
+++ b/drivers/gpio/gpio-xilinx.c
@@ -286,7 +286,7 @@ static void xgpio_free(struct gpio_chip *chip, unsigned int offset)
pm_runtime_put(chip->parent);
}
-static int __maybe_unused xgpio_suspend(struct device *dev)
+static int xgpio_suspend(struct device *dev)
{
struct xgpio_instance *gpio = dev_get_drvdata(dev);
struct irq_data *data = irq_get_irq_data(gpio->irq);
@@ -327,7 +327,7 @@ static void xgpio_irq_ack(struct irq_data *irq_data)
{
}
-static int __maybe_unused xgpio_resume(struct device *dev)
+static int xgpio_resume(struct device *dev)
{
struct xgpio_instance *gpio = dev_get_drvdata(dev);
struct irq_data *data = irq_get_irq_data(gpio->irq);
@@ -343,7 +343,7 @@ static int __maybe_unused xgpio_resume(struct device *dev)
return 0;
}
-static int __maybe_unused xgpio_runtime_suspend(struct device *dev)
+static int xgpio_runtime_suspend(struct device *dev)
{
struct xgpio_instance *gpio = dev_get_drvdata(dev);
@@ -352,7 +352,7 @@ static int __maybe_unused xgpio_runtime_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused xgpio_runtime_resume(struct device *dev)
+static int xgpio_runtime_resume(struct device *dev)
{
struct xgpio_instance *gpio = dev_get_drvdata(dev);
@@ -360,9 +360,8 @@ static int __maybe_unused xgpio_runtime_resume(struct device *dev)
}
static const struct dev_pm_ops xgpio_dev_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(xgpio_suspend, xgpio_resume)
- SET_RUNTIME_PM_OPS(xgpio_runtime_suspend,
- xgpio_runtime_resume, NULL)
+ SYSTEM_SLEEP_PM_OPS(xgpio_suspend, xgpio_resume)
+ RUNTIME_PM_OPS(xgpio_runtime_suspend, xgpio_runtime_resume, NULL)
};
/**
@@ -682,7 +681,7 @@ static struct platform_driver xgpio_plat_driver = {
.driver = {
.name = "gpio-xilinx",
.of_match_table = xgpio_of_match,
- .pm = &xgpio_dev_pm_ops,
+ .pm = pm_ptr(&xgpio_dev_pm_ops),
},
};
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH v2 15/15] gpio: zynq: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (13 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 14/15] gpio: xilinx: " Jisheng Zhang
@ 2025-11-18 0:32 ` Jisheng Zhang
2025-11-19 13:40 ` [PATCH v2 00/15] gpio: " Linus Walleij
15 siblings, 0 replies; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-18 0:32 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
Use the modern PM macros for the suspend and resume functions to be
automatically dropped by the compiler when CONFIG_PM or
CONFIG_PM_SLEEP are disabled, without having to use __maybe_unused
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/gpio/gpio-zynq.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c
index 0ffd76e8951f..97780c57ab56 100644
--- a/drivers/gpio/gpio-zynq.c
+++ b/drivers/gpio/gpio-zynq.c
@@ -735,7 +735,7 @@ static void zynq_gpio_restore_context(struct zynq_gpio *gpio)
}
}
-static int __maybe_unused zynq_gpio_suspend(struct device *dev)
+static int zynq_gpio_suspend(struct device *dev)
{
struct zynq_gpio *gpio = dev_get_drvdata(dev);
struct irq_data *data = irq_get_irq_data(gpio->irq);
@@ -756,7 +756,7 @@ static int __maybe_unused zynq_gpio_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused zynq_gpio_resume(struct device *dev)
+static int zynq_gpio_resume(struct device *dev)
{
struct zynq_gpio *gpio = dev_get_drvdata(dev);
struct irq_data *data = irq_get_irq_data(gpio->irq);
@@ -779,7 +779,7 @@ static int __maybe_unused zynq_gpio_resume(struct device *dev)
return 0;
}
-static int __maybe_unused zynq_gpio_runtime_suspend(struct device *dev)
+static int zynq_gpio_runtime_suspend(struct device *dev)
{
struct zynq_gpio *gpio = dev_get_drvdata(dev);
@@ -788,7 +788,7 @@ static int __maybe_unused zynq_gpio_runtime_suspend(struct device *dev)
return 0;
}
-static int __maybe_unused zynq_gpio_runtime_resume(struct device *dev)
+static int zynq_gpio_runtime_resume(struct device *dev)
{
struct zynq_gpio *gpio = dev_get_drvdata(dev);
@@ -814,9 +814,8 @@ static void zynq_gpio_free(struct gpio_chip *chip, unsigned int offset)
}
static const struct dev_pm_ops zynq_gpio_dev_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(zynq_gpio_suspend, zynq_gpio_resume)
- SET_RUNTIME_PM_OPS(zynq_gpio_runtime_suspend,
- zynq_gpio_runtime_resume, NULL)
+ SYSTEM_SLEEP_PM_OPS(zynq_gpio_suspend, zynq_gpio_resume)
+ RUNTIME_PM_OPS(zynq_gpio_runtime_suspend, zynq_gpio_runtime_resume, NULL)
};
static const struct zynq_platform_data versal_gpio_def = {
@@ -1022,7 +1021,7 @@ static void zynq_gpio_remove(struct platform_device *pdev)
static struct platform_driver zynq_gpio_driver = {
.driver = {
.name = DRIVER_NAME,
- .pm = &zynq_gpio_dev_pm_ops,
+ .pm = pm_ptr(&zynq_gpio_dev_pm_ops),
.of_match_table = zynq_gpio_of_match,
},
.probe = zynq_gpio_probe,
--
2.51.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH v2 01/15] gpio: dwapb: Use modern PM macros
2025-11-18 0:32 ` [PATCH v2 01/15] gpio: dwapb: " Jisheng Zhang
@ 2025-11-18 10:15 ` Andy Shevchenko
2025-11-19 12:42 ` Jisheng Zhang
0 siblings, 1 reply; 30+ messages in thread
From: Andy Shevchenko @ 2025-11-18 10:15 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek, linux-gpio, linux-arm-kernel, linux-kernel,
linux-omap
On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang <jszhang@kernel.org> wrote:
>
> Use the modern PM macros for the suspend and resume functions to be
> automatically dropped by the compiler when CONFIG_PM or
> CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
>
> This has the advantage of always compiling these functions in,
> independently of any Kconfig option. Thanks to that, bugs and other
> regressions are subsequently easier to catch.
>
> The dwapb_context structure is always embedded into struct
> dwapb_gpio_port to simplify code. Sure this brings a tiny 36 bytes
> data overhead for !CONFIG_PM_SLEP. After greping the arm/arm64/riscv
SLEEP
grepping
> dts dir, the max port number is 6, the berlin2q soc families, so this
> means current we have wasted 216 bytes memory which is trivial
currently
> compared to the system memory.
I still think the embedding is not related to this change and should
be justified in a separate patch. W/o that part the rest looks fine.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-18 0:32 ` [PATCH v2 05/15] gpio: pxa: " Jisheng Zhang
@ 2025-11-18 12:06 ` Andy Shevchenko
2025-11-18 22:03 ` Robert Jarzmik
0 siblings, 1 reply; 30+ messages in thread
From: Andy Shevchenko @ 2025-11-18 12:06 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek, linux-gpio, linux-arm-kernel, linux-kernel,
linux-omap
On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang <jszhang@kernel.org> wrote:
>
> Use the modern PM macros for the suspend and resume functions to be
> automatically dropped by the compiler when CONFIG_PM or
> CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
>
> This has the advantage of always compiling these functions in,
> independently of any Kconfig option. Thanks to that, bugs and other
> regressions are subsequently easier to catch.
...
> unsigned long irq_mask;
> unsigned long irq_edge_rise;
> unsigned long irq_edge_fall;
> -
Stray blank line removal.
> -#ifdef CONFIG_PM
> unsigned long saved_gplr;
> unsigned long saved_gpdr;
> unsigned long saved_grer;
> unsigned long saved_gfer;
> -#endif
Otherwise, LGTM.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 02/15] gpio: brcmstb: Use modern PM macros
2025-11-18 0:32 ` [PATCH v2 02/15] gpio: brcmstb: " Jisheng Zhang
@ 2025-11-18 18:35 ` Florian Fainelli
0 siblings, 0 replies; 30+ messages in thread
From: Florian Fainelli @ 2025-11-18 18:35 UTC (permalink / raw)
To: Jisheng Zhang, Doug Berger, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek
Cc: linux-gpio, linux-arm-kernel, linux-kernel, linux-omap
On 11/17/2025 4:32 PM, Jisheng Zhang wrote:
> Use the modern PM macros for the suspend and resume functions to be
> automatically dropped by the compiler when CONFIG_PM or
> CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
>
> This has the advantage of always compiling these functions in,
> independently of any Kconfig option. Thanks to that, bugs and other
> regressions are subsequently easier to catch.
>
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> Acked-by: Doug Berger <opendmb@gmail.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-18 12:06 ` Andy Shevchenko
@ 2025-11-18 22:03 ` Robert Jarzmik
2025-11-19 7:56 ` Andy Shevchenko
2025-11-19 12:22 ` Jisheng Zhang
0 siblings, 2 replies; 30+ messages in thread
From: Robert Jarzmik @ 2025-11-18 22:03 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Jisheng Zhang, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, Linus Walleij, Bartosz Golaszewski,
Hoan Tran, Andy Shevchenko, Daniel Palmer, Romain Perier,
Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Kunihiko Hayashi, Masami Hiramatsu, Shubhrajyoti Datta,
Srinivas Neeli, Michal Simek, linux-gpio, linux-arm-kernel,
linux-kernel, linux-omap
Andy Shevchenko <andy.shevchenko@gmail.com> writes:
> On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang
> <jszhang@kernel.org> wrote:
>>
>> Use the modern PM macros for the suspend and resume functions
>> to be
>> automatically dropped by the compiler when CONFIG_PM or
>> CONFIG_PM_SLEEP are disabled, without having to use #ifdef
>> guards.
...zip...
>
>> -#ifdef CONFIG_PM
>> unsigned long saved_gplr;
>> unsigned long saved_gpdr;
>> unsigned long saved_grer;
>> unsigned long saved_gfer;
>> -#endif
Actually this is not equivalent to what was there before.
With Jisheng's patch, with CONFIG_PM disabled, he adds 16 bytes to
the
structure. You might thing today, 16 bytes is nothing. True, but
on a
64MB RAM devices, it's something.
That might not be a reason to reject the patch, but it's not only
a
"modernisation patch".
Cheers.
--
Robert
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-18 22:03 ` Robert Jarzmik
@ 2025-11-19 7:56 ` Andy Shevchenko
2025-11-19 12:47 ` Jisheng Zhang
2025-11-19 12:22 ` Jisheng Zhang
1 sibling, 1 reply; 30+ messages in thread
From: Andy Shevchenko @ 2025-11-19 7:56 UTC (permalink / raw)
To: Robert Jarzmik
Cc: Jisheng Zhang, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, Linus Walleij, Bartosz Golaszewski,
Hoan Tran, Andy Shevchenko, Daniel Palmer, Romain Perier,
Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Kunihiko Hayashi, Masami Hiramatsu, Shubhrajyoti Datta,
Srinivas Neeli, Michal Simek, linux-gpio, linux-arm-kernel,
linux-kernel, linux-omap
On Wed, Nov 19, 2025 at 12:04 AM Robert Jarzmik <robert.jarzmik@free.fr> wrote:
> Andy Shevchenko <andy.shevchenko@gmail.com> writes:
> > On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang
> > <jszhang@kernel.org> wrote:
...
> >> -#ifdef CONFIG_PM
> >> unsigned long saved_gplr;
> >> unsigned long saved_gpdr;
> >> unsigned long saved_grer;
> >> unsigned long saved_gfer;
> >> -#endif
>
> Actually this is not equivalent to what was there before.
>
> With Jisheng's patch, with CONFIG_PM disabled, he adds 16 bytes to
> the
> structure. You might thing today, 16 bytes is nothing. True, but
> on a
> 64MB RAM devices, it's something.
>
> That might not be a reason to reject the patch, but it's not only
> a
> "modernisation patch".
Actually a good point! On the same grounds I semi-nacked the gpio-dwapb change.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-18 22:03 ` Robert Jarzmik
2025-11-19 7:56 ` Andy Shevchenko
@ 2025-11-19 12:22 ` Jisheng Zhang
2025-11-20 20:48 ` Robert Jarzmik
1 sibling, 1 reply; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-19 12:22 UTC (permalink / raw)
To: Robert Jarzmik
Cc: Andy Shevchenko, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, Linus Walleij, Bartosz Golaszewski,
Hoan Tran, Andy Shevchenko, Daniel Palmer, Romain Perier,
Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Kunihiko Hayashi, Masami Hiramatsu, Shubhrajyoti Datta,
Srinivas Neeli, Michal Simek, linux-gpio, linux-arm-kernel,
linux-kernel, linux-omap
On Tue, Nov 18, 2025 at 11:03:41PM +0100, Robert Jarzmik wrote:
> Andy Shevchenko <andy.shevchenko@gmail.com> writes:
>
> > On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang <jszhang@kernel.org>
> > wrote:
> > >
> > > Use the modern PM macros for the suspend and resume functions to be
> > > automatically dropped by the compiler when CONFIG_PM or
> > > CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
> ...zip...
> >
> > > -#ifdef CONFIG_PM
> > > unsigned long saved_gplr;
> > > unsigned long saved_gpdr;
> > > unsigned long saved_grer;
> > > unsigned long saved_gfer;
> > > -#endif
>
> Actually this is not equivalent to what was there before.
>
> With Jisheng's patch, with CONFIG_PM disabled, he adds 16 bytes to the
> structure. You might thing today, 16 bytes is nothing. True, but on a
> 64MB RAM devices, it's something.
hmm, each controller adds 16bytes, then even on 100 controller platforms
1600bytes. 1600 Bytes/64MB ~= 0.238%. it's trival. And is there such platform?
From another side, recently UP support is removed from the core sched,
that removing adds more .text and .data overhead, so if the users really
care about this kind of 16bytes, it means he(she) can't afford even the
16Bytes overhead, then I bet he(she) the always SMP in core sched, so
why not stick with the old kernel? What do you think?
>
> That might not be a reason to reject the patch, but it's not only a
> "modernisation patch".
>
> Cheers.
>
> --
> Robert
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 01/15] gpio: dwapb: Use modern PM macros
2025-11-18 10:15 ` Andy Shevchenko
@ 2025-11-19 12:42 ` Jisheng Zhang
2025-11-19 12:59 ` Jisheng Zhang
0 siblings, 1 reply; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-19 12:42 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek, linux-gpio, linux-arm-kernel, linux-kernel,
linux-omap
On Tue, Nov 18, 2025 at 12:15:35PM +0200, Andy Shevchenko wrote:
> On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang <jszhang@kernel.org> wrote:
> >
> > Use the modern PM macros for the suspend and resume functions to be
> > automatically dropped by the compiler when CONFIG_PM or
> > CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
> >
> > This has the advantage of always compiling these functions in,
> > independently of any Kconfig option. Thanks to that, bugs and other
> > regressions are subsequently easier to catch.
> >
> > The dwapb_context structure is always embedded into struct
> > dwapb_gpio_port to simplify code. Sure this brings a tiny 36 bytes
> > data overhead for !CONFIG_PM_SLEP. After greping the arm/arm64/riscv
>
> SLEEP
> grepping
>
> > dts dir, the max port number is 6, the berlin2q soc families, so this
> > means current we have wasted 216 bytes memory which is trivial
>
> currently
>
> > compared to the system memory.
>
> I still think the embedding is not related to this change and should
> be justified in a separate patch. W/o that part the rest looks fine.
I got your mind now: it looks like you prefer a seperate patch for the
embedding. Let me explain why I have the embedding within this patch:
the pm_ptr() or pm_sleep_ptr() just optimizes out the PM functions, but the
PM funtions are still compiled, so w/o the embedding, it's impossible
to clean up the code with the modern PM macros.
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-19 7:56 ` Andy Shevchenko
@ 2025-11-19 12:47 ` Jisheng Zhang
2025-11-19 13:58 ` Andy Shevchenko
0 siblings, 1 reply; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-19 12:47 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Robert Jarzmik, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, Linus Walleij, Bartosz Golaszewski,
Hoan Tran, Andy Shevchenko, Daniel Palmer, Romain Perier,
Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Kunihiko Hayashi, Masami Hiramatsu, Shubhrajyoti Datta,
Srinivas Neeli, Michal Simek, linux-gpio, linux-arm-kernel,
linux-kernel, linux-omap
On Wed, Nov 19, 2025 at 09:56:12AM +0200, Andy Shevchenko wrote:
> On Wed, Nov 19, 2025 at 12:04 AM Robert Jarzmik <robert.jarzmik@free.fr> wrote:
> > Andy Shevchenko <andy.shevchenko@gmail.com> writes:
> > > On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang
> > > <jszhang@kernel.org> wrote:
>
> ...
>
> > >> -#ifdef CONFIG_PM
> > >> unsigned long saved_gplr;
> > >> unsigned long saved_gpdr;
> > >> unsigned long saved_grer;
> > >> unsigned long saved_gfer;
> > >> -#endif
> >
> > Actually this is not equivalent to what was there before.
> >
> > With Jisheng's patch, with CONFIG_PM disabled, he adds 16 bytes to
> > the
> > structure. You might thing today, 16 bytes is nothing. True, but
> > on a
> > 64MB RAM devices, it's something.
> >
> > That might not be a reason to reject the patch, but it's not only
> > a
> > "modernisation patch".
>
> Actually a good point! On the same grounds I semi-nacked the gpio-dwapb change.
Hi Andy and Robert,
I have explained the reason of embedding within the cleanup/modernize
patch. Could you plz check?
Thanks
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 01/15] gpio: dwapb: Use modern PM macros
2025-11-19 12:42 ` Jisheng Zhang
@ 2025-11-19 12:59 ` Jisheng Zhang
2025-11-19 14:05 ` Andy Shevchenko
0 siblings, 1 reply; 30+ messages in thread
From: Jisheng Zhang @ 2025-11-19 12:59 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek, linux-gpio, linux-arm-kernel, linux-kernel,
linux-omap
On Wed, Nov 19, 2025 at 08:42:05PM +0800, Jisheng Zhang wrote:
> On Tue, Nov 18, 2025 at 12:15:35PM +0200, Andy Shevchenko wrote:
> > On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang <jszhang@kernel.org> wrote:
> > >
> > > Use the modern PM macros for the suspend and resume functions to be
> > > automatically dropped by the compiler when CONFIG_PM or
> > > CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
> > >
> > > This has the advantage of always compiling these functions in,
> > > independently of any Kconfig option. Thanks to that, bugs and other
> > > regressions are subsequently easier to catch.
> > >
> > > The dwapb_context structure is always embedded into struct
> > > dwapb_gpio_port to simplify code. Sure this brings a tiny 36 bytes
> > > data overhead for !CONFIG_PM_SLEP. After greping the arm/arm64/riscv
> >
> > SLEEP
> > grepping
> >
> > > dts dir, the max port number is 6, the berlin2q soc families, so this
> > > means current we have wasted 216 bytes memory which is trivial
> >
> > currently
> >
> > > compared to the system memory.
> >
> > I still think the embedding is not related to this change and should
> > be justified in a separate patch. W/o that part the rest looks fine.
>
> I got your mind now: it looks like you prefer a seperate patch for the
> embedding. Let me explain why I have the embedding within this patch:
> the pm_ptr() or pm_sleep_ptr() just optimizes out the PM functions, but the
> PM funtions are still compiled, so w/o the embedding, it's impossible
> to clean up the code with the modern PM macros.
For dwapb, I can still acchieve the clean up w/ only embedding the
pointer. But I'm not sure whether embedding the struture deserve a seperate
patch.
BTW: as Michael mentioned during v1 review, the driver allocates the
struct with kzalloc and stores a pointer to it, so considering the
pointer itself and the kmalloc overhead/alignment etc, current gpio-dwapb
have an overhead in the same order of magnitude when PM=y
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 00/15] gpio: Use modern PM macros
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
` (14 preceding siblings ...)
2025-11-18 0:32 ` [PATCH v2 15/15] gpio: zynq: " Jisheng Zhang
@ 2025-11-19 13:40 ` Linus Walleij
15 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2025-11-19 13:40 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Bartosz Golaszewski, Hoan Tran, Andy Shevchenko, Daniel Palmer,
Romain Perier, Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Robert Jarzmik, Kunihiko Hayashi, Masami Hiramatsu,
Shubhrajyoti Datta, Srinivas Neeli, Michal Simek, linux-gpio,
linux-arm-kernel, linux-kernel, linux-omap
On Tue, Nov 18, 2025 at 1:50 AM Jisheng Zhang <jszhang@kernel.org> wrote:
> Use the modern PM macros for the suspend and resume functions to be
> automatically dropped by the compiler when CONFIG_PM or
> CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards or
> __maybe_unused.
>
> This has the advantage of always compiling these functions in,
> independently of any Kconfig option. Thanks to that, bugs and other
> regressions are subsequently easier to catch.
>
> Almost all drivers are converted, only gpio-tegra and gpio-mlxbf are
> left as is, because the memory for saving HW context is not trivial,
> if we convert them, then the two drivers' users may complain for
> !CONFIG_PM && !CONFIG_PM_SLEEP case. So I didn't touch them.
>
> patch to gpio-dwapb.c is tested on real HW, others are compile-tested only.
The series:
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-19 12:47 ` Jisheng Zhang
@ 2025-11-19 13:58 ` Andy Shevchenko
0 siblings, 0 replies; 30+ messages in thread
From: Andy Shevchenko @ 2025-11-19 13:58 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Robert Jarzmik, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, Linus Walleij, Bartosz Golaszewski,
Hoan Tran, Andy Shevchenko, Daniel Palmer, Romain Perier,
Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Kunihiko Hayashi, Masami Hiramatsu, Shubhrajyoti Datta,
Srinivas Neeli, Michal Simek, linux-gpio, linux-arm-kernel,
linux-kernel, linux-omap
On Wed, Nov 19, 2025 at 3:05 PM Jisheng Zhang <jszhang@kernel.org> wrote:
> On Wed, Nov 19, 2025 at 09:56:12AM +0200, Andy Shevchenko wrote:
...
> I have explained the reason of embedding within the cleanup/modernize
> patch. Could you plz check?
I already proposed a compromise. I like the new PM macros and less
ifdeffery in the code, but let's decouple that one from the
refactoring of the data types. You may send them separately with the
cover letter describing the reasoning.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 01/15] gpio: dwapb: Use modern PM macros
2025-11-19 12:59 ` Jisheng Zhang
@ 2025-11-19 14:05 ` Andy Shevchenko
0 siblings, 0 replies; 30+ messages in thread
From: Andy Shevchenko @ 2025-11-19 14:05 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
Linus Walleij, Bartosz Golaszewski, Hoan Tran, Andy Shevchenko,
Daniel Palmer, Romain Perier, Grygorii Strashko,
Santosh Shilimkar, Kevin Hilman, Robert Jarzmik, Kunihiko Hayashi,
Masami Hiramatsu, Shubhrajyoti Datta, Srinivas Neeli,
Michal Simek, linux-gpio, linux-arm-kernel, linux-kernel,
linux-omap
On Wed, Nov 19, 2025 at 3:17 PM Jisheng Zhang <jszhang@kernel.org> wrote:
> On Wed, Nov 19, 2025 at 08:42:05PM +0800, Jisheng Zhang wrote:
> > On Tue, Nov 18, 2025 at 12:15:35PM +0200, Andy Shevchenko wrote:
> > > On Tue, Nov 18, 2025 at 2:50 AM Jisheng Zhang <jszhang@kernel.org> wrote:
> > > >
> > > > Use the modern PM macros for the suspend and resume functions to be
> > > > automatically dropped by the compiler when CONFIG_PM or
> > > > CONFIG_PM_SLEEP are disabled, without having to use #ifdef guards.
> > > >
> > > > This has the advantage of always compiling these functions in,
> > > > independently of any Kconfig option. Thanks to that, bugs and other
> > > > regressions are subsequently easier to catch.
> > > >
> > > > The dwapb_context structure is always embedded into struct
> > > > dwapb_gpio_port to simplify code. Sure this brings a tiny 36 bytes
> > > > data overhead for !CONFIG_PM_SLEP. After greping the arm/arm64/riscv
> > >
> > > SLEEP
> > > grepping
> > >
> > > > dts dir, the max port number is 6, the berlin2q soc families, so this
> > > > means current we have wasted 216 bytes memory which is trivial
> > >
> > > currently
> > >
> > > > compared to the system memory.
> > >
> > > I still think the embedding is not related to this change and should
> > > be justified in a separate patch. W/o that part the rest looks fine.
> >
> > I got your mind now: it looks like you prefer a seperate patch for the
> > embedding. Let me explain why I have the embedding within this patch:
> > the pm_ptr() or pm_sleep_ptr() just optimizes out the PM functions, but the
> > PM funtions are still compiled, so w/o the embedding, it's impossible
> > to clean up the code with the modern PM macros.
It's possible, but it will require some other refactoring most likely.
...
> For dwapb, I can still acchieve the clean up w/ only embedding the
> pointer. But I'm not sure whether embedding the struture deserve a seperate
> patch.
> BTW: as Michael mentioned during v1 review, the driver allocates the
> struct with kzalloc and stores a pointer to it, so considering the
> pointer itself and the kmalloc overhead/alignment etc, current gpio-dwapb
> have an overhead in the same order of magnitude when PM=y
This is a good point. Was it mentioned in the commit message?
...
Okay, I am not going to tag this patch, I leave it for Bart to decide,
but I don't like the idea of blowing the run-time memory footprint
just because we may need it in CONFIG_PM=y case.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-19 12:22 ` Jisheng Zhang
@ 2025-11-20 20:48 ` Robert Jarzmik
2025-11-21 9:20 ` Andy Shevchenko
0 siblings, 1 reply; 30+ messages in thread
From: Robert Jarzmik @ 2025-11-20 20:48 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Andy Shevchenko, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, Linus Walleij, Bartosz Golaszewski,
Hoan Tran, Andy Shevchenko, Daniel Palmer, Romain Perier,
Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Kunihiko Hayashi, Masami Hiramatsu, Shubhrajyoti Datta,
Srinivas Neeli, Michal Simek, linux-gpio, linux-arm-kernel,
linux-kernel, linux-omap
Jisheng Zhang <jszhang@kernel.org> writes:
> On Tue, Nov 18, 2025 at 11:03:41PM +0100, Robert Jarzmik wrote:
>
> hmm, each controller adds 16bytes, then even on 100 controller
> platforms
> 1600bytes. 1600 Bytes/64MB ~= 0.238%. it's trival. And is there
> such platform?
Yes, actually most of them have around 64MB, at least the pxa25x
and pxa27x.
The pxa3xx might have more (thing 128MB, maybe 256MB).
There are very old platforms, we're in 2003/2004 there ...
> From another side, recently UP support is removed from the core
> sched,
> that removing adds more .text and .data overhead, so if the
> users really
> care about this kind of 16bytes, it means he(she) can't afford
> even the
> 16Bytes overhead, then I bet he(she) the always SMP in core
> sched, so
> why not stick with the old kernel? What do you think?
I think I would go with Andy's proposal, decouple the changes :
- keep your changes in the PM callbaks
- remove your change (put back the ifdef) in the data structure
Cheers.
--
Robert
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH v2 05/15] gpio: pxa: Use modern PM macros
2025-11-20 20:48 ` Robert Jarzmik
@ 2025-11-21 9:20 ` Andy Shevchenko
0 siblings, 0 replies; 30+ messages in thread
From: Andy Shevchenko @ 2025-11-21 9:20 UTC (permalink / raw)
To: Robert Jarzmik
Cc: Jisheng Zhang, Andy Shevchenko, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, Linus Walleij, Bartosz Golaszewski,
Hoan Tran, Andy Shevchenko, Daniel Palmer, Romain Perier,
Grygorii Strashko, Santosh Shilimkar, Kevin Hilman,
Kunihiko Hayashi, Masami Hiramatsu, Shubhrajyoti Datta,
Srinivas Neeli, Michal Simek, linux-gpio, linux-arm-kernel,
linux-kernel, linux-omap
On Thu, Nov 20, 2025 at 09:48:30PM +0100, Robert Jarzmik wrote:
> Jisheng Zhang <jszhang@kernel.org> writes:
> > On Tue, Nov 18, 2025 at 11:03:41PM +0100, Robert Jarzmik wrote:
> >
> > hmm, each controller adds 16bytes, then even on 100 controller platforms
> > 1600bytes. 1600 Bytes/64MB ~= 0.238%. it's trival. And is there such
> > platform?
> Yes, actually most of them have around 64MB, at least the pxa25x and pxa27x.
> The pxa3xx might have more (thing 128MB, maybe 256MB).
> There are very old platforms, we're in 2003/2004 there ...
>
> > From another side, recently UP support is removed from the core sched,
> > that removing adds more .text and .data overhead, so if the users really
> > care about this kind of 16bytes, it means he(she) can't afford even the
> > 16Bytes overhead, then I bet he(she) the always SMP in core sched, so
> > why not stick with the old kernel? What do you think?
> I think I would go with Andy's proposal, decouple the changes :
> - keep your changes in the PM callbaks
> - remove your change (put back the ifdef) in the data structure
It can't be done like this, unfortunately.
Either we need to waste a pointer and kmalloc() overheads at runtime, or keep
these bytes for !PM cases.
Alternatively we can drop this change and simply add a comment explaining
the memory requirements and why we don't want to always waste those bytes.
Ideally would be good to have some kind of struct_group() macro that is
dependent on IS_ENABLED() case. It may help in many cases like this then.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2025-11-21 9:20 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-18 0:32 [PATCH v2 00/15] gpio: Use modern PM macros Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 01/15] gpio: dwapb: " Jisheng Zhang
2025-11-18 10:15 ` Andy Shevchenko
2025-11-19 12:42 ` Jisheng Zhang
2025-11-19 12:59 ` Jisheng Zhang
2025-11-19 14:05 ` Andy Shevchenko
2025-11-18 0:32 ` [PATCH v2 02/15] gpio: brcmstb: " Jisheng Zhang
2025-11-18 18:35 ` Florian Fainelli
2025-11-18 0:32 ` [PATCH v2 03/15] gpio: htc-egpio: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 04/15] gpio: pl061: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 05/15] gpio: pxa: " Jisheng Zhang
2025-11-18 12:06 ` Andy Shevchenko
2025-11-18 22:03 ` Robert Jarzmik
2025-11-19 7:56 ` Andy Shevchenko
2025-11-19 12:47 ` Jisheng Zhang
2025-11-19 13:58 ` Andy Shevchenko
2025-11-19 12:22 ` Jisheng Zhang
2025-11-20 20:48 ` Robert Jarzmik
2025-11-21 9:20 ` Andy Shevchenko
2025-11-18 0:32 ` [PATCH v2 06/15] gpio: ml-ioh: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 07/15] gpio: mlxbf2: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 08/15] gpio: msc313: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 09/15] gpio: omap: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 10/15] gpio: pch: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 11/15] gpio: tqmx86: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 12/15] gpio: uniphier: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 13/15] gpio: xgene: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 14/15] gpio: xilinx: " Jisheng Zhang
2025-11-18 0:32 ` [PATCH v2 15/15] gpio: zynq: " Jisheng Zhang
2025-11-19 13:40 ` [PATCH v2 00/15] gpio: " Linus Walleij
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).