diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2012-08-15 16:25:38 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2012-08-15 16:25:38 +0000 |
commit | 82f298b9f1cc2d6f0cde9ece8de42389a0bfb38f (patch) | |
tree | 4f1a6082ac009eae99e3023ddf32ad57e6ca8f3c /package/iwinfo/src | |
parent | 4769dd7237a2fd29e928bee2d3cd4d62014f05d1 (diff) | |
download | upstream-82f298b9f1cc2d6f0cde9ece8de42389a0bfb38f.tar.gz upstream-82f298b9f1cc2d6f0cde9ece8de42389a0bfb38f.tar.bz2 upstream-82f298b9f1cc2d6f0cde9ece8de42389a0bfb38f.zip |
iwinfo: add hw info support for Rt3xxx SoCs
This takes the device_id and subsystem_id from the EEPROM, I'll add
the info for other Rt3xxx chips in the next days.
[jow: minor whitespace changes]
Signed-off-by: Daniel Golle <dgolle@allnet.de>
SVN-Revision: 33199
Diffstat (limited to 'package/iwinfo/src')
-rw-r--r-- | package/iwinfo/src/iwinfo_lib.c | 2 | ||||
-rw-r--r-- | package/iwinfo/src/iwinfo_utils.c | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/package/iwinfo/src/iwinfo_lib.c b/package/iwinfo/src/iwinfo_lib.c index b2fc6aa3b7..5ca0a45107 100644 --- a/package/iwinfo/src/iwinfo_lib.c +++ b/package/iwinfo/src/iwinfo_lib.c @@ -314,6 +314,7 @@ const struct iwinfo_iso3166_label IWINFO_ISO3166_NAMES[] = { const char VENDOR_UBNT[] = "Ubiquiti"; const char VENDOR_ATH[] = "Atheros"; +const char VENDOR_RALINK[] = "RaLink"; const struct iwinfo_hardware_entry IWINFO_HARDWARE_ENTRIES[] = { /* { vendor, model, vendorid, deviceid, subsys vendorid, subsys deviceid, poweroff, freqoff } */ @@ -368,6 +369,7 @@ const struct iwinfo_hardware_entry IWINFO_HARDWARE_ENTRIES[] = { { VENDOR_ATH, "AR9220", 0x168c, 0x0029, 0x168c, 0xa094, 0, 0 }, { VENDOR_ATH, "AR9223", 0x168c, 0x0029, 0x168c, 0xa095, 0, 0 }, { VENDOR_ATH, "AR9285", 0x168c, 0x002b, 0x168c, 0xa091, 0, 0 }, + { VENDOR_RALINK, "Rt3352", 0x1814, 0x3352, 0x1814, 0x000c, 0, 0 }, #endif { NULL } }; diff --git a/package/iwinfo/src/iwinfo_utils.c b/package/iwinfo/src/iwinfo_utils.c index 514f34bf9b..164e51f847 100644 --- a/package/iwinfo/src/iwinfo_utils.c +++ b/package/iwinfo/src/iwinfo_utils.c @@ -165,7 +165,8 @@ int iwinfo_hardware_id_from_mtd(struct iwinfo_hardware_id *id) while (fgets(buf, sizeof(buf), mtd) > 0) { if (fscanf(mtd, "mtd%d: %*x %x %127s", &off, &len, buf) < 3 || - (strcmp(buf, "\"boardconfig\"") && strcmp(buf, "\"EEPROM\""))) + (strcmp(buf, "\"boardconfig\"") && strcmp(buf, "\"EEPROM\"") && + strcmp(buf, "\"factory\""))) { off = -1; continue; @@ -212,6 +213,26 @@ int iwinfo_hardware_id_from_mtd(struct iwinfo_hardware_id *id) id->subsystem_device_id = bc[off + 0x14]; break; } + + /* Rt3xxx SoC */ + else if ((bc[off] == 0x3352) || (bc[off] == 0x5233) || + (bc[off] == 0x3350) || (bc[off] == 0x5033) || + (bc[off] == 0x3050) || (bc[off] == 0x5030) || + (bc[off] == 0x3052) || (bc[off] == 0x5230)) + { + /* vendor: RaLink */ + id->vendor_id = 0x1814; + id->subsystem_vendor_id = 0x1814; + + /* device */ + if (bc[off] & 0xf0 == 0x30) + id->device_id = (bc[off] >> 8) | (bc[off] & 0x00ff) << 8; + else + id->device_id = bc[off]; + + /* subsystem from EEPROM_NIC_CONF0_RF_TYPE */ + id->subsystem_device_id = (bc[off + 0x1a] & 0x0f00) >> 8; + } } munmap(bc, len); |