linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Tomasz Figa <tfiga@chromium.org>
Cc: Bibby Hsieh <bibby.hsieh@mediatek.com>,
	Wolfram Sang <wsa@the-dreams.de>,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	linux-i2c <linux-i2c@vger.kernel.org>,
	Nicolas Boichat <drinkcat@chromium.org>,
	srv_heupstream <srv_heupstream@mediatek.com>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-devicetree <devicetree@vger.kernel.org>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>
Subject: Re: [PATCH v14 2/2] i2c: core: support bus regulator controlling in adapter
Date: Tue, 28 Apr 2020 15:15:32 +0300	[thread overview]
Message-ID: <f6f59d2e-68cd-e51d-bf7f-d5665c56b61b@ti.com> (raw)
In-Reply-To: <CAAFQd5DEuYWzZz=SeOTjJg_vxaYdYuf_vw-UFVMRYDBKxdtL0A@mail.gmail.com>



On 28/04/2020 14:44, Tomasz Figa wrote:
> On Tue, Apr 28, 2020 at 1:25 PM Grygorii Strashko
> <grygorii.strashko@ti.com> wrote:
>>
>>
>>
>> On 28/04/2020 09:18, Bibby Hsieh wrote:
>>> Although in the most platforms, the bus power of i2c
>>> are alway on, some platforms disable the i2c bus power
>>> in order to meet low power request.
>>>
>>> We get and enable bulk regulator in i2c adapter device.
>>>
>>> Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
>>> ---
>>>    drivers/i2c/i2c-core-base.c | 82 +++++++++++++++++++++++++++++++++++++
>>>    include/linux/i2c.h         |  2 +
>>>    2 files changed, 84 insertions(+)
>>>
>>> diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
>>> index 5cc0b0ec5570..f81b42a4ed07 100644
>>> --- a/drivers/i2c/i2c-core-base.c
>>> +++ b/drivers/i2c/i2c-core-base.c
>>> @@ -313,6 +313,7 @@ static int i2c_smbus_host_notify_to_irq(const struct i2c_client *client)
>>>    static int i2c_device_probe(struct device *dev)
>>>    {
>>>        struct i2c_client       *client = i2c_verify_client(dev);
>>> +     struct i2c_adapter      *adap = client->adapter;
>>>        struct i2c_driver       *driver;
>>>        int status;
>>>
>>> @@ -378,6 +379,12 @@ static int i2c_device_probe(struct device *dev)
>>>
>>>        dev_dbg(dev, "probe\n");
>>>
>>> +     status = regulator_enable(adap->bus_regulator);
>>> +     if (status < 0) {
>>> +             dev_err(&adap->dev, "Failed to enable power regulator\n");
>>> +             goto err_clear_wakeup_irq;
>>> +     }
>>> +
>>
>> Sry, but this is confusing.
>> What if there is separate regulators for I2C device and bus/adapter?
>>
>> I2C bus is transaction based and usually I2C bus drivers ensures that i2c bus is
>> in proper state to perform transaction. While I2C devices can be enable, configured and
>> function without actually interacting with I2C bus unless required (irq for example).
>>
>> With you change any I2C device will enable and keep bus regulator on all the time it's active
>> even if there is no I2C interruptions.
> 
> The I2C SDA/SCL lines must stay high for all the time the bus is idle.
> The regulator in question here is exactly the regulator that drives
> the voltage rail the SDA/SCL lines are pulled up to and so it needs to
> be enabled all the time any slave device is active and expects the I2C
> bus to be in a valid state.
> 
>>
>> Following the problem description it seems
>>    - i2c bus driver should get regulator and ensure it's enabled for the duration of transaction(s)
> 
> That's not necessary given the point below, because the slave driver
> must not trigger any I2C transactions when the slave device is not
> active.
> 
>>    - i2c device should get its own regulator (or the same if shared)  ensure it's enabled for
>>      the period device is active.
> 
> This is a board design aspect and not specific to any particular I2C
> slave device, so slave drivers should not be aware of it. This patch
> exactly attempts to get this SDA/SCL regulator on behalf of the slave
> device.

Thank you for your explanation.



-- 
Best regards,
grygorii

  reply	other threads:[~2020-04-28 12:15 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-28  6:18 [PATCH v14 0/2] add power control in i2c Bibby Hsieh
2020-04-28  6:18 ` [PATCH v14 1/2] dt-binding: i2c: add bus-supply property Bibby Hsieh
2020-04-28 15:02   ` Rob Herring
2020-05-19  6:53   ` Wolfram Sang
2020-05-19  7:00     ` Wolfram Sang
2020-04-28  6:18 ` [PATCH v14 2/2] i2c: core: support bus regulator controlling in adapter Bibby Hsieh
2020-04-28 11:25   ` Grygorii Strashko
2020-04-28 11:44     ` Tomasz Figa
2020-04-28 12:15       ` Grygorii Strashko [this message]
2020-04-28 11:45   ` Tomasz Figa
2020-05-19  6:59   ` Wolfram Sang
2020-05-19  7:26     ` Bibby Hsieh

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=f6f59d2e-68cd-e51d-bf7f-d5665c56b61b@ti.com \
    --to=grygorii.strashko@ti.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=bibby.hsieh@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=drinkcat@chromium.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=robh+dt@kernel.org \
    --cc=srv_heupstream@mediatek.com \
    --cc=tfiga@chromium.org \
    --cc=wsa@the-dreams.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).