?? hcd.h
字號:
/*****************************Copyright(c)****************************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File Name: hcd.h
** Latest modified Date: 2007-11-06
** Latest Version: V1.0
** Description: 主控制器驅動, HCD層代碼 hcd.c 頭文件
**
**--------------------------------------------------------------------------------------------------------
** Created By: 吳隆穗 Longsui Wu
** Created date: 2007-11-06
** Version: V1.0
** Descriptions: 初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#ifndef __HCD_H
#define __HCD_H
#include "USBHostConfig.h"
#define __OHCI_HCCA_BASE_ADDR 0x7FD00000
#define __OHCI_ED_BASE_ADDR (__OHCI_HCCA_BASE_ADDR + 0x200)
#define __OHCI_TD_BASE_ADDR (__OHCI_ED_BASE_ADDR + sizeof(__OHCI_ED))
#define __OHCI_DATA_BASE_ADDR (__OHCI_TD_BASE_ADDR + sizeof(__OHCI_TD))
#define __OHCI_DATA_CTRL_BUFFER_LEN 0x200
#define __OHCI_DATA_BASE_ADDR_CTRL __OHCI_DATA_BASE_ADDR /* 控制端點數據緩沖區首地址 */
#define __OHCI_DATA_BASE_ADDR_GEN (__OHCI_DATA_BASE_ADDR_CTRL + __OHCI_DATA_CTRL_BUFFER_LEN)
/* BULK, INTR 等端點數據緩沖區 */
/* ...首地址 */
#define __OHCI_USB_RAM_END_ADDR 0x7FD03FFF
#define __HC_TD_TYPE_GEN 0x01
#define __HC_TD_TYPE_ISO 0x02
#define __HC_CTL_MAXPACKETSIZE 8
#define __HC_BULK_MAXPACKETSIZE 64
#define __HC_ISO_MAXPACKETSIZE 16
#define __OHCI_TD_R 1
#define __OHCI_TD_TYPE_SETUP 0x00
#define __OHCI_TD_TYPE_OUT 0x01
#define __OHCI_TD_TYPE_IN 0x02
#define __OHCI_TD_T_DATA0 0x02
#define __OHCI_TD_T_DATA1 0x03
#define __HC_SPEED_LOW 1
#define __HC_SPEED_FULL 0
#define __HC_CTRL_LIST_EN (0x01 << 4)
#define __HCD_GEN_PARAM_MASK 0x01
#define __HC_GEN_PARAM_MASK 0x02
#define __HCD_TD_TYPE_ED_TYPE_MASK (USB_INT8U)0x03
#define __USB_INT_MIE (1U << 31)
#define __USB_INT_SO (1 << 0)
#define __USB_INT_WDH (1 << 1)
#define __USB_INT_SF (1 << 2)
#define __USB_INT_RD (1 << 3)
#define __USB_INT_UE (1 << 4)
#define __USB_INT_FNO (1 << 5)
#define __USB_INT_RHSC (1 << 6)
#define __USB_INT_OC (1 << 30)
/*********************************************************************************************************
Host Controller Endpoint Descriptor, refer to Section 4.2 of OpenHCI Spec. Rev1.0, Endpoint Descriptor
*********************************************************************************************************/
typedef struct __tagHCCA {
USB_INT32U uiHccaInterrruptTable[32];
USB_INT16U usHccaFrameNumber;
USB_INT16U usHccaPad1;
USB_INT32U uiHccaDoneHead;
USB_INT32U uiReserved[30];
} __HCCA, *__PHCCA;
/*********************************************************************************************************
Host Controller Transfer Descriptor, refer to Section 4.3 of OpenHCI Spec. Rev1.0, Transfer Descriptors
*********************************************************************************************************/
typedef struct __tagHC_GEN_TRANSFER_DESCRIPTOR { /* 通用 TD,for Contrl,bulk,Intr*/
USB_INT32U uiControl; /* 控制字 */
USB_INT8U *pucCBP; /* Current Buffer Pointer */
struct __tagHC_GEN_TRANSFER_DESCRIPTOR *ptdNextTD; /* phys ptr to */
/* ...HC_TRANSFER_DESCRIPTOR */
USB_INT8U *pucBufEnd; /* Buffer end */
} __HC_GEN_TRANSFER_DESCRIPTOR, *__PHC_GEN_TRANSFER_DESCRIPTOR;
/*********************************************************************************************************
HC 中用于同步傳輸的傳輸描述符 TD, 詳細參見OHCI Sepc Rev 1.0 中的 4.3.2
*********************************************************************************************************/
typedef struct __tagHC_ISO_TRANSFER_DESCRIPTOR { /* 用于同步傳輸的TD(ISO TD) */
USB_INT32U uiControl; /* 控制字 */
USB_INT8U *pucBF0; /* Current Buffer Pointer */
struct __tagHC_ISO_TRANSFER_DESCRIPTOR *ptdNextTD; /* phys ptr to */
/* ...ISO_TD */
USB_INT8U *pucBufEnd; /* Buffer end */
USB_INT16U usOP0; /* Offsetn/PSWn */
USB_INT16U usOP1;
USB_INT16U usOP2;
USB_INT16U usOP3;
USB_INT16U usOP4;
USB_INT16U usOP5;
USB_INT16U usOP6;
USB_INT16U usOP7;
} __HC_ISO_TRANSFER_DESCRIPTOR, *__PHC_ISO_TRANSFER_DESCRIPTOR;
/*********************************************************************************************************
HC 中端點描述符 ED, 詳細參見OHCI Sepc Rev 1.0 中的 4.2
*********************************************************************************************************/
typedef struct __tagHC_ENDPOINT_DESCRIPTOR {
USB_INT32U uiControl; /* dword 0:控制位 */
__PHC_GEN_TRANSFER_DESCRIPTOR ptdTailP; /* TRANSFER_DESCRIPTOR物理地址 */
__PHC_GEN_TRANSFER_DESCRIPTOR ptdHeadP; /* flags + phys ptr to TD */
struct __tagHC_ENDPOINT_DESCRIPTOR *pedNextED; /* phys ptr to TD */
} __HC_ENDPOINT_DESCRIPTOR, *__PHC_ENDPOINT_DESCRIPTOR;
typedef struct __tagHC_ISO_ENDPOINT_DESCRIPTOR {
USB_INT32U uiControl; /* dword 0:控制位 */
__PHC_ISO_TRANSFER_DESCRIPTOR ptdTailP; /* TRANSFER_DESCRIPTOR物理地址 */
__PHC_ISO_TRANSFER_DESCRIPTOR ptdHeadP; /* flags + phys ptr to TD */
struct __tagHC_ISO_ENDPOINT_DESCRIPTOR *pedNextED; /* phys ptr to TD */
} __HC_ISO_ENDPOINT_DESCRIPTOR, *__PHC_ISO_ENDPOINT_DESCRIPTOR;
/*********************************************************************************************************
HC 中端點 GEN TD 的參數結構體, 詳細參見OHCI Sepc Rev 1.0 中的 4.3.1
*********************************************************************************************************/
typedef struct __tagHC_GEN_TD_PARAM {
USB_INT8U ucBufferRound; /* 參見OHCI Sepc Rev 1.0 中的 */
/* ... 4.3.1.2 */
USB_INT8U ucDirect_PID; /* 數據流方向或 PID */
USB_INT8U ucDelayIntr; /* DelayInterrupt */
USB_INT8U ucDataToggle; /* 同步數據 */
USB_INT8U *pucCBP;
USB_INT16U usBufLen;
USB_INT16U usReserv;
} __HC_GEN_TD_PARAM, *__PHC_GEN_TD_PARAM;
/*********************************************************************************************************
端點描述符 ED 的集合
*********************************************************************************************************/
typedef struct __tagOHCI_ED {
__HC_ENDPOINT_DESCRIPTOR edsControl;
__HC_ENDPOINT_DESCRIPTOR edsBulkOut;
__HC_ENDPOINT_DESCRIPTOR edsBulkIn;
__HC_ENDPOINT_DESCRIPTOR edsIntrOut;
__HC_ENDPOINT_DESCRIPTOR edsIntrIn;
__HC_ISO_ENDPOINT_DESCRIPTOR edsIso;
} __OHCI_ED, *__POHCI_ED;
/*********************************************************************************************************
TD鏈中尾部傳輸描述符 TD 的集合
*********************************************************************************************************/
typedef struct __tagOHCI_TD_TAIL {
__HC_ISO_TRANSFER_DESCRIPTOR tdsIsoTail;
__HC_GEN_TRANSFER_DESCRIPTOR tdsContrlTail;
__HC_GEN_TRANSFER_DESCRIPTOR tdsBulkOutTail;
__HC_GEN_TRANSFER_DESCRIPTOR tdsBulkInTail;
__HC_GEN_TRANSFER_DESCRIPTOR tdsIntrOutTail;
__HC_GEN_TRANSFER_DESCRIPTOR tdsIntrInTail;
}__OHCI_TD_TAIL, *__POHCI_TD_TAIL;
/*********************************************************************************************************
HCD 中端點 ED 的參數結構體, 詳細參見OHCI Sepc Rev 1.0 中的 4.2.2
*********************************************************************************************************/
typedef struct __tagHCD_ED_PARAM { /* 通用 TD,for Contrl 和 bulk */
USB_INT8U ucMethod; /* 如果該值為0,則添加ED的函數 */
/* __hcdAddEd()將忽略這些參數 */
USB_INT8U ucReserved[3]; /* 保留.也是為了避免pad警告 */
USB_INT8U ucFunAddr; /* 設備(從機)地址 */
USB_INT8U ucEpNum; /* 端點號 */
USB_INT8U ucDirection; /* 數據流方向,見OHCI Sepc 4.2.2*/
USB_INT8U ucSpeed; /* 速度: 全速(0) 或 低速(1) */
USB_INT8U ucSkip; /* 是(1)否(0)跳過此端點 */
USB_INT8U ucFormat; /* 該端點下的 TD 格式,GEN TD(0)*/
/* ...或 ISO TD(1) */
USB_INT16U usMaxPktSize; /* 該端點的最大緩沖區大小 */
__PHC_GEN_TRANSFER_DESCRIPTOR ptdTailP; /* TRANSFER_DESCRIPTOR物理地址 */
__PHC_GEN_TRANSFER_DESCRIPTOR ptdHeadP; /* flags + phys ptr to TD */
__PHC_ENDPOINT_DESCRIPTOR pedNextED; /* phys ptr to TD */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -