|
@@ -149,18 +149,43 @@ static const struct ath6kl_hw hw_list[] = {
|
|
.board_ext_data_addr = 0x437000,
|
|
.board_ext_data_addr = 0x437000,
|
|
.reserved_ram_size = 7168,
|
|
.reserved_ram_size = 7168,
|
|
.board_addr = 0x436400,
|
|
.board_addr = 0x436400,
|
|
- .refclk_hz = 40000000,
|
|
|
|
|
|
+ .refclk_hz = 0,
|
|
.uarttx_pin = 11,
|
|
.uarttx_pin = 11,
|
|
.flags = 0,
|
|
.flags = 0,
|
|
|
|
|
|
.fw = {
|
|
.fw = {
|
|
.dir = AR6004_HW_1_3_FW_DIR,
|
|
.dir = AR6004_HW_1_3_FW_DIR,
|
|
.fw = AR6004_HW_1_3_FIRMWARE_FILE,
|
|
.fw = AR6004_HW_1_3_FIRMWARE_FILE,
|
|
|
|
+ .tcmd = AR6004_HW_1_3_TCMD_FIRMWARE_FILE,
|
|
|
|
+ .utf = AR6004_HW_1_3_UTF_FIRMWARE_FILE,
|
|
|
|
+ .testscript = AR6004_HW_1_3_TESTSCRIPT_FILE,
|
|
},
|
|
},
|
|
|
|
|
|
.fw_board = AR6004_HW_1_3_BOARD_DATA_FILE,
|
|
.fw_board = AR6004_HW_1_3_BOARD_DATA_FILE,
|
|
.fw_default_board = AR6004_HW_1_3_DEFAULT_BOARD_DATA_FILE,
|
|
.fw_default_board = AR6004_HW_1_3_DEFAULT_BOARD_DATA_FILE,
|
|
},
|
|
},
|
|
|
|
+ {
|
|
|
|
+ .id = AR6004_HW_3_0_VERSION,
|
|
|
|
+ .name = "ar6004 hw 3.0",
|
|
|
|
+ .dataset_patch_addr = 0,
|
|
|
|
+ .app_load_addr = 0x1234,
|
|
|
|
+ .board_ext_data_addr = 0,
|
|
|
|
+ .reserved_ram_size = 7168,
|
|
|
|
+ .board_addr = 0x436400,
|
|
|
|
+ .testscript_addr = 0,
|
|
|
|
+ .flags = 0,
|
|
|
|
+
|
|
|
|
+ .fw = {
|
|
|
|
+ .dir = AR6004_HW_3_0_FW_DIR,
|
|
|
|
+ .fw = AR6004_HW_3_0_FIRMWARE_FILE,
|
|
|
|
+ .tcmd = AR6004_HW_3_0_TCMD_FIRMWARE_FILE,
|
|
|
|
+ .utf = AR6004_HW_3_0_UTF_FIRMWARE_FILE,
|
|
|
|
+ .testscript = AR6004_HW_3_0_TESTSCRIPT_FILE,
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ .fw_board = AR6004_HW_3_0_BOARD_DATA_FILE,
|
|
|
|
+ .fw_default_board = AR6004_HW_3_0_DEFAULT_BOARD_DATA_FILE,
|
|
|
|
+ },
|
|
};
|
|
};
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -596,7 +621,9 @@ int ath6kl_configure_target(struct ath6kl *ar)
|
|
* but possible in theory.
|
|
* but possible in theory.
|
|
*/
|
|
*/
|
|
|
|
|
|
- if (ar->target_type == TARGET_TYPE_AR6003) {
|
|
|
|
|
|
+ if ((ar->target_type == TARGET_TYPE_AR6003) ||
|
|
|
|
+ (ar->version.target_ver == AR6004_HW_1_3_VERSION) ||
|
|
|
|
+ (ar->version.target_ver == AR6004_HW_3_0_VERSION)) {
|
|
param = ar->hw.board_ext_data_addr;
|
|
param = ar->hw.board_ext_data_addr;
|
|
ram_reserved_size = ar->hw.reserved_ram_size;
|
|
ram_reserved_size = ar->hw.reserved_ram_size;
|
|
|
|
|
|
@@ -1110,6 +1137,12 @@ int ath6kl_init_fetch_firmwares(struct ath6kl *ar)
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
|
|
+ ret = ath6kl_fetch_fw_apin(ar, ATH6KL_FW_API5_FILE);
|
|
|
|
+ if (ret == 0) {
|
|
|
|
+ ar->fw_api = 5;
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
|
|
+
|
|
ret = ath6kl_fetch_fw_apin(ar, ATH6KL_FW_API4_FILE);
|
|
ret = ath6kl_fetch_fw_apin(ar, ATH6KL_FW_API4_FILE);
|
|
if (ret == 0) {
|
|
if (ret == 0) {
|
|
ar->fw_api = 4;
|
|
ar->fw_api = 4;
|
|
@@ -1236,7 +1269,13 @@ static int ath6kl_upload_board_file(struct ath6kl *ar)
|
|
}
|
|
}
|
|
|
|
|
|
/* record the fact that Board Data IS initialized */
|
|
/* record the fact that Board Data IS initialized */
|
|
- ath6kl_bmi_write_hi32(ar, hi_board_data_initialized, 1);
|
|
|
|
|
|
+ if ((ar->version.target_ver == AR6004_HW_1_3_VERSION) ||
|
|
|
|
+ (ar->version.target_ver == AR6004_HW_3_0_VERSION))
|
|
|
|
+ param = board_data_size;
|
|
|
|
+ else
|
|
|
|
+ param = 1;
|
|
|
|
+
|
|
|
|
+ ath6kl_bmi_write_hi32(ar, hi_board_data_initialized, param);
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -1367,7 +1406,11 @@ static int ath6kl_upload_testscript(struct ath6kl *ar)
|
|
}
|
|
}
|
|
|
|
|
|
ath6kl_bmi_write_hi32(ar, hi_ota_testscript, address);
|
|
ath6kl_bmi_write_hi32(ar, hi_ota_testscript, address);
|
|
- ath6kl_bmi_write_hi32(ar, hi_end_ram_reserve_sz, 4096);
|
|
|
|
|
|
+
|
|
|
|
+ if ((ar->version.target_ver != AR6004_HW_1_3_VERSION) &&
|
|
|
|
+ (ar->version.target_ver != AR6004_HW_3_0_VERSION))
|
|
|
|
+ ath6kl_bmi_write_hi32(ar, hi_end_ram_reserve_sz, 4096);
|
|
|
|
+
|
|
ath6kl_bmi_write_hi32(ar, hi_test_apps_related, 1);
|
|
ath6kl_bmi_write_hi32(ar, hi_test_apps_related, 1);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -1577,6 +1620,7 @@ static const struct fw_capa_str_map {
|
|
{ ATH6KL_FW_CAPABILITY_AP_INACTIVITY_MINS, "ap-inactivity-mins" },
|
|
{ ATH6KL_FW_CAPABILITY_AP_INACTIVITY_MINS, "ap-inactivity-mins" },
|
|
{ ATH6KL_FW_CAPABILITY_MAP_LP_ENDPOINT, "map-lp-endpoint" },
|
|
{ ATH6KL_FW_CAPABILITY_MAP_LP_ENDPOINT, "map-lp-endpoint" },
|
|
{ ATH6KL_FW_CAPABILITY_RATETABLE_MCS15, "ratetable-mcs15" },
|
|
{ ATH6KL_FW_CAPABILITY_RATETABLE_MCS15, "ratetable-mcs15" },
|
|
|
|
+ { ATH6KL_FW_CAPABILITY_NO_IP_CHECKSUM, "no-ip-checksum" },
|
|
};
|
|
};
|
|
|
|
|
|
static const char *ath6kl_init_get_fw_capa_name(unsigned int id)
|
|
static const char *ath6kl_init_get_fw_capa_name(unsigned int id)
|