Hello,

I am trying to get an NDIS driver running for the 91C96 on
a PXA255 platform under winCE 4.2.

Everything seems to work OK except "NdisRawReadPortUshort"
always returns 0x00.

CODE SNIPPET:

IOBase = (PULONG) MmMapIoSpace( 0xC000000,
0x1000,
FALSE );

NdisRawReadPortUshort( IOBase + BANK_SELECT, (USHORT *)
&TempStore );
RETAILMSG(1, (TEXT(" data[0x%x] = 0x%x \r\n"),
IOBase,TempStore));

data[1f0000] = 0x00


I have verified the 91C96 is running OK and the BANK_SELECT
register reads back 0x33 using :

volatile unsigned int *eth2 = (volatile unsigned
int*)SMC_ETHERNET_IO_BASE_U_VIRTUAL;
val = *(eth2 + 0x0e);
RETAILMSG(1, (TEXT(" data[0x%x] = 0x%x \r\n"), eth2,val));

RESULT : data[bf500000] = 0x3330 (high byte is 33 as
expected)

Any help would be greatly appreciated! -Jeff

RE: NdisRawReadPortUshort returns 0x00 by Woojung_DOT_Huh_AT_smsc_DOT_com>

Woojung_DOT_Huh_AT_smsc_DOT_com>
Mon Apr 25 20:48:06 CDT 2005


How is your CPU connected to 91C96?
Your example shows that it works on 32bit access, "*(eth2 + 0x0e)" but not
with 16bit access.

Woojung

"jeffs" wrote:

> Hello,
>
> I am trying to get an NDIS driver running for the 91C96 on
> a PXA255 platform under winCE 4.2.
>
> Everything seems to work OK except "NdisRawReadPortUshort"
> always returns 0x00.
>
> CODE SNIPPET:
>
> IOBase = (PULONG) MmMapIoSpace( 0xC000000,
> 0x1000,
> FALSE );
>
> NdisRawReadPortUshort( IOBase + BANK_SELECT, (USHORT *)
> &TempStore );
> RETAILMSG(1, (TEXT(" data[0x%x] = 0x%x \r\n"),
> IOBase,TempStore));
>
> data[1f0000] = 0x00
>
>
> I have verified the 91C96 is running OK and the BANK_SELECT
> register reads back 0x33 using :
>
> volatile unsigned int *eth2 = (volatile unsigned
> int*)SMC_ETHERNET_IO_BASE_U_VIRTUAL;
> val = *(eth2 + 0x0e);
> RETAILMSG(1, (TEXT(" data[0x%x] = 0x%x \r\n"), eth2,val));
>
> RESULT : data[bf500000] = 0x3330 (high byte is 33 as
> expected)
>
> Any help would be greatly appreciated! -Jeff
>
>