linux/drivers/net/wireless/ti/wl12xx/main.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * This file is part of wl1271
 *
 * Copyright (C) 2008-2010 Nokia Corporation
 */

#include <linux/module.h>
#include <linux/mod_devicetable.h>
#include <linux/platform_device.h>

#include <linux/err.h>

#include "../wlcore/wlcore.h"
#include "../wlcore/debug.h"
#include "../wlcore/io.h"
#include "../wlcore/acx.h"
#include "../wlcore/tx.h"
#include "../wlcore/rx.h"
#include "../wlcore/boot.h"

#include "wl12xx.h"
#include "reg.h"
#include "cmd.h"
#include "acx.h"
#include "scan.h"
#include "event.h"
#include "debugfs.h"
#include "conf.h"

static char *fref_param;
static char *tcxo_param;

static struct wlcore_conf wl12xx_conf =;

static struct wl12xx_priv_conf wl12xx_default_priv_conf =;

#define WL12XX_TX_HW_BLOCK_SPARE_DEFAULT
#define WL12XX_TX_HW_BLOCK_GEM_SPARE
#define WL12XX_TX_HW_BLOCK_SIZE

static const u8 wl12xx_rate_to_idx_2ghz[] =;

static const u8 wl12xx_rate_to_idx_5ghz[] =;

static const u8 *wl12xx_band_rate_to_idx[] =;

enum wl12xx_hw_rates {};

static struct wlcore_partition_set wl12xx_ptable[PART_TABLE_LEN] =;

static const int wl12xx_rtable[REG_TABLE_LEN] =;

/* TODO: maybe move to a new header file? */
#define WL127X_FW_NAME_MULTI
#define WL127X_FW_NAME_SINGLE
#define WL127X_PLT_FW_NAME

#define WL128X_FW_NAME_MULTI
#define WL128X_FW_NAME_SINGLE
#define WL128X_PLT_FW_NAME

static int wl127x_prepare_read(struct wl1271 *wl, u32 rx_desc, u32 len)
{}

static int wl12xx_identify_chip(struct wl1271 *wl)
{}

static int __must_check wl12xx_top_reg_write(struct wl1271 *wl, int addr,
					     u16 val)
{}

static int __must_check wl12xx_top_reg_read(struct wl1271 *wl, int addr,
					    u16 *out)
{}

static int wl128x_switch_tcxo_to_fref(struct wl1271 *wl)
{}

static bool wl128x_is_tcxo_valid(struct wl1271 *wl)
{}

static bool wl128x_is_fref_valid(struct wl1271 *wl)
{}

static int wl128x_manually_configure_mcs_pll(struct wl1271 *wl)
{}

static int wl128x_configure_mcs_pll(struct wl1271 *wl, int clk)
{}

/*
 * WL128x has two clocks input - TCXO and FREF.
 * TCXO is the main clock of the device, while FREF is used to sync
 * between the GPS and the cellular modem.
 * In cases where TCXO is 32.736MHz or 16.368MHz, the FREF will be used
 * as the WLAN/BT main clock.
 */
static int wl128x_boot_clk(struct wl1271 *wl, int *selected_clock)
{}

static int wl127x_boot_clk(struct wl1271 *wl)
{}

static int wl1271_boot_soft_reset(struct wl1271 *wl)
{}

static int wl12xx_pre_boot(struct wl1271 *wl)
{}

static int wl12xx_pre_upload(struct wl1271 *wl)
{}

static int wl12xx_enable_interrupts(struct wl1271 *wl)
{}

static int wl12xx_boot(struct wl1271 *wl)
{}

static int wl12xx_trigger_cmd(struct wl1271 *wl, int cmd_box_addr,
			       void *buf, size_t len)
{}

static int wl12xx_ack_event(struct wl1271 *wl)
{}

static u32 wl12xx_calc_tx_blocks(struct wl1271 *wl, u32 len, u32 spare_blks)
{}

static void
wl12xx_set_tx_desc_blocks(struct wl1271 *wl, struct wl1271_tx_hw_descr *desc,
			  u32 blks, u32 spare_blks)
{}

static void
wl12xx_set_tx_desc_data_len(struct wl1271 *wl, struct wl1271_tx_hw_descr *desc,
			    struct sk_buff *skb)
{}

static enum wl_rx_buf_align
wl12xx_get_rx_buf_align(struct wl1271 *wl, u32 rx_desc)
{}

static u32 wl12xx_get_rx_packet_len(struct wl1271 *wl, void *rx_data,
				    u32 data_len)
{}

static int wl12xx_tx_delayed_compl(struct wl1271 *wl)
{}

static int wl12xx_hw_init(struct wl1271 *wl)
{}

static void wl12xx_convert_fw_status(struct wl1271 *wl, void *raw_fw_status,
				     struct wl_fw_status *fw_status)
{}

static u32 wl12xx_sta_get_ap_rate_mask(struct wl1271 *wl,
				       struct wl12xx_vif *wlvif)
{}

static void wl12xx_conf_init(struct wl1271 *wl)
{}

static bool wl12xx_mac_in_fuse(struct wl1271 *wl)
{}

static int wl12xx_get_fuse_mac(struct wl1271 *wl)
{}

static int wl12xx_get_pg_ver(struct wl1271 *wl, s8 *ver)
{}

static int wl12xx_get_mac(struct wl1271 *wl)
{}

static void wl12xx_set_tx_desc_csum(struct wl1271 *wl,
				    struct wl1271_tx_hw_descr *desc,
				    struct sk_buff *skb)
{}

static int wl12xx_plt_init(struct wl1271 *wl)
{}

static int wl12xx_get_spare_blocks(struct wl1271 *wl, bool is_gem)
{}

static int wl12xx_set_key(struct wl1271 *wl, enum set_key_cmd cmd,
			  struct ieee80211_vif *vif,
			  struct ieee80211_sta *sta,
			  struct ieee80211_key_conf *key_conf)
{}

static int wl12xx_set_peer_cap(struct wl1271 *wl,
			       struct ieee80211_sta_ht_cap *ht_cap,
			       bool allow_ht_operation,
			       u32 rate_set, u8 hlid)
{}

static bool wl12xx_lnk_high_prio(struct wl1271 *wl, u8 hlid,
				 struct wl1271_link *lnk)
{}

static bool wl12xx_lnk_low_prio(struct wl1271 *wl, u8 hlid,
				struct wl1271_link *lnk)
{}

static u32 wl12xx_convert_hwaddr(struct wl1271 *wl, u32 hwaddr)
{}

static int wl12xx_setup(struct wl1271 *wl);

static struct wlcore_ops wl12xx_ops =;

static struct ieee80211_sta_ht_cap wl12xx_ht_cap =;

static const struct ieee80211_iface_limit wl12xx_iface_limits[] =;

static const struct ieee80211_iface_combination
wl12xx_iface_combinations[] =;

static const struct wl12xx_clock wl12xx_refclock_table[] =;

static const struct wl12xx_clock wl12xx_tcxoclock_table[] =;

static int wl12xx_get_clock_idx(const struct wl12xx_clock *table,
				u32 freq, bool xtal)
{}

static int wl12xx_setup(struct wl1271 *wl)
{}

static int wl12xx_probe(struct platform_device *pdev)
{}

static void wl12xx_remove(struct platform_device *pdev)
{}

static const struct platform_device_id wl12xx_id_table[] =;
MODULE_DEVICE_TABLE(platform, wl12xx_id_table);

static struct platform_driver wl12xx_driver =;

module_platform_driver();

module_param_named(fref, fref_param, charp, 0);
MODULE_PARM_DESC();

module_param_named(tcxo, tcxo_param, charp, 0);
MODULE_PARM_DESC();

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