[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