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.