Skip to content

Commit

Permalink
[POWERPC] Document and implement an improved flash device binding for…
Browse files Browse the repository at this point in the history
… powerpc

This replaces the binding for flash chips in booting-without-of.txt
with an clarified and improved version.  It also makes
drivers/mtd/maps/physmap_of.c recognize this new binding.  Finally it
revises the Ebony device tree source to use the new binding as an
example.

Signed-off-by: David Gibson <[email protected]>
Acked-by: Segher Boessenkool <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
  • Loading branch information
dgibson authored and paulusmack committed Sep 13, 2007
1 parent 3c607ce commit 2099172
Show file tree
Hide file tree
Showing 3 changed files with 251 additions and 110 deletions.
92 changes: 58 additions & 34 deletions Documentation/powerpc/booting-without-of.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Table of Contents
g) Freescale SOC SEC Security Engines
h) Board Control and Status (BCSR)
i) Freescale QUICC Engine module (QE)
j) Flash chip nodes
j) CFI or JEDEC memory-mapped NOR flash
k) Global Utilities Block

VII - Specifying interrupt information for devices
Expand Down Expand Up @@ -1757,45 +1757,69 @@ platforms are moved over to use the flattened-device-tree model.
};
};

j) Flash chip nodes
j) CFI or JEDEC memory-mapped NOR flash

Flash chips (Memory Technology Devices) are often used for solid state
file systems on embedded devices.

Required properties:
- compatible : should contain the specific model of flash chip(s)
used, if known, followed by either "cfi-flash" or "jedec-flash"
- reg : Address range of the flash chip
- bank-width : Width (in bytes) of the flash bank. Equal to the
device width times the number of interleaved chips.
- device-width : (optional) Width of a single flash chip. If
omitted, assumed to be equal to 'bank-width'.
- #address-cells, #size-cells : Must be present if the flash has
sub-nodes representing partitions (see below). In this case
both #address-cells and #size-cells must be equal to 1.

For JEDEC compatible devices, the following additional properties
are defined:

- vendor-id : Contains the flash chip's vendor id (1 byte).
- device-id : Contains the flash chip's device id (1 byte).

In addition to the information on the flash bank itself, the
device tree may optionally contain additional information
describing partitions of the flash address space. This can be
used on platforms which have strong conventions about which
portions of the flash are used for what purposes, but which don't
use an on-flash partition table such as RedBoot.

Each partition is represented as a sub-node of the flash device.
Each node's name represents the name of the corresponding
partition of the flash device.

Flash partitions
- reg : The partition's offset and size within the flash bank.
- label : (optional) The label / name for this flash partition.
If omitted, the label is taken from the node name (excluding
the unit address).
- read-only : (optional) This parameter, if present, is a hint to
Linux that this flash partition should only be mounted
read-only. This is usually used for flash partitions
containing early-boot firmware images or data which should not
be clobbered.

- device_type : has to be "rom"
- compatible : Should specify what this flash device is compatible with.
Currently, this is most likely to be "direct-mapped" (which
corresponds to the MTD physmap mapping driver).
- reg : Offset and length of the register set (or memory mapping) for
the device.
- bank-width : Width of the flash data bus in bytes. Required
for the NOR flashes (compatible == "direct-mapped" and others) ONLY.

Recommended properties :

- 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
partition (so, the partition size should always be an even number).
- partition-names : The list of concatenated zero terminated strings
representing the partition names.
- probe-type : The type of probe which should be done for the chip
(JEDEC vs CFI actually). Valid ONLY for NOR flashes.

Example:
Example:

flash@ff000000 {
device_type = "rom";
compatible = "direct-mapped";
probe-type = "CFI";
reg = <ff000000 01000000>;
bank-width = <4>;
partitions = <00000000 00f80000
00f80000 00080001>;
partition-names = "fs\0firmware";
};
flash@ff000000 {
compatible = "amd,am29lv128ml", "cfi-flash";
reg = <ff000000 01000000>;
bank-width = <4>;
device-width = <1>;
#address-cells = <1>;
#size-cells = <1>;
fs@0 {
label = "fs";
reg = <0 f80000>;
};
firmware@f80000 {
label ="firmware";
reg = <f80000 80000>;
read-only;
};
};

k) Global Utilities Block

Expand Down
30 changes: 19 additions & 11 deletions arch/powerpc/boot/dts/ebony.dts
Original file line number Diff line number Diff line change
Expand Up @@ -138,13 +138,16 @@
interrupt-parent = <&UIC1>;

small-flash@0,80000 {
device_type = "rom";
compatible = "direct-mapped";
probe-type = "JEDEC";
compatible = "jedec-flash";
bank-width = <1>;
partitions = <0 80000>;
partition-names = "OpenBIOS";
reg = <0 80000 80000>;
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "OpenBIOS";
reg = <0 80000>;
read-only;
};
};

ds1743@1,0 {
Expand All @@ -154,14 +157,19 @@
};

large-flash@2,0 {
device_type = "rom";
compatible = "direct-mapped";
probe-type = "JEDEC";
compatible = "jedec-flash";
bank-width = <1>;
partitions = <0 380000
380000 80000>;
partition-names = "fs", "firmware";
reg = <2 0 400000>;
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "fs";
reg = <0 380000>;
};
partition@380000 {
label = "firmware";
reg = <380000 80000>;
};
};

ir@3,0 {
Expand Down
Loading

0 comments on commit 2099172

Please sign in to comment.