亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? hif.h

?? WLAN在AR6000程序中的驅(qū)動(dòng)代碼
?? H
字號(hào):
//------------------------------------------------------------------------------
// <copyright file="hif.h" company="Atheros">
//    Copyright (c) 2006 Microsoft Corporation.  All rights reserved.
//    Copyright (c) 2006 Atheros Corporation.  All rights reserved.
//
//    The use and distribution terms for this software are covered by the
//    Microsoft Limited Permissive License (Ms-LPL) 
//    http://www.microsoft.com/resources/sharedsource/licensingbasics/limitedpermissivelicense.mspx 
//    which can be found in the file MS-LPL.txt at the root of this distribution.
//    By using this software in any fashion, you are agreeing to be bound by
//    the terms of this license.
//
//    You must not remove this notice, or any other, from this software.
// </copyright>
// 
// <summary>
//    Windows CE Wifi Driver for AR-6000
// </summary>
//------------------------------------------------------------------------------
//==============================================================================
// HIF specific declarations and prototypes
//
// Author(s): ="Atheros"
//==============================================================================


#ifndef _HIF_H_
#define _HIF_H_

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* Header files */
#include "athdefs.h"
#include "athtypes.h"
#include "osapi.h"

typedef struct htc_callbacks HTC_CALLBACKS;
typedef struct hif_request HIF_REQUEST;
typedef struct hif_device HIF_DEVICE;

typedef enum {
    HIF_READ,
    HIF_WRITE
} HIF_DIRECTION;

typedef enum {
    HIF_BASIC_IO,
    HIF_EXTENDED_IO
} HIF_CMDTYPE;

typedef enum {
    HIF_SYNCHRONOUS,
    HIF_ASYNCHRONOUS
} HIF_EXECMODE;

typedef enum {
    HIF_BYTE_BASIS,
    HIF_BLOCK_BASIS
} HIF_DATAMODE;

typedef enum {
    HIF_FIXED_ADDRESS,
    HIF_INCREMENTAL_ADDRESS
} HIF_ADDRMODE;

#define HIF_MAX_DEVICES                 1

#if defined(SDIO)
#define HIF_MBOX_BLOCK_SIZE             128
#define HIF_MBOX_BASE_ADDR              0x800
#define HIF_MBOX_WIDTH                  0x800
#define HIF_MBOX0_BLOCK_SIZE            1
#define HIF_MBOX1_BLOCK_SIZE            HIF_MBOX_BLOCK_SIZE
#define HIF_MBOX2_BLOCK_SIZE            HIF_MBOX_BLOCK_SIZE
#define HIF_MBOX3_BLOCK_SIZE            HIF_MBOX_BLOCK_SIZE
#elif defined(MSIO)
#define HIF_MBOX_BASE_ADDR              0x800
#define HIF_MBOX_WIDTH                  0x800
#define HIF_MBOX0_BLOCK_SIZE            1
#define HIF_MBOX1_BLOCK_SIZE            1
#define HIF_MBOX2_BLOCK_SIZE            1
#define HIF_MBOX3_BLOCK_SIZE            1
#elif defined(CF)
#define HIF_MBOX_BLOCK_SIZE             2
#define HIF_MBOX_BASE_ADDR              0x0
#define HIF_MBOX_WIDTH                  0x100
#ifdef ONLY_16BIT
#define HIF_MBOX0_BLOCK_SIZE            HIF_MBOX_BLOCK_SIZE
#else
#define HIF_MBOX0_BLOCK_SIZE            1
#endif
#define HIF_MBOX1_BLOCK_SIZE            HIF_MBOX_BLOCK_SIZE
#define HIF_MBOX2_BLOCK_SIZE            HIF_MBOX_BLOCK_SIZE
#define HIF_MBOX3_BLOCK_SIZE            HIF_MBOX_BLOCK_SIZE
#else
#error "Unsupported interface"
#endif

#define HIF_FRAME_REQUEST(request, _direction, _type,    \
                          _emode, _dmode, _amode) do {   \
    (request)->direction = _direction;                   \
    (request)->type = _type;                             \
    (request)->emode = _emode;                           \
    (request)->dmode = _dmode;                           \
    (request)->amode = _amode;                           \
} while(0)

#define HIF_MBOX_START_ADDR(mbox)                        \
    HIF_MBOX_BASE_ADDR + mbox * HIF_MBOX_WIDTH

#define HIF_MBOX_END_ADDR(mbox)	                         \
    HIF_MBOX_START_ADDR(mbox) + HIF_MBOX_WIDTH - 1

struct htc_callbacks {
    A_UCHAR *name;
    A_UINT32 id;
    A_STATUS (* deviceInsertedHandler)(HIF_DEVICE *device);
    A_STATUS (* deviceRemovedHandler)(HIF_DEVICE *device);
    A_STATUS (* deviceSuspendHandler)(HIF_DEVICE *device);
    A_STATUS (* deviceResumeHandler)(HIF_DEVICE *device);
    A_STATUS (* deviceWakeupHandler)(HIF_DEVICE *device);
    A_STATUS (* rwCompletionHandler)(void *context, A_STATUS status);
    A_STATUS (* deviceInterruptDisabler)(HIF_DEVICE *device,A_BOOL *callDsr);
    A_STATUS (* deviceInterruptEnabler)(HIF_DEVICE *device);
    A_STATUS (* dsrHandler)(HIF_DEVICE *device);
};

/* 
 * The request structure captures different attributes that can precisely 
 * characterize a command and its behavior for different physical interfaces.
 */
struct hif_request {
    HIF_DIRECTION       direction; /* HIF_READ/HIF_WRITE */
    HIF_CMDTYPE	        type; /* HIF_BASIC_IO/HIF_EXTENDED_IO */
    HIF_EXECMODE        emode; /* HIF_SYNCHRONOUS/HIF_ASYNCHRONOUS */
    HIF_DATAMODE        dmode; /* HIF_BYTE_BASIS/HIF_BLOCK_BASIS */
    HIF_ADDRMODE        amode; /* HIF_FIXED_ADDRESS/HIF_INCREMENTAL_ADDRESS */
};

/* 
 * This API is used by the HTC layer to register different callback routines
 * with the HIF layer. Support for following events has been captured - DSR,
 * Read/Write completion, Device insertion/removal, Device suspension/
 * resumption/wakeup. In addition to this, the API is also used to register
 * the name and the revision of the chip. The latter can be used to verify
 * the revision of the chip read from the device before reporting it to HTC.
 */
void
HIFRegisterCallbacks(HTC_CALLBACKS *callbacks);

/*
 * This API is used to provide the read/write interface over the specific bus
 * interface.
 * address - Starting address in the dragon's address space. For mailbox
 *           writes, it refers to the start of the mbox boundary. It should
 *           be ensured that the last byte falls on the mailbox's EOM. For 
 *           mailbox reads, it refers to the end of the mbox boundary.
 * buffer - Pointer to the buffer containg the data to be transmitted or
 *          received.
 * length - Amount of data to be transmitted or received.
 * request - Characterizes the attributes of the command.
 *     direction - Direction of transfer (HIF_READ/HIF_WRITE).
 *     type - An interface may support different kind of read/write commands. 
 *            For example: SDIO supports CMD52/CMD53s. In case of MSIO it 
 *            translates to using different kinds of TPCs. The command type 
 *            is thus divided into a basic and an extended command and can 
 *            be specified using HIF_BASIC_IO/HIF_EXTENDED_IO.
 *     emode - This indicates the whether the command is to be executed in a 
 *             blocking or non-blocking fashion (HIF_SYNCHRONOUS/
 *             HIF_ASYNCHRONOUS). The read/write data paths in HTC have been 
 *             implemented using the asynchronous mode allowing the the bus 
 *             driver to indicate the completion of operation through the 
 *             registered callback routine. The requirement primarily comes 
 *             from the contexts these operations get called from (a driver's 
 *             transmit context or the ISR context in case of receive). 
 *             Support for both of these modes is essential.
 *     dmode - An interface may support different kinds of commands based on 
 *             the tradeoff between the amount of data it can carry and the 
 *             setup time. Byte and Block modes are supported (HIF_BYTE_BASIS/
 *             HIF_BLOCK_BASIS). In case of latter, the data is rounded off 
 *             to the nearest block size by padding. The size of the block is 
 *             configurable at compile time using the HIF_BLOCK_SIZE and is 
 *             negotiated with the target during initialization after the 
 *             dragon interrupts are enabled.
 *     amode - This indicates if the address has to be incremented on dragon 
 *             after every read/write operation (HIF?FIXED_ADDRESS/
 *             HIF_INCREMENTAL_ADDRESS).
 */
A_STATUS 
HIFReadWrite(HIF_DEVICE    *device, 
             A_UINT32       address, 
             A_UCHAR       *buffer, 
             A_UINT32       length, 
             HIF_REQUEST   *request, 
             void          *context);

#if 0
Not required since the hif layer can automatically do all this once the device
is discovered and then report the instance to the HTC layer only after
everything is successfully finished.
/*
 * This is called right after the device insertion event is reported to HTC.
 * It is expected to perform atleast the following functions:
 *   i) Configure the interface - bus width, clock rate, operational current.
 *  ii) Enable the interrupts and unmask any IRQs.
 * iii) Enable dragon by writing to the IO Enable bit if the interface supports
 *      one.
 */
A_STATUS
HIFInitializeInterface(void *device);
#endif

/* 
 * This can be initiated from the unload driver context ie when the HTCShutdown
 * routine is called.
 */
void
HIFShutDownDevice(HIF_DEVICE *device);

/*
 * This should translate to an acknowledgment to the bus driver indicating that
 * the previous interrupt request has been serviced and the all the relevant
 * sources have been cleared. HTC is ready to process more interrupts.
 * This should prevent the bus driver from raising an interrupt unless the
 * previous one has been serviced and acknowledged using the previous API.
 */
void
HIFAckInterrupt(HIF_DEVICE *device);

void
HIFMaskInterrupt(HIF_DEVICE *device);

void
HIFUnMaskInterrupt(HIF_DEVICE *device);

#ifdef __cplusplus
}
#endif

#endif /* _HIF_H_ */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产欧美在线播放| 激情丁香综合五月| 国产伦精品一区二区三区视频青涩 | 亚洲乱码一区二区三区在线观看| 免费看黄色91| 欧美一区二区大片| 视频在线观看一区| 欧美性一级生活| 天天操天天干天天综合网| 欧美日韩激情在线| 天天综合色天天综合| 7777精品伊人久久久大香线蕉完整版 | 国产精品国产三级国产aⅴ原创| 国产一区二区三区综合 | 极品少妇一区二区三区精品视频 | 日韩午夜在线影院| 国产一区日韩二区欧美三区| 久久日韩粉嫩一区二区三区| 成人精品视频一区二区三区尤物| 国产精品久久久一本精品 | 久久久久久久久久久99999| 国产福利不卡视频| 亚洲一二三区不卡| 久久久久久免费网| 在线观看www91| 精品无人码麻豆乱码1区2区 | 亚洲宅男天堂在线观看无病毒| 国产高清不卡二三区| 国产亚洲自拍一区| 一道本成人在线| 麻豆91在线观看| 亚洲在线观看免费视频| 久久综合九色综合欧美98| 91老师国产黑色丝袜在线| 久久成人av少妇免费| 一区二区三区精品在线观看| 欧美精品一区二区三区四区| 色综合久久综合网欧美综合网 | 欧美一区二区三区爱爱| 色94色欧美sute亚洲13| 成人在线视频一区| 国产曰批免费观看久久久| 亚洲成人综合在线| 亚洲欧美日韩系列| 日韩欧美国产综合在线一区二区三区| 91偷拍与自偷拍精品| 成人激情免费电影网址| 麻豆视频一区二区| 亚洲人成小说网站色在线| 国产亚洲一区二区三区| 26uuu国产电影一区二区| 91精品国产91综合久久蜜臀| 欧美视频在线不卡| 欧美日韩精品一区二区天天拍小说| 成人黄色综合网站| 成人免费三级在线| 成人激情图片网| 在线观看日韩精品| 91精品国产综合久久香蕉麻豆 | 国产精品久久久久三级| 精品不卡在线视频| 中文字幕亚洲区| 亚洲成在线观看| 国产一区二区精品在线观看| 高清不卡一区二区在线| 色综合久久久久久久久| 精品视频1区2区| 久久尤物电影视频在线观看| 国产欧美日产一区| 久久蜜臀精品av| 中文字幕不卡在线播放| 亚洲欧美一区二区三区极速播放 | 精品欧美一区二区在线观看| 精品国内片67194| 亚洲女人的天堂| 久久99精品久久久久久久久久久久| 国产在线麻豆精品观看| 色一情一乱一乱一91av| 精品国产91九色蝌蚪| 亚洲精品视频免费看| 久久99精品国产.久久久久久 | 激情久久五月天| 色偷偷成人一区二区三区91| 精品国产1区2区3区| 亚洲电影一区二区三区| 97se亚洲国产综合自在线观| 91精品国产aⅴ一区二区| 一区二区高清免费观看影视大全| 久久99精品久久久久久动态图| 在线观看日韩国产| 国产精品久99| 精品亚洲成a人在线观看| 91年精品国产| 亚洲激情综合网| 国产v日产∨综合v精品视频| 欧美一区二区三区四区高清| 亚洲成在人线免费| 欧美怡红院视频| 亚洲午夜电影网| 欧美中文字幕一区| 亚洲午夜国产一区99re久久| 欧美午夜精品一区二区蜜桃| 一区二区三区免费| 日本乱人伦aⅴ精品| 一区二区三区在线影院| 欧美日韩五月天| 亚洲成人1区2区| 欧美一二三四区在线| 免费观看久久久4p| 欧美精品一区二区三区四区| 国产成人精品亚洲日本在线桃色| 欧美精品一区视频| caoporn国产精品| 亚洲综合免费观看高清完整版在线| 色综合色狠狠综合色| 日韩精彩视频在线观看| 久久影院电视剧免费观看| 成人av资源在线| 亚洲情趣在线观看| 日本道色综合久久| 九九在线精品视频| 亚洲美女免费在线| 欧美zozo另类异族| 日本乱人伦一区| 国模无码大尺度一区二区三区| 亚洲欧美色图小说| 久久综合九色综合欧美就去吻 | 7777精品伊人久久久大香线蕉超级流畅| 亚洲综合av网| 亚洲国产精品av| 日韩视频一区二区在线观看| 92精品国产成人观看免费| 麻豆精品视频在线观看免费| 亚洲另类在线制服丝袜| 国产午夜精品一区二区| 欧美一卡2卡三卡4卡5免费| 91捆绑美女网站| 成人国产在线观看| 国产精品亚洲专一区二区三区 | 91色porny在线视频| 国产麻豆视频精品| 亚洲欧洲日韩av| 久久亚洲精品小早川怜子| 56国语精品自产拍在线观看| 91日韩精品一区| 91啦中文在线观看| 色综合久久六月婷婷中文字幕| 高清在线成人网| 成人激情综合网站| 成人精品小蝌蚪| 91丨九色丨尤物| 欧洲av一区二区嗯嗯嗯啊| 欧美视频一区二| 欧美一区二区三区白人| 日韩一区和二区| 2020国产精品久久精品美国| 2020国产精品自拍| 成人欧美一区二区三区在线播放| 国产精品美女一区二区三区| 国产精品成人一区二区艾草| 亚洲视频一区在线| 亚洲国产sm捆绑调教视频| 日欧美一区二区| 国产一区二区三区免费| 国产99久久久国产精品潘金网站| 97成人超碰视| 日韩一区二区三区高清免费看看| 久久精品视频在线免费观看| 国产精品久久久久一区二区三区共 | 欧美国产精品v| 亚洲一二三专区| 国产精品66部| 在线视频国内自拍亚洲视频| 精品剧情在线观看| 一区二区三区蜜桃网| 国产精品主播直播| 欧美在线观看一二区| 国产色一区二区| 五月综合激情婷婷六月色窝| 国产成人久久精品77777最新版本| 欧美亚洲国产一区在线观看网站| 久久这里只有精品6| 午夜久久久影院| 色呦呦日韩精品| 欧美国产日韩一二三区| 精品在线播放免费| 欧美日韩一区不卡| 亚洲一区二区视频| 91香蕉视频mp4| 国产精品嫩草久久久久| 久久精品99国产精品日本| 9191久久久久久久久久久| 亚洲人成精品久久久久久| 99久久精品免费| 国产精品无遮挡| av亚洲产国偷v产偷v自拍| 国产亚洲欧美日韩在线一区| 国产精品中文字幕一区二区三区| 欧美va亚洲va香蕉在线| 亚洲一区免费视频|