I changed one line of code in the file with path name: USBDeviceHT/targets/TARGET_Maxim

Fork of USBDeviceHT by Helmut Tschemernjak

Committer:
Helmut64
Date:
Mon Feb 05 10:22:57 2018 +0000
Revision:
0:a3ea811f80f2
Inital checkin after copied from mbed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helmut64 0:a3ea811f80f2 1 /*******************************************************************************
Helmut64 0:a3ea811f80f2 2 * DISCLAIMER
Helmut64 0:a3ea811f80f2 3 * This software is supplied by Renesas Electronics Corporation and is only
Helmut64 0:a3ea811f80f2 4 * intended for use with Renesas products. No other uses are authorized. This
Helmut64 0:a3ea811f80f2 5 * software is owned by Renesas Electronics Corporation and is protected under
Helmut64 0:a3ea811f80f2 6 * all applicable laws, including copyright laws.
Helmut64 0:a3ea811f80f2 7 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
Helmut64 0:a3ea811f80f2 8 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
Helmut64 0:a3ea811f80f2 9 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
Helmut64 0:a3ea811f80f2 10 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
Helmut64 0:a3ea811f80f2 11 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
Helmut64 0:a3ea811f80f2 12 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
Helmut64 0:a3ea811f80f2 13 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
Helmut64 0:a3ea811f80f2 14 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
Helmut64 0:a3ea811f80f2 15 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Helmut64 0:a3ea811f80f2 16 * Renesas reserves the right, without notice, to make changes to this software
Helmut64 0:a3ea811f80f2 17 * and to discontinue the availability of this software. By using this software,
Helmut64 0:a3ea811f80f2 18 * you agree to the additional terms and conditions found by accessing the
Helmut64 0:a3ea811f80f2 19 * following link:
Helmut64 0:a3ea811f80f2 20 * http://www.renesas.com/disclaimer
Helmut64 0:a3ea811f80f2 21 * Copyright (C) 2012 - 2014 Renesas Electronics Corporation. All rights reserved.
Helmut64 0:a3ea811f80f2 22 *******************************************************************************/
Helmut64 0:a3ea811f80f2 23 /*******************************************************************************
Helmut64 0:a3ea811f80f2 24 * File Name : usb0_function_dma.c
Helmut64 0:a3ea811f80f2 25 * $Rev: 1116 $
Helmut64 0:a3ea811f80f2 26 * $Date:: 2014-07-09 16:29:19 +0900#$
Helmut64 0:a3ea811f80f2 27 * Device(s) : RZ/A1H
Helmut64 0:a3ea811f80f2 28 * Tool-Chain :
Helmut64 0:a3ea811f80f2 29 * OS : None
Helmut64 0:a3ea811f80f2 30 * H/W Platform :
Helmut64 0:a3ea811f80f2 31 * Description : RZ/A1H R7S72100 USB Sample Program
Helmut64 0:a3ea811f80f2 32 * Operation :
Helmut64 0:a3ea811f80f2 33 * Limitations :
Helmut64 0:a3ea811f80f2 34 *******************************************************************************/
Helmut64 0:a3ea811f80f2 35
Helmut64 0:a3ea811f80f2 36
Helmut64 0:a3ea811f80f2 37 /*******************************************************************************
Helmut64 0:a3ea811f80f2 38 Includes <System Includes> , "Project Includes"
Helmut64 0:a3ea811f80f2 39 *******************************************************************************/
Helmut64 0:a3ea811f80f2 40 #include "usb0_function.h"
Helmut64 0:a3ea811f80f2 41
Helmut64 0:a3ea811f80f2 42
Helmut64 0:a3ea811f80f2 43 /*******************************************************************************
Helmut64 0:a3ea811f80f2 44 Typedef definitions
Helmut64 0:a3ea811f80f2 45 *******************************************************************************/
Helmut64 0:a3ea811f80f2 46
Helmut64 0:a3ea811f80f2 47
Helmut64 0:a3ea811f80f2 48 /*******************************************************************************
Helmut64 0:a3ea811f80f2 49 Macro definitions
Helmut64 0:a3ea811f80f2 50 *******************************************************************************/
Helmut64 0:a3ea811f80f2 51
Helmut64 0:a3ea811f80f2 52
Helmut64 0:a3ea811f80f2 53 /*******************************************************************************
Helmut64 0:a3ea811f80f2 54 Imported global variables and functions (from other files)
Helmut64 0:a3ea811f80f2 55 *******************************************************************************/
Helmut64 0:a3ea811f80f2 56
Helmut64 0:a3ea811f80f2 57
Helmut64 0:a3ea811f80f2 58 /*******************************************************************************
Helmut64 0:a3ea811f80f2 59 Exported global variables and functions (to be accessed by other files)
Helmut64 0:a3ea811f80f2 60 *******************************************************************************/
Helmut64 0:a3ea811f80f2 61
Helmut64 0:a3ea811f80f2 62
Helmut64 0:a3ea811f80f2 63 /*******************************************************************************
Helmut64 0:a3ea811f80f2 64 Private global variables and functions
Helmut64 0:a3ea811f80f2 65 *******************************************************************************/
Helmut64 0:a3ea811f80f2 66 static void usb0_function_dmaint(uint16_t fifo);
Helmut64 0:a3ea811f80f2 67 static void usb0_function_dmaint_buf2fifo(uint16_t pipe);
Helmut64 0:a3ea811f80f2 68 static void usb0_function_dmaint_fifo2buf(uint16_t pipe);
Helmut64 0:a3ea811f80f2 69
Helmut64 0:a3ea811f80f2 70
Helmut64 0:a3ea811f80f2 71 /*******************************************************************************
Helmut64 0:a3ea811f80f2 72 * Function Name: usb0_function_dma_stop_d0
Helmut64 0:a3ea811f80f2 73 * Description : D0FIFO DMA stop
Helmut64 0:a3ea811f80f2 74 * Arguments : uint16_t pipe : pipe number
Helmut64 0:a3ea811f80f2 75 * : uint32_t remain : transfer byte
Helmut64 0:a3ea811f80f2 76 * Return Value : none
Helmut64 0:a3ea811f80f2 77 *******************************************************************************/
Helmut64 0:a3ea811f80f2 78 void usb0_function_dma_stop_d0 (uint16_t pipe, uint32_t remain)
Helmut64 0:a3ea811f80f2 79 {
Helmut64 0:a3ea811f80f2 80 uint16_t dtln;
Helmut64 0:a3ea811f80f2 81 uint16_t dfacc;
Helmut64 0:a3ea811f80f2 82 uint16_t buffer;
Helmut64 0:a3ea811f80f2 83 uint16_t sds_b = 1;
Helmut64 0:a3ea811f80f2 84
Helmut64 0:a3ea811f80f2 85 dfacc = RZA_IO_RegRead_16(&USB200.D0FBCFG, USB_DnFBCFG_DFACC_SHIFT, USB_DnFBCFG_DFACC);
Helmut64 0:a3ea811f80f2 86
Helmut64 0:a3ea811f80f2 87 if (dfacc == 2)
Helmut64 0:a3ea811f80f2 88 {
Helmut64 0:a3ea811f80f2 89 sds_b = 32;
Helmut64 0:a3ea811f80f2 90 }
Helmut64 0:a3ea811f80f2 91 else if (dfacc == 1)
Helmut64 0:a3ea811f80f2 92 {
Helmut64 0:a3ea811f80f2 93 sds_b = 16;
Helmut64 0:a3ea811f80f2 94 }
Helmut64 0:a3ea811f80f2 95 else
Helmut64 0:a3ea811f80f2 96 {
Helmut64 0:a3ea811f80f2 97 if (g_usb0_function_DmaInfo[USB_FUNCTION_D0FIFO].size == 2)
Helmut64 0:a3ea811f80f2 98 {
Helmut64 0:a3ea811f80f2 99 sds_b = 4;
Helmut64 0:a3ea811f80f2 100 }
Helmut64 0:a3ea811f80f2 101 else if (g_usb0_function_DmaInfo[USB_FUNCTION_D0FIFO].size == 1)
Helmut64 0:a3ea811f80f2 102 {
Helmut64 0:a3ea811f80f2 103 sds_b = 2;
Helmut64 0:a3ea811f80f2 104 }
Helmut64 0:a3ea811f80f2 105 else
Helmut64 0:a3ea811f80f2 106 {
Helmut64 0:a3ea811f80f2 107 sds_b = 1;
Helmut64 0:a3ea811f80f2 108 }
Helmut64 0:a3ea811f80f2 109 }
Helmut64 0:a3ea811f80f2 110
Helmut64 0:a3ea811f80f2 111 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 1)
Helmut64 0:a3ea811f80f2 112 {
Helmut64 0:a3ea811f80f2 113 if (g_usb0_function_pipe_status[pipe] != DEVDRV_USBF_PIPE_DONE)
Helmut64 0:a3ea811f80f2 114 {
Helmut64 0:a3ea811f80f2 115 buffer = USB200.D0FIFOCTR;
Helmut64 0:a3ea811f80f2 116 dtln = (buffer & USB_FUNCTION_BITDTLN);
Helmut64 0:a3ea811f80f2 117
Helmut64 0:a3ea811f80f2 118 if ((dtln % sds_b) != 0)
Helmut64 0:a3ea811f80f2 119 {
Helmut64 0:a3ea811f80f2 120 remain += (sds_b - (dtln % sds_b));
Helmut64 0:a3ea811f80f2 121 }
Helmut64 0:a3ea811f80f2 122 g_usb0_function_PipeDataSize[pipe] = (g_usb0_function_data_count[pipe] - remain);
Helmut64 0:a3ea811f80f2 123 g_usb0_function_data_count[pipe] = remain;
Helmut64 0:a3ea811f80f2 124 }
Helmut64 0:a3ea811f80f2 125 }
Helmut64 0:a3ea811f80f2 126
Helmut64 0:a3ea811f80f2 127 RZA_IO_RegWrite_16(&USB200.D0FIFOSEL, 0, USB_DnFIFOSEL_DREQE_SHIFT, USB_DnFIFOSEL_DREQE);
Helmut64 0:a3ea811f80f2 128 }
Helmut64 0:a3ea811f80f2 129
Helmut64 0:a3ea811f80f2 130 /*******************************************************************************
Helmut64 0:a3ea811f80f2 131 * Function Name: usb0_function_dma_stop_d1
Helmut64 0:a3ea811f80f2 132 * Description : D1FIFO DMA stop
Helmut64 0:a3ea811f80f2 133 * Arguments : uint16_t pipe : pipe number
Helmut64 0:a3ea811f80f2 134 * : uint32_t remain : transfer byte
Helmut64 0:a3ea811f80f2 135 * Return Value : none
Helmut64 0:a3ea811f80f2 136 *******************************************************************************/
Helmut64 0:a3ea811f80f2 137 void usb0_function_dma_stop_d1 (uint16_t pipe, uint32_t remain)
Helmut64 0:a3ea811f80f2 138 {
Helmut64 0:a3ea811f80f2 139 uint16_t dtln;
Helmut64 0:a3ea811f80f2 140 uint16_t dfacc;
Helmut64 0:a3ea811f80f2 141 uint16_t buffer;
Helmut64 0:a3ea811f80f2 142 uint16_t sds_b = 1;
Helmut64 0:a3ea811f80f2 143
Helmut64 0:a3ea811f80f2 144 dfacc = RZA_IO_RegRead_16(&USB200.D1FBCFG, USB_DnFBCFG_DFACC_SHIFT, USB_DnFBCFG_DFACC);
Helmut64 0:a3ea811f80f2 145
Helmut64 0:a3ea811f80f2 146 if (dfacc == 2)
Helmut64 0:a3ea811f80f2 147 {
Helmut64 0:a3ea811f80f2 148 sds_b = 32;
Helmut64 0:a3ea811f80f2 149 }
Helmut64 0:a3ea811f80f2 150 else if (dfacc == 1)
Helmut64 0:a3ea811f80f2 151 {
Helmut64 0:a3ea811f80f2 152 sds_b = 16;
Helmut64 0:a3ea811f80f2 153 }
Helmut64 0:a3ea811f80f2 154 else
Helmut64 0:a3ea811f80f2 155 {
Helmut64 0:a3ea811f80f2 156 if (g_usb0_function_DmaInfo[USB_FUNCTION_D1FIFO].size == 2)
Helmut64 0:a3ea811f80f2 157 {
Helmut64 0:a3ea811f80f2 158 sds_b = 4;
Helmut64 0:a3ea811f80f2 159 }
Helmut64 0:a3ea811f80f2 160 else if (g_usb0_function_DmaInfo[USB_FUNCTION_D1FIFO].size == 1)
Helmut64 0:a3ea811f80f2 161 {
Helmut64 0:a3ea811f80f2 162 sds_b = 2;
Helmut64 0:a3ea811f80f2 163 }
Helmut64 0:a3ea811f80f2 164 else
Helmut64 0:a3ea811f80f2 165 {
Helmut64 0:a3ea811f80f2 166 sds_b = 1;
Helmut64 0:a3ea811f80f2 167 }
Helmut64 0:a3ea811f80f2 168 }
Helmut64 0:a3ea811f80f2 169
Helmut64 0:a3ea811f80f2 170 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 1)
Helmut64 0:a3ea811f80f2 171 {
Helmut64 0:a3ea811f80f2 172 if (g_usb0_function_pipe_status[pipe] != DEVDRV_USBF_PIPE_DONE)
Helmut64 0:a3ea811f80f2 173 {
Helmut64 0:a3ea811f80f2 174 buffer = USB200.D1FIFOCTR;
Helmut64 0:a3ea811f80f2 175 dtln = (buffer & USB_FUNCTION_BITDTLN);
Helmut64 0:a3ea811f80f2 176
Helmut64 0:a3ea811f80f2 177 if ((dtln % sds_b) != 0)
Helmut64 0:a3ea811f80f2 178 {
Helmut64 0:a3ea811f80f2 179 remain += (sds_b - (dtln % sds_b));
Helmut64 0:a3ea811f80f2 180 }
Helmut64 0:a3ea811f80f2 181 g_usb0_function_PipeDataSize[pipe] = (g_usb0_function_data_count[pipe] - remain);
Helmut64 0:a3ea811f80f2 182 g_usb0_function_data_count[pipe] = remain;
Helmut64 0:a3ea811f80f2 183 }
Helmut64 0:a3ea811f80f2 184 }
Helmut64 0:a3ea811f80f2 185
Helmut64 0:a3ea811f80f2 186 RZA_IO_RegWrite_16(&USB200.D1FIFOSEL, 0, USB_DnFIFOSEL_DREQE_SHIFT, USB_DnFIFOSEL_DREQE);
Helmut64 0:a3ea811f80f2 187 }
Helmut64 0:a3ea811f80f2 188
Helmut64 0:a3ea811f80f2 189 /*******************************************************************************
Helmut64 0:a3ea811f80f2 190 * Function Name: usb0_function_dma_interrupt_d0fifo
Helmut64 0:a3ea811f80f2 191 * Description : This function is DMA interrupt handler entry.
Helmut64 0:a3ea811f80f2 192 * : Execute usb0_function_dmaint() after disabling DMA interrupt in this function.
Helmut64 0:a3ea811f80f2 193 * : Disable DMA interrupt to DMAC executed when USB_FUNCTION_D0FIFO_DMA is
Helmut64 0:a3ea811f80f2 194 * : specified by dma->fifo.
Helmut64 0:a3ea811f80f2 195 * : Register this function as DMA complete interrupt.
Helmut64 0:a3ea811f80f2 196 * Arguments : uint32_t int_sense ; Interrupts detection mode
Helmut64 0:a3ea811f80f2 197 * : ; INTC_LEVEL_SENSITIVE : Level sense
Helmut64 0:a3ea811f80f2 198 * : ; INTC_EDGE_TRIGGER : Edge trigger
Helmut64 0:a3ea811f80f2 199 * Return Value : none
Helmut64 0:a3ea811f80f2 200 *******************************************************************************/
Helmut64 0:a3ea811f80f2 201 void usb0_function_dma_interrupt_d0fifo (uint32_t int_sense)
Helmut64 0:a3ea811f80f2 202 {
Helmut64 0:a3ea811f80f2 203 usb0_function_dmaint(USB_FUNCTION_D0FIFO);
Helmut64 0:a3ea811f80f2 204 g_usb0_function_DmaStatus[USB_FUNCTION_D0FIFO] = USB_FUNCTION_DMA_READY;
Helmut64 0:a3ea811f80f2 205 }
Helmut64 0:a3ea811f80f2 206
Helmut64 0:a3ea811f80f2 207 /*******************************************************************************
Helmut64 0:a3ea811f80f2 208 * Function Name: usb0_function_dma_interrupt_d1fifo
Helmut64 0:a3ea811f80f2 209 * Description : This function is DMA interrupt handler entry.
Helmut64 0:a3ea811f80f2 210 * : Execute usb0_function_dmaint() after disabling DMA interrupt in this function.
Helmut64 0:a3ea811f80f2 211 * : Disable DMA interrupt to DMAC executed when USB_FUNCTION_D1FIFO_DMA is
Helmut64 0:a3ea811f80f2 212 * : specified by dma->fifo.
Helmut64 0:a3ea811f80f2 213 * : Register this function as DMA complete interrupt.
Helmut64 0:a3ea811f80f2 214 * Arguments : uint32_t int_sense ; Interrupts detection mode
Helmut64 0:a3ea811f80f2 215 * : ; INTC_LEVEL_SENSITIVE : Level sense
Helmut64 0:a3ea811f80f2 216 * : ; INTC_EDGE_TRIGGER : Edge trigger
Helmut64 0:a3ea811f80f2 217 * Return Value : none
Helmut64 0:a3ea811f80f2 218 *******************************************************************************/
Helmut64 0:a3ea811f80f2 219 void usb0_function_dma_interrupt_d1fifo (uint32_t int_sense)
Helmut64 0:a3ea811f80f2 220 {
Helmut64 0:a3ea811f80f2 221 usb0_function_dmaint(USB_FUNCTION_D1FIFO);
Helmut64 0:a3ea811f80f2 222 g_usb0_function_DmaStatus[USB_FUNCTION_D1FIFO] = USB_FUNCTION_DMA_READY;
Helmut64 0:a3ea811f80f2 223 }
Helmut64 0:a3ea811f80f2 224
Helmut64 0:a3ea811f80f2 225 /*******************************************************************************
Helmut64 0:a3ea811f80f2 226 * Function Name: usb0_function_dmaint
Helmut64 0:a3ea811f80f2 227 * Description : This function is DMA transfer end interrupt
Helmut64 0:a3ea811f80f2 228 * Arguments : uint16_t fifo ; fifo number
Helmut64 0:a3ea811f80f2 229 * : ; USB_FUNCTION_D0FIFO
Helmut64 0:a3ea811f80f2 230 * : ; USB_FUNCTION_D1FIFO
Helmut64 0:a3ea811f80f2 231 * Return Value : none
Helmut64 0:a3ea811f80f2 232 *******************************************************************************/
Helmut64 0:a3ea811f80f2 233 static void usb0_function_dmaint (uint16_t fifo)
Helmut64 0:a3ea811f80f2 234 {
Helmut64 0:a3ea811f80f2 235 uint16_t pipe;
Helmut64 0:a3ea811f80f2 236
Helmut64 0:a3ea811f80f2 237 pipe = g_usb0_function_DmaPipe[fifo];
Helmut64 0:a3ea811f80f2 238
Helmut64 0:a3ea811f80f2 239 if (g_usb0_function_DmaInfo[fifo].dir == USB_FUNCTION_BUF2FIFO)
Helmut64 0:a3ea811f80f2 240 {
Helmut64 0:a3ea811f80f2 241 usb0_function_dmaint_buf2fifo(pipe);
Helmut64 0:a3ea811f80f2 242 }
Helmut64 0:a3ea811f80f2 243 else
Helmut64 0:a3ea811f80f2 244 {
Helmut64 0:a3ea811f80f2 245 usb0_function_dmaint_fifo2buf(pipe);
Helmut64 0:a3ea811f80f2 246 }
Helmut64 0:a3ea811f80f2 247 }
Helmut64 0:a3ea811f80f2 248
Helmut64 0:a3ea811f80f2 249 /*******************************************************************************
Helmut64 0:a3ea811f80f2 250 * Function Name: usb0_function_dmaint_fifo2buf
Helmut64 0:a3ea811f80f2 251 * Description : Executes read completion from FIFO by DMAC.
Helmut64 0:a3ea811f80f2 252 * Arguments : uint16_t pipe : pipe number
Helmut64 0:a3ea811f80f2 253 * Return Value : none
Helmut64 0:a3ea811f80f2 254 *******************************************************************************/
Helmut64 0:a3ea811f80f2 255 static void usb0_function_dmaint_fifo2buf (uint16_t pipe)
Helmut64 0:a3ea811f80f2 256 {
Helmut64 0:a3ea811f80f2 257 uint32_t remain;
Helmut64 0:a3ea811f80f2 258 uint16_t useport;
Helmut64 0:a3ea811f80f2 259
Helmut64 0:a3ea811f80f2 260 if (g_usb0_function_pipe_status[pipe] != DEVDRV_USBF_PIPE_DONE)
Helmut64 0:a3ea811f80f2 261 {
Helmut64 0:a3ea811f80f2 262 useport = (uint16_t)(g_usb0_function_PipeTbl[pipe] & USB_FUNCTION_FIFO_USE);
Helmut64 0:a3ea811f80f2 263
Helmut64 0:a3ea811f80f2 264 if (useport == USB_FUNCTION_D0FIFO_DMA)
Helmut64 0:a3ea811f80f2 265 {
Helmut64 0:a3ea811f80f2 266 remain = Userdef_USB_usb0_function_stop_dma0();
Helmut64 0:a3ea811f80f2 267 usb0_function_dma_stop_d0(pipe, remain);
Helmut64 0:a3ea811f80f2 268
Helmut64 0:a3ea811f80f2 269 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 0)
Helmut64 0:a3ea811f80f2 270 {
Helmut64 0:a3ea811f80f2 271 if (g_usb0_function_DmaStatus[USB_FUNCTION_D0FIFO] == USB_FUNCTION_DMA_BUSYEND)
Helmut64 0:a3ea811f80f2 272 {
Helmut64 0:a3ea811f80f2 273 USB200.D0FIFOCTR = USB_FUNCTION_BITBCLR;
Helmut64 0:a3ea811f80f2 274 g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_DONE;
Helmut64 0:a3ea811f80f2 275 }
Helmut64 0:a3ea811f80f2 276 else
Helmut64 0:a3ea811f80f2 277 {
Helmut64 0:a3ea811f80f2 278 usb0_function_enable_brdy_int(pipe);
Helmut64 0:a3ea811f80f2 279 }
Helmut64 0:a3ea811f80f2 280 }
Helmut64 0:a3ea811f80f2 281 }
Helmut64 0:a3ea811f80f2 282 else
Helmut64 0:a3ea811f80f2 283 {
Helmut64 0:a3ea811f80f2 284 remain = Userdef_USB_usb0_function_stop_dma1();
Helmut64 0:a3ea811f80f2 285 usb0_function_dma_stop_d1(pipe, remain);
Helmut64 0:a3ea811f80f2 286
Helmut64 0:a3ea811f80f2 287 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 0)
Helmut64 0:a3ea811f80f2 288 {
Helmut64 0:a3ea811f80f2 289 if (g_usb0_function_DmaStatus[USB_FUNCTION_D1FIFO] == USB_FUNCTION_DMA_BUSYEND)
Helmut64 0:a3ea811f80f2 290 {
Helmut64 0:a3ea811f80f2 291 USB200.D1FIFOCTR = USB_FUNCTION_BITBCLR;
Helmut64 0:a3ea811f80f2 292 g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_DONE;
Helmut64 0:a3ea811f80f2 293 }
Helmut64 0:a3ea811f80f2 294 else
Helmut64 0:a3ea811f80f2 295 {
Helmut64 0:a3ea811f80f2 296 usb0_function_enable_brdy_int(pipe);
Helmut64 0:a3ea811f80f2 297 }
Helmut64 0:a3ea811f80f2 298 }
Helmut64 0:a3ea811f80f2 299 }
Helmut64 0:a3ea811f80f2 300 }
Helmut64 0:a3ea811f80f2 301 }
Helmut64 0:a3ea811f80f2 302
Helmut64 0:a3ea811f80f2 303 /*******************************************************************************
Helmut64 0:a3ea811f80f2 304 * Function Name: usb0_function_dmaint_buf2fifo
Helmut64 0:a3ea811f80f2 305 * Description : Executes write completion in FIFO by DMAC.
Helmut64 0:a3ea811f80f2 306 * Arguments : uint16_t pipe : pipe number
Helmut64 0:a3ea811f80f2 307 * Return Value : none
Helmut64 0:a3ea811f80f2 308 *******************************************************************************/
Helmut64 0:a3ea811f80f2 309 static void usb0_function_dmaint_buf2fifo (uint16_t pipe)
Helmut64 0:a3ea811f80f2 310 {
Helmut64 0:a3ea811f80f2 311 uint32_t remain;
Helmut64 0:a3ea811f80f2 312 uint16_t useport;
Helmut64 0:a3ea811f80f2 313
Helmut64 0:a3ea811f80f2 314 useport = (uint16_t)(g_usb0_function_PipeTbl[pipe] & USB_FUNCTION_FIFO_USE);
Helmut64 0:a3ea811f80f2 315
Helmut64 0:a3ea811f80f2 316 if (useport == USB_FUNCTION_D0FIFO_DMA)
Helmut64 0:a3ea811f80f2 317 {
Helmut64 0:a3ea811f80f2 318 remain = Userdef_USB_usb0_function_stop_dma0();
Helmut64 0:a3ea811f80f2 319 usb0_function_dma_stop_d0(pipe, remain);
Helmut64 0:a3ea811f80f2 320
Helmut64 0:a3ea811f80f2 321 if (g_usb0_function_DmaBval[USB_FUNCTION_D0FIFO] != 0)
Helmut64 0:a3ea811f80f2 322 {
Helmut64 0:a3ea811f80f2 323 RZA_IO_RegWrite_16(&USB200.D0FIFOCTR,
Helmut64 0:a3ea811f80f2 324 1,
Helmut64 0:a3ea811f80f2 325 USB_DnFIFOCTR_BVAL_SHIFT,
Helmut64 0:a3ea811f80f2 326 USB_DnFIFOCTR_BVAL);
Helmut64 0:a3ea811f80f2 327 }
Helmut64 0:a3ea811f80f2 328 }
Helmut64 0:a3ea811f80f2 329 else
Helmut64 0:a3ea811f80f2 330 {
Helmut64 0:a3ea811f80f2 331 remain = Userdef_USB_usb0_function_stop_dma1();
Helmut64 0:a3ea811f80f2 332 usb0_function_dma_stop_d1(pipe, remain);
Helmut64 0:a3ea811f80f2 333
Helmut64 0:a3ea811f80f2 334 if (g_usb0_function_DmaBval[USB_FUNCTION_D1FIFO] != 0)
Helmut64 0:a3ea811f80f2 335 {
Helmut64 0:a3ea811f80f2 336 RZA_IO_RegWrite_16(&USB200.D1FIFOCTR,
Helmut64 0:a3ea811f80f2 337 1,
Helmut64 0:a3ea811f80f2 338 USB_DnFIFOCTR_BVAL_SHIFT,
Helmut64 0:a3ea811f80f2 339 USB_DnFIFOCTR_BVAL);
Helmut64 0:a3ea811f80f2 340 }
Helmut64 0:a3ea811f80f2 341 }
Helmut64 0:a3ea811f80f2 342
Helmut64 0:a3ea811f80f2 343 usb0_function_enable_bemp_int(pipe);
Helmut64 0:a3ea811f80f2 344 }
Helmut64 0:a3ea811f80f2 345
Helmut64 0:a3ea811f80f2 346 /* End of File */