2011-07-28 17:29:28

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 1/9] ath9k: Dump base eeprom header for AR9003

Debugfs file location:
<debugfs_mnt>/ieee80211/phy#/ath9k/base_eeprom

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
drivers/net/wireless/ath/ath9k/debug.c | 147 ++++++++++++++++++++++++++++++++
1 files changed, 147 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index d1eb896..df71c72 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1163,6 +1163,151 @@ static const struct file_operations fops_regdump = {
.llseek = default_llseek,/* read accesses f_pos */
};

+static ssize_t read_file_base_eeprom(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct ath_softc *sc = file->private_data;
+ struct ath_hw *ah = sc->sc_ah;
+ struct ar9300_base_eep_hdr *pBase = NULL;
+ unsigned int len = 0, size = 1500;
+ ssize_t retval = 0;
+ char *buf;
+
+ if (!AR_SREV_9300_20_OR_LATER(ah))
+ return 0;
+
+ pBase = (struct ar9300_base_eep_hdr *)
+ &ah->eeprom.ar9300_eep.baseEepHeader;
+
+ buf = kzalloc(size, GFP_KERNEL);
+ if (buf == NULL)
+ return -ENOMEM;
+
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "EEPROM Version",
+ ah->eeprom.ar9300_eep.eepromVersion);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "RegDomain1",
+ le16_to_cpu(pBase->regDmn[0]));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "RegDomain2",
+ le16_to_cpu(pBase->regDmn[1]));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "TX Mask",
+ (pBase->txrxMask >> 4));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "RX Mask",
+ (pBase->txrxMask & 0x0f));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Allow 5GHz",
+ !!(pBase->opCapFlags.opFlags & AR5416_OPFLAGS_11A));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Allow 2GHz",
+ !!(pBase->opCapFlags.opFlags & AR5416_OPFLAGS_11G));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Disable 2GHz HT20",
+ !!(pBase->opCapFlags.opFlags &
+ AR5416_OPFLAGS_N_2G_HT20));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Disable 2GHz HT40",
+ !!(pBase->opCapFlags.opFlags &
+ AR5416_OPFLAGS_N_2G_HT40));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Disable 5Ghz HT20",
+ !!(pBase->opCapFlags.opFlags &
+ AR5416_OPFLAGS_N_5G_HT20));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Disable 5Ghz HT40",
+ !!(pBase->opCapFlags.opFlags &
+ AR5416_OPFLAGS_N_5G_HT40));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Big Endian",
+ !!(pBase->opCapFlags.eepMisc & 0x01));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "RF Silent",
+ pBase->rfSilent);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "BT option",
+ pBase->blueToothOptions);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Device Cap",
+ pBase->deviceCap);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Device Type",
+ pBase->deviceType);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Power Table Offset",
+ pBase->pwrTableOffset);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Tuning Caps1",
+ pBase->params_for_tuning_caps[0]);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Tuning Caps2",
+ pBase->params_for_tuning_caps[1]);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Enable Tx Temp Comp",
+ !!(pBase->featureEnable & BIT(0)));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Enable Tx Volt Comp",
+ !!(pBase->featureEnable & BIT(1)));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Enable fast clock",
+ !!(pBase->featureEnable & BIT(2)));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Enable doubling",
+ !!(pBase->featureEnable & BIT(3)));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Internal regulator",
+ !!(pBase->featureEnable & BIT(4)));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Enable Paprd",
+ !!(pBase->featureEnable & BIT(5)));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Driver Strength",
+ !!(pBase->miscConfiguration & BIT(0)));
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Chain mask Reduce",
+ (pBase->miscConfiguration >> 0x3) & 0x1);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Write enable Gpio",
+ pBase->eepromWriteEnableGpio);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "WLAN Disable Gpio",
+ pBase->wlanDisableGpio);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "WLAN LED Gpio",
+ pBase->wlanLedGpio);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Rx Band Select Gpio",
+ pBase->rxBandSelectGpio);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Tx Gain",
+ pBase->txrxgain >> 4);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "Rx Gain",
+ pBase->txrxgain & 0xf);
+ len += snprintf(buf + len, size - len,
+ "%20s : %10d\n", "SW Reg",
+ le32_to_cpu(pBase->swreg));
+
+ len += snprintf(buf + len, size - len, "%20s : %pM\n", "MacAddress",
+ ah->eeprom.ar9300_eep.macAddr);
+ if (len > size)
+ len = size;
+
+ retval = simple_read_from_buffer(user_buf, count, ppos, buf, len);
+ kfree(buf);
+
+ return retval;
+}
+
+static const struct file_operations fops_base_eeprom = {
+ .read = read_file_base_eeprom,
+ .open = ath9k_debugfs_open,
+ .owner = THIS_MODULE,
+ .llseek = default_llseek,
+};
+
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -1206,6 +1351,8 @@ int ath9k_init_debug(struct ath_hw *ah)
&ah->config.cwm_ignore_extcca);
debugfs_create_file("regdump", S_IRUSR, sc->debug.debugfs_phy, sc,
&fops_regdump);
+ debugfs_create_file("base_eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
+ &fops_base_eeprom);

debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR,
sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask);
--
1.7.6



2011-07-28 17:30:34

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 9/9] ath9k_hw: Update AR9003 high_power tx gain table

The high_power tx gain table is changed to match the low_ob_db tx gain
table for both 5G and 2G.

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
.../net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 172 ++++++++++----------
1 files changed, 86 insertions(+), 86 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
index 275b53d..f2c6f23 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
@@ -835,98 +835,98 @@ static const u32 ar9300_2p2_baseband_core[][2] = {

static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = {
/* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
- {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352},
- {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584},
- {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800},
+ {0x0000a2dc, 0x00033800, 0x00033800, 0x03aaa352, 0x03aaa352},
+ {0x0000a2e0, 0x0003c000, 0x0003c000, 0x03ccc584, 0x03ccc584},
+ {0x0000a2e4, 0x03fc0000, 0x03fc0000, 0x03f0f800, 0x03f0f800},
{0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000},
- {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9},
- {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
- {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002},
- {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004},
- {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200},
- {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202},
- {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400},
- {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402},
- {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404},
- {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603},
- {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02},
- {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04},
- {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20},
- {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20},
- {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22},
- {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24},
- {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640},
- {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660},
- {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861},
- {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81},
- {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83},
- {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84},
- {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3},
- {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5},
- {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9},
- {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb},
- {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec},
- {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec},
- {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec},
- {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec},
- {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec},
- {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec},
- {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec},
- {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000},
- {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002},
- {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004},
- {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200},
- {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202},
- {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400},
- {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402},
- {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404},
- {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603},
- {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02},
- {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04},
- {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20},
- {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20},
- {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22},
- {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24},
- {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640},
- {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660},
- {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861},
- {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81},
- {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83},
- {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84},
- {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3},
- {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5},
- {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9},
- {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb},
- {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
- {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
- {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
- {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
- {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
- {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
- {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec},
+ {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
+ {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
+ {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
+ {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200},
+ {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202},
+ {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400},
+ {0x0000a518, 0x21002220, 0x21002220, 0x16000402, 0x16000402},
+ {0x0000a51c, 0x27002223, 0x27002223, 0x19000404, 0x19000404},
+ {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603},
+ {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02},
+ {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04},
+ {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20},
+ {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20},
+ {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22},
+ {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24},
+ {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640},
+ {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660},
+ {0x0000a544, 0x52022470, 0x52022470, 0x3f001861, 0x3f001861},
+ {0x0000a548, 0x55022490, 0x55022490, 0x43001a81, 0x43001a81},
+ {0x0000a54c, 0x59022492, 0x59022492, 0x47001a83, 0x47001a83},
+ {0x0000a550, 0x5d022692, 0x5d022692, 0x4a001c84, 0x4a001c84},
+ {0x0000a554, 0x61022892, 0x61022892, 0x4e001ce3, 0x4e001ce3},
+ {0x0000a558, 0x65024890, 0x65024890, 0x52001ce5, 0x52001ce5},
+ {0x0000a55c, 0x69024892, 0x69024892, 0x56001ce9, 0x56001ce9},
+ {0x0000a560, 0x6e024c92, 0x6e024c92, 0x5a001ceb, 0x5a001ceb},
+ {0x0000a564, 0x74026e92, 0x74026e92, 0x5d001eec, 0x5d001eec},
+ {0x0000a568, 0x74026e92, 0x74026e92, 0x5d001eec, 0x5d001eec},
+ {0x0000a56c, 0x74026e92, 0x74026e92, 0x5d001eec, 0x5d001eec},
+ {0x0000a570, 0x74026e92, 0x74026e92, 0x5d001eec, 0x5d001eec},
+ {0x0000a574, 0x74026e92, 0x74026e92, 0x5d001eec, 0x5d001eec},
+ {0x0000a578, 0x74026e92, 0x74026e92, 0x5d001eec, 0x5d001eec},
+ {0x0000a57c, 0x74026e92, 0x74026e92, 0x5d001eec, 0x5d001eec},
+ {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
+ {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002},
+ {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004},
+ {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200},
+ {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202},
+ {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400},
+ {0x0000a598, 0x21802220, 0x21802220, 0x16800402, 0x16800402},
+ {0x0000a59c, 0x27802223, 0x27802223, 0x19800404, 0x19800404},
+ {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603},
+ {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02},
+ {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04},
+ {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20},
+ {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20},
+ {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22},
+ {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24},
+ {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640},
+ {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660},
+ {0x0000a5c4, 0x52822470, 0x52822470, 0x3f801861, 0x3f801861},
+ {0x0000a5c8, 0x55822490, 0x55822490, 0x43801a81, 0x43801a81},
+ {0x0000a5cc, 0x59822492, 0x59822492, 0x47801a83, 0x47801a83},
+ {0x0000a5d0, 0x5d822692, 0x5d822692, 0x4a801c84, 0x4a801c84},
+ {0x0000a5d4, 0x61822892, 0x61822892, 0x4e801ce3, 0x4e801ce3},
+ {0x0000a5d8, 0x65824890, 0x65824890, 0x52801ce5, 0x52801ce5},
+ {0x0000a5dc, 0x69824892, 0x69824892, 0x56801ce9, 0x56801ce9},
+ {0x0000a5e0, 0x6e824c92, 0x6e824c92, 0x5a801ceb, 0x5a801ceb},
+ {0x0000a5e4, 0x74826e92, 0x74826e92, 0x5d801eec, 0x5d801eec},
+ {0x0000a5e8, 0x74826e92, 0x74826e92, 0x5d801eec, 0x5d801eec},
+ {0x0000a5ec, 0x74826e92, 0x74826e92, 0x5d801eec, 0x5d801eec},
+ {0x0000a5f0, 0x74826e92, 0x74826e92, 0x5d801eec, 0x5d801eec},
+ {0x0000a5f4, 0x74826e92, 0x74826e92, 0x5d801eec, 0x5d801eec},
+ {0x0000a5f8, 0x74826e92, 0x74826e92, 0x5d801eec, 0x5d801eec},
+ {0x0000a5fc, 0x74826e92, 0x74826e92, 0x5d801eec, 0x5d801eec},
{0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
{0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
{0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
{0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
- {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000},
- {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000},
- {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501},
- {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501},
- {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03},
- {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04},
- {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04},
- {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
- {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
- {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
- {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
- {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005},
- {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352},
- {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584},
- {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800},
+ {0x0000a610, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
+ {0x0000a614, 0x02004000, 0x02004000, 0x01404000, 0x01404000},
+ {0x0000a618, 0x02004801, 0x02004801, 0x01404501, 0x01404501},
+ {0x0000a61c, 0x02808a02, 0x02808a02, 0x02008501, 0x02008501},
+ {0x0000a620, 0x0380ce03, 0x0380ce03, 0x0280ca03, 0x0280ca03},
+ {0x0000a624, 0x04411104, 0x04411104, 0x03010c04, 0x03010c04},
+ {0x0000a628, 0x04411104, 0x04411104, 0x04014c04, 0x04014c04},
+ {0x0000a62c, 0x04411104, 0x04411104, 0x04015005, 0x04015005},
+ {0x0000a630, 0x04411104, 0x04411104, 0x04015005, 0x04015005},
+ {0x0000a634, 0x04411104, 0x04411104, 0x04015005, 0x04015005},
+ {0x0000a638, 0x04411104, 0x04411104, 0x04015005, 0x04015005},
+ {0x0000a63c, 0x04411104, 0x04411104, 0x04015005, 0x04015005},
+ {0x0000b2dc, 0x00033800, 0x00033800, 0x03aaa352, 0x03aaa352},
+ {0x0000b2e0, 0x0003c000, 0x0003c000, 0x03ccc584, 0x03ccc584},
+ {0x0000b2e4, 0x03fc0000, 0x03fc0000, 0x03f0f800, 0x03f0f800},
{0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000},
- {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352},
- {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584},
- {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800},
+ {0x0000c2dc, 0x00033800, 0x00033800, 0x03aaa352, 0x03aaa352},
+ {0x0000c2e0, 0x0003c000, 0x0003c000, 0x03ccc584, 0x03ccc584},
+ {0x0000c2e4, 0x03fc0000, 0x03fc0000, 0x03f0f800, 0x03f0f800},
{0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000},
{0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
{0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
--
1.7.6


2011-07-29 07:09:02

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH 7/9] ath9k_hw: Disable Walsh spatial spreading for 2 chains

On Thu, Jul 28, 2011 at 02:14:22PM -0700, Luis R. Rodriguez wrote:
> On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
> <[email protected]> wrote:
> > Signed-off-by: Rajkumar Manoharan <[email protected]>
>
> Same questions.
>
No this ini change does not address regression. Though the changes are minimal,
it is not a stable patch.

--
Rajkumar

2011-07-28 21:11:53

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH 1/9] ath9k: Dump base eeprom header for AR9003

On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
<[email protected]> wrote:
> Debugfs file location:
> <debugfs_mnt>/ieee80211/phy#/ath9k/base_eeprom
>
> Signed-off-by: Rajkumar Manoharan <[email protected]>
> ---
>  drivers/net/wireless/ath/ath9k/debug.c |  147 ++++++++++++++++++++++++++++++++
>  1 files changed, 147 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
> index d1eb896..df71c72 100644
> --- a/drivers/net/wireless/ath/ath9k/debug.c
> +++ b/drivers/net/wireless/ath/ath9k/debug.c
> @@ -1163,6 +1163,151 @@ static const struct file_operations fops_regdump = {
>        .llseek = default_llseek,/* read accesses f_pos */
>  };
>
> +static ssize_t read_file_base_eeprom(struct file *file, char __user *user_buf,
> +                                    size_t count, loff_t *ppos)
> +{
> +       struct ath_softc *sc = file->private_data;
> +       struct ath_hw *ah = sc->sc_ah;
> +       struct ar9300_base_eep_hdr *pBase = NULL;
> +       unsigned int len = 0, size = 1500;
> +       ssize_t retval = 0;
> +       char *buf;
> +
> +       if (!AR_SREV_9300_20_OR_LATER(ah))
> +               return 0;

This is really really cool stuff, but instead of doing this can we
instead implement this as a callback design which would enable other
hw revisions to be supported? If we do not then we need to make the
code branch out on each type of card.

Luis

2011-07-29 06:46:17

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH 1/9] ath9k: Dump base eeprom header for AR9003

On Thu, Jul 28, 2011 at 02:11:32PM -0700, Luis R. Rodriguez wrote:
> On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
> <[email protected]> wrote:
> > Debugfs file location:
> > <debugfs_mnt>/ieee80211/phy#/ath9k/base_eeprom
> >
> > Signed-off-by: Rajkumar Manoharan <[email protected]>
> > ---
> > ?drivers/net/wireless/ath/ath9k/debug.c | ?147 ++++++++++++++++++++++++++++++++
> > ?1 files changed, 147 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
> > index d1eb896..df71c72 100644
> > --- a/drivers/net/wireless/ath/ath9k/debug.c
> > +++ b/drivers/net/wireless/ath/ath9k/debug.c
> > @@ -1163,6 +1163,151 @@ static const struct file_operations fops_regdump = {
> > ? ? ? ?.llseek = default_llseek,/* read accesses f_pos */
> > ?};
> >
> > +static ssize_t read_file_base_eeprom(struct file *file, char __user *user_buf,
> > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?size_t count, loff_t *ppos)
> > +{
> > + ? ? ? struct ath_softc *sc = file->private_data;
> > + ? ? ? struct ath_hw *ah = sc->sc_ah;
> > + ? ? ? struct ar9300_base_eep_hdr *pBase = NULL;
> > + ? ? ? unsigned int len = 0, size = 1500;
> > + ? ? ? ssize_t retval = 0;
> > + ? ? ? char *buf;
> > +
> > + ? ? ? if (!AR_SREV_9300_20_OR_LATER(ah))
> > + ? ? ? ? ? ? ? return 0;
>
> This is really really cool stuff, but instead of doing this can we
> instead implement this as a callback design which would enable other
> hw revisions to be supported? If we do not then we need to make the
> code branch out on each type of card.
>
Yeah. Let us have common cb and ath9k & ath9k_htc can make use of it.
Thanks for your comments.

--
Rajkumar

2011-07-28 17:30:00

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 6/9] ath9k_hw: update PMU to improve ripple issue for AR9485

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index 6cfc9eb..c34bef1 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -3734,7 +3734,7 @@ static void ar9003_hw_internal_regulator_apply(struct ath_hw *ah)
}
} else {
reg_pmu_set = (5 << 1) | (7 << 4) |
- (1 << 8) | (2 << 14) |
+ (2 << 8) | (2 << 14) |
(6 << 17) | (1 << 20) |
(3 << 24) | (1 << 28);
}
--
1.7.6


2011-07-28 17:29:41

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 3/9] ath9k: Remove virtual wiphy specific frame type

This patch cleanups virtual wiphy specific frametype structure

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
drivers/net/wireless/ath/ath9k/ath9k.h | 3 ---
drivers/net/wireless/ath/ath9k/rc.h | 6 ------
drivers/net/wireless/ath/ath9k/xmit.c | 6 ++----
3 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 298a941..dcd97e2 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -216,7 +216,6 @@ struct ath_buf_state {
u8 bf_type;
u8 bfs_paprd;
unsigned long bfs_paprd_timestamp;
- enum ath9k_internal_frame_type bfs_ftype;
};

struct ath_buf {
@@ -272,8 +271,6 @@ struct ath_node {
struct ath_tx_control {
struct ath_txq *txq;
struct ath_node *an;
- int if_id;
- enum ath9k_internal_frame_type frame_type;
u8 paprd;
};

diff --git a/drivers/net/wireless/ath/ath9k/rc.h b/drivers/net/wireless/ath/ath9k/rc.h
index c3d8502..b7a4bcd 100644
--- a/drivers/net/wireless/ath/ath9k/rc.h
+++ b/drivers/net/wireless/ath/ath9k/rc.h
@@ -221,12 +221,6 @@ struct ath_rate_priv {
struct ath_rc_stats rcstats[RATE_TABLE_SIZE];
};

-enum ath9k_internal_frame_type {
- ATH9K_IFT_NOT_INTERNAL,
- ATH9K_IFT_PAUSE,
- ATH9K_IFT_UNPAUSE
-};
-
#ifdef CONFIG_ATH9K_RATE_CONTROL
int ath_rate_control_register(void);
void ath_rate_control_unregister(void);
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index f210e2b..70a512f 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1792,7 +1792,6 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct ath_buf *bf,
INIT_LIST_HEAD(&bf_head);
list_add_tail(&bf->list, &bf_head);

- bf->bf_state.bfs_ftype = txctl->frame_type;
bf->bf_state.bfs_paprd = txctl->paprd;

if (bf->bf_state.bfs_paprd)
@@ -1891,7 +1890,7 @@ int ath_tx_start(struct ieee80211_hw *hw, struct sk_buff *skb,
/*****************/

static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb,
- int tx_flags, int ftype, struct ath_txq *txq)
+ int tx_flags, struct ath_txq *txq)
{
struct ieee80211_hw *hw = sc->hw;
struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
@@ -1976,8 +1975,7 @@ static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
complete(&sc->paprd_complete);
} else {
ath_debug_stat_tx(sc, bf, ts, txq);
- ath_tx_complete(sc, skb, tx_flags,
- bf->bf_state.bfs_ftype, txq);
+ ath_tx_complete(sc, skb, tx_flags, txq);
}
/* At this point, skb (bf->bf_mpdu) is consumed...make sure we don't
* accidentally reference it later.
--
1.7.6


2011-07-28 17:31:24

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 7/9] ath9k_hw: Disable Walsh spatial spreading for 2 chains

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
.../net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
index 2339728..28b44b0 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
@@ -636,7 +636,7 @@ static const u32 ar9300_2p2_baseband_postamble[][5] = {
{0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27},
{0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012},
{0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
- {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0},
+ {0x0000a204, 0x000036c0, 0x000036c4, 0x000036c4, 0x000036c0},
{0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
{0x0000a22c, 0x01026a2f, 0x01026a2f, 0x01026a2f, 0x01026a2f},
{0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b},
--
1.7.6


2011-07-29 07:07:03

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH 6/9] ath9k_hw: update PMU to improve ripple issue for AR9485

On Thu, Jul 28, 2011 at 02:14:01PM -0700, Luis R. Rodriguez wrote:
> On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
> <[email protected]> wrote:
> > Signed-off-by: Rajkumar Manoharan <[email protected]>
>
> Is this a stable fix <etc, etc>, what effects are there to not apply
> this patch ?
>
The commit ebefce3d13f8b5a871337ff7c3821ee140c1ea8a missed to set proper
PMU value to address ripple issue for AR9485. Will v2 send patch with
Ccing to stable.

--
Rajkumar

2011-07-28 17:29:47

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 4/9] ath9k_hw: Fix incorrect Tx control power in AR9003 template

CTL power data incorrect in ctlPowerData_2G field of ar9300_eeprom.
Setting incorrect CTL power in calibration is causing lower tx power.
This issue was identified in HT40 mode on channel 6 & 11.

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index d109c25..6cfc9eb 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -307,7 +307,7 @@ static const struct ar9300_eeprom ar9300_default = {
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } },

- { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } },
+ { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },

@@ -884,7 +884,7 @@ static const struct ar9300_eeprom ar9300_x113 = {
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } },

- { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } },
+ { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },

@@ -2040,7 +2040,7 @@ static const struct ar9300_eeprom ar9300_x112 = {
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } },

- { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } },
+ { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
{ { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },

--
1.7.6


2011-07-28 21:13:10

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH 4/9] ath9k_hw: Fix incorrect Tx control power in AR9003 template

On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
<[email protected]> wrote:
> CTL power data incorrect in ctlPowerData_2G field of ar9300_eeprom.
> Setting incorrect CTL power in calibration is causing lower tx power.
> This issue was identified in HT40 mode on channel 6 & 11.
>
> Signed-off-by: Rajkumar Manoharan <[email protected]>

Is this a stable fix? If so can you please resend with a Cc:
[email protected] on the commit log message and explain why its a
stable fix.

Luis

2011-07-28 21:14:42

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH 7/9] ath9k_hw: Disable Walsh spatial spreading for 2 chains

On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
<[email protected]> wrote:
> Signed-off-by: Rajkumar Manoharan <[email protected]>

Same questions.

Luis

2011-07-28 21:14:22

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH 6/9] ath9k_hw: update PMU to improve ripple issue for AR9485

On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
<[email protected]> wrote:
> Signed-off-by: Rajkumar Manoharan <[email protected]>

Is this a stable fix <etc, etc>, what effects are there to not apply
this patch ?

Luis

2011-07-28 17:29:54

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 5/9] ath9k_hw: Optimize rx descriptor processing for AR9003

No need to process RxDone and ds_info status again in case
valid rx status is given.

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
drivers/net/wireless/ath/ath9k/ar9003_mac.c | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
index 8ff0b88..1aadc47 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -531,17 +531,18 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,

/* TODO: byte swap on big endian for ar9300_10 */

- if ((rxsp->status11 & AR_RxDone) == 0)
- return -EINPROGRESS;
+ if (!rxs) {
+ if ((rxsp->status11 & AR_RxDone) == 0)
+ return -EINPROGRESS;

- if (MS(rxsp->ds_info, AR_DescId) != 0x168c)
- return -EINVAL;
+ if (MS(rxsp->ds_info, AR_DescId) != 0x168c)
+ return -EINVAL;

- if ((rxsp->ds_info & (AR_TxRxDesc | AR_CtrlStat)) != 0)
- return -EINPROGRESS;
+ if ((rxsp->ds_info & (AR_TxRxDesc | AR_CtrlStat)) != 0)
+ return -EINPROGRESS;

- if (!rxs)
return 0;
+ }

rxs->rs_status = 0;
rxs->rs_flags = 0;
--
1.7.6


2011-07-29 06:53:56

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH 4/9] ath9k_hw: Fix incorrect Tx control power in AR9003 template

On Thu, Jul 28, 2011 at 02:12:49PM -0700, Luis R. Rodriguez wrote:
> On Thu, Jul 28, 2011 at 10:29 AM, Rajkumar Manoharan
> <[email protected]> wrote:
> > CTL power data incorrect in ctlPowerData_2G field of ar9300_eeprom.
> > Setting incorrect CTL power in calibration is causing lower tx power.
> > This issue was identified in HT40 mode on channel 6 & 11.
> >
> > Signed-off-by: Rajkumar Manoharan <[email protected]>
>
> Is this a stable fix? If so can you please resend with a Cc:
> [email protected] on the commit log message and explain why its a
> stable fix.
>
Yes. The issue is that tx power is shown as 3dBm while operating in channel 6
at HT40+ or channel 11 at HT40- due to CTL powers in the calibration is set to
zero. Will send v2 patch.

--
Rajkumar

2011-07-28 17:31:27

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 8/9] ath9k_hw: Update the radio parameters related to high_power

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
.../net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
index 28b44b0..275b53d 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
@@ -928,15 +928,15 @@ static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = {
{0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584},
{0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800},
{0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000},
- {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
- {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
- {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
- {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
- {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
- {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
- {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
- {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
- {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
+ {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
+ {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
+ {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
+ {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
+ {0x00016448, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
+ {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
+ {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
+ {0x00016848, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
+ {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
};

static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = {
--
1.7.6


2011-07-28 17:29:35

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH 2/9] ath9k: Dump modal eeprom header for AR9003

Debugfs file location:
<debugfs_mnt>/ieee80211/phy#/ath9k/modal_eeprom

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
drivers/net/wireless/ath/ath9k/debug.c | 96 ++++++++++++++++++++++++++++++++
1 files changed, 96 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index df71c72..b0a80d5 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1308,6 +1308,100 @@ static const struct file_operations fops_base_eeprom = {
.llseek = default_llseek,
};

+static u32 read_9003_modal_eeprom(char *buf, u32 len, u32 size,
+ struct ar9300_modal_eep_header *pModal)
+{
+#define PR_EEP(_s, _val) \
+ do { \
+ len += snprintf(buf + len, size - len, "%20s : %10d\n", \
+ _s, (_val)); \
+ } while (0)
+
+ PR_EEP("Chain0 Ant. Control", le16_to_cpu(pModal->antCtrlChain[0]));
+ PR_EEP("Chain1 Ant. Control", le16_to_cpu(pModal->antCtrlChain[1]));
+ PR_EEP("Chain2 Ant. Control", le16_to_cpu(pModal->antCtrlChain[1]));
+ PR_EEP("Ant. Common Control", le32_to_cpu(pModal->antCtrlCommon));
+ PR_EEP("Ant. Common Control2", le32_to_cpu(pModal->antCtrlCommon2));
+ PR_EEP("Ant. Gain", pModal->antennaGain);
+ PR_EEP("Switch Settle", pModal->switchSettling);
+ PR_EEP("Chain0 xatten1DB", pModal->xatten1DB[0]);
+ PR_EEP("Chain1 xatten1DB", pModal->xatten1DB[1]);
+ PR_EEP("Chain2 xatten1DB", pModal->xatten1DB[2]);
+ PR_EEP("Chain0 xatten1Margin", pModal->xatten1Margin[0]);
+ PR_EEP("Chain1 xatten1Margin", pModal->xatten1Margin[1]);
+ PR_EEP("Chain2 xatten1Margin", pModal->xatten1Margin[2]);
+ PR_EEP("Temp Slope", pModal->tempSlope);
+ PR_EEP("Volt Slope", pModal->voltSlope);
+ PR_EEP("spur Channels0", pModal->spurChans[0]);
+ PR_EEP("spur Channels1", pModal->spurChans[1]);
+ PR_EEP("spur Channels2", pModal->spurChans[2]);
+ PR_EEP("spur Channels3", pModal->spurChans[3]);
+ PR_EEP("spur Channels4", pModal->spurChans[4]);
+ PR_EEP("Chain0 NF Threshold", pModal->noiseFloorThreshCh[0]);
+ PR_EEP("Chain1 NF Threshold", pModal->noiseFloorThreshCh[1]);
+ PR_EEP("Chain2 NF Threshold", pModal->noiseFloorThreshCh[2]);
+ PR_EEP("xPA Bias Level", pModal->xpaBiasLvl);
+ PR_EEP("txFrameToDataStart", pModal->txFrameToDataStart);
+ PR_EEP("txFrameToPaOn", pModal->txFrameToPaOn);
+ PR_EEP("txFrameToXpaOn", pModal->txFrameToXpaOn);
+ PR_EEP("txClip", pModal->txClip);
+ PR_EEP("ADC Desired size", pModal->adcDesiredSize);
+ PR_EEP("Chain0 ob", pModal->ob[0]);
+ PR_EEP("Chain1 ob", pModal->ob[1]);
+ PR_EEP("Chain2 ob", pModal->ob[2]);
+
+ PR_EEP("Chain0 db_stage2", pModal->db_stage2[0]);
+ PR_EEP("Chain1 db_stage2", pModal->db_stage2[1]);
+ PR_EEP("Chain2 db_stage2", pModal->db_stage2[2]);
+ PR_EEP("Chain0 db_stage3", pModal->db_stage3[0]);
+ PR_EEP("Chain1 db_stage3", pModal->db_stage3[1]);
+ PR_EEP("Chain2 db_stage3", pModal->db_stage3[2]);
+ PR_EEP("Chain0 db_stage4", pModal->db_stage4[0]);
+ PR_EEP("Chain1 db_stage4", pModal->db_stage4[1]);
+ PR_EEP("Chain2 db_stage4", pModal->db_stage4[2]);
+ if (len > size)
+ len = size;
+
+ return len;
+
+#undef PR_EEP
+}
+
+static ssize_t read_file_modal_eeprom(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct ath_softc *sc = file->private_data;
+ struct ath_hw *ah = sc->sc_ah;
+ struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
+ u32 len = 0, size = 6000;
+ char *buf;
+ size_t retval;
+
+ buf = kzalloc(size, GFP_KERNEL);
+ if (buf == NULL)
+ return -ENOMEM;
+
+ if (!AR_SREV_9300_20_OR_LATER(ah))
+ return 0;
+
+ len += snprintf(buf + len, size - len, "%20s :\n", "2GHz modal Header");
+ len += read_9003_modal_eeprom(buf, len, size, &eep->modalHeader2G);
+ len += snprintf(buf + len, size - len, "%20s :\n", "5GHz modal Header");
+ len += read_9003_modal_eeprom(buf, len, size, &eep->modalHeader5G);
+
+ retval = simple_read_from_buffer(user_buf, count, ppos, buf, len);
+ kfree(buf);
+
+ return retval;
+}
+
+static const struct file_operations fops_modal_eeprom = {
+ .read = read_file_modal_eeprom,
+ .open = ath9k_debugfs_open,
+ .owner = THIS_MODULE,
+ .llseek = default_llseek,
+};
+
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -1353,6 +1447,8 @@ int ath9k_init_debug(struct ath_hw *ah)
&fops_regdump);
debugfs_create_file("base_eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
&fops_base_eeprom);
+ debugfs_create_file("modal_eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
+ &fops_modal_eeprom);

debugfs_create_u32("gpio_mask", S_IRUSR | S_IWUSR,
sc->debug.debugfs_phy, &sc->sc_ah->gpio_mask);
--
1.7.6