[Prism54-users] USB Dongle - USB/PCI Mapping

ANOOP.G anoopg@nestec.net
Sat, 31 Jan 2004 15:08:24 +0530


Hi,

We are trying the feasibility of writing USB WinCE driver for a USB WLAN
Dongle based on PrismGT chipset. It uses NE 2280 and 8051 for mapping from
USB to PCI. We are trying to find the mapping from USB to PCI. But do not
have device specifications. So we referred the open source PCI Linux code
for Prism 54 and are trying to find corresponding USB mappings.

Please see the below analysis and queries.

In Linux for setting the SSID the packets are send in the following order:
Tx Management Pk
01 01 10 00 00 02 00 00 00 00 00 22	
07 43 6f 72 65 67 61 31 00 00 00 00		
Rx Management Pk
01 02 10 00 00 02 00 00 00 00 00 22	
07 43 6f 72 65 67 61 31  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00
where  
02 and 01 denotes operation ,where 01 is for a SET operation ; 02 for a GET
operation
10 00 00 02  is the OID
00 00 00 22 is the length
43 6f 72 65 67 61 31  is the ESSID (Corega1  

We have the driver binary for USB Win2000 driver. When we sniffed the data
for setting SSID in Windows the corresponding data packet received is:

Packet to endpoint 01
[653672 ms]  >>>  URB 3763 going down  >>> 
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 817cba40 [endpoint 0x00000001]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000074
  TransferBuffer       = 817cb008
  TransferBufferMDL    = 00000000
    00000000: 6c 07 02 00 63 00 00 00 00 00 00 00 00 00 00 00
    00000010: 00 40 27 00 08 00 70 81 00 00 01 01 00 00 00 00
    00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00000030: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00
    00000040: 00 00 00 00 00 00 00 00 04 86 cc 01 40 00 00 00
    00000050: ff ff ff ff ff ff 00 0a e9 05 d5 ee ff ff ff ff
    00000060: ff ff 00 00 00 07 43 6f 72 65 67 61 31 01 04 02    "Corega1"
    00000070: 04 0b 16 6f
  UrbLink              = 00000000
where " 43 6F 72 65 67 61 31" denotes Corega1.

We are still analysing the possibilities. It would be of great help if any
pointers can be given for my queries:
1. In USB transfer I am not seeing the same "OID" - 10 00 00 02 in the data
packet to the hardware. Is there no direct mapping ?

2. We tried setting Control Block area in 8051 memory area and dma buffers
of Tx Mgmt and Rx Mgmt  in FIFO of NE2280 (tried 8051 memory area also).
When we downloaded firmware  (using USB end points to PCI Mem), INIT
interrupt status came. We could read back the firmware also. Then we tried
GEN_OID_MACADDRESS  - PIMFOR_OP_GET. And when we triggered the Update
interrupt , the Update interrupt status came. But control block is not being
updated and we are not getting any data. Any advice ?

3. Using USB sniffing we can see the driver is using many PCI registers
which are not mentioned in the Prism54 code.
Some of the access during firmware downloading are:
end point - (0x0e), Prism Memory area, Address offset - 0x30, Data -
0xC000F00
end point - (0x0e), Prism Memory area, Address offset - 0x1020, Data - 0x0
end point - (0x0e), Prism Memory area, Address offset - 0x1020, Data - 0x1
end point - (0x0e), Prism Memory area, Address offset - 0x60, Data -
0x20000000
0x0e - Prism Memory area, 0x64 - 0x80
0x0e - Prism Memory area, 0x68 - 0x4
0x8e - Prism Memory area, 0x102c - 0x3
Any idea on these registers with offset - 0x60, 0x64, 0x68 ?

Any help on these would greatly help. I would be happy to share the results
after our testing.

regards,
Anoop





 
1.