[kismac] [binaervarianz] r174 - in branches/usb-drivers: KisMAC.xcodeproj Sources/Driver/USBJack Sources/WaveDrivers

  • From: svn@xxxxxxxxxxxxxxxx
  • To: kismac@xxxxxxxxxxxxx
  • Date: Sun, 27 Aug 2006 18:39:32 +0200

Author: gkruse
Date: 2006-08-27 18:39:20 +0200 (Sun, 27 Aug 2006)
New Revision: 174

Modified:
   branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj
   branches/usb-drivers/Sources/Driver/USBJack/IntersilJack.mm
   branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h
   branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm
   branches/usb-drivers/Sources/Driver/USBJack/USBJack.h
   branches/usb-drivers/Sources/Driver/USBJack/USBJack.mm
   branches/usb-drivers/Sources/Driver/USBJack/rt2570.h
   branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h
   branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm
Log:
Finally does something, the led turns on.  We are able to power up the asic, 
and verify its state, but the BPP never reports that it is ready.

Modified: branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj
===================================================================
--- branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj       2006-08-27 
06:58:35 UTC (rev 173)
+++ branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj       2006-08-27 
16:39:20 UTC (rev 174)
@@ -465,7 +465,7 @@
                6C541AAB0A72002F00B58A95 /* growl-ap-revealed.png in Resources 
*/ = {isa = PBXBuildFile; fileRef = 6C541AA80A72002F00B58A95 /* 
growl-ap-revealed.png */; };
                6C541AAC0A72003000B58A95 /* growl-wpa-challenge.png in 
Resources */ = {isa = PBXBuildFile; fileRef = 6C541AA90A72002F00B58A95 /* 
growl-wpa-challenge.png */; };
                6C541AAD0A72003000B58A95 /* growl-wpa-response.png in Resources 
*/ = {isa = PBXBuildFile; fileRef = 6C541AAA0A72002F00B58A95 /* 
growl-wpa-response.png */; };
-               6C7171D20AA1739700CD6879 /* rt2570.h in Headers */ = {isa = 
PBXBuildFile; fileRef = 6C7171D10AA1739700CD6879 /* rt2570.h */; };
+               6C71721F0AA17A5A00CD6879 /* rt2570.h in Headers */ = {isa = 
PBXBuildFile; fileRef = 6C71721E0AA17A5A00CD6879 /* rt2570.h */; };
                6CA3BCCB09B2A58F00DCB407 /* Accelerate.framework in Frameworks 
*/ = {isa = PBXBuildFile; fileRef = 6CA3BCCA09B2A58F00DCB407 /* 
Accelerate.framework */; };
                6CE20615C5B043AF00A26C3A /* IntersilJack.h in Headers */ = {isa 
= PBXBuildFile; fileRef = 6CE2060FC5B043AF00A26C3A /* IntersilJack.h */; };
                6CE20616C5B043AF00A26C3A /* IntersilJack.mm in Sources */ = 
{isa = PBXBuildFile; fileRef = 6CE20610C5B043AF00A26C3A /* IntersilJack.mm */; 
};
@@ -817,7 +817,7 @@
                6C541AA80A72002F00B58A95 /* growl-ap-revealed.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = 
"growl-ap-revealed.png"; sourceTree = "<group>"; };
                6C541AA90A72002F00B58A95 /* growl-wpa-challenge.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = 
"growl-wpa-challenge.png"; sourceTree = "<group>"; };
                6C541AAA0A72002F00B58A95 /* growl-wpa-response.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = 
"growl-wpa-response.png"; sourceTree = "<group>"; };
-               6C7171D10AA1739700CD6879 /* rt2570.h */ = {isa = 
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = 
rt2570.h; sourceTree = "<group>"; };
+               6C71721E0AA17A5A00CD6879 /* rt2570.h */ = {isa = 
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = 
rt2570.h; path = USBJack/rt2570.h; sourceTree = "<group>"; };
                6CA3BCCA09B2A58F00DCB407 /* Accelerate.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; 
sourceTree = "<absolute>"; };
                6CE2060FC5B043AF00A26C3A /* IntersilJack.h */ = {isa = 
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = 
IntersilJack.h; path = USBJack/IntersilJack.h; sourceTree = "<group>"; };
                6CE20610C5B043AF00A26C3A /* IntersilJack.mm */ = {isa = 
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; 
name = IntersilJack.mm; path = USBJack/IntersilJack.mm; sourceTree = "<group>"; 
};
@@ -1460,7 +1460,7 @@
                                6CE20612C5B043AF00A26C3A /* structs.h */,
                                6CE20613C5B043AF00A26C3A /* USBJack.h */,
                                6CE20614C5B043AF00A26C3A /* USBJack.mm */,
-                               6C7171D10AA1739700CD6879 /* rt2570.h */,
+                               6C71721E0AA17A5A00CD6879 /* rt2570.h */,
                                6CE206E6C5B0502200A26C3A /* RalinkJack.h */,
                                6CE206E7C5B0502200A26C3A /* RalinkJack.mm */,
                        );
@@ -1645,7 +1645,7 @@
                                6CE20618C5B043AF00A26C3A /* structs.h in 
Headers */,
                                6CE20619C5B043AF00A26C3A /* USBJack.h in 
Headers */,
                                6CE206E8C5B0502200A26C3A /* RalinkJack.h in 
Headers */,
-                               6C7171D20AA1739700CD6879 /* rt2570.h in Headers 
*/,
+                               6C71721F0AA17A5A00CD6879 /* rt2570.h in Headers 
*/,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };

Modified: branches/usb-drivers/Sources/Driver/USBJack/IntersilJack.mm
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/IntersilJack.mm 2006-08-27 
06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/Driver/USBJack/IntersilJack.mm 2006-08-27 
16:39:20 UTC (rev 174)
@@ -104,6 +104,40 @@
     return true;
 }
 
+IOReturn USBJack::_init() {
+    WLIdentity ident;
+    WLHardwareAddress macAddr;
+    int i; 
+    
+    _firmwareType = -1;
+    
+    for (i = 0; i< wlResetTries; i++) {
+        if (_reset() == kIOReturnSuccess) break;
+        if (!_devicePresent) return kIOReturnError;
+    }
+    
+    /*
+     * Get firmware vendor and version
+     */
+    
+    if (_getIdentity(&ident) != kIOReturnSuccess) {
+        NSLog(@"USBJack::_init: Couldn't read card identity\n");
+        return kIOReturnError;
+    }
+    
+    NSLog(@"USBJack: Firmware vendor %d, variant %d, version %d.%d\n", 
ident.vendor, ident.variant, ident.major, ident.minor);
+    
+    if (_getHardwareAddress(&macAddr) != kIOReturnSuccess) {
+        NSLog(@"USBJack::_init: Couldn't read MAC address\n");
+        return kIOReturnError;
+    }
+    
+    _deviceInit = true;
+    
+    return kIOReturnSuccess;
+}
+
+
 IOReturn USBJack::_reset() {
     int i;
     

Modified: branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h    2006-08-27 
06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h    2006-08-27 
16:39:20 UTC (rev 174)
@@ -17,6 +17,8 @@
     
     RalinkJack();
     ~RalinkJack();
+    IOReturn RalinkJack::_init();
+    
     IOReturn   RTUSB_VendorRequest(UInt8 direction,
                             UInt8 bRequest, 
                             UInt16 wValue, 

Modified: branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm   2006-08-27 
06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm   2006-08-27 
16:39:20 UTC (rev 174)
@@ -9,6 +9,156 @@
 
 #include "RalinkJack.h"
 
+IOReturn RalinkJack::_init() {
+    unsigned long                      Index;
+       unsigned char                   buffer[22];
+       unsigned short                  temp;
+       unsigned char                   Value = 0xff;
+       unsigned int                    i;
+    
+       NSLog(@"--> NICInitializeAsic");
+    
+       do
+       {
+               //NdisMSleep(1000);
+               RTUSB_VendorRequest(kUSBOut,
+                            0x1,
+                            0x4,
+                            0x1,
+                            NULL,
+                            0);
+        
+               RTUSBSingleWrite(0x308, 0xf0);//asked by MAX
+            
+        // Disable RX at first beginning. Before BulkInReceive, we will enable 
RX.
+        RTUSBWriteMACRegister(TXRX_CSR2, 1);
+        RTUSBWriteMACRegister(MAC_CSR13, 0x1111);//requested by Jerry
+        RTUSBWriteMACRegister(MAC_CSR14, 0x1E11);
+        RTUSBWriteMACRegister(MAC_CSR1, 3); // reset MAC state machine, 
requested by Kevin 2003-2-11
+        RTUSBWriteMACRegister(MAC_CSR1, 0); // reset MAC state machine, 
requested by Kevin 2003-2-11
+        RTUSBWriteMACRegister(TXRX_CSR5, 0x8C8D);
+        RTUSBWriteMACRegister(TXRX_CSR6, 0x8B8A);
+        RTUSBWriteMACRegister(TXRX_CSR7, 0x8687);
+        RTUSBWriteMACRegister(TXRX_CSR8, 0x0085);
+        RTUSBWriteMACRegister(TXRX_CSR21, 0xe78f);
+        RTUSBWriteMACRegister(MAC_CSR9, 0xFF1D);
+                
+        i = 0;
+        //check and see if asic has powered up
+        RTUSBReadMACRegister(MAC_CSR17, &temp);
+        while (((temp & 0x01e0 ) != 0x01e0) && (i < 50))
+        {
+            sleep(1);
+            RTUSBReadMACRegister(MAC_CSR17, &temp);
+                    
+            i++;
+        }
+        if (i == 50)
+        {
+/*                    if (RTUSB_ResetDevice() == FALSE)
+                    {
+                        //RTMP_SET_FLAG( fRTMP_ADAPTER_REMOVE_IN_PROGRESS);
+                        DBGPRINT(RT_DEBUG_TRACE, "<== NICInitializeAsic 
ERROR\n");
+                        return;
+                    }
+                    else
+                        continue;
+                    */
+        }
+        
+        //lets mess with the leds to verify we have control
+        RTUSBWriteMACRegister(MAC_CSR20, 0x002);        //put led under 
software control
+                
+        RTUSBWriteMACRegister(MAC_CSR1, 4);
+        RTUSBReadMACRegister(MAC_CSR0, &temp);
+        if ( temp >= 3){
+            RTUSBReadMACRegister(PHY_CSR2, &temp);
+            RTUSBWriteMACRegister(PHY_CSR2, temp & 0xFFFD);               
+        }
+        else
+        {
+            NSLog(@"LNA 3 mode\n");
+            RTUSBWriteMACRegister(PHY_CSR2, 0x3002); // LNA 3 mode
+        }
+        RTUSBWriteMACRegister(MAC_CSR11, 2);
+        RTUSBWriteMACRegister(MAC_CSR22, 0x53);
+        RTUSBWriteMACRegister(MAC_CSR15, 0x01ee);
+        RTUSBWriteMACRegister(MAC_CSR16, 0);
+        RTUSBWriteMACRegister(MAC_CSR8, 0x0780);//steven:limit the maximum 
frame length
+            
+        RTUSBReadMACRegister(TXRX_CSR0, &temp);
+        temp &= 0xe007;
+        temp |= ((LENGTH_802_11 << 3) | (0x000f << 9));
+        RTUSBWriteMACRegister(TXRX_CSR0, temp);
+                    
+        RTUSBWriteMACRegister(TXRX_CSR19, 0);
+        RTUSBWriteMACRegister(MAC_CSR18, 0x5a);
+                    
+        //set RF_LE to low when standby
+        RTUSBReadMACRegister(PHY_CSR4, &temp);
+        RTUSBWriteMACRegister(PHY_CSR4, temp | 1);
+        //NdisMSleep(1);//wait for PLL to become stable
+                    
+        i = 0;
+        do
+        {
+            RTUSBReadBBPRegister(BBP_Version, &Value);
+            NSLog(@"Read BBP_Version Value = %d\n", Value);
+            i++;
+        }while (((Value == 0xff) || (Value == 0x00)) && (i < 50));
+        if (i < 50)//BBP ready
+        {
+            break;
+        }
+                    /*
+        else
+        {
+            if ( RTUSB_ResetDevice(pAdapter) == FALSE)
+            {
+                RTMP_SET_FLAG( fRTMP_ADAPTER_REMOVE_IN_PROGRESS);
+                return;
+            }
+        }*/
+       }while (1);
+    
+       // Initialize BBP register to default value
+       for (Index = 0; Index < NUM_BBP_REG_PARMS; Index++)
+       {
+               i = 0;
+               do
+               {
+                       RTUSBReadMACRegister(PHY_CSR8, &temp);
+                       if (!(temp & BUSY))
+                               break;
+                       i++;
+               }
+               while (i < RETRY_LIMIT);
+               
+               RTUSBWriteMACRegister(PHY_CSR7, BBPRegTable[Index]);
+    }
+    
+    
+       // Initialize RF register to default value
+       //AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel);
+       //AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel);
+    
+       // Add radio off control
+       /*if (pAdapter->PortCfg.bRadio == FALSE)
+       {
+               RTUSBWriteMACRegister(pAdapter, MAC_CSR13, 0);
+               RTUSBWriteMACRegister(pAdapter, MAC_CSR14, 0);
+        
+               RTMP_SET_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF);
+        DBGPRINT(RT_DEBUG_ERROR, "1Set fRTMP_ADAPTER_RADIO_OFF ");
+       }*/
+    
+    
+       //RTUSBMultiRead(STA_CSR0, buffer, 22);
+       
+       NSLog(@"<-- NICInitializeAsic\n");
+        return kIOReturnSuccess;
+}
+
 IOReturn       RalinkJack::RTUSB_VendorRequest(UInt8 direction,
                         UInt8 bRequest, 
                         UInt16 wValue, 
@@ -17,6 +167,7 @@
                         UInt16 wLength) {
     
     IOReturn ret;
+    char buf[10];
     
        if (!_devicePresent)
        {
@@ -25,20 +176,24 @@
        }
        else
        {
-        IOUSBDevRequest * theRequest;
-        theRequest->bmRequestType = USBmakebmRequestType(direction, 
kUSBVendor, kUSBEndpoint);
-        theRequest->bRequest = bRequest;
-        theRequest->wValue = wValue; 
-        theRequest->wIndex = wIndex; 
-        theRequest->pData = pData;
-        theRequest->wLength = wLength;
+        IOUSBDevRequest theRequest;
+        theRequest.bmRequestType = USBmakebmRequestType(direction, kUSBVendor, 
kUSBEndpoint);
+        theRequest.bRequest = bRequest;
+        theRequest.wValue = wValue; 
+        theRequest.wIndex = wIndex; 
+        theRequest.pData = pData;
+        theRequest.wLength = wLength;
         
-        ret = (*_interface)->ControlRequest(_interface, 0, theRequest);
+        ret = (*_interface)->ControlRequest(_interface, 0, &theRequest);
         
-        if (theRequest->wLenDone < wLength) {
-            NSLog(@"WTF, we didn't seem to write the whole request?");
-        }
+        //data is returned in the bus endian
+        //we need to swap
+        //this is going to be bad when we run on intel
+       
+        swab(theRequest.pData, buf, wLength);
+        memcpy(pData, buf,wLength);
         
+        
     }
        return ret;    
 }

Modified: branches/usb-drivers/Sources/Driver/USBJack/USBJack.h
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/USBJack.h       2006-08-27 
06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/Driver/USBJack/USBJack.h       2006-08-27 
16:39:20 UTC (rev 174)
@@ -73,7 +73,7 @@
     int         _getFirmwareType();
     IOReturn    _disable();
     IOReturn    _enable();
-    IOReturn    _init();
+    virtual IOReturn    _init();
     virtual IOReturn    _reset();
     
     inline void        _lockDevice();

Modified: branches/usb-drivers/Sources/Driver/USBJack/USBJack.mm
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/USBJack.mm      2006-08-27 
06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/Driver/USBJack/USBJack.mm      2006-08-27 
16:39:20 UTC (rev 174)
@@ -235,36 +235,7 @@
 }
 
 IOReturn USBJack::_init() {
-    WLIdentity ident;
-    WLHardwareAddress macAddr;
-    int i; 
-    
-    _firmwareType = -1;
-    
-    for (i = 0; i< wlResetTries; i++) {
-        if (_reset() == kIOReturnSuccess) break;
-        if (!_devicePresent) return kIOReturnError;
-    }
-    
-    /*
-     * Get firmware vendor and version
-     */
-     
-    if (_getIdentity(&ident) != kIOReturnSuccess) {
-        NSLog(@"USBJack::_init: Couldn't read card identity\n");
-        return kIOReturnError;
-    }
-
-    NSLog(@"USBJack: Firmware vendor %d, variant %d, version %d.%d\n", 
ident.vendor, ident.variant, ident.major, ident.minor);
-
-    if (_getHardwareAddress(&macAddr) != kIOReturnSuccess) {
-        NSLog(@"USBJack::_init: Couldn't read MAC address\n");
-        return kIOReturnError;
-    }
-    
-    _deviceInit = true;
-    
-    return kIOReturnSuccess;
+    return kIOReturnError;  //this method MUST be overridden
 }
 
 IOReturn USBJack::_reset() {

Modified: branches/usb-drivers/Sources/Driver/USBJack/rt2570.h
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/rt2570.h        2006-08-27 
06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/Driver/USBJack/rt2570.h        2006-08-27 
16:39:20 UTC (rev 174)
@@ -36,7 +36,50 @@
 #define USHORT unsigned short
 
 #define RETRY_LIMIT    3
+#define        LENGTH_802_11                   24
 
+#define mdelay(a) usleep(a*100)
+#define NdisMSleep     mdelay
+
+USHORT  BBPRegTable[] = {
+       0x0302,  // R03
+       0x0419,  // R04
+       0x0E1C,  // R14
+       0x0F30,  // R15
+       0x10ac,  // R16
+       0x1148,  // R17
+       0x1218,  // R18
+       0x13ff,  // R19
+       0x141E,  // R20
+       0x1508,  // R21
+       0x1608,  // R22
+       0x1708,  // R23
+             //modified by david    0x1870,    // R24
+       0x1880,  // R24 modified by david
+             //modified by gary          0x1940,  // R25
+       0x1950,  // R25 //modified by gary
+       0x1A08,  // R26
+       0x1B23,  // R27
+       0x1E10,  // R30
+       0x1F2B,  // R31
+       0x20B9,  // R32
+       0x2212,  // R34
+       0x2350,  // R35
+       0x27c4,  // R39
+       0x2802,  // R40
+       0x2960,  // R41
+       0x3510,  // R53
+       0x3618,  // R54
+       0x3808,  // R56
+       0x3910,  // R57
+       0x3A08,  // R58
+       0x3D60,  // R61
+       0x3E10,  // R62
+       0x4BFF,  // R75//by MAX
+};
+#define        NUM_BBP_REG_PARMS       (sizeof(BBPRegTable) / sizeof(USHORT))
+
+
 #ifndef        __RT2570_H__
 #define        __RT2570_H__
 

Modified: branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h
===================================================================
--- branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h    
2006-08-27 06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h    
2006-08-27 16:39:20 UTC (rev 174)
@@ -26,9 +26,10 @@
 #import <Foundation/Foundation.h>
 #import "WaveDriver.h"
 #import "../Driver/USBJack/IntersilJack.h"
+#import "../Driver/USBJack/RalinkJack.h"
 
 @interface WaveDriverUSBIntersil : WaveDriver {
-    USBJack *_driver;
+    RalinkJack *_driver;
     
     //stuff for timed sending
     float           _interval;

Modified: branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm
===================================================================
--- branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm   
2006-08-27 06:58:35 UTC (rev 173)
+++ branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm   
2006-08-27 16:39:20 UTC (rev 174)
@@ -33,7 +33,7 @@
     self=[super init];
     if(!self) return Nil;
 
-    _driver = new USBJack;
+    _driver = new RalinkJack;
     _driver->startMatching();
     
        _errors = 0;
@@ -129,7 +129,7 @@
 }
 
 - (bool) wakeDriver{
-    _driver = new USBJack;
+    _driver = new RalinkJack;
     _driver->startMatching();
     return YES;
 }
@@ -146,7 +146,7 @@
                        if (_errors < 3) {
                                NSLog(@"USB receiveFrame failed - attempting to 
reload driver");
                                delete _driver;
-                               _driver = new USBJack;
+                               _driver = new RalinkJack;
                                _driver->startMatching();
                        } else {
                                NSLog(@"Excessive errors received - terminating 
driver");


Other related posts:

  • » [kismac] [binaervarianz] r174 - in branches/usb-drivers: KisMAC.xcodeproj Sources/Driver/USBJack Sources/WaveDrivers