2021-06-22 03:22:07

by Axel Lin

[permalink] [raw]
Subject: regulator: mt6358 vdram2_idx/vsel_mask/ vsel_shift setting seems wrong

Hi Hsin-Hsiung,

In drivers/regulator/mt6358-regulator.c:

static const u32 vdram2_idx[] = {
0, 12,
};

MT6358_LDO("ldo_vdram2", VDRAM2, vdram2_voltages, vdram2_idx,
MT6358_LDO_VDRAM2_CON0, 0, MT6358_LDO_VDRAM2_ELR0, 0x10, 0),

With current setting the vsel_mask does not match the vsel_shift setting
So in set_voltage_sel, it will call regmap_update_bits with
mask = 0x10
val = idx << 0
No matter idx is 0 (pvol[0]) or 12 (pvol[1]), it will clear vsel_mask bits

I don't have the datasheet to check, so please help to double check the
vdram2_idx, vsel_mask and vsel_shift settings for ldo_vdram2.
I think at least one of the settings is wrong.

Regards,
Axel


2021-06-23 05:04:04

by Hsin-Hsiung Wang

[permalink] [raw]
Subject: Re: regulator: mt6358 vdram2_idx/vsel_mask/ vsel_shift setting seems wrong

Hi, Axel sir
After checking the spec, the vsel_mask is wrong.
I submit a patch to fix it.
Many thanks for the correcting. :)

On Tue, 2021-06-22 at 11:20 +0800, Axel Lin wrote:
> Hi Hsin-Hsiung,
>
> In drivers/regulator/mt6358-regulator.c:
>
> static const u32 vdram2_idx[] = {
> 0, 12,
> };
>
> MT6358_LDO("ldo_vdram2", VDRAM2, vdram2_voltages, vdram2_idx,
> MT6358_LDO_VDRAM2_CON0, 0, MT6358_LDO_VDRAM2_ELR0, 0x10, 0),
>
> With current setting the vsel_mask does not match the vsel_shift setting
> So in set_voltage_sel, it will call regmap_update_bits with
> mask = 0x10
> val = idx << 0
> No matter idx is 0 (pvol[0]) or 12 (pvol[1]), it will clear vsel_mask bits
>
> I don't have the datasheet to check, so please help to double check the
> vdram2_idx, vsel_mask and vsel_shift settings for ldo_vdram2.
> I think at least one of the settings is wrong.
>
> Regards,
> Axel