[RFC PATCH 00/11] Full device tree support for ARM Versatile

From: Grant Likely
Date: Thu Jun 16 2011 - 00:40:41 EST

This series of patches is all over the place, and touches both
core infrastructure and board ports. The patches also vary quite a
bit in terms of quality and readiness for merging. However, I wanted
to get the whole lot out onto the list together so it can be seen
exactly what needs to be done to convert an ARM platform over to
registering devices directly out of the DT.

This first 3 patches are an early implementation of irq_domains, plus
some helpers to make creating a simple irq_domain easy. I've already
posted the first patch before, and I haven't responded to any comments
yet. These patches are needed so that DT irq connections can be
correctly mapped into the Linux IRQ numberspace.

Patches 4-7 modify the core DT infrastructure to create a new helper
for registering devices (has slightly different semantics from the
older of_platform_bus_probe()), working with AMBA devices, and
allowing platform code to provide a lookup table of 'preferred' names
and platform_data for DT described devices.

The use of platform_data here is sure to raise an eyebrow or two, but
I assure you it is both necessary and temporary. Necessary because it
allows platforms to transition to DT without having to fix all
name-based clock connections and platform_data usage in device
drivers. Temporary because platform lookup tables will get removed
after the drivers do get fixed.

Patch 8 is a trivial powerpc patch to migrate a platform to the newer
infrastructure, and patches 9 & 10 are also trivial infrastructure

Patch 11 is the main event. It creates a new versatile machine
definition which matches against a versatile device tree, and all
device registrations are generated from DT data. I've tested this one
on the QEMU versatile model, but not real hardware. Most certainly
not everything is working here yet. However, it is an example of how
to migrate a platform over to using the DT.



Grant Likely (11):
irq: add irq_domain translation infrastructure
of/address: Add of_find_matching_node_by_address helper
dt/irq: add irq_domain_add_simple() helper
dt: add of_platform_populate() for creating device from the device tree
dt: Add default match table for bus ids
drivers/amba: create devices from device tree
dt/platform: allow device name to be overridden
powerpc/5200: convert mpc5200 to use of_platform_populate()
arm/dt: Add dt machine definition
arm/dt: Add skeleton dtsi file
arm/versatile: Add device tree support

.../devicetree/bindings/arm/primecell.txt | 21 ++
arch/arm/boot/dts/skeleton.dtsi | 13 +
arch/arm/boot/dts/versatile-ab.dts | 185 +++++++++++++++++++
arch/arm/boot/dts/versatile-pb.dts | 48 +++++
arch/arm/include/asm/mach/arch.h | 9 +
arch/arm/include/asm/prom.h | 5 -
arch/arm/kernel/devtree.c | 14 -
arch/arm/mach-versatile/Kconfig | 8 +
arch/arm/mach-versatile/Makefile | 1
arch/arm/mach-versatile/core.c | 61 ++++++
arch/arm/mach-versatile/core.h | 5 +
arch/arm/mach-versatile/versatile_dt.c | 66 +++++++
arch/microblaze/include/asm/irq.h | 10 -
arch/microblaze/kernel/irq.c | 7 -
arch/mips/include/asm/irq.h | 5 -
arch/mips/kernel/prom.c | 14 -
arch/powerpc/include/asm/irq.h | 1
arch/powerpc/platforms/52xx/mpc52xx_common.c | 10 -
arch/x86/include/asm/irq_controller.h | 12 -
arch/x86/include/asm/prom.h | 10 -
arch/x86/kernel/devicetree.c | 101 +++-------
drivers/of/address.c | 18 ++
drivers/of/platform.c | 196 +++++++++++++++++++-
include/linux/irq.h | 92 +++++++++
include/linux/of_address.h | 4
include/linux/of_irq.h | 2
include/linux/of_platform.h | 40 ++++
kernel/irq/Makefile | 2
kernel/irq/irqdomain.c | 193 ++++++++++++++++++++
29 files changed, 994 insertions(+), 159 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arm/primecell.txt
create mode 100644 arch/arm/boot/dts/skeleton.dtsi
create mode 100644 arch/arm/boot/dts/versatile-ab.dts
create mode 100644 arch/arm/boot/dts/versatile-pb.dts
create mode 100644 arch/arm/mach-versatile/versatile_dt.c
delete mode 100644 arch/x86/include/asm/irq_controller.h
create mode 100644 kernel/irq/irqdomain.c

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/