On 4/1/25 12:47, Neil Armstrong via groups.io wrote:
The current qcom_pmic_gpio driver is too limited and doesn't
support state tracking for all pins like the Linux driver.
Adding full pinconf support would require adding the state
and it's much simpler to restart from scratch with a new
driver based on the Linux one adapted to the U-Boot GPIO
and Pinctrl APIs.
For now only the PMICs I've been able to validate are
added in the compatible list but we should be able to
add the entire list from the Linux driver.
There's a few difference from the Linux driver:
- no IRQ support
- uses the U-Boot GPIO flags that maps very well
- uses the gpio-ranges to get the pins count
- no debugfs but prints the pin state via pinmux callback
It uses the same CONFIG entry as the old one, since
the ultimate goal is to migrate entirely on this new
driver once we verify it doesn't break the older
platforms.
Signed-off-by: Neil Armstrong <[email protected]>
---
drivers/gpio/Makefile | 2 +-
drivers/gpio/qcom_spmi_gpio.c | 1034 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 1035 insertions(+), 1 deletion(-)
...
+
+static const struct udevice_id qcom_spmi_pmic_gpio_ids[] = {
+ { .compatible = "qcom,pm8550b-gpio" },
+ { .compatible = "qcom,pm8550ve-gpio" },
+ { .compatible = "qcom,pm8550vs-gpio" },
+ { .compatible = "qcom,pmk8550-gpio" },
+ { .compatible = "qcom,pmr735d-gpio" },
+ { }
+};
+
I've added 2 compatibles here to the top of that list
+ { .compatible = "qcom,pm660-gpio" },
+ { .compatible = "qcom,pm660l-gpio" },
and was able to confirm with "dm tree" that new driver is in use and it
works fine (Volume Up key works and I'm able to navigate U-Boot menu).
Tested-by: Alexey Minnekhanov <[email protected]>
---
Regards,
Alexey Minnekhanov