mbox series

[v4,00/16] rockchip: add support for SARADCv2 and RK806 PMIC and regulators

Message ID 20240314-rk3588-saradc-v4-0-31cb41ff7362@theobroma-systems.com
Headers show
Series rockchip: add support for SARADCv2 and RK806 PMIC and regulators | expand

Message

Quentin Schulz March 14, 2024, 9:36 a.m. UTC
The RK3588 has a new IP for SARADC compared to older SoCs of the same
vendor but most of the boilerplate is shared, so rockchip-saradc.c
driver is adapted instead of creating a new one.

Because the SARADC requires a vref-supply which is commonly coming from
a regulator of the RK806 PMIC, support for the RK806 PMIC and regulators
are also added in this patch series. Finally, RK806 PMIC is the first
one to actually support SPI as communication layer between the SoC and
the PMIC (but supports I2C as well according to the datasheet). This
adds support for RK806 over SPI though there should be no reason for
RK806 over I2C to not work.

Note that the DT now uses a different prefix for the buck and ldo node
names and the RK806 is the first one to use nldo and pldo and while they
both are LDOs, they have overlapping indices which makes it impossible
to simply reuse the rk8xx_ldo driver and need to define new ones (though
some callbacks can be reused, as is done in this patch series).

The SARADC was tested by toggling the BIOS button connected over channel
0 on RK3588 Jaguar and using the adc or button commands to watch over
the value.
The PMIC was tested with the pmic command for reading the CHIP_VERS
registers and writing to the WDT_REG (0x73).
The regulators were tested by using a modified DT for RK3588 Jaguar and
playing with the regulator command to enable/disable some buck/nldo/pldo
and modify their output voltage.

This has a light dependency on
https://lore.kernel.org/u-boot/20240221-jaguar-v3-0-1f256a82201b@theobroma-systems.com/T/#t
because of:
 - remove of asm/io.h include in favor of asm/arch-rockchip/hardware.h
   (both should be included if applied before the dependency)
 - Jaguar defconfig modified in this patch series is added in the
   aforementioned patch series,

Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
---
Changes in v4:
- use uint8_t instead of char to fix clang's
  -Wsingle-bit-bitfield-constant-conversion for the members of rk806_cmd
  data structure, they all are storing unsigned numbers anyway,
- Link to v3: https://lore.kernel.org/r/20240304-rk3588-saradc-v3-0-7424e2ed5d3b@theobroma-systems.com

Changes in v3:
- added ifdef safeguards for the spi sections in the rk8xx PMIC driver,
- removed SPL_PMIC_RK8XXX from Jaguar defconfig since it's doing nothing
  at the moment (issue around missing Kconfig symbol dependency, will be
  fixed in another patch series),
- Link to v2: https://lore.kernel.org/r/20240223-rk3588-saradc-v2-0-11c046b7e94a@theobroma-systems.com

Changes in v2:
- fixed incorrect bitmasking when selecting channel
- added optional controller reset to match downstream U-Boot and both
  downstream and upstream Linux kernel logic,
- Link to v1: https://lore.kernel.org/r/20240221-rk3588-saradc-v1-0-c39a5601d1cc@theobroma-systems.com

---
Quentin Schulz (15):
      rockchip: spi: rk_spi: do not write bytes when in read-only mode
      regulator: rk8xx: remove unused functions
      regulator: rk8xx: add indirection level for some ldo callbacks
      power: rk8xx: add support for RK806
      pmic: reword help text
      rockchip: adc: rockchip-saradc: use union for preparing for v2
      rockchip: adc: rockchip-saradc: factor out channel_data callback
      rockchip: adc: rockchip-saradc: factor out start_channel callback
      rockchip: adc: rockchip-saradc: factor out stop callback
      rockchip: adc: rockchip-saradc: add support for RK3588
      power: pmic: rk8xx: fix duplicate prompt
      rockchip: jaguar-rk3588: enable SARADC and derivatives
      adc: add missing depends on ADC for controller drivers
      button: add missing ADC dependency for BUTTON_ADC
      rockchip: boot_mode: fix rockchip_dnl_key_pressed requiring ADC support

William Wu (1):
      regulator: rk8xx: fix SWITCH enable on RK809

 arch/arm/mach-rockchip/boot_mode.c |   4 +
 cmd/pmic.c                         |   4 +-
 configs/jaguar-rk3588_defconfig    |  10 +-
 drivers/adc/Kconfig                |   4 +
 drivers/adc/rockchip-saradc.c      | 202 +++++++++++--
 drivers/button/Kconfig             |   1 +
 drivers/power/pmic/Kconfig         |   2 +-
 drivers/power/pmic/rk8xx.c         |  91 ++++++
 drivers/power/regulator/rk8xx.c    | 595 ++++++++++++++++++++++++++++++++++---
 drivers/spi/rk_spi.c               |  20 +-
 include/power/rk8xx_pmic.h         |  21 +-
 11 files changed, 879 insertions(+), 75 deletions(-)
---
base-commit: 40e06db4c0a9893d613adbe002e794115397a150
change-id: 20240212-rk3588-saradc-ab0a9bda9306

Best regards,