* [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support
@ 2026-07-03 7:30 Ravi Hothi
2026-07-03 7:30 ` [PATCH v1 1/2] dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl Ravi Hothi
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Ravi Hothi @ 2026-07-03 7:30 UTC (permalink / raw)
To: Bjorn Andersson, Linus Walleij, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Luca Weiss
Cc: linux-arm-msm, linux-gpio, devicetree, linux-kernel,
mohammad.rafi.shaik, ajay.nandam
Eliza is a Qualcomm SoC that uses the same LPASS LPI pin mux
functions as Milos. The key difference is the slew rate register
layout — on Eliza the slew rate field lives in the same GPIO config
register rather than a separate dedicated register.
This series adds support for the Eliza LPASS LPI pin controller by
extending the existing Milos driver with a new variant data struct
that uses the correct slew offsets and sets LPI_FLAG_SLEW_RATE_SAME_REG.
The pin descriptors and function table are shared with Milos since
they are identical.
Patch 1 updates the binding to document the new compatible and the
single reg entry used by Eliza.
Patch 2 adds the driver support.
Ravi Hothi (2):
dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl
pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM
.../pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml | 22 ++++++++--
.../pinctrl/qcom/pinctrl-milos-lpass-lpi.c | 40 +++++++++++++++++++
2 files changed, 58 insertions(+), 4 deletions(-)
base-commit: 7de6ae9e12207ec146f2f3f1e58d1a99317e88bc
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v1 1/2] dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl 2026-07-03 7:30 [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support Ravi Hothi @ 2026-07-03 7:30 ` Ravi Hothi 2026-07-03 7:38 ` sashiko-bot 2026-07-03 7:30 ` [PATCH v1 2/2] pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM Ravi Hothi 2026-07-03 21:04 ` [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support Linus Walleij 2 siblings, 1 reply; 6+ messages in thread From: Ravi Hothi @ 2026-07-03 7:30 UTC (permalink / raw) To: Bjorn Andersson, Linus Walleij, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Luca Weiss Cc: linux-arm-msm, linux-gpio, devicetree, linux-kernel, mohammad.rafi.shaik, ajay.nandam Document compatible for Qualcomm Eliza SoC LPASS LPI pin controller. Eliza has the same pin mux functions as Milos but uses a different slew rate register layout where the slew rate field is in the same GPIO config register rather than a separate dedicated register. As a result, Eliza only has a single reg entry instead of two. Signed-off-by: Ravi Hothi <ravi.hothi@oss.qualcomm.com> --- .../pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml index 73e84f188591..5cb9addb975f 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml +++ b/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml @@ -15,12 +15,13 @@ description: properties: compatible: - const: qcom,milos-lpass-lpi-pinctrl + oneOf: + - const: qcom,milos-lpass-lpi-pinctrl + - const: qcom,eliza-lpass-lpi-pinctrl reg: - items: - - description: LPASS LPI TLMM Control and Status registers - - description: LPASS LPI MCC registers + minItems: 1 + maxItems: 2 clocks: items: @@ -74,6 +75,19 @@ $defs: allOf: - $ref: qcom,lpass-lpi-common.yaml# + - if: + properties: + compatible: + const: qcom,eliza-lpass-lpi-pinctrl + then: + properties: + reg: + maxItems: 1 + else: + properties: + reg: + minItems: 2 + required: - compatible - reg -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v1 1/2] dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl 2026-07-03 7:30 ` [PATCH v1 1/2] dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl Ravi Hothi @ 2026-07-03 7:38 ` sashiko-bot 0 siblings, 0 replies; 6+ messages in thread From: sashiko-bot @ 2026-07-03 7:38 UTC (permalink / raw) To: Ravi Hothi; +Cc: robh, conor+dt, devicetree Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] The patch unintentionally deletes the `items` array from the `reg` property, resulting in the loss of descriptions for the register regions. -- commit 6846a6f9be06779519b955a26fe5e15eef153d4f Author: Ravi Hothi <ravi.hothi@oss.qualcomm.com> dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl Document compatible for Qualcomm Eliza SoC LPASS LPI pin controller. Eliza only has a single reg entry instead of two, so the bindings are updated to reflect the different register layouts. > diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml > index 73e84f1885911..5cb9addb975fa 100644 > --- a/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml > +++ b/Documentation/devicetree/bindings/pinctrl/qcom,milos-lpass-lpi-pinctrl.yaml > @@ -15,12 +15,13 @@ description: > > properties: > compatible: > - const: qcom,milos-lpass-lpi-pinctrl > + oneOf: > + - const: qcom,milos-lpass-lpi-pinctrl > + - const: qcom,eliza-lpass-lpi-pinctrl > > reg: > - items: > - - description: LPASS LPI TLMM Control and Status registers > - - description: LPASS LPI MCC registers > + minItems: 1 > + maxItems: 2 [Severity: Low] Does this unintentionally remove the descriptions for the register regions? By deleting the items array under the reg property, the semantic descriptions that document the purpose of each register region are lost. Would it be better to keep the items list intact and add minItems: 1 alongside it? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260703073029.2588960-1-ravi.hothi@oss.qualcomm.com?part=1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 2/2] pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM 2026-07-03 7:30 [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support Ravi Hothi 2026-07-03 7:30 ` [PATCH v1 1/2] dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl Ravi Hothi @ 2026-07-03 7:30 ` Ravi Hothi 2026-07-03 7:41 ` sashiko-bot 2026-07-03 21:04 ` [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support Linus Walleij 2 siblings, 1 reply; 6+ messages in thread From: Ravi Hothi @ 2026-07-03 7:30 UTC (permalink / raw) To: Bjorn Andersson, Linus Walleij, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Luca Weiss Cc: linux-arm-msm, linux-gpio, devicetree, linux-kernel, mohammad.rafi.shaik, ajay.nandam Eliza SoC has the same LPASS LPI pin mux functions as Milos but the slew rate control is in the same GPIO config register rather than a separate register. Add a new variant data struct with updated slew offsets and LPI_FLAG_SLEW_RATE_SAME_REG flag, reusing the existing pin descriptors and function table from Milos. Signed-off-by: Ravi Hothi <ravi.hothi@oss.qualcomm.com> --- .../pinctrl/qcom/pinctrl-milos-lpass-lpi.c | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c b/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c index 72b8ffd97860..cb4934cd6f75 100644 --- a/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c +++ b/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c @@ -148,6 +148,33 @@ static const struct lpi_pingroup milos_groups[] = { LPI_PINGROUP(22, LPI_NO_SLEW, i2s3_data, dmic4_data, ext_mclk1_e, _), }; +static const struct lpi_pingroup eliza_groups[] = { + LPI_PINGROUP(0, 11, swr_tx_clk, i2s0_clk, _, _), + LPI_PINGROUP(1, 11, swr_tx_data, i2s0_ws, _, _), + LPI_PINGROUP(2, 11, swr_tx_data, i2s0_data, _, _), + LPI_PINGROUP(3, 11, swr_rx_clk, i2s0_data, _, _), + LPI_PINGROUP(4, 11, swr_rx_data, i2s0_data, _, _), + LPI_PINGROUP(5, 11, swr_rx_data, ext_mclk1_c, i2s0_data, _), + LPI_PINGROUP(6, LPI_NO_SLEW, dmic1_clk, i2s1_clk, _, _), + LPI_PINGROUP(7, LPI_NO_SLEW, dmic1_data, i2s1_ws, _, _), + LPI_PINGROUP(8, LPI_NO_SLEW, dmic2_clk, i2s1_data, _, _), + LPI_PINGROUP(9, LPI_NO_SLEW, dmic2_data, i2s1_data, ext_mclk1_b, _), + LPI_PINGROUP(10, 11, wsa_swr_clk, i2s2_clk, _, _), + LPI_PINGROUP(11, 11, wsa_swr_data, i2s2_ws, _, _), + LPI_PINGROUP(12, LPI_NO_SLEW, dmic3_clk, i2s2_data, _, _), + LPI_PINGROUP(13, LPI_NO_SLEW, dmic3_data, i2s2_data, ext_mclk1_a, _), + LPI_PINGROUP(14, 11, swr_tx_data, ext_mclk1_d, _, _), + /* gpio15 - gpio18 do not really exist */ + LPI_PINGROUP(15, 11, _, _, _, _), + LPI_PINGROUP(16, 11, _, _, _, _), + LPI_PINGROUP(17, LPI_NO_SLEW, _, _, _, _), + LPI_PINGROUP(18, LPI_NO_SLEW, _, _, _, _), + LPI_PINGROUP(19, LPI_NO_SLEW, i2s3_clk, slimbus_clk, qca_swr_clk, _), + LPI_PINGROUP(20, LPI_NO_SLEW, i2s3_ws, slimbus_data, qca_swr_data, _), + LPI_PINGROUP(21, LPI_NO_SLEW, i2s3_data, dmic4_clk, _, _), + LPI_PINGROUP(22, LPI_NO_SLEW, i2s3_data, dmic4_data, ext_mclk1_e, _), +}; + static const struct lpi_function milos_functions[] = { LPI_FUNCTION(gpio), LPI_FUNCTION(dmic1_clk), @@ -196,8 +223,21 @@ static const struct lpi_pinctrl_variant_data milos_lpi_data = { .nfunctions = ARRAY_SIZE(milos_functions), }; +static const struct lpi_pinctrl_variant_data eliza_lpi_data = { + .pins = milos_lpi_pins, + .npins = ARRAY_SIZE(milos_lpi_pins), + .groups = eliza_groups, + .ngroups = ARRAY_SIZE(eliza_groups), + .functions = milos_functions, + .nfunctions = ARRAY_SIZE(milos_functions), + .flags = LPI_FLAG_SLEW_RATE_SAME_REG, +}; + static const struct of_device_id lpi_pinctrl_of_match[] = { { + .compatible = "qcom,eliza-lpass-lpi-pinctrl", + .data = &eliza_lpi_data, + }, { .compatible = "qcom,milos-lpass-lpi-pinctrl", .data = &milos_lpi_data, }, -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v1 2/2] pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM 2026-07-03 7:30 ` [PATCH v1 2/2] pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM Ravi Hothi @ 2026-07-03 7:41 ` sashiko-bot 0 siblings, 0 replies; 6+ messages in thread From: sashiko-bot @ 2026-07-03 7:41 UTC (permalink / raw) To: Ravi Hothi; +Cc: robh, conor+dt, devicetree Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: Pre-existing issues: - [High] lpi_config_set() unconditionally overwrites pull-up, drive strength, and output-enable configurations with default values if they are not explicitly specified in the configs array. -- commit c207cbbbbf4fca2f1793d2b498400b3981b0254c Author: Ravi Hothi <ravi.hothi@oss.qualcomm.com> pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM Eliza SoC has the same LPASS LPI pin mux functions as Milos but the slew rate control is in the same GPIO config register rather than a separate register. Add a new variant data struct with updated slew offsets and LPI_FLAG_SLEW_RATE_SAME_REG flag, reusing the existing pin descriptors and function table from Milos. > diff --git a/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c b/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c > index 72b8ffd97860b..cb4934cd6f757 100644 > --- a/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c > +++ b/drivers/pinctrl/qcom/pinctrl-milos-lpass-lpi.c [ ... ] > @@ -196,8 +223,21 @@ static const struct lpi_pinctrl_variant_data milos_lpi_data = { > .nfunctions = ARRAY_SIZE(milos_functions), > }; > > +static const struct lpi_pinctrl_variant_data eliza_lpi_data = { > + .pins = milos_lpi_pins, > + .npins = ARRAY_SIZE(milos_lpi_pins), > + .groups = eliza_groups, > + .ngroups = ARRAY_SIZE(eliza_groups), > + .functions = milos_functions, > + .nfunctions = ARRAY_SIZE(milos_functions), > + .flags = LPI_FLAG_SLEW_RATE_SAME_REG, > +}; [Severity: High] This isn't a bug introduced by this patch, but while reviewing the new slew rate behavior, I noticed an issue in how lpi_config_set() handles the pin configurations in drivers/pinctrl/qcom/pinctrl-lpass-lpi.c. In drivers/pinctrl/qcom/pinctrl-lpass-lpi.c:lpi_config_set(), the local configuration variables are initialized to default values: unsigned int param, arg, pullup = LPI_GPIO_BIAS_DISABLE, strength = 2; bool value, output_enabled = false; Later in the same function, these defaults are unconditionally applied to the register value instead of preserving the current hardware state: lpi_gpio_read_reg(pctrl, group, LPI_GPIO_CFG_REG, &val); u32p_replace_bits(&val, pullup, LPI_GPIO_PULL_MASK); u32p_replace_bits(&val, LPI_GPIO_DS_TO_VAL(strength), LPI_GPIO_OUT_STRENGTH_MASK); u32p_replace_bits(&val, output_enabled, LPI_GPIO_OE_MASK); lpi_gpio_write_reg(pctrl, group, LPI_GPIO_CFG_REG, val); Does this code accidentally overwrite unrequested settings? For instance, if a driver updates a GPIO value or if a single configuration such as the slew rate for Eliza is applied, the current register state is read, but pull-up, drive strength, and output enable fields are unconditionally replaced with the initialized defaults. Could this lead to silent clobbering of existing configurations, resulting in floating pins or output being unintentionally disabled? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260703073029.2588960-1-ravi.hothi@oss.qualcomm.com?part=2 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support 2026-07-03 7:30 [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support Ravi Hothi 2026-07-03 7:30 ` [PATCH v1 1/2] dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl Ravi Hothi 2026-07-03 7:30 ` [PATCH v1 2/2] pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM Ravi Hothi @ 2026-07-03 21:04 ` Linus Walleij 2 siblings, 0 replies; 6+ messages in thread From: Linus Walleij @ 2026-07-03 21:04 UTC (permalink / raw) To: Ravi Hothi, Bartosz Golaszewski Cc: Bjorn Andersson, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Luca Weiss, linux-arm-msm, linux-gpio, devicetree, linux-kernel, mohammad.rafi.shaik, ajay.nandam Hi Ravi, we are in a bit of maintainer transition for Qcom stuff, Bartosz will apply and coordinate qcom pin control patches! Acked-by: Linus Walleij <linusw@kernel.org> Yours, Linus Walleij ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-07-03 21:04 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-03 7:30 [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support Ravi Hothi 2026-07-03 7:30 ` [PATCH v1 1/2] dt-bindings: pinctrl: qcom,milos-lpass-lpi-pinctrl: Add Eliza pinctrl Ravi Hothi 2026-07-03 7:38 ` sashiko-bot 2026-07-03 7:30 ` [PATCH v1 2/2] pinctrl: qcom: milos-lpass-lpi: Add Eliza LPASS LPI TLMM Ravi Hothi 2026-07-03 7:41 ` sashiko-bot 2026-07-03 21:04 ` [PATCH v1 0/2] pinctrl: qcom: Add Eliza LPASS LPI support Linus Walleij
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox