This takes the device_id and subsystem_id from the EEPROM, I'll add
the info for other Rt3xxx chips in the next days.

Signed-off-by: Daniel Golle <[email protected]>

diff --git a/package/iwinfo/src/iwinfo_lib.c b/package/iwinfo/src/iwinfo_lib.c
index b2fc6aa..5ca0a45 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 514f34b..c430652 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);
-- 
1.7.11.4

Attachment: pgpuImLDwAwBH.pgp
Description: PGP signature

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to