Browse Source

iwinfo: recognize AR5416 EEPROMs as seen on the Ubiquiti Picostation M2

SVN-Revision: 30663
Jo-Philipp Wich 14 years ago
parent
commit
39902886f0
2 changed files with 13 additions and 2 deletions
  1. 1 1
      package/iwinfo/Makefile
  2. 12 1
      package/iwinfo/src/iwinfo_utils.c

+ 1 - 1
package/iwinfo/Makefile

@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libiwinfo
-PKG_RELEASE:=27
+PKG_RELEASE:=28
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 PKG_CONFIG_DEPENDS := \

+ 12 - 1
package/iwinfo/src/iwinfo_utils.c

@@ -165,7 +165,7 @@ 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, "\"boardconfig\"") || strcmp(buf, "\"EEPROM\""))
 		{
 			off = -1;
 			continue;
@@ -193,6 +193,7 @@ int iwinfo_hardware_id_from_mtd(struct iwinfo_hardware_id *id)
 
 		for (off = len / 2 - 0x800; off >= 0; off -= 0x800)
 		{
+			/* AR531X board data magic */
 			if ((bc[off] == 0x3533) && (bc[off + 1] == 0x3131))
 			{
 				id->vendor_id = bc[off + 0x7d];
@@ -201,6 +202,16 @@ int iwinfo_hardware_id_from_mtd(struct iwinfo_hardware_id *id)
 				id->subsystem_device_id = bc[off + 0x83];
 				break;
 			}
+
+			/* AR5416 EEPROM magic */
+			else if ((bc[off] == 0xA55A) || (bc[off] == 0x5AA5))
+			{
+				id->vendor_id = bc[off + 0x0D];
+				id->device_id = bc[off + 0x0E];
+				id->subsystem_vendor_id = bc[off + 0x13];
+				id->subsystem_device_id = bc[off + 0x14];
+				break;
+			}
 		}
 
 		munmap(bc, len);