* [PATCH] Describe interrupts-extended property
@ 2017-01-03 19:24 Florian Fainelli
[not found] ` <20170103192423.5838-1-f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Florian Fainelli @ 2017-01-03 19:24 UTC (permalink / raw)
To: devicetree-spec-u79uwXL29TY76Z2rM5mHXA
Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A, Florian Fainelli
The interrupts-extended property is a common property used when
interrupt generating devices having interrupt lines in several interrupt
controllers with possibly distinct interrupt specifiers.
Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
index be80af3d825b..1bda0fa54e7a 100644
--- a/source/devicetree-basics.rst
+++ b/source/devicetree-basics.rst
@@ -955,6 +955,40 @@ Description:
to the interrupt parent. If this property is missing from a device, its
interrupt parent is assumed to be its devicetree parent.
+interrupts-extended
+^^^^^^^^^^^^^^^^^^^
+
+Property: ``interrupts-extended``
+
+Value type: ``<phandle> <prop-encoded-array>``
+
+Description:
+
+ The *interrupts-extended* property of a device node defines the interrupt or
+ the interrupts that are generated by the device. In case where an interrupt
+ generating devices has several interrupt lines, some of them having distinct
+ interrupt parents, the *interrupts-extended* property should be used to
+ fully describe the interrupts of this device, relative to the interrupt
+ controller(s), which is encoded by the phandle part of the property. The non
+ phandle part of the property encodes the interrupt specifiers and obeys to
+ the *interrupts* property description.
+
+ If both *interrupts-extended* and *interrupts* properties are present, the
+ *interrupts-extended* properties takes precedence, and the *interrupts*
+ property may be provided to a client program for compatibility purposes.
+
+Example:
+
+ A device with several interrupt lines in distinct interrupt controllers,
+ having different interrupt specifiers is illustrated below. In this example
+ ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
+ of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
+ specifier of 1.
+
+
+ ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
+
+
Properties for Interrupt Controllers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
2.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <20170103192423.5838-1-f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2017-01-03 22:24 ` Rob Herring
[not found] ` <CAL_Jsq+2TVHGS2onm50rG_AxesJEBUhEGLZNEJN8XAGo4CbMgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-03 23:04 ` David Gibson
1 sibling, 1 reply; 11+ messages in thread
From: Rob Herring @ 2017-01-03 22:24 UTC (permalink / raw)
To: Florian Fainelli
Cc: devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Grant Likely
Correcting Grant's email.
On Tue, Jan 3, 2017 at 1:24 PM, Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> The interrupts-extended property is a common property used when
> interrupt generating devices having interrupt lines in several interrupt
> controllers with possibly distinct interrupt specifiers.
>
> Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
I assume this is mostly copied from the kernel documentation. This
needs Grant's ack as the kernel documentation license is ambiguous
(default GPL) and the spec is Apache.
> ---
> source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
> index be80af3d825b..1bda0fa54e7a 100644
> --- a/source/devicetree-basics.rst
> +++ b/source/devicetree-basics.rst
> @@ -955,6 +955,40 @@ Description:
> to the interrupt parent. If this property is missing from a device, its
> interrupt parent is assumed to be its devicetree parent.
>
> +interrupts-extended
> +^^^^^^^^^^^^^^^^^^^
> +
> +Property: ``interrupts-extended``
> +
> +Value type: ``<phandle> <prop-encoded-array>``
> +
> +Description:
> +
> + The *interrupts-extended* property of a device node defines the interrupt or
> + the interrupts that are generated by the device. In case where an interrupt
In the case...
> + generating devices has several interrupt lines, some of them having distinct
s/devices/device/
> + interrupt parents, the *interrupts-extended* property should be used to
> + fully describe the interrupts of this device, relative to the interrupt
> + controller(s), which is encoded by the phandle part of the property. The non
> + phandle part of the property encodes the interrupt specifiers and obeys to
> + the *interrupts* property description.
> +
> + If both *interrupts-extended* and *interrupts* properties are present, the
> + *interrupts-extended* properties takes precedence, and the *interrupts*
> + property may be provided to a client program for compatibility purposes.
> +
> +Example:
> +
> + A device with several interrupt lines in distinct interrupt controllers,
> + having different interrupt specifiers is illustrated below. In this example
> + ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
> + of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
> + specifier of 1.
> +
> +
> + ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
> +
> +
> Properties for Interrupt Controllers
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> --
> 2.9.3
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <CAL_Jsq+2TVHGS2onm50rG_AxesJEBUhEGLZNEJN8XAGo4CbMgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2017-01-03 22:29 ` Florian Fainelli
2017-01-13 8:51 ` Grant Likely
1 sibling, 0 replies; 11+ messages in thread
From: Florian Fainelli @ 2017-01-03 22:29 UTC (permalink / raw)
To: Rob Herring
Cc: devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Grant Likely
On 01/03/2017 02:24 PM, Rob Herring wrote:
> Correcting Grant's email.
>
> On Tue, Jan 3, 2017 at 1:24 PM, Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> The interrupts-extended property is a common property used when
>> interrupt generating devices having interrupt lines in several interrupt
>> controllers with possibly distinct interrupt specifiers.
>>
>> Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>
> I assume this is mostly copied from the kernel documentation. This
> needs Grant's ack as the kernel documentation license is ambiguous
> (default GPL) and the spec is Apache.
Sort of, I did look at the changes submitted to the documentation, but
this was kind of rewritten from scratch, nonetheless, having some
clarification on the documentation would indeed be a good thing.
>
>> ---
>> source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
>> 1 file changed, 34 insertions(+)
>>
>> diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
>> index be80af3d825b..1bda0fa54e7a 100644
>> --- a/source/devicetree-basics.rst
>> +++ b/source/devicetree-basics.rst
>> @@ -955,6 +955,40 @@ Description:
>> to the interrupt parent. If this property is missing from a device, its
>> interrupt parent is assumed to be its devicetree parent.
>>
>> +interrupts-extended
>> +^^^^^^^^^^^^^^^^^^^
>> +
>> +Property: ``interrupts-extended``
>> +
>> +Value type: ``<phandle> <prop-encoded-array>``
>> +
>> +Description:
>> +
>> + The *interrupts-extended* property of a device node defines the interrupt or
>> + the interrupts that are generated by the device. In case where an interrupt
>
> In the case...
>
>> + generating devices has several interrupt lines, some of them having distinct
>
> s/devices/device/
Whoops, thanks, anything else that needs fixing in the wording used below?
>
>> + interrupt parents, the *interrupts-extended* property should be used to
>> + fully describe the interrupts of this device, relative to the interrupt
>> + controller(s), which is encoded by the phandle part of the property. The non
>> + phandle part of the property encodes the interrupt specifiers and obeys to
>> + the *interrupts* property description.
>> +
>> + If both *interrupts-extended* and *interrupts* properties are present, the
>> + *interrupts-extended* properties takes precedence, and the *interrupts*
>> + property may be provided to a client program for compatibility purposes.
>> +
>> +Example:
>> +
>> + A device with several interrupt lines in distinct interrupt controllers,
>> + having different interrupt specifiers is illustrated below. In this example
>> + ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
>> + of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
>> + specifier of 1.
>> +
>> +
>> + ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
>> +
>> +
>> Properties for Interrupt Controllers
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> --
>> 2.9.3
>>
--
Florian
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <20170103192423.5838-1-f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-03 22:24 ` Rob Herring
@ 2017-01-03 23:04 ` David Gibson
[not found] ` <20170103230436.GS12761-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
1 sibling, 1 reply; 11+ messages in thread
From: David Gibson @ 2017-01-03 23:04 UTC (permalink / raw)
To: Florian Fainelli
Cc: devicetree-spec-u79uwXL29TY76Z2rM5mHXA,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A
[-- Attachment #1: Type: text/plain, Size: 3010 bytes --]
On Tue, Jan 03, 2017 at 11:24:23AM -0800, Florian Fainelli wrote:
> The interrupts-extended property is a common property used when
> interrupt generating devices having interrupt lines in several interrupt
> controllers with possibly distinct interrupt specifiers.
>
> Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Hmm. Is this actually used in the wild already?
I'm just wondering if it's really needed, since you can work around
the limitations with the ordinary interrupts property by setting
interrupt-parent to the node itself putting an interrupt nexus
(interrupt-map and interrupt-map-mask properties) in there to redirect
those to different interrupt controllers.
> ---
> source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
> index be80af3d825b..1bda0fa54e7a 100644
> --- a/source/devicetree-basics.rst
> +++ b/source/devicetree-basics.rst
> @@ -955,6 +955,40 @@ Description:
> to the interrupt parent. If this property is missing from a device, its
> interrupt parent is assumed to be its devicetree parent.
>
> +interrupts-extended
> +^^^^^^^^^^^^^^^^^^^
> +
> +Property: ``interrupts-extended``
> +
> +Value type: ``<phandle> <prop-encoded-array>``
> +
> +Description:
> +
> + The *interrupts-extended* property of a device node defines the interrupt or
> + the interrupts that are generated by the device. In case where an interrupt
> + generating devices has several interrupt lines, some of them having distinct
> + interrupt parents, the *interrupts-extended* property should be used to
> + fully describe the interrupts of this device, relative to the interrupt
> + controller(s), which is encoded by the phandle part of the property. The non
> + phandle part of the property encodes the interrupt specifiers and obeys to
> + the *interrupts* property description.
> +
> + If both *interrupts-extended* and *interrupts* properties are present, the
> + *interrupts-extended* properties takes precedence, and the *interrupts*
> + property may be provided to a client program for compatibility purposes.
> +
> +Example:
> +
> + A device with several interrupt lines in distinct interrupt controllers,
> + having different interrupt specifiers is illustrated below. In this example
> + ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
> + of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
> + specifier of 1.
> +
> +
> + ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
> +
> +
> Properties for Interrupt Controllers
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <20170103230436.GS12761-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
@ 2017-01-03 23:44 ` Florian Fainelli
[not found] ` <f04c76d4-996b-6ffd-d59e-eb992d0a912d-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Florian Fainelli @ 2017-01-03 23:44 UTC (permalink / raw)
To: David Gibson
Cc: devicetree-spec-u79uwXL29TY76Z2rM5mHXA,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A
On 01/03/2017 03:04 PM, David Gibson wrote:
> On Tue, Jan 03, 2017 at 11:24:23AM -0800, Florian Fainelli wrote:
>> The interrupts-extended property is a common property used when
>> interrupt generating devices having interrupt lines in several interrupt
>> controllers with possibly distinct interrupt specifiers.
>>
>> Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>
> Hmm. Is this actually used in the wild already?
Yes, we have been using this for nearly 3 years now, primarily with
devices that have a "main" interrupt and a "wake-up" interrupt in
separate interrupt controllers. There are existing in kernel tree users
of this as well.
>
> I'm just wondering if it's really needed, since you can work around
> the limitations with the ordinary interrupts property by setting
> interrupt-parent to the node itself putting an interrupt nexus
> (interrupt-map and interrupt-map-mask properties) in there to redirect
> those to different interrupt controllers.
Well, sure you could do that, and this actually serves a similar, if not
identical purpose, it just appeared that interrupts-extended got
introduced to solve that problem, is supported by Linux, and therefore
may deserve a documentation in the Device Tree spec. I'd have to double
check, but it does not appear to me that the solution you are proposing
is supported by Linux for instance.
Digression: I was actually wondering if we may not have a need to do the
same thing for "reg" properties, where a given device may have memory
mapped I/O registers in one place, and another address in another bus,
with a different address space, this is actually pretty common for e.g:
PHY (Ethernet, PCIe, SATA or USB).
Thanks!
>
>> ---
>> source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
>> 1 file changed, 34 insertions(+)
>>
>> diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
>> index be80af3d825b..1bda0fa54e7a 100644
>> --- a/source/devicetree-basics.rst
>> +++ b/source/devicetree-basics.rst
>> @@ -955,6 +955,40 @@ Description:
>> to the interrupt parent. If this property is missing from a device, its
>> interrupt parent is assumed to be its devicetree parent.
>>
>> +interrupts-extended
>> +^^^^^^^^^^^^^^^^^^^
>> +
>> +Property: ``interrupts-extended``
>> +
>> +Value type: ``<phandle> <prop-encoded-array>``
>> +
>> +Description:
>> +
>> + The *interrupts-extended* property of a device node defines the interrupt or
>> + the interrupts that are generated by the device. In case where an interrupt
>> + generating devices has several interrupt lines, some of them having distinct
>> + interrupt parents, the *interrupts-extended* property should be used to
>> + fully describe the interrupts of this device, relative to the interrupt
>> + controller(s), which is encoded by the phandle part of the property. The non
>> + phandle part of the property encodes the interrupt specifiers and obeys to
>> + the *interrupts* property description.
>> +
>> + If both *interrupts-extended* and *interrupts* properties are present, the
>> + *interrupts-extended* properties takes precedence, and the *interrupts*
>> + property may be provided to a client program for compatibility purposes.
>> +
>> +Example:
>> +
>> + A device with several interrupt lines in distinct interrupt controllers,
>> + having different interrupt specifiers is illustrated below. In this example
>> + ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
>> + of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
>> + specifier of 1.
>> +
>> +
>> + ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
>> +
>> +
>> Properties for Interrupt Controllers
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>
--
Florian
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <f04c76d4-996b-6ffd-d59e-eb992d0a912d-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2017-01-04 0:31 ` David Gibson
[not found] ` <20170104003147.GW12761-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: David Gibson @ 2017-01-04 0:31 UTC (permalink / raw)
To: Florian Fainelli
Cc: devicetree-spec-u79uwXL29TY76Z2rM5mHXA,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A
[-- Attachment #1: Type: text/plain, Size: 5278 bytes --]
On Tue, Jan 03, 2017 at 03:44:28PM -0800, Florian Fainelli wrote:
> On 01/03/2017 03:04 PM, David Gibson wrote:
> > On Tue, Jan 03, 2017 at 11:24:23AM -0800, Florian Fainelli wrote:
> >> The interrupts-extended property is a common property used when
> >> interrupt generating devices having interrupt lines in several interrupt
> >> controllers with possibly distinct interrupt specifiers.
> >>
> >> Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> >
> > Hmm. Is this actually used in the wild already?
>
> Yes, we have been using this for nearly 3 years now, primarily with
> devices that have a "main" interrupt and a "wake-up" interrupt in
> separate interrupt controllers. There are existing in kernel tree users
> of this as well.
Ok, fair enough then.
> > I'm just wondering if it's really needed, since you can work around
> > the limitations with the ordinary interrupts property by setting
> > interrupt-parent to the node itself putting an interrupt nexus
> > (interrupt-map and interrupt-map-mask properties) in there to redirect
> > those to different interrupt controllers.
>
> Well, sure you could do that, and this actually serves a similar, if not
> identical purpose, it just appeared that interrupts-extended got
> introduced to solve that problem, is supported by Linux, and therefore
> may deserve a documentation in the Device Tree spec. I'd have to double
> check, but it does not appear to me that the solution you are proposing
> is supported by Linux for instance.
Right. The point is I used this workaround to avoid inventing
something like interrupts-extended nearly 10 years ago (for the Bamboo
440EP board I think). Admittedly the workaround is pretty ugly.
> Digression: I was actually wondering if we may not have a need to do the
> same thing for "reg" properties, where a given device may have memory
> mapped I/O registers in one place, and another address in another bus,
> with a different address space, this is actually pretty common for e.g:
> PHY (Ethernet, PCIe, SATA or USB).
I've wondered about something like that for some time (my working name
was 'bus-reg'). The use cases I encountered were on PPC4xx machines
which had lots of things controlled (at least partially) by the
sideband "DCR" (Device Control Register) bus. We did invent a
'dcr-reg' property to cover that specific case, and I think something
similar has been done for some other sideband busses. Something like
'bus-reg' would be a more general solution to the problem.
I believe the "classic" IEEE1275 way of solving this is to have
separate nodes on each of the relevant busses, with phandle pointers
linking them together. The relevant driver would claim all the
related nodes. Again, it gets pretty messy, though.
> >> ---
> >> source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
> >> 1 file changed, 34 insertions(+)
> >>
> >> diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
> >> index be80af3d825b..1bda0fa54e7a 100644
> >> --- a/source/devicetree-basics.rst
> >> +++ b/source/devicetree-basics.rst
> >> @@ -955,6 +955,40 @@ Description:
> >> to the interrupt parent. If this property is missing from a device, its
> >> interrupt parent is assumed to be its devicetree parent.
> >>
> >> +interrupts-extended
> >> +^^^^^^^^^^^^^^^^^^^
> >> +
> >> +Property: ``interrupts-extended``
> >> +
> >> +Value type: ``<phandle> <prop-encoded-array>``
> >> +
> >> +Description:
> >> +
> >> + The *interrupts-extended* property of a device node defines the interrupt or
> >> + the interrupts that are generated by the device. In case where an interrupt
> >> + generating devices has several interrupt lines, some of them having distinct
> >> + interrupt parents, the *interrupts-extended* property should be used to
> >> + fully describe the interrupts of this device, relative to the interrupt
> >> + controller(s), which is encoded by the phandle part of the property. The non
> >> + phandle part of the property encodes the interrupt specifiers and obeys to
> >> + the *interrupts* property description.
> >> +
> >> + If both *interrupts-extended* and *interrupts* properties are present, the
> >> + *interrupts-extended* properties takes precedence, and the *interrupts*
> >> + property may be provided to a client program for compatibility purposes.
> >> +
> >> +Example:
> >> +
> >> + A device with several interrupt lines in distinct interrupt controllers,
> >> + having different interrupt specifiers is illustrated below. In this example
> >> + ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
> >> + of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
> >> + specifier of 1.
> >> +
> >> +
> >> + ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
> >> +
> >> +
> >> Properties for Interrupt Controllers
> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>
> >
>
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <20170104003147.GW12761-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
@ 2017-01-04 0:47 ` Florian Fainelli
[not found] ` <0d9b43f1-147c-5761-9fdd-8ba28c690df9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Florian Fainelli @ 2017-01-04 0:47 UTC (permalink / raw)
To: David Gibson
Cc: devicetree-spec-u79uwXL29TY76Z2rM5mHXA,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A
On 01/03/2017 04:31 PM, David Gibson wrote:
> On Tue, Jan 03, 2017 at 03:44:28PM -0800, Florian Fainelli wrote:
>> On 01/03/2017 03:04 PM, David Gibson wrote:
>>> On Tue, Jan 03, 2017 at 11:24:23AM -0800, Florian Fainelli wrote:
>>>> The interrupts-extended property is a common property used when
>>>> interrupt generating devices having interrupt lines in several interrupt
>>>> controllers with possibly distinct interrupt specifiers.
>>>>
>>>> Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>>
>>> Hmm. Is this actually used in the wild already?
>>
>> Yes, we have been using this for nearly 3 years now, primarily with
>> devices that have a "main" interrupt and a "wake-up" interrupt in
>> separate interrupt controllers. There are existing in kernel tree users
>> of this as well.
>
> Ok, fair enough then.
>
>>> I'm just wondering if it's really needed, since you can work around
>>> the limitations with the ordinary interrupts property by setting
>>> interrupt-parent to the node itself putting an interrupt nexus
>>> (interrupt-map and interrupt-map-mask properties) in there to redirect
>>> those to different interrupt controllers.
>>
>> Well, sure you could do that, and this actually serves a similar, if not
>> identical purpose, it just appeared that interrupts-extended got
>> introduced to solve that problem, is supported by Linux, and therefore
>> may deserve a documentation in the Device Tree spec. I'd have to double
>> check, but it does not appear to me that the solution you are proposing
>> is supported by Linux for instance.
>
> Right. The point is I used this workaround to avoid inventing
> something like interrupts-extended nearly 10 years ago (for the Bamboo
> 440EP board I think). Admittedly the workaround is pretty ugly.
>
>> Digression: I was actually wondering if we may not have a need to do the
>> same thing for "reg" properties, where a given device may have memory
>> mapped I/O registers in one place, and another address in another bus,
>> with a different address space, this is actually pretty common for e.g:
>> PHY (Ethernet, PCIe, SATA or USB).
>
> I've wondered about something like that for some time (my working name
> was 'bus-reg'). The use cases I encountered were on PPC4xx machines
> which had lots of things controlled (at least partially) by the
> sideband "DCR" (Device Control Register) bus. We did invent a
> 'dcr-reg' property to cover that specific case, and I think something
> similar has been done for some other sideband busses. Something like
> 'bus-reg' would be a more general solution to the problem.
Seems to me like syscon is pretty much what was invented in Linux to
support that use case.
>
> I believe the "classic" IEEE1275 way of solving this is to have
> separate nodes on each of the relevant busses, with phandle pointers
> linking them together. The relevant driver would claim all the
> related nodes. Again, it gets pretty messy, though.
Yes still pretty ugly.
Device Tree tends to list resources as properties of the node that
consumes them, which is fine, although it can lead to duplicate values
in a given DTB, but one could also imagine, say listing all register
resources as properties of the bus that decodes these addresses, and
then having child nodes of that bus node reference via phandle their
relevant "reg" cells. Something like this for instance:
bus@deadbeef {
reg = <0x10000000 0x100>, //UART 0
<0x10000100 0x100> //UART 1
uart@100 {
compatible = "acme,uart";
reg = <&bus 0>;
};
};
You get the idea ;)
>
>>>> ---
>>>> source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
>>>> 1 file changed, 34 insertions(+)
>>>>
>>>> diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
>>>> index be80af3d825b..1bda0fa54e7a 100644
>>>> --- a/source/devicetree-basics.rst
>>>> +++ b/source/devicetree-basics.rst
>>>> @@ -955,6 +955,40 @@ Description:
>>>> to the interrupt parent. If this property is missing from a device, its
>>>> interrupt parent is assumed to be its devicetree parent.
>>>>
>>>> +interrupts-extended
>>>> +^^^^^^^^^^^^^^^^^^^
>>>> +
>>>> +Property: ``interrupts-extended``
>>>> +
>>>> +Value type: ``<phandle> <prop-encoded-array>``
>>>> +
>>>> +Description:
>>>> +
>>>> + The *interrupts-extended* property of a device node defines the interrupt or
>>>> + the interrupts that are generated by the device. In case where an interrupt
>>>> + generating devices has several interrupt lines, some of them having distinct
>>>> + interrupt parents, the *interrupts-extended* property should be used to
>>>> + fully describe the interrupts of this device, relative to the interrupt
>>>> + controller(s), which is encoded by the phandle part of the property. The non
>>>> + phandle part of the property encodes the interrupt specifiers and obeys to
>>>> + the *interrupts* property description.
>>>> +
>>>> + If both *interrupts-extended* and *interrupts* properties are present, the
>>>> + *interrupts-extended* properties takes precedence, and the *interrupts*
>>>> + property may be provided to a client program for compatibility purposes.
>>>> +
>>>> +Example:
>>>> +
>>>> + A device with several interrupt lines in distinct interrupt controllers,
>>>> + having different interrupt specifiers is illustrated below. In this example
>>>> + ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
>>>> + of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
>>>> + specifier of 1.
>>>> +
>>>> +
>>>> + ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
>>>> +
>>>> +
>>>> Properties for Interrupt Controllers
>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>
>>>
>>
>>
>
--
Florian
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <0d9b43f1-147c-5761-9fdd-8ba28c690df9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2017-01-04 1:03 ` Laurent Pinchart
2017-01-04 1:19 ` Florian Fainelli
0 siblings, 1 reply; 11+ messages in thread
From: Laurent Pinchart @ 2017-01-04 1:03 UTC (permalink / raw)
To: Florian Fainelli
Cc: David Gibson, devicetree-spec-u79uwXL29TY76Z2rM5mHXA,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A
Hi Florian,
On Tuesday 03 Jan 2017 16:47:03 Florian Fainelli wrote:
> On 01/03/2017 04:31 PM, David Gibson wrote:
> > On Tue, Jan 03, 2017 at 03:44:28PM -0800, Florian Fainelli wrote:
[snip]
> >> Digression: I was actually wondering if we may not have a need to do the
> >> same thing for "reg" properties, where a given device may have memory
> >> mapped I/O registers in one place, and another address in another bus,
> >> with a different address space, this is actually pretty common for e.g:
> >> PHY (Ethernet, PCIe, SATA or USB).
> >
> > I've wondered about something like that for some time (my working name
> > was 'bus-reg'). The use cases I encountered were on PPC4xx machines
> > which had lots of things controlled (at least partially) by the
> > sideband "DCR" (Device Control Register) bus. We did invent a
> > 'dcr-reg' property to cover that specific case, and I think something
> > similar has been done for some other sideband busses. Something like
> > 'bus-reg' would be a more general solution to the problem.
>
> Seems to me like syscon is pretty much what was invented in Linux to
> support that use case.
>
> > I believe the "classic" IEEE1275 way of solving this is to have
> > separate nodes on each of the relevant busses, with phandle pointers
> > linking them together. The relevant driver would claim all the
> > related nodes. Again, it gets pretty messy, though.
>
> Yes still pretty ugly.
>
> Device Tree tends to list resources as properties of the node that
> consumes them, which is fine, although it can lead to duplicate values
> in a given DTB, but one could also imagine, say listing all register
> resources as properties of the bus that decodes these addresses, and
> then having child nodes of that bus node reference via phandle their
> relevant "reg" cells. Something like this for instance:
>
> bus@deadbeef {
> reg = <0x10000000 0x100>, //UART 0
> <0x10000100 0x100> //UART 1
>
> uart@100 {
> compatible = "acme,uart";
> reg = <&bus 0>;
> };
> };
>
> You get the idea ;)
/me shivers :-)
The problem you've raised comes down in my opinion to the fact that a tree
simply can't represent a topology that isn't tree-like. The device tree more
or less lays down nodes from the point of view of control buses. As soon as
your device sits on multiple buses the device tree can't represent it
accurately. So far this hasn't really been an issue (probably thank to the
occasional hack), but with devices becoming more and more complex I wouldn't
be surprised if we had to really tackle this problem in the not too distant
future. A nasty example that comes to my mind is an SoC with two clusters of
CPU of different architectures (namely ARM and SH) where some peripheral are
accessible to both the ARM and SH side, but mapped at different addresses. So
far we've only described the ARM view of the system, but wouldn't it be lovely
to have a single DT that can cover both ? :-)
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
2017-01-04 1:03 ` Laurent Pinchart
@ 2017-01-04 1:19 ` Florian Fainelli
[not found] ` <663f501c-4646-8f15-cb90-0477ceff3daf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Florian Fainelli @ 2017-01-04 1:19 UTC (permalink / raw)
To: Laurent Pinchart
Cc: David Gibson, devicetree-spec-u79uwXL29TY76Z2rM5mHXA,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A
On 01/03/2017 05:03 PM, Laurent Pinchart wrote:
> Hi Florian,
>
> On Tuesday 03 Jan 2017 16:47:03 Florian Fainelli wrote:
>> On 01/03/2017 04:31 PM, David Gibson wrote:
>>> On Tue, Jan 03, 2017 at 03:44:28PM -0800, Florian Fainelli wrote:
>
> [snip]
>
>>>> Digression: I was actually wondering if we may not have a need to do the
>>>> same thing for "reg" properties, where a given device may have memory
>>>> mapped I/O registers in one place, and another address in another bus,
>>>> with a different address space, this is actually pretty common for e.g:
>>>> PHY (Ethernet, PCIe, SATA or USB).
>>>
>>> I've wondered about something like that for some time (my working name
>>> was 'bus-reg'). The use cases I encountered were on PPC4xx machines
>>> which had lots of things controlled (at least partially) by the
>>> sideband "DCR" (Device Control Register) bus. We did invent a
>>> 'dcr-reg' property to cover that specific case, and I think something
>>> similar has been done for some other sideband busses. Something like
>>> 'bus-reg' would be a more general solution to the problem.
>>
>> Seems to me like syscon is pretty much what was invented in Linux to
>> support that use case.
>>
>>> I believe the "classic" IEEE1275 way of solving this is to have
>>> separate nodes on each of the relevant busses, with phandle pointers
>>> linking them together. The relevant driver would claim all the
>>> related nodes. Again, it gets pretty messy, though.
>>
>> Yes still pretty ugly.
>>
>> Device Tree tends to list resources as properties of the node that
>> consumes them, which is fine, although it can lead to duplicate values
>> in a given DTB, but one could also imagine, say listing all register
>> resources as properties of the bus that decodes these addresses, and
>> then having child nodes of that bus node reference via phandle their
>> relevant "reg" cells. Something like this for instance:
>>
>> bus@deadbeef {
>> reg = <0x10000000 0x100>, //UART 0
>> <0x10000100 0x100> //UART 1
>>
>> uart@100 {
>> compatible = "acme,uart";
>> reg = <&bus 0>;
>> };
>> };
>>
>> You get the idea ;)
>
> /me shivers :-)
>
> The problem you've raised comes down in my opinion to the fact that a tree
> simply can't represent a topology that isn't tree-like. The device tree more
> or less lays down nodes from the point of view of control buses. As soon as
> your device sits on multiple buses the device tree can't represent it
> accurately.
I partially agree with that statement, the accurately part is what I
disagree with, you can represent it with some accuracy, just not
necessarily using standard properties, you may have to cook your own,
meaning the standard somehow failed to cover that part. The other part,
is that with a tree, you may have some repetition and multiple
references, which is far from ideal.
> So far this hasn't really been an issue (probably thank to the
> occasional hack), but with devices becoming more and more complex I wouldn't
> be surprised if we had to really tackle this problem in the not too distant
> future. A nasty example that comes to my mind is an SoC with two clusters of
> CPU of different architectures (namely ARM and SH) where some peripheral are
> accessible to both the ARM and SH side, but mapped at different addresses. So
> far we've only described the ARM view of the system, but wouldn't it be lovely
> to have a single DT that can cover both ? :-)
An argument could be made that your cluster is most likely not running
the same instance of the operating system (although there has been
research on that done before, not sure where that stands in real life?)
so while having a single blob would be nice, you most likely, for all
practical reasons, would duplicate what is necessary (which should be
reasonably easy with scripting/separate sources and include files) and
provide separate blobs to each OS instance?
Cheers
--
Florian
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <663f501c-4646-8f15-cb90-0477ceff3daf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2017-01-04 1:28 ` Laurent Pinchart
0 siblings, 0 replies; 11+ messages in thread
From: Laurent Pinchart @ 2017-01-04 1:28 UTC (permalink / raw)
To: Florian Fainelli
Cc: David Gibson, devicetree-spec-u79uwXL29TY76Z2rM5mHXA,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
grant.likely-QSEj5FYQhm4dnm+yROfE0A
Hi Florian,
On Tuesday 03 Jan 2017 17:19:29 Florian Fainelli wrote:
> On 01/03/2017 05:03 PM, Laurent Pinchart wrote:
> > On Tuesday 03 Jan 2017 16:47:03 Florian Fainelli wrote:
> >> On 01/03/2017 04:31 PM, David Gibson wrote:
> >>> On Tue, Jan 03, 2017 at 03:44:28PM -0800, Florian Fainelli wrote:
> >
> > [snip]
> >
> >>>> Digression: I was actually wondering if we may not have a need to do
> >>>> the same thing for "reg" properties, where a given device may have
> >>>> memory mapped I/O registers in one place, and another address in
> >>>> another bus, with a different address space, this is actually pretty
> >>>> common for e.g: PHY (Ethernet, PCIe, SATA or USB).
> >>>
> >>> I've wondered about something like that for some time (my working name
> >>> was 'bus-reg'). The use cases I encountered were on PPC4xx machines
> >>> which had lots of things controlled (at least partially) by the
> >>> sideband "DCR" (Device Control Register) bus. We did invent a
> >>> 'dcr-reg' property to cover that specific case, and I think something
> >>> similar has been done for some other sideband busses. Something like
> >>> 'bus-reg' would be a more general solution to the problem.
> >>
> >> Seems to me like syscon is pretty much what was invented in Linux to
> >> support that use case.
> >>
> >>> I believe the "classic" IEEE1275 way of solving this is to have
> >>> separate nodes on each of the relevant busses, with phandle pointers
> >>> linking them together. The relevant driver would claim all the
> >>> related nodes. Again, it gets pretty messy, though.
> >>
> >> Yes still pretty ugly.
> >>
> >> Device Tree tends to list resources as properties of the node that
> >> consumes them, which is fine, although it can lead to duplicate values
> >> in a given DTB, but one could also imagine, say listing all register
> >> resources as properties of the bus that decodes these addresses, and
> >> then having child nodes of that bus node reference via phandle their
> >> relevant "reg" cells. Something like this for instance:
> >>
> >> bus@deadbeef {
> >> reg = <0x10000000 0x100>, //UART 0
> >> <0x10000100 0x100> //UART 1
> >> uart@100 {
> >> compatible = "acme,uart";
> >> reg = <&bus 0>;
> >> };
> >> };
> >>
> >> You get the idea ;)
> >
> > /me shivers :-)
> >
> > The problem you've raised comes down in my opinion to the fact that a tree
> > simply can't represent a topology that isn't tree-like. The device tree
> > more or less lays down nodes from the point of view of control buses. As
> > soon as your device sits on multiple buses the device tree can't
> > represent it accurately.
>
> I partially agree with that statement, the accurately part is what I
> disagree with, you can represent it with some accuracy, just not
> necessarily using standard properties, you may have to cook your own,
> meaning the standard somehow failed to cover that part.
Of course, I meant using standard properties, or rather the DT core node
model. We now have bindings (named OF graph) that can represent a graph of
connected nodes using phandles.
> The other part, is that with a tree, you may have some repetition and
> multiple references, which is far from ideal.
>
> > So far this hasn't really been an issue (probably thank to the
> > occasional hack), but with devices becoming more and more complex I
> > wouldn't be surprised if we had to really tackle this problem in the not
> > too distant future. A nasty example that comes to my mind is an SoC with
> > two clusters of CPU of different architectures (namely ARM and SH) where
> > some peripheral are accessible to both the ARM and SH side, but mapped at
> > different addresses. So far we've only described the ARM view of the
> > system, but wouldn't it be lovely to have a single DT that can cover both
> > ? :-)
>
> An argument could be made that your cluster is most likely not running
> the same instance of the operating system (although there has been
> research on that done before, not sure where that stands in real life?)
In all practical use cases, yes, they would be running separate OS instances
(of either the same or different OSes).
> so while having a single blob would be nice, you most likely, for all
> practical reasons, would duplicate what is necessary (which should be
> reasonably easy with scripting/separate sources and include files) and
> provide separate blobs to each OS instance?
Sure, I'm not blocked here, it was more of a theoretical example, not
something for which I'm in need of a solution.
Another possibly more useful class of examples is related to multi-master
buses. For instance, the existing DT bindings can't represent an I2C bus that
has two masters inside the SoC, as I2C slaves have to be children of the I2C
bus master. Similarly we don't really have a good way to represent multi-
master I2S buses.
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Describe interrupts-extended property
[not found] ` <CAL_Jsq+2TVHGS2onm50rG_AxesJEBUhEGLZNEJN8XAGo4CbMgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-03 22:29 ` Florian Fainelli
@ 2017-01-13 8:51 ` Grant Likely
1 sibling, 0 replies; 11+ messages in thread
From: Grant Likely @ 2017-01-13 8:51 UTC (permalink / raw)
To: Rob Herring
Cc: Florian Fainelli,
devicetree-spec-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
On Tue, Jan 3, 2017 at 10:24 PM, Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote:
> Correcting Grant's email.
>
> On Tue, Jan 3, 2017 at 1:24 PM, Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> The interrupts-extended property is a common property used when
>> interrupt generating devices having interrupt lines in several interrupt
>> controllers with possibly distinct interrupt specifiers.
>>
>> Signed-off-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>
> I assume this is mostly copied from the kernel documentation. This
> needs Grant's ack as the kernel documentation license is ambiguous
> (default GPL) and the spec is Apache.
Looks fine to me. I've pulled it in.
Thanks,
g.
>
>> ---
>> source/devicetree-basics.rst | 34 ++++++++++++++++++++++++++++++++++
>> 1 file changed, 34 insertions(+)
>>
>> diff --git a/source/devicetree-basics.rst b/source/devicetree-basics.rst
>> index be80af3d825b..1bda0fa54e7a 100644
>> --- a/source/devicetree-basics.rst
>> +++ b/source/devicetree-basics.rst
>> @@ -955,6 +955,40 @@ Description:
>> to the interrupt parent. If this property is missing from a device, its
>> interrupt parent is assumed to be its devicetree parent.
>>
>> +interrupts-extended
>> +^^^^^^^^^^^^^^^^^^^
>> +
>> +Property: ``interrupts-extended``
>> +
>> +Value type: ``<phandle> <prop-encoded-array>``
>> +
>> +Description:
>> +
>> + The *interrupts-extended* property of a device node defines the interrupt or
>> + the interrupts that are generated by the device. In case where an interrupt
>
> In the case...
>
>> + generating devices has several interrupt lines, some of them having distinct
>
> s/devices/device/
>
>> + interrupt parents, the *interrupts-extended* property should be used to
>> + fully describe the interrupts of this device, relative to the interrupt
>> + controller(s), which is encoded by the phandle part of the property. The non
>> + phandle part of the property encodes the interrupt specifiers and obeys to
>> + the *interrupts* property description.
>> +
>> + If both *interrupts-extended* and *interrupts* properties are present, the
>> + *interrupts-extended* properties takes precedence, and the *interrupts*
>> + property may be provided to a client program for compatibility purposes.
>> +
>> +Example:
>> +
>> + A device with several interrupt lines in distinct interrupt controllers,
>> + having different interrupt specifiers is illustrated below. In this example
>> + ``pic`` is an interrupt controller with an *#interrupt-cells* specifier
>> + of 2, while ``gic`` is an interrupt controller with an *#interrupts-cells*
>> + specifier of 1.
>> +
>> +
>> + ``interrupts-extended = <&pic 0xA 8>, <&gic 0xda>;``
>> +
>> +
>> Properties for Interrupt Controllers
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> --
>> 2.9.3
>>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-01-13 8:51 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-03 19:24 [PATCH] Describe interrupts-extended property Florian Fainelli
[not found] ` <20170103192423.5838-1-f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-03 22:24 ` Rob Herring
[not found] ` <CAL_Jsq+2TVHGS2onm50rG_AxesJEBUhEGLZNEJN8XAGo4CbMgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-03 22:29 ` Florian Fainelli
2017-01-13 8:51 ` Grant Likely
2017-01-03 23:04 ` David Gibson
[not found] ` <20170103230436.GS12761-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-01-03 23:44 ` Florian Fainelli
[not found] ` <f04c76d4-996b-6ffd-d59e-eb992d0a912d-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-04 0:31 ` David Gibson
[not found] ` <20170104003147.GW12761-K0bRW+63XPQe6aEkudXLsA@public.gmane.org>
2017-01-04 0:47 ` Florian Fainelli
[not found] ` <0d9b43f1-147c-5761-9fdd-8ba28c690df9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-04 1:03 ` Laurent Pinchart
2017-01-04 1:19 ` Florian Fainelli
[not found] ` <663f501c-4646-8f15-cb90-0477ceff3daf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-04 1:28 ` Laurent Pinchart
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).