[U-Boot] [PATCH] power: pmic/regulator: Add basic support for TPS65910

Felix Brack fb at ltec.ch
Mon Nov 27 10:26:04 UTC 2017


Hello Simon

On 26.11.2017 12:39, Simon Glass wrote:
> Hi Felix,
> 
> On 22 November 2017 at 03:39, Felix Brack <fb at ltec.ch> wrote:
>> Hello Simon,
>>
>> Many thanks for taking the time to review my patch.
>>
>> On 20.11.2017 16:38, Simon Glass wrote:
>>> Hi Felix,
>>>
>>> On 8 November 2017 at 04:04, Felix Brack <fb at ltec.ch> wrote:
>>>> Texas Instrument's TPS65910 PMIC contains 3 buck DC-DC converts, one
>>>> boost DC-DC converter and 8 LDOs. This patch implements driver model
>>>> support for the TPS65910 PMIC and its regulators making the get/set
>>>> API for regulator value/enable available.
>>>> This patch depends on the patch "am33xx: Add a function to query MPU
>>>> voltage in uV" to build correctly. For boards relying on the DT
>>>> include file tps65910.dtsi the v2 patch "power: extend prefix match
>>>> to regulator-name property" and an appropriate regulator naming is
>>>> also required.
>>>>
>>>> Signed-off-by: Felix Brack <fb at ltec.ch>
>>>> ---
>>>>
>>>>  drivers/power/pmic/Kconfig                   |   8 +
>>>>  drivers/power/pmic/Makefile                  |   1 +
>>>>  drivers/power/pmic/pmic_tps65910_dm.c        | 138 ++++++++
>>>>  drivers/power/regulator/Kconfig              |   7 +
>>>>  drivers/power/regulator/Makefile             |   1 +
>>>>  drivers/power/regulator/tps65910_regulator.c | 493 +++++++++++++++++++++++++++
>>>>  include/power/tps65910_pmic.h                | 130 +++++++
>>>>  7 files changed, 778 insertions(+)
>>>>  create mode 100644 drivers/power/pmic/pmic_tps65910_dm.c
>>>>  create mode 100644 drivers/power/regulator/tps65910_regulator.c
>>>>  create mode 100644 include/power/tps65910_pmic.h
>>>>
> 
> [..]
> 
>>>> +static int pmic_tps65910_write(struct udevice *dev, uint reg, const u8 *buffer,
>>>> +                              int len)
>>>> +{
>>>> +       if (dm_i2c_write(dev, reg, buffer, len)) {
>>>> +               error("%s write error on register %02x\n", dev->name, reg);
>>>> +               return -EIO;
>>>
>>> Can you return ret here instead (and in cases below)? I does not seem
>>> necessary to obscure the original error.
>>>
>>> [...]
>>>
>> Yes for the calls to dm_i2c_write() and dm_i2c_read(). How about the
>> call to ofnode_valid()? Is it okay to return -ENXIO instead of NULL in
>> case of failure?
> 
> Yes, all I was referring to was that we should not change the error
> number when passing it through, unless there is a valid reason.
> 
> For ofnode_valid() you have an invalid device tree node I think, so
> -EINVAL is better.
> 
> [..]
>
queued for V2

>>>> +static int get_ctrl_reg_from_unit_addr(const int unit_addr)
>>>> +{
>>>> +       switch (unit_addr) {
>>>> +       case TPS65910_UNIT_VRTC:
>>>> +               return TPS65910_REG_VRTC;
>>>> +       case TPS65910_UNIT_VIO:
>>>> +               return TPS65910_REG_VIO;
>>>> +       case TPS65910_UNIT_VDD1:
>>>> +               return TPS65910_REG_VDD1;
>>>> +       case TPS65910_UNIT_VDD2:
>>>> +               return TPS65910_REG_VDD2;
>>>> +       case TPS65910_UNIT_VDD3:
>>>> +               return TPS65910_REG_VDD3;
>>>> +       case TPS65910_UNIT_VDIG1:
>>>> +               return TPS65910_REG_VDIG1;
>>>> +       case TPS65910_UNIT_VDIG2:
>>>> +               return TPS65910_REG_VDIG2;
>>>> +       case TPS65910_UNIT_VPLL:
>>>> +               return TPS65910_REG_VPLL;
>>>> +       case TPS65910_UNIT_VDAC:
>>>> +               return TPS65910_REG_VDAC;
>>>> +       case TPS65910_UNIT_VAUX1:
>>>> +               return TPS65910_REG_VAUX1;
>>>> +       case TPS65910_UNIT_VAUX2:
>>>> +               return TPS65910_REG_VAUX2;
>>>> +       case TPS65910_UNIT_VAUX33:
>>>> +               return TPS65910_REG_VAUX33;
>>>> +       case TPS65910_UNIT_VMMC:
>>>> +               return TPS65910_REG_VMMC;
>>>
>>> I'm guess this cannot be done with an array lookup?
>>>
>> It could be done, as the unit numbers are consecutive (for now) and
>> starting at 0. I don't like that piece of code either. Should I replace
>> it with a static array of constants? I'm just not sure ...
> 
> I think it is better to use const array in this case.
> 
> [...]
> 
queued for V2

> Regards,
> Simon
> 

regards, Felix


More information about the U-Boot mailing list