USBHost library. NOTE: This library is only officially supported on the LPC1768 platform. For more information, please see the handbook page.

Dependencies:   FATFileSystem mbed-rtos

Dependents:   BTstack WallbotWii SD to Flash Data Transfer USBHost-MSD_HelloWorld ... more

Legacy Warning

This is an mbed 2 library. To learn more about mbed OS 5, visit the docs.

Pull requests against this repository are no longer supported. Please raise against mbed OS 5 as documented above.

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