Re: [PATCH] pinctrl: qcom: ipq5018: replace gcc_plltest with pwm2 on gpio12
From: Dmitry Baryshkov
Date: Mon Oct 05 2026 - 02:49:26 EST
On Fri, Oct 02, 2026 at 01:09:58PM -0300, Adriel Santos wrote:
> The pingroup table has gcc_plltest at function 5 of gpio12 and does not
> offer pwm2 on that pin, so the pinmux core rejects a request for pwm2 on
> gpio12 as an invalid group. On the hardware, function 5 of gpio12
> carries the PWM2 output: the Xiaomi AX3000T v2 drives its blue status
> LED from PWM2 on gpio12.
>
> The vendor kernel shipped on that router (Linux 4.4, stock firmware
> 2.0.28) has pwm2 in this slot. Its pingroup table, as read from the
> firmware image, lists these functions for gpio12:
>
> gpio, blsp0_spi, blsp0_i2c, blsp1_uart0, _, pwm2, qdss_tracedata_a,
> _, _, _
>
> and has pwm3 at function 4 of gpio13, matching commit c6c159fcdb4e
> ("pinctrl: qcom: ipq5018: add missing pwm3 function on gpio13").
>
> Measured on the board: with gpio12 set to each of the 16 function
> values in turn, and PWM2 held at 0% and then at 100% duty, the pad
> level read back from GPIO_IN follows PWM2 only at function 5. There it
> does not follow PWM channels 0, 1 or 3, and the LED switches with PWM2.
> Functions 4 and 7, which the table leaves empty, do not carry PWM2.
>
> Put pwm2 in function 5 of gpio12 and list gpio12 in pwm2_groups. Drop
> gpio12 from gcc_plltest_groups: none of its functions is gcc_plltest
> any more, and selecting it would trigger the WARN_ON() in
> msm_pinmux_set_mux().
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxxxxxxxx>
--
With best wishes
Dmitry