1 /* 2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. 3 * All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * 20 * File: baseband.c 21 * 22 * Purpose: Implement functions to access baseband 23 * 24 * Author: Jerry Chen 25 * 26 * Date: Jun. 5, 2002 27 * 28 * Functions: 29 * BBuGetFrameTime - Calculate data frame transmitting time 30 * BBvCalculateParameter - Calculate PhyLength, PhyService and Phy Signal parameter for baseband Tx 31 * BBbVT3184Init - VIA VT3184 baseband chip init code 32 * BBvLoopbackOn - Turn on BaseBand Loopback mode 33 * BBvLoopbackOff - Turn off BaseBand Loopback mode 34 * 35 * Revision History: 36 * 37 * 38 */ 39 40 #include "tmacro.h" 41 #include "tether.h" 42 #include "mac.h" 43 #include "baseband.h" 44 #include "rf.h" 45 #include "srom.h" 46 #include "control.h" 47 #include "datarate.h" 48 #include "rndis.h" 49 50 /*--------------------- Static Definitions -------------------------*/ 51 static int msglevel =MSG_LEVEL_INFO; 52 //static int msglevel =MSG_LEVEL_DEBUG; 53 54 /*--------------------- Static Classes ----------------------------*/ 55 56 /*--------------------- Static Variables --------------------------*/ 57 58 /*--------------------- Static Functions --------------------------*/ 59 60 /*--------------------- Export Variables --------------------------*/ 61 62 /*--------------------- Static Definitions -------------------------*/ 63 64 /*--------------------- Static Classes ----------------------------*/ 65 66 /*--------------------- Static Variables --------------------------*/ 67 68 69 BYTE abyVT3184_AGC[] = { 70 0x00, //0 71 0x00, //1 72 0x02, //2 73 0x02, //3 //RobertYu:20060505, 0x04, //3 74 0x04, //4 75 0x04, //5 //RobertYu:20060505, 0x06, //5 76 0x06, //6 77 0x06, //7 78 0x08, //8 79 0x08, //9 80 0x0A, //A 81 0x0A, //B 82 0x0C, //C 83 0x0C, //D 84 0x0E, //E 85 0x0E, //F 86 0x10, //10 87 0x10, //11 88 0x12, //12 89 0x12, //13 90 0x14, //14 91 0x14, //15 92 0x16, //16 93 0x16, //17 94 0x18, //18 95 0x18, //19 96 0x1A, //1A 97 0x1A, //1B 98 0x1C, //1C 99 0x1C, //1D 100 0x1E, //1E 101 0x1E, //1F 102 0x20, //20 103 0x20, //21 104 0x22, //22 105 0x22, //23 106 0x24, //24 107 0x24, //25 108 0x26, //26 109 0x26, //27 110 0x28, //28 111 0x28, //29 112 0x2A, //2A 113 0x2A, //2B 114 0x2C, //2C 115 0x2C, //2D 116 0x2E, //2E 117 0x2E, //2F 118 0x30, //30 119 0x30, //31 120 0x32, //32 121 0x32, //33 122 0x34, //34 123 0x34, //35 124 0x36, //36 125 0x36, //37 126 0x38, //38 127 0x38, //39 128 0x3A, //3A 129 0x3A, //3B 130 0x3C, //3C 131 0x3C, //3D 132 0x3E, //3E 133 0x3E //3F 134 }; 135 136 137 BYTE abyVT3184_AL2230[] = { 138 0x31,//00 139 0x00, 140 0x00, 141 0x00, 142 0x00, 143 0x80, 144 0x00, 145 0x00, 146 0x70, 147 0x45,//tx //0x64 for FPGA 148 0x2A, 149 0x76, 150 0x00, 151 0x00, 152 0x80, 153 0x00, 154 0x00,//10 155 0x00, 156 0x00, 157 0x00, 158 0x00, 159 0x00, 160 0x00, 161 0x00, 162 0x00, 163 0x00, 164 0x00, 165 0x8e, //RobertYu:20060522, //0x8d, 166 0x0a, //RobertYu:20060515, //0x09, 167 0x00, 168 0x00, 169 0x00, 170 0x00,//20 171 0x00, 172 0x00, 173 0x00, 174 0x00, 175 0x4a, 176 0x00, 177 0x00, 178 0x00, 179 0x00, 180 0x00, 181 0x00, 182 0x00, 183 0x4a, 184 0x00, 185 0x0c, //RobertYu:20060522, //0x10, 186 0x26,//30 187 0x5b, 188 0x00, 189 0x00, 190 0x00, 191 0x00, 192 0xaa, 193 0xaa, 194 0xff, 195 0xff, 196 0x79, 197 0x00, 198 0x00, 199 0x0b, 200 0x48, 201 0x04, 202 0x00,//40 203 0x08, 204 0x00, 205 0x08, 206 0x08, 207 0x14, 208 0x05, 209 0x09, 210 0x00, 211 0x00, 212 0x00, 213 0x00, 214 0x09, 215 0x73, 216 0x00, 217 0xc5, 218 0x00,//50 //RobertYu:20060505, //0x15,//50 219 0x19, 220 0x00, 221 0x00, 222 0x00, 223 0x00, 224 0x00, 225 0x00, 226 0x00, 227 0xd0, //RobertYu:20060505, //0xb0, 228 0x00, 229 0x00, 230 0x00, 231 0x00, 232 0x00, 233 0x00, 234 0xe4,//60 235 0x80, 236 0x00, 237 0x00, 238 0x00, 239 0x00, 240 0x98, 241 0x0a, 242 0x00, 243 0x00, 244 0x00, 245 0x00, 246 0x00, //0x80 for FPGA 247 0x03, 248 0x01, 249 0x00, 250 0x00,//70 251 0x00, 252 0x00, 253 0x00, 254 0x00, 255 0x00, 256 0x00, 257 0x00, 258 0x00, 259 0x00, 260 0x00, 261 0x00, 262 0x00, 263 0x00, 264 0x00, 265 0x00, 266 0x8c,//80 267 0x01, 268 0x09, 269 0x00, 270 0x00, 271 0x00, 272 0x00, 273 0x00, 274 0x08, 275 0x00, 276 0x1f, //RobertYu:20060516, //0x0f, 277 0xb7, 278 0x88, 279 0x47, 280 0xaa, 281 0x00, //RobertYu:20060505, //0x02, 282 0x20,//90 //RobertYu:20060505, //0x22,//90 283 0x00, 284 0x00, 285 0x00, 286 0x00, 287 0x00, 288 0x00, 289 0xeb, 290 0x00, 291 0x00, 292 0x00, 293 0x00, 294 0x00, 295 0x00, 296 0x00, 297 0x01, 298 0x00,//a0 299 0x00, 300 0x00, 301 0x00, 302 0x00, 303 0x00, 304 0x10, 305 0x00, 306 0x18, 307 0x00, 308 0x00, 309 0x00, 310 0x00, 311 0x15, //RobertYu:20060516, //0x00, 312 0x00, 313 0x18, 314 0x38,//b0 315 0x30, 316 0x00, 317 0x00, 318 0xff, 319 0x0f, 320 0xe4, 321 0xe2, 322 0x00, 323 0x00, 324 0x00, 325 0x03, 326 0x01, 327 0x00, 328 0x00, 329 0x00, 330 0x18,//c0 331 0x20, 332 0x07, 333 0x18, 334 0xff, 335 0xff, //RobertYu:20060509, //0x2c, 336 0x0e, //RobertYu:20060530, //0x0c, 337 0x0a, 338 0x0e, 339 0x00, //RobertYu:20060505, //0x01, 340 0x82, //RobertYu:20060516, //0x8f, 341 0xa7, 342 0x3c, 343 0x10, 344 0x30, //RobertYu:20060627, //0x0b, 345 0x05, //RobertYu:20060516, //0x25, 346 0x40,//d0 347 0x12, 348 0x00, 349 0x00, 350 0x10, 351 0x28, 352 0x80, 353 0x2A, 354 0x00, 355 0x00, 356 0x00, 357 0x00, 358 0x00, 359 0x00, 360 0x00, 361 0x00, 362 0x00,//e0 363 0xf3, //RobertYu:20060516, //0xd3, 364 0x00, 365 0x00, 366 0x00, 367 0x10, 368 0x00, 369 0x12, //RobertYu:20060627, //0x10, 370 0x00, 371 0xf4, 372 0x00, 373 0xff, 374 0x79, 375 0x20, 376 0x30, 377 0x05, //RobertYu:20060516, //0x0c, 378 0x00,//f0 379 0x3e, 380 0x00, 381 0x00, 382 0x00, 383 0x00, 384 0x00, 385 0x00, 386 0x00, 387 0x00, 388 0x00, 389 0x00, 390 0x00, 391 0x00, 392 0x00, 393 0x00 394 }; 395 396 397 398 //{{RobertYu:20060515, new BB setting for VT3226D0 399 BYTE abyVT3184_VT3226D0[] = { 400 0x31,//00 401 0x00, 402 0x00, 403 0x00, 404 0x00, 405 0x80, 406 0x00, 407 0x00, 408 0x70, 409 0x45,//tx //0x64 for FPGA 410 0x2A, 411 0x76, 412 0x00, 413 0x00, 414 0x80, 415 0x00, 416 0x00,//10 417 0x00, 418 0x00, 419 0x00, 420 0x00, 421 0x00, 422 0x00, 423 0x00, 424 0x00, 425 0x00, 426 0x00, 427 0x8e, //RobertYu:20060525, //0x8d, 428 0x0a, //RobertYu:20060515, //0x09, 429 0x00, 430 0x00, 431 0x00, 432 0x00,//20 433 0x00, 434 0x00, 435 0x00, 436 0x00, 437 0x4a, 438 0x00, 439 0x00, 440 0x00, 441 0x00, 442 0x00, 443 0x00, 444 0x00, 445 0x4a, 446 0x00, 447 0x0c, //RobertYu:20060525, //0x10, 448 0x26,//30 449 0x5b, 450 0x00, 451 0x00, 452 0x00, 453 0x00, 454 0xaa, 455 0xaa, 456 0xff, 457 0xff, 458 0x79, 459 0x00, 460 0x00, 461 0x0b, 462 0x48, 463 0x04, 464 0x00,//40 465 0x08, 466 0x00, 467 0x08, 468 0x08, 469 0x14, 470 0x05, 471 0x09, 472 0x00, 473 0x00, 474 0x00, 475 0x00, 476 0x09, 477 0x73, 478 0x00, 479 0xc5, 480 0x00,//50 //RobertYu:20060505, //0x15,//50 481 0x19, 482 0x00, 483 0x00, 484 0x00, 485 0x00, 486 0x00, 487 0x00, 488 0x00, 489 0xd0, //RobertYu:20060505, //0xb0, 490 0x00, 491 0x00, 492 0x00, 493 0x00, 494 0x00, 495 0x00, 496 0xe4,//60 497 0x80, 498 0x00, 499 0x00, 500 0x00, 501 0x00, 502 0x98, 503 0x0a, 504 0x00, 505 0x00, 506 0x00, 507 0x00, 508 0x00, //0x80 for FPGA 509 0x03, 510 0x01, 511 0x00, 512 0x00,//70 513 0x00, 514 0x00, 515 0x00, 516 0x00, 517 0x00, 518 0x00, 519 0x00, 520 0x00, 521 0x00, 522 0x00, 523 0x00, 524 0x00, 525 0x00, 526 0x00, 527 0x00, 528 0x8c,//80 529 0x01, 530 0x09, 531 0x00, 532 0x00, 533 0x00, 534 0x00, 535 0x00, 536 0x08, 537 0x00, 538 0x1f, //RobertYu:20060515, //0x0f, 539 0xb7, 540 0x88, 541 0x47, 542 0xaa, 543 0x00, //RobertYu:20060505, //0x02, 544 0x20,//90 //RobertYu:20060505, //0x22,//90 545 0x00, 546 0x00, 547 0x00, 548 0x00, 549 0x00, 550 0x00, 551 0xeb, 552 0x00, 553 0x00, 554 0x00, 555 0x00, 556 0x00, 557 0x00, 558 0x00, 559 0x01, 560 0x00,//a0 561 0x00, 562 0x00, 563 0x00, 564 0x00, 565 0x00, 566 0x10, 567 0x00, 568 0x18, 569 0x00, 570 0x00, 571 0x00, 572 0x00, 573 0x00, 574 0x00, 575 0x18, 576 0x38,//b0 577 0x30, 578 0x00, 579 0x00, 580 0xff, 581 0x0f, 582 0xe4, 583 0xe2, 584 0x00, 585 0x00, 586 0x00, 587 0x03, 588 0x01, 589 0x00, 590 0x00, 591 0x00, 592 0x18,//c0 593 0x20, 594 0x07, 595 0x18, 596 0xff, 597 0xff, //RobertYu:20060509, //0x2c, 598 0x10, //RobertYu:20060525, //0x0c, 599 0x0a, 600 0x0e, 601 0x00, //RobertYu:20060505, //0x01, 602 0x84, //RobertYu:20060525, //0x8f, 603 0xa7, 604 0x3c, 605 0x10, 606 0x24, //RobertYu:20060627, //0x18, 607 0x05, //RobertYu:20060515, //0x25, 608 0x40,//d0 609 0x12, 610 0x00, 611 0x00, 612 0x10, 613 0x28, 614 0x80, 615 0x2A, 616 0x00, 617 0x00, 618 0x00, 619 0x00, 620 0x00, 621 0x00, 622 0x00, 623 0x00, 624 0x00,//e0 625 0xf3, //RobertYu:20060515, //0xd3, 626 0x00, 627 0x00, 628 0x00, 629 0x10, 630 0x00, 631 0x10, //RobertYu:20060627, //0x0e, 632 0x00, 633 0xf4, 634 0x00, 635 0xff, 636 0x79, 637 0x20, 638 0x30, 639 0x08, //RobertYu:20060515, //0x0c, 640 0x00,//f0 641 0x3e, 642 0x00, 643 0x00, 644 0x00, 645 0x00, 646 0x00, 647 0x00, 648 0x00, 649 0x00, 650 0x00, 651 0x00, 652 0x00, 653 0x00, 654 0x00, 655 0x00, 656 }; 657 658 const WORD awcFrameTime[MAX_RATE] = 659 {10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216}; 660 661 /*--------------------- Static Functions --------------------------*/ 662 663 /* 664 static 665 unsigned long 666 s_ulGetLowSQ3(PSDevice pDevice); 667 668 static 669 unsigned long 670 s_ulGetRatio(PSDevice pDevice); 671 672 static 673 void 674 s_vClearSQ3Value(PSDevice pDevice); 675 */ 676 677 /*--------------------- Export Variables --------------------------*/ 678 /* 679 * Description: Calculate data frame transmitting time 680 * 681 * Parameters: 682 * In: 683 * byPreambleType - Preamble Type 684 * byPktType - PK_TYPE_11A, PK_TYPE_11B, PK_TYPE_11GB, PK_TYPE_11GA 685 * cbFrameLength - Baseband Type 686 * wRate - Tx Rate 687 * Out: 688 * 689 * Return Value: FrameTime 690 * 691 */ 692 unsigned int 693 BBuGetFrameTime ( 694 BYTE byPreambleType, 695 BYTE byPktType, 696 unsigned int cbFrameLength, 697 WORD wRate 698 ) 699 { 700 unsigned int uFrameTime; 701 unsigned int uPreamble; 702 unsigned int uTmp; 703 unsigned int uRateIdx = (unsigned int)wRate; 704 unsigned int uRate = 0; 705 706 707 if (uRateIdx > RATE_54M) { 708 ASSERT(0); 709 return 0; 710 } 711 712 uRate = (unsigned int)awcFrameTime[uRateIdx]; 713 714 if (uRateIdx <= 3) { //CCK mode 715 716 if (byPreambleType == 1) {//Short 717 uPreamble = 96; 718 } else { 719 uPreamble = 192; 720 } 721 uFrameTime = (cbFrameLength * 80) / uRate; //????? 722 uTmp = (uFrameTime * uRate) / 80; 723 if (cbFrameLength != uTmp) { 724 uFrameTime ++; 725 } 726 727 return (uPreamble + uFrameTime); 728 } 729 else { 730 uFrameTime = (cbFrameLength * 8 + 22) / uRate; //???????? 731 uTmp = ((uFrameTime * uRate) - 22) / 8; 732 if(cbFrameLength != uTmp) { 733 uFrameTime ++; 734 } 735 uFrameTime = uFrameTime * 4; //??????? 736 if(byPktType != PK_TYPE_11A) { 737 uFrameTime += 6; 738 } 739 return (20 + uFrameTime); //?????? 740 } 741 } 742 743 /* 744 * Description: Calculate Length, Service, and Signal fields of Phy for Tx 745 * 746 * Parameters: 747 * In: 748 * pDevice - Device Structure 749 * cbFrameLength - Tx Frame Length 750 * wRate - Tx Rate 751 * Out: 752 * pwPhyLen - pointer to Phy Length field 753 * pbyPhySrv - pointer to Phy Service field 754 * pbyPhySgn - pointer to Phy Signal field 755 * 756 * Return Value: none 757 * 758 */ 759 void 760 BBvCalculateParameter ( 761 PSDevice pDevice, 762 unsigned int cbFrameLength, 763 WORD wRate, 764 BYTE byPacketType, 765 PWORD pwPhyLen, 766 PBYTE pbyPhySrv, 767 PBYTE pbyPhySgn 768 ) 769 { 770 unsigned int cbBitCount; 771 unsigned int cbUsCount = 0; 772 unsigned int cbTmp; 773 BOOL bExtBit; 774 BYTE byPreambleType = pDevice->byPreambleType; 775 BOOL bCCK = pDevice->bCCK; 776 777 cbBitCount = cbFrameLength * 8; 778 bExtBit = FALSE; 779 780 switch (wRate) { 781 case RATE_1M : 782 cbUsCount = cbBitCount; 783 *pbyPhySgn = 0x00; 784 break; 785 786 case RATE_2M : 787 cbUsCount = cbBitCount / 2; 788 if (byPreambleType == 1) 789 *pbyPhySgn = 0x09; 790 else // long preamble 791 *pbyPhySgn = 0x01; 792 break; 793 794 case RATE_5M : 795 if (bCCK == FALSE) 796 cbBitCount ++; 797 cbUsCount = (cbBitCount * 10) / 55; 798 cbTmp = (cbUsCount * 55) / 10; 799 if (cbTmp != cbBitCount) 800 cbUsCount ++; 801 if (byPreambleType == 1) 802 *pbyPhySgn = 0x0a; 803 else // long preamble 804 *pbyPhySgn = 0x02; 805 break; 806 807 case RATE_11M : 808 809 if (bCCK == FALSE) 810 cbBitCount ++; 811 cbUsCount = cbBitCount / 11; 812 cbTmp = cbUsCount * 11; 813 if (cbTmp != cbBitCount) { 814 cbUsCount ++; 815 if ((cbBitCount - cbTmp) <= 3) 816 bExtBit = TRUE; 817 } 818 if (byPreambleType == 1) 819 *pbyPhySgn = 0x0b; 820 else // long preamble 821 *pbyPhySgn = 0x03; 822 break; 823 824 case RATE_6M : 825 if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ 826 *pbyPhySgn = 0x9B; //1001 1011 827 } 828 else {//11g, 2.4GHZ 829 *pbyPhySgn = 0x8B; //1000 1011 830 } 831 break; 832 833 case RATE_9M : 834 if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ 835 *pbyPhySgn = 0x9F; //1001 1111 836 } 837 else {//11g, 2.4GHZ 838 *pbyPhySgn = 0x8F; //1000 1111 839 } 840 break; 841 842 case RATE_12M : 843 if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ 844 *pbyPhySgn = 0x9A; //1001 1010 845 } 846 else {//11g, 2.4GHZ 847 *pbyPhySgn = 0x8A; //1000 1010 848 } 849 break; 850 851 case RATE_18M : 852 if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ 853 *pbyPhySgn = 0x9E; //1001 1110 854 } 855 else {//11g, 2.4GHZ 856 *pbyPhySgn = 0x8E; //1000 1110 857 } 858 break; 859 860 case RATE_24M : 861 if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ 862 *pbyPhySgn = 0x99; //1001 1001 863 } 864 else {//11g, 2.4GHZ 865 *pbyPhySgn = 0x89; //1000 1001 866 } 867 break; 868 869 case RATE_36M : 870 if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ 871 *pbyPhySgn = 0x9D; //1001 1101 872 } 873 else {//11g, 2.4GHZ 874 *pbyPhySgn = 0x8D; //1000 1101 875 } 876 break; 877 878 case RATE_48M : 879 if(byPacketType == PK_TYPE_11A) {//11a, 5GHZ 880 *pbyPhySgn = 0x98; //1001 1000 881 } 882 else {//11g, 2.4GHZ 883 *pbyPhySgn = 0x88; //1000 1000 884 } 885 break; 886 887 case RATE_54M : 888 if (byPacketType == PK_TYPE_11A) {//11a, 5GHZ 889 *pbyPhySgn = 0x9C; //1001 1100 890 } 891 else {//11g, 2.4GHZ 892 *pbyPhySgn = 0x8C; //1000 1100 893 } 894 break; 895 896 default : 897 if (byPacketType == PK_TYPE_11A) {//11a, 5GHZ 898 *pbyPhySgn = 0x9C; //1001 1100 899 } 900 else {//11g, 2.4GHZ 901 *pbyPhySgn = 0x8C; //1000 1100 902 } 903 break; 904 } 905 906 if (byPacketType == PK_TYPE_11B) { 907 *pbyPhySrv = 0x00; 908 if (bExtBit) 909 *pbyPhySrv = *pbyPhySrv | 0x80; 910 *pwPhyLen = (WORD) cbUsCount; 911 } 912 else { 913 *pbyPhySrv = 0x00; 914 *pwPhyLen = (WORD)cbFrameLength; 915 } 916 } 917 918 919 /* 920 * Description: Set Antenna mode 921 * 922 * Parameters: 923 * In: 924 * pDevice - Device Structure 925 * byAntennaMode - Antenna Mode 926 * Out: 927 * none 928 * 929 * Return Value: none 930 * 931 */ 932 void 933 BBvSetAntennaMode (PSDevice pDevice, BYTE byAntennaMode) 934 { 935 switch (byAntennaMode) { 936 case ANT_TXA: 937 case ANT_TXB: 938 break; 939 case ANT_RXA: 940 pDevice->byBBRxConf &= 0xFC; 941 break; 942 case ANT_RXB: 943 pDevice->byBBRxConf &= 0xFE; 944 pDevice->byBBRxConf |= 0x02; 945 break; 946 } 947 948 949 CONTROLnsRequestOut(pDevice, 950 MESSAGE_TYPE_SET_ANTMD, 951 (WORD) byAntennaMode, 952 0, 953 0, 954 NULL); 955 } 956 957 /* 958 * Description: Set Antenna mode 959 * 960 * Parameters: 961 * In: 962 * pDevice - Device Structure 963 * byAntennaMode - Antenna Mode 964 * Out: 965 * none 966 * 967 * Return Value: none 968 * 969 */ 970 971 BOOL BBbVT3184Init(PSDevice pDevice) 972 { 973 int ntStatus; 974 WORD wLength; 975 PBYTE pbyAddr; 976 PBYTE pbyAgc; 977 WORD wLengthAgc; 978 BYTE abyArray[256]; 979 980 ntStatus = CONTROLnsRequestIn(pDevice, 981 MESSAGE_TYPE_READ, 982 0, 983 MESSAGE_REQUEST_EEPROM, 984 EEP_MAX_CONTEXT_SIZE, 985 pDevice->abyEEPROM); 986 if (ntStatus != STATUS_SUCCESS) { 987 return FALSE; 988 } 989 990 991 // if ((pDevice->abyEEPROM[EEP_OFS_RADIOCTL]&0x06)==0x04) 992 // return FALSE; 993 994 //zonetype initial 995 pDevice->byOriginalZonetype = pDevice->abyEEPROM[EEP_OFS_ZONETYPE]; 996 if(pDevice->config_file.ZoneType >= 0) { //read zonetype file ok! 997 if ((pDevice->config_file.ZoneType == 0)&& 998 (pDevice->abyEEPROM[EEP_OFS_ZONETYPE] !=0x00)){ //for USA 999 pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0; 1000 pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0B; 1001 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Init Zone Type :USA\n"); 1002 } 1003 else if((pDevice->config_file.ZoneType == 1)&& 1004 (pDevice->abyEEPROM[EEP_OFS_ZONETYPE]!=0x01)){ //for Japan 1005 pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0x01; 1006 pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0D; 1007 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Init Zone Type :Japan\n"); 1008 } 1009 else if((pDevice->config_file.ZoneType == 2)&& 1010 (pDevice->abyEEPROM[EEP_OFS_ZONETYPE]!=0x02)){ //for Europe 1011 pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0x02; 1012 pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0D; 1013 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Init Zone Type :Europe\n"); 1014 } 1015 else { 1016 if(pDevice->config_file.ZoneType !=pDevice->abyEEPROM[EEP_OFS_ZONETYPE]) 1017 printk("zonetype in file[%02x] mismatch with in EEPROM[%02x]\n",pDevice->config_file.ZoneType,pDevice->abyEEPROM[EEP_OFS_ZONETYPE]); 1018 else 1019 printk("Read Zonetype file success,use default zonetype setting[%02x]\n",pDevice->config_file.ZoneType); 1020 } 1021 } 1022 1023 if ( !pDevice->bZoneRegExist ) { 1024 pDevice->byZoneType = pDevice->abyEEPROM[EEP_OFS_ZONETYPE]; 1025 } 1026 pDevice->byRFType = pDevice->abyEEPROM[EEP_OFS_RFTYPE]; 1027 1028 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Zone Type %x\n", pDevice->byZoneType); 1029 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"RF Type %d\n", pDevice->byRFType); 1030 1031 if ((pDevice->byRFType == RF_AL2230) || (pDevice->byRFType == RF_AL2230S)) { 1032 pDevice->byBBRxConf = abyVT3184_AL2230[10]; 1033 wLength = sizeof(abyVT3184_AL2230); 1034 pbyAddr = abyVT3184_AL2230; 1035 pbyAgc = abyVT3184_AGC; 1036 wLengthAgc = sizeof(abyVT3184_AGC); 1037 1038 pDevice->abyBBVGA[0] = 0x1C; 1039 pDevice->abyBBVGA[1] = 0x10; 1040 pDevice->abyBBVGA[2] = 0x0; 1041 pDevice->abyBBVGA[3] = 0x0; 1042 pDevice->ldBmThreshold[0] = -70; 1043 pDevice->ldBmThreshold[1] = -48; 1044 pDevice->ldBmThreshold[2] = 0; 1045 pDevice->ldBmThreshold[3] = 0; 1046 } 1047 else if (pDevice->byRFType == RF_AIROHA7230) { 1048 pDevice->byBBRxConf = abyVT3184_AL2230[10]; 1049 wLength = sizeof(abyVT3184_AL2230); 1050 pbyAddr = abyVT3184_AL2230; 1051 pbyAgc = abyVT3184_AGC; 1052 wLengthAgc = sizeof(abyVT3184_AGC); 1053 1054 // Init ANT B select,TX Config CR09 = 0x61->0x45, 0x45->0x41(VC1/VC2 define, make the ANT_A, ANT_B inverted) 1055 //pbyAddr[0x09] = 0x41; 1056 // Init ANT B select,RX Config CR10 = 0x28->0x2A, 0x2A->0x28(VC1/VC2 define, make the ANT_A, ANT_B inverted) 1057 //pbyAddr[0x0a] = 0x28; 1058 // Select VC1/VC2, CR215 = 0x02->0x06 1059 pbyAddr[0xd7] = 0x06; 1060 1061 pDevice->abyBBVGA[0] = 0x1C; 1062 pDevice->abyBBVGA[1] = 0x10; 1063 pDevice->abyBBVGA[2] = 0x0; 1064 pDevice->abyBBVGA[3] = 0x0; 1065 pDevice->ldBmThreshold[0] = -70; 1066 pDevice->ldBmThreshold[1] = -48; 1067 pDevice->ldBmThreshold[2] = 0; 1068 pDevice->ldBmThreshold[3] = 0; 1069 } 1070 else if ( (pDevice->byRFType == RF_VT3226) || (pDevice->byRFType == RF_VT3226D0) ) { 1071 pDevice->byBBRxConf = abyVT3184_VT3226D0[10]; //RobertYu:20060515 1072 wLength = sizeof(abyVT3184_VT3226D0); //RobertYu:20060515 1073 pbyAddr = abyVT3184_VT3226D0; //RobertYu:20060515 1074 pbyAgc = abyVT3184_AGC; 1075 wLengthAgc = sizeof(abyVT3184_AGC); 1076 1077 pDevice->abyBBVGA[0] = 0x20; //RobertYu:20060104, reguest by Jack 1078 pDevice->abyBBVGA[1] = 0x10; 1079 pDevice->abyBBVGA[2] = 0x0; 1080 pDevice->abyBBVGA[3] = 0x0; 1081 pDevice->ldBmThreshold[0] = -70; 1082 pDevice->ldBmThreshold[1] = -48; 1083 pDevice->ldBmThreshold[2] = 0; 1084 pDevice->ldBmThreshold[3] = 0; 1085 // Fix VT3226 DFC system timing issue 1086 MACvRegBitsOn(pDevice, MAC_REG_SOFTPWRCTL2, SOFTPWRCTL_RFLEOPT); 1087 //}} 1088 //{{RobertYu:20060609 1089 } else if ( (pDevice->byRFType == RF_VT3342A0) ) { 1090 pDevice->byBBRxConf = abyVT3184_VT3226D0[10]; 1091 wLength = sizeof(abyVT3184_VT3226D0); 1092 pbyAddr = abyVT3184_VT3226D0; 1093 pbyAgc = abyVT3184_AGC; 1094 wLengthAgc = sizeof(abyVT3184_AGC); 1095 1096 pDevice->abyBBVGA[0] = 0x20; 1097 pDevice->abyBBVGA[1] = 0x10; 1098 pDevice->abyBBVGA[2] = 0x0; 1099 pDevice->abyBBVGA[3] = 0x0; 1100 pDevice->ldBmThreshold[0] = -70; 1101 pDevice->ldBmThreshold[1] = -48; 1102 pDevice->ldBmThreshold[2] = 0; 1103 pDevice->ldBmThreshold[3] = 0; 1104 // Fix VT3226 DFC system timing issue 1105 MACvRegBitsOn(pDevice, MAC_REG_SOFTPWRCTL2, SOFTPWRCTL_RFLEOPT); 1106 //}} 1107 } else { 1108 return TRUE; 1109 } 1110 1111 memcpy(abyArray, pbyAddr, wLength); 1112 CONTROLnsRequestOut(pDevice, 1113 MESSAGE_TYPE_WRITE, 1114 0, 1115 MESSAGE_REQUEST_BBREG, 1116 wLength, 1117 abyArray 1118 ); 1119 1120 memcpy(abyArray, pbyAgc, wLengthAgc); 1121 CONTROLnsRequestOut(pDevice, 1122 MESSAGE_TYPE_WRITE, 1123 0, 1124 MESSAGE_REQUEST_BBAGC, 1125 wLengthAgc, 1126 abyArray 1127 ); 1128 1129 1130 if ((pDevice->byRFType == RF_VT3226) || //RobertYu:20051116, 20060111 remove VT3226D0 1131 (pDevice->byRFType == RF_VT3342A0) //RobertYu:20060609 1132 ) { 1133 ControlvWriteByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_ITRTMSET,0x23); 1134 MACvRegBitsOn(pDevice,MAC_REG_PAPEDELAY,0x01); 1135 } 1136 else if (pDevice->byRFType == RF_VT3226D0) 1137 { 1138 ControlvWriteByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_ITRTMSET,0x11); 1139 MACvRegBitsOn(pDevice,MAC_REG_PAPEDELAY,0x01); 1140 } 1141 1142 1143 ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x04,0x7F); 1144 ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x0D,0x01); 1145 1146 RFbRFTableDownload(pDevice); 1147 return TRUE;//ntStatus; 1148 } 1149 1150 1151 /* 1152 * Description: Turn on BaseBand Loopback mode 1153 * 1154 * Parameters: 1155 * In: 1156 * pDevice - Device Structure 1157 * 1158 * Out: 1159 * none 1160 * 1161 * Return Value: none 1162 * 1163 */ 1164 void BBvLoopbackOn (PSDevice pDevice) 1165 { 1166 BYTE byData; 1167 1168 //CR C9 = 0x00 1169 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0xC9, &pDevice->byBBCRc9);//CR201 1170 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0); 1171 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x4D, &pDevice->byBBCR4d);//CR77 1172 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x4D, 0x90); 1173 1174 //CR 88 = 0x02(CCK), 0x03(OFDM) 1175 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x88, &pDevice->byBBCR88);//CR136 1176 1177 if (pDevice->wCurrentRate <= RATE_11M) { //CCK 1178 // Enable internal digital loopback: CR33 |= 0000 0001 1179 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x21, &byData);//CR33 1180 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x21, (BYTE)(byData | 0x01));//CR33 1181 // CR154 = 0x00 1182 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x9A, 0); //CR154 1183 1184 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x88, 0x02);//CR239 1185 } 1186 else { //OFDM 1187 // Enable internal digital loopback:CR154 |= 0000 0001 1188 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x9A, &byData);//CR154 1189 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x9A, (BYTE)(byData | 0x01));//CR154 1190 // CR33 = 0x00 1191 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x21, 0); //CR33 1192 1193 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x88, 0x03);//CR239 1194 } 1195 1196 //CR14 = 0x00 1197 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0E, 0);//CR14 1198 1199 // Disable TX_IQUN 1200 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x09, &pDevice->byBBCR09); 1201 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x09, (BYTE)(pDevice->byBBCR09 & 0xDE)); 1202 } 1203 1204 /* 1205 * Description: Turn off BaseBand Loopback mode 1206 * 1207 * Parameters: 1208 * In: 1209 * pDevice - Device Structure 1210 * 1211 * Out: 1212 * none 1213 * 1214 * Return Value: none 1215 * 1216 */ 1217 void BBvLoopbackOff (PSDevice pDevice) 1218 { 1219 BYTE byData; 1220 1221 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, pDevice->byBBCRc9);//CR201 1222 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x88, pDevice->byBBCR88);//CR136 1223 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x09, pDevice->byBBCR09);//CR136 1224 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x4D, pDevice->byBBCR4d);//CR77 1225 1226 if (pDevice->wCurrentRate <= RATE_11M) { // CCK 1227 // Set the CR33 Bit2 to disable internal Loopback. 1228 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x21, &byData);//CR33 1229 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x21, (BYTE)(byData & 0xFE));//CR33 1230 } else { /* OFDM */ 1231 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x9A, &byData);//CR154 1232 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x9A, (BYTE)(byData & 0xFE));//CR154 1233 } 1234 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0x0E, &byData);//CR14 1235 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0E, (BYTE)(byData | 0x80));//CR14 1236 1237 } 1238 1239 1240 /* 1241 * Description: Set ShortSlotTime mode 1242 * 1243 * Parameters: 1244 * In: 1245 * pDevice - Device Structure 1246 * Out: 1247 * none 1248 * 1249 * Return Value: none 1250 * 1251 */ 1252 void 1253 BBvSetShortSlotTime (PSDevice pDevice) 1254 { 1255 BYTE byBBVGA=0; 1256 1257 if (pDevice->bShortSlotTime) 1258 pDevice->byBBRxConf &= 0xDF;//1101 1111 1259 else 1260 pDevice->byBBRxConf |= 0x20;//0010 0000 1261 1262 ControlvReadByte (pDevice, MESSAGE_REQUEST_BBREG, 0xE7, &byBBVGA); 1263 if (byBBVGA == pDevice->abyBBVGA[0]) 1264 pDevice->byBBRxConf |= 0x20;//0010 0000 1265 1266 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0A, pDevice->byBBRxConf); 1267 } 1268 1269 1270 void BBvSetVGAGainOffset(PSDevice pDevice, BYTE byData) 1271 { 1272 1273 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xE7, byData); 1274 1275 // patch for 3253B0 Baseband with Cardbus module 1276 if (pDevice->bShortSlotTime) 1277 pDevice->byBBRxConf &= 0xDF; /* 1101 1111 */ 1278 else 1279 pDevice->byBBRxConf |= 0x20; /* 0010 0000 */ 1280 1281 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0A, pDevice->byBBRxConf);//CR10 1282 } 1283 1284 1285 /* 1286 * Description: Baseband SoftwareReset 1287 * 1288 * Parameters: 1289 * In: 1290 * dwIoBase - I/O base address 1291 * Out: 1292 * none 1293 * 1294 * Return Value: none 1295 * 1296 */ 1297 void 1298 BBvSoftwareReset (PSDevice pDevice) 1299 { 1300 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x50, 0x40); 1301 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x50, 0); 1302 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x9C, 0x01); 1303 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x9C, 0); 1304 } 1305 1306 /* 1307 * Description: BBvSetDeepSleep 1308 * 1309 * Parameters: 1310 * In: 1311 * pDevice - Device Structure 1312 * Out: 1313 * none 1314 * 1315 * Return Value: none 1316 * 1317 */ 1318 void 1319 BBvSetDeepSleep (PSDevice pDevice) 1320 { 1321 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0c, 0x17);//CR12 1322 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0D, 0xB9);//CR13 1323 } 1324 1325 void 1326 BBvExitDeepSleep (PSDevice pDevice) 1327 { 1328 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0C, 0x00);//CR12 1329 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0x0D, 0x01);//CR13 1330 } 1331 1332 1333 static unsigned long s_ulGetLowSQ3(PSDevice pDevice) 1334 { 1335 int ii; 1336 unsigned long ulSQ3 = 0; 1337 unsigned long ulMaxPacket; 1338 1339 ulMaxPacket = pDevice->aulPktNum[RATE_54M]; 1340 if (pDevice->aulPktNum[RATE_54M] != 0) 1341 ulSQ3 = pDevice->aulSQ3Val[RATE_54M] / pDevice->aulPktNum[RATE_54M]; 1342 1343 for (ii = RATE_48M; ii >= RATE_6M; ii--) 1344 if (pDevice->aulPktNum[ii] > ulMaxPacket) { 1345 ulMaxPacket = pDevice->aulPktNum[ii]; 1346 ulSQ3 = pDevice->aulSQ3Val[ii] / pDevice->aulPktNum[ii]; 1347 } 1348 1349 return ulSQ3; 1350 } 1351 1352 static unsigned long s_ulGetRatio(PSDevice pDevice) 1353 { 1354 int ii, jj; 1355 unsigned long ulRatio = 0; 1356 unsigned long ulMaxPacket; 1357 unsigned long ulPacketNum; 1358 1359 //This is a thousand-ratio 1360 ulMaxPacket = pDevice->aulPktNum[RATE_54M]; 1361 if ( pDevice->aulPktNum[RATE_54M] != 0 ) { 1362 ulPacketNum = pDevice->aulPktNum[RATE_54M]; 1363 ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt); 1364 ulRatio += TOP_RATE_54M; 1365 } 1366 for (ii = RATE_48M; ii >= RATE_1M; ii--) 1367 if ( pDevice->aulPktNum[ii] > ulMaxPacket ) { 1368 ulPacketNum = 0; 1369 for ( jj=RATE_54M;jj>=ii;jj--) 1370 ulPacketNum += pDevice->aulPktNum[jj]; 1371 ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt); 1372 ulRatio += TOP_RATE_48M; 1373 ulMaxPacket = pDevice->aulPktNum[ii]; 1374 } 1375 1376 return ulRatio; 1377 } 1378 1379 1380 static 1381 void 1382 s_vClearSQ3Value (PSDevice pDevice) 1383 { 1384 int ii; 1385 pDevice->uDiversityCnt = 0; 1386 1387 for ( ii=RATE_1M;ii<MAX_RATE;ii++) { 1388 pDevice->aulPktNum[ii] = 0; 1389 pDevice->aulSQ3Val[ii] = 0; 1390 } 1391 } 1392 1393 1394 /* 1395 * Description: Antenna Diversity 1396 * 1397 * Parameters: 1398 * In: 1399 * pDevice - Device Structure 1400 * byRSR - RSR from received packet 1401 * bySQ3 - SQ3 value from received packet 1402 * Out: 1403 * none 1404 * 1405 * Return Value: none 1406 * 1407 */ 1408 1409 void 1410 BBvAntennaDiversity (PSDevice pDevice, BYTE byRxRate, BYTE bySQ3) 1411 { 1412 1413 pDevice->uDiversityCnt++; 1414 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pDevice->uDiversityCnt = %d\n", (int)pDevice->uDiversityCnt); 1415 1416 if (byRxRate == 2) { 1417 pDevice->aulPktNum[RATE_1M]++; 1418 } 1419 else if (byRxRate==4) { 1420 pDevice->aulPktNum[RATE_2M]++; 1421 } 1422 else if (byRxRate==11) { 1423 pDevice->aulPktNum[RATE_5M]++; 1424 } 1425 else if (byRxRate==22) { 1426 pDevice->aulPktNum[RATE_11M]++; 1427 } 1428 else if(byRxRate==12){ 1429 pDevice->aulPktNum[RATE_6M]++; 1430 pDevice->aulSQ3Val[RATE_6M] += bySQ3; 1431 } 1432 else if(byRxRate==18){ 1433 pDevice->aulPktNum[RATE_9M]++; 1434 pDevice->aulSQ3Val[RATE_9M] += bySQ3; 1435 } 1436 else if(byRxRate==24){ 1437 pDevice->aulPktNum[RATE_12M]++; 1438 pDevice->aulSQ3Val[RATE_12M] += bySQ3; 1439 } 1440 else if(byRxRate==36){ 1441 pDevice->aulPktNum[RATE_18M]++; 1442 pDevice->aulSQ3Val[RATE_18M] += bySQ3; 1443 } 1444 else if(byRxRate==48){ 1445 pDevice->aulPktNum[RATE_24M]++; 1446 pDevice->aulSQ3Val[RATE_24M] += bySQ3; 1447 } 1448 else if(byRxRate==72){ 1449 pDevice->aulPktNum[RATE_36M]++; 1450 pDevice->aulSQ3Val[RATE_36M] += bySQ3; 1451 } 1452 else if(byRxRate==96){ 1453 pDevice->aulPktNum[RATE_48M]++; 1454 pDevice->aulSQ3Val[RATE_48M] += bySQ3; 1455 } 1456 else if(byRxRate==108){ 1457 pDevice->aulPktNum[RATE_54M]++; 1458 pDevice->aulSQ3Val[RATE_54M] += bySQ3; 1459 } 1460 1461 if (pDevice->byAntennaState == 0) { 1462 1463 if (pDevice->uDiversityCnt > pDevice->ulDiversityNValue) { 1464 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ulDiversityNValue=[%d],54M-[%d]\n",(int)pDevice->ulDiversityNValue, (int)pDevice->aulPktNum[RATE_54M]); 1465 1466 pDevice->ulSQ3_State0 = s_ulGetLowSQ3(pDevice); 1467 pDevice->ulRatio_State0 = s_ulGetRatio(pDevice); 1468 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"SQ3_State0, SQ3= [%08x] rate = [%08x]\n",(int)pDevice->ulSQ3_State0,(int)pDevice->ulRatio_State0); 1469 1470 if ( ((pDevice->aulPktNum[RATE_54M] < pDevice->ulDiversityNValue/2) && 1471 (pDevice->ulSQ3_State0 > pDevice->ulSQ3TH) ) || 1472 (pDevice->ulSQ3_State0 == 0 ) ) { 1473 1474 if ( pDevice->byTMax == 0 ) 1475 return; 1476 1477 bScheduleCommand((void *) pDevice, 1478 WLAN_CMD_CHANGE_ANTENNA, 1479 NULL); 1480 1481 pDevice->byAntennaState = 1; 1482 1483 del_timer(&pDevice->TimerSQ3Tmax3); 1484 del_timer(&pDevice->TimerSQ3Tmax2); 1485 pDevice->TimerSQ3Tmax1.expires = RUN_AT(pDevice->byTMax * HZ); 1486 add_timer(&pDevice->TimerSQ3Tmax1); 1487 1488 } else { 1489 pDevice->TimerSQ3Tmax3.expires = RUN_AT(pDevice->byTMax3 * HZ); 1490 add_timer(&pDevice->TimerSQ3Tmax3); 1491 } 1492 s_vClearSQ3Value(pDevice); 1493 1494 } 1495 } else { //byAntennaState == 1 1496 1497 if (pDevice->uDiversityCnt > pDevice->ulDiversityMValue) { 1498 1499 del_timer(&pDevice->TimerSQ3Tmax1); 1500 pDevice->ulSQ3_State1 = s_ulGetLowSQ3(pDevice); 1501 pDevice->ulRatio_State1 = s_ulGetRatio(pDevice); 1502 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"SQ3_State1, rate0 = %08x,rate1 = %08x\n",(int)pDevice->ulRatio_State0,(int)pDevice->ulRatio_State1); 1503 1504 if ( ((pDevice->ulSQ3_State1 == 0) && (pDevice->ulSQ3_State0 != 0)) || 1505 ((pDevice->ulSQ3_State1 == 0) && (pDevice->ulSQ3_State0 == 0) && (pDevice->ulRatio_State1 < pDevice->ulRatio_State0)) || 1506 ((pDevice->ulSQ3_State1 != 0) && (pDevice->ulSQ3_State0 != 0) && (pDevice->ulSQ3_State0 < pDevice->ulSQ3_State1)) 1507 ) { 1508 1509 bScheduleCommand((void *) pDevice, 1510 WLAN_CMD_CHANGE_ANTENNA, 1511 NULL); 1512 1513 pDevice->TimerSQ3Tmax3.expires = RUN_AT(pDevice->byTMax3 * HZ); 1514 pDevice->TimerSQ3Tmax2.expires = RUN_AT(pDevice->byTMax2 * HZ); 1515 add_timer(&pDevice->TimerSQ3Tmax3); 1516 add_timer(&pDevice->TimerSQ3Tmax2); 1517 1518 } 1519 pDevice->byAntennaState = 0; 1520 s_vClearSQ3Value(pDevice); 1521 } 1522 } //byAntennaState 1523 } 1524 1525 1526 /*+ 1527 * 1528 * Description: 1529 * Timer for SQ3 antenna diversity 1530 * 1531 * Parameters: 1532 * In: 1533 * pvSysSpec1 1534 * hDeviceContext - Pointer to the adapter 1535 * pvSysSpec2 1536 * pvSysSpec3 1537 * Out: 1538 * none 1539 * 1540 * Return Value: none 1541 * 1542 -*/ 1543 1544 void TimerSQ3CallBack(void *hDeviceContext) 1545 { 1546 PSDevice pDevice = (PSDevice)hDeviceContext; 1547 1548 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"TimerSQ3CallBack..."); 1549 spin_lock_irq(&pDevice->lock); 1550 1551 bScheduleCommand((void *) pDevice, WLAN_CMD_CHANGE_ANTENNA, NULL); 1552 pDevice->byAntennaState = 0; 1553 s_vClearSQ3Value(pDevice); 1554 pDevice->TimerSQ3Tmax3.expires = RUN_AT(pDevice->byTMax3 * HZ); 1555 pDevice->TimerSQ3Tmax2.expires = RUN_AT(pDevice->byTMax2 * HZ); 1556 add_timer(&pDevice->TimerSQ3Tmax3); 1557 add_timer(&pDevice->TimerSQ3Tmax2); 1558 1559 1560 spin_unlock_irq(&pDevice->lock); 1561 } 1562 1563 1564 /*+ 1565 * 1566 * Description: 1567 * Timer for SQ3 antenna diversity 1568 * 1569 * Parameters: 1570 * In: 1571 * pvSysSpec1 1572 * hDeviceContext - Pointer to the adapter 1573 * pvSysSpec2 1574 * pvSysSpec3 1575 * Out: 1576 * none 1577 * 1578 * Return Value: none 1579 * 1580 -*/ 1581 1582 void TimerSQ3Tmax3CallBack(void *hDeviceContext) 1583 { 1584 PSDevice pDevice = (PSDevice)hDeviceContext; 1585 1586 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"TimerSQ3Tmax3CallBack..."); 1587 spin_lock_irq(&pDevice->lock); 1588 1589 pDevice->ulRatio_State0 = s_ulGetRatio(pDevice); 1590 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"SQ3_State0 = [%08x]\n",(int)pDevice->ulRatio_State0); 1591 1592 s_vClearSQ3Value(pDevice); 1593 if ( pDevice->byTMax == 0 ) { 1594 pDevice->TimerSQ3Tmax3.expires = RUN_AT(pDevice->byTMax3 * HZ); 1595 add_timer(&pDevice->TimerSQ3Tmax3); 1596 spin_unlock_irq(&pDevice->lock); 1597 return; 1598 } 1599 1600 bScheduleCommand((void *) pDevice, WLAN_CMD_CHANGE_ANTENNA, NULL); 1601 pDevice->byAntennaState = 1; 1602 del_timer(&pDevice->TimerSQ3Tmax3); 1603 del_timer(&pDevice->TimerSQ3Tmax2); 1604 pDevice->TimerSQ3Tmax1.expires = RUN_AT(pDevice->byTMax * HZ); 1605 add_timer(&pDevice->TimerSQ3Tmax1); 1606 1607 spin_unlock_irq(&pDevice->lock); 1608 } 1609 1610 void 1611 BBvUpdatePreEDThreshold( 1612 PSDevice pDevice, 1613 BOOL bScanning) 1614 { 1615 1616 1617 switch(pDevice->byRFType) 1618 { 1619 case RF_AL2230: 1620 case RF_AL2230S: 1621 case RF_AIROHA7230: 1622 //RobertYu:20060627, update new table 1623 1624 if( bScanning ) 1625 { // need Max sensitivity //RSSI -69, -70,.... 1626 if(pDevice->byBBPreEDIndex == 0) break; 1627 pDevice->byBBPreEDIndex = 0; 1628 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1629 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x30); //CR206(0xCE) 1630 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -69, -70, -71,...\n"); 1631 break; 1632 } 1633 1634 if(pDevice->byBBPreEDRSSI <= 45) { // RSSI 0, -1,-2,....-45 1635 if(pDevice->byBBPreEDIndex == 20) break; 1636 pDevice->byBBPreEDIndex = 20; 1637 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0xFF); //CR201(0xC9) 1638 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1639 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI 0, -1,-2,..-45\n"); 1640 } else if(pDevice->byBBPreEDRSSI <= 46) { //RSSI -46 1641 if(pDevice->byBBPreEDIndex == 19) break; 1642 pDevice->byBBPreEDIndex = 19; 1643 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x1A); //CR201(0xC9) 1644 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1645 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -46\n"); 1646 } else if(pDevice->byBBPreEDRSSI <= 47) { //RSSI -47 1647 if(pDevice->byBBPreEDIndex == 18) break; 1648 pDevice->byBBPreEDIndex = 18; 1649 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x15); //CR201(0xC9) 1650 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1651 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -47\n"); 1652 } else if(pDevice->byBBPreEDRSSI <= 49) { //RSSI -48, -49 1653 if(pDevice->byBBPreEDIndex == 17) break; 1654 pDevice->byBBPreEDIndex = 17; 1655 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x0E); //CR201(0xC9) 1656 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1657 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -48,-49\n"); 1658 } else if(pDevice->byBBPreEDRSSI <= 51) { //RSSI -50, -51 1659 if(pDevice->byBBPreEDIndex == 16) break; 1660 pDevice->byBBPreEDIndex = 16; 1661 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x09); //CR201(0xC9) 1662 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1663 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -50,-51\n"); 1664 } else if(pDevice->byBBPreEDRSSI <= 53) { //RSSI -52, -53 1665 if(pDevice->byBBPreEDIndex == 15) break; 1666 pDevice->byBBPreEDIndex = 15; 1667 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x06); //CR201(0xC9) 1668 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1669 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -52,-53\n"); 1670 } else if(pDevice->byBBPreEDRSSI <= 55) { //RSSI -54, -55 1671 if(pDevice->byBBPreEDIndex == 14) break; 1672 pDevice->byBBPreEDIndex = 14; 1673 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x03); //CR201(0xC9) 1674 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1675 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -54,-55\n"); 1676 } else if(pDevice->byBBPreEDRSSI <= 56) { //RSSI -56 1677 if(pDevice->byBBPreEDIndex == 13) break; 1678 pDevice->byBBPreEDIndex = 13; 1679 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x02); //CR201(0xC9) 1680 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xA0); //CR206(0xCE) 1681 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -56\n"); 1682 } else if(pDevice->byBBPreEDRSSI <= 57) { //RSSI -57 1683 if(pDevice->byBBPreEDIndex == 12) break; 1684 pDevice->byBBPreEDIndex = 12; 1685 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x02); //CR201(0xC9) 1686 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x20); //CR206(0xCE) 1687 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -57\n"); 1688 } else if(pDevice->byBBPreEDRSSI <= 58) { //RSSI -58 1689 if(pDevice->byBBPreEDIndex == 11) break; 1690 pDevice->byBBPreEDIndex = 11; 1691 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1692 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xA0); //CR206(0xCE) 1693 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -58\n"); 1694 } else if(pDevice->byBBPreEDRSSI <= 59) { //RSSI -59 1695 if(pDevice->byBBPreEDIndex == 10) break; 1696 pDevice->byBBPreEDIndex = 10; 1697 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1698 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x54); //CR206(0xCE) 1699 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -59\n"); 1700 } else if(pDevice->byBBPreEDRSSI <= 60) { //RSSI -60 1701 if(pDevice->byBBPreEDIndex == 9) break; 1702 pDevice->byBBPreEDIndex = 9; 1703 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1704 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x18); //CR206(0xCE) 1705 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -60\n"); 1706 } else if(pDevice->byBBPreEDRSSI <= 61) { //RSSI -61 1707 if(pDevice->byBBPreEDIndex == 8) break; 1708 pDevice->byBBPreEDIndex = 8; 1709 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1710 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xE3); //CR206(0xCE) 1711 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -61\n"); 1712 } else if(pDevice->byBBPreEDRSSI <= 62) { //RSSI -62 1713 if(pDevice->byBBPreEDIndex == 7) break; 1714 pDevice->byBBPreEDIndex = 7; 1715 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1716 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xB9); //CR206(0xCE) 1717 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -62\n"); 1718 } else if(pDevice->byBBPreEDRSSI <= 63) { //RSSI -63 1719 if(pDevice->byBBPreEDIndex == 6) break; 1720 pDevice->byBBPreEDIndex = 6; 1721 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1722 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x93); //CR206(0xCE) 1723 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -63\n"); 1724 } else if(pDevice->byBBPreEDRSSI <= 64) { //RSSI -64 1725 if(pDevice->byBBPreEDIndex == 5) break; 1726 pDevice->byBBPreEDIndex = 5; 1727 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1728 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x79); //CR206(0xCE) 1729 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -64\n"); 1730 } else if(pDevice->byBBPreEDRSSI <= 65) { //RSSI -65 1731 if(pDevice->byBBPreEDIndex == 4) break; 1732 pDevice->byBBPreEDIndex = 4; 1733 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1734 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x62); //CR206(0xCE) 1735 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -65\n"); 1736 } else if(pDevice->byBBPreEDRSSI <= 66) { //RSSI -66 1737 if(pDevice->byBBPreEDIndex == 3) break; 1738 pDevice->byBBPreEDIndex = 3; 1739 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1740 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x51); //CR206(0xCE) 1741 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -66\n"); 1742 } else if(pDevice->byBBPreEDRSSI <= 67) { //RSSI -67 1743 if(pDevice->byBBPreEDIndex == 2) break; 1744 pDevice->byBBPreEDIndex = 2; 1745 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1746 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x43); //CR206(0xCE) 1747 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -67\n"); 1748 } else if(pDevice->byBBPreEDRSSI <= 68) { //RSSI -68 1749 if(pDevice->byBBPreEDIndex == 1) break; 1750 pDevice->byBBPreEDIndex = 1; 1751 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1752 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x36); //CR206(0xCE) 1753 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -68\n"); 1754 } else { //RSSI -69, -70,.... 1755 if(pDevice->byBBPreEDIndex == 0) break; 1756 pDevice->byBBPreEDIndex = 0; 1757 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1758 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x30); //CR206(0xCE) 1759 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -69, -70,...\n"); 1760 } 1761 break; 1762 1763 case RF_VT3226: 1764 case RF_VT3226D0: 1765 //RobertYu:20060627, update new table 1766 1767 if( bScanning ) 1768 { // need Max sensitivity //RSSI -69, -70, ... 1769 if(pDevice->byBBPreEDIndex == 0) break; 1770 pDevice->byBBPreEDIndex = 0; 1771 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1772 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x24); //CR206(0xCE) 1773 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -69, -70,..\n"); 1774 break; 1775 } 1776 1777 if(pDevice->byBBPreEDRSSI <= 41) { // RSSI 0, -1,-2,....-41 1778 if(pDevice->byBBPreEDIndex == 22) break; 1779 pDevice->byBBPreEDIndex = 22; 1780 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0xFF); //CR201(0xC9) 1781 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1782 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI 0, -1,-2,..-41\n"); 1783 } else if(pDevice->byBBPreEDRSSI <= 42) { //RSSI -42 1784 if(pDevice->byBBPreEDIndex == 21) break; 1785 pDevice->byBBPreEDIndex = 21; 1786 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x36); //CR201(0xC9) 1787 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1788 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -42\n"); 1789 } else if(pDevice->byBBPreEDRSSI <= 43) { //RSSI -43 1790 if(pDevice->byBBPreEDIndex == 20) break; 1791 pDevice->byBBPreEDIndex = 20; 1792 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x26); //CR201(0xC9) 1793 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1794 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -43\n"); 1795 } else if(pDevice->byBBPreEDRSSI <= 45) { //RSSI -44, -45 1796 if(pDevice->byBBPreEDIndex == 19) break; 1797 pDevice->byBBPreEDIndex = 19; 1798 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x18); //CR201(0xC9) 1799 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1800 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -44,-45\n"); 1801 } else if(pDevice->byBBPreEDRSSI <= 47) { //RSSI -46, -47 1802 if(pDevice->byBBPreEDIndex == 18) break; 1803 pDevice->byBBPreEDIndex = 18; 1804 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x11); //CR201(0xC9) 1805 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1806 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -46,-47\n"); 1807 } else if(pDevice->byBBPreEDRSSI <= 49) { //RSSI -48, -49 1808 if(pDevice->byBBPreEDIndex == 17) break; 1809 pDevice->byBBPreEDIndex = 17; 1810 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x0a); //CR201(0xC9) 1811 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1812 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -48,-49\n"); 1813 } else if(pDevice->byBBPreEDRSSI <= 51) { //RSSI -50, -51 1814 if(pDevice->byBBPreEDIndex == 16) break; 1815 pDevice->byBBPreEDIndex = 16; 1816 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x07); //CR201(0xC9) 1817 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1818 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -50,-51\n"); 1819 } else if(pDevice->byBBPreEDRSSI <= 53) { //RSSI -52, -53 1820 if(pDevice->byBBPreEDIndex == 15) break; 1821 pDevice->byBBPreEDIndex = 15; 1822 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x04); //CR201(0xC9) 1823 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1824 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -52,-53\n"); 1825 } else if(pDevice->byBBPreEDRSSI <= 55) { //RSSI -54, -55 1826 if(pDevice->byBBPreEDIndex == 14) break; 1827 pDevice->byBBPreEDIndex = 14; 1828 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x02); //CR201(0xC9) 1829 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xC0); //CR206(0xCE) 1830 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -54,-55\n"); 1831 } else if(pDevice->byBBPreEDRSSI <= 56) { //RSSI -56 1832 if(pDevice->byBBPreEDIndex == 13) break; 1833 pDevice->byBBPreEDIndex = 13; 1834 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x02); //CR201(0xC9) 1835 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x30); //CR206(0xCE) 1836 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -56\n"); 1837 } else if(pDevice->byBBPreEDRSSI <= 57) { //RSSI -57 1838 if(pDevice->byBBPreEDIndex == 12) break; 1839 pDevice->byBBPreEDIndex = 12; 1840 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1841 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xB0); //CR206(0xCE) 1842 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -57\n"); 1843 } else if(pDevice->byBBPreEDRSSI <= 58) { //RSSI -58 1844 if(pDevice->byBBPreEDIndex == 11) break; 1845 pDevice->byBBPreEDIndex = 11; 1846 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1847 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x70); //CR206(0xCE) 1848 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -58\n"); 1849 } else if(pDevice->byBBPreEDRSSI <= 59) { //RSSI -59 1850 if(pDevice->byBBPreEDIndex == 10) break; 1851 pDevice->byBBPreEDIndex = 10; 1852 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1853 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x30); //CR206(0xCE) 1854 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -59\n"); 1855 } else if(pDevice->byBBPreEDRSSI <= 60) { //RSSI -60 1856 if(pDevice->byBBPreEDIndex == 9) break; 1857 pDevice->byBBPreEDIndex = 9; 1858 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1859 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xEA); //CR206(0xCE) 1860 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -60\n"); 1861 } else if(pDevice->byBBPreEDRSSI <= 61) { //RSSI -61 1862 if(pDevice->byBBPreEDIndex == 8) break; 1863 pDevice->byBBPreEDIndex = 8; 1864 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1865 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xC0); //CR206(0xCE) 1866 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -61\n"); 1867 } else if(pDevice->byBBPreEDRSSI <= 62) { //RSSI -62 1868 if(pDevice->byBBPreEDIndex == 7) break; 1869 pDevice->byBBPreEDIndex = 7; 1870 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1871 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x9C); //CR206(0xCE) 1872 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -62\n"); 1873 } else if(pDevice->byBBPreEDRSSI <= 63) { //RSSI -63 1874 if(pDevice->byBBPreEDIndex == 6) break; 1875 pDevice->byBBPreEDIndex = 6; 1876 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1877 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x80); //CR206(0xCE) 1878 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -63\n"); 1879 } else if(pDevice->byBBPreEDRSSI <= 64) { //RSSI -64 1880 if(pDevice->byBBPreEDIndex == 5) break; 1881 pDevice->byBBPreEDIndex = 5; 1882 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1883 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x68); //CR206(0xCE) 1884 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -64\n"); 1885 } else if(pDevice->byBBPreEDRSSI <= 65) { //RSSI -65 1886 if(pDevice->byBBPreEDIndex == 4) break; 1887 pDevice->byBBPreEDIndex = 4; 1888 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1889 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x52); //CR206(0xCE) 1890 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -65\n"); 1891 } else if(pDevice->byBBPreEDRSSI <= 66) { //RSSI -66 1892 if(pDevice->byBBPreEDIndex == 3) break; 1893 pDevice->byBBPreEDIndex = 3; 1894 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1895 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x43); //CR206(0xCE) 1896 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -66\n"); 1897 } else if(pDevice->byBBPreEDRSSI <= 67) { //RSSI -67 1898 if(pDevice->byBBPreEDIndex == 2) break; 1899 pDevice->byBBPreEDIndex = 2; 1900 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1901 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x36); //CR206(0xCE) 1902 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -67\n"); 1903 } else if(pDevice->byBBPreEDRSSI <= 68) { //RSSI -68 1904 if(pDevice->byBBPreEDIndex == 1) break; 1905 pDevice->byBBPreEDIndex = 1; 1906 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1907 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x2D); //CR206(0xCE) 1908 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -68\n"); 1909 } else { //RSSI -69, -70, ... 1910 if(pDevice->byBBPreEDIndex == 0) break; 1911 pDevice->byBBPreEDIndex = 0; 1912 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1913 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x24); //CR206(0xCE) 1914 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -69, -70,..\n"); 1915 } 1916 break; 1917 1918 case RF_VT3342A0: //RobertYu:20060627, testing table 1919 if( bScanning ) 1920 { // need Max sensitivity //RSSI -67, -68, ... 1921 if(pDevice->byBBPreEDIndex == 0) break; 1922 pDevice->byBBPreEDIndex = 0; 1923 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 1924 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x38); //CR206(0xCE) 1925 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -67, -68,..\n"); 1926 break; 1927 } 1928 1929 if(pDevice->byBBPreEDRSSI <= 41) { // RSSI 0, -1,-2,....-41 1930 if(pDevice->byBBPreEDIndex == 20) break; 1931 pDevice->byBBPreEDIndex = 20; 1932 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0xFF); //CR201(0xC9) 1933 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1934 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI 0, -1,-2,..-41\n"); 1935 } else if(pDevice->byBBPreEDRSSI <= 42) { //RSSI -42 1936 if(pDevice->byBBPreEDIndex == 19) break; 1937 pDevice->byBBPreEDIndex = 19; 1938 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x36); //CR201(0xC9) 1939 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1940 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -42\n"); 1941 } else if(pDevice->byBBPreEDRSSI <= 43) { //RSSI -43 1942 if(pDevice->byBBPreEDIndex == 18) break; 1943 pDevice->byBBPreEDIndex = 18; 1944 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x26); //CR201(0xC9) 1945 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1946 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -43\n"); 1947 } else if(pDevice->byBBPreEDRSSI <= 45) { //RSSI -44, -45 1948 if(pDevice->byBBPreEDIndex == 17) break; 1949 pDevice->byBBPreEDIndex = 17; 1950 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x18); //CR201(0xC9) 1951 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1952 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -44,-45\n"); 1953 } else if(pDevice->byBBPreEDRSSI <= 47) { //RSSI -46, -47 1954 if(pDevice->byBBPreEDIndex == 16) break; 1955 pDevice->byBBPreEDIndex = 16; 1956 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x11); //CR201(0xC9) 1957 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1958 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -46,-47\n"); 1959 } else if(pDevice->byBBPreEDRSSI <= 49) { //RSSI -48, -49 1960 if(pDevice->byBBPreEDIndex == 15) break; 1961 pDevice->byBBPreEDIndex = 15; 1962 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x0a); //CR201(0xC9) 1963 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1964 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -48,-49\n"); 1965 } else if(pDevice->byBBPreEDRSSI <= 51) { //RSSI -50, -51 1966 if(pDevice->byBBPreEDIndex == 14) break; 1967 pDevice->byBBPreEDIndex = 14; 1968 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x07); //CR201(0xC9) 1969 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1970 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -50,-51\n"); 1971 } else if(pDevice->byBBPreEDRSSI <= 53) { //RSSI -52, -53 1972 if(pDevice->byBBPreEDIndex == 13) break; 1973 pDevice->byBBPreEDIndex = 13; 1974 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x04); //CR201(0xC9) 1975 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x00); //CR206(0xCE) 1976 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -52,-53\n"); 1977 } else if(pDevice->byBBPreEDRSSI <= 55) { //RSSI -54, -55 1978 if(pDevice->byBBPreEDIndex == 12) break; 1979 pDevice->byBBPreEDIndex = 12; 1980 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x02); //CR201(0xC9) 1981 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xC0); //CR206(0xCE) 1982 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -54,-55\n"); 1983 } else if(pDevice->byBBPreEDRSSI <= 56) { //RSSI -56 1984 if(pDevice->byBBPreEDIndex == 11) break; 1985 pDevice->byBBPreEDIndex = 11; 1986 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x02); //CR201(0xC9) 1987 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x30); //CR206(0xCE) 1988 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -56\n"); 1989 } else if(pDevice->byBBPreEDRSSI <= 57) { //RSSI -57 1990 if(pDevice->byBBPreEDIndex == 10) break; 1991 pDevice->byBBPreEDIndex = 10; 1992 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1993 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xB0); //CR206(0xCE) 1994 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -57\n"); 1995 } else if(pDevice->byBBPreEDRSSI <= 58) { //RSSI -58 1996 if(pDevice->byBBPreEDIndex == 9) break; 1997 pDevice->byBBPreEDIndex = 9; 1998 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 1999 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x70); //CR206(0xCE) 2000 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -58\n"); 2001 } else if(pDevice->byBBPreEDRSSI <= 59) { //RSSI -59 2002 if(pDevice->byBBPreEDIndex == 8) break; 2003 pDevice->byBBPreEDIndex = 8; 2004 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x01); //CR201(0xC9) 2005 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x30); //CR206(0xCE) 2006 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -59\n"); 2007 } else if(pDevice->byBBPreEDRSSI <= 60) { //RSSI -60 2008 if(pDevice->byBBPreEDIndex == 7) break; 2009 pDevice->byBBPreEDIndex = 7; 2010 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2011 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xEA); //CR206(0xCE) 2012 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -60\n"); 2013 } else if(pDevice->byBBPreEDRSSI <= 61) { //RSSI -61 2014 if(pDevice->byBBPreEDIndex == 6) break; 2015 pDevice->byBBPreEDIndex = 6; 2016 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2017 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0xC0); //CR206(0xCE) 2018 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -61\n"); 2019 } else if(pDevice->byBBPreEDRSSI <= 62) { //RSSI -62 2020 if(pDevice->byBBPreEDIndex == 5) break; 2021 pDevice->byBBPreEDIndex = 5; 2022 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2023 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x9C); //CR206(0xCE) 2024 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -62\n"); 2025 } else if(pDevice->byBBPreEDRSSI <= 63) { //RSSI -63 2026 if(pDevice->byBBPreEDIndex == 4) break; 2027 pDevice->byBBPreEDIndex = 4; 2028 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2029 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x80); //CR206(0xCE) 2030 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -63\n"); 2031 } else if(pDevice->byBBPreEDRSSI <= 64) { //RSSI -64 2032 if(pDevice->byBBPreEDIndex == 3) break; 2033 pDevice->byBBPreEDIndex = 3; 2034 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2035 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x68); //CR206(0xCE) 2036 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -64\n"); 2037 } else if(pDevice->byBBPreEDRSSI <= 65) { //RSSI -65 2038 if(pDevice->byBBPreEDIndex == 2) break; 2039 pDevice->byBBPreEDIndex = 2; 2040 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2041 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x52); //CR206(0xCE) 2042 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -65\n"); 2043 } else if(pDevice->byBBPreEDRSSI <= 66) { //RSSI -66 2044 if(pDevice->byBBPreEDIndex == 1) break; 2045 pDevice->byBBPreEDIndex = 1; 2046 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2047 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x43); //CR206(0xCE) 2048 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -66\n"); 2049 } else { //RSSI -67, -68, ... 2050 if(pDevice->byBBPreEDIndex == 0) break; 2051 pDevice->byBBPreEDIndex = 0; 2052 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xC9, 0x00); //CR201(0xC9) 2053 ControlvWriteByte(pDevice, MESSAGE_REQUEST_BBREG, 0xCE, 0x38); //CR206(0xCE) 2054 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pDevice->byBBPreEDRSSI -67, -68,..\n"); 2055 } 2056 break; 2057 2058 } 2059 2060 } 2061 2062