Can't load DOC driver, DOC address unknown?

Wolter Kamphuis wolter.kamphuis at
Thu Mar 10 10:35:07 EST 2005


We're working on the Linux port for the E-ten P700. We've got a problem
accessing the DiskOnChip (Millennium Plus 64Mb). The spec's we have
(possibly outdated) say it should be mapped at address 0xA4000000 but
the driver (doc2001plus) can't find it there.

The driver does find a DOC on all addresses < 0x04000000 offset 0x1000
but fails to find the flash chips. Doesn't look right.

Is there a way to figure where the DOC is mapped without the use of JTAG
(which we haven't). Maybe through a WindowsCE program?

The P700 has a M-systems DOC+ MD-3331-D64-V3.
We start the kernel using HaRET, below is the output. I've added some
debug to the docprobe and doc2001plus drivers.

E-ten bootloader starting:
*******Beginning System Initialization*******
          CPU ID     = A0 PXA255
          SDCLK[1]   = MemClk
          MemClk     = 99.53 MHz
          Run Mode   = 2 * MemClk
          Turbo Mode = 2 * Run Mode
Mode:    TURBO

MMU Enabled!
OEMInitDebugSerial using UART1

*    Paladin, Version 2.30
*    Built: 13:00:27  Jan 26 2005
*    Copyright (C) 2003, E-TEN Information System Co., Ltd.
MSC1 Pre value = 7FF07FF0
MSC1 Post value = 7FF172FC
Tenerife ID = 1884D51
FP08R aw=0x3......
FP07R aw=0x0......
FP0FR aw=0x10......
====> Y = 320
====> FB_BASE = B8300000
Adapter Found....
bdkReadInit OK!
read from 11 to 0x83FD0000  -> bdkReadBlock OK!
read from 12 to 0x83FD8000  -> bdkReadBlock OK!
read from 13 to 0x83FE0000  -> bdkReadBlock OK!
read from 14 to 0x83FE8000  -> bdkReadBlock OK!
read from 15 to 0x83FF0000  -> bdkReadBlock OK!
Version String is AB2110.100.0014.WWE.premium.   .100.0000
RCSR = 0x00000001
dwNK = EA0003FE
memset(0x80040000, 0, 0x01EC0000);
memset(0x82000000, 0, 0x01F00000);
Launch OS image...

HaRET starting kernel:
CPU: XScale-PXA255 [69052d06] revision 6 (ARMv5TE)
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Machine: E-ten P700
Memory policy: ECC disabled, Data cache writethrough
Memory clock: 99.53MHz (*27)
Run Mode clock: 199.07MHz (*2)
Turbo Mode clock: 398.13MHz (*2.0, active)
Built 1 zonelists
Kernel command line: noinitrd console=ttyS1,38400n8 root=/dev/nfs
init=/linuxrc ip=
PID hash table entries: 256 (order: 8, 4096 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 56MB = 56MB total
Memory: 54820KB available (1487K code, 330K data, 84K init)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
NetWinder Floating Point Emulator V0.97 (double precision)
devfs: 2004-01-31 Richard Gooch (rgooch at
devfs: boot_options: 0x1
ttyS0 at MMIO 0x40100000 (irq = 15) is a FFUART
ttyS1 at MMIO 0x40200000 (irq = 14) is a BTUART
ttyS2 at MMIO 0x40700000 (irq = 13) is a STUART
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
loop: loaded (max 8 devices)
pxa2xx_udc: version 14-Dec-2003
usb0: Ethernet Gadget, version: Equinox 2004
usb0: using pxa2xx_udc, OUT ep2out-bulk IN ep1in-bulk
usb0: MAC 52:b1:32:84:10:2f
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
NET: Registered protocol family 1
IP-Config: Guessing netmask
IP-Config: Complete:
       device=usb0, addr=, mask=,
      host=, domain=, nis-domain=(none),
      bootserver=, rootserver=, rootpath=
Looking up port of RPC 100003/2 on
udc: USB reset
usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet
Looking up port of RPC 100005/1 on
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 84K
BusyBox v1.00-rc3 (2005.02.25-09:50+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
/ # modprobe -v doc2001plus
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/mtdcore.ko
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/mtdpart.ko
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/docecc.ko
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/nand/nand_ids.ko
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/doc2001plus.ko

Try address 0x1000:
/ # modprobe -v docprobe doc_config_location=0x1000
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/docprobe.ko
Using configured DiskOnChip probe address 0x1000
drivers/mtd/devices/docprobe.c:142 (doccheck) 0x40
drivers/mtd/devices/docprobe.c:194 (doccheck) 0x40
drivers/mtd/devices/docprobe.c:255 (DoC_Probe) 0x40
DiskOnChip Millennium Plus found at address 0x1000
_DoC_WaitReady called for out-of-line wait
drivers/mtd/devices/doc2001plus.c:83 (_DoC_WaitReady) 65534 ReadDOC's
_DoC_WaitReady timed out.
_DoC_WaitReady called for out-of-line wait
drivers/mtd/devices/doc2001plus.c:83 (_DoC_WaitReady) 65534 ReadDOC's
_DoC_WaitReady timed out.
drivers/mtd/devices/doc2001plus.c:316 (DoC_IdentChip) mfr = 0x40
drivers/mtd/devices/doc2001plus.c:321 (DoC_IdentChip) id = 0x40
No flash chips recognised.
insmod: cannot insert
Resource temporarily unavailable (-1): Resource temporarily unavailae
modprobe: failed to load module docprobe

Try address 0xA4000000:
/ # modprobe -v docprobe doc_config_location=0xA4000000
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/docprobe.ko
drivers/mtd/devices/docprobe.c:254 (DoC_Probe) physadr=0xa4000000
drivers/mtd/devices/docprobe.c:144 (doccheck) physadr=0xa4000000
No recognised DiskOnChip devices found
insmod: cannot insert
Resource temporarily unavailable (-1): Resource temporarily unavailae
modprobe: failed to load module docprobe

More information about the linux-mtd mailing list