📄 usbd_otghs.lst
字号:
###############################################################################
# #
# 24/Apr/2009 16:18:17 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = arm #
# Endian = little #
# Source file = D:\basic-dataflash-project-at91sam7se-ek\at91lib\usb\dev #
# ice\core\USBD_OTGHS.c #
# Command line = D:\basic-dataflash-project-at91sam7se-ek\at91lib\usb\dev #
# ice\core\USBD_OTGHS.c -D at91sam7se512 -D sram -D #
# TRACE_LEVEL=4 -lC D:\basic-dataflash-project-at91sam7se- #
# ek\at91sam7se-ek\basic-dataflash-project\ewp\at91sam7se5 #
# 12_sram\List\ --remarks --diag_suppress Pe826,Pe1375 -o #
# D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
# asic-dataflash-project\ewp\at91sam7se512_sram\Obj\ #
# --no_cse --no_unroll --no_inline --no_code_motion #
# --no_tbaa --no_clustering --no_scheduling --debug #
# --endian little --cpu ARM7TDMI -e --fpu None #
# --dlib_config "D:\Program Files\arm\ARM\INC\DLib_Config_ #
# Full.h" -I D:\basic-dataflash-project-at91sam7se-ek\at91 #
# sam7se-ek\basic-dataflash-project\ewp\..\..\..\at91lib/p #
# eripherals\ -I D:\basic-dataflash-project-at91sam7se-ek\ #
# at91sam7se-ek\basic-dataflash-project\ewp\..\..\..\at91l #
# ib\ -I D:\basic-dataflash-project-at91sam7se-ek\at91sam7 #
# se-ek\basic-dataflash-project\ewp\..\..\..\at91lib/memor #
# ies\ -I D:\basic-dataflash-project-at91sam7se-ek\at91sam #
# 7se-ek\basic-dataflash-project\ewp\..\..\..\at91lib/boar #
# ds/at91sam7se-ek\ -I "D:\Program Files\arm\ARM\INC\" #
# --interwork --cpu_mode arm -Oh #
# List file = D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
# asic-dataflash-project\ewp\at91sam7se512_sram\List\USBD_ #
# OTGHS.lst #
# Object file = D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\b #
# asic-dataflash-project\ewp\at91sam7se512_sram\Obj\USBD_O #
# TGHS.o #
# #
# #
###############################################################################
D:\basic-dataflash-project-at91sam7se-ek\at91lib\usb\device\core\USBD_OTGHS.c
1 /* ----------------------------------------------------------------------------
2 * ATMEL Microcontroller Software Support
3 * ----------------------------------------------------------------------------
4 * Copyright (c) 2008, Atmel Corporation
5 *
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * - Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the disclaimer below.
13 *
14 * Atmel's name may not be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 * ----------------------------------------------------------------------------
28 */
29
30 /*!
31 Functions for OTGHS peripheral usage.
32 */
33
34 //------------------------------------------------------------------------------
35 // Headers
36 //------------------------------------------------------------------------------
37
38 #include <board.h>
39
40 #ifdef CHIP_OTGHS
41
42 #include "common.h"
43 #include "trace.h"
44 #include "usb.h"
45
46 //------------------------------------------------------------------------------
47 // Definitions
48 //------------------------------------------------------------------------------
49
50 #define NUM_IT_MAX (AT91C_BASE_OTGHS->OTGHS_IPFEATURES & AT91C_OTGHS_EPT_NBR_MAX)
51 #define NUM_IT_MAX_DMA ((AT91C_BASE_OTGHS->OTGHS_IPFEATURES & AT91C_OTGHS_DMA_CHANNEL_NBR)>>4)
52
53 #define SHIFT_DMA 24
54 #define SHIFT_INTERUPT 12
55
56 #define DMA
57
58 //------------------------------------------------------------------------------
59 // Structures
60 //------------------------------------------------------------------------------
61
62 // \brief Endpoint states
63 typedef enum {
64
65 endpointStateDisabled,
66 endpointStateIdle,
67 endpointStateWrite,
68 endpointStateRead,
69 endpointStateHalted
70
71 } EndpointState_t;
72
73 //------------------------------------------------------------------------------
74 // Macros
75 //------------------------------------------------------------------------------
76
77 //------------------------------------------------------------------------------
78 // Internal Functions
79 //------------------------------------------------------------------------------
80 //------------------------------------------------------------------------------
81 // \brief Returns a pointer to the OTGHS controller interface used by an USB
82 // driver
83 //
84 // The pointer is cast to the correct type (AT91PS_OTGHS).
85 // \param pUsb Pointer to a S_usb instance
86 // \return Pointer to the USB controller interface
87 // \see S_usb
88 //------------------------------------------------------------------------------
89 static AT91PS_OTGHS OTGHS_GetDriverInterface(const S_usb *pUsb)
90 {
91 return (AT91PS_OTGHS) pUsb->pDriver->pInterface;
92 }
93
94 //------------------------------------------------------------------------------
95 // \fn OTGHS_GetInterfaceEPT
96 // \brief Returns OTGHS endpoint FIFO interface from S_usb structure
97 //------------------------------------------------------------------------------
98 static AT91PS_OTGHS_EPTFIFO OTGHS_GetInterfaceEPT(const S_usb *pUsb)
99 {
100 return (AT91PS_OTGHS_EPTFIFO) pUsb->pDriver->pEndpointFIFO;
101 }
102
103
104 //------------------------------------------------------------------------------
105 // \brief Enables the peripheral clock of the USB controller associated with
106 // the specified USB driver
107 // \param pUsb Pointer to a S_usb instance
108 // \see S_usb
109 //------------------------------------------------------------------------------
110 static void OTGHS_EnableMCK(const S_usb *pUsb)
111 {
112
113 }
114
115 //------------------------------------------------------------------------------
116 // \brief Disables the peripheral clock of the USB controller associated with
117 // the specified USB driver
118 // \param pUsb Pointer to a S_usb instance
119 // \see S_usb
120 //------------------------------------------------------------------------------
121 static void OTGHS_DisableMCK(const S_usb *pUsb)
122 {
123
124 }
125
126 //------------------------------------------------------------------------------
127 // \brief Enables the 48MHz clock of the USB controller associated with
128 // the specified USB driver
129 // \param pUsb Pointer to a S_usb instance
130 // \see S_usb
131 //------------------------------------------------------------------------------
132 static void OTGHS_EnableOTGHSCK(const S_usb *pUsb)
133 {
134
135 }
136
137 //------------------------------------------------------------------------------
138 // \brief Disables the 48MHz clock of the USB controller associated with
139 // the specified USB driver
140 // \param pUsb Pointer to a S_usb instance
141 // \see S_usb
142 //------------------------------------------------------------------------------
143 static void OTGHS_DisableOTGHSCK(const S_usb *pUsb)
144 {
145
146 }
147
148 //------------------------------------------------------------------------------
149 // \brief Enables the transceiver of the USB controller associated with
150 // the specified USB driver
151 // \param pUsb Pointer to a S_usb instance
152 // \see S_usb
153 //------------------------------------------------------------------------------
154 static void OTGHS_EnableTransceiver(const S_usb *pUsb)
155 {
156 SET(OTGHS_GetDriverInterface(pUsb)->OTGHS_CTRL, AT91C_OTGHS_OTGPADE);
157 }
158
159 //------------------------------------------------------------------------------
160 // \brief Disables the transceiver of the USB controller associated with
161 // the specified USB driver
162 // \param pUsb Pointer to a S_usb instance
163 // \see S_usb
164 //------------------------------------------------------------------------------
165 static void OTGHS_DisableTransceiver(const S_usb *pUsb)
166 {
167 CLEAR(OTGHS_GetDriverInterface(pUsb)->OTGHS_CTRL, AT91C_OTGHS_OTGPADE);
168 }
169
170 //------------------------------------------------------------------------------
171 // \brief Invokes the callback associated with a finished transfer on an
172 // endpoint
173 // \param pEndpoint Pointer to a S_usb_endpoint instance
174 // \param bStatus Status code returned by the transfer operation
175 // \see Status codes
176 // \see S_usb_endpoint
177 //------------------------------------------------------------------------------
178 static void OTGHS_EndOfTransfer(S_usb_endpoint *pEndpoint,
179 char bStatus)
180 {
181 if ((pEndpoint->dState == endpointStateWrite)
182 || (pEndpoint->dState == endpointStateRead)) {
183
184 TRACE_DEBUG_WP("E");
185
186 // Endpoint returns in Idle state
187 pEndpoint->dState = endpointStateIdle;
188
189 // Invoke callback is present
190 if (pEndpoint->fCallback != 0) {
191
192 pEndpoint->fCallback((unsigned int) pEndpoint->pArgument,
193 (unsigned int) bStatus,
194 pEndpoint->dBytesTransferred,
195 pEndpoint->dBytesRemaining
196 + pEndpoint->dBytesBuffered);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -