power: pmic: add Ricoh RN5T567 PMIC support
Add device model enabled PMIC driver for Ricoh RN5T567 PMIC used on Colibri iMX7. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
aa723b8dbf
commit
c571d6828d
17
doc/device-tree-bindings/pmic/rn5t567.txt
Normal file
17
doc/device-tree-bindings/pmic/rn5t567.txt
Normal file
@ -0,0 +1,17 @@
|
||||
Ricoh RN5T567 PMIC
|
||||
|
||||
This file describes the binding info for the PMIC driver.
|
||||
|
||||
Required properties:
|
||||
- compatible: "ricoh,rn5t567"
|
||||
- reg: depending on strapping, e.g. 0x33
|
||||
|
||||
With those two properties, the PMIC device can be used to read/write
|
||||
registers.
|
||||
|
||||
Example:
|
||||
|
||||
rn5t567@33 {
|
||||
compatible = "ricoh,rn5t567";
|
||||
reg = <0x33>;
|
||||
};
|
@ -127,6 +127,14 @@ config PMIC_S5M8767
|
||||
driver provides basic register access and sets up the attached
|
||||
regulators if regulator support is enabled.
|
||||
|
||||
config PMIC_RN5T567
|
||||
bool "Enable driver for Ricoh RN5T567 PMIC"
|
||||
depends on DM_PMIC
|
||||
---help---
|
||||
The RN5T567 is a PMIC with 4 step-down DC/DC converters, 5 LDO
|
||||
regulators Real-Time Clock and 4 GPIOs. This driver provides
|
||||
register access only.
|
||||
|
||||
config PMIC_TPS65090
|
||||
bool "Enable driver for Texas Instruments TPS65090 PMIC"
|
||||
depends on DM_PMIC
|
||||
|
@ -13,6 +13,7 @@ obj-$(CONFIG_DM_PMIC_SANDBOX) += sandbox.o i2c_pmic_emul.o
|
||||
obj-$(CONFIG_PMIC_ACT8846) += act8846.o
|
||||
obj-$(CONFIG_PMIC_PM8916) += pm8916.o
|
||||
obj-$(CONFIG_PMIC_RK808) += rk808.o
|
||||
obj-$(CONFIG_PMIC_RN5T567) += rn5t567.o
|
||||
obj-$(CONFIG_PMIC_TPS65090) += tps65090.o
|
||||
obj-$(CONFIG_PMIC_S5M8767) += s5m8767.o
|
||||
|
||||
|
64
drivers/power/pmic/rn5t567.c
Normal file
64
drivers/power/pmic/rn5t567.c
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Toradex AG
|
||||
* Stefan Agner <stefan.agner@toradex.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <errno.h>
|
||||
#include <fdtdec.h>
|
||||
#include <libfdt.h>
|
||||
#include <power/rn5t567_pmic.h>
|
||||
#include <power/pmic.h>
|
||||
|
||||
static int rn5t567_reg_count(struct udevice *dev)
|
||||
{
|
||||
return RN5T567_NUM_OF_REGS;
|
||||
}
|
||||
|
||||
static int rn5t567_write(struct udevice *dev, uint reg, const uint8_t *buff,
|
||||
int len)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = dm_i2c_write(dev, reg, buff, len);
|
||||
if (ret) {
|
||||
debug("write error to device: %p register: %#x!", dev, reg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rn5t567_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = dm_i2c_read(dev, reg, buff, len);
|
||||
if (ret) {
|
||||
debug("read error from device: %p register: %#x!", dev, reg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dm_pmic_ops rn5t567_ops = {
|
||||
.reg_count = rn5t567_reg_count,
|
||||
.read = rn5t567_read,
|
||||
.write = rn5t567_write,
|
||||
};
|
||||
|
||||
static const struct udevice_id rn5t567_ids[] = {
|
||||
{ .compatible = "ricoh,rn5t567" },
|
||||
{ }
|
||||
};
|
||||
|
||||
U_BOOT_DRIVER(pmic_rn5t567) = {
|
||||
.name = "rn5t567 pmic",
|
||||
.id = UCLASS_PMIC,
|
||||
.of_match = rn5t567_ids,
|
||||
.ops = &rn5t567_ops,
|
||||
};
|
113
include/power/rn5t567_pmic.h
Normal file
113
include/power/rn5t567_pmic.h
Normal file
@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Toradex AG
|
||||
* Stefan Agner <stefan.agner@toradex.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
#ifndef __RN5T567_PMIC_H_
|
||||
#define __RN5T567_PMIC_H_
|
||||
|
||||
/* RN5T567 registers */
|
||||
enum {
|
||||
RN5T567_LSIVER = 0x00,
|
||||
RN5T567_OTPVER = 0x01,
|
||||
RN5T567_IODAC = 0x02,
|
||||
RN5T567_VINDAC = 0x03,
|
||||
RN5T567_OUT32KEN = 0x05,
|
||||
|
||||
RN5T567_CPUCNT = 0x06,
|
||||
|
||||
RN5T567_PSWR = 0x07,
|
||||
RN5T567_PONHIS = 0x09,
|
||||
RN5T567_POFFHIS = 0x0A,
|
||||
RN5T567_WATCHDOG = 0x0B,
|
||||
RN5T567_WATCHDOGCNT = 0x0C,
|
||||
RN5T567_PWRFUNC = 0x0D,
|
||||
RN5T567_SLPCNT = 0x0E,
|
||||
RN5T567_REPCNT = 0x0F,
|
||||
RN5T567_PWRONTIMSET = 0x10,
|
||||
RN5T567_NOETIMSETCNT = 0x11,
|
||||
RN5T567_PWRIREN = 0x12,
|
||||
RN5T567_PWRIRQ = 0x13,
|
||||
RN5T567_PWRMON = 0x14,
|
||||
RN5T567_PWRIRSEL = 0x15,
|
||||
|
||||
RN5T567_DC1_SLOT = 0x16,
|
||||
RN5T567_DC2_SLOT = 0x17,
|
||||
RN5T567_DC3_SLOT = 0x18,
|
||||
RN5T567_DC4_SLOT = 0x19,
|
||||
|
||||
RN5T567_LDO1_SLOT = 0x1B,
|
||||
RN5T567_LDO2_SLOT = 0x1C,
|
||||
RN5T567_LDO3_SLOT = 0x1D,
|
||||
RN5T567_LDO4_SLOT = 0x1E,
|
||||
RN5T567_LDO5_SLOT = 0x1F,
|
||||
|
||||
RN5T567_PSO0_SLOT = 0x25,
|
||||
RN5T567_PSO1_SLOT = 0x26,
|
||||
RN5T567_PSO2_SLOT = 0x27,
|
||||
RN5T567_PSO3_SLOT = 0x28,
|
||||
|
||||
RN5T567_LDORTC1_SLOT = 0x2A,
|
||||
|
||||
RN5T567_DC1CTL = 0x2C,
|
||||
RN5T567_DC1CTL2 = 0x2D,
|
||||
RN5T567_DC2CTL = 0x2E,
|
||||
RN5T567_DC2CTL2 = 0x2F,
|
||||
RN5T567_DC3CTL = 0x30,
|
||||
RN5T567_DC3CTL2 = 0x31,
|
||||
RN5T567_DC4CTL = 0x32,
|
||||
RN5T567_DC4CTL2 = 0x33,
|
||||
|
||||
RN5T567_DC1DAC = 0x36,
|
||||
RN5T567_DC2DAC = 0x37,
|
||||
RN5T567_DC3DAC = 0x38,
|
||||
RN5T567_DC4DAC = 0x39,
|
||||
|
||||
RN5T567_DC1DAC_SLP = 0x3B,
|
||||
RN5T567_DC2DAC_SLP = 0x3C,
|
||||
RN5T567_DC3DAC_SLP = 0x3D,
|
||||
RN5T567_DC4DAC_SLP = 0x3E,
|
||||
|
||||
RN5T567_DCIREN = 0x40,
|
||||
RN5T567_DCIRQ = 0x41,
|
||||
RN5T567_DCIRMON = 0x42,
|
||||
|
||||
RN5T567_LDOEN1 = 0x44,
|
||||
RN5T567_LDOEN2 = 0x45,
|
||||
RN5T567_LDODIS1 = 0x46,
|
||||
|
||||
RN5T567_LDO1DAC = 0x4C,
|
||||
RN5T567_LDO2DAC = 0x4D,
|
||||
RN5T567_LDO3DAC = 0x4E,
|
||||
RN5T567_LDO4DAC = 0x4F,
|
||||
RN5T567_LDO5DAC = 0x50,
|
||||
|
||||
RN5T567_LDORTC1DAC = 0x56,
|
||||
RN5T567_LDORTC2DAC = 0x57,
|
||||
|
||||
RN5T567_LDO1DAC_SLP = 0x58,
|
||||
RN5T567_LDO2DAC_SLP = 0x59,
|
||||
RN5T567_LDO3DAC_SLP = 0x5A,
|
||||
RN5T567_LDO4DAC_SLP = 0x5B,
|
||||
RN5T567_LDO5DAC_SLP = 0x5C,
|
||||
|
||||
RN5T567_IOSEL = 0x90,
|
||||
RN5T567_IOOUT = 0x91,
|
||||
RN5T567_GPEDGE1 = 0x92,
|
||||
RN5T567_EN_GPIR = 0x94,
|
||||
RN5T567_IR_GPR = 0x95,
|
||||
RN5T567_IR_GPF = 0x96,
|
||||
RN5T567_MON_IOIN = 0x97,
|
||||
RN5T567_GPLED_FUNC = 0x98,
|
||||
RN5T567_INTPOL = 0x9C,
|
||||
RN5T567_INTEN = 0x9D,
|
||||
RN5T567_INTMON = 0x9E,
|
||||
|
||||
RN5T567_PREVINDAC = 0xB0,
|
||||
RN5T567_OVTEMP = 0xBC,
|
||||
|
||||
RN5T567_NUM_OF_REGS = 0xBF,
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user