Workaround? for hard lock caused by O2 Micro OZ601/6912/711E0
Sascha Sommer
saschasommer at freenet.de
Sat Apr 30 19:45:18 EDT 2005
Hi,
On Sunday 01 May 2005 00:04, Daniel Ritz wrote:
> hi
>
> good work tracking this down. the check you commented out was added to
> fix problems on some bridges that don't get a already recognized up again
> after redoing the interrogation. but the state your bridge initially
> reports is so wrong that it's easy to see it...the following code in this
> place should also do the trick while not breaking other setups...
>
> /* Redo card voltage interrogation */
> state = cb_readl(socket, CB_SOCKET_STATE);
> if (!(state & (CB_5VCARD | CB_3VCARD | CB_XVCARD | CB_YVCARD)) ||
> (state & (CB_CDETECT1 | CB_CDETECT2 | CB_NOTACARD |
> CB_BADVCCREQ)) || ((state & (CB_16BITCARD | CB_CBCARD)) == (CB_16BITCARD |
> CB_CBCARD))) cb_writel(socket, CB_SOCKET_FORCE, CB_CVSTEST);
>
Thanks will test that later. However I'm still searching for the real problem
as things go wrong a lot earlier. The socket is powered (wihout even a card
inserted) before the bridge is enabled... I found out that
another difference between cold boot and reboot is that in the first case the
card is in the D1 powermanagement state while in the second case it is in D3
as expected. The pci code assumes that the bridge is in D3cold when calling
pci_enable_device. So my guess is that it then will restore a bogus state
when going to D0
Sascha
More information about the linux-pcmcia
mailing list