Message ID | 20240226150536.1690-5-paul.barker.ct@bp.renesas.com |
---|---|
State | New |
Delegated to: | Marek Vasut |
Headers | show |
Series | Add i2c and reset support for Renesas RZ/G2L | expand |
On 2/26/24 4:05 PM, Paul Barker wrote: > The RZ/G2L SMARC module is powered via a Renesas RAA215300 PMIC which > provides several voltage converters, a real time clock (RTC) and reset > control. A basic driver is implemented for this device so that we can > read, write and dump the PMIC registers. > > The raa215300_bind() function is added as a stub, binding of the > sysreset driver will be added in a later patch. > > Additional features of this PMIC (such as reset control) may be > supported by future patches. > > Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com> > --- > configs/renesas_rzg2l_smarc_defconfig | 3 ++ > drivers/power/pmic/Kconfig | 9 ++++++ > drivers/power/pmic/Makefile | 1 + > drivers/power/pmic/raa215300.c | 41 +++++++++++++++++++++++++++ > 4 files changed, 54 insertions(+) > create mode 100644 drivers/power/pmic/raa215300.c > > diff --git a/configs/renesas_rzg2l_smarc_defconfig b/configs/renesas_rzg2l_smarc_defconfig > index ad46297c6619..2cab79329db4 100644 > --- a/configs/renesas_rzg2l_smarc_defconfig > +++ b/configs/renesas_rzg2l_smarc_defconfig > @@ -27,6 +27,7 @@ CONFIG_CMD_GPIO=y > CONFIG_CMD_I2C=y > CONFIG_CMD_MMC=y > CONFIG_CMD_PART=y > +CONFIG_CMD_PMIC=y > CONFIG_CMD_EXT2=y > CONFIG_CMD_EXT4=y > CONFIG_CMD_EXT4_WRITE=y > @@ -49,6 +50,8 @@ CONFIG_DM_I2C=y > CONFIG_MMC_IO_VOLTAGE=y > CONFIG_MMC_UHS_SUPPORT=y > CONFIG_MMC_HS400_SUPPORT=y > +CONFIG_DM_PMIC=y > +CONFIG_PMIC_RAA215300=y > CONFIG_DM_REGULATOR=y > CONFIG_DM_REGULATOR_FIXED=y > CONFIG_DM_REGULATOR_GPIO=y Would it be possible to split the enablement (config change) from the driver in two separate patches ?
diff --git a/configs/renesas_rzg2l_smarc_defconfig b/configs/renesas_rzg2l_smarc_defconfig index ad46297c6619..2cab79329db4 100644 --- a/configs/renesas_rzg2l_smarc_defconfig +++ b/configs/renesas_rzg2l_smarc_defconfig @@ -27,6 +27,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y CONFIG_CMD_PART=y +CONFIG_CMD_PMIC=y CONFIG_CMD_EXT2=y CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4_WRITE=y @@ -49,6 +50,8 @@ CONFIG_DM_I2C=y CONFIG_MMC_IO_VOLTAGE=y CONFIG_MMC_UHS_SUPPORT=y CONFIG_MMC_HS400_SUPPORT=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_RAA215300=y CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y diff --git a/drivers/power/pmic/Kconfig b/drivers/power/pmic/Kconfig index 454a6e0cf87a..9b61b18e11fd 100644 --- a/drivers/power/pmic/Kconfig +++ b/drivers/power/pmic/Kconfig @@ -404,6 +404,15 @@ config PMIC_TPS65219 help The TPS65219 is a PMIC containing a bunch of SMPS & LDOs. This driver binds the pmic children. + +config PMIC_RAA215300 + bool "Renesas RAA215300 PMIC driver" + depends on DM_PMIC + help + The Renesas RAA215300 PMIC driver includes RTC support, system reset + support and several voltage regulators. For now, this driver simply + allows register access and will bind the sysreset driver + (CONFIG_SYSRESET_RAA215300) if it is enabled. endif config PMIC_TPS65217 diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile index 55ee614364be..a2d59deeed8b 100644 --- a/drivers/power/pmic/Makefile +++ b/drivers/power/pmic/Makefile @@ -35,6 +35,7 @@ obj-$(CONFIG_PMIC_STPMIC1) += stpmic1.o obj-$(CONFIG_PMIC_TPS65217) += pmic_tps65217.o obj-$(CONFIG_PMIC_TPS65219) += tps65219.o obj-$(CONFIG_PMIC_TPS65941) += tps65941.o +obj-$(CONFIG_PMIC_RAA215300) += raa215300.o obj-$(CONFIG_POWER_TPS65218) += pmic_tps65218.o ifeq ($(CONFIG_$(SPL_)POWER_LEGACY),y) diff --git a/drivers/power/pmic/raa215300.c b/drivers/power/pmic/raa215300.c new file mode 100644 index 000000000000..b93a0d3a084a --- /dev/null +++ b/drivers/power/pmic/raa215300.c @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2023 Renesas Electronics Corporation + */ + +#include <dm.h> +#include <dm/device-internal.h> +#include <dm/lists.h> +#include <i2c.h> +#include <power/pmic.h> + +#define RAA215300_REG_COUNT 0x80 + +static int raa215300_reg_count(struct udevice *dev) +{ + return RAA215300_REG_COUNT; +} + +static struct dm_pmic_ops raa215300_ops = { + .reg_count = raa215300_reg_count, + .read = dm_i2c_read, + .write = dm_i2c_write, +}; + +static const struct udevice_id raa215300_ids[] = { + { .compatible = "renesas,raa215300" }, + { /* sentinel */ } +}; + +static int raa215300_bind(struct udevice *dev) +{ + return 0; +} + +U_BOOT_DRIVER(raa215300_pmic) = { + .name = "raa215300_pmic", + .id = UCLASS_PMIC, + .of_match = raa215300_ids, + .bind = raa215300_bind, + .ops = &raa215300_ops, +};
The RZ/G2L SMARC module is powered via a Renesas RAA215300 PMIC which provides several voltage converters, a real time clock (RTC) and reset control. A basic driver is implemented for this device so that we can read, write and dump the PMIC registers. The raa215300_bind() function is added as a stub, binding of the sysreset driver will be added in a later patch. Additional features of this PMIC (such as reset control) may be supported by future patches. Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com> --- configs/renesas_rzg2l_smarc_defconfig | 3 ++ drivers/power/pmic/Kconfig | 9 ++++++ drivers/power/pmic/Makefile | 1 + drivers/power/pmic/raa215300.c | 41 +++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 drivers/power/pmic/raa215300.c