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

iwl-drv.h (3502B)


      1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
      2/*
      3 * Copyright (C) 2005-2014, 2020-2021 Intel Corporation
      4 * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
      5 */
      6#ifndef __iwl_drv_h__
      7#define __iwl_drv_h__
      8#include <linux/export.h>
      9
     10/* for all modules */
     11#define DRV_NAME        "iwlwifi"
     12
     13/* radio config bits (actual values from NVM definition) */
     14#define NVM_RF_CFG_DASH_MSK(x)   (x & 0x3)         /* bits 0-1   */
     15#define NVM_RF_CFG_STEP_MSK(x)   ((x >> 2)  & 0x3) /* bits 2-3   */
     16#define NVM_RF_CFG_TYPE_MSK(x)   ((x >> 4)  & 0x3) /* bits 4-5   */
     17#define NVM_RF_CFG_PNUM_MSK(x)   ((x >> 6)  & 0x3) /* bits 6-7   */
     18#define NVM_RF_CFG_TX_ANT_MSK(x) ((x >> 8)  & 0xF) /* bits 8-11  */
     19#define NVM_RF_CFG_RX_ANT_MSK(x) ((x >> 12) & 0xF) /* bits 12-15 */
     20
     21#define EXT_NVM_RF_CFG_FLAVOR_MSK(x)   ((x) & 0xF)
     22#define EXT_NVM_RF_CFG_DASH_MSK(x)   (((x) >> 4) & 0xF)
     23#define EXT_NVM_RF_CFG_STEP_MSK(x)   (((x) >> 8) & 0xF)
     24#define EXT_NVM_RF_CFG_TYPE_MSK(x)   (((x) >> 12) & 0xFFF)
     25#define EXT_NVM_RF_CFG_TX_ANT_MSK(x) (((x) >> 24) & 0xF)
     26#define EXT_NVM_RF_CFG_RX_ANT_MSK(x) (((x) >> 28) & 0xF)
     27
     28/**
     29 * DOC: Driver system flows - drv component
     30 *
     31 * This component implements the system flows such as bus enumeration, bus
     32 * removal. Bus dependent parts of system flows (such as iwl_pci_probe) are in
     33 * bus specific files (transport files). This is the code that is common among
     34 * different buses.
     35 *
     36 * This component is also in charge of managing the several implementations of
     37 * the wifi flows: it will allow to have several fw API implementation. These
     38 * different implementations will differ in the way they implement mac80211's
     39 * handlers too.
     40
     41 * The init flow wrt to the drv component looks like this:
     42 * 1) The bus specific component is called from module_init
     43 * 2) The bus specific component registers the bus driver
     44 * 3) The bus driver calls the probe function
     45 * 4) The bus specific component configures the bus
     46 * 5) The bus specific component calls to the drv bus agnostic part
     47 *    (iwl_drv_start)
     48 * 6) iwl_drv_start fetches the fw ASYNC, iwl_req_fw_callback
     49 * 7) iwl_req_fw_callback parses the fw file
     50 * 8) iwl_req_fw_callback starts the wifi implementation to matches the fw
     51 */
     52
     53struct iwl_drv;
     54struct iwl_trans;
     55struct iwl_cfg;
     56/**
     57 * iwl_drv_start - start the drv
     58 *
     59 * @trans_ops: the ops of the transport
     60 *
     61 * starts the driver: fetches the firmware. This should be called by bus
     62 * specific system flows implementations. For example, the bus specific probe
     63 * function should do bus related operations only, and then call to this
     64 * function. It returns the driver object or %NULL if an error occurred.
     65 */
     66struct iwl_drv *iwl_drv_start(struct iwl_trans *trans);
     67
     68/**
     69 * iwl_drv_stop - stop the drv
     70 *
     71 * @drv:
     72 *
     73 * Stop the driver. This should be called by bus specific system flows
     74 * implementations. For example, the bus specific remove function should first
     75 * call this function and then do the bus related operations only.
     76 */
     77void iwl_drv_stop(struct iwl_drv *drv);
     78
     79/*
     80 * exported symbol management
     81 *
     82 * The driver can be split into multiple modules, in which case some symbols
     83 * must be exported for the sub-modules. However, if it's not split and
     84 * everything is built-in, then we can avoid that.
     85 */
     86#ifdef CONFIG_IWLWIFI_OPMODE_MODULAR
     87#define IWL_EXPORT_SYMBOL(sym)	EXPORT_SYMBOL_NS_GPL(sym, IWLWIFI)
     88#else
     89#define IWL_EXPORT_SYMBOL(sym)
     90#endif
     91
     92/* max retry for init flow */
     93#define IWL_MAX_INIT_RETRY 2
     94
     95#endif /* __iwl_drv_h__ */