Thread (25 messages) 25 messages, 6 authors, 2025-07-19

Re: [PATCH v2 08/12] pinctrl: qcom: use generic pin function helpers

From: Konrad Dybcio <hidden>
Date: 2025-07-11 12:19:31
Also in: linux-arm-msm, linux-gpio, linux-mediatek, linux-mips, lkml

On 7/10/25 3:38 PM, Bartosz Golaszewski wrote:
On Thu, Jul 10, 2025 at 2:25 PM Konrad Dybcio
[off-list ref] wrote:
quoted
On 7/9/25 4:39 PM, Bartosz Golaszewski wrote:
quoted
From: Bartosz Golaszewski <redacted>

Use the existing infrastructure for storing and looking up pin functions
in pinctrl core. Remove hand-crafted callbacks.

Signed-off-by: Bartosz Golaszewski <redacted>
---
[...]
quoted
 int msm_pinctrl_probe(struct platform_device *pdev,
                    const struct msm_pinctrl_soc_data *soc_data)
 {
+     const struct pinfunction *func;
      struct msm_pinctrl *pctrl;
      struct resource *res;
      int ret;
@@ -1606,6 +1581,14 @@ int msm_pinctrl_probe(struct platform_device *pdev,
              return PTR_ERR(pctrl->pctrl);
      }

+     for (i = 0; i < soc_data->nfunctions; i++) {
+             func = &soc_data->functions[i];
+
+             ret = pinmux_generic_add_pinfunction(pctrl->pctrl, func, NULL);
+             if (ret < 0)
+                     return ret;
+     }
It's good in principle, but we're now going to house two copies of
the function data in memory... Can we trust __initconst nowadays?
Well, if I annotate the functions struct with __initconst, then it
does indeed end up in the .init.rodata section if that's your
question. Then the kernel seems to be freeing this in
./kernel/module/main.c so I sure hope we can trust it.

Do I understand correctly that you're implicitly asking to also
annotate all affected _functions structures across all tlmm drivers?

Alternatively: we can provide another interface:
pinmux_generic_add_const_pinfunction() which - instead of a deep-copy
- would simply store addresses of existing pinfunction structures in
the underlying radix tree.
This option seems like less of a churn

Konrad
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help