Question about MPC8xx PCMCIA
Steven Scholz
steven.scholz at imc-berlin.de
Sat Jun 14 01:52:47 EST 2003
Hi there,
I do have some problems with PCMCIA cards on my MPC855T based board.
In fact there are two:
1. I do get some "cs: socket 0 timed out during reset". But they
become rare now. (So this shouldn't be the issue right now.)
2. Some cards (96MB Flash Card from SimpleTech and SiliconTech" are
"sometimes" not recognized correctly. I get
cardmgr[367]: socket 0: Anonymous Memory
cardmgr[367]: executing: 'modprobe memory_cs'
instead of
cardmgr[62]: socket 0: ATA/IDE Fixed Disk
cardmgr[62]: product info: "STI", "Flash 5.0"
cardmgr[62]: manfid: 0x0007, 0x0000 function: 4 (fixed disk)
The reason for that is that the CIS is not read correctly.
I do expierence the same problems with an TQM860L (STK), linux-2.4.20
(from DENX) and pcmcia-cs-3.2.4 (with m8xx patches from DENX ELDK).
I know this "sometimes" does not help much. But I am here to ask some
general questions:
1. Why do we power up the card as early as in hardware_enable()?
IMHO this is the task of cardmgr!
2. In hardware_enable() we're wait quiet a while for the card to come
up. But a) cs.c is responsible for a vcc_settle delay and b) later
insertions are _not_ effected by this anyway. So it's only for one
time while system startup... !?
Should we do that everytime voltage_set() gets called? But then
again cs.c is responsible for vcc_settle...
3. Most implementaions of voltage_set() in m8xx_pcmcia.c first switch
the power off and then switch it back on. Fair enough. BUT every-
time m8xx_set_socket() gets called, the power is switched off and
on again. Even if the vcc state didn't changed! So it's switched
off and on without good reason _and_ without time to settle! I
can't imagine that this is feature...
So I think voltage_set() should only switch powers if something
changed.
4. Someone wrote in m8xx_set_socket() :
/* The CxOE signal is connected to a 74541 on the ADS.
I guess most other boards used the ADS as a reference.
I tried to control the CxOE signal with SS_OUTPUT_ENA,
but the reset signal seems connected via the 541.
If the CxOE is left high are some signals tristated and
no pullups are present -> the cards act wierd.
So right now the buffers are enabled if the power is on. */
Well. "The PCMCIA Developer's Guide" states on page 55
"After the socket controller enables power to the socket,
there is at least a 300mS delay until output signals are
enabled ... All socket controller output signals, including
RESET, are in a tristate mode until the end of the 300mS
delay."
So if I change
if(state->Vcc || state->Vpp)
M8XX_PGCRX(_slot_) &= ~M8XX_PGCRX_CXOE;
to
if(state->flags & SS_OUTPUT_ENA)
M8XX_PGCRX(_slot_) &= ~M8XX_PGCRX_CXOE; /* active low
(as it would be correct) then the above mentioned FLASH CARDS indeed
act wiered... .-(
I hope that someone out there finds time and wants to share his
thoughts with me.
Thanks a million and have a nice weekend!
Cheers,
Steven
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list