Re: [PATCH 09/13] pinctrl: qcom: spmi-gpio: drop broken pm8008 support

Bryan O'Donoghue
2024-05-08T17:43:46Z

On 06/05/2024 16:08, Johan Hovold wrote:
> The SPMI GPIO driver assumes that the parent device is an SPMI device
> and accesses random data when backcasting the parent struct device
> pointer for non-SPMI devices.
>
> Fortunately this does not seem to cause any issues currently when the
> parent device is an I2C client like the PM8008, but this could change if
> the structures are reorganised (e.g. using structure randomisation).
>
> Notably the interrupt implementation is also broken for non-SPMI devices.
>
> Also note that the two GPIO pins on PM8008 are used for interrupts and
> reset so their practical use should be limited.
>
> Drop the broken GPIO support for PM8008 for now.
>
> Fixes: ea119e5a482a ("pinctrl: qcom-pmic-gpio: Add support for pm8008")
> Cc: stable@vger.kernel.org # 5.13
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
> ---
> drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
> index f4e2c88a7c82..e61be7d05494 100644
> --- a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
> +++ b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
> @@ -1206,7 +1206,6 @@ static const struct of_device_id pmic_gpio_of_match[] = {
> { .compatible = "qcom,pm7325-gpio", .data = (void *) 10 },
> { .compatible = "qcom,pm7550ba-gpio", .data = (void *) 8},
> { .compatible = "qcom,pm8005-gpio", .data = (void *) 4 },
> - { .compatible = "qcom,pm8008-gpio", .data = (void *) 2 },
> { .compatible = "qcom,pm8019-gpio", .data = (void *) 6 },
> /* pm8150 has 10 GPIOs with holes on 2, 5, 7 and 8 */
> { .compatible = "qcom,pm8150-gpio", .data = (void *) 10 },

Since there are no upstream dtsi users there's no harm in dropping and
re-adding when i2c can be taken account of.

Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>