DOC 2000 problems on PowerPC

Felix Radensky felix at allot.com
Sun May 13 08:57:11 EDT 2001


Hi, all

I'm trying to utilize DOC 2000 (MD2202-D96) on our custom
board based on 405GP PowerPC processor. I'm using the
latest cvs mtd drivers and 2.4.2 kernel from Monta Vista
(ftp://ftp.mvista.com/pub/Area51/ppc-405gp/files_01.04.12).

The DOC size is 96M. It's mapped to the physical address
0xf6000000.  The kernel properly detects the chip:

M-Systems DiskOnChip driver. (C) 1999 Machine Vision Holdings, Inc.
Using configured probe address 0xf6000000
DiskOnChip 2000 found at address 0xF6000000
Flash chip found: Manufacturer ID: 98, Chip ID: 75 (Toshiba
TC58256FT/DC)
3 flash chips found. Total DiskOnChip size: 96 Mb

The contents of /proc/mtd:

dev:    size   erasesize  name
mtd0: 06000000 00004000 "DiskOnChip 2000"

As you see, the erase size is 16k. After commenting out the 8k erase
size check
in nftl_format.c, I was able to format /dev/mtd0. Here is the output of
nftldump:

NFTL Media Header found at offset 0x00000000:
NumEraseUnits:    6144
FirstPhysicalEUN: 0
Formatted Size:   100597760
UnitSizeFactor:   0xff
Second NFTL Media Header found at offset 0x00004000
EraseMark not present in unit 0: 693c
Unit 0 is free
EraseMark not present in unit 1: 693c
Unit 1 is free
....................

However, I cannot use fdisk to partition /dev/nftla, as nftl driver
reports wrong device geometry:

Command (m for help): p

Disk /dev/nftla: 1 heads, 1 sectors, 96 cylinders
Units = cylinders of 1 * 512 bytes

I suspect that the problem is in find_boot_record() routine of
nftlmout.c.
The following line seems suspicious on big-endian machine:

nftl->numvunits = le32_to_cpu(mh->FormattedSize) / nftl->EraseSize;

so, I've changed it to

nftl->numvunits = mh->FormattedSize / nftl->EraseSize;

Now I get the following error at boot time:

Cannot calculate an NFTL geometry to match size of 0x2ff80.
Using C:1023 H:16 S:12 (== 0x2ff40 sects)
NFTL_setup: cylinders = 1023, heads = 16, sectors = 12
Partition check:
   nftla: unknown partition table

I went on and tried to create a single ext2 partition spanning the
entire  device. But
fdisk complained:

Calling ioctl() to re-read partition table.
    nftla: nftla1
    nftla:end_request: I/O error, dev 5d:00 (unknown), sector 0
    unable to read partition table


Please help.

TIA.

Felix.





More information about the linux-mtd mailing list