[U-Boot] [PATCH v5 2/6] power: pmic: Palmas: Add the base pmic support

Keerthy a0393675 at ti.com
Thu Sep 29 08:02:36 CEST 2016



On Wednesday 28 September 2016 11:21 PM, Simon Glass wrote:
> Hi Keerthy,
>
> On 27 September 2016 at 22:27, Keerthy <j-keerthy at ti.com> wrote:
>> Add support to bind the regulators/child nodes with the pmic.
>> Also adds the pmic i2c based read/write funtions to access pmic
>> registers.
>>
>> Signed-off-by: Keerthy <j-keerthy at ti.com>
>> Reviewed-by: Simon Glass <sjg at chromium.org>
>> Reviewed-by: Tom Rini <trini at konsulko.com>
>> ---
>>
>> Changes in v5:
>>
>>   * Added pmic read/write functions.
>>
>>  drivers/power/pmic/Kconfig  |   7 +++
>>  drivers/power/pmic/Makefile |   1 +
>>  drivers/power/pmic/palmas.c | 108 ++++++++++++++++++++++++++++++++++++++++++++
>>  include/power/palmas.h      |  25 ++++++++++
>>  4 files changed, 141 insertions(+)
>>  create mode 100644 drivers/power/pmic/palmas.c
>>  create mode 100644 include/power/palmas.h
>>
>> diff --git a/drivers/power/pmic/Kconfig b/drivers/power/pmic/Kconfig
>> index 69f8d51..92931c5 100644
>> --- a/drivers/power/pmic/Kconfig
>> +++ b/drivers/power/pmic/Kconfig
>> @@ -135,3 +135,10 @@ config PMIC_TPS65090
>>         FETs and a battery charger. This driver provides register access
>>         only, and you can enable the regulator/charger drivers separately if
>>         required.
>> +
>> +config PMIC_PALMAS
>> +       bool "Enable driver for Texas Instruments PALMAS PMIC"
>> +       depends on DM_PMIC
>> +       ---help---
>> +       The PALMAS is a PMIC containing several LDOs, SMPS.
>> +       This driver binds the pmic children.
>> diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile
>> index 52b4f71..828c0cf 100644
>> --- a/drivers/power/pmic/Makefile
>> +++ b/drivers/power/pmic/Makefile
>> @@ -15,6 +15,7 @@ obj-$(CONFIG_PMIC_PM8916) += pm8916.o
>>  obj-$(CONFIG_PMIC_RK808) += rk808.o
>>  obj-$(CONFIG_PMIC_TPS65090) += tps65090.o
>>  obj-$(CONFIG_PMIC_S5M8767) += s5m8767.o
>> +obj-$(CONFIG_$(SPL_)PMIC_PALMAS) += palmas.o
>>
>>  obj-$(CONFIG_POWER_LTC3676) += pmic_ltc3676.o
>>  obj-$(CONFIG_POWER_MAX77696) += pmic_max77696.o
>> diff --git a/drivers/power/pmic/palmas.c b/drivers/power/pmic/palmas.c
>> new file mode 100644
>> index 0000000..1d2bd67
>> --- /dev/null
>> +++ b/drivers/power/pmic/palmas.c
>> @@ -0,0 +1,108 @@
>> +/*
>> + * (C) Copyright 2016 Texas Instruments Incorporated, <www.ti.com>
>> + * Keerthy <j-keerthy at ti.com>
>> + *
>> + * SPDX-License-Identifier:    GPL-2.0+
>> + */
>> +
>> +#include <common.h>
>> +#include <fdtdec.h>
>> +#include <errno.h>
>> +#include <dm.h>
>> +#include <i2c.h>
>> +#include <power/pmic.h>
>> +#include <power/regulator.h>
>> +#include <power/palmas.h>
>> +#include <dm/device.h>
>> +
>> +DECLARE_GLOBAL_DATA_PTR;
>> +
>> +static const struct pmic_child_info pmic_children_info[] = {
>> +       { .prefix = "ldo", .driver = PALMAS_LDO_DRIVER },
>> +       { .prefix = "smps", .driver = PALMAS_SMPS_DRIVER },
>> +       { },
>> +};
>> +
>> +static int palmas_write(struct udevice *dev, uint reg, const uint8_t *buff,
>> +                         int len)
>> +{
>> +       if (dm_i2c_reg_write(dev, reg, *buff)) {
>
> I think this should be dm_i2c_write(). You are only writing a single byte.

Now the v2 of this series had comments suggesting the opposite:

https://www.mail-archive.com/u-boot@lists.denx.de/msg225123.html

>
>> +               error("write error to device: %p register: %#x!", dev, reg);
>> +               return -EIO;
>> +       }
>> +
>> +       return 0;
>> +}
>> +
>> +static int palmas_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
>> +{
>> +       int ret;
>> +
>> +       ret = dm_i2c_reg_read(dev, reg);
>
> dm_i2c_read()
>
>> +       if (ret < 0) {
>> +               error("read error %d from device: %p register: %#x!", ret, dev,
>> +                     reg);
>> +               return -EIO;
>> +       }
>> +
>> +       return ret;
>> +}
>
> [...]
>
> Regards,
> Simon
>


More information about the U-Boot mailing list