USBDevice with MAX32620HSP platform support

Fork of USBDevice by mbed official

Committer:
mbed_official
Date:
Tue Mar 31 16:15:39 2015 +0100
Revision:
46:378357d7e90d
Synchronized with git revision 251f3f8b55a4dc98b831c80e032464ed45cce309

Full URL: https://github.com/mbedmicro/mbed/commit/251f3f8b55a4dc98b831c80e032464ed45cce309/

[RZ/A1H]Add some function(USB 2port, NVIC wrapper) and modify some settings(OS, Terminal).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 46:378357d7e90d 1 /*******************************************************************************
mbed_official 46:378357d7e90d 2 * DISCLAIMER
mbed_official 46:378357d7e90d 3 * This software is supplied by Renesas Electronics Corporation and is only
mbed_official 46:378357d7e90d 4 * intended for use with Renesas products. No other uses are authorized. This
mbed_official 46:378357d7e90d 5 * software is owned by Renesas Electronics Corporation and is protected under
mbed_official 46:378357d7e90d 6 * all applicable laws, including copyright laws.
mbed_official 46:378357d7e90d 7 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
mbed_official 46:378357d7e90d 8 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
mbed_official 46:378357d7e90d 9 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
mbed_official 46:378357d7e90d 10 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
mbed_official 46:378357d7e90d 11 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
mbed_official 46:378357d7e90d 12 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
mbed_official 46:378357d7e90d 13 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
mbed_official 46:378357d7e90d 14 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
mbed_official 46:378357d7e90d 15 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
mbed_official 46:378357d7e90d 16 * Renesas reserves the right, without notice, to make changes to this software
mbed_official 46:378357d7e90d 17 * and to discontinue the availability of this software. By using this software,
mbed_official 46:378357d7e90d 18 * you agree to the additional terms and conditions found by accessing the
mbed_official 46:378357d7e90d 19 * following link:
mbed_official 46:378357d7e90d 20 * http://www.renesas.com/disclaimer
mbed_official 46:378357d7e90d 21 * Copyright (C) 2012 - 2014 Renesas Electronics Corporation. All rights reserved.
mbed_official 46:378357d7e90d 22 *******************************************************************************/
mbed_official 46:378357d7e90d 23 /*******************************************************************************
mbed_official 46:378357d7e90d 24 * File Name : usb1_function_userdef.c
mbed_official 46:378357d7e90d 25 * $Rev: 1116 $
mbed_official 46:378357d7e90d 26 * $Date:: 2014-07-09 16:29:19 +0900#$
mbed_official 46:378357d7e90d 27 * Device(s) : RZ/A1H
mbed_official 46:378357d7e90d 28 * Tool-Chain :
mbed_official 46:378357d7e90d 29 * OS : None
mbed_official 46:378357d7e90d 30 * H/W Platform :
mbed_official 46:378357d7e90d 31 * Description : RZ/A1H R7S72100 USB Sample Program
mbed_official 46:378357d7e90d 32 * Operation :
mbed_official 46:378357d7e90d 33 * Limitations :
mbed_official 46:378357d7e90d 34 *******************************************************************************/
mbed_official 46:378357d7e90d 35
mbed_official 46:378357d7e90d 36
mbed_official 46:378357d7e90d 37 /*******************************************************************************
mbed_official 46:378357d7e90d 38 Includes <System Includes> , "Project Includes"
mbed_official 46:378357d7e90d 39 *******************************************************************************/
mbed_official 46:378357d7e90d 40 #include <stdio.h>
mbed_official 46:378357d7e90d 41 #include "r_typedefs.h"
mbed_official 46:378357d7e90d 42 #include "iodefine.h"
mbed_official 46:378357d7e90d 43 #include "devdrv_usb_function_api.h"
mbed_official 46:378357d7e90d 44 #include "usb1_function_dmacdrv.h" /* common DMAC driver for USB */
mbed_official 46:378357d7e90d 45
mbed_official 46:378357d7e90d 46
mbed_official 46:378357d7e90d 47 /*******************************************************************************
mbed_official 46:378357d7e90d 48 Typedef definitions
mbed_official 46:378357d7e90d 49 *******************************************************************************/
mbed_official 46:378357d7e90d 50
mbed_official 46:378357d7e90d 51
mbed_official 46:378357d7e90d 52 /*******************************************************************************
mbed_official 46:378357d7e90d 53 Macro definitions
mbed_official 46:378357d7e90d 54 *******************************************************************************/
mbed_official 46:378357d7e90d 55 #define DUMMY_ACCESS OSTM0CNT
mbed_official 46:378357d7e90d 56
mbed_official 46:378357d7e90d 57 /* #define CACHE_WRITEBACK */
mbed_official 46:378357d7e90d 58
mbed_official 46:378357d7e90d 59
mbed_official 46:378357d7e90d 60 /*******************************************************************************
mbed_official 46:378357d7e90d 61 Imported global variables and functions (from other files)
mbed_official 46:378357d7e90d 62 *******************************************************************************/
mbed_official 46:378357d7e90d 63 extern int32_t io_cwb(unsigned long start, unsigned long end);
mbed_official 46:378357d7e90d 64
mbed_official 46:378357d7e90d 65
mbed_official 46:378357d7e90d 66 /*******************************************************************************
mbed_official 46:378357d7e90d 67 Exported global variables and functions (to be accessed by other files)
mbed_official 46:378357d7e90d 68 *******************************************************************************/
mbed_official 46:378357d7e90d 69 static void usb1_function_enable_dmac0(uint32_t src, uint32_t dst, uint32_t count,
mbed_official 46:378357d7e90d 70 uint32_t size, uint32_t dir, uint32_t fifo, uint16_t dfacc);
mbed_official 46:378357d7e90d 71 static void usb1_function_enable_dmac1(uint32_t src, uint32_t dst, uint32_t count,
mbed_official 46:378357d7e90d 72 uint32_t size, uint32_t dir, uint32_t fifo, uint16_t dfacc);
mbed_official 46:378357d7e90d 73 static void Userdef_USB_usb1_function_delay_10us_2(void);
mbed_official 46:378357d7e90d 74
mbed_official 46:378357d7e90d 75
mbed_official 46:378357d7e90d 76 /*******************************************************************************
mbed_official 46:378357d7e90d 77 Private global variables and functions
mbed_official 46:378357d7e90d 78 *******************************************************************************/
mbed_official 46:378357d7e90d 79
mbed_official 46:378357d7e90d 80
mbed_official 46:378357d7e90d 81 /*******************************************************************************
mbed_official 46:378357d7e90d 82 * Function Name: Userdef_USB_usb1_function_d0fifo_dmaintid
mbed_official 46:378357d7e90d 83 * Description : get D0FIFO DMA Interrupt ID
mbed_official 46:378357d7e90d 84 * Arguments : none
mbed_official 46:378357d7e90d 85 * Return Value : D0FIFO DMA Interrupt ID
mbed_official 46:378357d7e90d 86 *******************************************************************************/
mbed_official 46:378357d7e90d 87 IRQn_Type Userdef_USB_usb1_function_d0fifo_dmaintid (void)
mbed_official 46:378357d7e90d 88 {
mbed_official 46:378357d7e90d 89 #if 0
mbed_official 46:378357d7e90d 90 return DMAINT1_IRQn;
mbed_official 46:378357d7e90d 91 #else
mbed_official 46:378357d7e90d 92 return 0xFFFF;
mbed_official 46:378357d7e90d 93 #endif
mbed_official 46:378357d7e90d 94 }
mbed_official 46:378357d7e90d 95
mbed_official 46:378357d7e90d 96 /*******************************************************************************
mbed_official 46:378357d7e90d 97 * Function Name: Userdef_USB_usb1_function_d1fifo_dmaintid
mbed_official 46:378357d7e90d 98 * Description : get D1FIFO DMA Interrupt ID
mbed_official 46:378357d7e90d 99 * Arguments : none
mbed_official 46:378357d7e90d 100 * Return Value : D1FIFO DMA Interrupt ID
mbed_official 46:378357d7e90d 101 *******************************************************************************/
mbed_official 46:378357d7e90d 102 IRQn_Type Userdef_USB_usb1_function_d1fifo_dmaintid (void)
mbed_official 46:378357d7e90d 103 {
mbed_official 46:378357d7e90d 104 #if 0
mbed_official 46:378357d7e90d 105 return DMAINT1_IRQn;
mbed_official 46:378357d7e90d 106 #else
mbed_official 46:378357d7e90d 107 return 0xFFFF;
mbed_official 46:378357d7e90d 108 #endif
mbed_official 46:378357d7e90d 109 }
mbed_official 46:378357d7e90d 110
mbed_official 46:378357d7e90d 111 /*******************************************************************************
mbed_official 46:378357d7e90d 112 * Function Name: Userdef_USB_usb1_function_attach
mbed_official 46:378357d7e90d 113 * Description : Wait for the software of 1ms.
mbed_official 46:378357d7e90d 114 * : Alter this function according to the user's system.
mbed_official 46:378357d7e90d 115 * Arguments : none
mbed_official 46:378357d7e90d 116 * Return Value : none
mbed_official 46:378357d7e90d 117 *******************************************************************************/
mbed_official 46:378357d7e90d 118 void Userdef_USB_usb1_function_attach (void)
mbed_official 46:378357d7e90d 119 {
mbed_official 46:378357d7e90d 120 printf("\n");
mbed_official 46:378357d7e90d 121 printf("channel 1 attach device\n");
mbed_official 46:378357d7e90d 122 printf("\n");
mbed_official 46:378357d7e90d 123 }
mbed_official 46:378357d7e90d 124
mbed_official 46:378357d7e90d 125 /*******************************************************************************
mbed_official 46:378357d7e90d 126 * Function Name: Userdef_USB_usb1_function_detach
mbed_official 46:378357d7e90d 127 * Description : Wait for the software of 1ms.
mbed_official 46:378357d7e90d 128 * : Alter this function according to the user's system.
mbed_official 46:378357d7e90d 129 * Arguments : none
mbed_official 46:378357d7e90d 130 * Return Value : none
mbed_official 46:378357d7e90d 131 *******************************************************************************/
mbed_official 46:378357d7e90d 132 void Userdef_USB_usb1_function_detach (void)
mbed_official 46:378357d7e90d 133 {
mbed_official 46:378357d7e90d 134 printf("\n");
mbed_official 46:378357d7e90d 135 printf("channel 1 detach device\n");
mbed_official 46:378357d7e90d 136 printf("\n");
mbed_official 46:378357d7e90d 137 }
mbed_official 46:378357d7e90d 138
mbed_official 46:378357d7e90d 139 /*******************************************************************************
mbed_official 46:378357d7e90d 140 * Function Name: Userdef_USB_usb1_function_delay_1ms
mbed_official 46:378357d7e90d 141 * Description : Wait for the software of 1ms.
mbed_official 46:378357d7e90d 142 * : Alter this function according to the user's system.
mbed_official 46:378357d7e90d 143 * Arguments : none
mbed_official 46:378357d7e90d 144 * Return Value : none
mbed_official 46:378357d7e90d 145 *******************************************************************************/
mbed_official 46:378357d7e90d 146 void Userdef_USB_usb1_function_delay_1ms (void)
mbed_official 46:378357d7e90d 147 {
mbed_official 46:378357d7e90d 148 volatile int i;
mbed_official 46:378357d7e90d 149 volatile unsigned long tmp;
mbed_official 46:378357d7e90d 150
mbed_official 46:378357d7e90d 151 /*
mbed_official 46:378357d7e90d 152 * Wait 1ms (Please change for your MCU).
mbed_official 46:378357d7e90d 153 */
mbed_official 46:378357d7e90d 154 for (i = 0; i < 1440; ++i)
mbed_official 46:378357d7e90d 155 {
mbed_official 46:378357d7e90d 156 tmp = DUMMY_ACCESS;
mbed_official 46:378357d7e90d 157 }
mbed_official 46:378357d7e90d 158 }
mbed_official 46:378357d7e90d 159
mbed_official 46:378357d7e90d 160 /*******************************************************************************
mbed_official 46:378357d7e90d 161 * Function Name: Userdef_USB_usb1_function_delay_xms
mbed_official 46:378357d7e90d 162 * Description : Wait for the software in the period of time specified by the
mbed_official 46:378357d7e90d 163 * : argument.
mbed_official 46:378357d7e90d 164 * : Alter this function according to the user's system.
mbed_official 46:378357d7e90d 165 * Arguments : uint32_t msec ; Wait Time (msec)
mbed_official 46:378357d7e90d 166 * Return Value : none
mbed_official 46:378357d7e90d 167 *******************************************************************************/
mbed_official 46:378357d7e90d 168 void Userdef_USB_usb1_function_delay_xms (uint32_t msec)
mbed_official 46:378357d7e90d 169 {
mbed_official 46:378357d7e90d 170 volatile unsigned short i;
mbed_official 46:378357d7e90d 171
mbed_official 46:378357d7e90d 172 for (i = 0; i < msec; ++i)
mbed_official 46:378357d7e90d 173 {
mbed_official 46:378357d7e90d 174 Userdef_USB_usb1_function_delay_1ms();
mbed_official 46:378357d7e90d 175 }
mbed_official 46:378357d7e90d 176 }
mbed_official 46:378357d7e90d 177
mbed_official 46:378357d7e90d 178 /*******************************************************************************
mbed_official 46:378357d7e90d 179 * Function Name: Userdef_USB_usb1_function_delay_10us
mbed_official 46:378357d7e90d 180 * Description : Waits for software for the period specified by the argument.
mbed_official 46:378357d7e90d 181 * : Alter this function according to the user's system.
mbed_official 46:378357d7e90d 182 * Arguments : uint32_t usec ; Wait Time(x 10usec)
mbed_official 46:378357d7e90d 183 * Return Value : none
mbed_official 46:378357d7e90d 184 *******************************************************************************/
mbed_official 46:378357d7e90d 185 void Userdef_USB_usb1_function_delay_10us (uint32_t usec)
mbed_official 46:378357d7e90d 186 {
mbed_official 46:378357d7e90d 187 volatile int i;
mbed_official 46:378357d7e90d 188
mbed_official 46:378357d7e90d 189 /* Wait 10us (Please change for your MCU) */
mbed_official 46:378357d7e90d 190 for (i = 0; i < usec; ++i)
mbed_official 46:378357d7e90d 191 {
mbed_official 46:378357d7e90d 192 Userdef_USB_usb1_function_delay_10us_2();
mbed_official 46:378357d7e90d 193 }
mbed_official 46:378357d7e90d 194 }
mbed_official 46:378357d7e90d 195
mbed_official 46:378357d7e90d 196 /*******************************************************************************
mbed_official 46:378357d7e90d 197 * Function Name: Userdef_USB_usb1_function_delay_10us_2
mbed_official 46:378357d7e90d 198 * Description : Waits for software for the period specified by the argument.
mbed_official 46:378357d7e90d 199 * : Alter this function according to the user's system.
mbed_official 46:378357d7e90d 200 * Arguments : none
mbed_official 46:378357d7e90d 201 * Return Value : none
mbed_official 46:378357d7e90d 202 *******************************************************************************/
mbed_official 46:378357d7e90d 203 static void Userdef_USB_usb1_function_delay_10us_2 (void)
mbed_official 46:378357d7e90d 204 {
mbed_official 46:378357d7e90d 205 volatile int i;
mbed_official 46:378357d7e90d 206 volatile unsigned long tmp;
mbed_official 46:378357d7e90d 207
mbed_official 46:378357d7e90d 208 /* Wait 1us (Please change for your MCU) */
mbed_official 46:378357d7e90d 209 for (i = 0; i < 14; ++i)
mbed_official 46:378357d7e90d 210 {
mbed_official 46:378357d7e90d 211 tmp = DUMMY_ACCESS;
mbed_official 46:378357d7e90d 212 }
mbed_official 46:378357d7e90d 213 }
mbed_official 46:378357d7e90d 214
mbed_official 46:378357d7e90d 215 /*******************************************************************************
mbed_official 46:378357d7e90d 216 * Function Name: Userdef_USB_usb1_function_delay_500ns
mbed_official 46:378357d7e90d 217 * Description : Wait for software for 500ns.
mbed_official 46:378357d7e90d 218 * : Alter this function according to the user's system.
mbed_official 46:378357d7e90d 219 * Arguments : none
mbed_official 46:378357d7e90d 220 * Return Value : none
mbed_official 46:378357d7e90d 221 *******************************************************************************/
mbed_official 46:378357d7e90d 222 void Userdef_USB_usb1_function_delay_500ns (void)
mbed_official 46:378357d7e90d 223 {
mbed_official 46:378357d7e90d 224 volatile int i;
mbed_official 46:378357d7e90d 225 volatile unsigned long tmp;
mbed_official 46:378357d7e90d 226
mbed_official 46:378357d7e90d 227 /* Wait 500ns (Please change for your MCU) */
mbed_official 46:378357d7e90d 228 /* Wait 500ns I clock 266MHz */
mbed_official 46:378357d7e90d 229 tmp = DUMMY_ACCESS;
mbed_official 46:378357d7e90d 230 }
mbed_official 46:378357d7e90d 231
mbed_official 46:378357d7e90d 232 /*******************************************************************************
mbed_official 46:378357d7e90d 233 * Function Name: Userdef_USB_usb1_function_start_dma
mbed_official 46:378357d7e90d 234 * Description : Enables DMA transfer on the information specified by the argument.
mbed_official 46:378357d7e90d 235 * : Set DMAC register by this function to enable DMA transfer.
mbed_official 46:378357d7e90d 236 * : After executing this function, USB module is set to start DMA
mbed_official 46:378357d7e90d 237 * : transfer. DMA transfer should not wait for DMA transfer complete.
mbed_official 46:378357d7e90d 238 * Arguments : USB_FUNCTION_DMA_t *dma : DMA parameter
mbed_official 46:378357d7e90d 239 * : typedef struct{
mbed_official 46:378357d7e90d 240 * : uint32_t fifo; FIFO for using
mbed_official 46:378357d7e90d 241 * : uint32_t buffer; Start address of transfer source/destination
mbed_official 46:378357d7e90d 242 * : uint32_t bytes; Transfer size(Byte)
mbed_official 46:378357d7e90d 243 * : uint32_t dir; Transfer direction(0:Buffer->FIFO, 1:FIFO->Buffer)
mbed_official 46:378357d7e90d 244 * : uint32_t size; DMA transfer size
mbed_official 46:378357d7e90d 245 * : } USB_FUNCTION_DMA_t;
mbed_official 46:378357d7e90d 246 * : uint16_t dfacc ; 0 : cycle steal mode
mbed_official 46:378357d7e90d 247 * : 1 : 16byte continuous mode
mbed_official 46:378357d7e90d 248 * : 2 : 32byte continuous mode
mbed_official 46:378357d7e90d 249 * Return Value : none
mbed_official 46:378357d7e90d 250 *******************************************************************************/
mbed_official 46:378357d7e90d 251 void Userdef_USB_usb1_function_start_dma (USB_FUNCTION_DMA_t * dma, uint16_t dfacc)
mbed_official 46:378357d7e90d 252 {
mbed_official 46:378357d7e90d 253 uint32_t trncount;
mbed_official 46:378357d7e90d 254 uint32_t src;
mbed_official 46:378357d7e90d 255 uint32_t dst;
mbed_official 46:378357d7e90d 256 uint32_t size;
mbed_official 46:378357d7e90d 257 uint32_t dir;
mbed_official 46:378357d7e90d 258 #ifdef CACHE_WRITEBACK
mbed_official 46:378357d7e90d 259 uint32_t ptr;
mbed_official 46:378357d7e90d 260 #endif
mbed_official 46:378357d7e90d 261
mbed_official 46:378357d7e90d 262 trncount = dma->bytes;
mbed_official 46:378357d7e90d 263 dir = dma->dir;
mbed_official 46:378357d7e90d 264
mbed_official 46:378357d7e90d 265 if (dir == USB_FUNCTION_FIFO2BUF)
mbed_official 46:378357d7e90d 266 {
mbed_official 46:378357d7e90d 267 /* DxFIFO determination */
mbed_official 46:378357d7e90d 268 dst = dma->buffer;
mbed_official 46:378357d7e90d 269 #ifndef __USB_FUNCTION_DF_ACC_ENABLE__
mbed_official 46:378357d7e90d 270 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 271 {
mbed_official 46:378357d7e90d 272 src = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 273 }
mbed_official 46:378357d7e90d 274 else
mbed_official 46:378357d7e90d 275 {
mbed_official 46:378357d7e90d 276 src = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 277 }
mbed_official 46:378357d7e90d 278 size = dma->size;
mbed_official 46:378357d7e90d 279
mbed_official 46:378357d7e90d 280 if (size == 0)
mbed_official 46:378357d7e90d 281 {
mbed_official 46:378357d7e90d 282 src += 3; /* byte access */
mbed_official 46:378357d7e90d 283 }
mbed_official 46:378357d7e90d 284 else if (size == 1)
mbed_official 46:378357d7e90d 285 {
mbed_official 46:378357d7e90d 286 src += 2; /* short access */
mbed_official 46:378357d7e90d 287 }
mbed_official 46:378357d7e90d 288 else
mbed_official 46:378357d7e90d 289 {
mbed_official 46:378357d7e90d 290 /* Do Nothing */
mbed_official 46:378357d7e90d 291 }
mbed_official 46:378357d7e90d 292 #else
mbed_official 46:378357d7e90d 293 size = dma->size;
mbed_official 46:378357d7e90d 294
mbed_official 46:378357d7e90d 295 if (size == 2)
mbed_official 46:378357d7e90d 296 {
mbed_official 46:378357d7e90d 297 /* 32bit access */
mbed_official 46:378357d7e90d 298 if (dfacc == 2)
mbed_official 46:378357d7e90d 299 {
mbed_official 46:378357d7e90d 300 /* 32byte access */
mbed_official 46:378357d7e90d 301 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 302 {
mbed_official 46:378357d7e90d 303 src = (uint32_t)(&USB201.D0FIFOB0);
mbed_official 46:378357d7e90d 304 }
mbed_official 46:378357d7e90d 305 else
mbed_official 46:378357d7e90d 306 {
mbed_official 46:378357d7e90d 307 src = (uint32_t)(&USB201.D1FIFOB0);
mbed_official 46:378357d7e90d 308 }
mbed_official 46:378357d7e90d 309 }
mbed_official 46:378357d7e90d 310 else if (dfacc == 1)
mbed_official 46:378357d7e90d 311 {
mbed_official 46:378357d7e90d 312 /* 16byte access */
mbed_official 46:378357d7e90d 313 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 314 {
mbed_official 46:378357d7e90d 315 src = (uint32_t)(&USB201.D0FIFOB0);
mbed_official 46:378357d7e90d 316 }
mbed_official 46:378357d7e90d 317 else
mbed_official 46:378357d7e90d 318 {
mbed_official 46:378357d7e90d 319 src = (uint32_t)(&USB201.D1FIFOB0);
mbed_official 46:378357d7e90d 320 }
mbed_official 46:378357d7e90d 321 }
mbed_official 46:378357d7e90d 322 else
mbed_official 46:378357d7e90d 323 {
mbed_official 46:378357d7e90d 324 /* normal access */
mbed_official 46:378357d7e90d 325 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 326 {
mbed_official 46:378357d7e90d 327 src = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 328 }
mbed_official 46:378357d7e90d 329 else
mbed_official 46:378357d7e90d 330 {
mbed_official 46:378357d7e90d 331 src = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 332 }
mbed_official 46:378357d7e90d 333 }
mbed_official 46:378357d7e90d 334 }
mbed_official 46:378357d7e90d 335 else if (size == 1)
mbed_official 46:378357d7e90d 336 {
mbed_official 46:378357d7e90d 337 /* 16bit access */
mbed_official 46:378357d7e90d 338 dfacc = 0; /* force normal access */
mbed_official 46:378357d7e90d 339
mbed_official 46:378357d7e90d 340 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 341 {
mbed_official 46:378357d7e90d 342 src = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 343 }
mbed_official 46:378357d7e90d 344 else
mbed_official 46:378357d7e90d 345 {
mbed_official 46:378357d7e90d 346 src = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 347 }
mbed_official 46:378357d7e90d 348 src += 2; /* short access */
mbed_official 46:378357d7e90d 349 }
mbed_official 46:378357d7e90d 350 else
mbed_official 46:378357d7e90d 351 {
mbed_official 46:378357d7e90d 352 /* 8bit access */
mbed_official 46:378357d7e90d 353 dfacc = 0; /* force normal access */
mbed_official 46:378357d7e90d 354
mbed_official 46:378357d7e90d 355 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 356 {
mbed_official 46:378357d7e90d 357 src = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 358 }
mbed_official 46:378357d7e90d 359 else
mbed_official 46:378357d7e90d 360 {
mbed_official 46:378357d7e90d 361 src = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 362 }
mbed_official 46:378357d7e90d 363 src += 3; /* byte access */
mbed_official 46:378357d7e90d 364 }
mbed_official 46:378357d7e90d 365 #endif
mbed_official 46:378357d7e90d 366 }
mbed_official 46:378357d7e90d 367 else
mbed_official 46:378357d7e90d 368 {
mbed_official 46:378357d7e90d 369 /* DxFIFO determination */
mbed_official 46:378357d7e90d 370 src = dma->buffer;
mbed_official 46:378357d7e90d 371 #ifndef __USB_FUNCTION_DF_ACC_ENABLE__
mbed_official 46:378357d7e90d 372 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 373 {
mbed_official 46:378357d7e90d 374 dst = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 375 }
mbed_official 46:378357d7e90d 376 else
mbed_official 46:378357d7e90d 377 {
mbed_official 46:378357d7e90d 378 dst = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 379 }
mbed_official 46:378357d7e90d 380 size = dma->size;
mbed_official 46:378357d7e90d 381
mbed_official 46:378357d7e90d 382 if (size == 0)
mbed_official 46:378357d7e90d 383 {
mbed_official 46:378357d7e90d 384 dst += 3; /* byte access */
mbed_official 46:378357d7e90d 385 }
mbed_official 46:378357d7e90d 386 else if (size == 1)
mbed_official 46:378357d7e90d 387 {
mbed_official 46:378357d7e90d 388 dst += 2; /* short access */
mbed_official 46:378357d7e90d 389 }
mbed_official 46:378357d7e90d 390 else
mbed_official 46:378357d7e90d 391 {
mbed_official 46:378357d7e90d 392 /* Do Nothing */
mbed_official 46:378357d7e90d 393 }
mbed_official 46:378357d7e90d 394 #else
mbed_official 46:378357d7e90d 395 size = dma->size;
mbed_official 46:378357d7e90d 396
mbed_official 46:378357d7e90d 397 if (size == 2)
mbed_official 46:378357d7e90d 398 {
mbed_official 46:378357d7e90d 399 /* 32bit access */
mbed_official 46:378357d7e90d 400 if (dfacc == 2)
mbed_official 46:378357d7e90d 401 {
mbed_official 46:378357d7e90d 402 /* 32byte access */
mbed_official 46:378357d7e90d 403 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 404 {
mbed_official 46:378357d7e90d 405 dst = (uint32_t)(&USB201.D0FIFOB0);
mbed_official 46:378357d7e90d 406 }
mbed_official 46:378357d7e90d 407 else
mbed_official 46:378357d7e90d 408 {
mbed_official 46:378357d7e90d 409 dst = (uint32_t)(&USB201.D1FIFOB0);
mbed_official 46:378357d7e90d 410 }
mbed_official 46:378357d7e90d 411 }
mbed_official 46:378357d7e90d 412 else if (dfacc == 1)
mbed_official 46:378357d7e90d 413 {
mbed_official 46:378357d7e90d 414 /* 16byte access */
mbed_official 46:378357d7e90d 415 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 416 {
mbed_official 46:378357d7e90d 417 dst = (uint32_t)(&USB201.D0FIFOB0);
mbed_official 46:378357d7e90d 418 }
mbed_official 46:378357d7e90d 419 else
mbed_official 46:378357d7e90d 420 {
mbed_official 46:378357d7e90d 421 dst = (uint32_t)(&USB201.D1FIFOB0);
mbed_official 46:378357d7e90d 422 }
mbed_official 46:378357d7e90d 423 }
mbed_official 46:378357d7e90d 424 else
mbed_official 46:378357d7e90d 425 {
mbed_official 46:378357d7e90d 426 /* normal access */
mbed_official 46:378357d7e90d 427 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 428 {
mbed_official 46:378357d7e90d 429 dst = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 430 }
mbed_official 46:378357d7e90d 431 else
mbed_official 46:378357d7e90d 432 {
mbed_official 46:378357d7e90d 433 dst = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 434 }
mbed_official 46:378357d7e90d 435 }
mbed_official 46:378357d7e90d 436 }
mbed_official 46:378357d7e90d 437 else if (size == 1)
mbed_official 46:378357d7e90d 438 {
mbed_official 46:378357d7e90d 439 /* 16bit access */
mbed_official 46:378357d7e90d 440 dfacc = 0; /* force normal access */
mbed_official 46:378357d7e90d 441 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 442 {
mbed_official 46:378357d7e90d 443 dst = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 444 }
mbed_official 46:378357d7e90d 445 else
mbed_official 46:378357d7e90d 446 {
mbed_official 46:378357d7e90d 447 dst = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 448 }
mbed_official 46:378357d7e90d 449 dst += 2; /* short access */
mbed_official 46:378357d7e90d 450 }
mbed_official 46:378357d7e90d 451 else
mbed_official 46:378357d7e90d 452 {
mbed_official 46:378357d7e90d 453 /* 8bit access */
mbed_official 46:378357d7e90d 454 dfacc = 0; /* force normal access */
mbed_official 46:378357d7e90d 455
mbed_official 46:378357d7e90d 456 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 457 {
mbed_official 46:378357d7e90d 458 dst = (uint32_t)(&USB201.D0FIFO.UINT32);
mbed_official 46:378357d7e90d 459 }
mbed_official 46:378357d7e90d 460 else
mbed_official 46:378357d7e90d 461 {
mbed_official 46:378357d7e90d 462 dst = (uint32_t)(&USB201.D1FIFO.UINT32);
mbed_official 46:378357d7e90d 463 }
mbed_official 46:378357d7e90d 464 dst += 3; /* byte access */
mbed_official 46:378357d7e90d 465 }
mbed_official 46:378357d7e90d 466 #endif
mbed_official 46:378357d7e90d 467 }
mbed_official 46:378357d7e90d 468
mbed_official 46:378357d7e90d 469 #ifdef CACHE_WRITEBACK
mbed_official 46:378357d7e90d 470 ptr = (uint32_t)dma->buffer;
mbed_official 46:378357d7e90d 471
mbed_official 46:378357d7e90d 472 if ((ptr & 0x20000000ul) == 0)
mbed_official 46:378357d7e90d 473 {
mbed_official 46:378357d7e90d 474 io_cwb((uint32_t)ptr, (uint32_t)(ptr) + trncount);
mbed_official 46:378357d7e90d 475 }
mbed_official 46:378357d7e90d 476 #endif
mbed_official 46:378357d7e90d 477
mbed_official 46:378357d7e90d 478 if (dma->fifo == USB_FUNCTION_D0FIFO_DMA)
mbed_official 46:378357d7e90d 479 {
mbed_official 46:378357d7e90d 480 usb1_function_enable_dmac0(src, dst, trncount, size, dir, dma->fifo, dfacc);
mbed_official 46:378357d7e90d 481 }
mbed_official 46:378357d7e90d 482 else
mbed_official 46:378357d7e90d 483 {
mbed_official 46:378357d7e90d 484 usb1_function_enable_dmac1(src, dst, trncount, size, dir, dma->fifo, dfacc);
mbed_official 46:378357d7e90d 485 }
mbed_official 46:378357d7e90d 486 }
mbed_official 46:378357d7e90d 487
mbed_official 46:378357d7e90d 488 /*******************************************************************************
mbed_official 46:378357d7e90d 489 * Function Name: usb1_function_enable_dmac0
mbed_official 46:378357d7e90d 490 * Description : Enables DMA transfer on the information specified by the argument.
mbed_official 46:378357d7e90d 491 * Arguments : uint32_t src : src address
mbed_official 46:378357d7e90d 492 * : uint32_t dst : dst address
mbed_official 46:378357d7e90d 493 * : uint32_t count : transfer byte
mbed_official 46:378357d7e90d 494 * : uint32_t size : transfer size
mbed_official 46:378357d7e90d 495 * : uint32_t dir : direction
mbed_official 46:378357d7e90d 496 * : uint32_t fifo : FIFO(D0FIFO or D1FIFO)
mbed_official 46:378357d7e90d 497 * : uint16_t dfacc : 0 : normal access
mbed_official 46:378357d7e90d 498 * : : 1 : 16byte access
mbed_official 46:378357d7e90d 499 * : : 2 : 32byte access
mbed_official 46:378357d7e90d 500 * Return Value : none
mbed_official 46:378357d7e90d 501 *******************************************************************************/
mbed_official 46:378357d7e90d 502 static void usb1_function_enable_dmac0 (uint32_t src, uint32_t dst, uint32_t count,
mbed_official 46:378357d7e90d 503 uint32_t size, uint32_t dir, uint32_t fifo, uint16_t dfacc)
mbed_official 46:378357d7e90d 504 {
mbed_official 46:378357d7e90d 505 dmac_transinfo_t trans_info;
mbed_official 46:378357d7e90d 506 uint32_t request_factor = 0;
mbed_official 46:378357d7e90d 507 int32_t ret;
mbed_official 46:378357d7e90d 508
mbed_official 46:378357d7e90d 509 /* ==== Variable setting for DMAC initialization ==== */
mbed_official 46:378357d7e90d 510 trans_info.src_addr = (uint32_t)src; /* Start address of transfer source */
mbed_official 46:378357d7e90d 511 trans_info.dst_addr = (uint32_t)dst; /* Start address of transfer destination */
mbed_official 46:378357d7e90d 512 trans_info.count = (uint32_t)count; /* Total byte count to be transferred */
mbed_official 46:378357d7e90d 513 #ifndef __USB_FUNCTION_DF_ACC_ENABLE__
mbed_official 46:378357d7e90d 514 if (size == 0)
mbed_official 46:378357d7e90d 515 {
mbed_official 46:378357d7e90d 516 trans_info.src_size = DMAC_TRANS_SIZE_8; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 517 trans_info.dst_size = DMAC_TRANS_SIZE_8; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 518 }
mbed_official 46:378357d7e90d 519 else if (size == 1)
mbed_official 46:378357d7e90d 520 {
mbed_official 46:378357d7e90d 521 trans_info.src_size = DMAC_TRANS_SIZE_16; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 522 trans_info.dst_size = DMAC_TRANS_SIZE_16; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 523 }
mbed_official 46:378357d7e90d 524 else if (size == 2)
mbed_official 46:378357d7e90d 525 {
mbed_official 46:378357d7e90d 526 trans_info.src_size = DMAC_TRANS_SIZE_32; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 527 trans_info.dst_size = DMAC_TRANS_SIZE_32; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 528 }
mbed_official 46:378357d7e90d 529 else
mbed_official 46:378357d7e90d 530 {
mbed_official 46:378357d7e90d 531 printf("size error!!\n");
mbed_official 46:378357d7e90d 532 }
mbed_official 46:378357d7e90d 533 #else
mbed_official 46:378357d7e90d 534 if (dfacc == 2)
mbed_official 46:378357d7e90d 535 {
mbed_official 46:378357d7e90d 536 /* 32byte access */
mbed_official 46:378357d7e90d 537 trans_info.src_size = DMAC_TRANS_SIZE_256; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 538 trans_info.dst_size = DMAC_TRANS_SIZE_256; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 539 }
mbed_official 46:378357d7e90d 540 else if (dfacc == 1)
mbed_official 46:378357d7e90d 541 {
mbed_official 46:378357d7e90d 542 /* 16byte access */
mbed_official 46:378357d7e90d 543 trans_info.src_size = DMAC_TRANS_SIZE_128; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 544 trans_info.dst_size = DMAC_TRANS_SIZE_128; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 545 }
mbed_official 46:378357d7e90d 546 else
mbed_official 46:378357d7e90d 547 {
mbed_official 46:378357d7e90d 548 /* normal access */
mbed_official 46:378357d7e90d 549 if (size == 0)
mbed_official 46:378357d7e90d 550 {
mbed_official 46:378357d7e90d 551 trans_info.src_size = DMAC_TRANS_SIZE_8; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 552 trans_info.dst_size = DMAC_TRANS_SIZE_8; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 553 }
mbed_official 46:378357d7e90d 554 else if (size == 1)
mbed_official 46:378357d7e90d 555 {
mbed_official 46:378357d7e90d 556 trans_info.src_size = DMAC_TRANS_SIZE_16; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 557 trans_info.dst_size = DMAC_TRANS_SIZE_16; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 558 }
mbed_official 46:378357d7e90d 559 else if (size == 2)
mbed_official 46:378357d7e90d 560 {
mbed_official 46:378357d7e90d 561 trans_info.src_size = DMAC_TRANS_SIZE_32; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 562 trans_info.dst_size = DMAC_TRANS_SIZE_32; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 563 }
mbed_official 46:378357d7e90d 564 else
mbed_official 46:378357d7e90d 565 {
mbed_official 46:378357d7e90d 566 printf("size error!!\n");
mbed_official 46:378357d7e90d 567 }
mbed_official 46:378357d7e90d 568 }
mbed_official 46:378357d7e90d 569 #endif
mbed_official 46:378357d7e90d 570
mbed_official 46:378357d7e90d 571 if (dir == USB_FUNCTION_FIFO2BUF)
mbed_official 46:378357d7e90d 572 {
mbed_official 46:378357d7e90d 573 request_factor =DMAC_REQ_USB1_DMA0_RX; /* USB_0 channel 0 receive FIFO full */
mbed_official 46:378357d7e90d 574 trans_info.saddr_dir = DMAC_TRANS_ADR_NO_INC; /* Count direction of transfer source address */
mbed_official 46:378357d7e90d 575 trans_info.daddr_dir = DMAC_TRANS_ADR_INC; /* Count direction of transfer destination address */
mbed_official 46:378357d7e90d 576 }
mbed_official 46:378357d7e90d 577 else if (dir == USB_FUNCTION_BUF2FIFO)
mbed_official 46:378357d7e90d 578 {
mbed_official 46:378357d7e90d 579 request_factor =DMAC_REQ_USB1_DMA0_TX; /* USB_0 channel 0 receive FIFO empty */
mbed_official 46:378357d7e90d 580 trans_info.saddr_dir = DMAC_TRANS_ADR_INC; /* Count direction of transfer source address */
mbed_official 46:378357d7e90d 581 trans_info.daddr_dir = DMAC_TRANS_ADR_NO_INC; /* Count direction of transfer destination address */
mbed_official 46:378357d7e90d 582 }
mbed_official 46:378357d7e90d 583 else
mbed_official 46:378357d7e90d 584 {
mbed_official 46:378357d7e90d 585 /* Do Nothing */
mbed_official 46:378357d7e90d 586 }
mbed_official 46:378357d7e90d 587
mbed_official 46:378357d7e90d 588 /* ==== DMAC initialization ==== */
mbed_official 46:378357d7e90d 589 usb1_function_DMAC3_PeriReqInit((const dmac_transinfo_t *)&trans_info,
mbed_official 46:378357d7e90d 590 DMAC_MODE_REGISTER,
mbed_official 46:378357d7e90d 591 DMAC_SAMPLE_SINGLE,
mbed_official 46:378357d7e90d 592 request_factor,
mbed_official 46:378357d7e90d 593 0); /* Don't care DMAC_REQ_REQD is setting in
mbed_official 46:378357d7e90d 594 usb1_function_DMAC3_PeriReqInit() */
mbed_official 46:378357d7e90d 595
mbed_official 46:378357d7e90d 596 /* ==== DMAC startup ==== */
mbed_official 46:378357d7e90d 597 ret = usb1_function_DMAC3_Open(DMAC_REQ_MODE_PERI);
mbed_official 46:378357d7e90d 598 if (ret != 0)
mbed_official 46:378357d7e90d 599 {
mbed_official 46:378357d7e90d 600 printf("DMAC3 Open error!!\n");
mbed_official 46:378357d7e90d 601 }
mbed_official 46:378357d7e90d 602
mbed_official 46:378357d7e90d 603 return;
mbed_official 46:378357d7e90d 604 }
mbed_official 46:378357d7e90d 605
mbed_official 46:378357d7e90d 606 /*******************************************************************************
mbed_official 46:378357d7e90d 607 * Function Name: usb1_function_enable_dmac1
mbed_official 46:378357d7e90d 608 * Description : Enables DMA transfer on the information specified by the argument.
mbed_official 46:378357d7e90d 609 * Arguments : uint32_t src : src address
mbed_official 46:378357d7e90d 610 * : uint32_t dst : dst address
mbed_official 46:378357d7e90d 611 * : uint32_t count : transfer byte
mbed_official 46:378357d7e90d 612 * : uint32_t size : transfer size
mbed_official 46:378357d7e90d 613 * : uint32_t dir : direction
mbed_official 46:378357d7e90d 614 * : uint32_t fifo : FIFO(D0FIFO or D1FIFO)
mbed_official 46:378357d7e90d 615 * : uint16_t dfacc : 0 : normal access
mbed_official 46:378357d7e90d 616 * : : 1 : 16byte access
mbed_official 46:378357d7e90d 617 * : : 2 : 32byte access
mbed_official 46:378357d7e90d 618 * Return Value : none
mbed_official 46:378357d7e90d 619 *******************************************************************************/
mbed_official 46:378357d7e90d 620 static void usb1_function_enable_dmac1 (uint32_t src, uint32_t dst, uint32_t count,
mbed_official 46:378357d7e90d 621 uint32_t size, uint32_t dir, uint32_t fifo, uint16_t dfacc)
mbed_official 46:378357d7e90d 622 {
mbed_official 46:378357d7e90d 623 dmac_transinfo_t trans_info;
mbed_official 46:378357d7e90d 624 uint32_t request_factor = 0;
mbed_official 46:378357d7e90d 625 int32_t ret;
mbed_official 46:378357d7e90d 626
mbed_official 46:378357d7e90d 627 /* ==== Variable setting for DMAC initialization ==== */
mbed_official 46:378357d7e90d 628 trans_info.src_addr = (uint32_t)src; /* Start address of transfer source */
mbed_official 46:378357d7e90d 629 trans_info.dst_addr = (uint32_t)dst; /* Start address of transfer destination */
mbed_official 46:378357d7e90d 630 trans_info.count = (uint32_t)count; /* Total byte count to be transferred */
mbed_official 46:378357d7e90d 631 #ifndef __USB_FUNCTION_DF_ACC_ENABLE__
mbed_official 46:378357d7e90d 632 if (size == 0)
mbed_official 46:378357d7e90d 633 {
mbed_official 46:378357d7e90d 634 trans_info.src_size = DMAC_TRANS_SIZE_8; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 635 trans_info.dst_size = DMAC_TRANS_SIZE_8; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 636 }
mbed_official 46:378357d7e90d 637 else if (size == 1)
mbed_official 46:378357d7e90d 638 {
mbed_official 46:378357d7e90d 639 trans_info.src_size = DMAC_TRANS_SIZE_16; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 640 trans_info.dst_size = DMAC_TRANS_SIZE_16; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 641 }
mbed_official 46:378357d7e90d 642 else if (size == 2)
mbed_official 46:378357d7e90d 643 {
mbed_official 46:378357d7e90d 644 trans_info.src_size = DMAC_TRANS_SIZE_32; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 645 trans_info.dst_size = DMAC_TRANS_SIZE_32; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 646 }
mbed_official 46:378357d7e90d 647 else
mbed_official 46:378357d7e90d 648 {
mbed_official 46:378357d7e90d 649 printf("size error!!\n");
mbed_official 46:378357d7e90d 650 }
mbed_official 46:378357d7e90d 651 #else
mbed_official 46:378357d7e90d 652 if (dfacc == 2)
mbed_official 46:378357d7e90d 653 {
mbed_official 46:378357d7e90d 654 /* 32byte access */
mbed_official 46:378357d7e90d 655 trans_info.src_size = DMAC_TRANS_SIZE_256; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 656 trans_info.dst_size = DMAC_TRANS_SIZE_256; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 657 }
mbed_official 46:378357d7e90d 658 else if (dfacc == 1)
mbed_official 46:378357d7e90d 659 {
mbed_official 46:378357d7e90d 660 /* 16byte access */
mbed_official 46:378357d7e90d 661 trans_info.src_size = DMAC_TRANS_SIZE_128; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 662 trans_info.dst_size = DMAC_TRANS_SIZE_128; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 663 }
mbed_official 46:378357d7e90d 664 else
mbed_official 46:378357d7e90d 665 {
mbed_official 46:378357d7e90d 666 /* normal access */
mbed_official 46:378357d7e90d 667 if (size == 0)
mbed_official 46:378357d7e90d 668 {
mbed_official 46:378357d7e90d 669 trans_info.src_size = DMAC_TRANS_SIZE_8; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 670 trans_info.dst_size = DMAC_TRANS_SIZE_8; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 671 }
mbed_official 46:378357d7e90d 672 else if (size == 1)
mbed_official 46:378357d7e90d 673 {
mbed_official 46:378357d7e90d 674 trans_info.src_size = DMAC_TRANS_SIZE_16; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 675 trans_info.dst_size = DMAC_TRANS_SIZE_16; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 676 }
mbed_official 46:378357d7e90d 677 else if (size == 2)
mbed_official 46:378357d7e90d 678 {
mbed_official 46:378357d7e90d 679 trans_info.src_size = DMAC_TRANS_SIZE_32; /* Transfer source transfer size */
mbed_official 46:378357d7e90d 680 trans_info.dst_size = DMAC_TRANS_SIZE_32; /* Transfer destination transfer size */
mbed_official 46:378357d7e90d 681 }
mbed_official 46:378357d7e90d 682 else
mbed_official 46:378357d7e90d 683 {
mbed_official 46:378357d7e90d 684 printf("size error!!\n");
mbed_official 46:378357d7e90d 685 }
mbed_official 46:378357d7e90d 686 }
mbed_official 46:378357d7e90d 687 #endif
mbed_official 46:378357d7e90d 688
mbed_official 46:378357d7e90d 689 if (dir == USB_FUNCTION_FIFO2BUF)
mbed_official 46:378357d7e90d 690 {
mbed_official 46:378357d7e90d 691 request_factor =DMAC_REQ_USB1_DMA1_RX; /* USB_0 channel 0 receive FIFO full */
mbed_official 46:378357d7e90d 692 trans_info.saddr_dir = DMAC_TRANS_ADR_NO_INC; /* Count direction of transfer source address */
mbed_official 46:378357d7e90d 693 trans_info.daddr_dir = DMAC_TRANS_ADR_INC; /* Count direction of transfer destination address */
mbed_official 46:378357d7e90d 694 }
mbed_official 46:378357d7e90d 695 else if (dir == USB_FUNCTION_BUF2FIFO)
mbed_official 46:378357d7e90d 696 {
mbed_official 46:378357d7e90d 697 request_factor =DMAC_REQ_USB1_DMA1_TX; /* USB_0 channel 0 receive FIFO empty */
mbed_official 46:378357d7e90d 698 trans_info.saddr_dir = DMAC_TRANS_ADR_INC; /* Count direction of transfer source address */
mbed_official 46:378357d7e90d 699 trans_info.daddr_dir = DMAC_TRANS_ADR_NO_INC; /* Count direction of transfer destination address */
mbed_official 46:378357d7e90d 700 }
mbed_official 46:378357d7e90d 701 else
mbed_official 46:378357d7e90d 702 {
mbed_official 46:378357d7e90d 703 /* Do Nothing */
mbed_official 46:378357d7e90d 704 }
mbed_official 46:378357d7e90d 705
mbed_official 46:378357d7e90d 706 /* ==== DMAC initialization ==== */
mbed_official 46:378357d7e90d 707 usb1_function_DMAC4_PeriReqInit((const dmac_transinfo_t *)&trans_info,
mbed_official 46:378357d7e90d 708 DMAC_MODE_REGISTER,
mbed_official 46:378357d7e90d 709 DMAC_SAMPLE_SINGLE,
mbed_official 46:378357d7e90d 710 request_factor,
mbed_official 46:378357d7e90d 711 0); /* Don't care DMAC_REQ_REQD is setting in
mbed_official 46:378357d7e90d 712 usb1_function_DMAC4_PeriReqInit() */
mbed_official 46:378357d7e90d 713
mbed_official 46:378357d7e90d 714 /* ==== DMAC startup ==== */
mbed_official 46:378357d7e90d 715 ret = usb1_function_DMAC4_Open(DMAC_REQ_MODE_PERI);
mbed_official 46:378357d7e90d 716 if (ret != 0)
mbed_official 46:378357d7e90d 717 {
mbed_official 46:378357d7e90d 718 printf("DMAC4 Open error!!\n");
mbed_official 46:378357d7e90d 719 }
mbed_official 46:378357d7e90d 720
mbed_official 46:378357d7e90d 721 return;
mbed_official 46:378357d7e90d 722 }
mbed_official 46:378357d7e90d 723
mbed_official 46:378357d7e90d 724 /*******************************************************************************
mbed_official 46:378357d7e90d 725 * Function Name: Userdef_USB_usb1_function_stop_dma0
mbed_official 46:378357d7e90d 726 * Description : Disables DMA transfer.
mbed_official 46:378357d7e90d 727 * : This function should be executed to DMAC executed at the time
mbed_official 46:378357d7e90d 728 * : of specification of D0_FIF0_DMA in dma->fifo.
mbed_official 46:378357d7e90d 729 * Arguments : none
mbed_official 46:378357d7e90d 730 * Return Value : uint32_t return Transfer Counter register(DMATCRn) value
mbed_official 46:378357d7e90d 731 * : regarding to the bus width.
mbed_official 46:378357d7e90d 732 *******************************************************************************/
mbed_official 46:378357d7e90d 733 uint32_t Userdef_USB_usb1_function_stop_dma0 (void)
mbed_official 46:378357d7e90d 734 {
mbed_official 46:378357d7e90d 735 uint32_t remain;
mbed_official 46:378357d7e90d 736
mbed_official 46:378357d7e90d 737 /* ==== DMAC release ==== */
mbed_official 46:378357d7e90d 738 usb1_function_DMAC3_Close(&remain);
mbed_official 46:378357d7e90d 739
mbed_official 46:378357d7e90d 740 return remain;
mbed_official 46:378357d7e90d 741 }
mbed_official 46:378357d7e90d 742
mbed_official 46:378357d7e90d 743 /*******************************************************************************
mbed_official 46:378357d7e90d 744 * Function Name: Userdef_USB_usb1_function_stop_dma1
mbed_official 46:378357d7e90d 745 * Description : Disables DMA transfer.
mbed_official 46:378357d7e90d 746 * : This function should be executed to DMAC executed at the time
mbed_official 46:378357d7e90d 747 * : of specification of D1_FIF0_DMA in dma->fifo.
mbed_official 46:378357d7e90d 748 * Arguments : none
mbed_official 46:378357d7e90d 749 * Return Value : uint32_t return Transfer Counter register(DMATCRn) value
mbed_official 46:378357d7e90d 750 * : regarding to the bus width.
mbed_official 46:378357d7e90d 751 *******************************************************************************/
mbed_official 46:378357d7e90d 752 uint32_t Userdef_USB_usb1_function_stop_dma1 (void)
mbed_official 46:378357d7e90d 753 {
mbed_official 46:378357d7e90d 754 uint32_t remain;
mbed_official 46:378357d7e90d 755
mbed_official 46:378357d7e90d 756 /* ==== DMAC release ==== */
mbed_official 46:378357d7e90d 757 usb1_function_DMAC4_Close(&remain);
mbed_official 46:378357d7e90d 758
mbed_official 46:378357d7e90d 759 return remain;
mbed_official 46:378357d7e90d 760 }
mbed_official 46:378357d7e90d 761
mbed_official 46:378357d7e90d 762 /* End of File */