The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/dev/iwlwifi/iwl-drv.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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 
   53 struct iwl_drv;
   54 struct iwl_trans;
   55 struct 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  */
   66 struct 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  */
   77 void 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__ */

Cache object: c3149adc6e0f182cf96d7453d66b727b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.