Programming the flash chip in the Dlink DNS323
Rogan Dawes
rogan at dawes.za.net
Tue Jul 20 11:34:10 EDT 2010
Hi folks,
I am trying to add support for the DNS323 to U-Boot, but am struggling
with the flash chip, a Spansion S29GL064M90TFIR4. I am unable to get it
to generate the appropriate CFI responses. In fact, I cannot even get it
to react to the sequence to trigger the manufacturer ID, although I can
get it to show the QRY response.
This is what I get (from the u-boot command line):
DNS323B1> mw.b 0xf4000000 0xF0
DNS323B1> md.b 0xf4000000 0x40
f4000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
f4000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
f4000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
f4000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
DNS323B1> mw.b 0xf40000aa 0x98
DNS323B1> md.b 0xf4000000 0x40
f4000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
f4000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
f4000020: 51 51 52 52 59 59 02 02 00 00 40 40 00 00 00 00
QQRRYY....@@....
f4000030: 00 00 00 00 00 00 27 27 36 36 00 00 00 00 04 04
......''66......
The apparently odd thing is that rather than "QRY" at 0x10, I get
"QQRRYY" at 0x20, but the device should be in 8-bit mode, from all the
info I've found (including the kernel sources).
It seems that there is support for it in the mainstream kernel, and as
far as I can see, it is being detected using CFI.
Here is where it is set up:
arch/arm/mach-orion5x/dns323-setup.c
which simply defines the flash addresses and bus width:
static struct physmap_flash_data dns323_nor_flash_data = {
.width = 1,
.parts = dns323_partitions,
.nr_parts = ARRAY_SIZE(dns323_partitions)
};
static struct resource dns323_nor_flash_resource = {
.flags = IORESOURCE_MEM,
.start = DNS323_NOR_BOOT_BASE,
.end = DNS323_NOR_BOOT_BASE + DNS323_NOR_BOOT_SIZE - 1,
};
static struct platform_device dns323_nor_flash = {
.name = "physmap-flash",
.id = 0,
.dev = {
.platform_data = &dns323_nor_flash_data,
},
.resource = &dns323_nor_flash_resource,
.num_resources = 1,
};
Does anyone have any insight into this chip, and could help me add
support for it to U-Boot?
Many thanks.
Rogan
More information about the linux-mtd
mailing list