It is important to use the right Boot from Host sequence for each type of Atheros device. This means that you should query the device using a VS_SW_VER message beforehand to determine or confirm the device type. Although this should be a simple operation, there have been several changes that complicate matters.
The INT6300™ Bootloader incorrectly identifies the chipset as an INT6000™ chipset in the MDEVICEID field of the VS_SW_VER message.
The AR7400™ Bootloader incorrectly identifies the chipset as an INT6400™ chipset in the MDEVICEID field of the VS_SW_VER message.
The Bootloader, for INT6400™ chipsets and later, returns two additional field, IDENT and STEP_NUMBER in the VS_SW_VER confirmation message. These fields, the hardware identifier and step number, are correct but are not returned in earlier chipsets.
The table below illustrates what is reported by various firmware, in the DEVICEID field of the VS_SW_VER message, on each type of hardware platform.
Table 4.2. Legacy Device Identification
| Chipset | DEVICEID/IDENT (Bootloader) | MVERSION (Bootloader) | DEVICEID/IDENT (Firmware) | MVERSION (Firmware) |
|---|---|---|---|---|
| INT6000 | 0x01 / 0x00000042 | BootLoader | 0x01 / na | INT6000-MAC-0-0-3213-1206-20071224-FINAL |
| INT6300 | 0x02 / 0x00006300 | BootLoader | 0x02 / na | INT6300-MAC-0-0-4203-00-4089-20091105-FINAL |
| INT6400 | 0x03 / 0x00006400 | BootLoader | 0x03 / na | INT6400-MAC-4-3-4304-01-4397-20100924-FINAL |
| INT7400 | 0x03 / 0x00007400 | BootLoader | 0x04 / na | INT7400-MAC-5-2-5213-01-1027-20110428-FINAL |
| INT7450 | 0x03 / 0x0F001D1A | BootLoader | 0x20 / 0x00001D1A | QCA7450-MAC-5-2-5213-01-1027-20110428-FINAL |
| INT7451 | 0x03 / 0x00007400 | BootLoader | 0x20 / 0x0E001D1A | QCA7451-MAC-5-2-5213-01-1027-20110428-FINAL |
| AR6405 | 0x03 / 0x00006400 | BootLoader | 0x05 / na | INT6405-MAC-4-3-4304-01-4397-20100924-FINAL |
| AR7420 | 0x05 / 0x001CFCFC | BootLoader | 0x20 / 0x001CFCFC | MAC-QCA7420-2.5.14.2259-23-20110621-FINAL |
| QCA6410 | 0x05 / 0x001B58EC | BootLoader | 0x21 / 0x001B58EC | MAC-QCA6410-2.5.14.2259-23-20110621-FINAL |
| QCA6411 | 0x05 / 0x001B58BC | BootLoader | 0x21 / 0x001B58BC | MAC-QCA6411-2.5.14.2259-23-20110621-FINAL |
| QCA7000 | 0x05 / 0x001B589C | BootLoader | 0x22 / 0x001B589C | MAC-QCA7000-1.4.13.3259-43-20110621-FINAL |
To properly detect the correct chipset perform the following steps.
Send a VS_SW_VER request message from the local host to the local device using the Atheros Local Management Address.
Read the VS_SW_VER confirm message returned to the host by the device.
Extract and save the MDEVICEID field (a small integer) and the MVERSION field (a string).
If the MVERSION string is “SoftLoader” then the MDEVICEID field is valid.
If the MVERSION string is not “BootLoader” then the MDEVICEID field is valid unless it is 0x07. In that case, set the stored DEVICEID to 0x04 to indicate an AR7400™. Do not inspect the IDENT field because it does not exist in the firmware version of the VS_SW_VER message on any platform.
If the MDEVICEID field is 1, indicating an INT6000™, then the chipset is actually an INT6300™. Set the stored MDEVICEID to 2, indicating an INT6300™. Do not inspect the IDENT field because it does not exist in the BootLoader version of the VS_SW_VER message for either of these two chipsets.
If the MDEVICEID field is 3, indicating an INT6400™, then the chipset could be either an INT6300™ or an AR7400™. Inspect the IDENT field.
If the IDENT field is 0x6400, indicating an INT6400™, then the stored MDEVICEID is valid.
If the IDENT field is 0x7400, indicating an AR7400™, then set the stored MDEVICEID to 4, indicating an AR7400™.
Having performed the previous conversions, the expression (1 << (DEVICEID - 1)) now indicates the proper IGNORE bit found in each NVM file header. Unfortunately, this only works for DeviceID values from 0x01 through 0x06. After that, the device identification scheme changes.