All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely@secretlab.ca>
To: Benoit Cousson <b-cousson@ti.com>
Cc: rob.herring@calxeda.com, devicetree-discuss@lists.ozlabs.org,
	tony@atomide.com, linux-omap@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 3/3] of/irq: Add interrupts-names property to name an irq resource
Date: Wed, 4 Jan 2012 00:17:49 -0700	[thread overview]
Message-ID: <20120104071749.GA15503@ponder.secretlab.ca> (raw)
In-Reply-To: <1323095036-3739-4-git-send-email-b-cousson@ti.com>

On Mon, Dec 05, 2011 at 03:23:56PM +0100, Benoit Cousson wrote:
> In a HW system, resources in general have name to identify them.
> The is the case as well for IORESOURCE_IRQ resources filled by DT
> "interrupts" entries.
> The current DT mechanism is relying on the "interrupts" order to identify
> the proper resource. This is error prone and not the natural way to
> retrieve an information in general.

I do not agree with this assessment.  interrupt property order has
worked quite well for a very long time.  There are some uses cases
that want to access it by-name, but I expect accessing by-index to
continue to be the preferred method.  I'm going to drop this paragraph
from the commit text.

> Moreover, the resource does support a name and an API is available to
> allow a driver to retrieve the resource using the name instead of an
> index.
> 
> Add a interrupts-names property to allow the possiblity to provide a name
> to any interrupts entries.
> If the name is available, use it to name the resource, otherwise
> keep the legacy device full name.
> 
> Signed-off-by: Benoit Cousson <b-cousson@ti.com>
> Cc: Grant Likely <grant.likely@secretlab.ca>
> Cc: Rob Herring <rob.herring@calxeda.com>
> ---
>  .../devicetree/bindings/interrupts-names.txt       |   50 ++++++++++++++++++++
>  drivers/of/irq.c                                   |   11 ++++-
>  2 files changed, 60 insertions(+), 1 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/interrupts-names.txt
> 
> diff --git a/Documentation/devicetree/bindings/interrupts-names.txt b/Documentation/devicetree/bindings/interrupts-names.txt
> new file mode 100644
> index 0000000..d9a796d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/interrupts-names.txt
> @@ -0,0 +1,50 @@
> +interrupts-names property
> +
> +In a HW system, physical resources in general have name to identify them.
> +The is the case as well for interrupt lines.
> +The current DT mechanism is relying on the "interrupts" order to identify
> +the proper resource. The interrupts-names is adding the possiblity to
> +provide a name to interrupts entries.
> +
> +Usage:
> +
> +This attribute must be used along with a regular interrupts entry. If not
> +it will be simply ignored.

This documentation is pretty much identical to the reg-names property
description.  I'll merge the two into a single file.

> +
> +
> +Example:
> +
> +
> +l4-abe {
> +	compatible = "simple-bus";
> +	#address-cells = <2>;
> +	#size-cells = <1>;
> +	ranges = <0 0 0x48000000 0x00001000>, /* MPU path */
> +		 <1 0 0x49000000 0x00001000>; /* L3 path */
> +	mcasp {
> +		compatible = "ti,mcasp";
> +		reg = <0 0x10 0x10>, <0 0x20 0x10>,
> +		      <1 0x10 0x10>, <1 0x20 0x10>;
> +		reg-names = "mpu", "dat",
> +			    "dma", "dma_dat";
> +		interrupts = <11>, <12>;
> +		interrupts-names = "rx", "tx";

Nitpick: I'm going to change the property name to "interrupt-names"
(dropping the 's' from interrupts).  After playing with the clock
binding (clocks vs. clock-names) and looking at what could be done
with the gpio binding (gpios vs. gpio-names), I think it 'feels' more
consistent to drop the s.

Merged, thanks.

> +	};
> +
> +	timer {
> +		compatible = "ti,timer";
> +		reg = <0 0x40 0x10>, <1 0x40 0x10>;
> +		reg-names = "mpu", "dma";
> +	};
> +};
> +
> +
> +usb {
> +	compatible = "ti,usb-host";
> +	reg = <0x4a064000 0x800>, <0x4a064800 0x200>,
> +	      <0x4a064c00 0x200>;
> +	reg-names = "config", "ohci", "ehci";
> +	interrupts = <14>, <15>;
> +	interrupts-names = "ohci", "ehci";
> +};
> +
> diff --git a/drivers/of/irq.c b/drivers/of/irq.c
> index 19c0115..604b53f 100644
> --- a/drivers/of/irq.c
> +++ b/drivers/of/irq.c
> @@ -346,9 +346,18 @@ int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
>  	/* Only dereference the resource if both the
>  	 * resource and the irq are valid. */
>  	if (r && irq != NO_IRQ) {
> +		const char *name = NULL;
> +
> +		/*
> +		 * Get optional "interrupts-names" property to add a name
> +		 * to the resource.
> +		 */
> +		of_property_read_string_index(dev, "interrupts-names", index,
> +					      &name);
> +
>  		r->start = r->end = irq;
>  		r->flags = IORESOURCE_IRQ;
> -		r->name = dev->full_name;
> +		r->name = name ? name : dev->full_name;
>  	}
>  
>  	return irq;
> -- 
> 1.7.0.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/3] of/irq: Add interrupts-names property to name an irq resource
Date: Wed, 4 Jan 2012 00:17:49 -0700	[thread overview]
Message-ID: <20120104071749.GA15503@ponder.secretlab.ca> (raw)
In-Reply-To: <1323095036-3739-4-git-send-email-b-cousson@ti.com>

On Mon, Dec 05, 2011 at 03:23:56PM +0100, Benoit Cousson wrote:
> In a HW system, resources in general have name to identify them.
> The is the case as well for IORESOURCE_IRQ resources filled by DT
> "interrupts" entries.
> The current DT mechanism is relying on the "interrupts" order to identify
> the proper resource. This is error prone and not the natural way to
> retrieve an information in general.

I do not agree with this assessment.  interrupt property order has
worked quite well for a very long time.  There are some uses cases
that want to access it by-name, but I expect accessing by-index to
continue to be the preferred method.  I'm going to drop this paragraph
from the commit text.

> Moreover, the resource does support a name and an API is available to
> allow a driver to retrieve the resource using the name instead of an
> index.
> 
> Add a interrupts-names property to allow the possiblity to provide a name
> to any interrupts entries.
> If the name is available, use it to name the resource, otherwise
> keep the legacy device full name.
> 
> Signed-off-by: Benoit Cousson <b-cousson@ti.com>
> Cc: Grant Likely <grant.likely@secretlab.ca>
> Cc: Rob Herring <rob.herring@calxeda.com>
> ---
>  .../devicetree/bindings/interrupts-names.txt       |   50 ++++++++++++++++++++
>  drivers/of/irq.c                                   |   11 ++++-
>  2 files changed, 60 insertions(+), 1 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/interrupts-names.txt
> 
> diff --git a/Documentation/devicetree/bindings/interrupts-names.txt b/Documentation/devicetree/bindings/interrupts-names.txt
> new file mode 100644
> index 0000000..d9a796d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/interrupts-names.txt
> @@ -0,0 +1,50 @@
> +interrupts-names property
> +
> +In a HW system, physical resources in general have name to identify them.
> +The is the case as well for interrupt lines.
> +The current DT mechanism is relying on the "interrupts" order to identify
> +the proper resource. The interrupts-names is adding the possiblity to
> +provide a name to interrupts entries.
> +
> +Usage:
> +
> +This attribute must be used along with a regular interrupts entry. If not
> +it will be simply ignored.

This documentation is pretty much identical to the reg-names property
description.  I'll merge the two into a single file.

> +
> +
> +Example:
> +
> +
> +l4-abe {
> +	compatible = "simple-bus";
> +	#address-cells = <2>;
> +	#size-cells = <1>;
> +	ranges = <0 0 0x48000000 0x00001000>, /* MPU path */
> +		 <1 0 0x49000000 0x00001000>; /* L3 path */
> +	mcasp {
> +		compatible = "ti,mcasp";
> +		reg = <0 0x10 0x10>, <0 0x20 0x10>,
> +		      <1 0x10 0x10>, <1 0x20 0x10>;
> +		reg-names = "mpu", "dat",
> +			    "dma", "dma_dat";
> +		interrupts = <11>, <12>;
> +		interrupts-names = "rx", "tx";

Nitpick: I'm going to change the property name to "interrupt-names"
(dropping the 's' from interrupts).  After playing with the clock
binding (clocks vs. clock-names) and looking at what could be done
with the gpio binding (gpios vs. gpio-names), I think it 'feels' more
consistent to drop the s.

Merged, thanks.

> +	};
> +
> +	timer {
> +		compatible = "ti,timer";
> +		reg = <0 0x40 0x10>, <1 0x40 0x10>;
> +		reg-names = "mpu", "dma";
> +	};
> +};
> +
> +
> +usb {
> +	compatible = "ti,usb-host";
> +	reg = <0x4a064000 0x800>, <0x4a064800 0x200>,
> +	      <0x4a064c00 0x200>;
> +	reg-names = "config", "ohci", "ehci";
> +	interrupts = <14>, <15>;
> +	interrupts-names = "ohci", "ehci";
> +};
> +
> diff --git a/drivers/of/irq.c b/drivers/of/irq.c
> index 19c0115..604b53f 100644
> --- a/drivers/of/irq.c
> +++ b/drivers/of/irq.c
> @@ -346,9 +346,18 @@ int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
>  	/* Only dereference the resource if both the
>  	 * resource and the irq are valid. */
>  	if (r && irq != NO_IRQ) {
> +		const char *name = NULL;
> +
> +		/*
> +		 * Get optional "interrupts-names" property to add a name
> +		 * to the resource.
> +		 */
> +		of_property_read_string_index(dev, "interrupts-names", index,
> +					      &name);
> +
>  		r->start = r->end = irq;
>  		r->flags = IORESOURCE_IRQ;
> -		r->name = dev->full_name;
> +		r->name = name ? name : dev->full_name;
>  	}
>  
>  	return irq;
> -- 
> 1.7.0.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2012-01-04  7:17 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-05 14:23 [PATCH 0/3] of: Add support for named irq and reg Benoit Cousson
2011-12-05 14:23 ` Benoit Cousson
2011-12-05 14:23 ` [PATCH 1/3] of/base: Take NULL string into account for property with multiple strings Benoit Cousson
2011-12-05 14:23   ` Benoit Cousson
2011-12-14 18:18   ` Tony Lindgren
2011-12-14 18:18     ` Tony Lindgren
2011-12-19 14:02   ` Rob Herring
2011-12-19 14:02     ` Rob Herring
2012-01-03 14:15     ` Cousson, Benoit
2012-01-03 14:15       ` Cousson, Benoit
2012-01-04  7:34       ` Grant Likely
2012-01-04  7:34         ` Grant Likely
2011-12-05 14:23 ` [PATCH 2/3] of/address: Add reg-names property to name an iomem resource Benoit Cousson
2011-12-05 14:23   ` Benoit Cousson
2011-12-05 14:23 ` [PATCH 3/3] of/irq: Add interrupts-names property to name an irq resource Benoit Cousson
2011-12-05 14:23   ` Benoit Cousson
2012-01-04  7:17   ` Grant Likely [this message]
2012-01-04  7:17     ` Grant Likely
     [not found]     ` <20120104071749.GA15503-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2012-01-04 14:15       ` Cousson, Benoit
2012-01-04 14:15         ` Cousson, Benoit
2011-12-19 13:50 ` [PATCH 0/3] of: Add support for named irq and reg Cousson, Benoit
2011-12-19 13:50   ` Cousson, Benoit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120104071749.GA15503@ponder.secretlab.ca \
    --to=grant.likely@secretlab.ca \
    --cc=b-cousson@ti.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=rob.herring@calxeda.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.