Subject: Re: [is@netbsd.org: Re: PCMCIA reset bug in netbsd]
To: Ignatios Souvatzis <is@netbsd.org>
From: Charles M. Hannum <abuse@spamalicious.com>
List: tech-kern
Date: 11/15/2004 17:10:19
On Monday 15 November 2004 16:00, Ignatios Souvatzis wrote:
> I wonder whether somebody here can share his wisdom with us
>
> In short: which part of the chipset driver should drive the PCMCIA slot
> reset line --- and what is the minimum time required?

There are timing diagrams in chapter 4 of the PCMCIA spec that provide a lot 
of detail on this, although it's hard to read.

According to the standard, #RESET is not driven by the host during the initial 
Vcc ramp (100ms max), and is asserted after that.  In the pcic and pccbb 
drivers, I assert the RESET bit before applying Vcc for a couple of reasons:

1) It is automatically switched by most PCMCIA controllers when we hit a 
certain voltage level, so it does no harm.

2) Some flash devices tie #RESET to Vpp through a resistor, so that asserting 
#RESET will drain any residual current from the Vpp circuitry.  You want this 
to be done ASAP.

The sequencing I recommend is:

a) Assert RESET in software.  (It's active low on the pin, but which way it is 
in software varies.)

b) Turn on socket power.

c) Wait for at least the Vcc rising time (Tpr, 100ms).  (We use 200ms in pcic 
because some lame handheld devices ramp up too slowly, in violation of the 
spec.)

d) Negate RESET.

e) Wait for the RESET setup time (Tsu, 20ms).

f) Wait for READY (up to 5s).

This is the sequencing that pcic and pccbb use now, and there are no known 
incompatibilities with it.