Linux Audio
Check our new training course
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/* SPDX-License-Identifier: ISC */ /* * Copyright (c) 2015-2016 Qualcomm Atheros, Inc. */ #ifndef _SWAP_H_ #define _SWAP_H_ #define ATH10K_SWAP_CODE_SEG_BIN_LEN_MAX (512 * 1024) #define ATH10K_SWAP_CODE_SEG_MAGIC_BYTES_SZ 12 #define ATH10K_SWAP_CODE_SEG_NUM_MAX 16 /* Currently only one swap segment is supported */ #define ATH10K_SWAP_CODE_SEG_NUM_SUPPORTED 1 struct ath10k_fw_file; struct ath10k_swap_code_seg_tlv { __le32 address; __le32 length; u8 data[0]; } __packed; struct ath10k_swap_code_seg_tail { u8 magic_signature[ATH10K_SWAP_CODE_SEG_MAGIC_BYTES_SZ]; __le32 bmi_write_addr; } __packed; union ath10k_swap_code_seg_item { struct ath10k_swap_code_seg_tlv tlv; struct ath10k_swap_code_seg_tail tail; } __packed; struct ath10k_swap_code_seg_hw_info { /* Swap binary image size */ __le32 swap_size; __le32 num_segs; /* Swap data size */ __le32 size; __le32 size_log2; __le32 bus_addr[ATH10K_SWAP_CODE_SEG_NUM_MAX]; __le64 reserved[ATH10K_SWAP_CODE_SEG_NUM_MAX]; } __packed; struct ath10k_swap_code_seg_info { struct ath10k_swap_code_seg_hw_info seg_hw_info; void *virt_address[ATH10K_SWAP_CODE_SEG_NUM_SUPPORTED]; u32 target_addr; dma_addr_t paddr[ATH10K_SWAP_CODE_SEG_NUM_SUPPORTED]; }; int ath10k_swap_code_seg_configure(struct ath10k *ar, const struct ath10k_fw_file *fw_file); void ath10k_swap_code_seg_release(struct ath10k *ar, struct ath10k_fw_file *fw_file); int ath10k_swap_code_seg_init(struct ath10k *ar, struct ath10k_fw_file *fw_file); #endif
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy