cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

wl18xx.h (4217B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * This file is part of wl18xx
      4 *
      5 * Copyright (C) 2011 Texas Instruments Inc.
      6 */
      7
      8#ifndef __WL18XX_PRIV_H__
      9#define __WL18XX_PRIV_H__
     10
     11#include "conf.h"
     12
     13/* minimum FW required for driver */
     14#define WL18XX_CHIP_VER		8
     15#define WL18XX_IFTYPE_VER	9
     16#define WL18XX_MAJOR_VER	WLCORE_FW_VER_IGNORE
     17#define WL18XX_SUBTYPE_VER	WLCORE_FW_VER_IGNORE
     18#define WL18XX_MINOR_VER	58
     19
     20#define WL18XX_CMD_MAX_SIZE          740
     21
     22#define WL18XX_AGGR_BUFFER_SIZE		(13 * PAGE_SIZE)
     23
     24#define WL18XX_NUM_TX_DESCRIPTORS 32
     25#define WL18XX_NUM_RX_DESCRIPTORS 32
     26
     27#define WL18XX_NUM_MAC_ADDRESSES 2
     28
     29#define WL18XX_RX_BA_MAX_SESSIONS 13
     30
     31#define WL18XX_MAX_AP_STATIONS 10
     32#define WL18XX_MAX_LINKS 16
     33
     34struct wl18xx_priv {
     35	/* buffer for sending commands to FW */
     36	u8 cmd_buf[WL18XX_CMD_MAX_SIZE];
     37
     38	struct wl18xx_priv_conf conf;
     39
     40	/* Index of last released Tx desc in FW */
     41	u8 last_fw_rls_idx;
     42
     43	/* number of keys requiring extra spare mem-blocks */
     44	int extra_spare_key_count;
     45};
     46
     47#define WL18XX_FW_MAX_TX_STATUS_DESC 33
     48
     49struct wl18xx_fw_status_priv {
     50	/*
     51	 * Index in released_tx_desc for first byte that holds
     52	 * released tx host desc
     53	 */
     54	u8 fw_release_idx;
     55
     56	/*
     57	 * Array of host Tx descriptors, where fw_release_idx
     58	 * indicated the first released idx.
     59	 */
     60	u8 released_tx_desc[WL18XX_FW_MAX_TX_STATUS_DESC];
     61
     62	/* A bitmap representing the currently suspended links. The suspend
     63	 * is short lived, for multi-channel Tx requirements.
     64	 */
     65	__le32 link_suspend_bitmap;
     66
     67	/* packet threshold for an "almost empty" AC,
     68	 * for Tx schedulng purposes
     69	 */
     70	u8 tx_ac_threshold;
     71
     72	/* number of packets to queue up for a link in PS */
     73	u8 tx_ps_threshold;
     74
     75	/* number of packet to queue up for a suspended link */
     76	u8 tx_suspend_threshold;
     77
     78	/* Should have less than this number of packets in queue of a slow
     79	 * link to qualify as high priority link
     80	 */
     81	u8 tx_slow_link_prio_threshold;
     82
     83	/* Should have less than this number of packets in queue of a fast
     84	 * link to qualify as high priority link
     85	 */
     86	u8 tx_fast_link_prio_threshold;
     87
     88	/* Should have less than this number of packets in queue of a slow
     89	 * link before we stop queuing up packets for it.
     90	 */
     91	u8 tx_slow_stop_threshold;
     92
     93	/* Should have less than this number of packets in queue of a fast
     94	 * link before we stop queuing up packets for it.
     95	 */
     96	u8 tx_fast_stop_threshold;
     97
     98	u8 padding[3];
     99};
    100
    101struct wl18xx_fw_packet_counters {
    102	/* Cumulative counter of released packets per AC */
    103	u8 tx_released_pkts[NUM_TX_QUEUES];
    104
    105	/* Cumulative counter of freed packets per HLID */
    106	u8 tx_lnk_free_pkts[WL18XX_MAX_LINKS];
    107
    108	/* Cumulative counter of released Voice memory blocks */
    109	u8 tx_voice_released_blks;
    110
    111	/* Tx rate of the last transmitted packet */
    112	u8 tx_last_rate;
    113
    114	/* Tx rate or Tx rate estimate pre-calculated by fw in mbps units */
    115	u8 tx_last_rate_mbps;
    116
    117	/* hlid for which the rates were reported */
    118	u8 hlid;
    119} __packed;
    120
    121/* FW status registers */
    122struct wl18xx_fw_status {
    123	__le32 intr;
    124	u8  fw_rx_counter;
    125	u8  drv_rx_counter;
    126	u8  reserved;
    127	u8  tx_results_counter;
    128	__le32 rx_pkt_descs[WL18XX_NUM_RX_DESCRIPTORS];
    129
    130	__le32 fw_localtime;
    131
    132	/*
    133	 * A bitmap (where each bit represents a single HLID)
    134	 * to indicate if the station is in PS mode.
    135	 */
    136	__le32 link_ps_bitmap;
    137
    138	/*
    139	 * A bitmap (where each bit represents a single HLID) to indicate
    140	 * if the station is in Fast mode
    141	 */
    142	__le32 link_fast_bitmap;
    143
    144	/* Cumulative counter of total released mem blocks since FW-reset */
    145	__le32 total_released_blks;
    146
    147	/* Size (in Memory Blocks) of TX pool */
    148	__le32 tx_total;
    149
    150	struct wl18xx_fw_packet_counters counters;
    151
    152	__le32 log_start_addr;
    153
    154	/* Private status to be used by the lower drivers */
    155	struct wl18xx_fw_status_priv priv;
    156} __packed;
    157
    158#define WL18XX_PHY_VERSION_MAX_LEN 20
    159
    160struct wl18xx_static_data_priv {
    161	char phy_version[WL18XX_PHY_VERSION_MAX_LEN];
    162};
    163
    164struct wl18xx_clk_cfg {
    165	u32 n;
    166	u32 m;
    167	u32 p;
    168	u32 q;
    169	bool swallow;
    170};
    171
    172enum {
    173	CLOCK_CONFIG_16_2_M	= 1,
    174	CLOCK_CONFIG_16_368_M,
    175	CLOCK_CONFIG_16_8_M,
    176	CLOCK_CONFIG_19_2_M,
    177	CLOCK_CONFIG_26_M,
    178	CLOCK_CONFIG_32_736_M,
    179	CLOCK_CONFIG_33_6_M,
    180	CLOCK_CONFIG_38_468_M,
    181	CLOCK_CONFIG_52_M,
    182
    183	NUM_CLOCK_CONFIGS,
    184};
    185
    186#endif /* __WL18XX_PRIV_H__ */