Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Darren Hart


On 11/5/14 12:59, Rafael J. Wysocki wrote:
> On Tuesday, November 04, 2014 03:42:38 PM Darren Hart wrote:
>>
>> On 11/4/14 14:54, Rafael J. Wysocki wrote:
>>
>>> From: Rafael J. Wysocki 
>>> Subject: ACPI / property: Drop size_prop from 
>>> acpi_dev_get_property_reference()
>>>
>>> The size_prop argument of the recently added function
>>> acpi_dev_get_property_reference() is not used by the only current
>>> caller of that function and is very unlikely to be used at any time
>>> going forward.
>>>
>>> Namely, for a property whose value is a list of items each containing
>>> a references to a device object possibly accompanied by some integers,
>>> the number of items in the list can always be computed as the number
>>> of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
>>> Thus it should never be necessary to provide an additional "cells"
>>> property with a value equal to the number of items in that list.
>>
>> In this case, do we never expect a property to contain more than one
>> ACPI_TYPE_LOCAL_REFERENCE?
>>
>> Package () { "foobar",
>>   Package () {
>>   "PCI0.FOO", "PCI0.BAR", 0, 1, 0,
>>   "PCI0.FOO", "PCI0.BAR2", 0, 1, 1
>>   }
>> }
>>
>> This seems like it could be useful for connecting various types of
>> devices together, but I confess not to have a specific exmaple in mind.
>> It does concern me to limit the data format in this way.
> 
> We don't support this even with size_prop, so it doesn't seem to be relevant 
> here.
> 
> Now, if we were to support this, I'd rather not use 
> acpi_dev_get_property_reference()
> for that, but add a new function specifically for it.  Moreover, I would 
> extend the
> format definition then so that we could do
> 
> Package () {
>   "foobar", Package () {
>   Package () {"PCI0.FOO", "PCI0.BAR", 0, 1, 0},
>   Package () {"PCI0.FOO", "PCI0.BAR2", 0, 1, 1}
>   }
> }
> 
> in which case adding a special "size" property could be avoided.
> 
> That said, I have no idea why it might be necessary.  One reference in a 
> property
> value means that we're connecting the current node (the owner of the _DSD
> containing that property) with some other node in the namespace.  Two 
> references
> in there would mean that the current node is to be connected with *two* other
> nodes in the namespace at the same time.  That raises some questions that I'd
> rather not consider in detail here, unless you insist. ;-)
> 
>> I suppose should such a case become necessary, we can deal with the
>> issue then - and still avoid having a potential abuse point in the API
>> from the start.
> 
> What we have today is sufficient for all of the cases we've considered so far.
> If we find a case where it is not sufficient, we'll need to consider extending
> the data format as well as the API.
> 
> Rafael

Agreed on all points. Thanks Rafael.

-- 
Darren Hart
Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Rafael J. Wysocki
On Tuesday, November 04, 2014 03:42:38 PM Darren Hart wrote:
> 
> On 11/4/14 14:54, Rafael J. Wysocki wrote:
> 
> > From: Rafael J. Wysocki 
> > Subject: ACPI / property: Drop size_prop from 
> > acpi_dev_get_property_reference()
> > 
> > The size_prop argument of the recently added function
> > acpi_dev_get_property_reference() is not used by the only current
> > caller of that function and is very unlikely to be used at any time
> > going forward.
> > 
> > Namely, for a property whose value is a list of items each containing
> > a references to a device object possibly accompanied by some integers,
> > the number of items in the list can always be computed as the number
> > of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
> > Thus it should never be necessary to provide an additional "cells"
> > property with a value equal to the number of items in that list.
> 
> In this case, do we never expect a property to contain more than one
> ACPI_TYPE_LOCAL_REFERENCE?
> 
> Package () { "foobar",
>   Package () {
>   "PCI0.FOO", "PCI0.BAR", 0, 1, 0,
>   "PCI0.FOO", "PCI0.BAR2", 0, 1, 1
>   }
> }
> 
> This seems like it could be useful for connecting various types of
> devices together, but I confess not to have a specific exmaple in mind.
> It does concern me to limit the data format in this way.

We don't support this even with size_prop, so it doesn't seem to be relevant 
here.

Now, if we were to support this, I'd rather not use 
acpi_dev_get_property_reference()
for that, but add a new function specifically for it.  Moreover, I would extend 
the
format definition then so that we could do

Package () {
"foobar", Package () {
Package () {"PCI0.FOO", "PCI0.BAR", 0, 1, 0},
Package () {"PCI0.FOO", "PCI0.BAR2", 0, 1, 1}
}
}

in which case adding a special "size" property could be avoided.

That said, I have no idea why it might be necessary.  One reference in a 
property
value means that we're connecting the current node (the owner of the _DSD
containing that property) with some other node in the namespace.  Two references
in there would mean that the current node is to be connected with *two* other
nodes in the namespace at the same time.  That raises some questions that I'd
rather not consider in detail here, unless you insist. ;-)

> I suppose should such a case become necessary, we can deal with the
> issue then - and still avoid having a potential abuse point in the API
> from the start.

What we have today is sufficient for all of the cases we've considered so far.
If we find a case where it is not sufficient, we'll need to consider extending
the data format as well as the API.

Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Rafael J. Wysocki
On Wednesday, November 05, 2014 11:16:22 AM Mika Westerberg wrote:
> On Tue, Nov 04, 2014 at 11:54:41PM +0100, Rafael J. Wysocki wrote:
> > From: Rafael J. Wysocki 
> > Subject: ACPI / property: Drop size_prop from 
> > acpi_dev_get_property_reference()
> > 
> > The size_prop argument of the recently added function
> > acpi_dev_get_property_reference() is not used by the only current
> > caller of that function and is very unlikely to be used at any time
> > going forward.
> > 
> > Namely, for a property whose value is a list of items each containing
> > a references to a device object possibly accompanied by some integers,
> > the number of items in the list can always be computed as the number
> > of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
> > Thus it should never be necessary to provide an additional "cells"
> > property with a value equal to the number of items in that list.
> > 
> > For this reason, drop the size_prop argument from
> > acpi_dev_get_property_reference() and update its caller accordingly.
> > 
> > Link: http://marc.info/?l=linux-kernel=141511255610556=2
> > Suggested-by: Grant Likely 
> > Signed-off-by: Rafael J. Wysocki 
> 
> Just pulled your latest bleeding-edge (including this patch) and it
> still works fine with both Minnowboards. Feel free to add my:
> 
> Acked-by: Mika Westerberg 
> Tested-by: Mika Westerberg 

Thanks!

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Darren Hart


On 11/4/14 14:54, Rafael J. Wysocki wrote:

> From: Rafael J. Wysocki 
> Subject: ACPI / property: Drop size_prop from 
> acpi_dev_get_property_reference()
> 
> The size_prop argument of the recently added function
> acpi_dev_get_property_reference() is not used by the only current
> caller of that function and is very unlikely to be used at any time
> going forward.
> 
> Namely, for a property whose value is a list of items each containing
> a references to a device object possibly accompanied by some integers,
> the number of items in the list can always be computed as the number
> of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
> Thus it should never be necessary to provide an additional "cells"
> property with a value equal to the number of items in that list.

In this case, do we never expect a property to contain more than one
ACPI_TYPE_LOCAL_REFERENCE?

Package () { "foobar",
  Package () {
  "PCI0.FOO", "PCI0.BAR", 0, 1, 0,
  "PCI0.FOO", "PCI0.BAR2", 0, 1, 1
  }
}

This seems like it could be useful for connecting various types of
devices together, but I confess not to have a specific exmaple in mind.
It does concern me to limit the data format in this way.

I suppose should such a case become necessary, we can deal with the
issue then - and still avoid having a potential abuse point in the API
from the start.

-- 
Darren Hart
Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Mika Westerberg
On Tue, Nov 04, 2014 at 11:54:41PM +0100, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki 
> Subject: ACPI / property: Drop size_prop from 
> acpi_dev_get_property_reference()
> 
> The size_prop argument of the recently added function
> acpi_dev_get_property_reference() is not used by the only current
> caller of that function and is very unlikely to be used at any time
> going forward.
> 
> Namely, for a property whose value is a list of items each containing
> a references to a device object possibly accompanied by some integers,
> the number of items in the list can always be computed as the number
> of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
> Thus it should never be necessary to provide an additional "cells"
> property with a value equal to the number of items in that list.
> 
> For this reason, drop the size_prop argument from
> acpi_dev_get_property_reference() and update its caller accordingly.
> 
> Link: http://marc.info/?l=linux-kernel=141511255610556=2
> Suggested-by: Grant Likely 
> Signed-off-by: Rafael J. Wysocki 

Just pulled your latest bleeding-edge (including this patch) and it
still works fine with both Minnowboards. Feel free to add my:

Acked-by: Mika Westerberg 
Tested-by: Mika Westerberg 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Mika Westerberg
On Tue, Nov 04, 2014 at 11:54:41PM +0100, Rafael J. Wysocki wrote:
 From: Rafael J. Wysocki rafael.j.wyso...@intel.com
 Subject: ACPI / property: Drop size_prop from 
 acpi_dev_get_property_reference()
 
 The size_prop argument of the recently added function
 acpi_dev_get_property_reference() is not used by the only current
 caller of that function and is very unlikely to be used at any time
 going forward.
 
 Namely, for a property whose value is a list of items each containing
 a references to a device object possibly accompanied by some integers,
 the number of items in the list can always be computed as the number
 of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
 Thus it should never be necessary to provide an additional cells
 property with a value equal to the number of items in that list.
 
 For this reason, drop the size_prop argument from
 acpi_dev_get_property_reference() and update its caller accordingly.
 
 Link: http://marc.info/?l=linux-kernelm=141511255610556w=2
 Suggested-by: Grant Likely grant.lik...@linaro.org
 Signed-off-by: Rafael J. Wysocki rafael.j.wyso...@intel.com

Just pulled your latest bleeding-edge (including this patch) and it
still works fine with both Minnowboards. Feel free to add my:

Acked-by: Mika Westerberg mika.westerb...@linux.intel.com
Tested-by: Mika Westerberg mika.westerb...@linux.intel.com
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Darren Hart


On 11/4/14 14:54, Rafael J. Wysocki wrote:

 From: Rafael J. Wysocki rafael.j.wyso...@intel.com
 Subject: ACPI / property: Drop size_prop from 
 acpi_dev_get_property_reference()
 
 The size_prop argument of the recently added function
 acpi_dev_get_property_reference() is not used by the only current
 caller of that function and is very unlikely to be used at any time
 going forward.
 
 Namely, for a property whose value is a list of items each containing
 a references to a device object possibly accompanied by some integers,
 the number of items in the list can always be computed as the number
 of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
 Thus it should never be necessary to provide an additional cells
 property with a value equal to the number of items in that list.

In this case, do we never expect a property to contain more than one
ACPI_TYPE_LOCAL_REFERENCE?

Package () { foobar,
  Package () {
  PCI0.FOO, PCI0.BAR, 0, 1, 0,
  PCI0.FOO, PCI0.BAR2, 0, 1, 1
  }
}

This seems like it could be useful for connecting various types of
devices together, but I confess not to have a specific exmaple in mind.
It does concern me to limit the data format in this way.

I suppose should such a case become necessary, we can deal with the
issue then - and still avoid having a potential abuse point in the API
from the start.

-- 
Darren Hart
Intel Open Source Technology Center
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Rafael J. Wysocki
On Wednesday, November 05, 2014 11:16:22 AM Mika Westerberg wrote:
 On Tue, Nov 04, 2014 at 11:54:41PM +0100, Rafael J. Wysocki wrote:
  From: Rafael J. Wysocki rafael.j.wyso...@intel.com
  Subject: ACPI / property: Drop size_prop from 
  acpi_dev_get_property_reference()
  
  The size_prop argument of the recently added function
  acpi_dev_get_property_reference() is not used by the only current
  caller of that function and is very unlikely to be used at any time
  going forward.
  
  Namely, for a property whose value is a list of items each containing
  a references to a device object possibly accompanied by some integers,
  the number of items in the list can always be computed as the number
  of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
  Thus it should never be necessary to provide an additional cells
  property with a value equal to the number of items in that list.
  
  For this reason, drop the size_prop argument from
  acpi_dev_get_property_reference() and update its caller accordingly.
  
  Link: http://marc.info/?l=linux-kernelm=141511255610556w=2
  Suggested-by: Grant Likely grant.lik...@linaro.org
  Signed-off-by: Rafael J. Wysocki rafael.j.wyso...@intel.com
 
 Just pulled your latest bleeding-edge (including this patch) and it
 still works fine with both Minnowboards. Feel free to add my:
 
 Acked-by: Mika Westerberg mika.westerb...@linux.intel.com
 Tested-by: Mika Westerberg mika.westerb...@linux.intel.com

Thanks!

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Rafael J. Wysocki
On Tuesday, November 04, 2014 03:42:38 PM Darren Hart wrote:
 
 On 11/4/14 14:54, Rafael J. Wysocki wrote:
 
  From: Rafael J. Wysocki rafael.j.wyso...@intel.com
  Subject: ACPI / property: Drop size_prop from 
  acpi_dev_get_property_reference()
  
  The size_prop argument of the recently added function
  acpi_dev_get_property_reference() is not used by the only current
  caller of that function and is very unlikely to be used at any time
  going forward.
  
  Namely, for a property whose value is a list of items each containing
  a references to a device object possibly accompanied by some integers,
  the number of items in the list can always be computed as the number
  of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
  Thus it should never be necessary to provide an additional cells
  property with a value equal to the number of items in that list.
 
 In this case, do we never expect a property to contain more than one
 ACPI_TYPE_LOCAL_REFERENCE?
 
 Package () { foobar,
   Package () {
   PCI0.FOO, PCI0.BAR, 0, 1, 0,
   PCI0.FOO, PCI0.BAR2, 0, 1, 1
   }
 }
 
 This seems like it could be useful for connecting various types of
 devices together, but I confess not to have a specific exmaple in mind.
 It does concern me to limit the data format in this way.

We don't support this even with size_prop, so it doesn't seem to be relevant 
here.

Now, if we were to support this, I'd rather not use 
acpi_dev_get_property_reference()
for that, but add a new function specifically for it.  Moreover, I would extend 
the
format definition then so that we could do

Package () {
foobar, Package () {
Package () {PCI0.FOO, PCI0.BAR, 0, 1, 0},
Package () {PCI0.FOO, PCI0.BAR2, 0, 1, 1}
}
}

in which case adding a special size property could be avoided.

That said, I have no idea why it might be necessary.  One reference in a 
property
value means that we're connecting the current node (the owner of the _DSD
containing that property) with some other node in the namespace.  Two references
in there would mean that the current node is to be connected with *two* other
nodes in the namespace at the same time.  That raises some questions that I'd
rather not consider in detail here, unless you insist. ;-)

 I suppose should such a case become necessary, we can deal with the
 issue then - and still avoid having a potential abuse point in the API
 from the start.

What we have today is sufficient for all of the cases we've considered so far.
If we find a case where it is not sufficient, we'll need to consider extending
the data format as well as the API.

Rafael

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-05 Thread Darren Hart


On 11/5/14 12:59, Rafael J. Wysocki wrote:
 On Tuesday, November 04, 2014 03:42:38 PM Darren Hart wrote:

 On 11/4/14 14:54, Rafael J. Wysocki wrote:

 From: Rafael J. Wysocki rafael.j.wyso...@intel.com
 Subject: ACPI / property: Drop size_prop from 
 acpi_dev_get_property_reference()

 The size_prop argument of the recently added function
 acpi_dev_get_property_reference() is not used by the only current
 caller of that function and is very unlikely to be used at any time
 going forward.

 Namely, for a property whose value is a list of items each containing
 a references to a device object possibly accompanied by some integers,
 the number of items in the list can always be computed as the number
 of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package.
 Thus it should never be necessary to provide an additional cells
 property with a value equal to the number of items in that list.

 In this case, do we never expect a property to contain more than one
 ACPI_TYPE_LOCAL_REFERENCE?

 Package () { foobar,
   Package () {
   PCI0.FOO, PCI0.BAR, 0, 1, 0,
   PCI0.FOO, PCI0.BAR2, 0, 1, 1
   }
 }

 This seems like it could be useful for connecting various types of
 devices together, but I confess not to have a specific exmaple in mind.
 It does concern me to limit the data format in this way.
 
 We don't support this even with size_prop, so it doesn't seem to be relevant 
 here.
 
 Now, if we were to support this, I'd rather not use 
 acpi_dev_get_property_reference()
 for that, but add a new function specifically for it.  Moreover, I would 
 extend the
 format definition then so that we could do
 
 Package () {
   foobar, Package () {
   Package () {PCI0.FOO, PCI0.BAR, 0, 1, 0},
   Package () {PCI0.FOO, PCI0.BAR2, 0, 1, 1}
   }
 }
 
 in which case adding a special size property could be avoided.
 
 That said, I have no idea why it might be necessary.  One reference in a 
 property
 value means that we're connecting the current node (the owner of the _DSD
 containing that property) with some other node in the namespace.  Two 
 references
 in there would mean that the current node is to be connected with *two* other
 nodes in the namespace at the same time.  That raises some questions that I'd
 rather not consider in detail here, unless you insist. ;-)
 
 I suppose should such a case become necessary, we can deal with the
 issue then - and still avoid having a potential abuse point in the API
 from the start.
 
 What we have today is sufficient for all of the cases we've considered so far.
 If we find a case where it is not sufficient, we'll need to consider extending
 the data format as well as the API.
 
 Rafael

Agreed on all points. Thanks Rafael.

-- 
Darren Hart
Intel Open Source Technology Center
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Grant Likely
On Tue, Nov 4, 2014 at 10:54 PM, Rafael J. Wysocki  wrote:
> On Tuesday, November 04, 2014 05:06:40 PM Rafael J. Wysocki wrote:
>> On Tuesday, November 04, 2014 02:48:40 PM Grant Likely wrote:
>> > On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki  
>> > wrote:
>> > > On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
>> > >> On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
>> > >> >
>> > >> > On 11/1/14 4:11, Grant Likely wrote:
>> > >> > > On Tue, 28 Oct 2014 22:59:57 +0100
>> > >> > > , "Rafael J. Wysocki" 
>> > >> > >  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 
>> > >> > >>
>> > >> > >> 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
>> > >>
>> > >> Also we don't use properties where single name is assigned to multiple 
>> > >> GPIOs
>> > >> anywhere in the current device-properties patchset, so this is not 
>> > >> relevant at
>> > >> the moment.
>> > >>
>> > >> Moreover, even if we were to use them, we would need to ensure that 
>> > >> this:
>> > >>
>> > >>   Package () {
>> > >>   \_SB.GPIO, 0, 0, 0
>> > >>   }
>> > >>
>> > >> was equivalent to
>> > >>
>> > >>   Package () {
>> > >>   Package () { \_SB.GPIO, 0, 0, 0 }
>> > >>   }
>> > >>
>> > >> This is not impossible to do and I suppose we could even explain that 
>> > >> in the
>> > >> implementation guide document in a sensible way, but that would require 
>> > >> the
>> > >> document linked above to be changed first and *then* we can think about 
>> > >> writing
>> > >> kernel code to it.  Not the other way around, please.
>> > >>
>> > >> So Grant, do you want us to proceed with that?
>> > >
>> > > Before you reply, one more observation that seems to be relevant.
>> > >
>> > > In ACPI, both this:
>> > >
>> > > Package () {
>> > > \_SB.GPIO, 0, 0, 0,
>> > > \_SB.GPIO, 1, 0, 0,
>> > > \_SB.GPIO, 2, 0, 1,
>> > > }
>> > >
>> > > and this:
>> > >
>> > > Package () {
>> > > Package () { \_SB.GPIO, 0, 0, 0 },
>> > > Package () { \_SB.GPIO, 1, 0, 0 },
>> > > Package () { \_SB.GPIO, 2, 0, 1 },
>> > > }
>> > >
>> > > carry the same information, 

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Rafael J. Wysocki
On Tuesday, November 04, 2014 05:06:40 PM Rafael J. Wysocki wrote:
> On Tuesday, November 04, 2014 02:48:40 PM Grant Likely wrote:
> > On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki  
> > wrote:
> > > On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
> > >> On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
> > >> >
> > >> > On 11/1/14 4:11, Grant Likely wrote:
> > >> > > On Tue, 28 Oct 2014 22:59:57 +0100
> > >> > > , "Rafael J. Wysocki" 
> > >> > >  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 
> > >> > >>
> > >> > >> 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
> > >>
> > >> Also we don't use properties where single name is assigned to multiple 
> > >> GPIOs
> > >> anywhere in the current device-properties patchset, so this is not 
> > >> relevant at
> > >> the moment.
> > >>
> > >> Moreover, even if we were to use them, we would need to ensure that this:
> > >>
> > >>   Package () {
> > >>   \_SB.GPIO, 0, 0, 0
> > >>   }
> > >>
> > >> was equivalent to
> > >>
> > >>   Package () {
> > >>   Package () { \_SB.GPIO, 0, 0, 0 }
> > >>   }
> > >>
> > >> This is not impossible to do and I suppose we could even explain that in 
> > >> the
> > >> implementation guide document in a sensible way, but that would require 
> > >> the
> > >> document linked above to be changed first and *then* we can think about 
> > >> writing
> > >> kernel code to it.  Not the other way around, please.
> > >>
> > >> So Grant, do you want us to proceed with that?
> > >
> > > Before you reply, one more observation that seems to be relevant.
> > >
> > > In ACPI, both this:
> > >
> > > Package () {
> > > \_SB.GPIO, 0, 0, 0,
> > > \_SB.GPIO, 1, 0, 0,
> > > \_SB.GPIO, 2, 0, 1,
> > > }
> > >
> > > and this:
> > >
> > > Package () {
> > > Package () { \_SB.GPIO, 0, 0, 0 },
> > > Package () { \_SB.GPIO, 1, 0, 0 },
> > > Package () { \_SB.GPIO, 2, 0, 1 },
> > > }
> > >
> > > carry the same information, because every element of a package has a type,
> > > so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
> > > ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs 
> > > 

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Rafael J. Wysocki
On Tuesday, November 04, 2014 02:48:40 PM Grant Likely wrote:
> On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki  wrote:
> > On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
> >> On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
> >> >
> >> > On 11/1/14 4:11, Grant Likely wrote:
> >> > > On Tue, 28 Oct 2014 22:59:57 +0100
> >> > > , "Rafael J. Wysocki" 
> >> > >  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 
> >> > >>
> >> > >> 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
> >>
> >> Also we don't use properties where single name is assigned to multiple 
> >> GPIOs
> >> anywhere in the current device-properties patchset, so this is not 
> >> relevant at
> >> the moment.
> >>
> >> Moreover, even if we were to use them, we would need to ensure that this:
> >>
> >>   Package () {
> >>   \_SB.GPIO, 0, 0, 0
> >>   }
> >>
> >> was equivalent to
> >>
> >>   Package () {
> >>   Package () { \_SB.GPIO, 0, 0, 0 }
> >>   }
> >>
> >> This is not impossible to do and I suppose we could even explain that in 
> >> the
> >> implementation guide document in a sensible way, but that would require the
> >> document linked above to be changed first and *then* we can think about 
> >> writing
> >> kernel code to it.  Not the other way around, please.
> >>
> >> So Grant, do you want us to proceed with that?
> >
> > Before you reply, one more observation that seems to be relevant.
> >
> > In ACPI, both this:
> >
> > Package () {
> > \_SB.GPIO, 0, 0, 0,
> > \_SB.GPIO, 1, 0, 0,
> > \_SB.GPIO, 2, 0, 1,
> > }
> >
> > and this:
> >
> > Package () {
> > Package () { \_SB.GPIO, 0, 0, 0 },
> > Package () { \_SB.GPIO, 1, 0, 0 },
> > Package () { \_SB.GPIO, 2, 0, 1 },
> > }
> >
> > carry the same information, because every element of a package has a type,
> > so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
> > ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs 
> > represented
> > by the first package by counting the number of reference elements in it.
> > The second one has more structure which in this particular case is arguably
> > redundant.
> 
> Okay, this make sense. I'm okay with this approach, and I would
> recommend making that the only valid method for parsing in
> acpi_dev_get_property_reference(). Get rid of the 

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Grant Likely
On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki  wrote:
> On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
>> On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
>> >
>> > On 11/1/14 4:11, Grant Likely wrote:
>> > > On Tue, 28 Oct 2014 22:59:57 +0100
>> > > , "Rafael J. Wysocki" 
>> > >  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 
>> > >>
>> > >> 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
>>
>> Also we don't use properties where single name is assigned to multiple GPIOs
>> anywhere in the current device-properties patchset, so this is not relevant 
>> at
>> the moment.
>>
>> Moreover, even if we were to use them, we would need to ensure that this:
>>
>>   Package () {
>>   \_SB.GPIO, 0, 0, 0
>>   }
>>
>> was equivalent to
>>
>>   Package () {
>>   Package () { \_SB.GPIO, 0, 0, 0 }
>>   }
>>
>> This is not impossible to do and I suppose we could even explain that in the
>> implementation guide document in a sensible way, but that would require the
>> document linked above to be changed first and *then* we can think about 
>> writing
>> kernel code to it.  Not the other way around, please.
>>
>> So Grant, do you want us to proceed with that?
>
> Before you reply, one more observation that seems to be relevant.
>
> In ACPI, both this:
>
> Package () {
> \_SB.GPIO, 0, 0, 0,
> \_SB.GPIO, 1, 0, 0,
> \_SB.GPIO, 2, 0, 1,
> }
>
> and this:
>
> Package () {
> Package () { \_SB.GPIO, 0, 0, 0 },
> Package () { \_SB.GPIO, 1, 0, 0 },
> Package () { \_SB.GPIO, 2, 0, 1 },
> }
>
> carry the same information, because every element of a package has a type,
> so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
> ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs represented
> by the first package by counting the number of reference elements in it.
> The second one has more structure which in this particular case is arguably
> redundant.

Okay, this make sense. I'm okay with this approach, and I would
recommend making that the only valid method for parsing in
acpi_dev_get_property_reference(). Get rid of the *size_prop argument
so that it always behaves the same way and users aren't tempted to do
something clever.

>
> Of course, that's not the case for list properties where each item consists
> of a bunch of integers, like
>
> Package () {
> Package () { 0, 0, 0 },
> Package () { 1, 0, 0 },
> Package () { 2, 0, 1 },
> }
>
> but I'm not sure if this 

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Grant Likely
On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki r...@rjwysocki.net wrote:
 On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
 On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
 
  On 11/1/14 4:11, Grant Likely wrote:
   On Tue, 28 Oct 2014 22:59:57 +0100
   , Rafael J. Wysocki r...@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.westerb...@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

 Also we don't use properties where single name is assigned to multiple GPIOs
 anywhere in the current device-properties patchset, so this is not relevant 
 at
 the moment.

 Moreover, even if we were to use them, we would need to ensure that this:

   Package () {
   \_SB.GPIO, 0, 0, 0
   }

 was equivalent to

   Package () {
   Package () { \_SB.GPIO, 0, 0, 0 }
   }

 This is not impossible to do and I suppose we could even explain that in the
 implementation guide document in a sensible way, but that would require the
 document linked above to be changed first and *then* we can think about 
 writing
 kernel code to it.  Not the other way around, please.

 So Grant, do you want us to proceed with that?

 Before you reply, one more observation that seems to be relevant.

 In ACPI, both this:

 Package () {
 \_SB.GPIO, 0, 0, 0,
 \_SB.GPIO, 1, 0, 0,
 \_SB.GPIO, 2, 0, 1,
 }

 and this:

 Package () {
 Package () { \_SB.GPIO, 0, 0, 0 },
 Package () { \_SB.GPIO, 1, 0, 0 },
 Package () { \_SB.GPIO, 2, 0, 1 },
 }

 carry the same information, because every element of a package has a type,
 so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
 ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs represented
 by the first package by counting the number of reference elements in it.
 The second one has more structure which in this particular case is arguably
 redundant.

Okay, this make sense. I'm okay with this approach, and I would
recommend making that the only valid method for parsing in
acpi_dev_get_property_reference(). Get rid of the *size_prop argument
so that it always behaves the same way and users aren't tempted to do
something clever.


 Of course, that's not the case for list properties where each item consists
 of a bunch of integers, like

 Package () {
 Package () { 0, 0, 0 },
 Package () { 1, 0, 0 },
 Package () { 2, 0, 1 },
 }

 but I'm not sure if this is relevant at all.

Probably not. With a pure list it isn't implicitly referencing data in
another node. In the ref+args pattern the length of each tuple can
vary based on which node it references, but on a simple list the
parsing is going to be a lot simpler.

g.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel 

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Rafael J. Wysocki
On Tuesday, November 04, 2014 02:48:40 PM Grant Likely wrote:
 On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki r...@rjwysocki.net wrote:
  On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
  On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
  
   On 11/1/14 4:11, Grant Likely wrote:
On Tue, 28 Oct 2014 22:59:57 +0100
, Rafael J. Wysocki r...@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.westerb...@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
 
  Also we don't use properties where single name is assigned to multiple 
  GPIOs
  anywhere in the current device-properties patchset, so this is not 
  relevant at
  the moment.
 
  Moreover, even if we were to use them, we would need to ensure that this:
 
Package () {
\_SB.GPIO, 0, 0, 0
}
 
  was equivalent to
 
Package () {
Package () { \_SB.GPIO, 0, 0, 0 }
}
 
  This is not impossible to do and I suppose we could even explain that in 
  the
  implementation guide document in a sensible way, but that would require the
  document linked above to be changed first and *then* we can think about 
  writing
  kernel code to it.  Not the other way around, please.
 
  So Grant, do you want us to proceed with that?
 
  Before you reply, one more observation that seems to be relevant.
 
  In ACPI, both this:
 
  Package () {
  \_SB.GPIO, 0, 0, 0,
  \_SB.GPIO, 1, 0, 0,
  \_SB.GPIO, 2, 0, 1,
  }
 
  and this:
 
  Package () {
  Package () { \_SB.GPIO, 0, 0, 0 },
  Package () { \_SB.GPIO, 1, 0, 0 },
  Package () { \_SB.GPIO, 2, 0, 1 },
  }
 
  carry the same information, because every element of a package has a type,
  so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
  ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs 
  represented
  by the first package by counting the number of reference elements in it.
  The second one has more structure which in this particular case is arguably
  redundant.
 
 Okay, this make sense. I'm okay with this approach, and I would
 recommend making that the only valid method for parsing in
 acpi_dev_get_property_reference(). Get rid of the *size_prop argument
 so that it always behaves the same way and users aren't tempted to do
 something clever.

OK, I'll send a followup patch to remove the size_prop arg from
acpi_dev_get_property_reference().

  Of course, that's not the case for list properties where each item consists
  of a bunch of integers, like
 
  Package () {
  Package () { 0, 0, 0 },
  Package () { 1, 0, 0 },
  Package () { 2, 0, 1 },
  }
 
  but I'm not sure if this 

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Rafael J. Wysocki
On Tuesday, November 04, 2014 05:06:40 PM Rafael J. Wysocki wrote:
 On Tuesday, November 04, 2014 02:48:40 PM Grant Likely wrote:
  On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki r...@rjwysocki.net 
  wrote:
   On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
   On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
   
On 11/1/14 4:11, Grant Likely wrote:
 On Tue, 28 Oct 2014 22:59:57 +0100
 , Rafael J. Wysocki r...@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.westerb...@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
  
   Also we don't use properties where single name is assigned to multiple 
   GPIOs
   anywhere in the current device-properties patchset, so this is not 
   relevant at
   the moment.
  
   Moreover, even if we were to use them, we would need to ensure that this:
  
 Package () {
 \_SB.GPIO, 0, 0, 0
 }
  
   was equivalent to
  
 Package () {
 Package () { \_SB.GPIO, 0, 0, 0 }
 }
  
   This is not impossible to do and I suppose we could even explain that in 
   the
   implementation guide document in a sensible way, but that would require 
   the
   document linked above to be changed first and *then* we can think about 
   writing
   kernel code to it.  Not the other way around, please.
  
   So Grant, do you want us to proceed with that?
  
   Before you reply, one more observation that seems to be relevant.
  
   In ACPI, both this:
  
   Package () {
   \_SB.GPIO, 0, 0, 0,
   \_SB.GPIO, 1, 0, 0,
   \_SB.GPIO, 2, 0, 1,
   }
  
   and this:
  
   Package () {
   Package () { \_SB.GPIO, 0, 0, 0 },
   Package () { \_SB.GPIO, 1, 0, 0 },
   Package () { \_SB.GPIO, 2, 0, 1 },
   }
  
   carry the same information, because every element of a package has a type,
   so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
   ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs 
   represented
   by the first package by counting the number of reference elements in it.
   The second one has more structure which in this particular case is 
   arguably
   redundant.
  
  Okay, this make sense. I'm okay with this approach, and I would
  recommend making that the only valid method for parsing in
  acpi_dev_get_property_reference(). Get rid of the *size_prop argument
  so that it always behaves the same way and users aren't tempted to do
  something clever.
 
 OK, I'll send a followup patch to remove the size_prop arg from
 acpi_dev_get_property_reference().

This:

---
From: Rafael J. Wysocki rafael.j.wyso...@intel.com

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-04 Thread Grant Likely
On Tue, Nov 4, 2014 at 10:54 PM, Rafael J. Wysocki r...@rjwysocki.net wrote:
 On Tuesday, November 04, 2014 05:06:40 PM Rafael J. Wysocki wrote:
 On Tuesday, November 04, 2014 02:48:40 PM Grant Likely wrote:
  On Mon, Nov 3, 2014 at 9:52 PM, Rafael J. Wysocki r...@rjwysocki.net 
  wrote:
   On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
   On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
   
On 11/1/14 4:11, Grant Likely wrote:
 On Tue, 28 Oct 2014 22:59:57 +0100
 , Rafael J. Wysocki r...@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.westerb...@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
  
   Also we don't use properties where single name is assigned to multiple 
   GPIOs
   anywhere in the current device-properties patchset, so this is not 
   relevant at
   the moment.
  
   Moreover, even if we were to use them, we would need to ensure that 
   this:
  
 Package () {
 \_SB.GPIO, 0, 0, 0
 }
  
   was equivalent to
  
 Package () {
 Package () { \_SB.GPIO, 0, 0, 0 }
 }
  
   This is not impossible to do and I suppose we could even explain that 
   in the
   implementation guide document in a sensible way, but that would require 
   the
   document linked above to be changed first and *then* we can think about 
   writing
   kernel code to it.  Not the other way around, please.
  
   So Grant, do you want us to proceed with that?
  
   Before you reply, one more observation that seems to be relevant.
  
   In ACPI, both this:
  
   Package () {
   \_SB.GPIO, 0, 0, 0,
   \_SB.GPIO, 1, 0, 0,
   \_SB.GPIO, 2, 0, 1,
   }
  
   and this:
  
   Package () {
   Package () { \_SB.GPIO, 0, 0, 0 },
   Package () { \_SB.GPIO, 1, 0, 0 },
   Package () { \_SB.GPIO, 2, 0, 1 },
   }
  
   carry the same information, because every element of a package has a 
   type,
   so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
   ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs 
   represented
   by the first package by counting the number of reference elements in it.
   The second one has more structure which in this particular case is 
   arguably
   redundant.
 
  Okay, this make sense. I'm okay with this approach, and I would
  recommend making that the only valid method for parsing in
  acpi_dev_get_property_reference(). Get rid of the *size_prop argument
  so that it always behaves the same way and users aren't tempted to do
  something clever.

 OK, I'll send a followup patch to remove the size_prop arg from
 

Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-03 Thread Rafael J. Wysocki
On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
> On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
> > 
> > On 11/1/14 4:11, Grant Likely wrote:
> > > On Tue, 28 Oct 2014 22:59:57 +0100
> > > , "Rafael J. Wysocki" 
> > >  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 
> > >>
> > >> 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
> 
> Also we don't use properties where single name is assigned to multiple GPIOs
> anywhere in the current device-properties patchset, so this is not relevant at
> the moment.
> 
> Moreover, even if we were to use them, we would need to ensure that this:
> 
>   Package () {
>   \_SB.GPIO, 0, 0, 0
>   }
> 
> was equivalent to
> 
>   Package () {
>   Package () { \_SB.GPIO, 0, 0, 0 }
>   }
> 
> This is not impossible to do and I suppose we could even explain that in the
> implementation guide document in a sensible way, but that would require the
> document linked above to be changed first and *then* we can think about 
> writing
> kernel code to it.  Not the other way around, please.
> 
> So Grant, do you want us to proceed with that?

Before you reply, one more observation that seems to be relevant.

In ACPI, both this:

Package () {
\_SB.GPIO, 0, 0, 0,
\_SB.GPIO, 1, 0, 0,
\_SB.GPIO, 2, 0, 1,
}

and this:

Package () {
Package () { \_SB.GPIO, 0, 0, 0 },
Package () { \_SB.GPIO, 1, 0, 0 },
Package () { \_SB.GPIO, 2, 0, 1 },
}

carry the same information, because every element of a package has a type,
so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs represented
by the first package by counting the number of reference elements in it.
The second one has more structure which in this particular case is arguably
redundant.

Of course, that's not the case for list properties where each item consists
of a bunch of integers, like

Package () {
Package () { 0, 0, 0 },
Package () { 1, 0, 0 },
Package () { 2, 0, 1 },
}

but I'm not sure if this is relevant at all.

Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-03 Thread Rafael J. Wysocki
On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
> 
> On 11/1/14 4:11, Grant Likely wrote:
> > On Tue, 28 Oct 2014 22:59:57 +0100
> > , "Rafael J. Wysocki" 
> >  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 
> >>
> >> 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

Also we don't use properties where single name is assigned to multiple GPIOs
anywhere in the current device-properties patchset, so this is not relevant at
the moment.

Moreover, even if we were to use them, we would need to ensure that this:

Package () {
\_SB.GPIO, 0, 0, 0
}

was equivalent to

Package () {
Package () { \_SB.GPIO, 0, 0, 0 }
}

This is not impossible to do and I suppose we could even explain that in the
implementation guide document in a sensible way, but that would require the
document linked above to be changed first and *then* we can think about writing
kernel code to it.  Not the other way around, please.

So Grant, do you want us to proceed with that?

Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-03 Thread Rafael J. Wysocki
On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
 
 On 11/1/14 4:11, Grant Likely wrote:
  On Tue, 28 Oct 2014 22:59:57 +0100
  , Rafael J. Wysocki r...@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.westerb...@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

Also we don't use properties where single name is assigned to multiple GPIOs
anywhere in the current device-properties patchset, so this is not relevant at
the moment.

Moreover, even if we were to use them, we would need to ensure that this:

Package () {
\_SB.GPIO, 0, 0, 0
}

was equivalent to

Package () {
Package () { \_SB.GPIO, 0, 0, 0 }
}

This is not impossible to do and I suppose we could even explain that in the
implementation guide document in a sensible way, but that would require the
document linked above to be changed first and *then* we can think about writing
kernel code to it.  Not the other way around, please.

So Grant, do you want us to proceed with that?

Rafael

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-03 Thread Rafael J. Wysocki
On Monday, November 03, 2014 04:25:08 PM Rafael J. Wysocki wrote:
 On Sunday, November 02, 2014 08:49:37 PM Darren Hart wrote:
  
  On 11/1/14 4:11, Grant Likely wrote:
   On Tue, 28 Oct 2014 22:59:57 +0100
   , Rafael J. Wysocki r...@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.westerb...@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
 
 Also we don't use properties where single name is assigned to multiple GPIOs
 anywhere in the current device-properties patchset, so this is not relevant at
 the moment.
 
 Moreover, even if we were to use them, we would need to ensure that this:
 
   Package () {
   \_SB.GPIO, 0, 0, 0
   }
 
 was equivalent to
 
   Package () {
   Package () { \_SB.GPIO, 0, 0, 0 }
   }
 
 This is not impossible to do and I suppose we could even explain that in the
 implementation guide document in a sensible way, but that would require the
 document linked above to be changed first and *then* we can think about 
 writing
 kernel code to it.  Not the other way around, please.
 
 So Grant, do you want us to proceed with that?

Before you reply, one more observation that seems to be relevant.

In ACPI, both this:

Package () {
\_SB.GPIO, 0, 0, 0,
\_SB.GPIO, 1, 0, 0,
\_SB.GPIO, 2, 0, 1,
}

and this:

Package () {
Package () { \_SB.GPIO, 0, 0, 0 },
Package () { \_SB.GPIO, 1, 0, 0 },
Package () { \_SB.GPIO, 2, 0, 1 },
}

carry the same information, because every element of a package has a type,
so there is no danger of confusing an ACPI_TYPE_LOCAL_REFERENCE with
ACPI_TYPE_INTEGER.  Thus one can easily count the number of GPIOs represented
by the first package by counting the number of reference elements in it.
The second one has more structure which in this particular case is arguably
redundant.

Of course, that's not the case for list properties where each item consists
of a bunch of integers, like

Package () {
Package () { 0, 0, 0 },
Package () { 1, 0, 0 },
Package () { 2, 0, 1 },
}

but I'm not sure if this is relevant at all.

Rafael

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-02 Thread Darren Hart


On 11/1/14 4:11, Grant Likely wrote:
> On Tue, 28 Oct 2014 22:59:57 +0100
> , "Rafael J. Wysocki" 
>  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 
>>
>> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-02 Thread Darren Hart


On 11/1/14 4:11, Grant Likely wrote:
 On Tue, 28 Oct 2014 22:59:57 +0100
 , Rafael J. Wysocki r...@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.westerb...@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
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-01 Thread Grant Likely
On Tue, 28 Oct 2014 22:59:57 +0100
, "Rafael J. Wysocki" 
 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 
> 
> 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.

g.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-11-01 Thread Grant Likely
On Tue, 28 Oct 2014 22:59:57 +0100
, Rafael J. Wysocki r...@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.westerb...@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.

g.

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Mika Westerberg
On Wed, Oct 29, 2014 at 03:51:59PM +0100, Rafael J. Wysocki wrote:
> Never mind.  I need to rebase the series anyway because of a bug in the
> second patch, so I'll fold the $subject one into patch [5/12].

Thank you.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Rafael J. Wysocki
On Wednesday, October 29, 2014 03:42:23 PM Rafael J. Wysocki wrote:
> On Wednesday, October 29, 2014 10:54:29 AM Mika Westerberg wrote:
> > On Wed, Oct 29, 2014 at 04:41:47PM +0900, Alexandre Courbot wrote:
> > > On 10/29/2014 06:59 AM, Rafael J. Wysocki 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 
> > > >
> > > >Cool. :-)
> > > >
> > > >Any objections anyone?
> > > 
> > > Looks good to me!
> > > 
> > > Acked-by: Alexandre Courbot 
> > 
> > Thanks!
> > 
> > > Since this looks like a bug fix, shouldn't this be squashed into the
> > > relevant patch of the device-properties set?
> > 
> > I agree.
> 
> Well, except that the set is in my linux-next branch now and I very much
> prefer to do fixes on top of it.
> 
> Besides, I'm not sure if that even matters for the current series.

Never mind.  I need to rebase the series anyway because of a bug in the
second patch, so I'll fold the $subject one into patch [5/12].

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Rafael J. Wysocki
On Wednesday, October 29, 2014 10:54:29 AM Mika Westerberg wrote:
> On Wed, Oct 29, 2014 at 04:41:47PM +0900, Alexandre Courbot wrote:
> > On 10/29/2014 06:59 AM, Rafael J. Wysocki 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 
> > >
> > >Cool. :-)
> > >
> > >Any objections anyone?
> > 
> > Looks good to me!
> > 
> > Acked-by: Alexandre Courbot 
> 
> Thanks!
> 
> > Since this looks like a bug fix, shouldn't this be squashed into the
> > relevant patch of the device-properties set?
> 
> I agree.

Well, except that the set is in my linux-next branch now and I very much
prefer to do fixes on top of it.

Besides, I'm not sure if that even matters for the current series.

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Mika Westerberg
On Wed, Oct 29, 2014 at 04:41:47PM +0900, Alexandre Courbot wrote:
> On 10/29/2014 06:59 AM, Rafael J. Wysocki 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 
> >
> >Cool. :-)
> >
> >Any objections anyone?
> 
> Looks good to me!
> 
> Acked-by: Alexandre Courbot 

Thanks!

> Since this looks like a bug fix, shouldn't this be squashed into the
> relevant patch of the device-properties set?

I agree.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Alexandre Courbot

On 10/29/2014 06:59 AM, Rafael J. Wysocki 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 


Cool. :-)

Any objections anyone?


Looks good to me!

Acked-by: Alexandre Courbot 

Since this looks like a bug fix, shouldn't this be squashed into the 
relevant patch of the device-properties set?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Alexandre Courbot

On 10/29/2014 06:59 AM, Rafael J. Wysocki 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.westerb...@linux.intel.com


Cool. :-)

Any objections anyone?


Looks good to me!

Acked-by: Alexandre Courbot acour...@nvidia.com

Since this looks like a bug fix, shouldn't this be squashed into the 
relevant patch of the device-properties set?

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Mika Westerberg
On Wed, Oct 29, 2014 at 04:41:47PM +0900, Alexandre Courbot wrote:
 On 10/29/2014 06:59 AM, Rafael J. Wysocki 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.westerb...@linux.intel.com
 
 Cool. :-)
 
 Any objections anyone?
 
 Looks good to me!
 
 Acked-by: Alexandre Courbot acour...@nvidia.com

Thanks!

 Since this looks like a bug fix, shouldn't this be squashed into the
 relevant patch of the device-properties set?

I agree.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Rafael J. Wysocki
On Wednesday, October 29, 2014 10:54:29 AM Mika Westerberg wrote:
 On Wed, Oct 29, 2014 at 04:41:47PM +0900, Alexandre Courbot wrote:
  On 10/29/2014 06:59 AM, Rafael J. Wysocki 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.westerb...@linux.intel.com
  
  Cool. :-)
  
  Any objections anyone?
  
  Looks good to me!
  
  Acked-by: Alexandre Courbot acour...@nvidia.com
 
 Thanks!
 
  Since this looks like a bug fix, shouldn't this be squashed into the
  relevant patch of the device-properties set?
 
 I agree.

Well, except that the set is in my linux-next branch now and I very much
prefer to do fixes on top of it.

Besides, I'm not sure if that even matters for the current series.

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Rafael J. Wysocki
On Wednesday, October 29, 2014 03:42:23 PM Rafael J. Wysocki wrote:
 On Wednesday, October 29, 2014 10:54:29 AM Mika Westerberg wrote:
  On Wed, Oct 29, 2014 at 04:41:47PM +0900, Alexandre Courbot wrote:
   On 10/29/2014 06:59 AM, Rafael J. Wysocki 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.westerb...@linux.intel.com
   
   Cool. :-)
   
   Any objections anyone?
   
   Looks good to me!
   
   Acked-by: Alexandre Courbot acour...@nvidia.com
  
  Thanks!
  
   Since this looks like a bug fix, shouldn't this be squashed into the
   relevant patch of the device-properties set?
  
  I agree.
 
 Well, except that the set is in my linux-next branch now and I very much
 prefer to do fixes on top of it.
 
 Besides, I'm not sure if that even matters for the current series.

Never mind.  I need to rebase the series anyway because of a bug in the
second patch, so I'll fold the $subject one into patch [5/12].

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-29 Thread Mika Westerberg
On Wed, Oct 29, 2014 at 03:51:59PM +0100, Rafael J. Wysocki wrote:
 Never mind.  I need to rebase the series anyway because of a bug in the
 second patch, so I'll fold the $subject one into patch [5/12].

Thank you.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-28 Thread Rafael J. Wysocki
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 

Cool. :-)

Any objections anyone?

> ---
> This is on top of latest linux-pm/device-properties.
> 
>  drivers/gpio/gpiolib.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index fbf717a56b0a..58659dbe702a 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -1522,7 +1522,7 @@ static struct gpio_desc *acpi_find_gpio(struct device 
> *dev, const char *con_id,
>suffixes[i]);
>   }
>  
> - desc = acpi_get_gpiod_by_index(adev, propname, 0, );
> + desc = acpi_get_gpiod_by_index(adev, propname, idx, );
>   if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER))
>   break;
>   }
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-28 Thread Darren Hart


On 10/28/14 4:15, 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 

Nice, that was a gap that had been gnawing at me. Thanks Mika :-)

Acked-by: Darren Hart 

-- 
Darren Hart
Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-28 Thread Mika Westerberg
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 
---
This is on top of latest linux-pm/device-properties.

 drivers/gpio/gpiolib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index fbf717a56b0a..58659dbe702a 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1522,7 +1522,7 @@ static struct gpio_desc *acpi_find_gpio(struct device 
*dev, const char *con_id,
 suffixes[i]);
}
 
-   desc = acpi_get_gpiod_by_index(adev, propname, 0, );
+   desc = acpi_get_gpiod_by_index(adev, propname, idx, );
if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER))
break;
}
-- 
2.1.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-28 Thread Mika Westerberg
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.westerb...@linux.intel.com
---
This is on top of latest linux-pm/device-properties.

 drivers/gpio/gpiolib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index fbf717a56b0a..58659dbe702a 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1522,7 +1522,7 @@ static struct gpio_desc *acpi_find_gpio(struct device 
*dev, const char *con_id,
 suffixes[i]);
}
 
-   desc = acpi_get_gpiod_by_index(adev, propname, 0, info);
+   desc = acpi_get_gpiod_by_index(adev, propname, idx, info);
if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER))
break;
}
-- 
2.1.1

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-28 Thread Darren Hart


On 10/28/14 4:15, 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.westerb...@linux.intel.com

Nice, that was a gap that had been gnawing at me. Thanks Mika :-)

Acked-by: Darren Hart dvh...@linux.intel.com

-- 
Darren Hart
Intel Open Source Technology Center
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ACPI / GPIO: Pass index to acpi_get_gpiod_by_index() when using properties

2014-10-28 Thread Rafael J. Wysocki
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.westerb...@linux.intel.com

Cool. :-)

Any objections anyone?

 ---
 This is on top of latest linux-pm/device-properties.
 
  drivers/gpio/gpiolib.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
 index fbf717a56b0a..58659dbe702a 100644
 --- a/drivers/gpio/gpiolib.c
 +++ b/drivers/gpio/gpiolib.c
 @@ -1522,7 +1522,7 @@ static struct gpio_desc *acpi_find_gpio(struct device 
 *dev, const char *con_id,
suffixes[i]);
   }
  
 - desc = acpi_get_gpiod_by_index(adev, propname, 0, info);
 + desc = acpi_get_gpiod_by_index(adev, propname, idx, info);
   if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER))
   break;
   }
 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/