⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 td.h

📁 Microsoft WinCE 6.0 BSP FINAL release source code for use with the i.MX27ADS TO2 WCE600_FINAL_MX27_S
💻 H
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// 
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
// 
// Module Name:  
//     Td.h
// 
// Abstract: Provides interface to UHCI host controller
// 
// Notes: 
//
#ifndef __TD_H_
#define __TD_H_

#define EHCI_PAGESIZE 0x1000
#define EHCI_PAGEMASK 0xfff
#define MAX_QTD_PAGE_SIZE 4

#define EHCI_OFFSETOFPAGE(x) (x&EHCI_PAGEMASK)
#define EHCI_PAGEADDR(x) (x& ~EHCI_PAGEMASK)
typedef struct {
    DWORD Terminate:1;
    DWORD TypeSelect:2;
    DWORD Reserved:2;
    DWORD LinkPointer:27;
} LPContext;
//-------Type Select value ------
typedef enum { TYPE_SELECT_ITD=0,TYPE_SELECT_QH=1,TYPE_SELECT_SITD=2,TYPE_SELECT_FSTN=3} NEXTLINKTYPE;
//-------------------------------
typedef union {
    volatile LPContext lpContext;
    volatile DWORD     dwLinkPointer;
} NextLinkPointer;

//--------Type for ITD----------------------------
typedef struct {
    DWORD TransationOffset:12;
    DWORD PageSelect:3;
    DWORD InterruptOnComplete:1;
    DWORD TransactionLength:12;
    DWORD XactErr:1;
    DWORD BabbleDetected:1;
    DWORD DataBufferError:1;
    DWORD Active:1;
} ITD_SCContext;
typedef union {
    ITD_SCContext iTD_SCContext;
    DWORD         dwITD_StatusControl;
}ITD_StatusControl;


typedef struct {
    DWORD DeviceAddress:7;
    DWORD Reserved:1;
    DWORD EndPointNumber:4;
    DWORD BufferPointer:20;
} ITD_BPPContext1;
typedef struct {
    DWORD MaxPacketSize:11;
    DWORD Direction:1;
    DWORD BufferPointer:20;    
} ITD_BPPContext2;
typedef struct {
    DWORD Multi:2;
    DWORD Reserved:10;
    DWORD BufferPointer:20;    
} ITD_BPPContext3;
typedef union {
    ITD_BPPContext1 iTD_BPPContext1;
    ITD_BPPContext2 iTD_BPPContext2;
    ITD_BPPContext3 iTD_BPPContext3;
    DWORD           dwITD_BufferPagePointer;
} ITD_BufferPagePointer;


typedef struct {
    //NextLinkPointer         nextLinkPointer;
    volatile ITD_StatusControl       iTD_StatusControl[8];
    volatile ITD_BufferPagePointer   iTD_BufferPagePointer[7];
} ITD;


//--------Type for SITD----------------------------
typedef struct {
    DWORD DeviceAddress:7;
    DWORD Reserved:1;
    DWORD Endpt:4;
    DWORD Reserved2:4;
    DWORD HubAddress:7;
    DWORD Reserved3:1;
    DWORD PortNumber:7;
    DWORD Direction:1;
}SITD_CCContext;
typedef union {
    SITD_CCContext sITD_CCContext;
    DWORD dwSITD_CapChar;
} SITD_CapChar;

typedef struct {
    DWORD SplitStartMask:8;
    DWORD SplitCompletionMask:8;
    DWORD Reserved:16;
} SITD_MFSCContext;
typedef union  {
    SITD_MFSCContext sITD_MFSCContext;
    DWORD dwMicroFrameSchCtrl;
} MicroFrameSchCtrl;

typedef struct {
    DWORD Reserved:1;
    DWORD SlitXstate:1;
    DWORD MissedMicroFrame:1;
    DWORD XactErr:1;
    DWORD BabbleDetected:1;
    DWORD DataBufferError:1;
    DWORD ERR:1;
    DWORD Active:1;
    DWORD C_Prog_Mask:8;
    DWORD BytesToTransfer:10;
    DWORD Resevered1:4;
    DWORD PageSelect:1;
    DWORD IOC:1;
} SITD_TSContext;
typedef union {
    SITD_TSContext sITD_TSContext;
    DWORD dwSITD_TransferState;
} SITD_TransferState;

typedef struct {
    DWORD CurrentOffset:12;
    DWORD BufferPointer:20;
}SITD_BPPage0;
typedef struct {
    DWORD T_Count:3;
    DWORD TP:2;
    DWORD Reserved:7;
    DWORD BufferPointer:20;
}SITD_BPPage1;
typedef union {
    SITD_BPPage0    sITD_BPPage0;
    SITD_BPPage1    sITD_BPPage1;
    DWORD           dwSITD_BPPage;
}SITD_BPPage;

typedef struct {
    //NextLinkPointer         nextLinkPointer;
    volatile SITD_CapChar            sITD_CapChar;
    volatile MicroFrameSchCtrl       microFrameSchCtrl;
    volatile SITD_TransferState      sITD_TransferState;
    volatile SITD_BPPage             sITD_BPPage[2];
    volatile NextLinkPointer         backPointer;
} SITD;


//--------Type for QTD----------------------------
typedef union {
    LPContext lpContext;
    DWORD     dwLinkPointer;
} NextQTDPointer;
typedef struct {
    DWORD PingState:1;
    DWORD SplitXState:1;
    DWORD MisseduFrame:1;
    DWORD XactErr:1;
    DWORD BabbleDetected:1;
    DWORD DataBufferError:1;
    DWORD Halted:1;
    DWORD Active:1;
    DWORD PID:2;
    DWORD CEER:2;
    DWORD C_Page:3;
    DWORD IOC:1;
    DWORD BytesToTransfer:15;
    DWORD DataToggle:1;
} QTD_TConetext;
typedef union {
    QTD_TConetext   qTD_TContext;
    DWORD           dwQTD_Token;
}QTD_Token;

typedef struct {
    DWORD CurrentOffset:12;
    DWORD BufferPointer:20;
}QTD_BPContext;
typedef union {
    QTD_BPContext   qTD_BPContext;
    DWORD           dwQTD_BufferPointer;
} QTD_BufferPointer;
typedef struct {
    //NextQTDPointer      nextQTDPointer;
    volatile NextQTDPointer      altNextQTDPointer;
    volatile QTD_Token           qTD_Token;
    volatile QTD_BufferPointer   qTD_BufferPointer[5];
} QTD;
//--------Type for QH----------------------------
typedef struct {
// DWORD 1
    DWORD DeviceAddress:7;
    DWORD I:1;
    DWORD Endpt:4;
    DWORD ESP:2;
    DWORD DTC:1;
    DWORD H:1;
    DWORD MaxPacketLength:11;
    DWORD C:1;
    DWORD RL:4;
// DWORD 2
    DWORD UFrameSMask:8;
    DWORD UFrameCMask:8;
    DWORD HubAddr:7;
    DWORD PortNumber:7;
    DWORD Mult:2;
} QH_SESContext;
typedef union {
  QH_SESContext     qH_SESContext;
  DWORD             qH_StaticEndptState[2];
}QH_StaticEndptState;

typedef struct {
    //NextLinkPointer     qH_HorLinkPointer;
    volatile QH_StaticEndptState qH_StaticEndptState;
    volatile NextQTDPointer      currntQTDPointer;
    volatile NextQTDPointer      nextQTDPointer;
    volatile QTD                 qTD_Overlay;
} QH;
//--------Type for FSTN----------------------------
typedef struct {
    NextLinkPointer normalPathLinkPointer;
    NextLinkPointer backPathLinkPointer;
} FSTN;
#define EHCI_PAGE_SIZE 0x1000
#define EHCI_PAGE_ADDR_SHIFT 12
#define EHCI_PAGE_ADDR_MASK  0xFFFFF000
#define EHCI_PAGE_OFFSET_MASK 0xFFF

#define DEFAULT_BLOCK_SIZE EHCI_PAGE_SIZE
#define MAX_PHYSICAL_BLOCK 7

typedef struct {
    DWORD dwNumOfBlock;
    DWORD dwBlockSize;
    DWORD dwStartOffset;
    DWORD dwArrayBlockAddr[MAX_PHYSICAL_BLOCK];
} PhysBufferArray,*PPhysBufferArray;

    
#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -