You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.9 KiB
116 lines
3.9 KiB
/* |
|
* carl9170 firmware - used by the ar9170 wireless device |
|
* |
|
* Firmware descriptor |
|
* |
|
* Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com> |
|
* |
|
* This program is free software; you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License as published by |
|
* the Free Software Foundation; either version 2 of the License, or |
|
* (at your option) any later version. |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU General Public License along |
|
* with this program; if not, write to the Free Software Foundation, Inc., |
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
|
*/ |
|
#include "carl9170.h" |
|
#include "fwdsc.h" |
|
|
|
#define FILL(small, big, more...) \ |
|
.small = { \ |
|
CARL9170FW_FILL_DESC(big##_MAGIC, \ |
|
sizeof(struct carl9170fw_## small##_desc), \ |
|
CARL9170FW_## big##_DESC_MIN_VER, \ |
|
CARL9170FW_## big##_DESC_CUR_VER), \ |
|
more \ |
|
} |
|
|
|
const struct carl9170_firmware_descriptor __section(fwdsc) carl9170fw_desc = { |
|
FILL(otus, OTUS, |
|
.feature_set = cpu_to_le32(BIT(CARL9170FW_DUMMY_FEATURE) | |
|
BIT(CARL9170FW_USB_RESP_EP2) | |
|
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) | |
|
#endif /* CONFIG_CARL9170FW_USB_UP_STREAM */ |
|
#ifdef CONFIG_CARL9170FW_USB_DOWN_STREAM |
|
BIT(CARL9170FW_USB_DOWN_STREAM) | |
|
#endif /* CONFIG_CARL9170FW_USB_DOWN_STREAM */ |
|
#ifdef CONFIG_CARL9170FW_RADIO_FUNCTIONS |
|
BIT(CARL9170FW_COMMAND_PHY) | |
|
BIT(CARL9170FW_PSM) | |
|
BIT(CARL9170FW_FIXED_5GHZ_PSM) | |
|
#endif /* CONFIG_CARL9170FW_RADIO_FUNCTIONS */ |
|
#ifdef CONFIG_CARL9170FW_SECURITY_ENGINE |
|
BIT(CARL9170FW_COMMAND_CAM) | |
|
#endif /* CONFIG_CARL9170FW_SECURITY_ENGINE */ |
|
#ifdef CONFIG_CARL9170FW_CAB_QUEUE |
|
BIT(CARL9170FW_WLANTX_CAB) | |
|
#endif /* CONFIG_CARL9170FW_CAB_QUEUE */ |
|
#ifdef CONFIG_CARL9170FW_UNUSABLE |
|
BIT(CARL9170FW_UNUSABLE) | |
|
#endif /* CONFIG_CARL9170FW_UNUSABLE */ |
|
#ifdef CONFIG_CARL9170FW_GPIO_INTERRUPT |
|
BIT(CARL9170FW_GPIO_INTERRUPT) | |
|
#endif /* CONFIG_CARL9170FW_GPIO_INTERRUPT */ |
|
#ifdef CONFIG_CARL9170FW_WOL |
|
BIT(CARL9170FW_WOL) | |
|
#endif /* CONFIG_CARL9170FW_WOL */ |
|
(0)), |
|
|
|
.miniboot_size = cpu_to_le16(0), |
|
.tx_descs = AR9170_TX_BLOCK_NUMBER, |
|
.cmd_bufs = CARL9170_INT_RQ_CACHES, |
|
.rx_max_frame_len = cpu_to_le16(CONFIG_CARL9170FW_RX_FRAME_LEN), |
|
.tx_frag_len = cpu_to_le16(AR9170_BLOCK_SIZE), |
|
.fw_address = cpu_to_le32(AR9170_PRAM_OFFSET), |
|
.bcn_addr = (__le32) cpu_to_le32(&dma_mem.reserved.bcn), |
|
.bcn_len = (__le16) cpu_to_le16(sizeof(dma_mem.reserved.bcn)), |
|
.vif_num = CARL9170_INTF_NUM, |
|
.api_ver = CONFIG_CARL9170FW_RELEASE_VERSION, |
|
), |
|
|
|
FILL(txsq, TXSQ, |
|
.seq_table_addr = cpu_to_le32(&fw.wlan.sequence), |
|
), |
|
|
|
#ifdef CONFIG_CARL9170FW_WOL |
|
FILL(wol, WOL, |
|
.supported_triggers = BIT(CARL9170_WOL_DISCONNECT) | |
|
BIT(CARL9170_WOL_MAGIC_PKT), |
|
), |
|
#endif /* CONFIG_CARL9170FW_WOL */ |
|
|
|
|
|
FILL(motd, MOTD, |
|
.fw_year_month_day = cpu_to_le32( |
|
CARL9170FW_SET_DAY(CARL9170FW_VERSION_DAY) + |
|
CARL9170FW_SET_MONTH(CARL9170FW_VERSION_MONTH) + |
|
CARL9170FW_SET_YEAR(CARL9170FW_VERSION_YEAR)), |
|
.desc = "Community AR9170 Linux", |
|
.release = CARL9170FW_VERSION_GIT), |
|
|
|
FILL(dbg, DBG, |
|
.bogoclock_addr = cpu_to_le32(0), |
|
.counter_addr = cpu_to_le32(&fw.counter), |
|
.rx_total_addr = cpu_to_le32(0), |
|
.rx_overrun_addr = cpu_to_le32(0), |
|
.rx_filter = cpu_to_le32(&fw.wlan.rx_filter), |
|
), |
|
|
|
FILL(last, LAST), |
|
}; |
|
|
|
#undef FILL |
|
|
|
struct firmware_context_struct fw;
|
|
|