|
@@ -1404,7 +1404,7 @@ static int rt2400pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
|
|
|
* RF value list for RF2420 & RF2421
|
|
|
* Supports: 2.4 GHz
|
|
|
*/
|
|
|
-static const struct rf_channel rf_vals_bg[] = {
|
|
|
+static const struct rf_channel rf_vals_b[] = {
|
|
|
{ 1, 0x00022058, 0x000c1fda, 0x00000101, 0 },
|
|
|
{ 2, 0x00022058, 0x000c1fee, 0x00000101, 0 },
|
|
|
{ 3, 0x00022058, 0x000c2002, 0x00000101, 0 },
|
|
@@ -1421,10 +1421,11 @@ static const struct rf_channel rf_vals_bg[] = {
|
|
|
{ 14, 0x00022058, 0x000c20fa, 0x00000101, 0 },
|
|
|
};
|
|
|
|
|
|
-static void rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
+static int rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
{
|
|
|
struct hw_mode_spec *spec = &rt2x00dev->spec;
|
|
|
- u8 *txpower;
|
|
|
+ struct channel_info *info;
|
|
|
+ char *tx_power;
|
|
|
unsigned int i;
|
|
|
|
|
|
/*
|
|
@@ -1439,24 +1440,29 @@ static void rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
rt2x00_eeprom_addr(rt2x00dev,
|
|
|
EEPROM_MAC_ADDR_0));
|
|
|
|
|
|
- /*
|
|
|
- * Convert tx_power array in eeprom.
|
|
|
- */
|
|
|
- txpower = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_START);
|
|
|
- for (i = 0; i < 14; i++)
|
|
|
- txpower[i] = TXPOWER_FROM_DEV(txpower[i]);
|
|
|
-
|
|
|
/*
|
|
|
* Initialize hw_mode information.
|
|
|
*/
|
|
|
spec->supported_bands = SUPPORT_BAND_2GHZ;
|
|
|
spec->supported_rates = SUPPORT_RATE_CCK;
|
|
|
- spec->tx_power_a = NULL;
|
|
|
- spec->tx_power_bg = txpower;
|
|
|
- spec->tx_power_default = DEFAULT_TXPOWER;
|
|
|
|
|
|
- spec->num_channels = ARRAY_SIZE(rf_vals_bg);
|
|
|
- spec->channels = rf_vals_bg;
|
|
|
+ spec->num_channels = ARRAY_SIZE(rf_vals_b);
|
|
|
+ spec->channels = rf_vals_b;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Create channel information array
|
|
|
+ */
|
|
|
+ info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
|
|
|
+ if (!info)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+ spec->channels_info = info;
|
|
|
+
|
|
|
+ tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_START);
|
|
|
+ for (i = 0; i < 14; i++)
|
|
|
+ info[i].tx_power1 = TXPOWER_FROM_DEV(tx_power[i]);
|
|
|
+
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static int rt2400pci_probe_hw(struct rt2x00_dev *rt2x00dev)
|
|
@@ -1477,7 +1483,9 @@ static int rt2400pci_probe_hw(struct rt2x00_dev *rt2x00dev)
|
|
|
/*
|
|
|
* Initialize hw specifications.
|
|
|
*/
|
|
|
- rt2400pci_probe_hw_mode(rt2x00dev);
|
|
|
+ retval = rt2400pci_probe_hw_mode(rt2x00dev);
|
|
|
+ if (retval)
|
|
|
+ return retval;
|
|
|
|
|
|
/*
|
|
|
* This device requires the atim queue and DMA-mapped skbs.
|