From 35f3da32af0e8970cc41288d4a7e3bd32399900e Mon Sep 17 00:00:00 2001 From: Benoit Cousson Date: Mon, 5 Dec 2011 15:23:55 +0100 Subject: of/address: Add reg-names property to name an iomem resource Add a reg-names property to allow for reg regions to be reference by name instead of by index. Some devices have multiple register regions which are more naturally referenced by name. If the name is available, use it to name the resource when creating a devices. Otherwise keep the device name. Signed-off-by: Benoit Cousson Cc: Grant Likely Cc: Rob Herring [Generalized documentation to be for any -names property] Signed-off-by: Grant Likely --- .../devicetree/bindings/resource-names.txt | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Documentation/devicetree/bindings/resource-names.txt (limited to 'Documentation') diff --git a/Documentation/devicetree/bindings/resource-names.txt b/Documentation/devicetree/bindings/resource-names.txt new file mode 100644 index 00000000000..8405b956aca --- /dev/null +++ b/Documentation/devicetree/bindings/resource-names.txt @@ -0,0 +1,50 @@ +Some properties contain an ordered list of 1 or more datum which are +normally accessed by index. However, some devices will have multiple +values which are more naturally accessed by name. Device nodes can +include a supplemental property for assigning names to each of the list +items. The names property consists of a list of strings in the same +order as the data in the resource property. + +The following supplemental names properties are defined. + +Resource Property Supplemental Names Property +----------------- --------------------------- +reg reg-names +clocks clock-names +interrupts interrupt-names + +Usage: + +The -names property must be used in conjunction with the normal resource +property. If not it will be ignored. + +Examples: + +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"; + }; + + 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"; +}; -- cgit v1.2.3-70-g09d2 From 661db794eb8179c7bea02f159bb691a2fff4a8e0 Mon Sep 17 00:00:00 2001 From: Benoit Cousson Date: Mon, 5 Dec 2011 15:23:56 +0100 Subject: of/irq: Add interrupts-names property to name an irq resource Add a interrupts-names property to allow the possibility to provide a name to any interrupts entries. If the name is available, use it to name the resource, otherwise keep the device full name. Signed-off-by: Benoit Cousson Cc: Grant Likely Cc: Rob Herring [grant.likely: use "interrupt-names" and tidy documentation] Signed-off-by: Grant Likely --- Documentation/devicetree/bindings/resource-names.txt | 4 ++++ drivers/of/irq.c | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'Documentation') diff --git a/Documentation/devicetree/bindings/resource-names.txt b/Documentation/devicetree/bindings/resource-names.txt index 8405b956aca..e280fef6f26 100644 --- a/Documentation/devicetree/bindings/resource-names.txt +++ b/Documentation/devicetree/bindings/resource-names.txt @@ -32,6 +32,8 @@ l4-abe { <1 0x10 0x10>, <1 0x20 0x10>; reg-names = "mpu", "dat", "dma", "dma_dat"; + interrupts = <11>, <12>; + interrupt-names = "rx", "tx"; }; timer { @@ -47,4 +49,6 @@ usb { reg = <0x4a064000 0x800>, <0x4a064800 0x200>, <0x4a064c00 0x200>; reg-names = "config", "ohci", "ehci"; + interrupts = <14>, <15>; + interrupt-names = "ohci", "ehci"; }; diff --git a/drivers/of/irq.c b/drivers/of/irq.c index 0f0cfa3bca3..9cf00602f56 100644 --- a/drivers/of/irq.c +++ b/drivers/of/irq.c @@ -341,9 +341,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) { + const char *name = NULL; + + /* + * Get optional "interrupts-names" property to add a name + * to the resource. + */ + of_property_read_string_index(dev, "interrupt-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; -- cgit v1.2.3-70-g09d2