[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>
This commit is contained in:
Родитель
a5715d6dfc
Коммит
28f9ec349a
|
@ -6,6 +6,8 @@
|
||||||
IBM Corp.
|
IBM Corp.
|
||||||
(c) 2005 Becky Bruce <becky.bruce at freescale.com>,
|
(c) 2005 Becky Bruce <becky.bruce at freescale.com>,
|
||||||
Freescale Semiconductor, FSL SOC and 32-bit additions
|
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.
|
May 18, 2005: Rev 0.1 - Initial draft, no chapter III yet.
|
||||||
|
|
||||||
|
@ -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.
|
More devices will be defined as this spec matures.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
|
||||||
obj-$(CONFIG_FSL_SOC) += fsl_soc.o
|
obj-$(CONFIG_FSL_SOC) += fsl_soc.o
|
||||||
obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
|
obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
|
||||||
obj-$(CONFIG_QUICC_ENGINE) += qe_lib/
|
obj-$(CONFIG_QUICC_ENGINE) += qe_lib/
|
||||||
|
obj-$(CONFIG_MTD) += rom.o
|
||||||
|
|
||||||
ifeq ($(CONFIG_PPC_MERGE),y)
|
ifeq ($(CONFIG_PPC_MERGE),y)
|
||||||
obj-$(CONFIG_PPC_I8259) += i8259.o
|
obj-$(CONFIG_PPC_I8259) += i8259.o
|
||||||
|
|
|
@ -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);
|
Загрузка…
Ссылка в новой задаче