struct ath10k_hif_sg_item {
u16 transfer_id; void *transfer_context; /* NULL = tx completion callback not called */ void *vaddr; /* for debugging mostly */
dma_addr_t paddr;
u16 len;
};
struct ath10k_hif_ops { /* send a scatter-gather list to the target */ int (*tx_sg)(struct ath10k *ar, u8 pipe_id, struct ath10k_hif_sg_item *items, int n_items);
/* read firmware memory through the diagnose interface */ int (*diag_read)(struct ath10k *ar, u32 address, void *buf,
size_t buf_len);
int (*diag_write)(struct ath10k *ar, u32 address, constvoid *data, int nbytes); /* * API to handle HIF-specific BMI message exchanges, this API is * synchronous and only allowed to be called from a context that * can block (sleep)
*/ int (*exchange_bmi_msg)(struct ath10k *ar, void *request, u32 request_len, void *response, u32 *response_len);
/* Post BMI phase, after FW is loaded. Starts regular operation */ int (*start)(struct ath10k *ar);
/* Clean up what start() did. This does not revert to BMI phase. If * desired so, call power_down() and power_up()
*/ void (*stop)(struct ath10k *ar);
int (*start_post)(struct ath10k *ar);
int (*get_htt_tx_complete)(struct ath10k *ar);
int (*map_service_to_pipe)(struct ath10k *ar, u16 service_id,
u8 *ul_pipe, u8 *dl_pipe);
/* * Check if prior sends have completed. * * Check whether the pipe in question has any completed * sends that have not yet been processed. * This function is only relevant for HIF pipes that are configured * to be polled rather than interrupt-driven.
*/ void (*send_complete_check)(struct ath10k *ar, u8 pipe_id, int force);
/* Power up the device and enter BMI transfer mode for FW download */ int (*power_up)(struct ath10k *ar, enum ath10k_firmware_mode fw_mode);
/* Power down the device and free up resources. stop() must be called * before this if start() was called earlier
*/ void (*power_down)(struct ath10k *ar);
int (*suspend)(struct ath10k *ar); int (*resume)(struct ath10k *ar);
/* fetch calibration data from target eeprom */ int (*fetch_cal_eeprom)(struct ath10k *ar, void **data,
size_t *data_len);
int (*get_target_info)(struct ath10k *ar, struct bmi_target_info *target_info); int (*set_target_log_mode)(struct ath10k *ar, u8 fw_log_mode);
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.