#include <linux/bits.h>
#include <linux/clk.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regulator/consumer.h>
#include <linux/remoteproc/qcom_rproc.h>
#include <linux/of_address.h>
#include <linux/iommu.h>
#include "ce.h"
#include "coredump.h"
#include "debug.h"
#include "hif.h"
#include "htc.h"
#include "snoc.h"
#define ATH10K_SNOC_RX_POST_RETRY_MS …
#define CE_POLL_PIPE …
#define ATH10K_SNOC_WAKE_IRQ …
static char *const ce_name[] = …;
static const char * const ath10k_regulators[] = …;
static const char * const ath10k_clocks[] = …;
static void ath10k_snoc_htc_tx_cb(struct ath10k_ce_pipe *ce_state);
static void ath10k_snoc_htt_tx_cb(struct ath10k_ce_pipe *ce_state);
static void ath10k_snoc_htc_rx_cb(struct ath10k_ce_pipe *ce_state);
static void ath10k_snoc_htt_rx_cb(struct ath10k_ce_pipe *ce_state);
static void ath10k_snoc_htt_htc_rx_cb(struct ath10k_ce_pipe *ce_state);
static void ath10k_snoc_pktlog_rx_cb(struct ath10k_ce_pipe *ce_state);
static const struct ath10k_snoc_drv_priv drv_priv = …;
#define WCN3990_SRC_WR_IDX_OFFSET …
#define WCN3990_DST_WR_IDX_OFFSET …
static struct ath10k_shadow_reg_cfg target_shadow_reg_cfg_map[] = …;
static struct ce_attr host_ce_config_wlan[] = …;
static struct ce_pipe_config target_ce_config_wlan[] = …;
static struct ce_service_to_pipe target_service_to_ce_map_wlan[] = …;
static void ath10k_snoc_write32(struct ath10k *ar, u32 offset, u32 value)
{ … }
static u32 ath10k_snoc_read32(struct ath10k *ar, u32 offset)
{ … }
static int __ath10k_snoc_rx_post_buf(struct ath10k_snoc_pipe *pipe)
{ … }
static void ath10k_snoc_rx_post_pipe(struct ath10k_snoc_pipe *pipe)
{ … }
static void ath10k_snoc_rx_post(struct ath10k *ar)
{ … }
static void ath10k_snoc_process_rx_cb(struct ath10k_ce_pipe *ce_state,
void (*callback)(struct ath10k *ar,
struct sk_buff *skb))
{ … }
static void ath10k_snoc_htc_rx_cb(struct ath10k_ce_pipe *ce_state)
{ … }
static void ath10k_snoc_htt_htc_rx_cb(struct ath10k_ce_pipe *ce_state)
{ … }
static void ath10k_snoc_pktlog_rx_cb(struct ath10k_ce_pipe *ce_state)
{ … }
static void ath10k_snoc_htt_rx_deliver(struct ath10k *ar, struct sk_buff *skb)
{ … }
static void ath10k_snoc_htt_rx_cb(struct ath10k_ce_pipe *ce_state)
{ … }
static void ath10k_snoc_rx_replenish_retry(struct timer_list *t)
{ … }
static void ath10k_snoc_htc_tx_cb(struct ath10k_ce_pipe *ce_state)
{ … }
static void ath10k_snoc_htt_tx_cb(struct ath10k_ce_pipe *ce_state)
{ … }
static int ath10k_snoc_hif_tx_sg(struct ath10k *ar, u8 pipe_id,
struct ath10k_hif_sg_item *items, int n_items)
{ … }
static int ath10k_snoc_hif_get_target_info(struct ath10k *ar,
struct bmi_target_info *target_info)
{ … }
static u16 ath10k_snoc_hif_get_free_queue_number(struct ath10k *ar, u8 pipe)
{ … }
static void ath10k_snoc_hif_send_complete_check(struct ath10k *ar, u8 pipe,
int force)
{ … }
static int ath10k_snoc_hif_map_service_to_pipe(struct ath10k *ar,
u16 service_id,
u8 *ul_pipe, u8 *dl_pipe)
{ … }
static void ath10k_snoc_hif_get_default_pipe(struct ath10k *ar,
u8 *ul_pipe, u8 *dl_pipe)
{ … }
static inline void ath10k_snoc_irq_disable(struct ath10k *ar)
{ … }
static inline void ath10k_snoc_irq_enable(struct ath10k *ar)
{ … }
static void ath10k_snoc_rx_pipe_cleanup(struct ath10k_snoc_pipe *snoc_pipe)
{ … }
static void ath10k_snoc_tx_pipe_cleanup(struct ath10k_snoc_pipe *snoc_pipe)
{ … }
static void ath10k_snoc_buffer_cleanup(struct ath10k *ar)
{ … }
static void ath10k_snoc_hif_stop(struct ath10k *ar)
{ … }
static int ath10k_snoc_hif_start(struct ath10k *ar)
{ … }
static int ath10k_snoc_init_pipes(struct ath10k *ar)
{ … }
static int ath10k_snoc_wlan_enable(struct ath10k *ar,
enum ath10k_firmware_mode fw_mode)
{ … }
static int ath10k_hw_power_on(struct ath10k *ar)
{ … }
static int ath10k_hw_power_off(struct ath10k *ar)
{ … }
static void ath10k_snoc_wlan_disable(struct ath10k *ar)
{ … }
static void ath10k_snoc_hif_power_down(struct ath10k *ar)
{ … }
static int ath10k_snoc_hif_power_up(struct ath10k *ar,
enum ath10k_firmware_mode fw_mode)
{ … }
static int ath10k_snoc_hif_set_target_log_mode(struct ath10k *ar,
u8 fw_log_mode)
{ … }
#ifdef CONFIG_PM
static int ath10k_snoc_hif_suspend(struct ath10k *ar)
{ … }
static int ath10k_snoc_hif_resume(struct ath10k *ar)
{ … }
#endif
static const struct ath10k_hif_ops ath10k_snoc_hif_ops = …;
static const struct ath10k_bus_ops ath10k_snoc_bus_ops = …;
static int ath10k_snoc_get_ce_id_from_irq(struct ath10k *ar, int irq)
{ … }
static irqreturn_t ath10k_snoc_per_engine_handler(int irq, void *arg)
{ … }
static int ath10k_snoc_napi_poll(struct napi_struct *ctx, int budget)
{ … }
static void ath10k_snoc_init_napi(struct ath10k *ar)
{ … }
static int ath10k_snoc_request_irq(struct ath10k *ar)
{ … }
static void ath10k_snoc_free_irq(struct ath10k *ar)
{ … }
static int ath10k_snoc_resource_init(struct ath10k *ar)
{ … }
static void ath10k_snoc_quirks_init(struct ath10k *ar)
{ … }
int ath10k_snoc_fw_indication(struct ath10k *ar, u64 type)
{ … }
static int ath10k_snoc_setup_resource(struct ath10k *ar)
{ … }
static void ath10k_snoc_release_resource(struct ath10k *ar)
{ … }
static void ath10k_msa_dump_memory(struct ath10k *ar,
struct ath10k_fw_crash_data *crash_data)
{ … }
void ath10k_snoc_fw_crashed_dump(struct ath10k *ar)
{ … }
static int ath10k_snoc_modem_notify(struct notifier_block *nb, unsigned long action,
void *data)
{ … }
static int ath10k_modem_init(struct ath10k *ar)
{ … }
static void ath10k_modem_deinit(struct ath10k *ar)
{ … }
static int ath10k_setup_msa_resources(struct ath10k *ar, u32 msa_size)
{ … }
static int ath10k_fw_init(struct ath10k *ar)
{ … }
static int ath10k_fw_deinit(struct ath10k *ar)
{ … }
static const struct of_device_id ath10k_snoc_dt_match[] = …;
MODULE_DEVICE_TABLE(of, ath10k_snoc_dt_match);
static int ath10k_snoc_probe(struct platform_device *pdev)
{ … }
static int ath10k_snoc_free_resources(struct ath10k *ar)
{ … }
static void ath10k_snoc_remove(struct platform_device *pdev)
{ … }
static void ath10k_snoc_shutdown(struct platform_device *pdev)
{ … }
static struct platform_driver ath10k_snoc_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;