X-Git-Url: https://git.archive.openwrt.org/?p=openwrt.git;a=blobdiff_plain;f=package%2Fiwinfo%2Fsrc%2Fiwinfo_utils.c;h=164e51f847ad72c95f2b6348d2e2dd7872186ed1;hp=514f34bf9bf04bab3ff7844dfcdcfdeae5720549;hb=1110c121f9730b89ced2f9313f5f54ab84a3cf42;hpb=30ea4fa0fbe4e3692114e8b742256751f6bc3fff 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);