From b6078d14909a441c37feb3c45a0d70414db07d94 Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Thu, 24 May 2007 01:07:15 +0100 Subject: [PATCH] --- yaml --- r: 58345 b: refs/heads/master c: aaf83d4fc4a596929306c894d341e17fbdfba758 h: refs/heads/master i: 58343: ce1381d17b726ea68d52e61ae1d951a605c3e29a v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/zd1211rw/zd_chip.c | 2 +- trunk/drivers/net/wireless/zd1211rw/zd_rf.h | 14 ++++++++++++++ trunk/drivers/net/wireless/zd1211rw/zd_rf_al2230.c | 1 + .../drivers/net/wireless/zd1211rw/zd_rf_al7230b.c | 1 + 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 1cd57cbbda9a..8b94c6396692 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4481d6093e62e168ab06e9bbb4e67a9bebb8c7f7 +refs/heads/master: aaf83d4fc4a596929306c894d341e17fbdfba758 diff --git a/trunk/drivers/net/wireless/zd1211rw/zd_chip.c b/trunk/drivers/net/wireless/zd1211rw/zd_chip.c index 4a2ceb93aaad..5b624bfc01a6 100644 --- a/trunk/drivers/net/wireless/zd1211rw/zd_chip.c +++ b/trunk/drivers/net/wireless/zd1211rw/zd_chip.c @@ -1286,7 +1286,7 @@ static int patch_cck_gain(struct zd_chip *chip) int r; u32 value; - if (!chip->patch_cck_gain) + if (!chip->patch_cck_gain || !zd_rf_should_patch_cck_gain(&chip->rf)) return 0; ZD_ASSERT(mutex_is_locked(&chip->mutex)); diff --git a/trunk/drivers/net/wireless/zd1211rw/zd_rf.h b/trunk/drivers/net/wireless/zd1211rw/zd_rf.h index 6dced2ae5a11..c6dfd8227f6e 100644 --- a/trunk/drivers/net/wireless/zd1211rw/zd_rf.h +++ b/trunk/drivers/net/wireless/zd1211rw/zd_rf.h @@ -52,6 +52,12 @@ struct zd_rf { * defaults to 1 (yes) */ u8 update_channel_int:1; + /* whether CR47 should be patched from the EEPROM, if the appropriate + * flag is set in the POD. The vendor driver suggests that this should + * be done for all RF's, but a bug in their code prevents but their + * HW_OverWritePhyRegFromE2P() routine from ever taking effect. */ + u8 patch_cck_gain:1; + /* private RF driver data */ void *priv; @@ -84,6 +90,14 @@ static inline int zd_rf_should_update_pwr_int(struct zd_rf *rf) return rf->update_channel_int; } +static inline int zd_rf_should_patch_cck_gain(struct zd_rf *rf) +{ + return rf->patch_cck_gain; +} + +int zd_rf_patch_6m_band_edge(struct zd_rf *rf, u8 channel); +int zd_rf_generic_patch_6m(struct zd_rf *rf, u8 channel); + /* Functions for individual RF chips */ int zd_rf_init_rf2959(struct zd_rf *rf); diff --git a/trunk/drivers/net/wireless/zd1211rw/zd_rf_al2230.c b/trunk/drivers/net/wireless/zd1211rw/zd_rf_al2230.c index 511392acfedf..e7a4ecf7b6e2 100644 --- a/trunk/drivers/net/wireless/zd1211rw/zd_rf_al2230.c +++ b/trunk/drivers/net/wireless/zd1211rw/zd_rf_al2230.c @@ -432,5 +432,6 @@ int zd_rf_init_al2230(struct zd_rf *rf) rf->switch_radio_on = zd1211_al2230_switch_radio_on; } rf->patch_6m_band_edge = zd_rf_generic_patch_6m; + rf->patch_cck_gain = 1; return 0; } diff --git a/trunk/drivers/net/wireless/zd1211rw/zd_rf_al7230b.c b/trunk/drivers/net/wireless/zd1211rw/zd_rf_al7230b.c index 5e5e9ddc6a74..f4e8b6ada854 100644 --- a/trunk/drivers/net/wireless/zd1211rw/zd_rf_al7230b.c +++ b/trunk/drivers/net/wireless/zd1211rw/zd_rf_al7230b.c @@ -483,6 +483,7 @@ int zd_rf_init_al7230b(struct zd_rf *rf) rf->switch_radio_on = zd1211_al7230b_switch_radio_on; rf->set_channel = zd1211_al7230b_set_channel; rf->patch_6m_band_edge = zd_rf_generic_patch_6m; + rf->patch_cck_gain = 1; } rf->switch_radio_off = al7230b_switch_radio_off;