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