Author: gkruse Date: 2006-10-08 22:33:48 +0200 (Sun, 08 Oct 2006) New Revision: 203 Modified: branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm branches/usb-drivers/compile.command branches/usb-drivers/image/KisMACraw.sparseimage Log: Start of support for rt73. Really all this does is add a debug print for the asic version number and add a function stub for load firmware with all the code commented out. As I don't have an rt73 device, if you have one please try this rev and report your asic version number. Modified: branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj =================================================================== --- branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj 2006-10-08 18:17:13 UTC (rev 202) +++ branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj 2006-10-08 20:33:48 UTC (rev 203) @@ -833,7 +833,7 @@ 6CE206E7C5B0502200A26C3A /* RalinkJack.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RalinkJack.mm; path = USBJack/RalinkJack.mm; sourceTree = "<group>"; }; 87CEBA8009AEF03700AEB0B8 /* GrowlController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = GrowlController.h; sourceTree = "<group>"; }; 87CEBA8109AEF03700AEB0B8 /* GrowlController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = GrowlController.m; sourceTree = "<group>"; }; - 8D1107320486CEB800E47090 /* KisMAC.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = KisMAC.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D1107320486CEB800E47090 /* KisMAC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KisMAC.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ Modified: branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm =================================================================== --- branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm 2006-10-08 18:17:13 UTC (rev 202) +++ branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm 2006-10-08 20:33:48 UTC (rev 203) @@ -12,7 +12,6 @@ IOReturn RalinkJack::_init() { unsigned long Index; -// unsigned char buffer[22]; unsigned short temp; unsigned char Value = 0xff; unsigned int i; @@ -24,7 +23,19 @@ do { - //NdisMSleep(1000); + //this is how we dertermine chip type? + RTUSBReadMACRegister(MAC_CSR0, &temp); //read the asic version number + NSLog(@"Found Ralink Asic Version %d", 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 + } + RTUSB_VendorRequest(kUSBOut, 0x1, 0x4, @@ -73,18 +84,8 @@ //lets mess with the leds to verify we have control RTUSBWriteMACRegister(MAC_CSR20, 0x0000); //put led under software control - RTUSBWriteMACRegister(MAC_CSR1, 4); //host is ready to work - RTUSBReadMACRegister(MAC_CSR0, &temp); //read the asic version number - 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 - } + /* //power save stuff RTUSBWriteMACRegister(MAC_CSR11, 2); RTUSBWriteMACRegister(MAC_CSR22, 0x53); @@ -361,11 +362,179 @@ return kIOReturnSuccess; } +IOReturn NICLoadFirmware() +{ + IOReturn Status = kIOReturnSuccess; + unsigned char * src = NULL; + struct file *srcf; + int retval = 0, orgfsuid, orgfsgid, i; + //mm_segment_t orgfs; + unsigned char * pFirmwareImage; + unsigned int FileLength = 0; + int ret; + + + NSLog(@"--> NICLoadFirmware\n"); +/* //pAd->FirmwareVersion = (FIRMWARE_MAJOR_VERSION << 8) + FIRMWARE_MINOR_VERSION; //default version. + + src = RT2573_IMAGE_FILE_NAME; + + // Save uid and gid used for filesystem access. + // Set user and group to 0 (root) + //orgfsuid = current->fsuid; + //orgfsgid = current->fsgid; + //current->fsuid=current->fsgid = 0; + //orgfs = get_fs(); + //set_fs(KERNEL_DS); + + pFirmwareImage = kmalloc(MAX_FIRMWARE_IMAGE_SIZE, MEM_ALLOC_FLAG); + if (pFirmwareImage == NULL) + { + DBGPRINT(RT_DEBUG_ERROR, "NICLoadFirmware-Memory allocate fail\n"); + Status = NDIS_STATUS_FAILURE; + goto out; + } + + if (src && *src) + { + srcf = filp_open(src, O_RDONLY, 0); + if (IS_ERR(srcf)) + { + Status = NDIS_STATUS_FAILURE; + DBGPRINT(RT_DEBUG_ERROR, "--> Error %ld opening %s\n", -PTR_ERR(srcf),src); + } + else + { + // The object must have a read method + if (srcf->f_op && srcf->f_op->read) + { + memset(pFirmwareImage, 0x00, MAX_FIRMWARE_IMAGE_SIZE); + + FileLength = srcf->f_op->read(srcf, pFirmwareImage, MAX_FIRMWARE_IMAGE_SIZE, &srcf->f_pos); + if (FileLength != MAX_FIRMWARE_IMAGE_SIZE) + { + DBGPRINT_ERR("NICLoadFirmware: error file length (=%d) in rt73.bin\n",FileLength); + Status = NDIS_STATUS_FAILURE; + } + else + { //FileLength == MAX_FIRMWARE_IMAGE_SIZE + PUCHAR ptr = pFirmwareImage; + USHORT crc = 0; + + for (i=0; i<(MAX_FIRMWARE_IMAGE_SIZE-2); i++, ptr++) + crc = ByteCRC16(*ptr, crc); + crc = ByteCRC16(0x00, crc); + crc = ByteCRC16(0x00, crc); + + if ((pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2] != (UCHAR)(crc>>8)) || + (pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1] != (UCHAR)(crc))) + { + DBGPRINT_ERR("NICLoadFirmware: CRC = 0x%02x 0x%02x error, should be 0x%02x 0x%02x\n", + pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2], pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1], + (UCHAR)(crc>>8), (UCHAR)(crc) ); + + if (retval) + { + DBGPRINT(RT_DEBUG_ERROR, "--> Error %d closing %s\n", -retval, src); + } + + Status = NDIS_STATUS_FAILURE; + } + else + { + + if ((pAd->FirmwareVersion) > ((pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4] << 8) + pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3])) + { + DBGPRINT_ERR("NICLoadFirmware: Ver=%d.%d, local Ver=%d.%d, used FirmwareImage talbe instead\n", + pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4], pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3], + FIRMWARE_MAJOR_VERSION, FIRMWARE_MINOR_VERSION); + + Status = NDIS_STATUS_FAILURE; + } + else + { + pAd->FirmwareVersion = (pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4] << 8) + pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3]; + DBGPRINT(RT_DEBUG_TRACE,"NICLoadFirmware OK: CRC = 0x%04x ver=%d.%d\n", crc, + pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4], pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3]); + } + + } + } + } + else + { + Status = NDIS_STATUS_FAILURE; + DBGPRINT(RT_DEBUG_ERROR, "--> %s does not have a write method\n", src); + } + + retval = filp_close(srcf, NULL); + if (retval) + { + Status = NDIS_STATUS_FAILURE; + DBGPRINT(RT_DEBUG_ERROR, "--> Error %d closing %s\n", -retval, src); + } + } + } + else + { + Status = NDIS_STATUS_FAILURE; + DBGPRINT(RT_DEBUG_ERROR, "Error src not available\n"); + } + + + if (Status != NDIS_STATUS_SUCCESS) + { + FileLength = FIRMAREIMAGE_LENGTH; + memset(pFirmwareImage, 0x00, FileLength); + NdisMoveMemory(pFirmwareImage, &FirmwareImage[0], FileLength); + Status = NDIS_STATUS_SUCCESS; // change to success + + DBGPRINT(RT_DEBUG_ERROR, "NICLoadFirmware failed, used local Firmware(v %d.%d) instead\n", + FIRMWARE_MAJOR_VERSION, FIRMWARE_MINOR_VERSION); + } + + // select 8051 program bank; write entire firmware image + for (i = 0; i < FileLength; i = i + 4) + { + ret = RTUSBMultiWrite(pAd, FIRMWARE_IMAGE_BASE + i, pFirmwareImage + i, 4); + + if (ret < 0) + { + Status = NDIS_STATUS_FAILURE; + break; + } + } + + +out: + if (pFirmwareImage != NULL) + kfree(pFirmwareImage); + + set_fs(orgfs); + current->fsuid = orgfsuid; + current->fsgid = orgfsgid; + + if (Status == NDIS_STATUS_SUCCESS) + { + RTUSBFirmwareRun(pAd); + + // + // Send LED command to Firmare after RTUSBFirmwareRun; + // + RTMPSetLED(pAd, LED_LINK_DOWN); + + } + + DBGPRINT(RT_DEBUG_TRACE,"<-- NICLoadFirmware (src=%s)\n", src); + + */ + return Status; +} IOReturn RalinkJack::RTUSBReadEEPROM(unsigned short Offset, - unsigned char * pData, - unsigned short length) + unsigned char * pData, + unsigned short length) { IOReturn Status; Modified: branches/usb-drivers/compile.command =================================================================== --- branches/usb-drivers/compile.command 2006-10-08 18:17:13 UTC (rev 202) +++ branches/usb-drivers/compile.command 2006-10-08 20:33:48 UTC (rev 203) @@ -86,7 +86,7 @@ cd .. echo -n "Determine Subversion Revision... " -SVNVERS=`svnversion -n .` +SVNVERS=`svn version -n .` echo $SVNVERS sed -e "s/\\\$Revision.*\\\$/\\\$Revision: $SVNVERS\\\$/" Resources/Info.plist.templ > Resources/Info.plist sed -e "s/\\\$Revision.*\\\$/\\\$Revision: $SVNVERS\\\$/" Resources/Strings/English.lproj/InfoPlist.strings.templ > Resources/Strings/English.lproj/InfoPlist.strings Modified: branches/usb-drivers/image/KisMACraw.sparseimage =================================================================== (Binary files differ)