From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Hans de Goede <hdegoede@redhat.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, 03 Mar 2017 16:57:56 +0200 [thread overview]
Message-ID: <1488553076.20145.79.camel@linux.intel.com> (raw)
In-Reply-To: <e4dfd35b-cf7f-93bb-fb88-fb8d412d922a@redhat.com>
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);
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);
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).
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.
> > > 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.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
next prev parent reply other threads:[~2017-03-03 15:03 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 [this message]
2017-03-03 15:19 ` Hans de Goede
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=1488553076.20145.79.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=dmitry.torokhov@gmail.com \
--cc=hdegoede@redhat.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).