diff options
author | David S. Miller <davem@davemloft.net> | 2008-11-10 16:24:44 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-10 16:24:44 -0500 |
commit | 23779897546c1effb546ff89b89803d9d955d517 (patch) | |
tree | d4b5d52b5d716a72755ba018382d4b87eae763a4 /drivers/net/wireless/rtl8187_rtl8225.c | |
parent | f574179b63e48f5285468b5ee40f3c480221f708 (diff) | |
parent | c4832467a5c8c2ae96d6dad882be4d4ab9eefad7 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'drivers/net/wireless/rtl8187_rtl8225.c')
-rw-r--r-- | drivers/net/wireless/rtl8187_rtl8225.c | 383 |
1 files changed, 188 insertions, 195 deletions
diff --git a/drivers/net/wireless/rtl8187_rtl8225.c b/drivers/net/wireless/rtl8187_rtl8225.c index b999f87ed150..69030be62b36 100644 --- a/drivers/net/wireless/rtl8187_rtl8225.c +++ b/drivers/net/wireless/rtl8187_rtl8225.c | |||
@@ -64,7 +64,6 @@ static void rtl8225_write_bitbang(struct ieee80211_hw *dev, u8 addr, u16 data) | |||
64 | 64 | ||
65 | rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, reg80 | (1 << 2)); | 65 | rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, reg80 | (1 << 2)); |
66 | rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, reg84); | 66 | rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, reg84); |
67 | msleep(2); | ||
68 | } | 67 | } |
69 | 68 | ||
70 | static void rtl8225_write_8051(struct ieee80211_hw *dev, u8 addr, __le16 data) | 69 | static void rtl8225_write_8051(struct ieee80211_hw *dev, u8 addr, __le16 data) |
@@ -98,7 +97,6 @@ static void rtl8225_write_8051(struct ieee80211_hw *dev, u8 addr, __le16 data) | |||
98 | 97 | ||
99 | rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, reg80 | (1 << 2)); | 98 | rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, reg80 | (1 << 2)); |
100 | rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, reg84); | 99 | rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, reg84); |
101 | msleep(2); | ||
102 | } | 100 | } |
103 | 101 | ||
104 | static void rtl8225_write(struct ieee80211_hw *dev, u8 addr, u16 data) | 102 | static void rtl8225_write(struct ieee80211_hw *dev, u8 addr, u16 data) |
@@ -333,21 +331,21 @@ static void rtl8225_rf_init(struct ieee80211_hw *dev) | |||
333 | struct rtl8187_priv *priv = dev->priv; | 331 | struct rtl8187_priv *priv = dev->priv; |
334 | int i; | 332 | int i; |
335 | 333 | ||
336 | rtl8225_write(dev, 0x0, 0x067); msleep(1); | 334 | rtl8225_write(dev, 0x0, 0x067); |
337 | rtl8225_write(dev, 0x1, 0xFE0); msleep(1); | 335 | rtl8225_write(dev, 0x1, 0xFE0); |
338 | rtl8225_write(dev, 0x2, 0x44D); msleep(1); | 336 | rtl8225_write(dev, 0x2, 0x44D); |
339 | rtl8225_write(dev, 0x3, 0x441); msleep(1); | 337 | rtl8225_write(dev, 0x3, 0x441); |
340 | rtl8225_write(dev, 0x4, 0x486); msleep(1); | 338 | rtl8225_write(dev, 0x4, 0x486); |
341 | rtl8225_write(dev, 0x5, 0xBC0); msleep(1); | 339 | rtl8225_write(dev, 0x5, 0xBC0); |
342 | rtl8225_write(dev, 0x6, 0xAE6); msleep(1); | 340 | rtl8225_write(dev, 0x6, 0xAE6); |
343 | rtl8225_write(dev, 0x7, 0x82A); msleep(1); | 341 | rtl8225_write(dev, 0x7, 0x82A); |
344 | rtl8225_write(dev, 0x8, 0x01F); msleep(1); | 342 | rtl8225_write(dev, 0x8, 0x01F); |
345 | rtl8225_write(dev, 0x9, 0x334); msleep(1); | 343 | rtl8225_write(dev, 0x9, 0x334); |
346 | rtl8225_write(dev, 0xA, 0xFD4); msleep(1); | 344 | rtl8225_write(dev, 0xA, 0xFD4); |
347 | rtl8225_write(dev, 0xB, 0x391); msleep(1); | 345 | rtl8225_write(dev, 0xB, 0x391); |
348 | rtl8225_write(dev, 0xC, 0x050); msleep(1); | 346 | rtl8225_write(dev, 0xC, 0x050); |
349 | rtl8225_write(dev, 0xD, 0x6DB); msleep(1); | 347 | rtl8225_write(dev, 0xD, 0x6DB); |
350 | rtl8225_write(dev, 0xE, 0x029); msleep(1); | 348 | rtl8225_write(dev, 0xE, 0x029); |
351 | rtl8225_write(dev, 0xF, 0x914); msleep(100); | 349 | rtl8225_write(dev, 0xF, 0x914); msleep(100); |
352 | 350 | ||
353 | rtl8225_write(dev, 0x2, 0xC4D); msleep(200); | 351 | rtl8225_write(dev, 0x2, 0xC4D); msleep(200); |
@@ -375,91 +373,89 @@ static void rtl8225_rf_init(struct ieee80211_hw *dev) | |||
375 | 373 | ||
376 | for (i = 0; i < ARRAY_SIZE(rtl8225_agc); i++) { | 374 | for (i = 0; i < ARRAY_SIZE(rtl8225_agc); i++) { |
377 | rtl8225_write_phy_ofdm(dev, 0xB, rtl8225_agc[i]); | 375 | rtl8225_write_phy_ofdm(dev, 0xB, rtl8225_agc[i]); |
378 | msleep(1); | ||
379 | rtl8225_write_phy_ofdm(dev, 0xA, 0x80 + i); | 376 | rtl8225_write_phy_ofdm(dev, 0xA, 0x80 + i); |
380 | msleep(1); | ||
381 | } | 377 | } |
382 | 378 | ||
383 | msleep(1); | 379 | msleep(1); |
384 | 380 | ||
385 | rtl8225_write_phy_ofdm(dev, 0x00, 0x01); msleep(1); | 381 | rtl8225_write_phy_ofdm(dev, 0x00, 0x01); |
386 | rtl8225_write_phy_ofdm(dev, 0x01, 0x02); msleep(1); | 382 | rtl8225_write_phy_ofdm(dev, 0x01, 0x02); |
387 | rtl8225_write_phy_ofdm(dev, 0x02, 0x42); msleep(1); | 383 | rtl8225_write_phy_ofdm(dev, 0x02, 0x42); |
388 | rtl8225_write_phy_ofdm(dev, 0x03, 0x00); msleep(1); | 384 | rtl8225_write_phy_ofdm(dev, 0x03, 0x00); |
389 | rtl8225_write_phy_ofdm(dev, 0x04, 0x00); msleep(1); | 385 | rtl8225_write_phy_ofdm(dev, 0x04, 0x00); |
390 | rtl8225_write_phy_ofdm(dev, 0x05, 0x00); msleep(1); | 386 | rtl8225_write_phy_ofdm(dev, 0x05, 0x00); |
391 | rtl8225_write_phy_ofdm(dev, 0x06, 0x40); msleep(1); | 387 | rtl8225_write_phy_ofdm(dev, 0x06, 0x40); |
392 | rtl8225_write_phy_ofdm(dev, 0x07, 0x00); msleep(1); | 388 | rtl8225_write_phy_ofdm(dev, 0x07, 0x00); |
393 | rtl8225_write_phy_ofdm(dev, 0x08, 0x40); msleep(1); | 389 | rtl8225_write_phy_ofdm(dev, 0x08, 0x40); |
394 | rtl8225_write_phy_ofdm(dev, 0x09, 0xfe); msleep(1); | 390 | rtl8225_write_phy_ofdm(dev, 0x09, 0xfe); |
395 | rtl8225_write_phy_ofdm(dev, 0x0a, 0x09); msleep(1); | 391 | rtl8225_write_phy_ofdm(dev, 0x0a, 0x09); |
396 | rtl8225_write_phy_ofdm(dev, 0x0b, 0x80); msleep(1); | 392 | rtl8225_write_phy_ofdm(dev, 0x0b, 0x80); |
397 | rtl8225_write_phy_ofdm(dev, 0x0c, 0x01); msleep(1); | 393 | rtl8225_write_phy_ofdm(dev, 0x0c, 0x01); |
398 | rtl8225_write_phy_ofdm(dev, 0x0e, 0xd3); msleep(1); | 394 | rtl8225_write_phy_ofdm(dev, 0x0e, 0xd3); |
399 | rtl8225_write_phy_ofdm(dev, 0x0f, 0x38); msleep(1); | 395 | rtl8225_write_phy_ofdm(dev, 0x0f, 0x38); |
400 | rtl8225_write_phy_ofdm(dev, 0x10, 0x84); msleep(1); | 396 | rtl8225_write_phy_ofdm(dev, 0x10, 0x84); |
401 | rtl8225_write_phy_ofdm(dev, 0x11, 0x06); msleep(1); | 397 | rtl8225_write_phy_ofdm(dev, 0x11, 0x06); |
402 | rtl8225_write_phy_ofdm(dev, 0x12, 0x20); msleep(1); | 398 | rtl8225_write_phy_ofdm(dev, 0x12, 0x20); |
403 | rtl8225_write_phy_ofdm(dev, 0x13, 0x20); msleep(1); | 399 | rtl8225_write_phy_ofdm(dev, 0x13, 0x20); |
404 | rtl8225_write_phy_ofdm(dev, 0x14, 0x00); msleep(1); | 400 | rtl8225_write_phy_ofdm(dev, 0x14, 0x00); |
405 | rtl8225_write_phy_ofdm(dev, 0x15, 0x40); msleep(1); | 401 | rtl8225_write_phy_ofdm(dev, 0x15, 0x40); |
406 | rtl8225_write_phy_ofdm(dev, 0x16, 0x00); msleep(1); | 402 | rtl8225_write_phy_ofdm(dev, 0x16, 0x00); |
407 | rtl8225_write_phy_ofdm(dev, 0x17, 0x40); msleep(1); | 403 | rtl8225_write_phy_ofdm(dev, 0x17, 0x40); |
408 | rtl8225_write_phy_ofdm(dev, 0x18, 0xef); msleep(1); | 404 | rtl8225_write_phy_ofdm(dev, 0x18, 0xef); |
409 | rtl8225_write_phy_ofdm(dev, 0x19, 0x19); msleep(1); | 405 | rtl8225_write_phy_ofdm(dev, 0x19, 0x19); |
410 | rtl8225_write_phy_ofdm(dev, 0x1a, 0x20); msleep(1); | 406 | rtl8225_write_phy_ofdm(dev, 0x1a, 0x20); |
411 | rtl8225_write_phy_ofdm(dev, 0x1b, 0x76); msleep(1); | 407 | rtl8225_write_phy_ofdm(dev, 0x1b, 0x76); |
412 | rtl8225_write_phy_ofdm(dev, 0x1c, 0x04); msleep(1); | 408 | rtl8225_write_phy_ofdm(dev, 0x1c, 0x04); |
413 | rtl8225_write_phy_ofdm(dev, 0x1e, 0x95); msleep(1); | 409 | rtl8225_write_phy_ofdm(dev, 0x1e, 0x95); |
414 | rtl8225_write_phy_ofdm(dev, 0x1f, 0x75); msleep(1); | 410 | rtl8225_write_phy_ofdm(dev, 0x1f, 0x75); |
415 | rtl8225_write_phy_ofdm(dev, 0x20, 0x1f); msleep(1); | 411 | rtl8225_write_phy_ofdm(dev, 0x20, 0x1f); |
416 | rtl8225_write_phy_ofdm(dev, 0x21, 0x27); msleep(1); | 412 | rtl8225_write_phy_ofdm(dev, 0x21, 0x27); |
417 | rtl8225_write_phy_ofdm(dev, 0x22, 0x16); msleep(1); | 413 | rtl8225_write_phy_ofdm(dev, 0x22, 0x16); |
418 | rtl8225_write_phy_ofdm(dev, 0x24, 0x46); msleep(1); | 414 | rtl8225_write_phy_ofdm(dev, 0x24, 0x46); |
419 | rtl8225_write_phy_ofdm(dev, 0x25, 0x20); msleep(1); | 415 | rtl8225_write_phy_ofdm(dev, 0x25, 0x20); |
420 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); msleep(1); | 416 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); |
421 | rtl8225_write_phy_ofdm(dev, 0x27, 0x88); msleep(1); | 417 | rtl8225_write_phy_ofdm(dev, 0x27, 0x88); |
422 | 418 | ||
423 | rtl8225_write_phy_ofdm(dev, 0x0d, rtl8225_gain[2 * 4]); | 419 | rtl8225_write_phy_ofdm(dev, 0x0d, rtl8225_gain[2 * 4]); |
424 | rtl8225_write_phy_ofdm(dev, 0x1b, rtl8225_gain[2 * 4 + 2]); | 420 | rtl8225_write_phy_ofdm(dev, 0x1b, rtl8225_gain[2 * 4 + 2]); |
425 | rtl8225_write_phy_ofdm(dev, 0x1d, rtl8225_gain[2 * 4 + 3]); | 421 | rtl8225_write_phy_ofdm(dev, 0x1d, rtl8225_gain[2 * 4 + 3]); |
426 | rtl8225_write_phy_ofdm(dev, 0x23, rtl8225_gain[2 * 4 + 1]); | 422 | rtl8225_write_phy_ofdm(dev, 0x23, rtl8225_gain[2 * 4 + 1]); |
427 | 423 | ||
428 | rtl8225_write_phy_cck(dev, 0x00, 0x98); msleep(1); | 424 | rtl8225_write_phy_cck(dev, 0x00, 0x98); |
429 | rtl8225_write_phy_cck(dev, 0x03, 0x20); msleep(1); | 425 | rtl8225_write_phy_cck(dev, 0x03, 0x20); |
430 | rtl8225_write_phy_cck(dev, 0x04, 0x7e); msleep(1); | 426 | rtl8225_write_phy_cck(dev, 0x04, 0x7e); |
431 | rtl8225_write_phy_cck(dev, 0x05, 0x12); msleep(1); | 427 | rtl8225_write_phy_cck(dev, 0x05, 0x12); |
432 | rtl8225_write_phy_cck(dev, 0x06, 0xfc); msleep(1); | 428 | rtl8225_write_phy_cck(dev, 0x06, 0xfc); |
433 | rtl8225_write_phy_cck(dev, 0x07, 0x78); msleep(1); | 429 | rtl8225_write_phy_cck(dev, 0x07, 0x78); |
434 | rtl8225_write_phy_cck(dev, 0x08, 0x2e); msleep(1); | 430 | rtl8225_write_phy_cck(dev, 0x08, 0x2e); |
435 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); msleep(1); | 431 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); |
436 | rtl8225_write_phy_cck(dev, 0x11, 0x88); msleep(1); | 432 | rtl8225_write_phy_cck(dev, 0x11, 0x88); |
437 | rtl8225_write_phy_cck(dev, 0x12, 0x47); msleep(1); | 433 | rtl8225_write_phy_cck(dev, 0x12, 0x47); |
438 | rtl8225_write_phy_cck(dev, 0x13, 0xd0); | 434 | rtl8225_write_phy_cck(dev, 0x13, 0xd0); |
439 | rtl8225_write_phy_cck(dev, 0x19, 0x00); | 435 | rtl8225_write_phy_cck(dev, 0x19, 0x00); |
440 | rtl8225_write_phy_cck(dev, 0x1a, 0xa0); | 436 | rtl8225_write_phy_cck(dev, 0x1a, 0xa0); |
441 | rtl8225_write_phy_cck(dev, 0x1b, 0x08); | 437 | rtl8225_write_phy_cck(dev, 0x1b, 0x08); |
442 | rtl8225_write_phy_cck(dev, 0x40, 0x86); | 438 | rtl8225_write_phy_cck(dev, 0x40, 0x86); |
443 | rtl8225_write_phy_cck(dev, 0x41, 0x8d); msleep(1); | 439 | rtl8225_write_phy_cck(dev, 0x41, 0x8d); |
444 | rtl8225_write_phy_cck(dev, 0x42, 0x15); msleep(1); | 440 | rtl8225_write_phy_cck(dev, 0x42, 0x15); |
445 | rtl8225_write_phy_cck(dev, 0x43, 0x18); msleep(1); | 441 | rtl8225_write_phy_cck(dev, 0x43, 0x18); |
446 | rtl8225_write_phy_cck(dev, 0x44, 0x1f); msleep(1); | 442 | rtl8225_write_phy_cck(dev, 0x44, 0x1f); |
447 | rtl8225_write_phy_cck(dev, 0x45, 0x1e); msleep(1); | 443 | rtl8225_write_phy_cck(dev, 0x45, 0x1e); |
448 | rtl8225_write_phy_cck(dev, 0x46, 0x1a); msleep(1); | 444 | rtl8225_write_phy_cck(dev, 0x46, 0x1a); |
449 | rtl8225_write_phy_cck(dev, 0x47, 0x15); msleep(1); | 445 | rtl8225_write_phy_cck(dev, 0x47, 0x15); |
450 | rtl8225_write_phy_cck(dev, 0x48, 0x10); msleep(1); | 446 | rtl8225_write_phy_cck(dev, 0x48, 0x10); |
451 | rtl8225_write_phy_cck(dev, 0x49, 0x0a); msleep(1); | 447 | rtl8225_write_phy_cck(dev, 0x49, 0x0a); |
452 | rtl8225_write_phy_cck(dev, 0x4a, 0x05); msleep(1); | 448 | rtl8225_write_phy_cck(dev, 0x4a, 0x05); |
453 | rtl8225_write_phy_cck(dev, 0x4b, 0x02); msleep(1); | 449 | rtl8225_write_phy_cck(dev, 0x4b, 0x02); |
454 | rtl8225_write_phy_cck(dev, 0x4c, 0x05); msleep(1); | 450 | rtl8225_write_phy_cck(dev, 0x4c, 0x05); |
455 | 451 | ||
456 | rtl818x_iowrite8(priv, &priv->map->TESTR, 0x0D); | 452 | rtl818x_iowrite8(priv, &priv->map->TESTR, 0x0D); |
457 | 453 | ||
458 | rtl8225_rf_set_tx_power(dev, 1); | 454 | rtl8225_rf_set_tx_power(dev, 1); |
459 | 455 | ||
460 | /* RX antenna default to A */ | 456 | /* RX antenna default to A */ |
461 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); msleep(1); /* B: 0xDB */ | 457 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); /* B: 0xDB */ |
462 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); msleep(1); /* B: 0x10 */ | 458 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); /* B: 0x10 */ |
463 | 459 | ||
464 | rtl818x_iowrite8(priv, &priv->map->TX_ANTENNA, 0x03); /* B: 0x00 */ | 460 | rtl818x_iowrite8(priv, &priv->map->TX_ANTENNA, 0x03); /* B: 0x00 */ |
465 | msleep(1); | 461 | msleep(1); |
@@ -629,7 +625,7 @@ static void rtl8225z2_b_rf_set_tx_power(struct ieee80211_hw *dev, int channel) | |||
629 | rtl8225_write_phy_cck(dev, 0x44 + i, *tmp++); | 625 | rtl8225_write_phy_cck(dev, 0x44 + i, *tmp++); |
630 | 626 | ||
631 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_CCK, | 627 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_CCK, |
632 | rtl8225z2_tx_gain_cck_ofdm[cck_power]); | 628 | rtl8225z2_tx_gain_cck_ofdm[cck_power] << 1); |
633 | msleep(1); | 629 | msleep(1); |
634 | 630 | ||
635 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_OFDM, | 631 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_OFDM, |
@@ -687,22 +683,23 @@ static void rtl8225z2_rf_init(struct ieee80211_hw *dev) | |||
687 | struct rtl8187_priv *priv = dev->priv; | 683 | struct rtl8187_priv *priv = dev->priv; |
688 | int i; | 684 | int i; |
689 | 685 | ||
690 | rtl8225_write(dev, 0x0, 0x2BF); msleep(1); | 686 | rtl8225_write(dev, 0x0, 0x2BF); |
691 | rtl8225_write(dev, 0x1, 0xEE0); msleep(1); | 687 | rtl8225_write(dev, 0x1, 0xEE0); |
692 | rtl8225_write(dev, 0x2, 0x44D); msleep(1); | 688 | rtl8225_write(dev, 0x2, 0x44D); |
693 | rtl8225_write(dev, 0x3, 0x441); msleep(1); | 689 | rtl8225_write(dev, 0x3, 0x441); |
694 | rtl8225_write(dev, 0x4, 0x8C3); msleep(1); | 690 | rtl8225_write(dev, 0x4, 0x8C3); |
695 | rtl8225_write(dev, 0x5, 0xC72); msleep(1); | 691 | rtl8225_write(dev, 0x5, 0xC72); |
696 | rtl8225_write(dev, 0x6, 0x0E6); msleep(1); | 692 | rtl8225_write(dev, 0x6, 0x0E6); |
697 | rtl8225_write(dev, 0x7, 0x82A); msleep(1); | 693 | rtl8225_write(dev, 0x7, 0x82A); |
698 | rtl8225_write(dev, 0x8, 0x03F); msleep(1); | 694 | rtl8225_write(dev, 0x8, 0x03F); |
699 | rtl8225_write(dev, 0x9, 0x335); msleep(1); | 695 | rtl8225_write(dev, 0x9, 0x335); |
700 | rtl8225_write(dev, 0xa, 0x9D4); msleep(1); | 696 | rtl8225_write(dev, 0xa, 0x9D4); |
701 | rtl8225_write(dev, 0xb, 0x7BB); msleep(1); | 697 | rtl8225_write(dev, 0xb, 0x7BB); |
702 | rtl8225_write(dev, 0xc, 0x850); msleep(1); | 698 | rtl8225_write(dev, 0xc, 0x850); |
703 | rtl8225_write(dev, 0xd, 0xCDF); msleep(1); | 699 | rtl8225_write(dev, 0xd, 0xCDF); |
704 | rtl8225_write(dev, 0xe, 0x02B); msleep(1); | 700 | rtl8225_write(dev, 0xe, 0x02B); |
705 | rtl8225_write(dev, 0xf, 0x114); msleep(100); | 701 | rtl8225_write(dev, 0xf, 0x114); |
702 | msleep(100); | ||
706 | 703 | ||
707 | rtl8225_write(dev, 0x0, 0x1B7); | 704 | rtl8225_write(dev, 0x0, 0x1B7); |
708 | 705 | ||
@@ -736,94 +733,92 @@ static void rtl8225z2_rf_init(struct ieee80211_hw *dev) | |||
736 | 733 | ||
737 | for (i = 0; i < ARRAY_SIZE(rtl8225_agc); i++) { | 734 | for (i = 0; i < ARRAY_SIZE(rtl8225_agc); i++) { |
738 | rtl8225_write_phy_ofdm(dev, 0xB, rtl8225_agc[i]); | 735 | rtl8225_write_phy_ofdm(dev, 0xB, rtl8225_agc[i]); |
739 | msleep(1); | ||
740 | rtl8225_write_phy_ofdm(dev, 0xA, 0x80 + i); | 736 | rtl8225_write_phy_ofdm(dev, 0xA, 0x80 + i); |
741 | msleep(1); | ||
742 | } | 737 | } |
743 | 738 | ||
744 | msleep(1); | 739 | msleep(1); |
745 | 740 | ||
746 | rtl8225_write_phy_ofdm(dev, 0x00, 0x01); msleep(1); | 741 | rtl8225_write_phy_ofdm(dev, 0x00, 0x01); |
747 | rtl8225_write_phy_ofdm(dev, 0x01, 0x02); msleep(1); | 742 | rtl8225_write_phy_ofdm(dev, 0x01, 0x02); |
748 | rtl8225_write_phy_ofdm(dev, 0x02, 0x42); msleep(1); | 743 | rtl8225_write_phy_ofdm(dev, 0x02, 0x42); |
749 | rtl8225_write_phy_ofdm(dev, 0x03, 0x00); msleep(1); | 744 | rtl8225_write_phy_ofdm(dev, 0x03, 0x00); |
750 | rtl8225_write_phy_ofdm(dev, 0x04, 0x00); msleep(1); | 745 | rtl8225_write_phy_ofdm(dev, 0x04, 0x00); |
751 | rtl8225_write_phy_ofdm(dev, 0x05, 0x00); msleep(1); | 746 | rtl8225_write_phy_ofdm(dev, 0x05, 0x00); |
752 | rtl8225_write_phy_ofdm(dev, 0x06, 0x40); msleep(1); | 747 | rtl8225_write_phy_ofdm(dev, 0x06, 0x40); |
753 | rtl8225_write_phy_ofdm(dev, 0x07, 0x00); msleep(1); | 748 | rtl8225_write_phy_ofdm(dev, 0x07, 0x00); |
754 | rtl8225_write_phy_ofdm(dev, 0x08, 0x40); msleep(1); | 749 | rtl8225_write_phy_ofdm(dev, 0x08, 0x40); |
755 | rtl8225_write_phy_ofdm(dev, 0x09, 0xfe); msleep(1); | 750 | rtl8225_write_phy_ofdm(dev, 0x09, 0xfe); |
756 | rtl8225_write_phy_ofdm(dev, 0x0a, 0x08); msleep(1); | 751 | rtl8225_write_phy_ofdm(dev, 0x0a, 0x08); |
757 | rtl8225_write_phy_ofdm(dev, 0x0b, 0x80); msleep(1); | 752 | rtl8225_write_phy_ofdm(dev, 0x0b, 0x80); |
758 | rtl8225_write_phy_ofdm(dev, 0x0c, 0x01); msleep(1); | 753 | rtl8225_write_phy_ofdm(dev, 0x0c, 0x01); |
759 | rtl8225_write_phy_ofdm(dev, 0x0d, 0x43); | 754 | rtl8225_write_phy_ofdm(dev, 0x0d, 0x43); |
760 | rtl8225_write_phy_ofdm(dev, 0x0e, 0xd3); msleep(1); | 755 | rtl8225_write_phy_ofdm(dev, 0x0e, 0xd3); |
761 | rtl8225_write_phy_ofdm(dev, 0x0f, 0x38); msleep(1); | 756 | rtl8225_write_phy_ofdm(dev, 0x0f, 0x38); |
762 | rtl8225_write_phy_ofdm(dev, 0x10, 0x84); msleep(1); | 757 | rtl8225_write_phy_ofdm(dev, 0x10, 0x84); |
763 | rtl8225_write_phy_ofdm(dev, 0x11, 0x07); msleep(1); | 758 | rtl8225_write_phy_ofdm(dev, 0x11, 0x07); |
764 | rtl8225_write_phy_ofdm(dev, 0x12, 0x20); msleep(1); | 759 | rtl8225_write_phy_ofdm(dev, 0x12, 0x20); |
765 | rtl8225_write_phy_ofdm(dev, 0x13, 0x20); msleep(1); | 760 | rtl8225_write_phy_ofdm(dev, 0x13, 0x20); |
766 | rtl8225_write_phy_ofdm(dev, 0x14, 0x00); msleep(1); | 761 | rtl8225_write_phy_ofdm(dev, 0x14, 0x00); |
767 | rtl8225_write_phy_ofdm(dev, 0x15, 0x40); msleep(1); | 762 | rtl8225_write_phy_ofdm(dev, 0x15, 0x40); |
768 | rtl8225_write_phy_ofdm(dev, 0x16, 0x00); msleep(1); | 763 | rtl8225_write_phy_ofdm(dev, 0x16, 0x00); |
769 | rtl8225_write_phy_ofdm(dev, 0x17, 0x40); msleep(1); | 764 | rtl8225_write_phy_ofdm(dev, 0x17, 0x40); |
770 | rtl8225_write_phy_ofdm(dev, 0x18, 0xef); msleep(1); | 765 | rtl8225_write_phy_ofdm(dev, 0x18, 0xef); |
771 | rtl8225_write_phy_ofdm(dev, 0x19, 0x19); msleep(1); | 766 | rtl8225_write_phy_ofdm(dev, 0x19, 0x19); |
772 | rtl8225_write_phy_ofdm(dev, 0x1a, 0x20); msleep(1); | 767 | rtl8225_write_phy_ofdm(dev, 0x1a, 0x20); |
773 | rtl8225_write_phy_ofdm(dev, 0x1b, 0x15); msleep(1); | 768 | rtl8225_write_phy_ofdm(dev, 0x1b, 0x15); |
774 | rtl8225_write_phy_ofdm(dev, 0x1c, 0x04); msleep(1); | 769 | rtl8225_write_phy_ofdm(dev, 0x1c, 0x04); |
775 | rtl8225_write_phy_ofdm(dev, 0x1d, 0xc5); msleep(1); | 770 | rtl8225_write_phy_ofdm(dev, 0x1d, 0xc5); |
776 | rtl8225_write_phy_ofdm(dev, 0x1e, 0x95); msleep(1); | 771 | rtl8225_write_phy_ofdm(dev, 0x1e, 0x95); |
777 | rtl8225_write_phy_ofdm(dev, 0x1f, 0x75); msleep(1); | 772 | rtl8225_write_phy_ofdm(dev, 0x1f, 0x75); |
778 | rtl8225_write_phy_ofdm(dev, 0x20, 0x1f); msleep(1); | 773 | rtl8225_write_phy_ofdm(dev, 0x20, 0x1f); |
779 | rtl8225_write_phy_ofdm(dev, 0x21, 0x17); msleep(1); | 774 | rtl8225_write_phy_ofdm(dev, 0x21, 0x17); |
780 | rtl8225_write_phy_ofdm(dev, 0x22, 0x16); msleep(1); | 775 | rtl8225_write_phy_ofdm(dev, 0x22, 0x16); |
781 | rtl8225_write_phy_ofdm(dev, 0x23, 0x80); msleep(1); //FIXME: not needed? | 776 | rtl8225_write_phy_ofdm(dev, 0x23, 0x80); |
782 | rtl8225_write_phy_ofdm(dev, 0x24, 0x46); msleep(1); | 777 | rtl8225_write_phy_ofdm(dev, 0x24, 0x46); |
783 | rtl8225_write_phy_ofdm(dev, 0x25, 0x00); msleep(1); | 778 | rtl8225_write_phy_ofdm(dev, 0x25, 0x00); |
784 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); msleep(1); | 779 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); |
785 | rtl8225_write_phy_ofdm(dev, 0x27, 0x88); msleep(1); | 780 | rtl8225_write_phy_ofdm(dev, 0x27, 0x88); |
786 | 781 | ||
787 | rtl8225_write_phy_ofdm(dev, 0x0b, rtl8225z2_gain_bg[4 * 3]); | 782 | rtl8225_write_phy_ofdm(dev, 0x0b, rtl8225z2_gain_bg[4 * 3]); |
788 | rtl8225_write_phy_ofdm(dev, 0x1b, rtl8225z2_gain_bg[4 * 3 + 1]); | 783 | rtl8225_write_phy_ofdm(dev, 0x1b, rtl8225z2_gain_bg[4 * 3 + 1]); |
789 | rtl8225_write_phy_ofdm(dev, 0x1d, rtl8225z2_gain_bg[4 * 3 + 2]); | 784 | rtl8225_write_phy_ofdm(dev, 0x1d, rtl8225z2_gain_bg[4 * 3 + 2]); |
790 | rtl8225_write_phy_ofdm(dev, 0x21, 0x37); | 785 | rtl8225_write_phy_ofdm(dev, 0x21, 0x37); |
791 | 786 | ||
792 | rtl8225_write_phy_cck(dev, 0x00, 0x98); msleep(1); | 787 | rtl8225_write_phy_cck(dev, 0x00, 0x98); |
793 | rtl8225_write_phy_cck(dev, 0x03, 0x20); msleep(1); | 788 | rtl8225_write_phy_cck(dev, 0x03, 0x20); |
794 | rtl8225_write_phy_cck(dev, 0x04, 0x7e); msleep(1); | 789 | rtl8225_write_phy_cck(dev, 0x04, 0x7e); |
795 | rtl8225_write_phy_cck(dev, 0x05, 0x12); msleep(1); | 790 | rtl8225_write_phy_cck(dev, 0x05, 0x12); |
796 | rtl8225_write_phy_cck(dev, 0x06, 0xfc); msleep(1); | 791 | rtl8225_write_phy_cck(dev, 0x06, 0xfc); |
797 | rtl8225_write_phy_cck(dev, 0x07, 0x78); msleep(1); | 792 | rtl8225_write_phy_cck(dev, 0x07, 0x78); |
798 | rtl8225_write_phy_cck(dev, 0x08, 0x2e); msleep(1); | 793 | rtl8225_write_phy_cck(dev, 0x08, 0x2e); |
799 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); msleep(1); | 794 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); |
800 | rtl8225_write_phy_cck(dev, 0x11, 0x88); msleep(1); | 795 | rtl8225_write_phy_cck(dev, 0x11, 0x88); |
801 | rtl8225_write_phy_cck(dev, 0x12, 0x47); msleep(1); | 796 | rtl8225_write_phy_cck(dev, 0x12, 0x47); |
802 | rtl8225_write_phy_cck(dev, 0x13, 0xd0); | 797 | rtl8225_write_phy_cck(dev, 0x13, 0xd0); |
803 | rtl8225_write_phy_cck(dev, 0x19, 0x00); | 798 | rtl8225_write_phy_cck(dev, 0x19, 0x00); |
804 | rtl8225_write_phy_cck(dev, 0x1a, 0xa0); | 799 | rtl8225_write_phy_cck(dev, 0x1a, 0xa0); |
805 | rtl8225_write_phy_cck(dev, 0x1b, 0x08); | 800 | rtl8225_write_phy_cck(dev, 0x1b, 0x08); |
806 | rtl8225_write_phy_cck(dev, 0x40, 0x86); | 801 | rtl8225_write_phy_cck(dev, 0x40, 0x86); |
807 | rtl8225_write_phy_cck(dev, 0x41, 0x8d); msleep(1); | 802 | rtl8225_write_phy_cck(dev, 0x41, 0x8d); |
808 | rtl8225_write_phy_cck(dev, 0x42, 0x15); msleep(1); | 803 | rtl8225_write_phy_cck(dev, 0x42, 0x15); |
809 | rtl8225_write_phy_cck(dev, 0x43, 0x18); msleep(1); | 804 | rtl8225_write_phy_cck(dev, 0x43, 0x18); |
810 | rtl8225_write_phy_cck(dev, 0x44, 0x36); msleep(1); | 805 | rtl8225_write_phy_cck(dev, 0x44, 0x36); |
811 | rtl8225_write_phy_cck(dev, 0x45, 0x35); msleep(1); | 806 | rtl8225_write_phy_cck(dev, 0x45, 0x35); |
812 | rtl8225_write_phy_cck(dev, 0x46, 0x2e); msleep(1); | 807 | rtl8225_write_phy_cck(dev, 0x46, 0x2e); |
813 | rtl8225_write_phy_cck(dev, 0x47, 0x25); msleep(1); | 808 | rtl8225_write_phy_cck(dev, 0x47, 0x25); |
814 | rtl8225_write_phy_cck(dev, 0x48, 0x1c); msleep(1); | 809 | rtl8225_write_phy_cck(dev, 0x48, 0x1c); |
815 | rtl8225_write_phy_cck(dev, 0x49, 0x12); msleep(1); | 810 | rtl8225_write_phy_cck(dev, 0x49, 0x12); |
816 | rtl8225_write_phy_cck(dev, 0x4a, 0x09); msleep(1); | 811 | rtl8225_write_phy_cck(dev, 0x4a, 0x09); |
817 | rtl8225_write_phy_cck(dev, 0x4b, 0x04); msleep(1); | 812 | rtl8225_write_phy_cck(dev, 0x4b, 0x04); |
818 | rtl8225_write_phy_cck(dev, 0x4c, 0x05); msleep(1); | 813 | rtl8225_write_phy_cck(dev, 0x4c, 0x05); |
819 | 814 | ||
820 | rtl818x_iowrite8(priv, (u8 *)0xFF5B, 0x0D); msleep(1); | 815 | rtl818x_iowrite8(priv, (u8 *)0xFF5B, 0x0D); msleep(1); |
821 | 816 | ||
822 | rtl8225z2_rf_set_tx_power(dev, 1); | 817 | rtl8225z2_rf_set_tx_power(dev, 1); |
823 | 818 | ||
824 | /* RX antenna default to A */ | 819 | /* RX antenna default to A */ |
825 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); msleep(1); /* B: 0xDB */ | 820 | rtl8225_write_phy_cck(dev, 0x10, 0x9b); /* B: 0xDB */ |
826 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); msleep(1); /* B: 0x10 */ | 821 | rtl8225_write_phy_ofdm(dev, 0x26, 0x90); /* B: 0x10 */ |
827 | 822 | ||
828 | rtl818x_iowrite8(priv, &priv->map->TX_ANTENNA, 0x03); /* B: 0x00 */ | 823 | rtl818x_iowrite8(priv, &priv->map->TX_ANTENNA, 0x03); /* B: 0x00 */ |
829 | msleep(1); | 824 | msleep(1); |
@@ -835,40 +830,38 @@ static void rtl8225z2_b_rf_init(struct ieee80211_hw *dev) | |||
835 | struct rtl8187_priv *priv = dev->priv; | 830 | struct rtl8187_priv *priv = dev->priv; |
836 | int i; | 831 | int i; |
837 | 832 | ||
838 | rtl8225_write(dev, 0x0, 0x0B7); msleep(1); | 833 | rtl8225_write(dev, 0x0, 0x0B7); |
839 | rtl8225_write(dev, 0x1, 0xEE0); msleep(1); | 834 | rtl8225_write(dev, 0x1, 0xEE0); |
840 | rtl8225_write(dev, 0x2, 0x44D); msleep(1); | 835 | rtl8225_write(dev, 0x2, 0x44D); |
841 | rtl8225_write(dev, 0x3, 0x441); msleep(1); | 836 | rtl8225_write(dev, 0x3, 0x441); |
842 | rtl8225_write(dev, 0x4, 0x8C3); msleep(1); | 837 | rtl8225_write(dev, 0x4, 0x8C3); |
843 | rtl8225_write(dev, 0x5, 0xC72); msleep(1); | 838 | rtl8225_write(dev, 0x5, 0xC72); |
844 | rtl8225_write(dev, 0x6, 0x0E6); msleep(1); | 839 | rtl8225_write(dev, 0x6, 0x0E6); |
845 | rtl8225_write(dev, 0x7, 0x82A); msleep(1); | 840 | rtl8225_write(dev, 0x7, 0x82A); |
846 | rtl8225_write(dev, 0x8, 0x03F); msleep(1); | 841 | rtl8225_write(dev, 0x8, 0x03F); |
847 | rtl8225_write(dev, 0x9, 0x335); msleep(1); | 842 | rtl8225_write(dev, 0x9, 0x335); |
848 | rtl8225_write(dev, 0xa, 0x9D4); msleep(1); | 843 | rtl8225_write(dev, 0xa, 0x9D4); |
849 | rtl8225_write(dev, 0xb, 0x7BB); msleep(1); | 844 | rtl8225_write(dev, 0xb, 0x7BB); |
850 | rtl8225_write(dev, 0xc, 0x850); msleep(1); | 845 | rtl8225_write(dev, 0xc, 0x850); |
851 | rtl8225_write(dev, 0xd, 0xCDF); msleep(1); | 846 | rtl8225_write(dev, 0xd, 0xCDF); |
852 | rtl8225_write(dev, 0xe, 0x02B); msleep(1); | 847 | rtl8225_write(dev, 0xe, 0x02B); |
853 | rtl8225_write(dev, 0xf, 0x114); msleep(1); | 848 | rtl8225_write(dev, 0xf, 0x114); |
854 | 849 | ||
855 | rtl8225_write(dev, 0x0, 0x1B7); msleep(1); | 850 | rtl8225_write(dev, 0x0, 0x1B7); |
856 | 851 | ||
857 | for (i = 0; i < ARRAY_SIZE(rtl8225z2_rxgain); i++) { | 852 | for (i = 0; i < ARRAY_SIZE(rtl8225z2_rxgain); i++) { |
858 | rtl8225_write(dev, 0x1, i + 1); msleep(1); | 853 | rtl8225_write(dev, 0x1, i + 1); |
859 | rtl8225_write(dev, 0x2, rtl8225z2_rxgain[i]); msleep(1); | 854 | rtl8225_write(dev, 0x2, rtl8225z2_rxgain[i]); |
860 | } | 855 | } |
861 | 856 | ||
862 | rtl8225_write(dev, 0x3, 0x080); msleep(1); | 857 | rtl8225_write(dev, 0x3, 0x080); |
863 | rtl8225_write(dev, 0x5, 0x004); msleep(1); | 858 | rtl8225_write(dev, 0x5, 0x004); |
864 | rtl8225_write(dev, 0x0, 0x0B7); msleep(1); | 859 | rtl8225_write(dev, 0x0, 0x0B7); |
865 | msleep(3000); | ||
866 | 860 | ||
867 | rtl8225_write(dev, 0x2, 0xC4D); msleep(1); | 861 | rtl8225_write(dev, 0x2, 0xC4D); |
868 | msleep(2000); | ||
869 | 862 | ||
870 | rtl8225_write(dev, 0x2, 0x44D); msleep(1); | 863 | rtl8225_write(dev, 0x2, 0x44D); |
871 | rtl8225_write(dev, 0x0, 0x2BF); msleep(1); | 864 | rtl8225_write(dev, 0x0, 0x2BF); |
872 | 865 | ||
873 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_CCK, 0x03); | 866 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_CCK, 0x03); |
874 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_OFDM, 0x07); | 867 | rtl818x_iowrite8(priv, &priv->map->TX_GAIN_OFDM, 0x07); |
@@ -891,10 +884,10 @@ static void rtl8225z2_b_rf_init(struct ieee80211_hw *dev) | |||
891 | rtl818x_iowrite32(priv, (__le32 *)0xFFFC, (7 << 12) | (3 << 8) | 28); | 884 | rtl818x_iowrite32(priv, (__le32 *)0xFFFC, (7 << 12) | (3 << 8) | 28); |
892 | rtl818x_iowrite8(priv, &priv->map->ACM_CONTROL, 0); | 885 | rtl818x_iowrite8(priv, &priv->map->ACM_CONTROL, 0); |
893 | 886 | ||
894 | rtl8225_write_phy_ofdm(dev, 0x97, 0x46); msleep(1); | 887 | rtl8225_write_phy_ofdm(dev, 0x97, 0x46); |
895 | rtl8225_write_phy_ofdm(dev, 0xa4, 0xb6); msleep(1); | 888 | rtl8225_write_phy_ofdm(dev, 0xa4, 0xb6); |
896 | rtl8225_write_phy_ofdm(dev, 0x85, 0xfc); msleep(1); | 889 | rtl8225_write_phy_ofdm(dev, 0x85, 0xfc); |
897 | rtl8225_write_phy_cck(dev, 0xc1, 0x88); msleep(1); | 890 | rtl8225_write_phy_cck(dev, 0xc1, 0x88); |
898 | } | 891 | } |
899 | 892 | ||
900 | static void rtl8225_rf_stop(struct ieee80211_hw *dev) | 893 | static void rtl8225_rf_stop(struct ieee80211_hw *dev) |
@@ -902,7 +895,7 @@ static void rtl8225_rf_stop(struct ieee80211_hw *dev) | |||
902 | u8 reg; | 895 | u8 reg; |
903 | struct rtl8187_priv *priv = dev->priv; | 896 | struct rtl8187_priv *priv = dev->priv; |
904 | 897 | ||
905 | rtl8225_write(dev, 0x4, 0x1f); msleep(1); | 898 | rtl8225_write(dev, 0x4, 0x1f); |
906 | 899 | ||
907 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); | 900 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); |
908 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 901 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |