X-TOUCH to djay bridge

Dependencies:   mbed mbed-rtos FATFileSystem

Committer:
okini3939
Date:
Wed Jun 05 04:54:37 2019 +0000
Revision:
1:0dac72ab5910
sample

Who changed what in which revision?

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