Commit 3a1c0128 authored by Gertjan van Wingerde's avatar Gertjan van Wingerde Committed by John W. Linville

rt2x00: Use struct rt2x00_dev driver data in rt2800{pci,usb}.

Start using the struct rt2x00_dev driver data in rt2800 for the calibration
data.
Signed-off-by: default avatarGertjan van Wingerde <gwingerde@gmail.com>
Acked-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 1ebbc485
...@@ -2438,4 +2438,12 @@ struct mac_iveiv_entry { ...@@ -2438,4 +2438,12 @@ struct mac_iveiv_entry {
*/ */
#define EIRP_MAX_TX_POWER_LIMIT 0x50 #define EIRP_MAX_TX_POWER_LIMIT 0x50
/*
* RT2800 driver data structure
*/
struct rt2800_drv_data {
u8 calibration_bw20;
u8 calibration_bw40;
};
#endif /* RT2800_H */ #endif /* RT2800_H */
...@@ -1645,6 +1645,7 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev, ...@@ -1645,6 +1645,7 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
struct rf_channel *rf, struct rf_channel *rf,
struct channel_info *info) struct channel_info *info)
{ {
struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
u8 rfcsr, calib_tx, calib_rx; u8 rfcsr, calib_tx, calib_rx;
rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1); rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1);
...@@ -1714,8 +1715,13 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev, ...@@ -1714,8 +1715,13 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
calib_tx = conf_is_ht40(conf) ? 0x68 : 0x4f; calib_tx = conf_is_ht40(conf) ? 0x68 : 0x4f;
calib_rx = conf_is_ht40(conf) ? 0x6f : 0x4f; calib_rx = conf_is_ht40(conf) ? 0x6f : 0x4f;
} else { } else {
calib_tx = rt2x00dev->calibration[conf_is_ht40(conf)]; if (conf_is_ht40(conf)) {
calib_rx = rt2x00dev->calibration[conf_is_ht40(conf)]; calib_tx = drv_data->calibration_bw40;
calib_rx = drv_data->calibration_bw40;
} else {
calib_tx = drv_data->calibration_bw20;
calib_rx = drv_data->calibration_bw20;
}
} }
rt2800_rfcsr_read(rt2x00dev, 24, &rfcsr); rt2800_rfcsr_read(rt2x00dev, 24, &rfcsr);
...@@ -1743,6 +1749,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev, ...@@ -1743,6 +1749,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
struct rf_channel *rf, struct rf_channel *rf,
struct channel_info *info) struct channel_info *info)
{ {
struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
u8 rfcsr; u8 rfcsr;
u32 reg; u32 reg;
...@@ -1836,10 +1843,13 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev, ...@@ -1836,10 +1843,13 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset); rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
rt2800_rfcsr_write(rt2x00dev, 24, if (conf_is_ht40(conf)) {
rt2x00dev->calibration[conf_is_ht40(conf)]); rt2800_rfcsr_write(rt2x00dev, 24, drv_data->calibration_bw40);
rt2800_rfcsr_write(rt2x00dev, 31, rt2800_rfcsr_write(rt2x00dev, 31, drv_data->calibration_bw40);
rt2x00dev->calibration[conf_is_ht40(conf)]); } else {
rt2800_rfcsr_write(rt2x00dev, 24, drv_data->calibration_bw20);
rt2800_rfcsr_write(rt2x00dev, 31, drv_data->calibration_bw20);
}
if (rf->channel <= 14) { if (rf->channel <= 14) {
rt2800_rfcsr_write(rt2x00dev, 7, 0xd8); rt2800_rfcsr_write(rt2x00dev, 7, 0xd8);
...@@ -3310,6 +3320,7 @@ static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev, ...@@ -3310,6 +3320,7 @@ static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev,
static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
{ {
struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
u8 rfcsr; u8 rfcsr;
u8 bbp; u8 bbp;
u32 reg; u32 reg;
...@@ -3598,17 +3609,17 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) ...@@ -3598,17 +3609,17 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
* Set RX Filter calibration for 20MHz and 40MHz * Set RX Filter calibration for 20MHz and 40MHz
*/ */
if (rt2x00_rt(rt2x00dev, RT3070)) { if (rt2x00_rt(rt2x00dev, RT3070)) {
rt2x00dev->calibration[0] = drv_data->calibration_bw20 =
rt2800_init_rx_filter(rt2x00dev, false, 0x07, 0x16); rt2800_init_rx_filter(rt2x00dev, false, 0x07, 0x16);
rt2x00dev->calibration[1] = drv_data->calibration_bw40 =
rt2800_init_rx_filter(rt2x00dev, true, 0x27, 0x19); rt2800_init_rx_filter(rt2x00dev, true, 0x27, 0x19);
} else if (rt2x00_rt(rt2x00dev, RT3071) || } else if (rt2x00_rt(rt2x00dev, RT3071) ||
rt2x00_rt(rt2x00dev, RT3090) || rt2x00_rt(rt2x00dev, RT3090) ||
rt2x00_rt(rt2x00dev, RT3390) || rt2x00_rt(rt2x00dev, RT3390) ||
rt2x00_rt(rt2x00dev, RT3572)) { rt2x00_rt(rt2x00dev, RT3572)) {
rt2x00dev->calibration[0] = drv_data->calibration_bw20 =
rt2800_init_rx_filter(rt2x00dev, false, 0x07, 0x13); rt2800_init_rx_filter(rt2x00dev, false, 0x07, 0x13);
rt2x00dev->calibration[1] = drv_data->calibration_bw40 =
rt2800_init_rx_filter(rt2x00dev, true, 0x27, 0x15); rt2800_init_rx_filter(rt2x00dev, true, 0x27, 0x15);
} }
......
...@@ -1093,6 +1093,7 @@ static const struct data_queue_desc rt2800pci_queue_bcn = { ...@@ -1093,6 +1093,7 @@ static const struct data_queue_desc rt2800pci_queue_bcn = {
static const struct rt2x00_ops rt2800pci_ops = { static const struct rt2x00_ops rt2800pci_ops = {
.name = KBUILD_MODNAME, .name = KBUILD_MODNAME,
.drv_data_size = sizeof(struct rt2800_drv_data),
.max_sta_intf = 1, .max_sta_intf = 1,
.max_ap_intf = 8, .max_ap_intf = 8,
.eeprom_size = EEPROM_SIZE, .eeprom_size = EEPROM_SIZE,
......
...@@ -827,6 +827,7 @@ static const struct data_queue_desc rt2800usb_queue_bcn = { ...@@ -827,6 +827,7 @@ static const struct data_queue_desc rt2800usb_queue_bcn = {
static const struct rt2x00_ops rt2800usb_ops = { static const struct rt2x00_ops rt2800usb_ops = {
.name = KBUILD_MODNAME, .name = KBUILD_MODNAME,
.drv_data_size = sizeof(struct rt2800_drv_data),
.max_sta_intf = 1, .max_sta_intf = 1,
.max_ap_intf = 8, .max_ap_intf = 8,
.eeprom_size = EEPROM_SIZE, .eeprom_size = EEPROM_SIZE,
......
...@@ -896,13 +896,6 @@ struct rt2x00_dev { ...@@ -896,13 +896,6 @@ struct rt2x00_dev {
*/ */
u8 freq_offset; u8 freq_offset;
/*
* Calibration information (for rt2800usb & rt2800pci).
* [0] -> BW20
* [1] -> BW40
*/
u8 calibration[2];
/* /*
* Association id. * Association id.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment