pxa/hx4700: Correct StrataFlash block size discovery
authorPaul Parsons <lost.distance@yahoo.com>
Mon, 27 Feb 2012 01:17:19 +0000 (01:17 +0000)
committerHaojian Zhuang <haojian.zhuang@marvell.com>
Tue, 28 Feb 2012 02:20:35 +0000 (10:20 +0800)
commit11407e5713ad85f416705a1ba0daf490ffaeda42
treeb4a9f1eb870666b6d7fae0ff0622e9d6509dbddb
parent6b21d18ed50c7d145220b0724ea7f2613abf0f95
pxa/hx4700: Correct StrataFlash block size discovery

The HP iPAQ hx4700 has 128Mb of flash provided by two Intel StrataFlash devices.
The hx4700 platform configuration defines a single 128Mb flash resource,
resulting in the MTD physmap-flash driver probing the first device only and
presuming the second device is identical:

physmap platform flash device: 08000000 at 00000000
physmap-flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x008816
physmap-flash: Found 2 x16 devices at 0x4000000 in 32-bit bank
<snip>
erase region 0: offset=0x0,size=0x10000,blocks=4
erase region 1: offset=0x40000,size=0x40000,blocks=255
erase region 2: offset=0x4000000,size=0x10000,blocks=4
erase region 3: offset=0x4040000,size=0x40000,blocks=255
physmap-flash: 2 set(s) of 2 interleaved chips --> 32 partitions of 4096 KiB

Unfortunately the two devices are not identical. The first has a device ID of
0x8816, identifying a bottom parameter device. The second has a device ID of
0x8813, identifying a top parameter device. By not probing the second device,
physmap-flash does not discover the correct block sizes.

This patch splits the configuration into two 64Mb flash resources, forcing
physmap-flash to probe both devices and thus discover the correct block sizes:

physmap platform flash device: 04000000 at 00000000
physmap-flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x008816
<snip>
erase region 0: offset=0x0,size=0x10000,blocks=4
erase region 1: offset=0x40000,size=0x40000,blocks=255
physmap-flash: 1 set(s) of 2 interleaved chips --> 16 partitions of 4096 KiB
physmap platform flash device: 04000000 at 04000000
physmap-flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x008813
<snip>
erase region 0: offset=0x0,size=0x40000,blocks=255
erase region 1: offset=0x3fc0000,size=0x10000,blocks=4
physmap-flash: 1 set(s) of 2 interleaved chips --> 16 partitions of 4096 KiB
Concatenating MTD devices:
(0): "physmap-flash"
(1): "physmap-flash"
into device "physmap-flash"

Signed-off-by: Paul Parsons <lost.distance@yahoo.com>
Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
arch/arm/mach-pxa/hx4700.c