linux/drivers/net/wireless/ath/ath10k/snoc.c

// SPDX-License-Identifier: ISC
/*
 * Copyright (c) 2018 The Linux Foundation. All rights reserved.
 */

#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)
{}

/* Called by lower (CE) layer when data is received from the Target.
 * WCN3990 firmware uses separate CE(CE11) to transfer pktlog data.
 */
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();