Skip to content

Commit

Permalink
[POWERPC] Add of_platform support for ROM devices
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Vitaly Wool authored and Paul Mackerras committed Dec 4, 2006
1 parent a5715d6 commit 28f9ec3
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
39 changes: 39 additions & 0 deletions Documentation/powerpc/booting-without-of.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
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.

Expand Down Expand Up @@ -1693,6 +1695,43 @@ platforms are moved over to use the flattened-device-tree model.
};
};

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.


Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/sysdev/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
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
Expand Down
31 changes: 31 additions & 0 deletions arch/powerpc/sysdev/rom.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* 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);

0 comments on commit 28f9ec3

Please sign in to comment.