From: Laxman Dewangan <ldewangan@nvidia.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: "linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>
Subject: Re: Query about Open drain flag with active LOW
Date: Tue, 28 Mar 2017 14:33:46 +0530 [thread overview]
Message-ID: <58DA26F2.6040108@nvidia.com> (raw)
In-Reply-To: <CACRpkdYVdUyueSFsSi5SG6nfRn_s4tqfhHSkK3jhQov+9y2koA@mail.gmail.com>
On Tuesday 28 March 2017 02:36 PM, Linus Walleij wrote:
> On Mon, Mar 27, 2017 at 5:21 PM, Laxman Dewangan <ldewangan@nvidia.com> wrote:
>
>> I have the schematics, where I need to set it as
>> Pin state HIGH (by setting gpio-input mode) to enable the circuit.
>> Pin state LOW (by setting gpio-output mode with value to 0) to disable the
>> circuit.
> (...)
>> With this, I think the GPIO is active HIGH and open drain type.
>> If I set the active LOW from DT then I can not set pin to logical 1 using
>> the API gpiod_set_value() with “1”.
>> As this invert before calling _gpiod_set_raw_value() and so the value = 0
>> and it set the pin in the gpio mode output-Low.
>>
>> Shouldn'’t open drain pin are active HIGH?
> Sorry I do not understand, have you solved it?
I wanted to say that open drain flag should be with ACTIVE_HIGH |
SINGLE_ENDED which is in inverted as of now.
> Else can you try to break down the problem, do you mean there is a bug
> in inverted handling for open drain lines in gpiolib?
>
Yes, I am suspecting the bug here with combination of ACTIVE state and
SINGLE_ENDED flag. The logic to get OPEN DRAIN flag should be in
inverted form.
Else we need to decouple the ACTIVE state with SINGLE_ENDED flag to get
Open drain or open source.
If I want to say logical "1" for the open drain, it is setting pin in
drive-0 mode. Actually, it should be in input mode so that pin state
become HIGH.
In function of_find_gpio(), it is as follows:
if (of_flags & OF_GPIO_SINGLE_ENDED) {
if (of_flags & OF_GPIO_ACTIVE_LOW)
*flags |= GPIO_OPEN_DRAIN;
else
*flags |= GPIO_OPEN_SOURCE;
}
I think it should be
if (of_flags & OF_GPIO_SINGLE_ENDED) {
if (of_flags & OF_GPIO_ACTIVE_LOW)
*flags |= GPIO_OPEN_SOURCE;
else
*flags |= GPIO_OPEN_DRAIN;
}
Similar change is needed in the dtbinding gpio header also to invert the
ACTIVE state with open drain/source.
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
next prev parent reply other threads:[~2017-03-28 9:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-27 15:21 Query about Open drain flag with active LOW Laxman Dewangan
2017-03-28 9:06 ` Linus Walleij
2017-03-28 9:03 ` Laxman Dewangan [this message]
2017-03-28 13:08 ` Linus Walleij
2017-03-28 13:58 ` Laxman Dewangan
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=58DA26F2.6040108@nvidia.com \
--to=ldewangan@nvidia.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
/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.