From: "Sergio Pérez" <sergio@pereznus.es>
To: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Tomasz Duszynski <tduszyns@gmail.com>,
Jonathan Cameron <jic23@kernel.org>,
Lars-Peter Clausen <lars@metafoo.de>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/2] iio: light: bh1750: Add hardware reset support via GPIO
Date: Thu, 20 Mar 2025 15:38:55 +0100 [thread overview]
Message-ID: <4899e69d-5de0-45a9-896d-2cb43ca78937@pereznus.es> (raw)
In-Reply-To: <20250320-banana-chowchow-of-acceptance-62685c@krzk-bin>
El 20/03/2025 a las 9:55, Krzysztof Kozlowski escribió:
> On Wed, Mar 19, 2025 at 11:40:27PM +0100, Sergio Pérez wrote:
>> El 19/03/2025 a las 20:15, Krzysztof Kozlowski escribió:
>>> On 19/03/2025 17:11, Sergio Perez wrote:
>>>> struct bh1750_chip_info {
>>>> @@ -248,6 +253,24 @@ static int bh1750_probe(struct i2c_client *client)
>>>> data->client = client;
>>>> data->chip_info = &bh1750_chip_info_tbl[id->driver_data];
>>>> + /* Get reset GPIO from device tree */
>>>> + data->reset_gpio = devm_gpiod_get_optional(&client->dev,
>>>> + "reset", GPIOD_OUT_HIGH);
>>> Mess indentation.
>> Regarding indentation, I'll fix it in the next version to ensure consistency
>> with kernel style guidelines.
>>>> + if (IS_ERR(data->reset_gpio))
>>>> + return dev_err_probe(&client->dev, PTR_ERR(data->reset_gpio),
>>>> + "Failed to get reset GPIO\n");
>>>> +
>>>> + /* Perform hardware reset if GPIO is provided */
>>>> + if (data->reset_gpio) {
>>>> + /* Perform reset sequence: low-high */
>>>> + gpiod_set_value_cansleep(data->reset_gpio, 0);
>>>> + fsleep(BH1750_RESET_DELAY_US);
>>>> + gpiod_set_value_cansleep(data->reset_gpio, 1);
>>> So you keep device at reset state. This wasn't tested or your DTS is wrong.
>> The BH1750 reset pin (DVI) is "active low", meaning the device is in reset
>> state when the pin is at 0V. When the pin is at high level, the device exits
>> reset and operates normally.
> I read this after responding to your binding change, so this confirms
> what I saw in datasheet and is contradictory to your response to the
> binding.
>
> First, your binding should say which pin it is in the description.
>
> Second, it is active low...
That's right, it's commented on in the binding patch.
>> According to the datasheet (can provide upon request), the reset sequence
>> should:
>> 1. Pull the reset pin low to enter reset state
>> 2. Wait (minimum 1µs, I use 10ms to be safe)
>> 3. Pull the reset pin high to exit reset state
>> 4. Leave the pin high for normal operation
>>
>> My implementation follows this exact sequence, so the device is NOT left in
>> reset state. The initialization code:
>> 1. Sets the pin to 0 (device enters reset)
> I don't think you get how GPIOs work. 0 means logical zero, so GPIO is
> not active, not the actual signal level.
True, it's commented on in the binding patch.
>
>> 2. Waits
>> 3. Sets the pin to 1 (device exits reset)
>> 4. Leaves it at 1, which is the normal operating state
>>
>> I've modified the YAML description to remove "active low" to avoid
>> confusion, as the implementation is correct for this hardware.
> You have wrong implementation.
>
> Best regards,
> Krzysztof
>
next prev parent reply other threads:[~2025-03-20 14:39 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 16:11 [PATCH v3 1/2] dt-bindings: iio: light: bh1750: Add reset-gpios property Sergio Perez
2025-03-19 16:11 ` [PATCH v3 2/2] iio: light: bh1750: Add hardware reset support via GPIO Sergio Perez
2025-03-19 19:15 ` Krzysztof Kozlowski
2025-03-19 22:40 ` Sergio Pérez
2025-03-20 8:55 ` Krzysztof Kozlowski
2025-03-20 14:38 ` Sergio Pérez [this message]
2025-03-19 19:12 ` [PATCH v3 1/2] dt-bindings: iio: light: bh1750: Add reset-gpios property Krzysztof Kozlowski
2025-03-19 22:38 ` Sergio Pérez
2025-03-20 8:52 ` Krzysztof Kozlowski
2025-03-20 14:32 ` Sergio Pérez
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=4899e69d-5de0-45a9-896d-2cb43ca78937@pereznus.es \
--to=sergio@pereznus.es \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jic23@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
--cc=tduszyns@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox