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 : usb0_function_dma.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 "usb0_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
sdivarci 0:0061165683ee 57
sdivarci 0:0061165683ee 58 /*******************************************************************************
sdivarci 0:0061165683ee 59 Exported global variables and functions (to be accessed by other files)
sdivarci 0:0061165683ee 60 *******************************************************************************/
sdivarci 0:0061165683ee 61
sdivarci 0:0061165683ee 62
sdivarci 0:0061165683ee 63 /*******************************************************************************
sdivarci 0:0061165683ee 64 Private global variables and functions
sdivarci 0:0061165683ee 65 *******************************************************************************/
sdivarci 0:0061165683ee 66 static void usb0_function_dmaint(uint16_t fifo);
sdivarci 0:0061165683ee 67 static void usb0_function_dmaint_buf2fifo(uint16_t pipe);
sdivarci 0:0061165683ee 68 static void usb0_function_dmaint_fifo2buf(uint16_t pipe);
sdivarci 0:0061165683ee 69
sdivarci 0:0061165683ee 70
sdivarci 0:0061165683ee 71 /*******************************************************************************
sdivarci 0:0061165683ee 72 * Function Name: usb0_function_dma_stop_d0
sdivarci 0:0061165683ee 73 * Description : D0FIFO DMA stop
sdivarci 0:0061165683ee 74 * Arguments : uint16_t pipe : pipe number
sdivarci 0:0061165683ee 75 * : uint32_t remain : transfer byte
sdivarci 0:0061165683ee 76 * Return Value : none
sdivarci 0:0061165683ee 77 *******************************************************************************/
sdivarci 0:0061165683ee 78 void usb0_function_dma_stop_d0 (uint16_t pipe, uint32_t remain)
sdivarci 0:0061165683ee 79 {
sdivarci 0:0061165683ee 80 uint16_t dtln;
sdivarci 0:0061165683ee 81 uint16_t dfacc;
sdivarci 0:0061165683ee 82 uint16_t buffer;
sdivarci 0:0061165683ee 83 uint16_t sds_b = 1;
sdivarci 0:0061165683ee 84
sdivarci 0:0061165683ee 85 dfacc = RZA_IO_RegRead_16(&USB200.D0FBCFG, USB_DnFBCFG_DFACC_SHIFT, USB_DnFBCFG_DFACC);
sdivarci 0:0061165683ee 86
sdivarci 0:0061165683ee 87 if (dfacc == 2)
sdivarci 0:0061165683ee 88 {
sdivarci 0:0061165683ee 89 sds_b = 32;
sdivarci 0:0061165683ee 90 }
sdivarci 0:0061165683ee 91 else if (dfacc == 1)
sdivarci 0:0061165683ee 92 {
sdivarci 0:0061165683ee 93 sds_b = 16;
sdivarci 0:0061165683ee 94 }
sdivarci 0:0061165683ee 95 else
sdivarci 0:0061165683ee 96 {
sdivarci 0:0061165683ee 97 if (g_usb0_function_DmaInfo[USB_FUNCTION_D0FIFO].size == 2)
sdivarci 0:0061165683ee 98 {
sdivarci 0:0061165683ee 99 sds_b = 4;
sdivarci 0:0061165683ee 100 }
sdivarci 0:0061165683ee 101 else if (g_usb0_function_DmaInfo[USB_FUNCTION_D0FIFO].size == 1)
sdivarci 0:0061165683ee 102 {
sdivarci 0:0061165683ee 103 sds_b = 2;
sdivarci 0:0061165683ee 104 }
sdivarci 0:0061165683ee 105 else
sdivarci 0:0061165683ee 106 {
sdivarci 0:0061165683ee 107 sds_b = 1;
sdivarci 0:0061165683ee 108 }
sdivarci 0:0061165683ee 109 }
sdivarci 0:0061165683ee 110
sdivarci 0:0061165683ee 111 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 1)
sdivarci 0:0061165683ee 112 {
sdivarci 0:0061165683ee 113 if (g_usb0_function_pipe_status[pipe] != DEVDRV_USBF_PIPE_DONE)
sdivarci 0:0061165683ee 114 {
sdivarci 0:0061165683ee 115 buffer = USB200.D0FIFOCTR;
sdivarci 0:0061165683ee 116 dtln = (buffer & USB_FUNCTION_BITDTLN);
sdivarci 0:0061165683ee 117
sdivarci 0:0061165683ee 118 if ((dtln % sds_b) != 0)
sdivarci 0:0061165683ee 119 {
sdivarci 0:0061165683ee 120 remain += (sds_b - (dtln % sds_b));
sdivarci 0:0061165683ee 121 }
sdivarci 0:0061165683ee 122 g_usb0_function_PipeDataSize[pipe] = (g_usb0_function_data_count[pipe] - remain);
sdivarci 0:0061165683ee 123 g_usb0_function_data_count[pipe] = remain;
sdivarci 0:0061165683ee 124 }
sdivarci 0:0061165683ee 125 }
sdivarci 0:0061165683ee 126
sdivarci 0:0061165683ee 127 RZA_IO_RegWrite_16(&USB200.D0FIFOSEL, 0, USB_DnFIFOSEL_DREQE_SHIFT, USB_DnFIFOSEL_DREQE);
sdivarci 0:0061165683ee 128 }
sdivarci 0:0061165683ee 129
sdivarci 0:0061165683ee 130 /*******************************************************************************
sdivarci 0:0061165683ee 131 * Function Name: usb0_function_dma_stop_d1
sdivarci 0:0061165683ee 132 * Description : D1FIFO DMA stop
sdivarci 0:0061165683ee 133 * Arguments : uint16_t pipe : pipe number
sdivarci 0:0061165683ee 134 * : uint32_t remain : transfer byte
sdivarci 0:0061165683ee 135 * Return Value : none
sdivarci 0:0061165683ee 136 *******************************************************************************/
sdivarci 0:0061165683ee 137 void usb0_function_dma_stop_d1 (uint16_t pipe, uint32_t remain)
sdivarci 0:0061165683ee 138 {
sdivarci 0:0061165683ee 139 uint16_t dtln;
sdivarci 0:0061165683ee 140 uint16_t dfacc;
sdivarci 0:0061165683ee 141 uint16_t buffer;
sdivarci 0:0061165683ee 142 uint16_t sds_b = 1;
sdivarci 0:0061165683ee 143
sdivarci 0:0061165683ee 144 dfacc = RZA_IO_RegRead_16(&USB200.D1FBCFG, USB_DnFBCFG_DFACC_SHIFT, USB_DnFBCFG_DFACC);
sdivarci 0:0061165683ee 145
sdivarci 0:0061165683ee 146 if (dfacc == 2)
sdivarci 0:0061165683ee 147 {
sdivarci 0:0061165683ee 148 sds_b = 32;
sdivarci 0:0061165683ee 149 }
sdivarci 0:0061165683ee 150 else if (dfacc == 1)
sdivarci 0:0061165683ee 151 {
sdivarci 0:0061165683ee 152 sds_b = 16;
sdivarci 0:0061165683ee 153 }
sdivarci 0:0061165683ee 154 else
sdivarci 0:0061165683ee 155 {
sdivarci 0:0061165683ee 156 if (g_usb0_function_DmaInfo[USB_FUNCTION_D1FIFO].size == 2)
sdivarci 0:0061165683ee 157 {
sdivarci 0:0061165683ee 158 sds_b = 4;
sdivarci 0:0061165683ee 159 }
sdivarci 0:0061165683ee 160 else if (g_usb0_function_DmaInfo[USB_FUNCTION_D1FIFO].size == 1)
sdivarci 0:0061165683ee 161 {
sdivarci 0:0061165683ee 162 sds_b = 2;
sdivarci 0:0061165683ee 163 }
sdivarci 0:0061165683ee 164 else
sdivarci 0:0061165683ee 165 {
sdivarci 0:0061165683ee 166 sds_b = 1;
sdivarci 0:0061165683ee 167 }
sdivarci 0:0061165683ee 168 }
sdivarci 0:0061165683ee 169
sdivarci 0:0061165683ee 170 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 1)
sdivarci 0:0061165683ee 171 {
sdivarci 0:0061165683ee 172 if (g_usb0_function_pipe_status[pipe] != DEVDRV_USBF_PIPE_DONE)
sdivarci 0:0061165683ee 173 {
sdivarci 0:0061165683ee 174 buffer = USB200.D1FIFOCTR;
sdivarci 0:0061165683ee 175 dtln = (buffer & USB_FUNCTION_BITDTLN);
sdivarci 0:0061165683ee 176
sdivarci 0:0061165683ee 177 if ((dtln % sds_b) != 0)
sdivarci 0:0061165683ee 178 {
sdivarci 0:0061165683ee 179 remain += (sds_b - (dtln % sds_b));
sdivarci 0:0061165683ee 180 }
sdivarci 0:0061165683ee 181 g_usb0_function_PipeDataSize[pipe] = (g_usb0_function_data_count[pipe] - remain);
sdivarci 0:0061165683ee 182 g_usb0_function_data_count[pipe] = remain;
sdivarci 0:0061165683ee 183 }
sdivarci 0:0061165683ee 184 }
sdivarci 0:0061165683ee 185
sdivarci 0:0061165683ee 186 RZA_IO_RegWrite_16(&USB200.D1FIFOSEL, 0, USB_DnFIFOSEL_DREQE_SHIFT, USB_DnFIFOSEL_DREQE);
sdivarci 0:0061165683ee 187 }
sdivarci 0:0061165683ee 188
sdivarci 0:0061165683ee 189 /*******************************************************************************
sdivarci 0:0061165683ee 190 * Function Name: usb0_function_dma_interrupt_d0fifo
sdivarci 0:0061165683ee 191 * Description : This function is DMA interrupt handler entry.
sdivarci 0:0061165683ee 192 * : Execute usb0_function_dmaint() after disabling DMA interrupt in this function.
sdivarci 0:0061165683ee 193 * : Disable DMA interrupt to DMAC executed when USB_FUNCTION_D0FIFO_DMA is
sdivarci 0:0061165683ee 194 * : specified by dma->fifo.
sdivarci 0:0061165683ee 195 * : Register this function as DMA complete interrupt.
sdivarci 0:0061165683ee 196 * Arguments : uint32_t int_sense ; Interrupts detection mode
sdivarci 0:0061165683ee 197 * : ; INTC_LEVEL_SENSITIVE : Level sense
sdivarci 0:0061165683ee 198 * : ; INTC_EDGE_TRIGGER : Edge trigger
sdivarci 0:0061165683ee 199 * Return Value : none
sdivarci 0:0061165683ee 200 *******************************************************************************/
sdivarci 0:0061165683ee 201 void usb0_function_dma_interrupt_d0fifo (uint32_t int_sense)
sdivarci 0:0061165683ee 202 {
sdivarci 0:0061165683ee 203 usb0_function_dmaint(USB_FUNCTION_D0FIFO);
sdivarci 0:0061165683ee 204 g_usb0_function_DmaStatus[USB_FUNCTION_D0FIFO] = USB_FUNCTION_DMA_READY;
sdivarci 0:0061165683ee 205 }
sdivarci 0:0061165683ee 206
sdivarci 0:0061165683ee 207 /*******************************************************************************
sdivarci 0:0061165683ee 208 * Function Name: usb0_function_dma_interrupt_d1fifo
sdivarci 0:0061165683ee 209 * Description : This function is DMA interrupt handler entry.
sdivarci 0:0061165683ee 210 * : Execute usb0_function_dmaint() after disabling DMA interrupt in this function.
sdivarci 0:0061165683ee 211 * : Disable DMA interrupt to DMAC executed when USB_FUNCTION_D1FIFO_DMA is
sdivarci 0:0061165683ee 212 * : specified by dma->fifo.
sdivarci 0:0061165683ee 213 * : Register this function as DMA complete interrupt.
sdivarci 0:0061165683ee 214 * Arguments : uint32_t int_sense ; Interrupts detection mode
sdivarci 0:0061165683ee 215 * : ; INTC_LEVEL_SENSITIVE : Level sense
sdivarci 0:0061165683ee 216 * : ; INTC_EDGE_TRIGGER : Edge trigger
sdivarci 0:0061165683ee 217 * Return Value : none
sdivarci 0:0061165683ee 218 *******************************************************************************/
sdivarci 0:0061165683ee 219 void usb0_function_dma_interrupt_d1fifo (uint32_t int_sense)
sdivarci 0:0061165683ee 220 {
sdivarci 0:0061165683ee 221 usb0_function_dmaint(USB_FUNCTION_D1FIFO);
sdivarci 0:0061165683ee 222 g_usb0_function_DmaStatus[USB_FUNCTION_D1FIFO] = USB_FUNCTION_DMA_READY;
sdivarci 0:0061165683ee 223 }
sdivarci 0:0061165683ee 224
sdivarci 0:0061165683ee 225 /*******************************************************************************
sdivarci 0:0061165683ee 226 * Function Name: usb0_function_dmaint
sdivarci 0:0061165683ee 227 * Description : This function is DMA transfer end interrupt
sdivarci 0:0061165683ee 228 * Arguments : uint16_t fifo ; fifo number
sdivarci 0:0061165683ee 229 * : ; USB_FUNCTION_D0FIFO
sdivarci 0:0061165683ee 230 * : ; USB_FUNCTION_D1FIFO
sdivarci 0:0061165683ee 231 * Return Value : none
sdivarci 0:0061165683ee 232 *******************************************************************************/
sdivarci 0:0061165683ee 233 static void usb0_function_dmaint (uint16_t fifo)
sdivarci 0:0061165683ee 234 {
sdivarci 0:0061165683ee 235 uint16_t pipe;
sdivarci 0:0061165683ee 236
sdivarci 0:0061165683ee 237 pipe = g_usb0_function_DmaPipe[fifo];
sdivarci 0:0061165683ee 238
sdivarci 0:0061165683ee 239 if (g_usb0_function_DmaInfo[fifo].dir == USB_FUNCTION_BUF2FIFO)
sdivarci 0:0061165683ee 240 {
sdivarci 0:0061165683ee 241 usb0_function_dmaint_buf2fifo(pipe);
sdivarci 0:0061165683ee 242 }
sdivarci 0:0061165683ee 243 else
sdivarci 0:0061165683ee 244 {
sdivarci 0:0061165683ee 245 usb0_function_dmaint_fifo2buf(pipe);
sdivarci 0:0061165683ee 246 }
sdivarci 0:0061165683ee 247 }
sdivarci 0:0061165683ee 248
sdivarci 0:0061165683ee 249 /*******************************************************************************
sdivarci 0:0061165683ee 250 * Function Name: usb0_function_dmaint_fifo2buf
sdivarci 0:0061165683ee 251 * Description : Executes read completion from FIFO by DMAC.
sdivarci 0:0061165683ee 252 * Arguments : uint16_t pipe : pipe number
sdivarci 0:0061165683ee 253 * Return Value : none
sdivarci 0:0061165683ee 254 *******************************************************************************/
sdivarci 0:0061165683ee 255 static void usb0_function_dmaint_fifo2buf (uint16_t pipe)
sdivarci 0:0061165683ee 256 {
sdivarci 0:0061165683ee 257 uint32_t remain;
sdivarci 0:0061165683ee 258 uint16_t useport;
sdivarci 0:0061165683ee 259
sdivarci 0:0061165683ee 260 if (g_usb0_function_pipe_status[pipe] != DEVDRV_USBF_PIPE_DONE)
sdivarci 0:0061165683ee 261 {
sdivarci 0:0061165683ee 262 useport = (uint16_t)(g_usb0_function_PipeTbl[pipe] & USB_FUNCTION_FIFO_USE);
sdivarci 0:0061165683ee 263
sdivarci 0:0061165683ee 264 if (useport == USB_FUNCTION_D0FIFO_DMA)
sdivarci 0:0061165683ee 265 {
sdivarci 0:0061165683ee 266 remain = Userdef_USB_usb0_function_stop_dma0();
sdivarci 0:0061165683ee 267 usb0_function_dma_stop_d0(pipe, remain);
sdivarci 0:0061165683ee 268
sdivarci 0:0061165683ee 269 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 0)
sdivarci 0:0061165683ee 270 {
sdivarci 0:0061165683ee 271 if (g_usb0_function_DmaStatus[USB_FUNCTION_D0FIFO] == USB_FUNCTION_DMA_BUSYEND)
sdivarci 0:0061165683ee 272 {
sdivarci 0:0061165683ee 273 USB200.D0FIFOCTR = USB_FUNCTION_BITBCLR;
sdivarci 0:0061165683ee 274 g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_DONE;
sdivarci 0:0061165683ee 275 }
sdivarci 0:0061165683ee 276 else
sdivarci 0:0061165683ee 277 {
sdivarci 0:0061165683ee 278 usb0_function_enable_brdy_int(pipe);
sdivarci 0:0061165683ee 279 }
sdivarci 0:0061165683ee 280 }
sdivarci 0:0061165683ee 281 }
sdivarci 0:0061165683ee 282 else
sdivarci 0:0061165683ee 283 {
sdivarci 0:0061165683ee 284 remain = Userdef_USB_usb0_function_stop_dma1();
sdivarci 0:0061165683ee 285 usb0_function_dma_stop_d1(pipe, remain);
sdivarci 0:0061165683ee 286
sdivarci 0:0061165683ee 287 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg[pipe], USB_PIPECFG_BFRE_SHIFT, USB_PIPECFG_BFRE) == 0)
sdivarci 0:0061165683ee 288 {
sdivarci 0:0061165683ee 289 if (g_usb0_function_DmaStatus[USB_FUNCTION_D1FIFO] == USB_FUNCTION_DMA_BUSYEND)
sdivarci 0:0061165683ee 290 {
sdivarci 0:0061165683ee 291 USB200.D1FIFOCTR = USB_FUNCTION_BITBCLR;
sdivarci 0:0061165683ee 292 g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_DONE;
sdivarci 0:0061165683ee 293 }
sdivarci 0:0061165683ee 294 else
sdivarci 0:0061165683ee 295 {
sdivarci 0:0061165683ee 296 usb0_function_enable_brdy_int(pipe);
sdivarci 0:0061165683ee 297 }
sdivarci 0:0061165683ee 298 }
sdivarci 0:0061165683ee 299 }
sdivarci 0:0061165683ee 300 }
sdivarci 0:0061165683ee 301 }
sdivarci 0:0061165683ee 302
sdivarci 0:0061165683ee 303 /*******************************************************************************
sdivarci 0:0061165683ee 304 * Function Name: usb0_function_dmaint_buf2fifo
sdivarci 0:0061165683ee 305 * Description : Executes write completion in FIFO by DMAC.
sdivarci 0:0061165683ee 306 * Arguments : uint16_t pipe : pipe number
sdivarci 0:0061165683ee 307 * Return Value : none
sdivarci 0:0061165683ee 308 *******************************************************************************/
sdivarci 0:0061165683ee 309 static void usb0_function_dmaint_buf2fifo (uint16_t pipe)
sdivarci 0:0061165683ee 310 {
sdivarci 0:0061165683ee 311 uint32_t remain;
sdivarci 0:0061165683ee 312 uint16_t useport;
sdivarci 0:0061165683ee 313
sdivarci 0:0061165683ee 314 useport = (uint16_t)(g_usb0_function_PipeTbl[pipe] & USB_FUNCTION_FIFO_USE);
sdivarci 0:0061165683ee 315
sdivarci 0:0061165683ee 316 if (useport == USB_FUNCTION_D0FIFO_DMA)
sdivarci 0:0061165683ee 317 {
sdivarci 0:0061165683ee 318 remain = Userdef_USB_usb0_function_stop_dma0();
sdivarci 0:0061165683ee 319 usb0_function_dma_stop_d0(pipe, remain);
sdivarci 0:0061165683ee 320
sdivarci 0:0061165683ee 321 if (g_usb0_function_DmaBval[USB_FUNCTION_D0FIFO] != 0)
sdivarci 0:0061165683ee 322 {
sdivarci 0:0061165683ee 323 RZA_IO_RegWrite_16(&USB200.D0FIFOCTR,
sdivarci 0:0061165683ee 324 1,
sdivarci 0:0061165683ee 325 USB_DnFIFOCTR_BVAL_SHIFT,
sdivarci 0:0061165683ee 326 USB_DnFIFOCTR_BVAL);
sdivarci 0:0061165683ee 327 }
sdivarci 0:0061165683ee 328 }
sdivarci 0:0061165683ee 329 else
sdivarci 0:0061165683ee 330 {
sdivarci 0:0061165683ee 331 remain = Userdef_USB_usb0_function_stop_dma1();
sdivarci 0:0061165683ee 332 usb0_function_dma_stop_d1(pipe, remain);
sdivarci 0:0061165683ee 333
sdivarci 0:0061165683ee 334 if (g_usb0_function_DmaBval[USB_FUNCTION_D1FIFO] != 0)
sdivarci 0:0061165683ee 335 {
sdivarci 0:0061165683ee 336 RZA_IO_RegWrite_16(&USB200.D1FIFOCTR,
sdivarci 0:0061165683ee 337 1,
sdivarci 0:0061165683ee 338 USB_DnFIFOCTR_BVAL_SHIFT,
sdivarci 0:0061165683ee 339 USB_DnFIFOCTR_BVAL);
sdivarci 0:0061165683ee 340 }
sdivarci 0:0061165683ee 341 }
sdivarci 0:0061165683ee 342
sdivarci 0:0061165683ee 343 usb0_function_enable_bemp_int(pipe);
sdivarci 0:0061165683ee 344 }
sdivarci 0:0061165683ee 345
sdivarci 0:0061165683ee 346 /* End of File */