|
@@ -5431,45 +5431,10 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
|
|
|
|
|
|
static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
|
|
|
{
|
|
|
- u32 reg;
|
|
|
u16 value;
|
|
|
u16 eeprom;
|
|
|
- u32 rt;
|
|
|
- u32 rev;
|
|
|
u16 rf;
|
|
|
|
|
|
- if (rt2x00_rt(rt2x00dev, RT3290))
|
|
|
- rt2800_register_read(rt2x00dev, MAC_CSR0_3290, ®);
|
|
|
- else
|
|
|
- rt2800_register_read(rt2x00dev, MAC_CSR0, ®);
|
|
|
-
|
|
|
- rt = rt2x00_get_field32(reg, MAC_CSR0_CHIPSET);
|
|
|
- rev = rt2x00_get_field32(reg, MAC_CSR0_REVISION);
|
|
|
-
|
|
|
- switch (rt) {
|
|
|
- case RT2860:
|
|
|
- case RT2872:
|
|
|
- case RT2883:
|
|
|
- case RT3070:
|
|
|
- case RT3071:
|
|
|
- case RT3090:
|
|
|
- case RT3290:
|
|
|
- case RT3352:
|
|
|
- case RT3390:
|
|
|
- case RT3572:
|
|
|
- case RT5390:
|
|
|
- case RT5392:
|
|
|
- case RT5592:
|
|
|
- break;
|
|
|
- default:
|
|
|
- ERROR(rt2x00dev,
|
|
|
- "Invalid RT chipset 0x%04x, rev %04x detected.\n",
|
|
|
- rt, rev);
|
|
|
- return -ENODEV;
|
|
|
- }
|
|
|
-
|
|
|
- rt2x00_set_rt(rt2x00dev, rt, rev);
|
|
|
-
|
|
|
/*
|
|
|
* Read EEPROM word for configuration.
|
|
|
*/
|
|
@@ -6067,11 +6032,56 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev)
|
|
|
+{
|
|
|
+ u32 reg;
|
|
|
+ u32 rt;
|
|
|
+ u32 rev;
|
|
|
+
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3290))
|
|
|
+ rt2800_register_read(rt2x00dev, MAC_CSR0_3290, ®);
|
|
|
+ else
|
|
|
+ rt2800_register_read(rt2x00dev, MAC_CSR0, ®);
|
|
|
+
|
|
|
+ rt = rt2x00_get_field32(reg, MAC_CSR0_CHIPSET);
|
|
|
+ rev = rt2x00_get_field32(reg, MAC_CSR0_REVISION);
|
|
|
+
|
|
|
+ switch (rt) {
|
|
|
+ case RT2860:
|
|
|
+ case RT2872:
|
|
|
+ case RT2883:
|
|
|
+ case RT3070:
|
|
|
+ case RT3071:
|
|
|
+ case RT3090:
|
|
|
+ case RT3290:
|
|
|
+ case RT3352:
|
|
|
+ case RT3390:
|
|
|
+ case RT3572:
|
|
|
+ case RT5390:
|
|
|
+ case RT5392:
|
|
|
+ case RT5592:
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ ERROR(rt2x00dev,
|
|
|
+ "Invalid RT chipset 0x%04x, rev %04x detected.\n",
|
|
|
+ rt, rev);
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+ rt2x00_set_rt(rt2x00dev, rt, rev);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
|
|
|
{
|
|
|
int retval;
|
|
|
u32 reg;
|
|
|
|
|
|
+ retval = rt2800_probe_rt(rt2x00dev);
|
|
|
+ if (retval)
|
|
|
+ return retval;
|
|
|
+
|
|
|
/*
|
|
|
* Allocate eeprom data.
|
|
|
*/
|