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