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