This is a multi-part message in MIME format.

------=_NextPart_000_000A_01C6109E.D9BB8460
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

In my opinion, there is a bug in the CPCCardBusBridge::InitCardBusBridge =
routine in PCC_TIPCCARD.LIB =
(Public\Common\Oak\Drivers\Pccard\Tipccard\PDSOCKET.CPP):

BOOL CPCCardBusBridge::InitCardBusBridge( void )
{
.
.
DWORD dwCmd =3D ReadCfgDword( 4 );

m_dwDeviceNumber =3D dpi.dwDeviceNumber;
m_dwFunctionNumber =3D dpi.dwFunctionNumber;
.
.
WriteCfgDword( 4, dwCmd | 0x7 );

return TRUE;
}

The problem is that ReadCfgDword uses m_dwDeviceNumber and =
m_dwFunctionNumber, which are not initialized yet, and reads a bad value =
for dwCmd (hopefully 0xFFFFFFFF). Switching lines fixes the problem:

m_dwDeviceNumber =3D dpi.dwDeviceNumber;
m_dwFunctionNumber =3D dpi.dwFunctionNumber;
=20
DWORD dwCmd =3D ReadCfgDword( 4 );

The bug seems to be quite harmless (setting more bits than needed in the =
PCI Command Register), but just adds a little more confusion to this =
code, which really don't need it!

Remi

------=_NextPart_000_000A_01C6109E.D9BB8460
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2802" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face=3DArial size=3D2>In my opinion, there is a bug in the =
<FONT=20
face=3D"Courier New">CPCCardBusBridge::InitCardBusBridge</FONT> =
routine&nbsp;in=20
PCC_TIPCCARD.LIB=20
(Public\Common\Oak\Drivers\Pccard\Tipccard\PDSOCKET.CPP):</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>BOOL =
CPCCardBusBridge::InitCardBusBridge(=20
void )<BR>{<BR>&nbsp;&nbsp;&nbsp; .</FONT></DIV>
<DIV><FONT size=3D2>
<DIV><FONT size=3D2><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp;=20
.</FONT></FONT></DIV>
<DIV></FONT><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; DWORD =
dwCmd =3D=20
ReadCfgDword( 4 );</FONT></DIV></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp; =
m_dwDeviceNumber =3D=20
dpi.dwDeviceNumber;<BR>&nbsp;&nbsp;&nbsp; m_dwFunctionNumber =3D=20
dpi.dwFunctionNumber;<BR>&nbsp;&nbsp;&nbsp; .</FONT>
<DIV><FONT size=3D2>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; =
.</FONT></DIV>
<DIV><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp; WriteCfgDword( 4, =
dwCmd | 0x7=20
);</FONT></DIV>
<DIV><FONT face=3D"Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp; return=20
TRUE;<BR>}<BR></FONT></DIV></FONT></DIV></FONT></DIV>
<DIV><FONT size=3D2><FONT face=3D"Courier New" size=3D2><FONT =
face=3DArial>The problem=20
is that&nbsp;<FONT face=3D"Courier New">ReadCfgDword</FONT> =
uses&nbsp;<FONT=20
face=3D"Courier New">m_dwDeviceNumber</FONT> and <FONT=20
face=3D"Courier New">m_dwFunctionNumber</FONT>, which are not =
initialized yet, and=20
reads a bad value for <FONT face=3D"Courier =
New">dwCmd</FONT></FONT><FONT=20
face=3DArial> (hopefully 0xFFFFFFFF).&nbsp;Switching lines&nbsp;fixes =
the=20
problem:</FONT></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; =
m_dwDeviceNumber =3D=20
dpi.dwDeviceNumber;<BR>&nbsp;&nbsp;&nbsp; m_dwFunctionNumber =3D=20
dpi.dwFunctionNumber;<BR><FONT face=3DArial>&nbsp;</FONT>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; DWORD dwCmd =
=3D=20
ReadCfgDword( 4 );</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2></FONT>&nbsp;</DIV></FONT></DIV></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>The bug seems to be quite harmless =
(setting more=20
bits than needed in the PCI Command Register), but just adds a =
little&nbsp;more=20
confusion to this code, which really don't need it!</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Remi</FONT></DIV>
<DIV><FONT size=3D2><FONT face=3D"Courier New" size=3D2><FONT=20
face=3DArial></FONT></FONT>&nbsp;</DIV></FONT></BODY></HTML>

------=_NextPart_000_000A_01C6109E.D9BB8460--

Re: Bug in TIPCCARD (CE 5.0)? by Remi

Remi
Thu Jan 05 10:01:36 CST 2006

This is a multi-part message in MIME format.

------=_NextPart_000_0010_01C61219.B000C280
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Nobody interested in this one?
------=_NextPart_000_0010_01C61219.B000C280
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2802" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT size=3D2><FONT face=3D"Courier New" size=3D2><FONT =
face=3DArial>Nobody=20
interested in this one?</FONT></FONT></DIV></FONT></BODY></HTML>

------=_NextPart_000_0010_01C61219.B000C280--


Re: Bug in TIPCCARD (CE 5.0)? by David

David
Thu Jan 05 14:04:51 CST 2006

This is a multi-part message in MIME format.

------=_NextPart_000_0040_01C611F0.3BAFAD70
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Yes. Indeed.
We will fix it.
Thanks
David Liao.
"Remi de Gravelaine" <gravelaine at aton dash sys dot fr> wrote in =
message news:eLLA8ZJEGHA.1288@TK2MSFTNGP09.phx.gbl...
In my opinion, there is a bug in the =
CPCCardBusBridge::InitCardBusBridge routine in PCC_TIPCCARD.LIB =
(Public\Common\Oak\Drivers\Pccard\Tipccard\PDSOCKET.CPP):

BOOL CPCCardBusBridge::InitCardBusBridge( void )
{
.
.
DWORD dwCmd =3D ReadCfgDword( 4 );

m_dwDeviceNumber =3D dpi.dwDeviceNumber;
m_dwFunctionNumber =3D dpi.dwFunctionNumber;
.=20
.
WriteCfgDword( 4, dwCmd | 0x7 );

return TRUE;
}

The problem is that ReadCfgDword uses m_dwDeviceNumber and =
m_dwFunctionNumber, which are not initialized yet, and reads a bad value =
for dwCmd (hopefully 0xFFFFFFFF). Switching lines fixes the problem:

m_dwDeviceNumber =3D dpi.dwDeviceNumber;
m_dwFunctionNumber =3D dpi.dwFunctionNumber;
=20
DWORD dwCmd =3D ReadCfgDword( 4 );

The bug seems to be quite harmless (setting more bits than needed in =
the PCI Command Register), but just adds a little more confusion to this =
code, which really don't need it!

Remi

------=_NextPart_000_0040_01C611F0.3BAFAD70
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2802" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Yes. Indeed.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>We will fix it.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Thanks</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>David Liao.</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Remi de Gravelaine" &lt;gravelaine at aton dash sys dot fr&gt; =
wrote in=20
message <A=20
=
href=3D"news:eLLA8ZJEGHA.1288@TK2MSFTNGP09.phx.gbl">news:eLLA8ZJEGHA.1288=
@TK2MSFTNGP09.phx.gbl</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>In my opinion, there is a bug in the =
<FONT=20
face=3D"Courier New">CPCCardBusBridge::InitCardBusBridge</FONT> =
routine&nbsp;in=20
PCC_TIPCCARD.LIB=20
(Public\Common\Oak\Drivers\Pccard\Tipccard\PDSOCKET.CPP):</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New" size=3D2>BOOL =
CPCCardBusBridge::InitCardBusBridge(=20
void )<BR>{<BR>&nbsp;&nbsp;&nbsp; .</FONT></DIV>
<DIV><FONT size=3D2>
<DIV><FONT size=3D2><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp;=20
.</FONT></FONT></DIV>
<DIV></FONT><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; =
DWORD dwCmd =3D=20
ReadCfgDword( 4 );</FONT></DIV></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT size=3D2><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp; =
m_dwDeviceNumber=20
=3D dpi.dwDeviceNumber;<BR>&nbsp;&nbsp;&nbsp; m_dwFunctionNumber =3D=20
dpi.dwFunctionNumber;<BR>&nbsp;&nbsp;&nbsp; .</FONT>=20
<DIV><FONT size=3D2>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; =
.</FONT></DIV>
<DIV><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp; WriteCfgDword( 4, =
dwCmd | 0x7=20
);</FONT></DIV>
<DIV><FONT face=3D"Courier New"></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New">&nbsp;&nbsp;&nbsp; return=20
TRUE;<BR>}<BR></FONT></DIV></FONT></DIV></FONT></DIV>
<DIV><FONT size=3D2><FONT face=3D"Courier New" size=3D2><FONT =
face=3DArial>The problem=20
is that&nbsp;<FONT face=3D"Courier New">ReadCfgDword</FONT> =
uses&nbsp;<FONT=20
face=3D"Courier New">m_dwDeviceNumber</FONT> and <FONT=20
face=3D"Courier New">m_dwFunctionNumber</FONT>, which are not =
initialized yet,=20
and reads a bad value for <FONT face=3D"Courier =
New">dwCmd</FONT></FONT><FONT=20
face=3DArial> (hopefully 0xFFFFFFFF).&nbsp;Switching lines&nbsp;fixes =
the=20
problem:</FONT></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; =
m_dwDeviceNumber =3D=20
dpi.dwDeviceNumber;<BR>&nbsp;&nbsp;&nbsp; m_dwFunctionNumber =3D=20
dpi.dwFunctionNumber;<BR><FONT face=3DArial>&nbsp;</FONT>=20
<DIV><FONT face=3D"Courier New" size=3D2>&nbsp;&nbsp;&nbsp; DWORD =
dwCmd =3D=20
ReadCfgDword( 4 );</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2></FONT>&nbsp;</DIV></FONT></DIV></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>The bug seems to be quite harmless =
(setting more=20
bits than needed in the PCI Command Register), but just adds a=20
little&nbsp;more confusion to this code, which really don't need=20
it!</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Remi</FONT></DIV>
<DIV><FONT size=3D2><FONT face=3D"Courier New" size=3D2><FONT=20
=
face=3DArial></FONT></FONT>&nbsp;</DIV></BLOCKQUOTE></FONT></BODY></HTML>=


------=_NextPart_000_0040_01C611F0.3BAFAD70--