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

// SPDX-License-Identifier: ISC
/*
 * Copyright (c) 2005-2011 Atheros Communications Inc.
 * Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
 * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#include <linux/module.h>
#include <linux/firmware.h>
#include <linux/of.h>
#include <linux/property.h>
#include <linux/dmi.h>
#include <linux/ctype.h>
#include <linux/pm_qos.h>
#include <linux/nvmem-consumer.h>
#include <asm/byteorder.h>

#include "core.h"
#include "mac.h"
#include "htc.h"
#include "hif.h"
#include "wmi.h"
#include "bmi.h"
#include "debug.h"
#include "htt.h"
#include "testmode.h"
#include "wmi-ops.h"
#include "coredump.h"
#include "leds.h"

unsigned int ath10k_debug_mask;
EXPORT_SYMBOL();

static unsigned int ath10k_cryptmode_param;
static bool uart_print;
static bool skip_otp;
static bool fw_diag_log;

/* frame mode values are mapped as per enum ath10k_hw_txrx_mode */
unsigned int ath10k_frame_mode =;

unsigned long ath10k_coredump_mask =;

/* FIXME: most of these should be readonly */
module_param_named(debug_mask, ath10k_debug_mask, uint, 0644);
module_param_named(cryptmode, ath10k_cryptmode_param, uint, 0644);
module_param(uart_print, bool, 0644);
module_param(skip_otp, bool, 0644);
module_param(fw_diag_log, bool, 0644);
module_param_named(frame_mode, ath10k_frame_mode, uint, 0644);
module_param_named(coredump_mask, ath10k_coredump_mask, ulong, 0444);

MODULE_PARM_DESC();
MODULE_PARM_DESC();
MODULE_PARM_DESC();
MODULE_PARM_DESC();
MODULE_PARM_DESC();
MODULE_PARM_DESC();
MODULE_PARM_DESC();

static const struct ath10k_hw_params ath10k_hw_params_list[] =;

static const char *const ath10k_core_fw_feature_str[] =;

static unsigned int ath10k_core_get_fw_feature_str(char *buf,
						   size_t buf_len,
						   enum ath10k_fw_features feat)
{}

void ath10k_core_get_fw_features_str(struct ath10k *ar,
				     char *buf,
				     size_t buf_len)
{}

static void ath10k_send_suspend_complete(struct ath10k *ar)
{}

static int ath10k_init_sdio(struct ath10k *ar, enum ath10k_firmware_mode mode)
{}

static int ath10k_init_configure_target(struct ath10k *ar)
{}

static const struct firmware *ath10k_fetch_fw_file(struct ath10k *ar,
						   const char *dir,
						   const char *file)
{}

static int ath10k_push_board_ext_data(struct ath10k *ar, const void *data,
				      size_t data_len)
{}

static int ath10k_core_get_board_id_from_otp(struct ath10k *ar)
{}

static void ath10k_core_check_bdfext(const struct dmi_header *hdr, void *data)
{}

static int ath10k_core_check_smbios(struct ath10k *ar)
{}

int ath10k_core_check_dt(struct ath10k *ar)
{}
EXPORT_SYMBOL();

static int ath10k_download_fw(struct ath10k *ar)
{}

void ath10k_core_free_board_files(struct ath10k *ar)
{}
EXPORT_SYMBOL();

static void ath10k_core_free_firmware_files(struct ath10k *ar)
{}

static int ath10k_fetch_cal_file(struct ath10k *ar)
{}

static int ath10k_core_fetch_board_data_api_1(struct ath10k *ar, int bd_ie_type)
{}

static int ath10k_core_parse_bd_ie_board(struct ath10k *ar,
					 const void *buf, size_t buf_len,
					 const char *boardname,
					 int bd_ie_type)
{}

static int ath10k_core_search_bd(struct ath10k *ar,
				 const char *boardname,
				 const u8 *data,
				 size_t len)
{}

static int ath10k_core_fetch_board_data_api_n(struct ath10k *ar,
					      const char *boardname,
					      const char *fallback_boardname1,
					      const char *fallback_boardname2,
					      const char *filename)
{}

static int ath10k_core_create_board_name(struct ath10k *ar, char *name,
					 size_t name_len, bool with_variant,
					 bool with_chip_id)
{}

static int ath10k_core_create_eboard_name(struct ath10k *ar, char *name,
					  size_t name_len)
{}

int ath10k_core_fetch_board_file(struct ath10k *ar, int bd_ie_type)
{}
EXPORT_SYMBOL();

static int ath10k_core_get_ext_board_id_from_otp(struct ath10k *ar)
{}

static int ath10k_download_board_data(struct ath10k *ar, const void *data,
				      size_t data_len)
{}

static int ath10k_download_and_run_otp(struct ath10k *ar)
{}

static int ath10k_download_cal_file(struct ath10k *ar,
				    const struct firmware *file)
{}

static int ath10k_download_cal_dt(struct ath10k *ar, const char *dt_name)
{}

static int ath10k_download_cal_eeprom(struct ath10k *ar)
{}

static int ath10k_download_cal_nvmem(struct ath10k *ar, const char *cell_name)
{}

int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name,
				     struct ath10k_fw_file *fw_file)
{}

static void ath10k_core_get_fw_name(struct ath10k *ar, char *fw_name,
				    size_t fw_name_len, int fw_api)
{}

static int ath10k_core_fetch_firmware_files(struct ath10k *ar)
{}

static int ath10k_core_pre_cal_download(struct ath10k *ar)
{}

static int ath10k_core_pre_cal_config(struct ath10k *ar)
{}

static int ath10k_download_cal_data(struct ath10k *ar)
{}

static void ath10k_core_fetch_btcoex_dt(struct ath10k *ar)
{}

static int ath10k_init_uart(struct ath10k *ar)
{}

static int ath10k_init_hw_params(struct ath10k *ar)
{}

void ath10k_core_start_recovery(struct ath10k *ar)
{}
EXPORT_SYMBOL();

void ath10k_core_napi_enable(struct ath10k *ar)
{}
EXPORT_SYMBOL();

void ath10k_core_napi_sync_disable(struct ath10k *ar)
{}
EXPORT_SYMBOL();

static void ath10k_core_restart(struct work_struct *work)
{}

static void ath10k_core_set_coverage_class_work(struct work_struct *work)
{}

static int ath10k_core_init_firmware_features(struct ath10k *ar)
{}

static int ath10k_core_reset_rx_filter(struct ath10k *ar)
{}

static int ath10k_core_compat_services(struct ath10k *ar)
{}

#define TGT_IRAM_READ_PER_ITR

static int ath10k_core_copy_target_iram(struct ath10k *ar)
{}

int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
		      const struct ath10k_fw_components *fw)
{}
EXPORT_SYMBOL();

int ath10k_wait_for_suspend(struct ath10k *ar, u32 suspend_opt)
{}

void ath10k_core_stop(struct ath10k *ar)
{}
EXPORT_SYMBOL();

/* mac80211 manages fw/hw initialization through start/stop hooks. However in
 * order to know what hw capabilities should be advertised to mac80211 it is
 * necessary to load the firmware (and tear it down immediately since start
 * hook will try to init it again) before registering
 */
static int ath10k_core_probe_fw(struct ath10k *ar)
{}

static void ath10k_core_register_work(struct work_struct *work)
{}

int ath10k_core_register(struct ath10k *ar,
			 const struct ath10k_bus_params *bus_params)
{}
EXPORT_SYMBOL();

void ath10k_core_unregister(struct ath10k *ar)
{}
EXPORT_SYMBOL();

struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
				  enum ath10k_bus bus,
				  enum ath10k_hw_rev hw_rev,
				  const struct ath10k_hif_ops *hif_ops)
{}
EXPORT_SYMBOL();

void ath10k_core_destroy(struct ath10k *ar)
{}
EXPORT_SYMBOL();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();