<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7226.0">
<TITLE>u-boot/linux MPC8xx PCMCIA woes</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>

<P><FONT SIZE=2>Any MPC8xx PCMCIA experts out there?<BR>
<BR>
I have a problem I was hoping someone can help me out with.<BR>
<BR>
My hardware is very similar to the MPC885ADS (DUET) board.<BR>
<BR>
I have the PCMCIA interface working fine in Linux 2.4.26<BR>
<BR>
I have recently enabled the PCMCIA support in u-boot.&nbsp; It also<BR>
seems to be working just fine.<BR>
<BR>
My problem is, that once I enabled PCMCIA in u-boot, when Linux<BR>
comes up, my hardware hangs in the Linux PCMCIA initialization<BR>
code.<BR>
<BR>
I have traced the hang down to an instruction in _fpqpcmcia_reset()<BR>
which is in the file .....kernel/drivers/pcmcia/pqpcmcia.c<BR>
<BR>
The following code snipet shows where the hang occurs:<BR>
<BR>
&nbsp;&nbsp; /* reset the mem/io windows */<BR>
&nbsp;&nbsp; /*<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 01 mem_win slot_A<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0N mem-win slot_A<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 01 io-win&nbsp; slot_A<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0N io-win&nbsp; slot_A<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 01 mem-win slot_B<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0N mem-win slot_B<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 01 io-win&nbsp; slot_B<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0N io-win&nbsp; slot_B<BR>
&nbsp;&nbsp; */<BR>
&nbsp;&nbsp; for ( i = p_ctx-&gt;first_mem_win; i &lt; (p_ctx-&gt;first_mem_win +<BR>
p_ctx-&gt;mem_wins_num); i++ )<BR>
&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p_ctx-&gt;REGS-&gt;win[i].pbr = 0; /******************* HANGS HERE **********/<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p_ctx-&gt;REGS-&gt;win[i].por = 0;<BR>
&nbsp;&nbsp; }<BR>
&nbsp;&nbsp; for ( i = p_ctx-&gt;first_io_win; i &lt; (p_ctx-&gt;first_io_win + p_ctx-&gt;io_wins_num); i++ )<BR>
&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p_ctx-&gt;REGS-&gt;win[i].pbr = 0;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p_ctx-&gt;REGS-&gt;win[i].por = 0;<BR>
&nbsp;&nbsp; }<BR>
<BR>
I've tried doing a reset of the PCMCIA (*p_ctx-&gt;pgcr = Q_PCMCIA_PGCRX_CXRESET;)<BR>
in various places before this Linux initialization takes place, but it<BR>
just causes kernel crashes.&nbsp; I've also tried doing the reset earlier<BR>
on.&nbsp; I'm kind of stumped on this one.&nbsp; Is there a way to get the PCMCIA<BR>
into the state it was at reset, without resetting?<BR>
<BR>
I was hoping to fix this problem without becoming a ppc PCMCIA guru.<BR>
I am using the MPC870.&nbsp; Does this ring a bell with anyone here?<BR>
<BR>
Regards,<BR>
- Mike </FONT>
</P>

</BODY>
</HTML>