Can't load DOC driver

Wolter Kamphuis wolter.kamphuis at opticon.com
Mon Mar 14 11:07:21 EST 2005


hi Greg,

The 0xa4000000 address I mentioned in my previous emails seems to be the 
virtual address, not the physical address I thought it was. Thanks 
Dmitry for making that clear.

After changing the readdoc and writedoc macros to readb and writeb I was
able to get a correct manufactur id. The toggle bits also work so I'm
nearly there! Thanks Greg for the hint.

Now, for some reason the nand-chip id isn't found correctly, it should
be 0x75 (Toshiba:NAND 32MiB 3,3V 8-bit) but the driver find's 0xa5
(Toshiba:NAND 2GiB 1,8V 8-bit). If I hardcode the chip id to 0x75 and 
load the ftl module I'm able to read from /dev/mtdblock/0, however it's 
difficult to see if the information is correct.

I can't use the diskonchip module since that one doesn't support the 
32/64Mb DOC M+. I need to inftl module to be able to install a root 
filesystem right?

Will it be difficult to port the 32/64Mb DOC M+ to the new diskonchip 
driver? I'm certainly not an expert...

thanks in advance,
   Wolter Kamphuis


/ # modprobe -v ftl
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/mtdcore.ko
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/mtd_blkdevs.ko
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/ftl.ko
$Id: ftl.c,v 1.55 2005/01/17 13:47:21 hvr Exp $

/ # modprobe -v doc2001plus
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

/ # modprobe -v docprobe
insmod    /lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/docprobe.ko
Using configured DiskOnChip probe address 0x0
drivers/mtd/devices/docprobe.c:250 (DoC_Probe) physadr=0x0 docptr=0xc4000000
drivers/mtd/devices/docprobe.c:142 (doccheck) physadr=0x0 ChipID=0x40
drivers/mtd/devices/docprobe.c:194 (doccheck) ChipID=0x40
drivers/mtd/devices/docprobe.c:203 (doccheck) tmp=0x0 tmpb=0x4 tmpc=0x0
drivers/mtd/devices/docprobe.c:256 (DoC_Probe) physadr=0x0 ChipID=0x40
DiskOnChip Millennium Plus found at address 0x0
drivers/mtd/devices/doc2001plus.c:364 (DoC_ScanChips) TAG
drivers/mtd/devices/doc2001plus.c:370 (DoC_ScanChips) TAG
drivers/mtd/devices/doc2001plus.c:381 (DoC_ScanChips) TAG
drivers/mtd/devices/doc2001plus.c:313 (DoC_IdentChip) mfr=0x98
drivers/mtd/devices/doc2001plus.c:318 (DoC_IdentChip) id=0xa5
Flash chip found: Manufacturer ID: 98, Chip ID: A5 (Toshiba:NAND 32MiB 
3,3V 8-bit (FAKE))
_DoC_WaitReady called for out-of-line wait 

drivers/mtd/devices/doc2001plus.c:313 (DoC_IdentChip) mfr=0x98
drivers/mtd/devices/doc2001plus.c:318 (DoC_IdentChip) id=0xa5
Flash chip found: Manufacturer ID: 98, Chip ID: A5 (Toshiba:NAND 32MiB 
3,3V 8-bit (FAKE))
drivers/mtd/devices/doc2001plus.c:393 (DoC_ScanChips) TAG 

drivers/mtd/devices/doc2001plus.c:400 (DoC_ScanChips) TAG
drivers/mtd/devices/doc2001plus.c:408 (DoC_ScanChips) TAG
2 flash chips found. Total DiskOnChip size: 64 MiB
mtd: Giving out device 0 to DiskOnChip Millennium Plus
_DoC_WaitReady called for out-of-line wait
<<above line times ~30>>
_DoC_WaitReady called for out-of-line wait
ftl_cs: FTL header not found.
insmod: cannot insert 
`/lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/docprobe.ko': 
Resource temporarily unavailable (-1): Resource temporarily unavailae
modprobe: failed to load module docprobe




Greg Ungerer wrote:
> Hi Wolter,
> 
> Wolter Kamphuis wrote:
> 
>> 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.
> 
> 
> Given that your finding the primary ID (0x40) I would suspect
> that your access functions are probably not quite right.
> 
> Are you using the correct bus width (8/16/32 bit) access?
> Are you accessing the registers on the appropriate offset
> boundaries?
> The region is not cached, right?
> 
> I have found on a few ARM platforms where I used DoC parts
> that I had to use different ReadDOC and WriteDOC macros in
> ~/include/linux/mtd/doc2000.h
> 
> Regards
> Greg
> 
> 
> 
> 
>> 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
>> DC_0=0x1......
>> DC_1=0x43......
>> DC_2=0x1......
>> DC_4=0x4......
>> DC_5=0x1......
>> DC_8=0x868B8649......
>> M1_0=0x1......
>> M1_1=0x1B676CA0......
>> M1_2=0x117700B0......
>> M1_5=0x170211......
>> CC_0=0x2......
>> CC_2=0x200000......
>> CC_5=0x0......
>> SW_6=0xAABBCCDD......
>> ulStride=0x1E0......
>> (G1_BASE+GC_START_ADDR)=0x1B0......
>> ulStride=0x1E0..0x140..0x25800..
>> ulStride=0x1E0..0x140..0x9600..
>> FP06R=0x80000000......
>> FP07R=0x0......
>> FP08R=0x3......
>> FP08R aw=0x3......
>> FP07R aw=0x0......
>> FP0FR aw=0x10......
>> ====> Y = 320
>> ====> FB_BASE = B8300000
>> flRegisterComponents
>> Adapter Found....
>> flRegisterDOCPLUS()....
>> flRegisterINFTL()....
>> 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...
>> Launchà
>>
>>
>>
>> HaRET starting kernel:
>> x<x.ØxüxüØx<ÿØxx..x<Øxü.xü.x<.Øx.Øxü.x..x<.Øx.Øx<xx.x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x..x5 
>>
>> 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=192.168.131.201:192.168.131.102::::: 
>> nfsroot=192.168.131.102:/mnt/nfsrootd
>> 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 atnf.csiro.au)
>> 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 255.255.255.0
>> IP-Config: Complete:
>>       device=usb0, addr=192.168.131.201, mask=255.255.255.0, 
>> gw=255.255.255.255,
>>      host=192.168.131.201, domain=, nis-domain=(none),
>>      bootserver=192.168.131.102, rootserver=192.168.131.102, rootpath=
>> Looking up port of RPC 100003/2 on 192.168.131.102
>> udc: USB reset
>> usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC 
>> Ethernet Subset
>> Looking up port of RPC 100005/1 on 192.168.131.102
>> 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 
>> doc_config_location=0x1000
>> 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 
>> `/lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/docprobe.ko': 
>> 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 
>> doc_config_location=0xA4000000
>> drivers/mtd/devices/docprobe.c:254 (DoC_Probe) physadr=0xa4000000 
>> docptr=0xc4000000
>> drivers/mtd/devices/docprobe.c:144 (doccheck) physadr=0xa4000000 
>> ChipID=0x85
>> No recognised DiskOnChip devices found
>> insmod: cannot insert 
>> `/lib/modules/2.6.11-hh0/kernel/drivers/mtd/devices/docprobe.ko': 
>> Resource temporarily unavailable (-1): Resource temporarily unavailae
>> modprobe: failed to load module docprobe
>>
>> -------------------------------------------------------------------
>> Subscription options: 
>> http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
>> FAQ:       http://www.arm.linux.org.uk/armlinux/mlfaq.php
>> Etiquette: http://www.arm.linux.org.uk/armlinux/mletiquette.php
>>
> 





More information about the linux-mtd mailing list