diff options
author | Vitaly Wool <vwool@ru.mvista.com> | 2006-11-20 08:32:39 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-12-04 04:41:24 -0500 |
commit | 28f9ec349ae47c91768b7bc5607db4442c818e11 (patch) | |
tree | 548d75d56ffefd80c8c0fc85afd39fad2d3f156f | |
parent | a5715d6dfc85e002bfad68bb2858cf5a248e2060 (diff) |
[POWERPC] Add of_platform support for ROM devices
This adds support for flash device descriptions to the OF device tree.
It's inspired by and partially borrowed from Sergei's patch "[RFC]
Adding MTD to device tree.patch".
Signed-off-by: Vitaly Wool <vwool@ru.mvista.com>
Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 39 | ||||
-rw-r--r-- | arch/powerpc/sysdev/Makefile | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/rom.c | 31 |
3 files changed, 71 insertions, 0 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index 4ac2d641fcb6..b3bd36668db3 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
@@ -6,6 +6,8 @@ | |||
6 | IBM Corp. | 6 | IBM Corp. |
7 | (c) 2005 Becky Bruce <becky.bruce at freescale.com>, | 7 | (c) 2005 Becky Bruce <becky.bruce at freescale.com>, |
8 | Freescale Semiconductor, FSL SOC and 32-bit additions | 8 | Freescale Semiconductor, FSL SOC and 32-bit additions |
9 | (c) 2006 MontaVista Software, Inc. | ||
10 | Flash chip node definition | ||
9 | 11 | ||
10 | May 18, 2005: Rev 0.1 - Initial draft, no chapter III yet. | 12 | May 18, 2005: Rev 0.1 - Initial draft, no chapter III yet. |
11 | 13 | ||
@@ -1693,6 +1695,43 @@ platforms are moved over to use the flattened-device-tree model. | |||
1693 | }; | 1695 | }; |
1694 | }; | 1696 | }; |
1695 | 1697 | ||
1698 | g) Flash chip nodes | ||
1699 | |||
1700 | Flash chips (Memory Technology Devices) are often used for solid state | ||
1701 | file systems on embedded devices. | ||
1702 | |||
1703 | Required properties: | ||
1704 | |||
1705 | - device_type : has to be "rom" | ||
1706 | - compatible : Should specify what this ROM device is compatible with | ||
1707 | (i.e. "onenand"). Currently, this is most likely to be "direct-mapped" | ||
1708 | (which corresponds to the MTD physmap mapping driver). | ||
1709 | - regs : Offset and length of the register set (or memory mapping) for | ||
1710 | the device. | ||
1711 | |||
1712 | Recommended properties : | ||
1713 | |||
1714 | - bank-width : Width of the flash data bus in bytes. Required | ||
1715 | for the NOR flashes (compatible == "direct-mapped" and others) ONLY. | ||
1716 | - partitions : Several pairs of 32-bit values where the first value is | ||
1717 | partition's offset from the start of the device and the second one is | ||
1718 | partition size in bytes with LSB used to signify a read only | ||
1719 | partititon (so, the parition size should always be an even number). | ||
1720 | - partition-names : The list of concatenated zero terminated strings | ||
1721 | representing the partition names. | ||
1722 | |||
1723 | Example: | ||
1724 | |||
1725 | flash@ff000000 { | ||
1726 | device_type = "rom"; | ||
1727 | compatible = "direct-mapped"; | ||
1728 | regs = <ff000000 01000000>; | ||
1729 | bank-width = <4>; | ||
1730 | partitions = <00000000 00f80000 | ||
1731 | 00f80000 00080001>; | ||
1732 | partition-names = "fs\0firmware"; | ||
1733 | }; | ||
1734 | |||
1696 | More devices will be defined as this spec matures. | 1735 | More devices will be defined as this spec matures. |
1697 | 1736 | ||
1698 | 1737 | ||
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile index bae874626fc3..ee7c6d48af7f 100644 --- a/arch/powerpc/sysdev/Makefile +++ b/arch/powerpc/sysdev/Makefile | |||
@@ -11,6 +11,7 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o | |||
11 | obj-$(CONFIG_FSL_SOC) += fsl_soc.o | 11 | obj-$(CONFIG_FSL_SOC) += fsl_soc.o |
12 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o | 12 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o |
13 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ | 13 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ |
14 | obj-$(CONFIG_MTD) += rom.o | ||
14 | 15 | ||
15 | ifeq ($(CONFIG_PPC_MERGE),y) | 16 | ifeq ($(CONFIG_PPC_MERGE),y) |
16 | obj-$(CONFIG_PPC_I8259) += i8259.o | 17 | obj-$(CONFIG_PPC_I8259) += i8259.o |
diff --git a/arch/powerpc/sysdev/rom.c b/arch/powerpc/sysdev/rom.c new file mode 100644 index 000000000000..bf5b3f10e6c6 --- /dev/null +++ b/arch/powerpc/sysdev/rom.c | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * ROM device registration | ||
3 | * | ||
4 | * (C) 2006 MontaVista Software, Inc. This file is licensed under | ||
5 | * the terms of the GNU General Public License version 2. This program | ||
6 | * is licensed "as is" without any warranty of any kind, whether express | ||
7 | * or implied. | ||
8 | */ | ||
9 | |||
10 | #include <linux/kernel.h> | ||
11 | #include <asm/of_device.h> | ||
12 | |||
13 | static int __init powerpc_flash_init(void) | ||
14 | { | ||
15 | struct device_node *node = NULL; | ||
16 | |||
17 | /* | ||
18 | * Register all the devices which type is "rom" | ||
19 | */ | ||
20 | while ((node = of_find_node_by_type(node, "rom")) != NULL) { | ||
21 | if (node->name == NULL) { | ||
22 | printk(KERN_WARNING "powerpc_flash_init: found 'rom' " | ||
23 | "device, but with no name, skipping...\n"); | ||
24 | continue; | ||
25 | } | ||
26 | of_platform_device_create(node, node->name, NULL); | ||
27 | } | ||
28 | return 0; | ||
29 | } | ||
30 | |||
31 | arch_initcall(powerpc_flash_init); | ||