IBM Corp.
 (c) 2005 Becky Bruce <becky.bruce at freescale.com>,
     Freescale Semiconductor, FSL SOC and 32-bit additions
+(c) 2006 MontaVista Software, Inc.
+    Flash chip node definition
 
    May 18, 2005: Rev 0.1 - Initial draft, no chapter III yet.
 
                };
        };
 
+    g) Flash chip nodes
+
+    Flash chips (Memory Technology Devices) are often used for solid state
+    file systems on embedded devices.
+
+    Required properties:
+
+     - device_type : has to be "rom"
+     - compatible : Should specify what this ROM device is compatible with
+       (i.e. "onenand"). Currently, this is most likely to be "direct-mapped"
+       (which corresponds to the MTD physmap mapping driver).
+     - regs : Offset and length of the register set (or memory mapping) for
+       the device.
+
+    Recommended properties :
+
+     - bank-width : Width of the flash data bus in bytes. Required
+       for the NOR flashes (compatible == "direct-mapped" and others) ONLY.
+     - partitions : Several pairs of 32-bit values where the first value is
+       partition's offset from the start of the device and the second one is
+       partition size in bytes with LSB used to signify a read only
+       partititon (so, the parition size should always be an even number).
+     - partition-names : The list of concatenated zero terminated strings
+       representing the partition names.
+
+   Example:
+
+       flash@ff000000 {
+               device_type = "rom";
+               compatible = "direct-mapped";
+               regs = <ff000000 01000000>;
+               bank-width = <4>;
+               partitions = <00000000 00f80000
+                             00f80000 00080001>;
+               partition-names = "fs\0firmware";
+       };
+
    More devices will be defined as this spec matures.
 
 
 
 obj-$(CONFIG_FSL_SOC)          += fsl_soc.o
 obj-$(CONFIG_TSI108_BRIDGE)    += tsi108_pci.o tsi108_dev.o
 obj-$(CONFIG_QUICC_ENGINE)     += qe_lib/
+obj-$(CONFIG_MTD)              += rom.o
 
 ifeq ($(CONFIG_PPC_MERGE),y)
 obj-$(CONFIG_PPC_I8259)                += i8259.o
 
--- /dev/null
+/*
+ * ROM device registration
+ *
+ * (C) 2006 MontaVista Software, Inc. This file is licensed under
+ * the terms of the GNU General Public License version 2. This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+#include <linux/kernel.h>
+#include <asm/of_device.h>
+
+static int __init powerpc_flash_init(void)
+{
+       struct device_node *node = NULL;
+
+       /*
+        * Register all the devices which type is "rom"
+        */
+       while ((node = of_find_node_by_type(node, "rom")) != NULL) {
+               if (node->name == NULL) {
+                       printk(KERN_WARNING "powerpc_flash_init: found 'rom' "
+                               "device, but with no name, skipping...\n");
+                       continue;
+               }
+               of_platform_device_create(node, node->name, NULL);
+       }
+       return 0;
+}
+
+arch_initcall(powerpc_flash_init);