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
next prev parent 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).