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/dev/ath/ath_hal/ar5416/ar5416_cal.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 /*-
    2  * SPDX-License-Identifier: ISC
    3  *
    4  * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
    5  * Copyright (c) 2002-2008 Atheros Communications, Inc.
    6  *
    7  * Permission to use, copy, modify, and/or distribute this software for any
    8  * purpose with or without fee is hereby granted, provided that the above
    9  * copyright notice and this permission notice appear in all copies.
   10  *
   11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   18  *
   19  * $FreeBSD$
   20  */
   21 #ifndef _ATH_AR5416_CAL_H_
   22 #define _ATH_AR5416_CAL_H_
   23 
   24 typedef enum {
   25         ADC_DC_INIT_CAL = 0x1,
   26         ADC_GAIN_CAL    = 0x2,
   27         ADC_DC_CAL      = 0x4,
   28         IQ_MISMATCH_CAL = 0x8
   29 } HAL_CAL_TYPE;
   30 
   31 /* Calibrate state */
   32 typedef enum {
   33         CAL_INACTIVE,
   34         CAL_WAITING,
   35         CAL_RUNNING,
   36         CAL_DONE
   37 } HAL_CAL_STATE;
   38 
   39 typedef union {
   40         uint32_t        u;
   41         int32_t         s;
   42 } HAL_CAL_SAMPLE;
   43 
   44 #define MIN_CAL_SAMPLES     1
   45 #define MAX_CAL_SAMPLES    64
   46 #define INIT_LOG_COUNT      5
   47 #define PER_MIN_LOG_COUNT   2
   48 #define PER_MAX_LOG_COUNT  10
   49 
   50 /* Per Calibration data structure */
   51 typedef struct per_cal_data {
   52         const char      *calName;               /* for diagnostics */
   53         HAL_CAL_TYPE    calType;                /* Type of calibration */
   54         uint32_t        calNumSamples;          /* # SW samples to collect */
   55         uint32_t        calCountMax;            /* # HW samples to collect */
   56         void (*calCollect)(struct ath_hal *);   /* Accumulator function */
   57                                                 /* Post-processing function */
   58         void (*calPostProc)(struct ath_hal *, uint8_t);
   59 } HAL_PERCAL_DATA;
   60 
   61 /* List structure for calibration data */
   62 typedef struct cal_list {
   63         struct cal_list         *calNext;
   64         HAL_CAL_STATE           calState;
   65         const HAL_PERCAL_DATA   *calData;
   66 } HAL_CAL_LIST;
   67 
   68 struct ar5416PerCal {
   69         /*
   70          * Periodic calibration state.
   71          */
   72         HAL_CAL_TYPE    suppCals;
   73         HAL_CAL_LIST    iqCalData;
   74         HAL_CAL_LIST    adcGainCalData;
   75         HAL_CAL_LIST    adcDcCalInitData;
   76         HAL_CAL_LIST    adcDcCalData;
   77         HAL_CAL_LIST    *cal_list;
   78         HAL_CAL_LIST    *cal_last;
   79         HAL_CAL_LIST    *cal_curr;
   80 #define AR5416_MAX_CHAINS               3       /* XXX dup's eeprom def */
   81         HAL_CAL_SAMPLE  caldata[4][AR5416_MAX_CHAINS];
   82         int             calSamples;
   83         /*
   84          * Noise floor cal histogram support.
   85          * XXX be nice to re-use space in ar5212
   86          */
   87 #define AR5416_NUM_NF_READINGS          6       /* (3 chains * (ctl + ext) */
   88         struct ar5212NfCalHist nfCalHist[AR5416_NUM_NF_READINGS];
   89 };
   90 
   91 #define INIT_CAL(_perCal) do {                                          \
   92         (_perCal)->calState = CAL_WAITING;                              \
   93         (_perCal)->calNext = AH_NULL;                                   \
   94 } while (0)
   95 
   96 #define INSERT_CAL(_cal, _perCal) do {                                  \
   97         if ((_cal)->cal_last == AH_NULL) {                              \
   98                 (_cal)->cal_list = (_cal)->cal_last = (_perCal);        \
   99                 ((_cal)->cal_last)->calNext = (_perCal);                \
  100         } else {                                                        \
  101                 ((_cal)->cal_last)->calNext = (_perCal);                \
  102                 (_cal)->cal_last = (_perCal);                           \
  103                 (_perCal)->calNext = (_cal)->cal_list;                  \
  104         }                                                               \
  105 } while (0)
  106 
  107 HAL_BOOL        ar5416InitCalHardware(struct ath_hal *ah, const struct ieee80211_channel *chan);
  108 HAL_BOOL ar5416InitCal(struct ath_hal *, const struct ieee80211_channel *);
  109 HAL_BOOL ar5416PerCalibration(struct ath_hal *,  struct ieee80211_channel *,
  110             HAL_BOOL *isIQdone);
  111 HAL_BOOL ar5416PerCalibrationN(struct ath_hal *, struct ieee80211_channel *,
  112             u_int chainMask, HAL_BOOL longCal, HAL_BOOL *isCalDone);
  113 HAL_BOOL ar5416ResetCalValid(struct ath_hal *,
  114             const struct ieee80211_channel *);
  115 
  116 void    ar5416IQCalCollect(struct ath_hal *ah);
  117 void    ar5416IQCalibration(struct ath_hal *ah, uint8_t numChains);
  118 void    ar5416AdcGainCalCollect(struct ath_hal *ah);
  119 void    ar5416AdcGainCalibration(struct ath_hal *ah, uint8_t numChains);
  120 void    ar5416AdcDcCalCollect(struct ath_hal *ah);
  121 void    ar5416AdcDcCalibration(struct ath_hal *ah, uint8_t numChains);
  122 void    ar5416InitNfHistBuff(struct ar5212NfCalHist *h);
  123 #endif /* _ATH_AR5416_CAL_H_ */

Cache object: a3f43de0007c996c171aec49ca36333d


[ 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.