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>master
parent
aa723b8dbf
commit
c571d6828d
@ -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>; |
||||||
|
}; |
@ -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, |
||||||
|
}; |
@ -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