From: Christian Lamparter Date: Sat, 7 Jul 2012 15:47:25 +0000 (+0200) Subject: Merge branch 'master' into radar X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=6ad7dd18fb9a1c674708e32fce3f4e89c8f1d83d;hp=-c;p=carl9170fw.git Merge branch 'master' into radar Conflicts: carlfw/include/carl9170.h include/shared/fwdesc.h include/shared/version.h tools/src/fwinfo.c --- 6ad7dd18fb9a1c674708e32fce3f4e89c8f1d83d diff --combined carlfw/include/carl9170.h index df41f84,cb16415..300d291 --- a/carlfw/include/carl9170.h +++ b/carlfw/include/carl9170.h @@@ -33,7 -33,6 +33,7 @@@ #include "dma.h" #include "usb.h" #include "cmd.h" +#include "radar.h" struct carl9170_bar_ctx { uint8_t ta[6]; @@@ -144,9 -143,7 +144,11 @@@ struct firmware_context_struct ba_head_idx, queued_ba; + unsigned int queued_bar; ++ + unsigned int soft_radar, + radar_last, + pattern_index; } wlan; struct { diff --combined carlfw/src/fw.c index c919141,5bde675..bebb39e --- a/carlfw/src/fw.c +++ b/carlfw/src/fw.c @@@ -38,6 -38,7 +38,7 @@@ const struct carl9170_firmware_descript BIT(CARL9170FW_HANDLE_BACK_REQ) | BIT(CARL9170FW_RX_FILTER) | BIT(CARL9170FW_HW_COUNTERS) | + BIT(CARL9170FW_RX_BA_FILTER) | BIT(CARL9170FW_USB_INIT_FIRMWARE) | #ifdef CONFIG_CARL9170FW_USB_UP_STREAM BIT(CARL9170FW_USB_UP_STREAM) | @@@ -65,9 -66,6 +66,9 @@@ #ifdef CONFIG_CARL9170FW_WOL BIT(CARL9170FW_WOL) | #endif /* CONFIG_CARL9170FW_WOL */ +#ifdef CONFIG_CARL9170FW_RADAR + BIT(CARL9170FW_RADAR_PATTERN_GENERATOR) | +#endif /* CONFIG_CARL9170FW_RADAR */ (0)), .miniboot_size = cpu_to_le16(0), @@@ -93,6 -91,7 +94,6 @@@ ), #endif /* CONFIG_CARL9170FW_WOL */ - FILL(motd, MOTD, .fw_year_month_day = cpu_to_le32( CARL9170FW_SET_DAY(CARL9170FW_VERSION_DAY) + @@@ -101,15 -100,6 +102,15 @@@ .desc = "Community AR9170 Linux", .release = CARL9170FW_VERSION_GIT), + +#ifdef CONFIG_CARL9170FW_RADAR + FILL(radar, RADAR, + .soft_radar = cpu_to_le32(&fw.wlan.soft_radar), + .num_radars = __CARL9170FW_NUM_RADARS, + .radars = { /* filled by the fwprepare tool */ }, + ), +#endif /* CONFIG_CARL9170FW_RADAR */ + FILL(dbg, DBG, .bogoclock_addr = cpu_to_le32(0), .counter_addr = cpu_to_le32(&fw.counter), diff --combined include/shared/fwdesc.h index 903a346,66848d4..f73373e --- a/include/shared/fwdesc.h +++ b/include/shared/fwdesc.h @@@ -78,9 -78,9 +78,12 @@@ enum carl9170fw_feature_list /* HW (ANI, CCA, MIB) tally counters */ CARL9170FW_HW_COUNTERS, + /* Radar pattern generator */ + CARL9170FW_RADAR_PATTERN_GENERATOR, + + /* Firmware will pass BA when BARs are queued */ + CARL9170FW_RX_BA_FILTER, + /* KEEP LAST */ __CARL9170FW_FEATURE_NUM }; @@@ -92,7 -92,6 +95,7 @@@ #define CHK_MAGIC "CHK\0" #define TXSQ_MAGIC "TXSQ" #define WOL_MAGIC "WOL\0" +#define RADAR_MAGIC "RDR\0" #define LAST_MAGIC "LAST" #define CARL9170FW_SET_DAY(d) (((d) - 1) % 31) @@@ -177,25 -176,6 +180,25 @@@ struct carl9170fw_dbg_desc #define CARL9170FW_DBG_DESC_SIZE \ (sizeof(struct carl9170fw_dbg_desc)) +#define CARL9170FW_RADAR_MAP_NAME_LEN 15 +struct carl9170fw_radar_map_entry { + u8 index; + char name[CARL9170FW_RADAR_MAP_NAME_LEN]; +} __packed; + +#define CARL9170FW_RADAR_DESC_MIN_VER 1 +#define CARL9170FW_RADAR_DESC_CUR_VER 1 +struct carl9170fw_radar_desc { + struct carl9170fw_desc_head head; + + __le32 soft_radar; + __le32 num_radars; + struct carl9170fw_radar_map_entry radars[0]; + /* Put your debugging definitions here */ +} __packed; +#define CARL9170FW_RADAR_DESC_SIZE \ + (sizeof(struct carl9170fw_radar_desc)) + #define CARL9170FW_CHK_DESC_MIN_VER 1 #define CARL9170FW_CHK_DESC_CUR_VER 2 struct carl9170fw_chk_desc { diff --combined tools/src/fwinfo.c index 0f674f7,0d5cd09..b2441f7 --- a/tools/src/fwinfo.c +++ b/tools/src/fwinfo.c @@@ -68,7 -68,7 +68,8 @@@ static const struct feature_list known_ CHECK_FOR_FEATURE(CARL9170FW_WOL), CHECK_FOR_FEATURE(CARL9170FW_FIXED_5GHZ_PSM), CHECK_FOR_FEATURE(CARL9170FW_HW_COUNTERS), + CHECK_FOR_FEATURE(CARL9170FW_RX_BA_FILTER), + CHECK_FOR_FEATURE(CARL9170FW_RADAR_PATTERN_GENERATOR), }; static void check_feature_list(const struct carl9170fw_desc_head *head, @@@ -207,25 -207,6 +208,25 @@@ static void show_chk_desc(const struct le32_to_cpu(chk->fw_crc32)); } +static void show_radar_desc(const struct carl9170fw_desc_head *head, + struct carlfw *fw __unused) +{ + const struct carl9170fw_radar_desc *radar = (const void *) head; + const struct carl9170fw_radar_map_entry *map = radar->radars; + int map_entries = (head->length - sizeof(*radar)) / sizeof(*map); + int i; + + fprintf(stdout, "\tRadar index register: %08x\n", + le32_to_cpu(radar->soft_radar)); + fprintf(stdout, "\tNumber of supported radar patterns: %08x\n", + le32_to_cpu(radar->num_radars)); + + for (i = 0; i < map_entries; i++) { + fprintf(stdout, "\t\tindex:0x%x, description:%s\n", + map[i].index, map[i].name); + } +} + static void show_last_desc(const struct carl9170fw_desc_head *head, struct carlfw *fw __unused) @@@ -256,7 -237,6 +257,7 @@@ static const struct ADD_HANDLER(FIX, show_fix_desc), ADD_HANDLER(CHK, show_chk_desc), ADD_HANDLER(WOL, show_wol_desc), + ADD_HANDLER(RADAR, show_radar_desc), ADD_HANDLER(LAST, show_last_desc), };