* [PATCH v2 1/4] pinctrl: bcm: Fix off-by-one and out-of-bounds access in fsel_get() [not found] <20261113053221.3131068-1-wangxiaolei01@kaihong.com> @ 2026-11-13 5:32 ` Xiaolei Wang 2026-11-13 12:52 ` Andrea della Porta 2026-11-13 5:32 ` [PATCH v2 2/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in bcm2835 Xiaolei Wang ` (2 subsequent siblings) 3 siblings, 1 reply; 6+ messages in thread From: Xiaolei Wang @ 2026-11-13 5:32 UTC (permalink / raw) To: linusw, florian.fainelli, rjui, sbranden, bcm-kernel-feedback-list, daniel, wangxiaolei01, iivanov, andrea.porta, phil Cc: linux-gpio, linux-rpi-kernel, linux-arm-kernel, linux-kernel, Jonathan Bell, stable The FSEL field is a 1-based function number: 0 means GPIO, 1..n_funcs map to funcs[0..n_funcs - 1], and n_funcs + 1 and above are rejected. brcmstb_pinctrl_fsel_get() indexes funcs[] with the raw value instead of subtracting one, so readbacks are shifted by one slot: value 8 indexes funcs[8], past the array end, while 0 is reported as funcs[0] instead of GPIO. The setter programs the mux correctly, so only the debugfs readback is affected. Map 0 and out-of-range values back to GPIO, warn on the latter, and index funcs[] with fsel - 1. Tested on Raspberry Pi 5 with KASAN: the "alt8" readback no longer splats, and field 0 reports GPIO. Fixes: 657cbf9b24ba ("pinctrl: bcm: Add STB family pin controller driver") Cc: Jonathan Bell <jonathan@raspberrypi.com> Cc: Phil Elwell <phil@raspberrypi.com> Cc: stable@vger.kernel.org Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Signed-off-by: Xiaolei Wang <wangxiaolei01@kaihong.com> --- drivers/pinctrl/bcm/pinctrl-brcmstb.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/bcm/pinctrl-brcmstb.c b/drivers/pinctrl/bcm/pinctrl-brcmstb.c index f46b27155c3c..2b942ca7196b 100644 --- a/drivers/pinctrl/bcm/pinctrl-brcmstb.c +++ b/drivers/pinctrl/bcm/pinctrl-brcmstb.c @@ -66,7 +66,16 @@ static unsigned int brcmstb_pinctrl_fsel_get(struct brcmstb_pinctrl *pc, val = readl(pc->base + BIT_TO_REG(bit)); fsel = (val >> BIT_TO_SHIFT(bit)) & pc->pin_funcs[pin].func_mask; - func = pc->pin_funcs[pin].funcs[fsel]; + + if (!fsel) + return pc->func_gpio; + + if (fsel > pc->pin_funcs[pin].n_funcs) { + dev_warn(pc->dev, "invalid fsel %d for pin %u\n", fsel, pin); + return pc->func_gpio; + } + + func = pc->pin_funcs[pin].funcs[fsel - 1]; if (func >= pc->func_count) func = fsel; -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/4] pinctrl: bcm: Fix off-by-one and out-of-bounds access in fsel_get() 2026-11-13 5:32 ` [PATCH v2 1/4] pinctrl: bcm: Fix off-by-one and out-of-bounds access in fsel_get() Xiaolei Wang @ 2026-11-13 12:52 ` Andrea della Porta 0 siblings, 0 replies; 6+ messages in thread From: Andrea della Porta @ 2026-11-13 12:52 UTC (permalink / raw) To: Xiaolei Wang Cc: linusw, florian.fainelli, rjui, sbranden, bcm-kernel-feedback-list, daniel, iivanov, andrea.porta, phil, linux-gpio, linux-rpi-kernel, linux-arm-kernel, linux-kernel, Jonathan Bell, stable Hi Wang, On 05:32 Fri 13 Nov , Xiaolei Wang wrote: > The FSEL field is a 1-based function number: 0 means GPIO, 1..n_funcs > map to funcs[0..n_funcs - 1], and n_funcs + 1 and above are rejected. > brcmstb_pinctrl_fsel_get() indexes funcs[] with the raw value instead > of subtracting one, so readbacks are shifted by one slot: value 8 > indexes funcs[8], past the array end, while 0 is reported as funcs[0] > instead of GPIO. The setter programs the mux correctly, so only the > debugfs readback is affected. > > Map 0 and out-of-range values back to GPIO, warn on the latter, and > index funcs[] with fsel - 1. Tested on Raspberry Pi 5 with KASAN: the > "alt8" readback no longer splats, and field 0 reports GPIO. > > Fixes: 657cbf9b24ba ("pinctrl: bcm: Add STB family pin controller driver") > Cc: Jonathan Bell <jonathan@raspberrypi.com> > Cc: Phil Elwell <phil@raspberrypi.com> > Cc: stable@vger.kernel.org > Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> > Signed-off-by: Xiaolei Wang <wangxiaolei01@kaihong.com> Reviewed-by: Andrea della Porta <andrea.porta@suse.com> Thanks! Andrea > --- > drivers/pinctrl/bcm/pinctrl-brcmstb.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/pinctrl/bcm/pinctrl-brcmstb.c b/drivers/pinctrl/bcm/pinctrl-brcmstb.c > index f46b27155c3c..2b942ca7196b 100644 > --- a/drivers/pinctrl/bcm/pinctrl-brcmstb.c > +++ b/drivers/pinctrl/bcm/pinctrl-brcmstb.c > @@ -66,7 +66,16 @@ static unsigned int brcmstb_pinctrl_fsel_get(struct brcmstb_pinctrl *pc, > > val = readl(pc->base + BIT_TO_REG(bit)); > fsel = (val >> BIT_TO_SHIFT(bit)) & pc->pin_funcs[pin].func_mask; > - func = pc->pin_funcs[pin].funcs[fsel]; > + > + if (!fsel) > + return pc->func_gpio; > + > + if (fsel > pc->pin_funcs[pin].n_funcs) { > + dev_warn(pc->dev, "invalid fsel %d for pin %u\n", fsel, pin); > + return pc->func_gpio; > + } > + > + func = pc->pin_funcs[pin].funcs[fsel - 1]; > > if (func >= pc->func_count) > func = fsel; > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in bcm2835 [not found] <20261113053221.3131068-1-wangxiaolei01@kaihong.com> 2026-11-13 5:32 ` [PATCH v2 1/4] pinctrl: bcm: Fix off-by-one and out-of-bounds access in fsel_get() Xiaolei Wang @ 2026-11-13 5:32 ` Xiaolei Wang 2026-11-13 5:32 ` [PATCH v2 3/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in brcmstb Xiaolei Wang 2026-11-13 5:32 ` [PATCH v2 4/4] pinctrl: bcm: Add missing SGPIO entries to the BCM2712 AON tables Xiaolei Wang 3 siblings, 0 replies; 6+ messages in thread From: Xiaolei Wang @ 2026-11-13 5:32 UTC (permalink / raw) To: linusw, florian.fainelli, rjui, sbranden, bcm-kernel-feedback-list, daniel, wangxiaolei01, iivanov, andrea.porta, phil Cc: linux-gpio, linux-rpi-kernel, linux-arm-kernel, linux-kernel, stable Replace the hand-written dt_free_map callback with the generic pinconf_generic_dt_free_map() helper, which wraps pinctrl_utils_free_map(). This drops the duplicated free loop and handles both CONFIGS_PIN and CONFIGS_GROUP map types. The error path in bcm2835_pctl_dt_node_to_map() uses the same helper. The driver already selects GENERIC_PINCONF, so no Kconfig change is needed. Fixes: 0de704955ee4 ("pinctrl: bcm2835: Add support for generic pinctrl binding") Cc: stable@vger.kernel.org Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Reviewed-by: Andrea della Porta <andrea.porta@suse.com> Signed-off-by: Xiaolei Wang <wangxiaolei01@kaihong.com> --- drivers/pinctrl/bcm/pinctrl-bcm2835.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c index 725e880ae086..69a92cd7bfe0 100644 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c @@ -760,18 +760,6 @@ static void bcm2835_pctl_pin_dbg_show(struct pinctrl_dev *pctldev, irq, irq_type_names[pc->irq_type[offset]]); } -static void bcm2835_pctl_dt_free_map(struct pinctrl_dev *pctldev, - struct pinctrl_map *maps, unsigned num_maps) -{ - int i; - - for (i = 0; i < num_maps; i++) - if (maps[i].type == PIN_MAP_TYPE_CONFIGS_PIN) - kfree(maps[i].data.configs.configs); - - kfree(maps); -} - static int bcm2835_pctl_dt_node_to_map_func(struct bcm2835_pinctrl *pc, struct device_node *np, u32 pin, u32 fnum, struct pinctrl_map **maps) @@ -916,7 +904,7 @@ static int bcm2835_pctl_dt_node_to_map(struct pinctrl_dev *pctldev, return 0; out: - bcm2835_pctl_dt_free_map(pctldev, maps, num_pins * maps_per_pin); + pinconf_generic_dt_free_map(pctldev, maps, num_pins * maps_per_pin); return err; } @@ -926,7 +914,7 @@ static const struct pinctrl_ops bcm2835_pctl_ops = { .get_group_pins = bcm2835_pctl_get_group_pins, .pin_dbg_show = bcm2835_pctl_pin_dbg_show, .dt_node_to_map = bcm2835_pctl_dt_node_to_map, - .dt_free_map = bcm2835_pctl_dt_free_map, + .dt_free_map = pinconf_generic_dt_free_map, }; static int bcm2835_pmx_free(struct pinctrl_dev *pctldev, -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in brcmstb [not found] <20261113053221.3131068-1-wangxiaolei01@kaihong.com> 2026-11-13 5:32 ` [PATCH v2 1/4] pinctrl: bcm: Fix off-by-one and out-of-bounds access in fsel_get() Xiaolei Wang 2026-11-13 5:32 ` [PATCH v2 2/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in bcm2835 Xiaolei Wang @ 2026-11-13 5:32 ` Xiaolei Wang 2026-11-13 5:32 ` [PATCH v2 4/4] pinctrl: bcm: Add missing SGPIO entries to the BCM2712 AON tables Xiaolei Wang 3 siblings, 0 replies; 6+ messages in thread From: Xiaolei Wang @ 2026-11-13 5:32 UTC (permalink / raw) To: linusw, florian.fainelli, rjui, sbranden, bcm-kernel-feedback-list, daniel, wangxiaolei01, iivanov, andrea.porta, phil Cc: linux-gpio, linux-rpi-kernel, linux-arm-kernel, linux-kernel, Jonathan Bell, stable Replace the hand-written dt_free_map callback with the generic pinconf_generic_dt_free_map() helper, which wraps pinctrl_utils_free_map(). This drops the duplicated free loop and pairs the callback with the pinconf_generic_dt_node_to_map_all() already used for dt_node_to_map. The driver already selects GENERIC_PINCONF, so no Kconfig change is needed. Fixes: 657cbf9b24ba ("pinctrl: bcm: Add STB family pin controller driver") Cc: Jonathan Bell <jonathan@raspberrypi.com> Cc: Phil Elwell <phil@raspberrypi.com> Cc: stable@vger.kernel.org Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Reviewed-by: Andrea della Porta <andrea.porta@suse.com> Signed-off-by: Xiaolei Wang <wangxiaolei01@kaihong.com> --- drivers/pinctrl/bcm/pinctrl-brcmstb.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/drivers/pinctrl/bcm/pinctrl-brcmstb.c b/drivers/pinctrl/bcm/pinctrl-brcmstb.c index 2b942ca7196b..e81c5b295a05 100644 --- a/drivers/pinctrl/bcm/pinctrl-brcmstb.c +++ b/drivers/pinctrl/bcm/pinctrl-brcmstb.c @@ -180,26 +180,13 @@ static void brcmstb_pctl_pin_dbg_show(struct pinctrl_dev *pctldev, seq_printf(s, "function %s", fname); } -static void brcmstb_pctl_dt_free_map(struct pinctrl_dev *pctldev, - struct pinctrl_map *maps, - unsigned int num_maps) -{ - int i; - - for (i = 0; i < num_maps; i++) - if (maps[i].type == PIN_MAP_TYPE_CONFIGS_PIN) - kfree(maps[i].data.configs.configs); - - kfree(maps); -} - static const struct pinctrl_ops brcmstb_pctl_ops = { .get_groups_count = brcmstb_pctl_get_groups_count, .get_group_name = brcmstb_pctl_get_group_name, .get_group_pins = brcmstb_pctl_get_group_pins, .pin_dbg_show = brcmstb_pctl_pin_dbg_show, .dt_node_to_map = pinconf_generic_dt_node_to_map_all, - .dt_free_map = brcmstb_pctl_dt_free_map, + .dt_free_map = pinconf_generic_dt_free_map, }; static int brcmstb_pmx_free(struct pinctrl_dev *pctldev, unsigned int offset) -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 4/4] pinctrl: bcm: Add missing SGPIO entries to the BCM2712 AON tables [not found] <20261113053221.3131068-1-wangxiaolei01@kaihong.com> ` (2 preceding siblings ...) 2026-11-13 5:32 ` [PATCH v2 3/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in brcmstb Xiaolei Wang @ 2026-11-13 5:32 ` Xiaolei Wang 2026-11-13 12:53 ` Andrea della Porta 3 siblings, 1 reply; 6+ messages in thread From: Xiaolei Wang @ 2026-11-13 5:32 UTC (permalink / raw) To: linusw, florian.fainelli, rjui, sbranden, bcm-kernel-feedback-list, daniel, wangxiaolei01, iivanov, andrea.porta, phil Cc: linux-gpio, linux-rpi-kernel, linux-arm-kernel, linux-kernel, Jonathan Bell, stable The BCM2712 AON controller describes six SGPIO pins as pin 32..37, but the AON function tables stop at the last normal GPIO: pin 16 for C0 and pin 14 for D0. Both are indexed by pin number, so dumping the pin list walks past the end of the table: A=/sys/kernel/debug/pinctrl/107d510700.pinctrl-aon-pinctrl-bcm2712 cat $A/pins pinctrl_pins_show() hands desc->pins[i].number to pin_dbg_show(), so the list jumps from the last GPIO pin to pin 32, where a valid mux bit makes brcmstb_pinctrl_fsel_get() evaluate pin_funcs[32].funcs[] outside the array. The set path walks the same table for any DT node that assigns a function to aon_sgpio0..5. Add the entries as pin 32..37 to match pin_regs[] and pins[]. The values are from the downstream driver (rpi-6.12.y), which keeps separate C0 and D0 tables; they differ on the HDMI1 and PMIC pins, where D0 selects vc_i2c0 and vc_i2c3 while C0 uses vc_i2c4 and vc_i2c5. The empty indices in between are harmless, their mux bit is zero. Tested on a Raspberry Pi 5 (C0): "cat $A/pins" triggers a KASAN global-out-of-bounds report in brcmstb_pctl_pin_dbg_show() with the driver as-is. The D0 table is not runtime tested. Fixes: 657cbf9b24ba ("pinctrl: bcm: Add STB family pin controller driver") Cc: Jonathan Bell <jonathan@raspberrypi.com> Cc: Phil Elwell <phil@raspberrypi.com> Cc: stable@vger.kernel.org Signed-off-by: Xiaolei Wang <wangxiaolei01@kaihong.com> --- drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c b/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c index 752b78e2c0d8..1720c220cf3e 100644 --- a/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c +++ b/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c @@ -510,6 +510,12 @@ static const struct brcmstb_pin_funcs bcm2712_c0_aon_gpio_pin_funcs[] = { BRCMSTB_PIN(14, bsc_m1, uart0, vc_uart0, uui, vc_spi5, arm_jtag, vc_uart2, vc_i2c3), BRCMSTB_PIN(15, ir_in, aon_fp_4sec_resetb, vc_uart0, pm_led_out, ctl_hdmi_5v, aon_pwm, aon_gpclk, _), BRCMSTB_PIN(16, aon_cpu_standbyb, gpclk0, pm_led_out, ctl_hdmi_5v, vc_pwm0, usb_pwr, aud_fs_clk0, _), + BRCMSTB_PIN(32, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), + BRCMSTB_PIN(33, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), + BRCMSTB_PIN(34, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c4, ctl_hdmi_5v, _, _, _), + BRCMSTB_PIN(35, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c4, _, _, _, _), + BRCMSTB_PIN(36, avs_pmu_bsc, bsc_m2, vc_i2c5, ctl_hdmi_5v, _, _, _, _), + BRCMSTB_PIN(37, avs_pmu_bsc, bsc_m2, vc_i2c5, _, _, _, _, _), }; static const struct brcmstb_pin_funcs bcm2712_c0_gpio_pin_funcs[] = { @@ -585,6 +591,12 @@ static const struct brcmstb_pin_funcs bcm2712_d0_aon_gpio_pin_funcs[] = { BRCMSTB_PIN(12, uart1, vc_uart2, vc_uart0, vc_spi0, usb_pwr, vc_uart2, vc_spi3, _), BRCMSTB_PIN(13, bsc_m1, vc_uart0, uui, vc_spi0, arm_jtag, vc_uart2, vc_i2c3, _), BRCMSTB_PIN(14, bsc_m1, aon_gpclk, vc_uart0, uui, vc_spi0, arm_jtag, vc_uart2, vc_i2c3), + BRCMSTB_PIN(32, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), + BRCMSTB_PIN(33, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), + BRCMSTB_PIN(34, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c0, ctl_hdmi_5v, _, _, _), + BRCMSTB_PIN(35, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c0, _, _, _, _), + BRCMSTB_PIN(36, avs_pmu_bsc, bsc_m2, vc_i2c3, ctl_hdmi_5v, _, _, _, _), + BRCMSTB_PIN(37, avs_pmu_bsc, bsc_m2, vc_i2c3, _, _, _, _, _), }; static const struct brcmstb_pin_funcs bcm2712_d0_gpio_pin_funcs[] = { -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 4/4] pinctrl: bcm: Add missing SGPIO entries to the BCM2712 AON tables 2026-11-13 5:32 ` [PATCH v2 4/4] pinctrl: bcm: Add missing SGPIO entries to the BCM2712 AON tables Xiaolei Wang @ 2026-11-13 12:53 ` Andrea della Porta 0 siblings, 0 replies; 6+ messages in thread From: Andrea della Porta @ 2026-11-13 12:53 UTC (permalink / raw) To: Xiaolei Wang Cc: linusw, florian.fainelli, rjui, sbranden, bcm-kernel-feedback-list, daniel, iivanov, andrea.porta, phil, linux-gpio, linux-rpi-kernel, linux-arm-kernel, linux-kernel, Jonathan Bell, stable Hi Wang, On 05:32 Fri 13 Nov , Xiaolei Wang wrote: > The BCM2712 AON controller describes six SGPIO pins as pin 32..37, but > the AON function tables stop at the last normal GPIO: pin 16 for C0 and > pin 14 for D0. Both are indexed by pin number, so dumping the pin list > walks past the end of the table: > > A=/sys/kernel/debug/pinctrl/107d510700.pinctrl-aon-pinctrl-bcm2712 > cat $A/pins > > pinctrl_pins_show() hands desc->pins[i].number to pin_dbg_show(), so the > list jumps from the last GPIO pin to pin 32, where a valid mux bit makes > brcmstb_pinctrl_fsel_get() evaluate pin_funcs[32].funcs[] outside the > array. The set path walks the same table for any DT node that assigns a > function to aon_sgpio0..5. > > Add the entries as pin 32..37 to match pin_regs[] and pins[]. The values > are from the downstream driver (rpi-6.12.y), which keeps separate C0 and > D0 tables; they differ on the HDMI1 and PMIC pins, where D0 selects > vc_i2c0 and vc_i2c3 while C0 uses vc_i2c4 and vc_i2c5. The empty indices > in between are harmless, their mux bit is zero. > > Tested on a Raspberry Pi 5 (C0): "cat $A/pins" triggers a KASAN > global-out-of-bounds report in brcmstb_pctl_pin_dbg_show() with the > driver as-is. The D0 table is not runtime tested. > > Fixes: 657cbf9b24ba ("pinctrl: bcm: Add STB family pin controller driver") > Cc: Jonathan Bell <jonathan@raspberrypi.com> > Cc: Phil Elwell <phil@raspberrypi.com> > Cc: stable@vger.kernel.org > Signed-off-by: Xiaolei Wang <wangxiaolei01@kaihong.com> Thanks for fixing this! Reviewed-by: Andrea della Porta <andrea.porta@suse.com> > --- > drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c b/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c > index 752b78e2c0d8..1720c220cf3e 100644 > --- a/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c > +++ b/drivers/pinctrl/bcm/pinctrl-brcmstb-bcm2712.c > @@ -510,6 +510,12 @@ static const struct brcmstb_pin_funcs bcm2712_c0_aon_gpio_pin_funcs[] = { > BRCMSTB_PIN(14, bsc_m1, uart0, vc_uart0, uui, vc_spi5, arm_jtag, vc_uart2, vc_i2c3), > BRCMSTB_PIN(15, ir_in, aon_fp_4sec_resetb, vc_uart0, pm_led_out, ctl_hdmi_5v, aon_pwm, aon_gpclk, _), > BRCMSTB_PIN(16, aon_cpu_standbyb, gpclk0, pm_led_out, ctl_hdmi_5v, vc_pwm0, usb_pwr, aud_fs_clk0, _), > + BRCMSTB_PIN(32, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), > + BRCMSTB_PIN(33, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), > + BRCMSTB_PIN(34, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c4, ctl_hdmi_5v, _, _, _), > + BRCMSTB_PIN(35, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c4, _, _, _, _), > + BRCMSTB_PIN(36, avs_pmu_bsc, bsc_m2, vc_i2c5, ctl_hdmi_5v, _, _, _, _), > + BRCMSTB_PIN(37, avs_pmu_bsc, bsc_m2, vc_i2c5, _, _, _, _, _), > }; > > static const struct brcmstb_pin_funcs bcm2712_c0_gpio_pin_funcs[] = { > @@ -585,6 +591,12 @@ static const struct brcmstb_pin_funcs bcm2712_d0_aon_gpio_pin_funcs[] = { > BRCMSTB_PIN(12, uart1, vc_uart2, vc_uart0, vc_spi0, usb_pwr, vc_uart2, vc_spi3, _), > BRCMSTB_PIN(13, bsc_m1, vc_uart0, uui, vc_spi0, arm_jtag, vc_uart2, vc_i2c3, _), > BRCMSTB_PIN(14, bsc_m1, aon_gpclk, vc_uart0, uui, vc_spi0, arm_jtag, vc_uart2, vc_i2c3), > + BRCMSTB_PIN(32, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), > + BRCMSTB_PIN(33, hdmi_tx0_bsc, hdmi_tx0_auto_i2c, bsc_m0, vc_i2c0, _, _, _, _), > + BRCMSTB_PIN(34, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c0, ctl_hdmi_5v, _, _, _), > + BRCMSTB_PIN(35, hdmi_tx1_bsc, hdmi_tx1_auto_i2c, bsc_m1, vc_i2c0, _, _, _, _), > + BRCMSTB_PIN(36, avs_pmu_bsc, bsc_m2, vc_i2c3, ctl_hdmi_5v, _, _, _, _), > + BRCMSTB_PIN(37, avs_pmu_bsc, bsc_m2, vc_i2c3, _, _, _, _, _), > }; > > static const struct brcmstb_pin_funcs bcm2712_d0_gpio_pin_funcs[] = { > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-11-13 12:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20261113053221.3131068-1-wangxiaolei01@kaihong.com>
2026-11-13 5:32 ` [PATCH v2 1/4] pinctrl: bcm: Fix off-by-one and out-of-bounds access in fsel_get() Xiaolei Wang
2026-11-13 12:52 ` Andrea della Porta
2026-11-13 5:32 ` [PATCH v2 2/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in bcm2835 Xiaolei Wang
2026-11-13 5:32 ` [PATCH v2 3/4] pinctrl: bcm: Use pinconf_generic_dt_free_map in brcmstb Xiaolei Wang
2026-11-13 5:32 ` [PATCH v2 4/4] pinctrl: bcm: Add missing SGPIO entries to the BCM2712 AON tables Xiaolei Wang
2026-11-13 12:53 ` Andrea della Porta
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox