All of lore.kernel.org
 help / color / mirror / Atom feed
From: Darren Hart <dvhart@linux.intel.com>
To: Grant Likely <grant.likely@secretlab.ca>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Alexandre Courbot <acourbot@nvidia.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Arnd Bergmann <arnd@arndb.de>
Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties
Date: Sun, 02 Nov 2014 20:49:37 -0800	[thread overview]
Message-ID: <54570961.1080004@linux.intel.com> (raw)
In-Reply-To: <20141101111143.86AC1C409FE@trevor.secretlab.ca>



On 11/1/14 4:11, Grant Likely wrote:
> On Tue, 28 Oct 2014 22:59:57 +0100
> , "Rafael J. Wysocki" <rjw@rjwysocki.net>
>  wrote:
>> On Tuesday, October 28, 2014 01:15:27 PM Mika Westerberg wrote:
>>> acpi_dev_add_driver_gpios() makes it possible to set up mapping between
>>> properties and ACPI GpioIo resources in a driver, so we can take index
>>> parameter in acpi_find_gpio() into use with _DSD device properties now.
>>>
>>> This index can be used to select a GPIO from a property with multiple
>>> GPIOs:
>>>
>>>   Package () {
>>>   	"data-gpios",
>>>   	Package () {
>>>   		\_SB.GPIO, 0, 0, 0,
>>>   		\_SB.GPIO, 1, 0, 0,
>>>   		\_SB.GPIO, 2, 0, 1,
>>>   	}
>>>   }
>>>
>>> In order to retrieve the last GPIO from a driver we can simply do:
>>>
>>>   desc = devm_gpiod_get_index(dev, "data", 2);
>>>
>>> and so on.
>>>
>>> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>>
>> Cool. :-)
>>
>> Any objections anyone?
> 
> Actually, I do. Not in the idea, but in the implementation. The way this gets encoded:
> 
> 	Package () {
> 		\_SB.GPIO, 0, 0, 0,
> 		\_SB.GPIO, 1, 0, 0,
> 		\_SB.GPIO, 2, 0, 1,
> 	}
> 
> Means that decoding each GPIO tuple requires the length of a tuple to be
> fixed, or to implement a DT-like #gpio-cells. If it is fixed, then there
> is no way to expand the binding later. Can this be done in the following
> way instead?
> 
> 	Package () {
> 		Package () { \_SB.GPIO, 0, 0, 0 },
> 		Package () { \_SB.GPIO, 1, 0, 0 },
> 		Package () { \_SB.GPIO, 2, 0, 1 },
> 	}
> 
> This is one of the biggest pains in device tree. We don't have any way
> to group tuples so it requires looking up stuff across the tree to
> figure out how to parse each multi-item property.
> 
> I know that last year we talked about how bios vendors would get
> complicated properties wrong, but I think there is little risk in this
> case. If the property is encoded wrong, the driver simply won't work and
> it is unlikely to get shipped before being fixed.

This particular nesting of Packages is expressly prohibited by the
Device Properties UUID for the reasons you mention.

http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf

2.1 Data Format Definition
...
" a Package consisting entirely of Integer, String, or Reference objects
(and
specifically not containing a nested Package)."

That said, I am not fond of the many properties mixed in as a single
Package. We discussed this at some length while this was being proposed,
and this was deemed the lesser evil.

-- 
Darren Hart
Intel Open Source Technology Center

  reply	other threads:[~2014-11-03  4:50 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-28 11:15 [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties Mika Westerberg
2014-10-28 15:57 ` Darren Hart
2014-10-28 21:59 ` Rafael J. Wysocki
2014-10-29  7:41   ` Alexandre Courbot
2014-10-29  7:41     ` Alexandre Courbot
2014-10-29  8:54     ` Mika Westerberg
2014-10-29 14:42       ` Rafael J. Wysocki
2014-10-29 14:51         ` Rafael J. Wysocki
2014-10-29 14:44           ` Mika Westerberg
2014-11-01 11:11   ` Grant Likely
2014-11-03  4:49     ` Darren Hart [this message]
2014-11-03 15:25       ` Rafael J. Wysocki
2014-11-03 21:52         ` Rafael J. Wysocki
2014-11-04 14:48           ` Grant Likely
2014-11-04 16:06             ` Rafael J. Wysocki
2014-11-04 22:54               ` Rafael J. Wysocki
2014-11-04 22:58                 ` Grant Likely
2014-11-04 23:42                 ` Darren Hart
2014-11-05 20:59                   ` Rafael J. Wysocki
2014-11-05 20:53                     ` Darren Hart
2014-11-05  9:16                 ` Mika Westerberg
2014-11-05 21:00                   ` Rafael J. Wysocki

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=54570961.1080004@linux.intel.com \
    --to=dvhart@linux.intel.com \
    --cc=acourbot@nvidia.com \
    --cc=arnd@arndb.de \
    --cc=grant.likely@secretlab.ca \
    --cc=linus.walleij@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=rjw@rjwysocki.net \
    /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.