OLD | NEW |
1 /* | 1 /* |
2 * Radio tuning for RTL8225 on RTL8187 | 2 * Radio tuning for RTL8225 on RTL8187 |
3 * | 3 * |
4 * Copyright 2007 Michael Wu <flamingice@sourmilk.net> | 4 * Copyright 2007 Michael Wu <flamingice@sourmilk.net> |
5 * Copyright 2007 Andrea Merello <andreamrl@tiscali.it> | 5 * Copyright 2007 Andrea Merello <andreamrl@tiscali.it> |
6 * | 6 * |
7 * Based on the r8187 driver, which is: | 7 * Based on the r8187 driver, which is: |
8 * Copyright 2005 Andrea Merello <andreamrl@tiscali.it>, et al. | 8 * Copyright 2005 Andrea Merello <andreamrl@tiscali.it>, et al. |
9 * | 9 * |
10 * Magic delays, register offsets, and phy value tables below are | 10 * Magic delays, register offsets, and phy value tables below are |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 | 359 |
360 rtl8225_write(dev, 0x2, 0xC4D); msleep(200); | 360 rtl8225_write(dev, 0x2, 0xC4D); msleep(200); |
361 rtl8225_write(dev, 0x2, 0x44D); msleep(200); | 361 rtl8225_write(dev, 0x2, 0x44D); msleep(200); |
362 | 362 |
363 if (!(rtl8225_read(dev, 6) & (1 << 7))) { | 363 if (!(rtl8225_read(dev, 6) & (1 << 7))) { |
364 rtl8225_write(dev, 0x02, 0x0c4d); | 364 rtl8225_write(dev, 0x02, 0x0c4d); |
365 msleep(200); | 365 msleep(200); |
366 rtl8225_write(dev, 0x02, 0x044d); | 366 rtl8225_write(dev, 0x02, 0x044d); |
367 msleep(100); | 367 msleep(100); |
368 if (!(rtl8225_read(dev, 6) & (1 << 7))) | 368 if (!(rtl8225_read(dev, 6) & (1 << 7))) |
369 » » » wiphy_warn(dev->wiphy, "rf calibration failed! %x\n", | 369 » » » wiphy_warn(dev->wiphy, "RF Calibration Failed! %x\n", |
370 rtl8225_read(dev, 6)); | 370 rtl8225_read(dev, 6)); |
371 } | 371 } |
372 | 372 |
373 rtl8225_write(dev, 0x0, 0x127); | 373 rtl8225_write(dev, 0x0, 0x127); |
374 | 374 |
375 for (i = 0; i < ARRAY_SIZE(rtl8225bcd_rxgain); i++) { | 375 for (i = 0; i < ARRAY_SIZE(rtl8225bcd_rxgain); i++) { |
376 rtl8225_write(dev, 0x1, i + 1); | 376 rtl8225_write(dev, 0x1, i + 1); |
377 rtl8225_write(dev, 0x2, rtl8225bcd_rxgain[i]); | 377 rtl8225_write(dev, 0x2, rtl8225bcd_rxgain[i]); |
378 } | 378 } |
379 | 379 |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 msleep(200); | 728 msleep(200); |
729 rtl8225_write(dev, 0x2, 0x44D); | 729 rtl8225_write(dev, 0x2, 0x44D); |
730 msleep(100); | 730 msleep(100); |
731 | 731 |
732 if (!(rtl8225_read(dev, 6) & (1 << 7))) { | 732 if (!(rtl8225_read(dev, 6) & (1 << 7))) { |
733 rtl8225_write(dev, 0x02, 0x0C4D); | 733 rtl8225_write(dev, 0x02, 0x0C4D); |
734 msleep(200); | 734 msleep(200); |
735 rtl8225_write(dev, 0x02, 0x044D); | 735 rtl8225_write(dev, 0x02, 0x044D); |
736 msleep(100); | 736 msleep(100); |
737 if (!(rtl8225_read(dev, 6) & (1 << 7))) | 737 if (!(rtl8225_read(dev, 6) & (1 << 7))) |
738 » » » wiphy_warn(dev->wiphy, "rf calibration failed! %x\n", | 738 » » » wiphy_warn(dev->wiphy, "RF Calibration Failed! %x\n", |
739 rtl8225_read(dev, 6)); | 739 rtl8225_read(dev, 6)); |
740 } | 740 } |
741 | 741 |
742 msleep(200); | 742 msleep(200); |
743 | 743 |
744 rtl8225_write(dev, 0x0, 0x2BF); | 744 rtl8225_write(dev, 0x0, 0x2BF); |
745 | 745 |
746 for (i = 0; i < ARRAY_SIZE(rtl8225_agc); i++) { | 746 for (i = 0; i < ARRAY_SIZE(rtl8225_agc); i++) { |
747 rtl8225_write_phy_ofdm(dev, 0xB, rtl8225_agc[i]); | 747 rtl8225_write_phy_ofdm(dev, 0xB, rtl8225_agc[i]); |
748 rtl8225_write_phy_ofdm(dev, 0xA, 0x80 + i); | 748 rtl8225_write_phy_ofdm(dev, 0xA, 0x80 + i); |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
974 | 974 |
975 rtl8225_write(dev, 0, 0x0B7); | 975 rtl8225_write(dev, 0, 0x0B7); |
976 | 976 |
977 if (reg8 != 0x588 || reg9 != 0x700) | 977 if (reg8 != 0x588 || reg9 != 0x700) |
978 return &rtl8225_ops; | 978 return &rtl8225_ops; |
979 | 979 |
980 return &rtl8225z2_ops; | 980 return &rtl8225z2_ops; |
981 } else | 981 } else |
982 return &rtl8225z2_b_ops; | 982 return &rtl8225z2_b_ops; |
983 } | 983 } |
OLD | NEW |