2008-12-02 00:31:29

by Reinette Chatre

[permalink] [raw]
Subject: [PATCH 0/5] Support for Intel(r) WiMax/WiFi Link 5050 Series

This series adds support for a member of the Intel(r)
WiMax/WiFi Link 5050 Series.

[PATCH 1/5] iwlwifi: 5150 add support for 5150
[PATCH 2/5] iwlwifi: 5150 enable DC calibration
[PATCH 3/5] iwlwifi: 5150 compute ct kill threshold
[PATCH 4/5] iwlwifi: 5150 parametrize eeprom versions
[PATCH 5/5] iwlwifi: 5150 enable LO, TXIQ and BB calibrations


Thank you

Reinette


2008-12-02 00:31:31

by Reinette Chatre

[permalink] [raw]
Subject: [PATCH 4/5] iwlwifi: 5150 parametrize eeprom versions

From: Tomas Winkler <[email protected]>

Add support for 5150 eeprom versions

Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Reinette Chatre <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl-5000.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 26e04ec..488b580 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -1587,6 +1587,8 @@ struct iwl_cfg iwl5150_agn_cfg = {
.sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
.ops = &iwl5000_ops,
.eeprom_size = IWL_5000_EEPROM_IMG_SIZE,
+ .eeprom_ver = EEPROM_5050_EEPROM_VERSION,
+ .eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION,
.mod_params = &iwl50_mod_params,
};

--
1.5.4.3


2008-12-02 00:31:31

by Reinette Chatre

[permalink] [raw]
Subject: [PATCH 5/5] iwlwifi: 5150 enable LO, TXIQ and BB calibrations

From: Winkler, Tomas <[email protected]>

This patch enables LO, TXIQ, and BB calibrations for 5150

Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Reinette Chatre <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl-5000.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 488b580..b6c57cb 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -888,7 +888,10 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
break;
case CSR_HW_REV_TYPE_5150:
priv->hw_params.calib_init_cfg =
- BIT(IWL_CALIB_DC);
+ BIT(IWL_CALIB_DC) |
+ BIT(IWL_CALIB_LO) |
+ BIT(IWL_CALIB_TX_IQ) |
+ BIT(IWL_CALIB_BASE_BAND);

break;
}
--
1.5.4.3


2008-12-03 22:55:34

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH 0/5] Support for Intel(r) WiMax/WiFi Link 5050 Series

On Mon, 2008-12-01 at 16:32 -0800, Reinette Chatre wrote:
> This series adds support for a member of the Intel(r)
> WiMax/WiFi Link 5050 Series.
>
> [PATCH 1/5] iwlwifi: 5150 add support for 5150
> [PATCH 2/5] iwlwifi: 5150 enable DC calibration
> [PATCH 3/5] iwlwifi: 5150 compute ct kill threshold
> [PATCH 4/5] iwlwifi: 5150 parametrize eeprom versions
> [PATCH 5/5] iwlwifi: 5150 enable LO, TXIQ and BB calibrations

Awesome, is the 5150 firmware available in the usual places now? I
don't see it at:

http://intellinuxwireless.org/?n=Downloads

and unless I'm completely blind:

+#define IWL5150_MODULE_FIRMWARE "iwlwifi-5150" IWL5150_UCODE_API ".ucode"

new ucode is required :)

Dan



2008-12-02 00:31:30

by Reinette Chatre

[permalink] [raw]
Subject: [PATCH 3/5] iwlwifi: 5150 compute ct kill threshold

From: Tomas Winkler <[email protected]>

This patch adds computation of ct kill threshold
for 5150. Threshold is computed from calibration
data in the EEPROM.

Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Reinette Chatre <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl-5000.c | 13 ++++++++++++-
drivers/net/wireless/iwlwifi/iwl-eeprom.h | 1 +
2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index c1e7a42..26e04ec 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -426,6 +426,17 @@ static const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv,
return &priv->eeprom[address];
}

+static s32 iwl5150_get_ct_threshold(struct iwl_priv *priv)
+{
+ const s32 volt2temp_coef = -5;
+ u16 *temp_calib = (u16 *)iwl_eeprom_query_addr(priv,
+ EEPROM_5000_TEMPERATURE);
+ /* offset = temperate - voltage / coef */
+ s32 offset = temp_calib[0] - temp_calib[1] / volt2temp_coef;
+ s32 threshold = (s32)CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD) - offset;
+ return threshold * volt2temp_coef;
+}
+
/*
* Calibration
*/
@@ -859,7 +870,7 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
case CSR_HW_REV_TYPE_5150:
/* 5150 wants in Kelvin */
priv->hw_params.ct_kill_threshold =
- CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD);
+ iwl5150_get_ct_threshold(priv);
break;
}

diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
index 997f23c..8f6b05f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
@@ -147,6 +147,7 @@ struct iwl_eeprom_channel {
/*5000 calibrations */
#define EEPROM_5000_CALIB_ALL (INDIRECT_ADDRESS | INDIRECT_CALIBRATION)
#define EEPROM_5000_XTAL ((2*0x128) | EEPROM_5000_CALIB_ALL)
+#define EEPROM_5000_TEMPERATURE ((2*0x12A) | EEPROM_5000_CALIB_ALL)

/* 5000 links */
#define EEPROM_5000_LINK_HOST (2*0x64)
--
1.5.4.3


2008-12-02 00:31:30

by Reinette Chatre

[permalink] [raw]
Subject: [PATCH 2/5] iwlwifi: 5150 enable DC calibration

From: Tomas Winkler <[email protected]>

This patch enables DC calibration for 5150

Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Reinette Chatre <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl-5000.c | 7 ++++++-
drivers/net/wireless/iwlwifi/iwl-dev.h | 1 +
2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 8f92ab0..c1e7a42 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -477,6 +477,9 @@ static void iwl5000_rx_calib_result(struct iwl_priv *priv,
* uCode. iwl_send_calib_results sends them in a row according to their
* index. We sort them here */
switch (hdr->op_code) {
+ case IWL_PHY_CALIBRATE_DC_CMD:
+ index = IWL_CALIB_DC;
+ break;
case IWL_PHY_CALIBRATE_LO_CMD:
index = IWL_CALIB_LO;
break;
@@ -873,7 +876,9 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
BIT(IWL_CALIB_BASE_BAND);
break;
case CSR_HW_REV_TYPE_5150:
- priv->hw_params.calib_init_cfg = 0;
+ priv->hw_params.calib_init_cfg =
+ BIT(IWL_CALIB_DC);
+
break;
}

diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index cb6edfd..b2ce29c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -693,6 +693,7 @@ struct statistics_general_data {
*/
enum iwl_calib {
IWL_CALIB_XTAL,
+ IWL_CALIB_DC,
IWL_CALIB_LO,
IWL_CALIB_TX_IQ,
IWL_CALIB_TX_IQ_PERD,
--
1.5.4.3


2008-12-02 00:31:29

by Reinette Chatre

[permalink] [raw]
Subject: [PATCH 1/5] iwlwifi: 5150 add support for 5150

From: Tomas Winkler <[email protected]>

Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Reinette Chatre <[email protected]>
---
drivers/net/wireless/iwlwifi/iwl-5000.c | 12 ++++++++++++
drivers/net/wireless/iwlwifi/iwl-agn.c | 4 ++++
drivers/net/wireless/iwlwifi/iwl-dev.h | 1 +
3 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index c3dce81..8f92ab0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -45,8 +45,10 @@
#include "iwl-5000-hw.h"

#define IWL5000_UCODE_API "-1"
+#define IWL5150_UCODE_API "-1"

#define IWL5000_MODULE_FIRMWARE "iwlwifi-5000" IWL5000_UCODE_API ".ucode"
+#define IWL5150_MODULE_FIRMWARE "iwlwifi-5150" IWL5150_UCODE_API ".ucode"

static const u16 iwl5000_default_queue_to_tx_fifo[] = {
IWL_TX_FIFO_AC3,
@@ -1563,7 +1565,17 @@ struct iwl_cfg iwl5350_agn_cfg = {
.mod_params = &iwl50_mod_params,
};

+struct iwl_cfg iwl5150_agn_cfg = {
+ .name = "5150AGN",
+ .fw_name = IWL5150_MODULE_FIRMWARE,
+ .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
+ .ops = &iwl5000_ops,
+ .eeprom_size = IWL_5000_EEPROM_IMG_SIZE,
+ .mod_params = &iwl50_mod_params,
+};
+
MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE);
+MODULE_FIRMWARE(IWL5150_MODULE_FIRMWARE);

module_param_named(disable50, iwl50_mod_params.disable, int, 0444);
MODULE_PARM_DESC(disable50,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 8008b10..247b54d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -4220,7 +4220,11 @@ static struct pci_device_id iwl_hw_card_ids[] = {
{IWL_PCI_DEVICE(0x423A, 0x1001, iwl5350_agn_cfg)},
{IWL_PCI_DEVICE(0x423A, 0x1021, iwl5350_agn_cfg)},
{IWL_PCI_DEVICE(0x423B, 0x1011, iwl5350_agn_cfg)},
+/* 5150 Wifi/WiMax */
+ {IWL_PCI_DEVICE(0x423C, PCI_ANY_ID, iwl5150_agn_cfg)},
+ {IWL_PCI_DEVICE(0x423D, PCI_ANY_ID, iwl5150_agn_cfg)},
#endif /* CONFIG_IWL5000 */
+
{0}
};
MODULE_DEVICE_TABLE(pci, iwl_hw_card_ids);
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 4da988e..cb6edfd 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -54,6 +54,7 @@ extern struct iwl_cfg iwl5100_agn_cfg;
extern struct iwl_cfg iwl5350_agn_cfg;
extern struct iwl_cfg iwl5100_bg_cfg;
extern struct iwl_cfg iwl5100_abg_cfg;
+extern struct iwl_cfg iwl5150_agn_cfg;

/* CT-KILL constants */
#define CT_KILL_THRESHOLD 110 /* in Celsius */
--
1.5.4.3


2008-12-03 23:34:07

by Reinette Chatre

[permalink] [raw]
Subject: Re: [PATCH 0/5] Support for Intel(r) WiMax/WiFi Link 5050 Series

On Wed, 2008-12-03 at 14:54 -0800, Dan Williams wrote:
> On Mon, 2008-12-01 at 16:32 -0800, Reinette Chatre wrote:
> > This series adds support for a member of the Intel(r)
> > WiMax/WiFi Link 5050 Series.
> >
> > [PATCH 1/5] iwlwifi: 5150 add support for 5150
> > [PATCH 2/5] iwlwifi: 5150 enable DC calibration
> > [PATCH 3/5] iwlwifi: 5150 compute ct kill threshold
> > [PATCH 4/5] iwlwifi: 5150 parametrize eeprom versions
> > [PATCH 5/5] iwlwifi: 5150 enable LO, TXIQ and BB calibrations
>
> Awesome, is the 5150 firmware available in the usual places now? I
> don't see it at:
>
> http://intellinuxwireless.org/?n=Downloads
>
> and unless I'm completely blind:
>
> +#define IWL5150_MODULE_FIRMWARE "iwlwifi-5150" IWL5150_UCODE_API ".ucode"
>
> new ucode is required :)
>

yes - new ucode is required but is not yet available for release. When
the ucode is released (we will announce it) it will be available in the
spot you mention above.

Reinette