max4146x_comp

Dependencies:   MAX14690

Committer:
sdivarci
Date:
Sun Oct 25 20:10:02 2020 +0000
Revision:
0:0061165683ee
sdivarci

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sdivarci 0:0061165683ee 1 /*******************************************************************************
sdivarci 0:0061165683ee 2 * DISCLAIMER
sdivarci 0:0061165683ee 3 * This software is supplied by Renesas Electronics Corporation and is only
sdivarci 0:0061165683ee 4 * intended for use with Renesas products. No other uses are authorized. This
sdivarci 0:0061165683ee 5 * software is owned by Renesas Electronics Corporation and is protected under
sdivarci 0:0061165683ee 6 * all applicable laws, including copyright laws.
sdivarci 0:0061165683ee 7 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
sdivarci 0:0061165683ee 8 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
sdivarci 0:0061165683ee 9 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
sdivarci 0:0061165683ee 10 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
sdivarci 0:0061165683ee 11 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
sdivarci 0:0061165683ee 12 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
sdivarci 0:0061165683ee 13 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
sdivarci 0:0061165683ee 14 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
sdivarci 0:0061165683ee 15 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
sdivarci 0:0061165683ee 16 * Renesas reserves the right, without notice, to make changes to this software
sdivarci 0:0061165683ee 17 * and to discontinue the availability of this software. By using this software,
sdivarci 0:0061165683ee 18 * you agree to the additional terms and conditions found by accessing the
sdivarci 0:0061165683ee 19 * following link:
sdivarci 0:0061165683ee 20 * http://www.renesas.com/disclaimer
sdivarci 0:0061165683ee 21 * Copyright (C) 2012 - 2014 Renesas Electronics Corporation. All rights reserved.
sdivarci 0:0061165683ee 22 *******************************************************************************/
sdivarci 0:0061165683ee 23 /*******************************************************************************
sdivarci 0:0061165683ee 24 * File Name : usb1_function_sub.c
sdivarci 0:0061165683ee 25 * $Rev: 1116 $
sdivarci 0:0061165683ee 26 * $Date:: 2014-07-09 16:29:19 +0900#$
sdivarci 0:0061165683ee 27 * Device(s) : RZ/A1H
sdivarci 0:0061165683ee 28 * Tool-Chain :
sdivarci 0:0061165683ee 29 * OS : None
sdivarci 0:0061165683ee 30 * H/W Platform :
sdivarci 0:0061165683ee 31 * Description : RZ/A1H R7S72100 USB Sample Program
sdivarci 0:0061165683ee 32 * Operation :
sdivarci 0:0061165683ee 33 * Limitations :
sdivarci 0:0061165683ee 34 *******************************************************************************/
sdivarci 0:0061165683ee 35
sdivarci 0:0061165683ee 36
sdivarci 0:0061165683ee 37 /*******************************************************************************
sdivarci 0:0061165683ee 38 Includes <System Includes> , "Project Includes"
sdivarci 0:0061165683ee 39 *******************************************************************************/
sdivarci 0:0061165683ee 40 #include "usb1_function.h"
sdivarci 0:0061165683ee 41
sdivarci 0:0061165683ee 42
sdivarci 0:0061165683ee 43 /*******************************************************************************
sdivarci 0:0061165683ee 44 Typedef definitions
sdivarci 0:0061165683ee 45 *******************************************************************************/
sdivarci 0:0061165683ee 46
sdivarci 0:0061165683ee 47
sdivarci 0:0061165683ee 48 /*******************************************************************************
sdivarci 0:0061165683ee 49 Macro definitions
sdivarci 0:0061165683ee 50 *******************************************************************************/
sdivarci 0:0061165683ee 51
sdivarci 0:0061165683ee 52
sdivarci 0:0061165683ee 53 /*******************************************************************************
sdivarci 0:0061165683ee 54 Imported global variables and functions (from other files)
sdivarci 0:0061165683ee 55 *******************************************************************************/
sdivarci 0:0061165683ee 56 #if 0
sdivarci 0:0061165683ee 57 extern const uint16_t *g_usb1_function_EndPntPtr[];
sdivarci 0:0061165683ee 58 extern uint8_t g_usb1_function_DeviceDescriptor[];
sdivarci 0:0061165683ee 59 extern uint8_t *g_usb1_function_ConfigurationPtr[];
sdivarci 0:0061165683ee 60 #endif
sdivarci 0:0061165683ee 61
sdivarci 0:0061165683ee 62
sdivarci 0:0061165683ee 63 /*******************************************************************************
sdivarci 0:0061165683ee 64 Exported global variables and functions (to be accessed by other files)
sdivarci 0:0061165683ee 65 *******************************************************************************/
sdivarci 0:0061165683ee 66
sdivarci 0:0061165683ee 67
sdivarci 0:0061165683ee 68 /*******************************************************************************
sdivarci 0:0061165683ee 69 Private global variables and functions
sdivarci 0:0061165683ee 70 *******************************************************************************/
sdivarci 0:0061165683ee 71
sdivarci 0:0061165683ee 72
sdivarci 0:0061165683ee 73 /*******************************************************************************
sdivarci 0:0061165683ee 74 * Function Name: usb1_function_ResetDCP
sdivarci 0:0061165683ee 75 * Description : Initializes the default control pipe(DCP).
sdivarci 0:0061165683ee 76 * Outline : Reset default control pipe
sdivarci 0:0061165683ee 77 * Arguments : none
sdivarci 0:0061165683ee 78 * Return Value : none
sdivarci 0:0061165683ee 79 *******************************************************************************/
sdivarci 0:0061165683ee 80 void usb1_function_ResetDCP (void)
sdivarci 0:0061165683ee 81 {
sdivarci 0:0061165683ee 82 USB201.DCPCFG = 0;
sdivarci 0:0061165683ee 83 #if 0
sdivarci 0:0061165683ee 84 USB201.DCPMAXP = g_usb1_function_DeviceDescriptor[7];
sdivarci 0:0061165683ee 85 #else
sdivarci 0:0061165683ee 86 USB201.DCPMAXP = 64;
sdivarci 0:0061165683ee 87 #endif
sdivarci 0:0061165683ee 88
sdivarci 0:0061165683ee 89 USB201.CFIFOSEL = (uint16_t)(USB_FUNCTION_BITMBW_8 | USB_FUNCTION_BITBYTE_LITTLE);
sdivarci 0:0061165683ee 90 USB201.D0FIFOSEL = (uint16_t)(USB_FUNCTION_BITMBW_8 | USB_FUNCTION_BITBYTE_LITTLE);
sdivarci 0:0061165683ee 91 USB201.D1FIFOSEL = (uint16_t)(USB_FUNCTION_BITMBW_8 | USB_FUNCTION_BITBYTE_LITTLE);
sdivarci 0:0061165683ee 92 }
sdivarci 0:0061165683ee 93
sdivarci 0:0061165683ee 94 /*******************************************************************************
sdivarci 0:0061165683ee 95 * Function Name: usb1_function_ResetEP
sdivarci 0:0061165683ee 96 * Description : Initializes the end point.
sdivarci 0:0061165683ee 97 * Arguments : uint16_t num ; Configuration Number
sdivarci 0:0061165683ee 98 * Return Value : none
sdivarci 0:0061165683ee 99 *******************************************************************************/
sdivarci 0:0061165683ee 100 #if 0
sdivarci 0:0061165683ee 101 void usb1_function_ResetEP (uint16_t num)
sdivarci 0:0061165683ee 102 {
sdivarci 0:0061165683ee 103 uint16_t pipe;
sdivarci 0:0061165683ee 104 uint16_t ep;
sdivarci 0:0061165683ee 105 uint16_t index;
sdivarci 0:0061165683ee 106 uint16_t buf;
sdivarci 0:0061165683ee 107 uint16_t * tbl;
sdivarci 0:0061165683ee 108
sdivarci 0:0061165683ee 109 tbl = (uint16_t *)(g_usb1_function_EndPntPtr[num - 1]);
sdivarci 0:0061165683ee 110
sdivarci 0:0061165683ee 111 for (ep = 1; ep <= USB_FUNCTION_MAX_EP_NO; ++ep)
sdivarci 0:0061165683ee 112 {
sdivarci 0:0061165683ee 113 if (g_usb1_function_EPTableIndex[ep] != USB_FUNCTION_EP_ERROR)
sdivarci 0:0061165683ee 114 {
sdivarci 0:0061165683ee 115 index = (uint16_t)(USB_FUNCTION_EPTABLE_LENGTH * g_usb1_function_EPTableIndex[ep]);
sdivarci 0:0061165683ee 116 pipe = (uint16_t)(tbl[index + 0] & USB_FUNCTION_BITCURPIPE);
sdivarci 0:0061165683ee 117
sdivarci 0:0061165683ee 118 g_usb1_function_PipeTbl[pipe] = (uint16_t)(((tbl[index + 1] & USB_FUNCTION_DIRFIELD) << 3) |
sdivarci 0:0061165683ee 119 ep |
sdivarci 0:0061165683ee 120 (tbl[index + 0] & USB_FUNCTION_FIFO_USE));
sdivarci 0:0061165683ee 121
sdivarci 0:0061165683ee 122 if ((tbl[index + 1] & USB_FUNCTION_DIRFIELD) == USB_FUNCTION_DIR_P_OUT)
sdivarci 0:0061165683ee 123 {
sdivarci 0:0061165683ee 124 tbl[index + 1] |= USB_FUNCTION_SHTNAKON;
sdivarci 0:0061165683ee 125 #ifdef __USB_DMA_BFRE_ENABLE__
sdivarci 0:0061165683ee 126 /* this routine cannnot be perfomred if read operation is executed in buffer size */
sdivarci 0:0061165683ee 127 if (((tbl[index + 0] & USB_FUNCTION_FIFO_USE) == USB_FUNCTION_D0FIFO_DMA) ||
sdivarci 0:0061165683ee 128 ((tbl[index + 0] & USB_FUNCTION_FIFO_USE) == USB_FUNCTION_D1FIFO_DMA))
sdivarci 0:0061165683ee 129 {
sdivarci 0:0061165683ee 130 tbl[index + 1] |= USB_FUNCTION_BFREON;
sdivarci 0:0061165683ee 131 }
sdivarci 0:0061165683ee 132 #endif
sdivarci 0:0061165683ee 133 }
sdivarci 0:0061165683ee 134
sdivarci 0:0061165683ee 135 /* Interrupt Disable */
sdivarci 0:0061165683ee 136 buf = USB201.BRDYENB;
sdivarci 0:0061165683ee 137 buf &= (uint16_t)~g_usb1_function_bit_set[pipe];
sdivarci 0:0061165683ee 138 USB201.BRDYENB = buf;
sdivarci 0:0061165683ee 139 buf = USB201.NRDYENB;
sdivarci 0:0061165683ee 140 buf &= (uint16_t)~g_usb1_function_bit_set[pipe];
sdivarci 0:0061165683ee 141 USB201.NRDYENB = buf;
sdivarci 0:0061165683ee 142 buf = USB201.BEMPENB;
sdivarci 0:0061165683ee 143 buf &= (uint16_t)~g_usb1_function_bit_set[pipe];
sdivarci 0:0061165683ee 144 USB201.BEMPENB = buf;
sdivarci 0:0061165683ee 145
sdivarci 0:0061165683ee 146 usb1_function_set_pid_nak(pipe);
sdivarci 0:0061165683ee 147
sdivarci 0:0061165683ee 148 /* CurrentPIPE Clear */
sdivarci 0:0061165683ee 149 if (RZA_IO_RegRead_16(&USB201.CFIFOSEL,
sdivarci 0:0061165683ee 150 USB_CFIFOSEL_CURPIPE_SHIFT,
sdivarci 0:0061165683ee 151 USB_CFIFOSEL_CURPIPE) == pipe)
sdivarci 0:0061165683ee 152 {
sdivarci 0:0061165683ee 153 RZA_IO_RegWrite_16(&USB201.CFIFOSEL,
sdivarci 0:0061165683ee 154 0,
sdivarci 0:0061165683ee 155 USB_CFIFOSEL_CURPIPE_SHIFT,
sdivarci 0:0061165683ee 156 USB_CFIFOSEL_CURPIPE);
sdivarci 0:0061165683ee 157 }
sdivarci 0:0061165683ee 158
sdivarci 0:0061165683ee 159 if (RZA_IO_RegRead_16(&USB201.D0FIFOSEL,
sdivarci 0:0061165683ee 160 USB_DnFIFOSEL_CURPIPE_SHIFT,
sdivarci 0:0061165683ee 161 USB_DnFIFOSEL_CURPIPE) == pipe)
sdivarci 0:0061165683ee 162 {
sdivarci 0:0061165683ee 163 RZA_IO_RegWrite_16(&USB201.D0FIFOSEL,
sdivarci 0:0061165683ee 164 0,
sdivarci 0:0061165683ee 165 USB_DnFIFOSEL_CURPIPE_SHIFT,
sdivarci 0:0061165683ee 166 USB_DnFIFOSEL_CURPIPE);
sdivarci 0:0061165683ee 167 }
sdivarci 0:0061165683ee 168
sdivarci 0:0061165683ee 169 if (RZA_IO_RegRead_16(&USB201.D1FIFOSEL,
sdivarci 0:0061165683ee 170 USB_DnFIFOSEL_CURPIPE_SHIFT,
sdivarci 0:0061165683ee 171 USB_DnFIFOSEL_CURPIPE) == pipe)
sdivarci 0:0061165683ee 172 {
sdivarci 0:0061165683ee 173 RZA_IO_RegWrite_16(&USB201.D1FIFOSEL,
sdivarci 0:0061165683ee 174 0,
sdivarci 0:0061165683ee 175 USB_DnFIFOSEL_CURPIPE_SHIFT,
sdivarci 0:0061165683ee 176 USB_DnFIFOSEL_CURPIPE);
sdivarci 0:0061165683ee 177 }
sdivarci 0:0061165683ee 178
sdivarci 0:0061165683ee 179 /* PIPE Configuration */
sdivarci 0:0061165683ee 180 USB201.PIPESEL = pipe;
sdivarci 0:0061165683ee 181 USB201.PIPECFG = tbl[index + 1];
sdivarci 0:0061165683ee 182 USB201.PIPEBUF = tbl[index + 2];
sdivarci 0:0061165683ee 183 USB201.PIPEMAXP = tbl[index + 3];
sdivarci 0:0061165683ee 184 USB201.PIPEPERI = tbl[index + 4];
sdivarci 0:0061165683ee 185
sdivarci 0:0061165683ee 186 g_usb1_function_pipecfg[pipe] = tbl[index + 1];
sdivarci 0:0061165683ee 187 g_usb1_function_pipebuf[pipe] = tbl[index + 2];
sdivarci 0:0061165683ee 188 g_usb1_function_pipemaxp[pipe] = tbl[index + 3];
sdivarci 0:0061165683ee 189 g_usb1_function_pipeperi[pipe] = tbl[index + 4];
sdivarci 0:0061165683ee 190
sdivarci 0:0061165683ee 191 /* Buffer Clear */
sdivarci 0:0061165683ee 192 usb1_function_set_sqclr(pipe);
sdivarci 0:0061165683ee 193 usb1_function_aclrm(pipe);
sdivarci 0:0061165683ee 194
sdivarci 0:0061165683ee 195 /* init Global */
sdivarci 0:0061165683ee 196 g_usb1_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_IDLE;
sdivarci 0:0061165683ee 197 g_usb1_function_PipeDataSize[pipe] = 0;
sdivarci 0:0061165683ee 198 }
sdivarci 0:0061165683ee 199 }
sdivarci 0:0061165683ee 200 }
sdivarci 0:0061165683ee 201 #endif
sdivarci 0:0061165683ee 202
sdivarci 0:0061165683ee 203 /*******************************************************************************
sdivarci 0:0061165683ee 204 * Function Name: usb1_function_EpToPipe
sdivarci 0:0061165683ee 205 * Description : Returns the pipe which end point specified by the argument is
sdivarci 0:0061165683ee 206 * : allocated to.
sdivarci 0:0061165683ee 207 * Arguments : uint16_t ep ; Direction + Endpoint Number
sdivarci 0:0061165683ee 208 * Return Value : USB_FUNCTION_EP_ERROR : Error
sdivarci 0:0061165683ee 209 * : Others : Pipe Number
sdivarci 0:0061165683ee 210 *******************************************************************************/
sdivarci 0:0061165683ee 211 uint16_t usb1_function_EpToPipe (uint16_t ep)
sdivarci 0:0061165683ee 212 {
sdivarci 0:0061165683ee 213 uint16_t pipe;
sdivarci 0:0061165683ee 214
sdivarci 0:0061165683ee 215 for (pipe = 1; pipe <= USB_FUNCTION_MAX_PIPE_NO; pipe++)
sdivarci 0:0061165683ee 216 {
sdivarci 0:0061165683ee 217 if ((g_usb1_function_PipeTbl[pipe] & 0x00ff) == ep)
sdivarci 0:0061165683ee 218 {
sdivarci 0:0061165683ee 219 return pipe;
sdivarci 0:0061165683ee 220 }
sdivarci 0:0061165683ee 221 }
sdivarci 0:0061165683ee 222
sdivarci 0:0061165683ee 223 return USB_FUNCTION_EP_ERROR;
sdivarci 0:0061165683ee 224 }
sdivarci 0:0061165683ee 225
sdivarci 0:0061165683ee 226 /*******************************************************************************
sdivarci 0:0061165683ee 227 * Function Name: usb1_function_InitEPTable
sdivarci 0:0061165683ee 228 * Description : Sets the end point by the Alternate setting value of the
sdivarci 0:0061165683ee 229 * : configuration number and the interface number specified by the
sdivarci 0:0061165683ee 230 * : argument.
sdivarci 0:0061165683ee 231 * Arguments : uint16_t Con_Num ; Configuration Number
sdivarci 0:0061165683ee 232 * : uint16_t Int_Num ; Interface Number
sdivarci 0:0061165683ee 233 * : uint16_t Alt_Num ; Alternate Setting
sdivarci 0:0061165683ee 234 * Return Value : none
sdivarci 0:0061165683ee 235 *******************************************************************************/
sdivarci 0:0061165683ee 236 #if 0
sdivarci 0:0061165683ee 237 void usb1_function_InitEPTable (uint16_t Con_Num, uint16_t Int_Num, uint16_t Alt_Num)
sdivarci 0:0061165683ee 238 {
sdivarci 0:0061165683ee 239 uint8_t * ptr;
sdivarci 0:0061165683ee 240 uint16_t point_interface;
sdivarci 0:0061165683ee 241 uint16_t point_endpoint;
sdivarci 0:0061165683ee 242 uint16_t length;
sdivarci 0:0061165683ee 243 uint16_t start;
sdivarci 0:0061165683ee 244 uint16_t numbers;
sdivarci 0:0061165683ee 245 uint16_t endpoint;
sdivarci 0:0061165683ee 246
sdivarci 0:0061165683ee 247 ptr = (uint8_t *)g_usb1_function_ConfigurationPtr[Con_Num - 1];
sdivarci 0:0061165683ee 248 point_interface = *ptr;
sdivarci 0:0061165683ee 249 length = (uint16_t)((uint16_t)*(ptr + 3) << 8 | (uint16_t)*(ptr + 2));
sdivarci 0:0061165683ee 250 ptr += *ptr;
sdivarci 0:0061165683ee 251 start = 0;
sdivarci 0:0061165683ee 252 numbers = 0;
sdivarci 0:0061165683ee 253 point_endpoint = 0;
sdivarci 0:0061165683ee 254
sdivarci 0:0061165683ee 255 for (; point_interface < length;)
sdivarci 0:0061165683ee 256 {
sdivarci 0:0061165683ee 257 switch (*(ptr + 1)) /* Descriptor Type ? */
sdivarci 0:0061165683ee 258 {
sdivarci 0:0061165683ee 259 case USB_FUNCTION_DT_INTERFACE: /* Interface */
sdivarci 0:0061165683ee 260 if ((*(ptr + 2) == Int_Num) && (*(ptr + 3) == Alt_Num))
sdivarci 0:0061165683ee 261 {
sdivarci 0:0061165683ee 262 numbers = *(ptr + 4);
sdivarci 0:0061165683ee 263 }
sdivarci 0:0061165683ee 264 else
sdivarci 0:0061165683ee 265 {
sdivarci 0:0061165683ee 266 start += *(ptr + 4);
sdivarci 0:0061165683ee 267 }
sdivarci 0:0061165683ee 268 point_interface += *ptr;
sdivarci 0:0061165683ee 269 ptr += *ptr;
sdivarci 0:0061165683ee 270 break;
sdivarci 0:0061165683ee 271
sdivarci 0:0061165683ee 272 case USB_FUNCTION_DT_ENDPOINT: /* Endpoint */
sdivarci 0:0061165683ee 273 if (point_endpoint < numbers)
sdivarci 0:0061165683ee 274 {
sdivarci 0:0061165683ee 275 endpoint = (uint16_t)(*(ptr + 2) & 0x0f);
sdivarci 0:0061165683ee 276 g_usb1_function_EPTableIndex[endpoint] = (uint16_t)(start + point_endpoint);
sdivarci 0:0061165683ee 277 ++point_endpoint;
sdivarci 0:0061165683ee 278 }
sdivarci 0:0061165683ee 279 point_interface += *ptr;
sdivarci 0:0061165683ee 280 ptr += *ptr;
sdivarci 0:0061165683ee 281 break;
sdivarci 0:0061165683ee 282
sdivarci 0:0061165683ee 283 case USB_FUNCTION_DT_DEVICE: /* Device */
sdivarci 0:0061165683ee 284 case USB_FUNCTION_DT_CONFIGURATION: /* Configuration */
sdivarci 0:0061165683ee 285 case USB_FUNCTION_DT_STRING: /* String */
sdivarci 0:0061165683ee 286 default: /* Class, Vendor, else */
sdivarci 0:0061165683ee 287 point_interface += *ptr;
sdivarci 0:0061165683ee 288 ptr += *ptr;
sdivarci 0:0061165683ee 289 break;
sdivarci 0:0061165683ee 290 }
sdivarci 0:0061165683ee 291 }
sdivarci 0:0061165683ee 292 }
sdivarci 0:0061165683ee 293 #endif
sdivarci 0:0061165683ee 294
sdivarci 0:0061165683ee 295 /*******************************************************************************
sdivarci 0:0061165683ee 296 * Function Name: usb1_function_GetConfigNum
sdivarci 0:0061165683ee 297 * Description : Returns the number of configuration referring to the number of
sdivarci 0:0061165683ee 298 * : configuration described in the device descriptor.
sdivarci 0:0061165683ee 299 * Arguments : none
sdivarci 0:0061165683ee 300 * Return Value : Number of possible configurations (bNumConfigurations).
sdivarci 0:0061165683ee 301 *******************************************************************************/
sdivarci 0:0061165683ee 302 #if 0
sdivarci 0:0061165683ee 303 uint16_t usb1_function_GetConfigNum (void)
sdivarci 0:0061165683ee 304 {
sdivarci 0:0061165683ee 305 return (uint16_t)g_usb1_function_DeviceDescriptor[17];
sdivarci 0:0061165683ee 306 }
sdivarci 0:0061165683ee 307 #endif
sdivarci 0:0061165683ee 308
sdivarci 0:0061165683ee 309 /*******************************************************************************
sdivarci 0:0061165683ee 310 * Function Name: usb1_function_GetInterfaceNum
sdivarci 0:0061165683ee 311 * Description : Returns the number of interface referring to the number of
sdivarci 0:0061165683ee 312 * : interface described in the configuration descriptor.
sdivarci 0:0061165683ee 313 * Arguments : uint16_t num ; Configuration Number
sdivarci 0:0061165683ee 314 * Return Value : Number of this interface (bNumInterfaces).
sdivarci 0:0061165683ee 315 *******************************************************************************/
sdivarci 0:0061165683ee 316 #if 0
sdivarci 0:0061165683ee 317 uint16_t usb1_function_GetInterfaceNum (uint16_t num)
sdivarci 0:0061165683ee 318 {
sdivarci 0:0061165683ee 319 return (uint16_t)(*(g_usb1_function_ConfigurationPtr[num - 1] + 4));
sdivarci 0:0061165683ee 320 }
sdivarci 0:0061165683ee 321 #endif
sdivarci 0:0061165683ee 322
sdivarci 0:0061165683ee 323 /*******************************************************************************
sdivarci 0:0061165683ee 324 * Function Name: usb1_function_GetAltNum
sdivarci 0:0061165683ee 325 * Description : Returns the Alternate setting value of the configuration number
sdivarci 0:0061165683ee 326 * : and the interface number specified by the argument.
sdivarci 0:0061165683ee 327 * Arguments : uint16_t Con_Num ; Configuration Number
sdivarci 0:0061165683ee 328 * : uint16_t Int_Num ; Interface Number
sdivarci 0:0061165683ee 329 * Return Value : Value used to select this alternate setting(bAlternateSetting).
sdivarci 0:0061165683ee 330 *******************************************************************************/
sdivarci 0:0061165683ee 331 #if 0
sdivarci 0:0061165683ee 332 uint16_t usb1_function_GetAltNum (uint16_t Con_Num, uint16_t Int_Num)
sdivarci 0:0061165683ee 333 {
sdivarci 0:0061165683ee 334 uint8_t * ptr;
sdivarci 0:0061165683ee 335 uint16_t point;
sdivarci 0:0061165683ee 336 uint16_t alt_num = 0;
sdivarci 0:0061165683ee 337 uint16_t length;
sdivarci 0:0061165683ee 338
sdivarci 0:0061165683ee 339 ptr = (uint8_t *)(g_usb1_function_ConfigurationPtr[Con_Num - 1]);
sdivarci 0:0061165683ee 340 point = ptr[0];
sdivarci 0:0061165683ee 341 ptr += ptr[0]; /* InterfaceDescriptor[0] */
sdivarci 0:0061165683ee 342 length = (uint16_t)(*(g_usb1_function_ConfigurationPtr[Con_Num - 1] + 2));
sdivarci 0:0061165683ee 343 length |= (uint16_t)((uint16_t)(*(g_usb1_function_ConfigurationPtr[Con_Num - 1] + 3)) << 8);
sdivarci 0:0061165683ee 344
sdivarci 0:0061165683ee 345 for (; point < length;) /* Search Descriptor Table size */
sdivarci 0:0061165683ee 346 {
sdivarci 0:0061165683ee 347 switch (ptr[1]) /* Descriptor Type ? */
sdivarci 0:0061165683ee 348 {
sdivarci 0:0061165683ee 349 case USB_FUNCTION_DT_INTERFACE: /* Interface */
sdivarci 0:0061165683ee 350 if (Int_Num == ptr[2])
sdivarci 0:0061165683ee 351 {
sdivarci 0:0061165683ee 352 alt_num = (uint16_t)ptr[3]; /* Alternate Number count */
sdivarci 0:0061165683ee 353 }
sdivarci 0:0061165683ee 354 point += ptr[0];
sdivarci 0:0061165683ee 355 ptr += ptr[0];
sdivarci 0:0061165683ee 356 break;
sdivarci 0:0061165683ee 357
sdivarci 0:0061165683ee 358 case USB_FUNCTION_DT_DEVICE: /* Device */
sdivarci 0:0061165683ee 359 case USB_FUNCTION_DT_CONFIGURATION: /* Configuration */
sdivarci 0:0061165683ee 360 case USB_FUNCTION_DT_STRING: /* String */
sdivarci 0:0061165683ee 361 case USB_FUNCTION_DT_ENDPOINT: /* Endpoint */
sdivarci 0:0061165683ee 362 default: /* Class, Vendor, else */
sdivarci 0:0061165683ee 363 point += ptr[0];
sdivarci 0:0061165683ee 364 ptr += ptr[0];
sdivarci 0:0061165683ee 365 break;
sdivarci 0:0061165683ee 366 }
sdivarci 0:0061165683ee 367 }
sdivarci 0:0061165683ee 368 return alt_num;
sdivarci 0:0061165683ee 369 }
sdivarci 0:0061165683ee 370 #endif
sdivarci 0:0061165683ee 371
sdivarci 0:0061165683ee 372 /*******************************************************************************
sdivarci 0:0061165683ee 373 * Function Name: usb1_function_CheckRemoteWakeup
sdivarci 0:0061165683ee 374 * Description : Returns the result of the remote wake up function is supported
sdivarci 0:0061165683ee 375 * : or not referring to the configuration descriptor.
sdivarci 0:0061165683ee 376 * Arguments : none
sdivarci 0:0061165683ee 377 * Return Value : DEVDRV_USBF_ON : Support Remote Wakeup
sdivarci 0:0061165683ee 378 * : DEVDRV_USBF_OFF : not Support Remote Wakeup
sdivarci 0:0061165683ee 379 *******************************************************************************/
sdivarci 0:0061165683ee 380 #if 0
sdivarci 0:0061165683ee 381 uint16_t usb1_function_CheckRemoteWakeup (void)
sdivarci 0:0061165683ee 382 {
sdivarci 0:0061165683ee 383 uint8_t atr;
sdivarci 0:0061165683ee 384
sdivarci 0:0061165683ee 385 if (g_usb1_function_ConfigNum == 0)
sdivarci 0:0061165683ee 386 {
sdivarci 0:0061165683ee 387 return DEVDRV_USBF_OFF;
sdivarci 0:0061165683ee 388 }
sdivarci 0:0061165683ee 389
sdivarci 0:0061165683ee 390 atr = *(g_usb1_function_ConfigurationPtr[g_usb1_function_ConfigNum - 1] + 7);
sdivarci 0:0061165683ee 391
sdivarci 0:0061165683ee 392 if (atr & USB_FUNCTION_CF_RWUP)
sdivarci 0:0061165683ee 393 {
sdivarci 0:0061165683ee 394 return DEVDRV_USBF_ON;
sdivarci 0:0061165683ee 395 }
sdivarci 0:0061165683ee 396
sdivarci 0:0061165683ee 397 return DEVDRV_USBF_OFF;
sdivarci 0:0061165683ee 398 }
sdivarci 0:0061165683ee 399 #endif
sdivarci 0:0061165683ee 400
sdivarci 0:0061165683ee 401 /*******************************************************************************
sdivarci 0:0061165683ee 402 * Function Name: usb1_function_clear_alt
sdivarci 0:0061165683ee 403 * Description : Initializes the Alternate setting area.
sdivarci 0:0061165683ee 404 * Arguments : none
sdivarci 0:0061165683ee 405 * Return Value : none
sdivarci 0:0061165683ee 406 *******************************************************************************/
sdivarci 0:0061165683ee 407 #if 0
sdivarci 0:0061165683ee 408 void usb1_function_clear_alt (void)
sdivarci 0:0061165683ee 409 {
sdivarci 0:0061165683ee 410 int i;
sdivarci 0:0061165683ee 411
sdivarci 0:0061165683ee 412 for (i = 0; i < USB_FUNCTION_ALT_NO; ++i)
sdivarci 0:0061165683ee 413 {
sdivarci 0:0061165683ee 414 g_usb1_function_Alternate[i] = 0; /* Alternate */
sdivarci 0:0061165683ee 415 }
sdivarci 0:0061165683ee 416 }
sdivarci 0:0061165683ee 417 #endif
sdivarci 0:0061165683ee 418
sdivarci 0:0061165683ee 419 /*******************************************************************************
sdivarci 0:0061165683ee 420 * Function Name: usb1_function_clear_pipe_tbl
sdivarci 0:0061165683ee 421 * Description : Initializes pipe definition table.
sdivarci 0:0061165683ee 422 * Arguments : none
sdivarci 0:0061165683ee 423 * Return Value : none
sdivarci 0:0061165683ee 424 *******************************************************************************/
sdivarci 0:0061165683ee 425 void usb1_function_clear_pipe_tbl (void)
sdivarci 0:0061165683ee 426 {
sdivarci 0:0061165683ee 427 int pipe;
sdivarci 0:0061165683ee 428
sdivarci 0:0061165683ee 429 for (pipe = 0; pipe < (USB_FUNCTION_MAX_PIPE_NO + 1); ++pipe)
sdivarci 0:0061165683ee 430 {
sdivarci 0:0061165683ee 431 g_usb1_function_PipeTbl[pipe] = 0;
sdivarci 0:0061165683ee 432 }
sdivarci 0:0061165683ee 433 }
sdivarci 0:0061165683ee 434
sdivarci 0:0061165683ee 435 /*******************************************************************************
sdivarci 0:0061165683ee 436 * Function Name: usb1_function_clear_ep_table_index
sdivarci 0:0061165683ee 437 * Description : Initializes the end point table index.
sdivarci 0:0061165683ee 438 * Arguments : none
sdivarci 0:0061165683ee 439 * Return Value : none
sdivarci 0:0061165683ee 440 *******************************************************************************/
sdivarci 0:0061165683ee 441 #if 0
sdivarci 0:0061165683ee 442 void usb1_function_clear_ep_table_index (void)
sdivarci 0:0061165683ee 443 {
sdivarci 0:0061165683ee 444 int ep;
sdivarci 0:0061165683ee 445
sdivarci 0:0061165683ee 446 for (ep = 0; ep <= USB_FUNCTION_MAX_EP_NO; ++ep)
sdivarci 0:0061165683ee 447 {
sdivarci 0:0061165683ee 448 g_usb1_function_EPTableIndex[ep] = USB_FUNCTION_EP_ERROR;
sdivarci 0:0061165683ee 449 }
sdivarci 0:0061165683ee 450 }
sdivarci 0:0061165683ee 451 #endif
sdivarci 0:0061165683ee 452
sdivarci 0:0061165683ee 453 /* End of File */