Compact Flash I/O test
Embed:
(wiki syntax)
Show/hide line numbers
usbhost_lpc17xx.h
00001 /* 00002 ************************************************************************************************************** 00003 * NXP USB Host Stack 00004 * 00005 * (c) Copyright 2008, NXP SemiConductors 00006 * (c) Copyright 2008, OnChip Technologies LLC 00007 * All Rights Reserved 00008 * 00009 * www.nxp.com 00010 * www.onchiptech.com 00011 * 00012 * File : usbhost_lpc17xx.h 00013 * Programmer(s) : Ravikanth.P 00014 * Version : 00015 * 00016 ************************************************************************************************************** 00017 */ 00018 00019 #include "Terminal.h" 00020 00021 #ifndef USBHOST_LPC17xx_H 00022 #define USBHOST_LPC17xx_H 00023 00024 /* 00025 ************************************************************************************************************** 00026 * INCLUDE HEADER FILES 00027 ************************************************************************************************************** 00028 */ 00029 00030 #include "usbhost_inc.h" 00031 00032 /* 00033 ************************************************************************************************************** 00034 * PRINT CONFIGURATION 00035 ************************************************************************************************************** 00036 */ 00037 00038 #define PRINT_ENABLE 1 00039 00040 #if PRINT_ENABLE 00041 #define PRINT_Log(...) pc.printf(__VA_ARGS__);pc.printf("\r\n") 00042 #define PRINT_Err(rc) pc.printf("ERROR: In %s at Line %u - rc = %d\r\n", __FUNCTION__, __LINE__, rc) 00043 00044 #else 00045 #define PRINT_Log(...) do {} while(0) 00046 #define PRINT_Err(rc) do {} while(0) 00047 00048 #endif 00049 00050 /* 00051 ************************************************************************************************************** 00052 * GENERAL DEFINITIONS 00053 ************************************************************************************************************** 00054 */ 00055 00056 #define DESC_LENGTH(x) x[0] 00057 #define DESC_TYPE(x) x[1] 00058 00059 00060 #define HOST_GET_DESCRIPTOR(descType, descIndex, data, length) \ 00061 Host_CtrlRecv(USB_DEVICE_TO_HOST | USB_RECIPIENT_DEVICE, GET_DESCRIPTOR, \ 00062 (descType << 8)|(descIndex), 0, length, data) 00063 00064 #define HOST_SET_ADDRESS(new_addr) \ 00065 Host_CtrlSend(USB_HOST_TO_DEVICE | USB_RECIPIENT_DEVICE, SET_ADDRESS, \ 00066 new_addr, 0, 0, NULL) 00067 00068 #define USBH_SET_CONFIGURATION(configNum) \ 00069 Host_CtrlSend(USB_HOST_TO_DEVICE | USB_RECIPIENT_DEVICE, SET_CONFIGURATION, \ 00070 configNum, 0, 0, NULL) 00071 00072 #define USBH_SET_INTERFACE(ifNum, altNum) \ 00073 Host_CtrlSend(USB_HOST_TO_DEVICE | USB_RECIPIENT_INTERFACE, SET_INTERFACE, \ 00074 altNum, ifNum, 0, NULL) 00075 00076 /* 00077 ************************************************************************************************************** 00078 * OHCI OPERATIONAL REGISTER FIELD DEFINITIONS 00079 ************************************************************************************************************** 00080 */ 00081 00082 /* ------------------ HcControl Register --------------------- */ 00083 #define OR_CONTROL_CLE 0x00000010 00084 #define OR_CONTROL_BLE 0x00000020 00085 #define OR_CONTROL_HCFS 0x000000C0 00086 #define OR_CONTROL_HC_OPER 0x00000080 00087 /* ----------------- HcCommandStatus Register ----------------- */ 00088 #define OR_CMD_STATUS_HCR 0x00000001 00089 #define OR_CMD_STATUS_CLF 0x00000002 00090 #define OR_CMD_STATUS_BLF 0x00000004 00091 /* --------------- HcInterruptStatus Register ----------------- */ 00092 #define OR_INTR_STATUS_WDH 0x00000002 00093 #define OR_INTR_STATUS_RHSC 0x00000040 00094 /* --------------- HcInterruptEnable Register ----------------- */ 00095 #define OR_INTR_ENABLE_WDH 0x00000002 00096 #define OR_INTR_ENABLE_RHSC 0x00000040 00097 #define OR_INTR_ENABLE_MIE 0x80000000 00098 /* ---------------- HcRhDescriptorA Register ------------------ */ 00099 #define OR_RH_STATUS_LPSC 0x00010000 00100 #define OR_RH_STATUS_DRWE 0x00008000 00101 /* -------------- HcRhPortStatus[1:NDP] Register -------------- */ 00102 #define OR_RH_PORT_CCS 0x00000001 00103 #define OR_RH_PORT_PRS 0x00000010 00104 #define OR_RH_PORT_CSC 0x00010000 00105 #define OR_RH_PORT_PRSC 0x00100000 00106 00107 00108 /* 00109 ************************************************************************************************************** 00110 * FRAME INTERVAL 00111 ************************************************************************************************************** 00112 */ 00113 00114 #define FI 0x2EDF /* 12000 bits per frame (-1) */ 00115 #define DEFAULT_FMINTERVAL ((((6 * (FI - 210)) / 7) << 16) | FI) 00116 00117 /* 00118 ************************************************************************************************************** 00119 * TRANSFER DESCRIPTOR CONTROL FIELDS 00120 ************************************************************************************************************** 00121 */ 00122 00123 #define TD_ROUNDING (USB_INT32U) (0x00040000) /* Buffer Rounding */ 00124 #define TD_SETUP (USB_INT32U)(0) /* Direction of Setup Packet */ 00125 #define TD_IN (USB_INT32U)(0x00100000) /* Direction In */ 00126 #define TD_OUT (USB_INT32U)(0x00080000) /* Direction Out */ 00127 #define TD_DELAY_INT(x) (USB_INT32U)((x) << 21) /* Delay Interrupt */ 00128 #define TD_TOGGLE_0 (USB_INT32U)(0x02000000) /* Toggle 0 */ 00129 #define TD_TOGGLE_1 (USB_INT32U)(0x03000000) /* Toggle 1 */ 00130 #define TD_CC (USB_INT32U)(0xF0000000) /* Completion Code */ 00131 00132 /* 00133 ************************************************************************************************************** 00134 * USB STANDARD REQUEST DEFINITIONS 00135 ************************************************************************************************************** 00136 */ 00137 00138 #define USB_DESCRIPTOR_TYPE_DEVICE 1 00139 #define USB_DESCRIPTOR_TYPE_CONFIGURATION 2 00140 #define USB_DESCRIPTOR_TYPE_INTERFACE 4 00141 #define USB_DESCRIPTOR_TYPE_ENDPOINT 5 00142 /* ----------- Control RequestType Fields ----------- */ 00143 #define USB_DEVICE_TO_HOST 0x80 00144 #define USB_HOST_TO_DEVICE 0x00 00145 #define USB_REQUEST_TYPE_CLASS 0x20 00146 #define USB_RECIPIENT_DEVICE 0x00 00147 #define USB_RECIPIENT_INTERFACE 0x01 00148 /* -------------- USB Standard Requests -------------- */ 00149 #define SET_ADDRESS 5 00150 #define GET_DESCRIPTOR 6 00151 #define SET_CONFIGURATION 9 00152 #define SET_INTERFACE 11 00153 00154 /* 00155 ************************************************************************************************************** 00156 * TYPE DEFINITIONS 00157 ************************************************************************************************************** 00158 */ 00159 00160 typedef struct hcEd { /* ----------- HostController EndPoint Descriptor ------------- */ 00161 volatile USB_INT32U Control; /* Endpoint descriptor control */ 00162 volatile USB_INT32U TailTd; /* Physical address of tail in Transfer descriptor list */ 00163 volatile USB_INT32U HeadTd; /* Physcial address of head in Transfer descriptor list */ 00164 volatile USB_INT32U Next; /* Physical address of next Endpoint descriptor */ 00165 } HCED; 00166 00167 typedef struct hcTd { /* ------------ HostController Transfer Descriptor ------------ */ 00168 volatile USB_INT32U Control; /* Transfer descriptor control */ 00169 volatile USB_INT32U CurrBufPtr; /* Physical address of current buffer pointer */ 00170 volatile USB_INT32U Next; /* Physical pointer to next Transfer Descriptor */ 00171 volatile USB_INT32U BufEnd; /* Physical address of end of buffer */ 00172 } HCTD; 00173 00174 typedef struct hcca { /* ----------- Host Controller Communication Area ------------ */ 00175 volatile USB_INT32U IntTable[32]; /* Interrupt Table */ 00176 volatile USB_INT32U FrameNumber; /* Frame Number */ 00177 volatile USB_INT32U DoneHead; /* Done Head */ 00178 volatile USB_INT08U Reserved[116]; /* Reserved for future use */ 00179 volatile USB_INT08U Unknown[4]; /* Unused */ 00180 } HCCA; 00181 00182 /* 00183 ************************************************************************************************************** 00184 * EXTERN DECLARATIONS 00185 ************************************************************************************************************** 00186 */ 00187 00188 extern volatile HCED *EDBulkIn; /* BulkIn endpoint descriptor structure */ 00189 extern volatile HCED *EDBulkOut; /* BulkOut endpoint descriptor structure */ 00190 extern volatile HCTD *TDHead; /* Head transfer descriptor structure */ 00191 extern volatile HCTD *TDTail; /* Tail transfer descriptor structure */ 00192 extern volatile USB_INT08U *TDBuffer; /* Current Buffer Pointer of transfer descriptor */ 00193 extern volatile USB_INT32U HOST_RhscIntr; 00194 00195 extern volatile int gUSBConnected; 00196 00197 /* 00198 ************************************************************************************************************** 00199 * FUNCTION PROTOTYPES 00200 ************************************************************************************************************** 00201 */ 00202 00203 void Host_Init (void); 00204 00205 extern "C" void USB_IRQHandler(void) __irq; 00206 00207 USB_INT32S Host_EnumDev (void); 00208 00209 USB_INT32S Host_ProcessTD(volatile HCED *ed, 00210 volatile USB_INT32U token, 00211 volatile USB_INT08U *buffer, 00212 USB_INT32U buffer_len); 00213 00214 void Host_DelayUS ( USB_INT32U delay); 00215 void Host_DelayMS ( USB_INT32U delay); 00216 00217 00218 void Host_TDInit (volatile HCTD *td); 00219 void Host_EDInit (volatile HCED *ed); 00220 void Host_HCCAInit (volatile HCCA *hcca); 00221 00222 USB_INT32S Host_CtrlRecv ( USB_INT08U bm_request_type, 00223 USB_INT08U b_request, 00224 USB_INT16U w_value, 00225 USB_INT16U w_index, 00226 USB_INT16U w_length, 00227 volatile USB_INT08U *buffer); 00228 00229 USB_INT32S Host_CtrlSend ( USB_INT08U bm_request_type, 00230 USB_INT08U b_request, 00231 USB_INT16U w_value, 00232 USB_INT16U w_index, 00233 USB_INT16U w_length, 00234 volatile USB_INT08U *buffer); 00235 00236 void Host_FillSetup( USB_INT08U bm_request_type, 00237 USB_INT08U b_request, 00238 USB_INT16U w_value, 00239 USB_INT16U w_index, 00240 USB_INT16U w_length); 00241 00242 00243 void Host_WDHWait (void); 00244 00245 00246 USB_INT32U ReadLE32U (volatile USB_INT08U *pmem); 00247 void WriteLE32U (volatile USB_INT08U *pmem, 00248 USB_INT32U val); 00249 USB_INT16U ReadLE16U (volatile USB_INT08U *pmem); 00250 void WriteLE16U (volatile USB_INT08U *pmem, 00251 USB_INT16U val); 00252 USB_INT32U ReadBE32U (volatile USB_INT08U *pmem); 00253 void WriteBE32U (volatile USB_INT08U *pmem, 00254 USB_INT32U val); 00255 USB_INT16U ReadBE16U (volatile USB_INT08U *pmem); 00256 void WriteBE16U (volatile USB_INT08U *pmem, 00257 USB_INT16U val); 00258 00259 #endif
Generated on Sat Jul 16 2022 16:37:46 by
1.7.2
Eli Hughes