Horrible Bug? AMD29LV400BB with mtd in 2.6.10rc2
Ben Dooks
ben at fluff.org.uk
Thu Dec 2 19:46:01 EST 2004
On Thu, Dec 02, 2004 at 11:56:07PM +0100, K.F.J. Martens wrote:
> Hi All,
>
> I'm currently developing a flash file system for the TomTom GO, a car
> navigation system that employs an ARM processor.
>
> In it is an EON29LV400BB flash chip, which is entirely compatible with
> AMD's AM29LV400BB.
>
> Now, what I did was copy the AM29LV400BB definition in
> mtd/chips/jedec_probe.c to a new definition in the struct amd_flash_info
> array jedec_table like so:
>
>
> },{
> .mfr_id = MANUFACTURER_EON,
> .dev_id = EON29LV400BB,
> .name = "EON AM29LV400BB",
> .uaddr = {
> [0] = MTD_UADDR_0x0AAA_0x0555, /* x8 */
> [1] = MTD_UADDR_0x0555_0x02AA, /* x16 */
> },
> .DevSize = SIZE_512KiB,
> .CmdSet = P_ID_AMD_STD,
> .NumEraseRegions= 4,
> .regions = {
> ERASEINFO(0x04000,1),
> ERASEINFO(0x02000,2),
> ERASEINFO(0x08000,1),
> ERASEINFO(0x10000,7),
> }
> }, {
>
>
>
> Now, here comes. This does not work, and the reason is that the x8 and
> x16 addresses are swapped. It's a bit late now to hook up one of those
> devices and paste the exact error message, but it was something along
> the line of 'MTD jedec_match(): 0x0555 0x0aaa did not match'
>
> If I reverse them like so:
>
>
> [0] = MTD_UADDR_0x0555_0x02AA, /* x8 */
> [1] = MTD_UADDR_0x0AAA_0x0555, /* x16 */
>
There has been some fixing in the jedec and similar probe code
to fix the use of the fields of device width / overlap due to
incorrect addressing being used for the chip commands.
--
Ben (ben at fluff.org, http://www.fluff.org/)
'a smiley only costs 4 bytes'
More information about the linux-mtd
mailing list