Document and implement an improved flash device binding for powerpc

Josh Boyer jwboyer at linux.vnet.ibm.com
Wed Aug 29 04:39:26 EST 2007


On Tue, 28 Aug 2007 13:47:51 +1000
David Gibson <david at gibson.dropbear.id.au> wrote:

> This patch 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 <david at gibson.dropbear.id.au>
> ---
> I don't know that this is ready yet, but I thought I'd try to kick
> along the rather stalled process of getting this new flash binding in
> place by sending out my current draft.
> 
> Index: working-2.6/Documentation/powerpc/booting-without-of.txt
> ===================================================================
> --- working-2.6.orig/Documentation/powerpc/booting-without-of.txt	2007-08-28 13:25:42.000000000 +1000
> +++ working-2.6/Documentation/powerpc/booting-without-of.txt	2007-08-28 13:38:10.000000000 +1000
> @@ -1757,45 +1757,46 @@ platforms are moved over to use the flat
>  		};
>  	};
> 
> -    j) Flash chip nodes
> +   j) CFI or JEDEC memory-mapped NOR flash

> -   Example:
> -
> - 	flash at 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";
> - 	};

Instead of removing it completely, could you fix the example to match
the new binding?

> +     - 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.

Why is that?  Are we explicitly not caring about chips that are > 4
GiB?  I think MTD has a limitation here anyway, but it seems a bit
short-sighted to explicitly limit what #address-cells can be.

> +
> +    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 partitions is represented as a sub-node of the flash device.

<nit> "Each partition.." </nit>

> 
> Index: working-2.6/drivers/mtd/maps/physmap_of.c
> ===================================================================
> --- working-2.6.orig/drivers/mtd/maps/physmap_of.c	2007-08-28 13:25:42.000000000 +1000
> +++ working-2.6/drivers/mtd/maps/physmap_of.c	2007-08-28 13:26:43.000000000 +1000
> @@ -4,6 +4,9 @@
>   * Copyright (C) 2006 MontaVista Software Inc.
>   * Author: Vitaly Wool <vwool at ru.mvista.com>
>   *
> + * Revised to handle newer style flash binding by:
> + *   Copyright (C) 2007 David Gibson, IBM Corporation.
> + *
>   * This program is free software; you can redistribute  it and/or modify it
>   * under  the terms of  the GNU General  Public License as published by the
>   * Free Software Foundation;  either version 2 of the  License, or (at your
> @@ -30,56 +33,129 @@ struct physmap_flash_info {
>  	struct map_info		map;
>  	struct resource		*res;
>  #ifdef CONFIG_MTD_PARTITIONS
> -	int			nr_parts;
>  	struct mtd_partition	*parts;
>  #endif
>  };
> 
> -static const char *rom_probe_types[] = { "cfi_probe", "jedec_probe", "map_rom", NULL };
> -#ifdef CONFIG_MTD_PARTITIONS
> -static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };
> -#endif
> -
>  #ifdef CONFIG_MTD_PARTITIONS
> -static int parse_flash_partitions(struct device_node *node,
> -		struct mtd_partition **parts)
> +static int parse_obsolete_partitions(struct physmap_flash_info *info,
> +				     struct device_node *dp)
>  {

If this is going to be obsoleted, can we put a printk in here whining
about the fact that the device tree still uses it if parititions are
found?

josh



More information about the Linuxppc-dev mailing list