From: Hans de Goede <hdegoede@redhat.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
"russianneuromancer @ ya . ru" <russianneuromancer@ya.ru>,
Gregor Riepl <onitake@gmail.com>,
linux-input@vger.kernel.org,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH v2] Input: silead - Do not try to directly access the GPIO when using ACPI pm
Date: Fri, 3 Mar 2017 16:19:10 +0100 [thread overview]
Message-ID: <3be3837a-a57c-e6bf-538b-e135c1b37ff0@redhat.com> (raw)
In-Reply-To: <1488553076.20145.79.camel@linux.intel.com>
Hi,
On 03-03-17 15:57, Andy Shevchenko wrote:
> On Thu, 2017-03-02 at 16:34 +0100, Hans de Goede wrote:
>> Hi,
>>
>> On 02-03-17 12:38, Andy Shevchenko wrote:
>>> On Thu, 2017-02-23 at 15:19 +0100, Hans de Goede wrote:
>>>> On 22-02-17 16:52, Andy Shevchenko wrote:
>>>>> On Sun, 2017-02-12 at 11:40 +0100, Hans de Goede wrote:
>>>>>> On 10-02-17 12:52, Hans de Goede wrote:
>>>>>>> On 02-02-17 14:12, Mika Westerberg wrote:
>>>>>>>> On Thu, Feb 02, 2017 at 01:50:58PM +0100, Hans de Goede
>>>>>>>> wrote:
>
>>> Now, since we have _DSD and specification for mapping GPIO resources
>>> to
>>> names (connection IDs!) we should *not* allow drivers to put
>>> anything
>>> they want there.
>>>
>>> It means that any driver that is supposed to be used on ACPI-based
>>> platfroms with *or* without _DSD should provide a mapping table for
>>> the
>>> latter case.
>>>
>>> Other solution is to extend GPIO API to have almost all same set of
>>> calls with an additional field "label" as it was recently done for
>>> fwnode_get_gpiod_child() (whatever its name nowadays). I don't think
>>> this is best (though allows less intrusion to the existing drivers)
>>> way
>>> because (see above) an heavy abuse in the kernel of connection ID
>>> meaning for ACPI-enabled platforms.
>>
>> Hmm, I actually like the label vs connection-id distinction there
>> are many ACPI device "bindings" where we simply get an index into
>> the ACPI resource table for the device as only way to get the right
>> gpio.
>
> Yeah, and we will be screwed if the index matrix is changed per device
> ID / board.
>
>> Forcing the addition of a connection-id table to all those
>> drivers not only is needless churn / boilerplate, but also gives the
>> false impression that we actually have more info (a valid connection
>> id) then we really have.
>
> Again, we have no idea what exactly we get if we call
> gpiod_get_index(..., NULL, index); in case of ACPI. It would work *if
> and only if* we assume that all versions of the same device on all
> possible platforms will have *very same* mapping.
>
> I have heard it's already not true. Check the commit 89ab37b489d1
> ("Bluetooth: hci_bcm: Add support for BCM2E95 and BCM2E96").
>
>> So my vote goes to adding a label field, and passing NULL as
>> connection id in these drivers, rather then adding a fake connection-
>> id
>> table.
>
> There are also few concerns:
>
> 1) it would be often passed the same string as connection ID and label
> (okay, meaning we need like two functions per each in current API,
> something like gpiod_get_*label(dev, con_id, ..., label);
> and gpiod_get_label_nocid(dev, ..., label); besides the former ones);
I would think the _label variants would not allow a connection_id at all.
> 2) using labels different to connection ID sounds not okay for debugging
> purposes (I dunno why we have this done for fwnode_get_gpiod_child() in
> the first place);
Right, which is why the _label variants would not allow a connection_id
at all using an _label variants implies connection_id == NULL.
And using a variant with connection_id argument implies label
= connection_id.
> 3) additionally different labels will not play good in _DSD enabled
> case, since we must use connection ID there (we believe firmware until
> otherwise is proven).
Again, gpios would have a connection_id OR a label, so in
_DSD case only a connection_id.
> 4) if some firmwares have different indexes for the same device we will
> need to have device ID (PCI ID, ... or alike) to _CRS index mapping
> anyway in the code.
This problem will exist independent of which solution we choose.
>>>> TL;DR: this approach seems like a lot of extra work / churn and
>>>> boilerplate code in drivers for no gain.
>>>
>>> Yes, because of current *abuse* of connection ID field in ACPI case.
>>>
>>>> Can't we please just simply keep the fallback as-is when a driver
>>>> calls gpiod_get_index rather then gpiod_get ? That seems like a
>>>> lot simpler and cleaner solution to me.
>>>
>>> No. We can't.
>>>
>>> This is explained by documentation addon in:
>>>
>>> https://bitbucket.org/andy-shev/linux/commits/27f4d31dcf7997613dfb0d
>>> b1df
>>> 4182673826646c
>>>
>>> (with flag removed approach)
>>> https://bitbucket.org/andy-shev/linux/commits/ab99ade0bab99983f63bf1
>>> 7093
>>> dacccd30e349cc
>>>
>>> and in commit message
>>>
>>> https://bitbucket.org/andy-shev/linux/commits/3a50bf0c17df18df6758a3
>>> a139
>>> 0075613daee56f
>>>
>>>> *) Or maybe even a flag that it is the index which should be
>>>> looked at
>>>> and not the name, but that may break some existing users
>>>
>>> Mika, Linus, I would really appreciate your input to the topic:
>>> opinions, critique, ideas, etc.
>>
>> So my opinion on this is that I prefer the add a label field idea over
>> the everything must have either a connection-id in ACPI or a
>> connection-id-table in the driver.
>
> As a ultimate workaround it would work, in long-term prospective it's
> not a solution.
I believe that this will work fine even in the long run, better then
forcible adding fake _DSD tables everywhere, see above.
Regards,
Hans
next prev parent reply other threads:[~2017-03-03 15:19 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-22 20:00 [PATCH v2] Input: silead - Do not try to directly access the GPIO when using ACPI pm Hans de Goede
2017-01-22 22:20 ` Dmitry Torokhov
2017-01-23 10:05 ` Hans de Goede
2017-02-01 17:42 ` Dmitry Torokhov
2017-02-02 10:41 ` Mika Westerberg
2017-02-02 11:57 ` Hans de Goede
2017-02-02 12:10 ` Mika Westerberg
2017-02-02 12:32 ` Mika Westerberg
2017-02-02 12:50 ` Hans de Goede
2017-02-02 13:12 ` Mika Westerberg
2017-02-02 13:27 ` Hans de Goede
2017-02-02 13:44 ` Mika Westerberg
2017-02-02 13:55 ` Hans de Goede
2017-02-02 14:18 ` Mika Westerberg
2017-02-02 14:24 ` Gregor Riepl
2017-03-14 10:21 ` Linus Walleij
2017-03-14 11:07 ` Hans de Goede
2017-03-14 13:09 ` Andy Shevchenko
2017-03-14 18:12 ` Gregor Riepl
2017-02-10 11:52 ` Hans de Goede
2017-02-10 13:02 ` Mika Westerberg
2017-02-12 10:40 ` Hans de Goede
2017-02-13 11:00 ` Andy Shevchenko
2017-02-22 15:52 ` Andy Shevchenko
2017-02-23 14:19 ` Hans de Goede
2017-03-02 11:38 ` Andy Shevchenko
2017-03-02 15:34 ` Hans de Goede
2017-03-03 14:57 ` Andy Shevchenko
2017-03-03 15:19 ` Hans de Goede [this message]
2017-03-03 15:23 ` Andy Shevchenko
2017-03-06 9:31 ` Hans de Goede
2017-03-07 11:51 ` Andy Shevchenko
2017-03-07 13:55 ` Hans de Goede
2017-03-08 9:08 ` Hans de Goede
2017-03-08 10:30 ` Andy Shevchenko
2017-03-08 11:27 ` Hans de Goede
2017-03-08 11:46 ` Andy Shevchenko
2017-03-08 17:01 ` Andy Shevchenko
2017-03-08 17:08 ` Hans de Goede
2017-03-08 17:14 ` Andy Shevchenko
2017-03-08 17:05 ` Hans de Goede
2017-03-08 18:25 ` Andy Shevchenko
2017-03-09 13:57 ` Hans de Goede
2017-03-09 14:03 ` Andy Shevchenko
2017-03-09 14:45 ` Hans de Goede
2017-03-09 15:03 ` Andy Shevchenko
2017-03-09 15:40 ` Hans de Goede
2017-03-09 18:48 ` Hans de Goede
2017-03-09 21:32 ` Dmitry Torokhov
2017-03-10 10:35 ` Mika Westerberg
2017-03-10 11:33 ` Andy Shevchenko
2017-03-10 11:58 ` Andy Shevchenko
2017-03-10 20:49 ` Hans de Goede
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=3be3837a-a57c-e6bf-538b-e135c1b37ff0@redhat.com \
--to=hdegoede@redhat.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-input@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=onitake@gmail.com \
--cc=russianneuromancer@ya.ru \
/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).