Merge tags 'devicetree-for-linus' and 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6
2nd set of device tree changes and SPI bug fixes for v3.3 * tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux-2.6: of/irq: Add interrupts-names property to name an irq resource of/address: Add reg-names property to name an iomem resource * tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6: spi/tegra: depend instead of select TEGRA_SYSTEM_DMA
This commit is contained in:
54
Documentation/devicetree/bindings/resource-names.txt
Normal file
54
Documentation/devicetree/bindings/resource-names.txt
Normal file
@@ -0,0 +1,54 @@
|
||||
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";
|
||||
interrupts = <11>, <12>;
|
||||
interrupt-names = "rx", "tx";
|
||||
};
|
||||
|
||||
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>;
|
||||
interrupt-names = "ohci", "ehci";
|
||||
};
|
@@ -14,7 +14,7 @@
|
||||
static struct of_bus *of_match_bus(struct device_node *np);
|
||||
static int __of_address_to_resource(struct device_node *dev,
|
||||
const __be32 *addrp, u64 size, unsigned int flags,
|
||||
struct resource *r);
|
||||
const char *name, struct resource *r);
|
||||
|
||||
/* Debug utility */
|
||||
#ifdef DEBUG
|
||||
@@ -215,7 +215,7 @@ int of_pci_address_to_resource(struct device_node *dev, int bar,
|
||||
addrp = of_get_pci_address(dev, bar, &size, &flags);
|
||||
if (addrp == NULL)
|
||||
return -EINVAL;
|
||||
return __of_address_to_resource(dev, addrp, size, flags, r);
|
||||
return __of_address_to_resource(dev, addrp, size, flags, NULL, r);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
|
||||
#endif /* CONFIG_PCI */
|
||||
@@ -529,7 +529,7 @@ EXPORT_SYMBOL(of_get_address);
|
||||
|
||||
static int __of_address_to_resource(struct device_node *dev,
|
||||
const __be32 *addrp, u64 size, unsigned int flags,
|
||||
struct resource *r)
|
||||
const char *name, struct resource *r)
|
||||
{
|
||||
u64 taddr;
|
||||
|
||||
@@ -551,7 +551,8 @@ static int __of_address_to_resource(struct device_node *dev,
|
||||
r->end = taddr + size - 1;
|
||||
}
|
||||
r->flags = flags;
|
||||
r->name = dev->full_name;
|
||||
r->name = name ? name : dev->full_name;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -569,11 +570,16 @@ int of_address_to_resource(struct device_node *dev, int index,
|
||||
const __be32 *addrp;
|
||||
u64 size;
|
||||
unsigned int flags;
|
||||
const char *name = NULL;
|
||||
|
||||
addrp = of_get_address(dev, index, &size, &flags);
|
||||
if (addrp == NULL)
|
||||
return -EINVAL;
|
||||
return __of_address_to_resource(dev, addrp, size, flags, r);
|
||||
|
||||
/* Get optional "reg-names" property to add a name to a resource */
|
||||
of_property_read_string_index(dev, "reg-names", index, &name);
|
||||
|
||||
return __of_address_to_resource(dev, addrp, size, flags, name, r);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_address_to_resource);
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -332,8 +332,7 @@ config SPI_STMP3XXX
|
||||
|
||||
config SPI_TEGRA
|
||||
tristate "Nvidia Tegra SPI controller"
|
||||
depends on ARCH_TEGRA
|
||||
select TEGRA_SYSTEM_DMA
|
||||
depends on ARCH_TEGRA && TEGRA_SYSTEM_DMA
|
||||
help
|
||||
SPI driver for NVidia Tegra SoCs
|
||||
|
||||
|
Reference in New Issue
Block a user