drivers/base/devres.c | 21 ++++++++ drivers/pinctrl/freescale/pinctrl-imx.c | 42 ++++++---------- drivers/pinctrl/mediatek/pinctrl-airoha.c | 19 +++----- drivers/pinctrl/mediatek/pinctrl-moore.c | 10 ++-- drivers/pinctrl/mediatek/pinctrl-moore.h | 7 +-- drivers/pinctrl/mediatek/pinctrl-mt7622.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7623.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7629.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7981.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7986.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7988.c | 44 +++++++---------- drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h | 2 +- drivers/pinctrl/pinctrl-equilibrium.c | 2 +- drivers/pinctrl/pinctrl-ingenic.c | 49 +++++++++---------- drivers/pinctrl/pinctrl-keembay.c | 26 ++++++---- drivers/pinctrl/pinctrl-single.c | 4 +- drivers/pinctrl/pinmux.c | 61 ++++++++++++++++++++---- drivers/pinctrl/pinmux.h | 9 ++-- drivers/pinctrl/qcom/pinctrl-ipq5018.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq5332.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq5424.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq6018.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq8074.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq9574.c | 2 +- drivers/pinctrl/qcom/pinctrl-mdm9607.c | 2 +- drivers/pinctrl/qcom/pinctrl-mdm9615.c | 2 +- drivers/pinctrl/qcom/pinctrl-milos.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm.c | 45 ++++++----------- drivers/pinctrl/qcom/pinctrl-msm.h | 5 ++ drivers/pinctrl/qcom/pinctrl-msm8226.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8660.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8909.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8916.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8917.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8953.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8960.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8976.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8994.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8996.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8998.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8x74.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcm2290.c | 4 +- drivers/pinctrl/qcom/pinctrl-qcs404.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcs615.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcs8300.c | 4 +- drivers/pinctrl/qcom/pinctrl-qdu1000.c | 2 +- drivers/pinctrl/qcom/pinctrl-sa8775p.c | 4 +- drivers/pinctrl/qcom/pinctrl-sar2130p.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc7180.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc7280.c | 4 +- drivers/pinctrl/qcom/pinctrl-sc8180x.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc8280xp.c | 4 +- drivers/pinctrl/qcom/pinctrl-sdm660.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdm670.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdm845.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx55.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx65.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx75.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm4450.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6115.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6125.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6350.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6375.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm7150.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8150.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8250.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8350.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8450.c | 4 +- drivers/pinctrl/qcom/pinctrl-sm8550.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8650.c | 4 +- drivers/pinctrl/qcom/pinctrl-sm8750.c | 4 +- drivers/pinctrl/qcom/pinctrl-x1e80100.c | 2 +- drivers/pinctrl/renesas/pinctrl-rza1.c | 2 +- drivers/pinctrl/renesas/pinctrl-rza2.c | 2 +- drivers/pinctrl/renesas/pinctrl-rzg2l.c | 2 +- drivers/pinctrl/renesas/pinctrl-rzv2m.c | 2 +- include/linux/device/devres.h | 2 + include/linux/pinctrl/pinctrl.h | 14 ++++++ include/linux/pinctrl/pinmux.h | 2 + 79 files changed, 275 insertions(+), 227 deletions(-)
Problem: when pinctrl core binds pins to a consumer device and the pinmux ops of the underlying driver are marked as strict, the pin in question can no longer be requested as a GPIO using the GPIO descriptor API. It will result in the following error: [ 5.095688] sc8280xp-tlmm f100000.pinctrl: pin GPIO_25 already requested by regulator-edp-3p3; cannot claim for f100000.pinctrl:570 [ 5.107822] sc8280xp-tlmm f100000.pinctrl: error -EINVAL: pin-25 (f100000.pinctrl:570) This typically makes sense except when the pins are muxed to a function that actually says "GPIO". Of course, the function name is just a string so it has no meaning to the pinctrl subsystem. We have many Qualcomm SoCs (and I can imagine it's a common pattern in other platforms as well) where we mux a pin to "gpio" function using the `pinctrl-X` property in order to configure bias or drive-strength and then access it using the gpiod API. This makes it impossible to mark the pin controller module as "strict". This series proposes to introduce a concept of a sub-category of pinfunctions: GPIO functions where the above is not true and the pin muxed as a GPIO can still be accessed via the GPIO consumer API even for strict pinmuxers. To that end: we first clean up the drivers that use struct function_desc and make them use the smaller struct pinfunction instead - which is the correct structure for drivers to describe their pin functions with. We also rework pinmux core to not duplicate memory used to store the pinfunctions unless they're allocated dynamically. First: provide the kmemdup_const() helper which only duplicates memory if it's not in the .rodata section. Then rework all pinctrl drivers that instantiate objects of type struct function_desc as they should only be created by pinmux core. Next constify the return value of the accessor used to expose these structures to users and finally convert the pinfunction object within struct function_desc to a pointer and use kmemdup_const() to assign it. With this done proceed to add infrastructure for the GPIO pin function category and use it in Qualcomm drivers. At the very end: make the Qualcomm pinmuxer strict. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> --- Changes in v5: - Fix a potential NULL-pointer dereference in pinmux_can_be_used_for_gpio() - Use PINCTRL_PINFUNCTION() in pinctrl-airoha - Link to v4: https://lore.kernel.org/r/20250812-pinctrl-gpio-pinfuncs-v4-0-bb3906c55e64@linaro.org Changes in v4: - Update the GPIO pin function definitions to include the new qcom driver (milos) - Provide devm_kmemdup_const() instead of a non-managed kmemdup_const() as a way to avoid casting out the 'const' modifier when passing the const pointer to devm_add_action_or_reset() - Use devm_krealloc_array() where applicable instead of devm_krealloc() - Fix typos - Fix kerneldocs - Improve commit messages - Small tweaks as pointed out by Andy - Rebased on top of v6.17-rc1 - Link to v3: https://lore.kernel.org/r/20250724-pinctrl-gpio-pinfuncs-v3-0-af4db9302de4@linaro.org Changes in v3: - Add more patches in front: convert pinctrl drivers to stop defining their own struct function_desc objects and make pinmux core not duplicate .rodata memory in which struct pinfunction objects are stored. - Add a patch constifying pinmux_generic_get_function(). - Drop patches that were applied upstream. - Link to v2: https://lore.kernel.org/r/20250709-pinctrl-gpio-pinfuncs-v2-0-b6135149c0d9@linaro.org Changes in v2: - Extend the series with providing pinmux_generic_add_pinfunction(), using it in several drivers and converting pinctrl-msm to using generic pinmux helpers - Add a generic function_is_gpio() callback for pinmux_ops - Convert all qualcomm drivers to using the new GPIO pin category so that we can actually enable the strict flag - Link to v1: https://lore.kernel.org/r/20250702-pinctrl-gpio-pinfuncs-v1-0-ed2bd0f9468d@linaro.org --- Bartosz Golaszewski (15): devres: provide devm_kmemdup_const() pinctrl: ingenic: use struct pinfunction instead of struct function_desc pinctrl: airoha: replace struct function_desc with struct pinfunction pinctrl: mediatek: mt7988: use PINCTRL_PIN_FUNCTION() pinctrl: mediatek: moore: replace struct function_desc with struct pinfunction pinctrl: imx: don't access the pin function radix tree directly pinctrl: keembay: release allocated memory in detach path pinctrl: keembay: use a dedicated structure for the pinfunction description pinctrl: constify pinmux_generic_get_function() pinctrl: make struct pinfunction a pointer in struct function_desc pinctrl: qcom: use generic pin function helpers pinctrl: allow to mark pin functions as requestable GPIOs pinctrl: qcom: add infrastructure for marking pin functions as GPIOs pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions pinctrl: qcom: make the pinmuxing strict drivers/base/devres.c | 21 ++++++++ drivers/pinctrl/freescale/pinctrl-imx.c | 42 ++++++---------- drivers/pinctrl/mediatek/pinctrl-airoha.c | 19 +++----- drivers/pinctrl/mediatek/pinctrl-moore.c | 10 ++-- drivers/pinctrl/mediatek/pinctrl-moore.h | 7 +-- drivers/pinctrl/mediatek/pinctrl-mt7622.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7623.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7629.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7981.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7986.c | 2 +- drivers/pinctrl/mediatek/pinctrl-mt7988.c | 44 +++++++---------- drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h | 2 +- drivers/pinctrl/pinctrl-equilibrium.c | 2 +- drivers/pinctrl/pinctrl-ingenic.c | 49 +++++++++---------- drivers/pinctrl/pinctrl-keembay.c | 26 ++++++---- drivers/pinctrl/pinctrl-single.c | 4 +- drivers/pinctrl/pinmux.c | 61 ++++++++++++++++++++---- drivers/pinctrl/pinmux.h | 9 ++-- drivers/pinctrl/qcom/pinctrl-ipq5018.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq5332.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq5424.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq6018.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq8074.c | 2 +- drivers/pinctrl/qcom/pinctrl-ipq9574.c | 2 +- drivers/pinctrl/qcom/pinctrl-mdm9607.c | 2 +- drivers/pinctrl/qcom/pinctrl-mdm9615.c | 2 +- drivers/pinctrl/qcom/pinctrl-milos.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm.c | 45 ++++++----------- drivers/pinctrl/qcom/pinctrl-msm.h | 5 ++ drivers/pinctrl/qcom/pinctrl-msm8226.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8660.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8909.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8916.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8917.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8953.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8960.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8976.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8994.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8996.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8998.c | 2 +- drivers/pinctrl/qcom/pinctrl-msm8x74.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcm2290.c | 4 +- drivers/pinctrl/qcom/pinctrl-qcs404.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcs615.c | 2 +- drivers/pinctrl/qcom/pinctrl-qcs8300.c | 4 +- drivers/pinctrl/qcom/pinctrl-qdu1000.c | 2 +- drivers/pinctrl/qcom/pinctrl-sa8775p.c | 4 +- drivers/pinctrl/qcom/pinctrl-sar2130p.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc7180.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc7280.c | 4 +- drivers/pinctrl/qcom/pinctrl-sc8180x.c | 2 +- drivers/pinctrl/qcom/pinctrl-sc8280xp.c | 4 +- drivers/pinctrl/qcom/pinctrl-sdm660.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdm670.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdm845.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx55.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx65.c | 2 +- drivers/pinctrl/qcom/pinctrl-sdx75.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm4450.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6115.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6125.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6350.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm6375.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm7150.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8150.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8250.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8350.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8450.c | 4 +- drivers/pinctrl/qcom/pinctrl-sm8550.c | 2 +- drivers/pinctrl/qcom/pinctrl-sm8650.c | 4 +- drivers/pinctrl/qcom/pinctrl-sm8750.c | 4 +- drivers/pinctrl/qcom/pinctrl-x1e80100.c | 2 +- drivers/pinctrl/renesas/pinctrl-rza1.c | 2 +- drivers/pinctrl/renesas/pinctrl-rza2.c | 2 +- drivers/pinctrl/renesas/pinctrl-rzg2l.c | 2 +- drivers/pinctrl/renesas/pinctrl-rzv2m.c | 2 +- include/linux/device/devres.h | 2 + include/linux/pinctrl/pinctrl.h | 14 ++++++ include/linux/pinctrl/pinmux.h | 2 + 79 files changed, 275 insertions(+), 227 deletions(-) --- base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585 change-id: 20250701-pinctrl-gpio-pinfuncs-de82bd9aac43 Best regards, -- Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
On Fri, Aug 15, 2025 at 11:09 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > Problem: when pinctrl core binds pins to a consumer device and the > pinmux ops of the underlying driver are marked as strict, the pin in > question can no longer be requested as a GPIO using the GPIO descriptor > API. It will result in the following error: > > [ 5.095688] sc8280xp-tlmm f100000.pinctrl: pin GPIO_25 already requested by regulator-edp-3p3; cannot claim for f100000.pinctrl:570 > [ 5.107822] sc8280xp-tlmm f100000.pinctrl: error -EINVAL: pin-25 (f100000.pinctrl:570) > > This typically makes sense except when the pins are muxed to a function > that actually says "GPIO". Of course, the function name is just a string > so it has no meaning to the pinctrl subsystem. > > We have many Qualcomm SoCs (and I can imagine it's a common pattern in > other platforms as well) where we mux a pin to "gpio" function using the > `pinctrl-X` property in order to configure bias or drive-strength and > then access it using the gpiod API. This makes it impossible to mark the > pin controller module as "strict". > > This series proposes to introduce a concept of a sub-category of > pinfunctions: GPIO functions where the above is not true and the pin > muxed as a GPIO can still be accessed via the GPIO consumer API even for > strict pinmuxers. > > To that end: we first clean up the drivers that use struct function_desc > and make them use the smaller struct pinfunction instead - which is the > correct structure for drivers to describe their pin functions with. We > also rework pinmux core to not duplicate memory used to store the > pinfunctions unless they're allocated dynamically. > > First: provide the kmemdup_const() helper which only duplicates memory > if it's not in the .rodata section. Then rework all pinctrl drivers that > instantiate objects of type struct function_desc as they should only be > created by pinmux core. Next constify the return value of the accessor > used to expose these structures to users and finally convert the > pinfunction object within struct function_desc to a pointer and use > kmemdup_const() to assign it. With this done proceed to add > infrastructure for the GPIO pin function category and use it in Qualcomm > drivers. At the very end: make the Qualcomm pinmuxer strict. > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> (...) > Bartosz Golaszewski (15): > devres: provide devm_kmemdup_const() > pinctrl: ingenic: use struct pinfunction instead of struct function_desc > pinctrl: airoha: replace struct function_desc with struct pinfunction > pinctrl: mediatek: mt7988: use PINCTRL_PIN_FUNCTION() > pinctrl: mediatek: moore: replace struct function_desc with struct pinfunction > pinctrl: imx: don't access the pin function radix tree directly > pinctrl: keembay: release allocated memory in detach path > pinctrl: keembay: use a dedicated structure for the pinfunction description > pinctrl: constify pinmux_generic_get_function() > pinctrl: make struct pinfunction a pointer in struct function_desc > pinctrl: qcom: use generic pin function helpers > pinctrl: allow to mark pin functions as requestable GPIOs I applied these 12 patches as a starter so they can stabilize in linux-next. > pinctrl: qcom: add infrastructure for marking pin functions as GPIOs > pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions > pinctrl: qcom: make the pinmuxing strict Neil reports of regressions on qcom platforms so I assume it's something in the last three patches that's causing it and I hold these three off until you have time to look at it (and focus at just the final qcom pieces). Yours, Linus Walleij
On Tue, Aug 19, 2025 at 4:02 PM Linus Walleij <linus.walleij@linaro.org> wrote: > On Fri, Aug 15, 2025 at 11:09 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: ... > > devres: provide devm_kmemdup_const() > > pinctrl: ingenic: use struct pinfunction instead of struct function_desc > > pinctrl: airoha: replace struct function_desc with struct pinfunction > > pinctrl: mediatek: mt7988: use PINCTRL_PIN_FUNCTION() > > pinctrl: mediatek: moore: replace struct function_desc with struct pinfunction > > pinctrl: imx: don't access the pin function radix tree directly > > pinctrl: keembay: release allocated memory in detach path > > pinctrl: keembay: use a dedicated structure for the pinfunction description > > pinctrl: constify pinmux_generic_get_function() > > pinctrl: make struct pinfunction a pointer in struct function_desc > > pinctrl: qcom: use generic pin function helpers > > pinctrl: allow to mark pin functions as requestable GPIOs > > I applied these 12 patches as a starter so they can > stabilize in linux-next. Hmm... I'm still sure that we don't need to have a separate flags field, but since I am on vacation and will be able to look at this closer next week, I can't look closer to it. -- With Best Regards, Andy Shevchenko
On Tue, Aug 19, 2025 at 8:31 PM Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > On Tue, Aug 19, 2025 at 4:02 PM Linus Walleij <linus.walleij@linaro.org> wrote: > > On Fri, Aug 15, 2025 at 11:09 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > > > devres: provide devm_kmemdup_const() > > > pinctrl: ingenic: use struct pinfunction instead of struct function_desc > > > pinctrl: airoha: replace struct function_desc with struct pinfunction > > > pinctrl: mediatek: mt7988: use PINCTRL_PIN_FUNCTION() > > > pinctrl: mediatek: moore: replace struct function_desc with struct pinfunction > > > pinctrl: imx: don't access the pin function radix tree directly > > > pinctrl: keembay: release allocated memory in detach path > > > pinctrl: keembay: use a dedicated structure for the pinfunction description > > > pinctrl: constify pinmux_generic_get_function() > > > pinctrl: make struct pinfunction a pointer in struct function_desc > > > pinctrl: qcom: use generic pin function helpers > > > pinctrl: allow to mark pin functions as requestable GPIOs > > > > I applied these 12 patches as a starter so they can > > stabilize in linux-next. > > Hmm... I'm still sure that we don't need to have a separate flags > field, but since I am on vacation and will be able to look at this > closer next week, I can't look closer to it. The qualcomm 32bit platforms fail in next anyway so I dropped the patches for now. Both you and Bartosz are on vacation so let's let it rest for a week or two. Yours, Linus Walleij
On Wed, Aug 20, 2025 at 09:12:49AM +0200, Linus Walleij wrote: > The qualcomm 32bit platforms fail in next anyway so I dropped the patches > for now. FWIW the i.MX8MP also seems to have been broken by this: # bad: [5303936d609e09665deda94eaedf26a0e5c3a087] Add linux-next specific files for 20250820 # good: [3233c80d0aae77da9bf9a69c06c5bc1778e45fd0] Merge branch 'for-linux-next-fixes' of https://gitlab.freedesktop.org/drm/misc/kernel.git # good: [ec0be3cdf40b5302248f3fb27a911cc630e8b855] regulator: consumer.rst: document bulk operations # good: [27848c082ba0b22850fd9fb7b185c015423dcdc7] spi: s3c64xx: Remove the use of dev_err_probe() # good: [c1dd310f1d76b4b13f1854618087af2513140897] spi: SPISG: Use devm_kcalloc() in aml_spisg_clk_init() # good: [da9881d00153cc6d3917f6b74144b1d41b58338c] ASoC: qcom: audioreach: add support for SMECNS module # good: [cf65182247761f7993737b710afe8c781699356b] ASoC: codecs: wsa883x: Handle shared reset GPIO for WSA883x speakers # good: [2a55135201d5e24b80b7624880ff42eafd8e320c] ASoC: Intel: avs: Streamline register-component function names # good: [550bc517e59347b3b1af7d290eac4fb1411a3d4e] regulator: bd718x7: Use kcalloc() instead of kzalloc() # good: [0056b410355713556d8a10306f82e55b28d33ba8] spi: offload trigger: adi-util-sigma-delta: clean up imports # good: [daf855f76a1210ceed9541f71ac5dd9be02018a6] ASoC: es8323: enable DAPM power widgets for playback DAC # good: [90179609efa421b1ccc7d8eafbc078bafb25777c] spi: spl022: use min_t() to improve code # good: [258384d8ce365dddd6c5c15204de8ccd53a7ab0a] ASoC: es8323: enable DAPM power widgets for playback DAC and output # good: [6d068f1ae2a2f713d7f21a9a602e65b3d6b6fc6d] regulator: rt5133: Fix spelling mistake "regualtor" -> "regulator" # good: [a46e95c81e3a28926ab1904d9f754fef8318074d] ASoC: wl1273: Remove # good: [48124569bbc6bfda1df3e9ee17b19d559f4b1aa3] spi: remove unneeded 'fast_io' parameter in regmap_config # good: [37533933bfe92cd5a99ef4743f31dac62ccc8de0] regulator: remove unneeded 'fast_io' parameter in regmap_config # good: [0e62438e476494a1891a8822b9785bc6e73e9c3f] ASoC: Intel: sst: Remove redundant semicolons # good: [5c36b86d2bf68fbcad16169983ef7ee8c537db59] regmap: Remove superfluous check for !config in __regmap_init() # good: [714165e1c4b0d5b8c6d095fe07f65e6e7047aaeb] regulator: rt5133: Add RT5133 PMIC regulator Support # good: [9c45f95222beecd6a284fd1284d54dd7a772cf59] spi: spi-qpic-snand: handle 'use_ecc' parameter of qcom_spi_config_cw_read() # good: [bab4ab484a6ca170847da9bffe86f1fa90df4bbe] ASoC: dt-bindings: Convert brcm,bcm2835-i2s to DT schema # good: [b832b19318534bb4f1673b24d78037fee339c679] spi: loopback-test: Don't use %pK through printk # good: [8c02c8353460f8630313aef6810f34e134a3c1ee] ASoC: dt-bindings: realtek,alc5623: convert to DT schema # good: [6b7e2aa50bdaf88cd4c2a5e2059a7bf32d85a8b1] spi: spi-qpic-snand: remove 'clr*status' members of struct 'qpic_ecc' # good: [2291a2186305faaf8525d57849d8ba12ad63f5e7] MAINTAINERS: Add entry for FourSemi audio amplifiers # good: [a54ef14188519a0994d0264f701f5771815fa11e] regulator: dt-bindings: Clean-up active-semi,act8945a duplication # good: [595b7f155b926460a00776cc581e4dcd01220006] ASoC: Intel: avs: Conditional-path support # good: [cf25eb8eae91bcae9b2065d84b0c0ba0f6d9dd34] ASoC: soc-component: unpack snd_soc_component_init_bias_level() # good: [3059067fd3378a5454e7928c08d20bf3ef186760] ASoC: cs48l32: Use PTR_ERR_OR_ZERO() to simplify code # good: [a1d0b0ae65ae3f32597edfbb547f16c75601cd87] spi: spi-qpic-snand: avoid double assignment in qcom_spi_probe() # good: [2d86d2585ab929a143d1e6f8963da1499e33bf13] ASoC: pxa: add GPIOLIB_LEGACY dependency # good: [9a200cbdb54349909a42b45379e792e4b39dd223] rust: regulator: implement Send and Sync for Regulator<T> # good: [162e23657e5379f07c6404dbfbf4367cb438ea7d] regulator: pf0900: Add PMIC PF0900 support # good: [886f42ce96e7ce80545704e7168a9c6b60cd6c03] regmap: mmio: Add missing MODULE_DESCRIPTION() git bisect start '5303936d609e09665deda94eaedf26a0e5c3a087' '3233c80d0aae77da9bf9a69c06c5bc1778e45fd0' 'ec0be3cdf40b5302248f3fb27a911cc630e8b855' '27848c082ba0b22850fd9fb7b185c015423dcdc7' 'c1dd310f1d76b4b13f1854618087af2513140897' 'da9881d00153cc6d3917f6b74144b1d41b58338c' 'cf65182247761f7993737b710afe8c781699356b' '2a55135201d5e24b80b7624880ff42eafd8e320c' '550bc517e59347b3b1af7d290eac4fb1411a3d4e' '0056b410355713556d8a10306f82e55b28d33ba8' 'daf855f76a1210ceed9541f71ac5dd9be02018a6' '90179609efa421b1ccc7d8eafbc078bafb25777c' '258384d8ce365dddd6c5c15204de8ccd53a7ab0a' '6d068f1ae2a2f713d7f21a9a602e65b3d6b6fc6d' 'a46e95c81e3a28926ab1904d9f754fef8318074d' '48124569bbc6bfda1df3e9ee17b19d559f4b1aa3' '37533933bfe92cd5a99ef4743f31dac62ccc8de0' '0e62438e476494a1891a8822b9785bc6e73e9c3f' '5c36b86d2bf68fbcad16169983ef7ee8c537db59' '714165e1c4b0d5b8c6d095fe07f65e6e7047aaeb' '9c45f95222beecd6a284fd1284d54dd7a772cf59' 'bab4ab484a6ca170847da9bffe86f1fa90df4bbe' 'b832b19318534bb4f1673b24d78037fee339c679' '8c02c8353460f8630313aef6810f34e134a3c1ee' '6b7e2aa50bdaf88cd4c2a5e2059a7bf32d85a8b1' '2291a2186305faaf8525d57849d8ba12ad63f5e7' 'a54ef14188519a0994d0264f701f5771815fa11e' '595b7f155b926460a00776cc581e4dcd01220006' 'cf25eb8eae91bcae9b2065d84b0c0ba0f6d9dd34' '3059067fd3378a5454e7928c08d20bf3ef186760' 'a1d0b0ae65ae3f32597edfbb547f16c75601cd87' '2d86d2585ab929a143d1e6f8963da1499e33bf13' '9a200cbdb54349909a42b45379e792e4b39dd223' '162e23657e5379f07c6404dbfbf4367cb438ea7d' '886f42ce96e7ce80545704e7168a9c6b60cd6c03' # test job: [ec0be3cdf40b5302248f3fb27a911cc630e8b855] https://lava.sirena.org.uk/scheduler/job/1694307 # test job: [27848c082ba0b22850fd9fb7b185c015423dcdc7] https://lava.sirena.org.uk/scheduler/job/1693517 # test job: [c1dd310f1d76b4b13f1854618087af2513140897] https://lava.sirena.org.uk/scheduler/job/1693018 # test job: [da9881d00153cc6d3917f6b74144b1d41b58338c] https://lava.sirena.org.uk/scheduler/job/1693440 # test job: [cf65182247761f7993737b710afe8c781699356b] https://lava.sirena.org.uk/scheduler/job/1687555 # test job: [2a55135201d5e24b80b7624880ff42eafd8e320c] https://lava.sirena.org.uk/scheduler/job/1685791 # test job: [550bc517e59347b3b1af7d290eac4fb1411a3d4e] https://lava.sirena.org.uk/scheduler/job/1685919 # test job: [0056b410355713556d8a10306f82e55b28d33ba8] https://lava.sirena.org.uk/scheduler/job/1685951 # test job: [daf855f76a1210ceed9541f71ac5dd9be02018a6] https://lava.sirena.org.uk/scheduler/job/1685448 # test job: [90179609efa421b1ccc7d8eafbc078bafb25777c] https://lava.sirena.org.uk/scheduler/job/1686039 # test job: [258384d8ce365dddd6c5c15204de8ccd53a7ab0a] https://lava.sirena.org.uk/scheduler/job/1673401 # test job: [6d068f1ae2a2f713d7f21a9a602e65b3d6b6fc6d] https://lava.sirena.org.uk/scheduler/job/1673160 # test job: [a46e95c81e3a28926ab1904d9f754fef8318074d] https://lava.sirena.org.uk/scheduler/job/1673778 # test job: [48124569bbc6bfda1df3e9ee17b19d559f4b1aa3] https://lava.sirena.org.uk/scheduler/job/1670205 # test job: [37533933bfe92cd5a99ef4743f31dac62ccc8de0] https://lava.sirena.org.uk/scheduler/job/1668953 # test job: [0e62438e476494a1891a8822b9785bc6e73e9c3f] https://lava.sirena.org.uk/scheduler/job/1669557 # test job: [5c36b86d2bf68fbcad16169983ef7ee8c537db59] https://lava.sirena.org.uk/scheduler/job/1667973 # test job: [714165e1c4b0d5b8c6d095fe07f65e6e7047aaeb] https://lava.sirena.org.uk/scheduler/job/1667708 # test job: [9c45f95222beecd6a284fd1284d54dd7a772cf59] https://lava.sirena.org.uk/scheduler/job/1667594 # test job: [bab4ab484a6ca170847da9bffe86f1fa90df4bbe] https://lava.sirena.org.uk/scheduler/job/1664700 # test job: [b832b19318534bb4f1673b24d78037fee339c679] https://lava.sirena.org.uk/scheduler/job/1659191 # test job: [8c02c8353460f8630313aef6810f34e134a3c1ee] https://lava.sirena.org.uk/scheduler/job/1659680 # test job: [6b7e2aa50bdaf88cd4c2a5e2059a7bf32d85a8b1] https://lava.sirena.org.uk/scheduler/job/1656553 # test job: [2291a2186305faaf8525d57849d8ba12ad63f5e7] https://lava.sirena.org.uk/scheduler/job/1655728 # test job: [a54ef14188519a0994d0264f701f5771815fa11e] https://lava.sirena.org.uk/scheduler/job/1656000 # test job: [595b7f155b926460a00776cc581e4dcd01220006] https://lava.sirena.org.uk/scheduler/job/1653539 # test job: [cf25eb8eae91bcae9b2065d84b0c0ba0f6d9dd34] https://lava.sirena.org.uk/scheduler/job/1654787 # test job: [3059067fd3378a5454e7928c08d20bf3ef186760] https://lava.sirena.org.uk/scheduler/job/1654021 # test job: [a1d0b0ae65ae3f32597edfbb547f16c75601cd87] https://lava.sirena.org.uk/scheduler/job/1654843 # test job: [2d86d2585ab929a143d1e6f8963da1499e33bf13] https://lava.sirena.org.uk/scheduler/job/1654129 # test job: [9a200cbdb54349909a42b45379e792e4b39dd223] https://lava.sirena.org.uk/scheduler/job/1654752 # test job: [162e23657e5379f07c6404dbfbf4367cb438ea7d] https://lava.sirena.org.uk/scheduler/job/1652983 # test job: [886f42ce96e7ce80545704e7168a9c6b60cd6c03] https://lava.sirena.org.uk/scheduler/job/1654290 # test job: [5303936d609e09665deda94eaedf26a0e5c3a087] https://lava.sirena.org.uk/scheduler/job/1697747 # bad: [5303936d609e09665deda94eaedf26a0e5c3a087] Add linux-next specific files for 20250820 git bisect bad 5303936d609e09665deda94eaedf26a0e5c3a087 # test job: [a04a7cfd17ecdf952dad025c42602e35f06cbe26] https://lava.sirena.org.uk/scheduler/job/1697920 # good: [a04a7cfd17ecdf952dad025c42602e35f06cbe26] Merge branch 'for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git git bisect good a04a7cfd17ecdf952dad025c42602e35f06cbe26 # test job: [9dee0ee90f388dcd58c3cde7a4ebf2f9e3754862] https://lava.sirena.org.uk/scheduler/job/1697987 # good: [9dee0ee90f388dcd58c3cde7a4ebf2f9e3754862] Merge branch 'drm-xe-next' of https://gitlab.freedesktop.org/drm/xe/kernel.git git bisect good 9dee0ee90f388dcd58c3cde7a4ebf2f9e3754862 # test job: [58e76aa12190454eb2edcb1cc651d77186e6a2be] https://lava.sirena.org.uk/scheduler/job/1698079 # good: [58e76aa12190454eb2edcb1cc651d77186e6a2be] Merge branch 'usb-next' of https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git git bisect good 58e76aa12190454eb2edcb1cc651d77186e6a2be # test job: [1135450b9d5cef61b2b9e6127f1b9436fcc2f043] https://lava.sirena.org.uk/scheduler/job/1698167 # good: [1135450b9d5cef61b2b9e6127f1b9436fcc2f043] Merge branch 'for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git git bisect good 1135450b9d5cef61b2b9e6127f1b9436fcc2f043 # test job: [e8fa3be5815c2241a72d1875e0e34bebe83c296a] https://lava.sirena.org.uk/scheduler/job/1698576 # bad: [e8fa3be5815c2241a72d1875e0e34bebe83c296a] Merge branch 'for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git git bisect bad e8fa3be5815c2241a72d1875e0e34bebe83c296a # test job: [c5998be4099bd35f2959e7a22072f33cc7791262] https://lava.sirena.org.uk/scheduler/job/1699088 # bad: [c5998be4099bd35f2959e7a22072f33cc7791262] Merge branch 'devel' into for-next git bisect bad c5998be4099bd35f2959e7a22072f33cc7791262 # test job: [15e3363af00a9e5b4f5c10b17940733a8613ef57] https://lava.sirena.org.uk/scheduler/job/1699178 # good: [15e3363af00a9e5b4f5c10b17940733a8613ef57] dt-bindings: pinctrl: Document Tegra186 pin controllers git bisect good 15e3363af00a9e5b4f5c10b17940733a8613ef57 # test job: [1e42d3e06bef6548215c45288d12974bfa295ba0] https://lava.sirena.org.uk/scheduler/job/1700639 # bad: [1e42d3e06bef6548215c45288d12974bfa295ba0] pinctrl: imx: don't access the pin function radix tree directly git bisect bad 1e42d3e06bef6548215c45288d12974bfa295ba0 # test job: [fe2e8f17a56fe14915cd6b709e9f56a16029f104] https://lava.sirena.org.uk/scheduler/job/1700756 # good: [fe2e8f17a56fe14915cd6b709e9f56a16029f104] pinctrl: sx150x: Make the driver tristate git bisect good fe2e8f17a56fe14915cd6b709e9f56a16029f104 # test job: [cb21815ebd17be84a93e49ce7e1641651424692b] https://lava.sirena.org.uk/scheduler/job/1700885 # good: [cb21815ebd17be84a93e49ce7e1641651424692b] pinctrl: airoha: replace struct function_desc with struct pinfunction git bisect good cb21815ebd17be84a93e49ce7e1641651424692b # test job: [3d2d080dc8bbe3ec23ee5b61aae81aaaf3009169] https://lava.sirena.org.uk/scheduler/job/1701027 # good: [3d2d080dc8bbe3ec23ee5b61aae81aaaf3009169] pinctrl: mediatek: moore: replace struct function_desc with struct pinfunction git bisect good 3d2d080dc8bbe3ec23ee5b61aae81aaaf3009169 # first bad commit: [1e42d3e06bef6548215c45288d12974bfa295ba0] pinctrl: imx: don't access the pin function radix tree directly
On Wed, Aug 20, 2025 at 8:41 PM Mark Brown <broonie@kernel.org> wrote: > > On Wed, Aug 20, 2025 at 09:12:49AM +0200, Linus Walleij wrote: > > > The qualcomm 32bit platforms fail in next anyway so I dropped the patches > > for now. > > FWIW the i.MX8MP also seems to have been broken by this: > I can't test it unfortunately - would you mind sharing some info on what's failing exactly? Bartosz
On Tue, Aug 26, 2025 at 08:19:37PM +0200, Bartosz Golaszewski wrote: > On Wed, Aug 20, 2025 at 8:41 PM Mark Brown <broonie@kernel.org> wrote: > > On Wed, Aug 20, 2025 at 09:12:49AM +0200, Linus Walleij wrote: > > > The qualcomm 32bit platforms fail in next anyway so I dropped the patches > > > for now. > > FWIW the i.MX8MP also seems to have been broken by this: > I can't test it unfortunately - would you mind sharing some info on > what's failing exactly? I've just got the log I linked above.
On Wed, Aug 27, 2025 at 12:22 PM Mark Brown <broonie@kernel.org> wrote: > > On Tue, Aug 26, 2025 at 08:19:37PM +0200, Bartosz Golaszewski wrote: > > On Wed, Aug 20, 2025 at 8:41 PM Mark Brown <broonie@kernel.org> wrote: > > > On Wed, Aug 20, 2025 at 09:12:49AM +0200, Linus Walleij wrote: > > > > > The qualcomm 32bit platforms fail in next anyway so I dropped the patches > > > > for now. > > > > FWIW the i.MX8MP also seems to have been broken by this: > > > I can't test it unfortunately - would you mind sharing some info on > > what's failing exactly? > > I've just got the log I linked above. So, I've been looking at this bisect email and clicking the links to LAVA jobs and I can't find anything. Does it fail to build? Fail at run-time? I'm not sure how to read this. Bart
On Wed, Aug 27, 2025 at 06:46:28PM +0200, Bartosz Golaszewski wrote: > On Wed, Aug 27, 2025 at 12:22 PM Mark Brown <broonie@kernel.org> wrote: > > I've just got the log I linked above. > So, I've been looking at this bisect email and clicking the links to > LAVA jobs and I can't find anything. Does it fail to build? Fail at > run-time? I'm not sure how to read this. It's failing prior to putting any output on the console. I was also seeing an issue on i.MX6 so it might be all i.MX boards, same issue: https://lava.sirena.org.uk/scheduler/job/1697667 so it's possibly all the i.MX platforms failing.
On Thu, Aug 28, 2025 at 10:51 AM Mark Brown <broonie@kernel.org> wrote: > > On Wed, Aug 27, 2025 at 06:46:28PM +0200, Bartosz Golaszewski wrote: > > On Wed, Aug 27, 2025 at 12:22 PM Mark Brown <broonie@kernel.org> wrote: > > > > I've just got the log I linked above. > > > So, I've been looking at this bisect email and clicking the links to > > LAVA jobs and I can't find anything. Does it fail to build? Fail at > > run-time? I'm not sure how to read this. > > It's failing prior to putting any output on the console. I was also > seeing an issue on i.MX6 so it might be all i.MX boards, same issue: > > https://lava.sirena.org.uk/scheduler/job/1697667 > > so it's possibly all the i.MX platforms failing. Not even with earlycon? That's weird. There are no smatch warnings on this patch and I can't see anything obviously wrong upon visual inspection. I fixed all other issues but this one I can't test. :( Bartosz
On Thu, Aug 28, 2025 at 03:36:43PM +0200, Bartosz Golaszewski wrote: > On Thu, Aug 28, 2025 at 10:51 AM Mark Brown <broonie@kernel.org> wrote: > > It's failing prior to putting any output on the console. I was also > > seeing an issue on i.MX6 so it might be all i.MX boards, same issue: > > https://lava.sirena.org.uk/scheduler/job/1697667 > > so it's possibly all the i.MX platforms failing. > Not even with earlycon? That's weird. There are no smatch warnings on > this patch and I can't see anything obviously wrong upon visual > inspection. I fixed all other issues but this one I can't test. :( This looks like it has something: https://lava.sirena.org.uk/scheduler/job/1747304
On Thu, Aug 28, 2025 at 3:58 PM Mark Brown <broonie@kernel.org> wrote: > > On Thu, Aug 28, 2025 at 03:36:43PM +0200, Bartosz Golaszewski wrote: > > On Thu, Aug 28, 2025 at 10:51 AM Mark Brown <broonie@kernel.org> wrote: > > > > It's failing prior to putting any output on the console. I was also > > > seeing an issue on i.MX6 so it might be all i.MX boards, same issue: > > > > https://lava.sirena.org.uk/scheduler/job/1697667 > > > > so it's possibly all the i.MX platforms failing. > > > Not even with earlycon? That's weird. There are no smatch warnings on > > this patch and I can't see anything obviously wrong upon visual > > inspection. I fixed all other issues but this one I can't test. :( > > This looks like it has something: > > https://lava.sirena.org.uk/scheduler/job/1747304 Ah, now I see it, I confused two radix trees used in pinctrl with this change. Cooking up a fix. Thanks! Bart
On Wed, Aug 20, 2025 at 10:13 AM Linus Walleij <linus.walleij@linaro.org> wrote: > On Tue, Aug 19, 2025 at 8:31 PM Andy Shevchenko > <andy.shevchenko@gmail.com> wrote: > > On Tue, Aug 19, 2025 at 4:02 PM Linus Walleij <linus.walleij@linaro.org> wrote: > > > On Fri, Aug 15, 2025 at 11:09 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: ... > > > > devres: provide devm_kmemdup_const() > > > > pinctrl: ingenic: use struct pinfunction instead of struct function_desc > > > > pinctrl: airoha: replace struct function_desc with struct pinfunction > > > > pinctrl: mediatek: mt7988: use PINCTRL_PIN_FUNCTION() > > > > pinctrl: mediatek: moore: replace struct function_desc with struct pinfunction > > > > pinctrl: imx: don't access the pin function radix tree directly > > > > pinctrl: keembay: release allocated memory in detach path > > > > pinctrl: keembay: use a dedicated structure for the pinfunction description > > > > pinctrl: constify pinmux_generic_get_function() At least the above I'm pretty much okay with. Can you still have them being applied? > > > > pinctrl: make struct pinfunction a pointer in struct function_desc > > > > pinctrl: qcom: use generic pin function helpers > > > > pinctrl: allow to mark pin functions as requestable GPIOs > > > > > > I applied these 12 patches as a starter so they can > > > stabilize in linux-next. > > > > Hmm... I'm still sure that we don't need to have a separate flags > > field, but since I am on vacation and will be able to look at this > > closer next week, I can't look closer to it. > > The qualcomm 32bit platforms fail in next anyway so I dropped the patches > for now. > > Both you and Bartosz are on vacation so let's let it rest for a week or two. I will be available fully next week. -- With Best Regards, Andy Shevchenko
© 2016 - 2025 Red Hat, Inc.