Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81d48f0a authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
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";
};
+11 −5
Original line number Diff line number Diff line
@@ -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);

+10 −1
Original line number Diff line number Diff line
@@ -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;
+1 −2
Original line number Diff line number Diff line
@@ -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