* [PATCH PULL] pinctrl: samsung: Use scope based of_node_put() cleanups
@ 2024-07-08 10:25 Krzysztof Kozlowski
2024-08-05 7:12 ` Linus Walleij
0 siblings, 1 reply; 3+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-08 10:25 UTC (permalink / raw)
To: Linus Walleij
Cc: Peng Fan, linux-arm-kernel, linux-samsung-soc, linux-kernel,
linux-gpio, Krzysztof Kozlowski
From: Peng Fan <peng.fan@nxp.com>
Use scope based of_node_put() cleanup to simplify code.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/r/20240504-pinctrl-cleanup-v2-20-26c5f2dc1181@nxp.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Hi Linus,
I got only this one in the queue, so sending directly.
Best regards,
Krzysztof
drivers/pinctrl/samsung/pinctrl-exynos.c | 16 ++++------------
drivers/pinctrl/samsung/pinctrl-samsung.c | 19 +++++--------------
2 files changed, 9 insertions(+), 26 deletions(-)
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index ce5e6783b5b9..b79c211c0374 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -662,7 +662,7 @@ static void exynos_irq_demux_eint16_31(struct irq_desc *desc)
__init int exynos_eint_wkup_init(struct samsung_pinctrl_drv_data *d)
{
struct device *dev = d->dev;
- struct device_node *wkup_np = NULL;
+ struct device_node *wkup_np __free(device_node) = NULL;
struct device_node *np;
struct samsung_pin_bank *bank;
struct exynos_weint_data *weint_data;
@@ -692,17 +692,14 @@ __init int exynos_eint_wkup_init(struct samsung_pinctrl_drv_data *d)
bank->irq_chip = devm_kmemdup(dev, irq_chip, sizeof(*irq_chip),
GFP_KERNEL);
- if (!bank->irq_chip) {
- of_node_put(wkup_np);
+ if (!bank->irq_chip)
return -ENOMEM;
- }
bank->irq_chip->chip.name = bank->name;
bank->irq_domain = irq_domain_create_linear(bank->fwnode,
bank->nr_pins, &exynos_eint_irqd_ops, bank);
if (!bank->irq_domain) {
dev_err(dev, "wkup irq domain add failed\n");
- of_node_put(wkup_np);
return -ENXIO;
}
@@ -715,10 +712,8 @@ __init int exynos_eint_wkup_init(struct samsung_pinctrl_drv_data *d)
weint_data = devm_kcalloc(dev,
bank->nr_pins, sizeof(*weint_data),
GFP_KERNEL);
- if (!weint_data) {
- of_node_put(wkup_np);
+ if (!weint_data)
return -ENOMEM;
- }
for (idx = 0; idx < bank->nr_pins; ++idx) {
irq = irq_of_parse_and_map(to_of_node(bank->fwnode), idx);
@@ -735,13 +730,10 @@ __init int exynos_eint_wkup_init(struct samsung_pinctrl_drv_data *d)
}
}
- if (!muxed_banks) {
- of_node_put(wkup_np);
+ if (!muxed_banks)
return 0;
- }
irq = irq_of_parse_and_map(wkup_np, 0);
- of_node_put(wkup_np);
if (!irq) {
dev_err(dev, "irq number for muxed EINTs not found\n");
return 0;
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
index 623df65a5d6f..a7deae4afdcc 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.c
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
@@ -251,7 +251,6 @@ static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev,
{
struct samsung_pinctrl_drv_data *drvdata;
unsigned reserved_maps;
- struct device_node *np;
int ret;
drvdata = pinctrl_dev_get_drvdata(pctldev);
@@ -266,12 +265,11 @@ static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev,
&reserved_maps,
num_maps);
- for_each_child_of_node(np_config, np) {
+ for_each_child_of_node_scoped(np_config, np) {
ret = samsung_dt_subnode_to_map(drvdata, pctldev->dev, np, map,
&reserved_maps, num_maps);
if (ret < 0) {
samsung_dt_free_map(pctldev, *map, *num_maps);
- of_node_put(np);
return ret;
}
}
@@ -849,16 +847,12 @@ static struct samsung_pmx_func *samsung_pinctrl_create_functions(
* and create pin groups and pin function lists.
*/
func_cnt = 0;
- for_each_child_of_node(dev_np, cfg_np) {
- struct device_node *func_np;
-
+ for_each_child_of_node_scoped(dev_np, cfg_np) {
if (!of_get_child_count(cfg_np)) {
ret = samsung_pinctrl_create_function(dev, drvdata,
cfg_np, func);
- if (ret < 0) {
- of_node_put(cfg_np);
+ if (ret < 0)
return ERR_PTR(ret);
- }
if (ret > 0) {
++func;
++func_cnt;
@@ -866,14 +860,11 @@ static struct samsung_pmx_func *samsung_pinctrl_create_functions(
continue;
}
- for_each_child_of_node(cfg_np, func_np) {
+ for_each_child_of_node_scoped(cfg_np, func_np) {
ret = samsung_pinctrl_create_function(dev, drvdata,
func_np, func);
- if (ret < 0) {
- of_node_put(func_np);
- of_node_put(cfg_np);
+ if (ret < 0)
return ERR_PTR(ret);
- }
if (ret > 0) {
++func;
++func_cnt;
--
2.43.0
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH PULL] pinctrl: samsung: Use scope based of_node_put() cleanups
2024-07-08 10:25 [PATCH PULL] pinctrl: samsung: Use scope based of_node_put() cleanups Krzysztof Kozlowski
@ 2024-08-05 7:12 ` Linus Walleij
2024-08-05 7:31 ` Krzysztof Kozlowski
0 siblings, 1 reply; 3+ messages in thread
From: Linus Walleij @ 2024-08-05 7:12 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Peng Fan, linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-gpio
On Mon, Jul 8, 2024 at 12:25 PM Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Use scope based of_node_put() cleanup to simplify code.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> Link: https://lore.kernel.org/r/20240504-pinctrl-cleanup-v2-20-26c5f2dc1181@nxp.com
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
>
> Hi Linus,
>
> I got only this one in the queue, so sending directly.
>
> Best regards,
> Krzysztof
I missed this last merge window :(
Can you queue it for the next v6.12 cycle, or do you want me
to apply it still? Was thinking if there is more Exynos stuff coming
for v6.12 it's good to have it in your tree.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH PULL] pinctrl: samsung: Use scope based of_node_put() cleanups
2024-08-05 7:12 ` Linus Walleij
@ 2024-08-05 7:31 ` Krzysztof Kozlowski
0 siblings, 0 replies; 3+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-05 7:31 UTC (permalink / raw)
To: Linus Walleij
Cc: Peng Fan, linux-arm-kernel, linux-samsung-soc, linux-kernel, linux-gpio
On 05/08/2024 09:12, Linus Walleij wrote:
> On Mon, Jul 8, 2024 at 12:25 PM Krzysztof Kozlowski
> <krzysztof.kozlowski@linaro.org> wrote:
>
>> From: Peng Fan <peng.fan@nxp.com>
>>
>> Use scope based of_node_put() cleanup to simplify code.
>>
>> Signed-off-by: Peng Fan <peng.fan@nxp.com>
>> Link: https://lore.kernel.org/r/20240504-pinctrl-cleanup-v2-20-26c5f2dc1181@nxp.com
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>> ---
>>
>> Hi Linus,
>>
>> I got only this one in the queue, so sending directly.
>>
>> Best regards,
>> Krzysztof
>
> I missed this last merge window :(
>
> Can you queue it for the next v6.12 cycle, or do you want me
Sure
> to apply it still? Was thinking if there is more Exynos stuff coming
> for v6.12 it's good to have it in your tree.
Yeah, I will have at least one more patch for a proper pull. I applied
it now for v6.12.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-08-05 7:31 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-08 10:25 [PATCH PULL] pinctrl: samsung: Use scope based of_node_put() cleanups Krzysztof Kozlowski
2024-08-05 7:12 ` Linus Walleij
2024-08-05 7:31 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®