AT91_cf Sandisk CIS invalid reads (was Re: AT91RM9200 CF problem)

Mathieu Deschamps mathieu.deschamps at com2gether.net
Fri Jun 30 09:48:46 EDT 2006


Hello Pavel,

Thanks for your advices, 

On Thursday 29 June 2006 09:05, Pavel Roskin wrote:
> Hello, Mathieu!
[...]
> > Ok, now using pcmciautils-0.14 pccardct, I (still) can't read a Flash 
memory 
> > card (on both pcmcia design however) on card insertion my log reports:
> > 
> > Jun 27 19:02:52 zephyr-B kern.debug kernel: cs: pcmcia_socket0: 
> > pcmcia_read_cis_mem attrib mem
> > Jun 27 19:02:52 zephyr-B kern.debug kernel: at91_cf: At91_cf 
set_mem_map<7>
> > Jun 27 19:02:52 zephyr-B kern.debug kernel: cs: pcmcia_socket0:   0x52 
0x00 
> > 0x00 0x00 ...
>
>Please use "dmesg" for kernel messages.  Date and time doesn't normally
>matter, but the userspace loggers can remove some important messages and
>put them elsewhere.
>
Improbable, there is only a single facility with *.* logging into 
/var/log/messages, and I do that way because of kringbuf being too small to 
store without squeezing all debug strings I stuffed drivers with (plus thoses 
originally present :), whereas to me busybox rotate log buf is 
(re)configurable more conviniently.
>
> > Jun 27 19:02:52 zephyr-B kern.debug kernel: ds: invalid CIS or invalid
> > resources (#tuples=0,chains?=0)
>
> You may want to check the device on a PC where other PCMCIA devices
> work.  Then check why CIS is not read correctly.
>

Sure it is successfully read onto a PC, it attributes port I/O FA00-FAFF
and FD00-FDFF and memory 000DE0000-000DEFFF and
000DF0000-000DFFFF...
May it come from incorrect port or memory inclusion in config.opts ? 
Does anyone has some options known to work ? 

----------------
cs: pcmcia_socket0: send_event(event 4, pri 0, callback 0xbf011cf8)
ds: ds_event(0x000004, 0, 0xc04d9c00)
ds: ds_event : Card insertion propagation
cs: pcmcia_socket0: pcmcia_read_cis_mem(1, 0x0, 2)
cs: pcmcia_socket0: pcmcia_read_cis_mem attrib mem
at91_cf: At91_cf set_mem_map<7>
cs: pcmcia_socket0:   0x52 0x07 0x72 0xc0 ...
cs: pcmcia_socket0: pcmcia_read_cis_mem(1, 0x9, 2)
cs: pcmcia_socket0: pcmcia_read_cis_mem attrib mem
at91_cf: At91_cf set_mem_map<7>
cs: pcmcia_socket0:   0x52 0x07 0x00 0x00 ...
cs: pcmcia_socket0: pcmcia_read_cis_mem(1, 0x12, 2)
cs: pcmcia_socket0: pcmcia_read_cis_mem attrib mem
at91_cf: At91_cf set_mem_map<7>
cs: pcmcia_socket0:   0x52 0x07 0x00 0x00 ...
cs: pcmcia_socket0: pcmcia_read_cis_mem(1, 0x1b, 2)
cs: pcmcia_socket0: pcmcia_read_cis_mem attrib mem
at91_cf: At91_cf set_mem_map<7>
[...]
----------------
What I know now is that it starts reading a address 0x0 of CIS and
it is the good start addr. for 16bits Flash cards. I've seen theses read 
transactions on an analyser and signals were waving as they should. So it is, 
actually, reading the card at the correct offset in the right memory. 


But i've just noticed that it reads @ 0,9,1b and later 3f,51,63 shouldn't
it read just even bytes ? Spec says:
"This cis always begins @ 0 of attrib. memory space and is stored
only in even bytes. Odd-byte [...] is not defined."




Regards,

mathdesc



More information about the linux-pcmcia mailing list