* [PATCH 0/2] pinctrl: add support amlogic a9
@ 2026-04-28 8:22 Xianwei Zhao via B4 Relay
2026-04-28 8:22 ` [PATCH 1/2] dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A9 Xianwei Zhao via B4 Relay
2026-04-28 8:22 ` [PATCH 2/2] pinctrl: meson: support amlogic A9 SoC Xianwei Zhao via B4 Relay
0 siblings, 2 replies; 4+ messages in thread
From: Xianwei Zhao via B4 Relay @ 2026-04-28 8:22 UTC (permalink / raw)
To: Linus Walleij, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl
Cc: linux-amlogic, linux-gpio, devicetree, linux-kernel,
linux-arm-kernel, Xianwei Zhao
Add pinctrl bindings and driver about for amlogic a9.
Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
---
Xianwei Zhao (2):
dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A9
pinctrl: meson: support amlogic A9 SoC
.../bindings/pinctrl/amlogic,pinctrl-a4.yaml | 1 +
drivers/pinctrl/meson/pinctrl-amlogic-a4.c | 61 ++++++++++++++++++++--
2 files changed, 57 insertions(+), 5 deletions(-)
---
base-commit: bd7fd288490c64835a74c05e631c102ce056d5e1
change-id: 20260129-a9-pinctrl-a9511aa224bf
Best regards,
--
Xianwei Zhao <xianwei.zhao@amlogic.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A9
2026-04-28 8:22 [PATCH 0/2] pinctrl: add support amlogic a9 Xianwei Zhao via B4 Relay
@ 2026-04-28 8:22 ` Xianwei Zhao via B4 Relay
2026-04-30 9:36 ` Krzysztof Kozlowski
2026-04-28 8:22 ` [PATCH 2/2] pinctrl: meson: support amlogic A9 SoC Xianwei Zhao via B4 Relay
1 sibling, 1 reply; 4+ messages in thread
From: Xianwei Zhao via B4 Relay @ 2026-04-28 8:22 UTC (permalink / raw)
To: Linus Walleij, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl
Cc: linux-amlogic, linux-gpio, devicetree, linux-kernel,
linux-arm-kernel, Xianwei Zhao
From: Xianwei Zhao <xianwei.zhao@amlogic.com>
Update dt-binding document for pinctrl of Amlogic A9.
Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
---
Documentation/devicetree/bindings/pinctrl/amlogic,pinctrl-a4.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/pinctrl/amlogic,pinctrl-a4.yaml b/Documentation/devicetree/bindings/pinctrl/amlogic,pinctrl-a4.yaml
index 6ba66c2033b4..b69db1b95345 100644
--- a/Documentation/devicetree/bindings/pinctrl/amlogic,pinctrl-a4.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/amlogic,pinctrl-a4.yaml
@@ -17,6 +17,7 @@ properties:
oneOf:
- enum:
- amlogic,pinctrl-a4
+ - amlogic,pinctrl-a9
- amlogic,pinctrl-s6
- amlogic,pinctrl-s7
- items:
--
2.52.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] pinctrl: meson: support amlogic A9 SoC
2026-04-28 8:22 [PATCH 0/2] pinctrl: add support amlogic a9 Xianwei Zhao via B4 Relay
2026-04-28 8:22 ` [PATCH 1/2] dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A9 Xianwei Zhao via B4 Relay
@ 2026-04-28 8:22 ` Xianwei Zhao via B4 Relay
1 sibling, 0 replies; 4+ messages in thread
From: Xianwei Zhao via B4 Relay @ 2026-04-28 8:22 UTC (permalink / raw)
To: Linus Walleij, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl
Cc: linux-amlogic, linux-gpio, devicetree, linux-kernel,
linux-arm-kernel, Xianwei Zhao
From: Xianwei Zhao <xianwei.zhao@amlogic.com>
In Amlogic A9 SoC, subordinate bank reuse other master bank is
not from bit0, and subordinate bank reuse multi master banks.
This submission implements this situation.
Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
---
drivers/pinctrl/meson/pinctrl-amlogic-a4.c | 61 +++++++++++++++++++++++++++---
1 file changed, 56 insertions(+), 5 deletions(-)
diff --git a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
index e2293a872dcb..256d9787f004 100644
--- a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
+++ b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
@@ -55,14 +55,18 @@ struct aml_pio_control {
* partial bank(subordinate) pins mux config use other bank(main) mux registgers
* m_bank_id: the main bank which pin_id from 0, but register bit not from bit 0
* m_bit_offs: bit offset the main bank mux register
+ * s_bit_offs: start bit that subordinate bank use mux register
* sid: start pin_id of subordinate bank
* eid: end pin_id of subordinate bank
+ * next: subordinate bank reused multiple other bank groups.
*/
struct multi_mux {
unsigned int m_bank_id;
unsigned int m_bit_offs;
+ unsigned int s_bit_offs;
unsigned int sid;
unsigned int eid;
+ const struct multi_mux *next;
};
struct aml_pctl_data {
@@ -124,12 +128,51 @@ static const char *aml_bank_name[31] = {
"GPIOCC", "TEST_N", "ANALOG"
};
+static const struct multi_mux multi_mux_a9[] = {
+ {
+ .m_bank_id = AMLOGIC_GPIO_C,
+ .m_bit_offs = 4,
+ .s_bit_offs = 0,
+ .sid = (AMLOGIC_GPIO_D << 8) + 16,
+ .eid = (AMLOGIC_GPIO_D << 8) + 16,
+ .next = &multi_mux_a9[1],
+ }, {
+ .m_bank_id = AMLOGIC_GPIO_AO,
+ .m_bit_offs = 0,
+ .s_bit_offs = 52,
+ .sid = (AMLOGIC_GPIO_D << 8) + 17,
+ .eid = (AMLOGIC_GPIO_D << 8) + 17,
+ .next = NULL,
+ }, {
+ .m_bank_id = AMLOGIC_GPIO_A,
+ .m_bit_offs = 0,
+ .s_bit_offs = 80,
+ .sid = (AMLOGIC_GPIO_Y << 8) + 8,
+ .eid = (AMLOGIC_GPIO_Y << 8) + 9,
+ .next = NULL,
+ }, {
+ .m_bank_id = AMLOGIC_GPIO_CC,
+ .m_bit_offs = 24,
+ .s_bit_offs = 0,
+ .sid = (AMLOGIC_GPIO_X << 8) + 16,
+ .eid = (AMLOGIC_GPIO_X << 8) + 17,
+ .next = NULL,
+ },
+};
+
+static const struct aml_pctl_data a9_priv_data = {
+ .number = ARRAY_SIZE(multi_mux_a9),
+ .p_mux = multi_mux_a9,
+};
+
static const struct multi_mux multi_mux_s7[] = {
{
.m_bank_id = AMLOGIC_GPIO_CC,
.m_bit_offs = 24,
+ .s_bit_offs = 0,
.sid = (AMLOGIC_GPIO_X << 8) + 16,
.eid = (AMLOGIC_GPIO_X << 8) + 19,
+ .next = NULL,
},
};
@@ -142,13 +185,17 @@ static const struct multi_mux multi_mux_s6[] = {
{
.m_bank_id = AMLOGIC_GPIO_CC,
.m_bit_offs = 24,
+ .s_bit_offs = 0,
.sid = (AMLOGIC_GPIO_X << 8) + 16,
.eid = (AMLOGIC_GPIO_X << 8) + 19,
+ .next = NULL,
}, {
.m_bank_id = AMLOGIC_GPIO_F,
.m_bit_offs = 4,
+ .s_bit_offs = 0,
.sid = (AMLOGIC_GPIO_D << 8) + 6,
.eid = (AMLOGIC_GPIO_D << 8) + 6,
+ .next = NULL,
},
};
@@ -177,31 +224,34 @@ static int aml_pctl_set_function(struct aml_pinctrl *info,
struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
unsigned int shift;
int reg;
- int i;
+ int i, loop_count;
unsigned int offset = bank->mux_bit_offs;
const struct multi_mux *p_mux;
/* peculiar mux reg set */
- if (bank->p_mux) {
- p_mux = bank->p_mux;
+ loop_count = 10;
+ p_mux = bank->p_mux;
+ while (p_mux && loop_count) {
if (pin_id >= p_mux->sid && pin_id <= p_mux->eid) {
bank = NULL;
for (i = 0; i < info->nbanks; i++) {
if (info->banks[i].bank_id == p_mux->m_bank_id) {
bank = &info->banks[i];
- break;
+ break;
}
}
if (!bank || !bank->reg_mux)
return -EINVAL;
- shift = (pin_id - p_mux->sid) << 2;
+ shift = ((pin_id - p_mux->sid) << 2) + p_mux->s_bit_offs;
reg = (shift / 32) * 4;
offset = shift % 32;
return regmap_update_bits(bank->reg_mux, reg,
0xf << offset, (func & 0xf) << offset);
}
+ p_mux = p_mux->next;
+ loop_count--;
}
/* normal mux reg set */
@@ -1159,6 +1209,7 @@ static int aml_pctl_probe(struct platform_device *pdev)
static const struct of_device_id aml_pctl_of_match[] = {
{ .compatible = "amlogic,pinctrl-a4", },
+ { .compatible = "amlogic,pinctrl-a9", .data = &a9_priv_data, },
{ .compatible = "amlogic,pinctrl-s7", .data = &s7_priv_data, },
{ .compatible = "amlogic,pinctrl-s6", .data = &s6_priv_data, },
{ /* sentinel */ }
--
2.52.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A9
2026-04-28 8:22 ` [PATCH 1/2] dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A9 Xianwei Zhao via B4 Relay
@ 2026-04-30 9:36 ` Krzysztof Kozlowski
0 siblings, 0 replies; 4+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-30 9:36 UTC (permalink / raw)
To: Xianwei Zhao
Cc: Linus Walleij, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
linux-amlogic, linux-gpio, devicetree, linux-kernel,
linux-arm-kernel
On Tue, Apr 28, 2026 at 08:22:48AM +0000, Xianwei Zhao wrote:
> Update dt-binding document for pinctrl of Amlogic A9.
And why it is not compatible with a4 or a5? You have entire commit msg
for this.
>
> Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
> ---
> Documentation/devicetree/bindings/pinctrl/amlogic,pinctrl-a4.yaml | 1 +
> 1 file changed, 1 insertion(+)
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-30 9:36 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-28 8:22 [PATCH 0/2] pinctrl: add support amlogic a9 Xianwei Zhao via B4 Relay
2026-04-28 8:22 ` [PATCH 1/2] dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A9 Xianwei Zhao via B4 Relay
2026-04-30 9:36 ` Krzysztof Kozlowski
2026-04-28 8:22 ` [PATCH 2/2] pinctrl: meson: support amlogic A9 SoC Xianwei Zhao via B4 Relay
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox