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

SVN-Revision: 30663
This commit is contained in:
Jo-Philipp Wich 2012-02-20 21:17:59 +00:00
parent c2590fe930
commit 39902886f0
2 changed files with 13 additions and 2 deletions

View file

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

View file

@ -165,7 +165,7 @@ int iwinfo_hardware_id_from_mtd(struct iwinfo_hardware_id *id)
while (fgets(buf, sizeof(buf), mtd) > 0) while (fgets(buf, sizeof(buf), mtd) > 0)
{ {
if (fscanf(mtd, "mtd%d: %*x %x %127s", &off, &len, buf) < 3 || if (fscanf(mtd, "mtd%d: %*x %x %127s", &off, &len, buf) < 3 ||
strcmp(buf, "\"boardconfig\"")) strcmp(buf, "\"boardconfig\"") || strcmp(buf, "\"EEPROM\""))
{ {
off = -1; off = -1;
continue; 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) for (off = len / 2 - 0x800; off >= 0; off -= 0x800)
{ {
/* AR531X board data magic */
if ((bc[off] == 0x3533) && (bc[off + 1] == 0x3131)) if ((bc[off] == 0x3533) && (bc[off + 1] == 0x3131))
{ {
id->vendor_id = bc[off + 0x7d]; 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]; id->subsystem_device_id = bc[off + 0x83];
break; 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); munmap(bc, len);