All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars@metafoo.de>
To: axel.lin@gmail.com
Cc: linux-kernel@vger.kernel.org, Liam Girdwood <lrg@ti.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>
Subject: Re: [PATCH v2 1/2] regulator: pcf50633: Don't write to reserved bits of AUTO output voltage select register
Date: Mon, 19 Mar 2012 10:07:42 +0100	[thread overview]
Message-ID: <4F66F75E.6040906@metafoo.de> (raw)
In-Reply-To: <CAF+7xWk8Arz+XW+4_+LNFfrMp_nszOxHVoe+qwnbppRvzHwJ2Q@mail.gmail.com>

On 03/19/2012 03:53 AM, Axel Lin wrote:
> 2012/3/18 Lars-Peter Clausen <lars@metafoo.de>:
>> On 03/17/2012 01:07 AM, Axel Lin wrote:
>>> The datasheet says 00000000 to 00101110 are reserved, and the min value of the
>>> voltage setting is 1.8 V.
>>> Thus don't write 0 to AUTO output voltage select register (address 1Ah).
>>>
>>> Table 50. AUTOOUT - AUTO output voltage select register (address 1Ah) bit description[1]
>>> Bit Symbol Access Description
>>> 7:0 auto_out R/W VO(prog) = 0.625 + auto_out × 0.025 V
>>> eg. 00000000 to 00101110: reserved
>>> 00101111: 1.8 V (min)
>>> 01010011: 2.7 V
>>> 01101010: 3.275 V
>>> 01101011: 3.300 V
>>> 01101100: 3.325 V
>>> 01111111 : 3.800 V (max)
>>> ..... .....
>>> 11111110 : 3.800 V
>>> 11111111 : 3.800 V
>>>
>>> This patch also fixes a bug in pcf50633_regulator_list_voltage.
>>> It is wrong to do "index += 0x2f" for PCF50633_REGULATOR_AUTO in
>>> pcf50633_regulator_list_voltage. The purpose of adding 0x2f to index is because
>>> current code return 0 in auto_voltage_bits when millivolts < 1800.
>>> For millivolts > 1800, adding 0x2f to index is wrong.
>>>
>>
>> I think you misunderstood what the current code does. The first usable voltage
>> is 1.8V which is equal to a index of of 0x2f. So the driver adds 0x2f to the
>> index so that there is not a headroom of 0x2f unusable voltages. So a selector
>> of 0 translates to 1.8V, a selector of 1 translates to 1.825V and so on.
> I think what I wry to explain is:
> In regulator core _regulator_do_set_voltage function:
> 
>         if (rdev->desc->ops->set_voltage) {
>                 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV,
>                                                    &selector);
> 
>                 if (rdev->desc->ops->list_voltage)
>                         selector = rdev->desc->ops->list_voltage(rdev,
>                                                                  selector);
>                 else
>                         selector = -1;
> 
> The list_voltage call here takes the selector got from set_voltage callback.
> Thus adding 0x2f to the index in pcf50633_regulator_list_voltage looks
> wrong to me.
> 

Ah ok, now I understand what you mean. When the selector parameter to
set_voltage was introduced we already had list_voltage adding the 0x2f, so
from my point of view list_voltage is correct and the bug is in the commit
which introduced the selector parameter to select voltage, that's why I was
confused as to why you think there was a bug in list_voltage. But it all
makes sense now, thanks.

Luckily the bug is not so critical, since selector is not really used in
_regulator_do_set_voltage in this case except for the trace message.

- Lars

      reply	other threads:[~2012-03-19  9:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-17  0:07 [PATCH v2 1/2] regulator: pcf50633: Don't write to reserved bits of AUTO output voltage select register Axel Lin
2012-03-17  0:08 ` [PATCH v2 2/2] regulator: Convert pcf50633 to get_voltage_sel Axel Lin
2012-03-18 11:09   ` Lars-Peter Clausen
2012-03-18 11:06 ` [PATCH v2 1/2] regulator: pcf50633: Don't write to reserved bits of AUTO output voltage select register Lars-Peter Clausen
2012-03-19  2:53   ` Axel Lin
2012-03-19  9:07     ` Lars-Peter Clausen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F66F75E.6040906@metafoo.de \
    --to=lars@metafoo.de \
    --cc=axel.lin@gmail.com \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lrg@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.