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_usbsig.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 "usb1_host.h"
mbed_official 29:d3b77affed28 41 #include "dev_drv.h"
mbed_official 29:d3b77affed28 42
mbed_official 29:d3b77affed28 43
mbed_official 29:d3b77affed28 44 /*******************************************************************************
mbed_official 29:d3b77affed28 45 Typedef definitions
mbed_official 29:d3b77affed28 46 *******************************************************************************/
mbed_official 29:d3b77affed28 47
mbed_official 29:d3b77affed28 48
mbed_official 29:d3b77affed28 49 /*******************************************************************************
mbed_official 29:d3b77affed28 50 Macro definitions
mbed_official 29:d3b77affed28 51 *******************************************************************************/
mbed_official 29:d3b77affed28 52
mbed_official 29:d3b77affed28 53
mbed_official 29:d3b77affed28 54 /*******************************************************************************
mbed_official 29:d3b77affed28 55 Imported global variables and functions (from other files)
mbed_official 29:d3b77affed28 56 *******************************************************************************/
mbed_official 29:d3b77affed28 57
mbed_official 29:d3b77affed28 58
mbed_official 29:d3b77affed28 59 /*******************************************************************************
mbed_official 29:d3b77affed28 60 Exported global variables and functions (to be accessed by other files)
mbed_official 29:d3b77affed28 61 *******************************************************************************/
mbed_official 29:d3b77affed28 62 static void usb1_host_EnableINT_Module(void);
mbed_official 29:d3b77affed28 63 static void usb1_host_Enable_AttachINT(void);
mbed_official 29:d3b77affed28 64 static void usb1_host_Disable_AttachINT(void);
mbed_official 29:d3b77affed28 65 static void usb1_host_Disable_BchgINT(void);
mbed_official 29:d3b77affed28 66
mbed_official 29:d3b77affed28 67
mbed_official 29:d3b77affed28 68 /*******************************************************************************
mbed_official 29:d3b77affed28 69 Private global variables and functions
mbed_official 29:d3b77affed28 70 *******************************************************************************/
mbed_official 29:d3b77affed28 71
mbed_official 29:d3b77affed28 72
mbed_official 29:d3b77affed28 73 /*******************************************************************************
mbed_official 29:d3b77affed28 74 * Function Name: usb1_host_InitModule
mbed_official 29:d3b77affed28 75 * Description : Initializes the USB module in USB host module.
mbed_official 29:d3b77affed28 76 * Arguments : none
mbed_official 29:d3b77affed28 77 * Return Value : none
mbed_official 29:d3b77affed28 78 *******************************************************************************/
mbed_official 29:d3b77affed28 79 void usb1_host_InitModule (void)
mbed_official 29:d3b77affed28 80 {
mbed_official 29:d3b77affed28 81 uint16_t buf1;
mbed_official 29:d3b77affed28 82 uint16_t buf2;
mbed_official 29:d3b77affed28 83 uint16_t buf3;
mbed_official 29:d3b77affed28 84
mbed_official 29:d3b77affed28 85 usb1_host_init_pipe_status();
mbed_official 29:d3b77affed28 86
mbed_official 29:d3b77affed28 87 RZA_IO_RegWrite_16(&USB201.SYSCFG0,
mbed_official 29:d3b77affed28 88 1,
mbed_official 29:d3b77affed28 89 USB_SYSCFG_DCFM_SHIFT,
mbed_official 29:d3b77affed28 90 USB_SYSCFG_DCFM); /* HOST mode */
mbed_official 29:d3b77affed28 91 RZA_IO_RegWrite_16(&USB201.SYSCFG0,
mbed_official 29:d3b77affed28 92 1,
mbed_official 29:d3b77affed28 93 USB_SYSCFG_DRPD_SHIFT,
mbed_official 29:d3b77affed28 94 USB_SYSCFG_DRPD); /* PORT0 D+, D- setting */
mbed_official 29:d3b77affed28 95
mbed_official 29:d3b77affed28 96 do
mbed_official 29:d3b77affed28 97 {
mbed_official 29:d3b77affed28 98 buf1 = RZA_IO_RegRead_16(&USB201.SYSSTS0,
mbed_official 29:d3b77affed28 99 USB_SYSSTS0_LNST_SHIFT,
mbed_official 29:d3b77affed28 100 USB_SYSSTS0_LNST);
mbed_official 29:d3b77affed28 101 Userdef_USB_usb1_host_delay_xms(50);
mbed_official 29:d3b77affed28 102 buf2 = RZA_IO_RegRead_16(&USB201.SYSSTS0,
mbed_official 29:d3b77affed28 103 USB_SYSSTS0_LNST_SHIFT,
mbed_official 29:d3b77affed28 104 USB_SYSSTS0_LNST);
mbed_official 29:d3b77affed28 105 Userdef_USB_usb1_host_delay_xms(50);
mbed_official 29:d3b77affed28 106 buf3 = RZA_IO_RegRead_16(&USB201.SYSSTS0,
mbed_official 29:d3b77affed28 107 USB_SYSSTS0_LNST_SHIFT,
mbed_official 29:d3b77affed28 108 USB_SYSSTS0_LNST);
mbed_official 29:d3b77affed28 109
mbed_official 29:d3b77affed28 110 } while ((buf1 != buf2) || (buf1 != buf3));
mbed_official 29:d3b77affed28 111
mbed_official 29:d3b77affed28 112 RZA_IO_RegWrite_16(&USB201.SYSCFG0,
mbed_official 29:d3b77affed28 113 1,
mbed_official 29:d3b77affed28 114 USB_SYSCFG_USBE_SHIFT,
mbed_official 29:d3b77affed28 115 USB_SYSCFG_USBE);
mbed_official 29:d3b77affed28 116
mbed_official 29:d3b77affed28 117 USB201.CFIFOSEL = (uint16_t)(USB_HOST_BITRCNT | USB_HOST_BITMBW_8 | USB_HOST_BITBYTE_LITTLE);
mbed_official 29:d3b77affed28 118 USB201.D0FIFOSEL = (uint16_t)( USB_HOST_BITMBW_8 | USB_HOST_BITBYTE_LITTLE);
mbed_official 29:d3b77affed28 119 USB201.D1FIFOSEL = (uint16_t)( USB_HOST_BITMBW_8 | USB_HOST_BITBYTE_LITTLE);
mbed_official 29:d3b77affed28 120 }
mbed_official 29:d3b77affed28 121
mbed_official 29:d3b77affed28 122 /*******************************************************************************
mbed_official 29:d3b77affed28 123 * Function Name: usb1_host_CheckAttach
mbed_official 29:d3b77affed28 124 * Description : Returns the USB device connection state.
mbed_official 29:d3b77affed28 125 * Arguments : none
mbed_official 29:d3b77affed28 126 * Return Value : uint16_t ; USB_HOST_ATTACH : Attached
mbed_official 29:d3b77affed28 127 * : ; USB_HOST_DETACH : not Attached
mbed_official 29:d3b77affed28 128 *******************************************************************************/
mbed_official 29:d3b77affed28 129 uint16_t usb1_host_CheckAttach (void)
mbed_official 29:d3b77affed28 130 {
mbed_official 29:d3b77affed28 131 uint16_t buf1;
mbed_official 29:d3b77affed28 132 uint16_t buf2;
mbed_official 29:d3b77affed28 133 uint16_t buf3;
mbed_official 29:d3b77affed28 134 uint16_t rhst;
mbed_official 29:d3b77affed28 135
mbed_official 29:d3b77affed28 136 do
mbed_official 29:d3b77affed28 137 {
mbed_official 29:d3b77affed28 138 buf1 = RZA_IO_RegRead_16(&USB201.SYSSTS0,
mbed_official 29:d3b77affed28 139 USB_SYSSTS0_LNST_SHIFT,
mbed_official 29:d3b77affed28 140 USB_SYSSTS0_LNST);
mbed_official 29:d3b77affed28 141 Userdef_USB_usb1_host_delay_xms(50);
mbed_official 29:d3b77affed28 142 buf2 = RZA_IO_RegRead_16(&USB201.SYSSTS0,
mbed_official 29:d3b77affed28 143 USB_SYSSTS0_LNST_SHIFT,
mbed_official 29:d3b77affed28 144 USB_SYSSTS0_LNST);
mbed_official 29:d3b77affed28 145 Userdef_USB_usb1_host_delay_xms(50);
mbed_official 29:d3b77affed28 146 buf3 = RZA_IO_RegRead_16(&USB201.SYSSTS0,
mbed_official 29:d3b77affed28 147 USB_SYSSTS0_LNST_SHIFT,
mbed_official 29:d3b77affed28 148 USB_SYSSTS0_LNST);
mbed_official 29:d3b77affed28 149
mbed_official 29:d3b77affed28 150 } while ((buf1 != buf2) || (buf1 != buf3));
mbed_official 29:d3b77affed28 151
mbed_official 29:d3b77affed28 152 rhst = RZA_IO_RegRead_16(&USB201.DVSTCTR0,
mbed_official 29:d3b77affed28 153 USB_DVSTCTR0_RHST_SHIFT,
mbed_official 29:d3b77affed28 154 USB_DVSTCTR0_RHST);
mbed_official 29:d3b77affed28 155 if (rhst == USB_HOST_UNDECID)
mbed_official 29:d3b77affed28 156 {
mbed_official 29:d3b77affed28 157 if (buf1 == USB_HOST_FS_JSTS)
mbed_official 29:d3b77affed28 158 {
mbed_official 29:d3b77affed28 159 if (g_usb1_host_SupportUsbDeviceSpeed == USB_HOST_HIGH_SPEED)
mbed_official 29:d3b77affed28 160 {
mbed_official 29:d3b77affed28 161 RZA_IO_RegWrite_16(&USB201.SYSCFG0,
mbed_official 29:d3b77affed28 162 1,
mbed_official 29:d3b77affed28 163 USB_SYSCFG_HSE_SHIFT,
mbed_official 29:d3b77affed28 164 USB_SYSCFG_HSE);
mbed_official 29:d3b77affed28 165 }
mbed_official 29:d3b77affed28 166 else
mbed_official 29:d3b77affed28 167 {
mbed_official 29:d3b77affed28 168 RZA_IO_RegWrite_16(&USB201.SYSCFG0,
mbed_official 29:d3b77affed28 169 0,
mbed_official 29:d3b77affed28 170 USB_SYSCFG_HSE_SHIFT,
mbed_official 29:d3b77affed28 171 USB_SYSCFG_HSE);
mbed_official 29:d3b77affed28 172 }
mbed_official 29:d3b77affed28 173 return USB_HOST_ATTACH;
mbed_official 29:d3b77affed28 174 }
mbed_official 29:d3b77affed28 175 else if (buf1 == USB_HOST_LS_JSTS)
mbed_official 29:d3b77affed28 176 {
mbed_official 29:d3b77affed28 177 /* Low Speed Device */
mbed_official 29:d3b77affed28 178 RZA_IO_RegWrite_16(&USB201.SYSCFG0,
mbed_official 29:d3b77affed28 179 0,
mbed_official 29:d3b77affed28 180 USB_SYSCFG_HSE_SHIFT,
mbed_official 29:d3b77affed28 181 USB_SYSCFG_HSE);
mbed_official 29:d3b77affed28 182 return USB_HOST_ATTACH;
mbed_official 29:d3b77affed28 183 }
mbed_official 29:d3b77affed28 184 else
mbed_official 29:d3b77affed28 185 {
mbed_official 29:d3b77affed28 186 /* Do Nothing */
mbed_official 29:d3b77affed28 187 }
mbed_official 29:d3b77affed28 188 }
mbed_official 29:d3b77affed28 189 else if ((rhst == USB_HOST_HSMODE) || (rhst == USB_HOST_FSMODE))
mbed_official 29:d3b77affed28 190 {
mbed_official 29:d3b77affed28 191 return USB_HOST_ATTACH;
mbed_official 29:d3b77affed28 192 }
mbed_official 29:d3b77affed28 193 else if (rhst == USB_HOST_LSMODE)
mbed_official 29:d3b77affed28 194 {
mbed_official 29:d3b77affed28 195 return USB_HOST_ATTACH;
mbed_official 29:d3b77affed28 196 }
mbed_official 29:d3b77affed28 197 else
mbed_official 29:d3b77affed28 198 {
mbed_official 29:d3b77affed28 199 /* Do Nothing */
mbed_official 29:d3b77affed28 200 }
mbed_official 29:d3b77affed28 201
mbed_official 29:d3b77affed28 202 return USB_HOST_DETACH;
mbed_official 29:d3b77affed28 203 }
mbed_official 29:d3b77affed28 204
mbed_official 29:d3b77affed28 205 /*******************************************************************************
mbed_official 29:d3b77affed28 206 * Function Name: usb1_host_UsbAttach
mbed_official 29:d3b77affed28 207 * Description : Connects the USB device.
mbed_official 29:d3b77affed28 208 * Arguments : none
mbed_official 29:d3b77affed28 209 * Return Value : none
mbed_official 29:d3b77affed28 210 *******************************************************************************/
mbed_official 29:d3b77affed28 211 void usb1_host_UsbAttach (void)
mbed_official 29:d3b77affed28 212 {
mbed_official 29:d3b77affed28 213 usb1_host_EnableINT_Module();
mbed_official 29:d3b77affed28 214 usb1_host_Disable_BchgINT();
mbed_official 29:d3b77affed28 215 usb1_host_Disable_AttachINT();
mbed_official 29:d3b77affed28 216 usb1_host_Enable_DetachINT();
mbed_official 29:d3b77affed28 217 }
mbed_official 29:d3b77affed28 218
mbed_official 29:d3b77affed28 219 /*******************************************************************************
mbed_official 29:d3b77affed28 220 * Function Name: usb1_host_UsbDetach
mbed_official 29:d3b77affed28 221 * Description : Disconnects the USB device.
mbed_official 29:d3b77affed28 222 * Arguments : none
mbed_official 29:d3b77affed28 223 * Return Value : none
mbed_official 29:d3b77affed28 224 *******************************************************************************/
mbed_official 29:d3b77affed28 225 void usb1_host_UsbDetach (void)
mbed_official 29:d3b77affed28 226 {
mbed_official 29:d3b77affed28 227 uint16_t pipe;
mbed_official 29:d3b77affed28 228 uint16_t devadr;
mbed_official 29:d3b77affed28 229
mbed_official 29:d3b77affed28 230 g_usb1_host_driver_state = USB_HOST_DRV_DETACHED;
mbed_official 29:d3b77affed28 231
mbed_official 29:d3b77affed28 232 /* Terminate all the pipes in which communications on port */
mbed_official 29:d3b77affed28 233 /* are currently carried out */
mbed_official 29:d3b77affed28 234 for (pipe = 0; pipe < (USB_HOST_MAX_PIPE_NO + 1); ++pipe)
mbed_official 29:d3b77affed28 235 {
mbed_official 29:d3b77affed28 236 if (g_usb1_host_pipe_status[pipe] != USB_HOST_PIPE_IDLE)
mbed_official 29:d3b77affed28 237 {
mbed_official 29:d3b77affed28 238 if (pipe == USB_HOST_PIPE0)
mbed_official 29:d3b77affed28 239 {
mbed_official 29:d3b77affed28 240 devadr = RZA_IO_RegRead_16(&USB201.DCPMAXP,
mbed_official 29:d3b77affed28 241 USB_DCPMAXP_DEVSEL_SHIFT,
mbed_official 29:d3b77affed28 242 USB_DCPMAXP_DEVSEL);
mbed_official 29:d3b77affed28 243 }
mbed_official 29:d3b77affed28 244 else
mbed_official 29:d3b77affed28 245 {
mbed_official 29:d3b77affed28 246 devadr = RZA_IO_RegRead_16(&g_usb1_host_pipemaxp[pipe], USB_PIPEMAXP_DEVSEL_SHIFT, USB_PIPEMAXP_DEVSEL);
mbed_official 29:d3b77affed28 247 }
mbed_official 29:d3b77affed28 248
mbed_official 29:d3b77affed28 249 if (devadr == g_usb1_host_UsbAddress)
mbed_official 29:d3b77affed28 250 {
mbed_official 29:d3b77affed28 251 usb1_host_stop_transfer(pipe);
mbed_official 29:d3b77affed28 252 }
mbed_official 29:d3b77affed28 253
mbed_official 29:d3b77affed28 254 g_usb1_host_pipe_status[pipe] = USB_HOST_PIPE_IDLE;
mbed_official 29:d3b77affed28 255 }
mbed_official 29:d3b77affed28 256 }
mbed_official 29:d3b77affed28 257
mbed_official 29:d3b77affed28 258 g_usb1_host_ConfigNum = 0;
mbed_official 29:d3b77affed28 259 g_usb1_host_UsbAddress = 0;
mbed_official 29:d3b77affed28 260 g_usb1_host_default_max_packet[USB_HOST_DEVICE_0] = 64;
mbed_official 29:d3b77affed28 261
mbed_official 29:d3b77affed28 262 usb1_host_UsbDetach2();
mbed_official 29:d3b77affed28 263 }
mbed_official 29:d3b77affed28 264
mbed_official 29:d3b77affed28 265 /*******************************************************************************
mbed_official 29:d3b77affed28 266 * Function Name: usb1_host_UsbDetach2
mbed_official 29:d3b77affed28 267 * Description : Disconnects the USB device.
mbed_official 29:d3b77affed28 268 * Arguments : none
mbed_official 29:d3b77affed28 269 * Return Value : none
mbed_official 29:d3b77affed28 270 *******************************************************************************/
mbed_official 29:d3b77affed28 271 void usb1_host_UsbDetach2 (void)
mbed_official 29:d3b77affed28 272 {
mbed_official 29:d3b77affed28 273 usb1_host_Disable_DetachINT();
mbed_official 29:d3b77affed28 274 usb1_host_Disable_BchgINT();
mbed_official 29:d3b77affed28 275 usb1_host_Enable_AttachINT();
mbed_official 29:d3b77affed28 276 }
mbed_official 29:d3b77affed28 277
mbed_official 29:d3b77affed28 278 /*******************************************************************************
mbed_official 29:d3b77affed28 279 * Function Name: usb1_host_UsbBusReset
mbed_official 29:d3b77affed28 280 * Description : Issues the USB bus reset signal.
mbed_official 29:d3b77affed28 281 * Arguments : none
mbed_official 29:d3b77affed28 282 * Return Value : uint16_t ; RHST
mbed_official 29:d3b77affed28 283 *******************************************************************************/
mbed_official 29:d3b77affed28 284 uint16_t usb1_host_UsbBusReset (void)
mbed_official 29:d3b77affed28 285 {
mbed_official 29:d3b77affed28 286 uint16_t buffer;
mbed_official 29:d3b77affed28 287 uint16_t loop;
mbed_official 29:d3b77affed28 288
mbed_official 29:d3b77affed28 289 RZA_IO_RegWrite_16(&USB201.DVSTCTR0,
mbed_official 29:d3b77affed28 290 1,
mbed_official 29:d3b77affed28 291 USB_DVSTCTR0_USBRST_SHIFT,
mbed_official 29:d3b77affed28 292 USB_DVSTCTR0_USBRST);
mbed_official 29:d3b77affed28 293 RZA_IO_RegWrite_16(&USB201.DVSTCTR0,
mbed_official 29:d3b77affed28 294 0,
mbed_official 29:d3b77affed28 295 USB_DVSTCTR0_UACT_SHIFT,
mbed_official 29:d3b77affed28 296 USB_DVSTCTR0_UACT);
mbed_official 29:d3b77affed28 297
mbed_official 29:d3b77affed28 298 Userdef_USB_usb1_host_delay_xms(50);
mbed_official 29:d3b77affed28 299
mbed_official 29:d3b77affed28 300 buffer = USB201.DVSTCTR0;
mbed_official 29:d3b77affed28 301 buffer &= (uint16_t)(~(USB_HOST_BITRST));
mbed_official 29:d3b77affed28 302 buffer |= USB_HOST_BITUACT;
mbed_official 29:d3b77affed28 303 USB201.DVSTCTR0 = buffer;
mbed_official 29:d3b77affed28 304
mbed_official 29:d3b77affed28 305 Userdef_USB_usb1_host_delay_xms(20);
mbed_official 29:d3b77affed28 306
mbed_official 29:d3b77affed28 307 for (loop = 0, buffer = USB_HOST_HSPROC; loop < 3; ++loop)
mbed_official 29:d3b77affed28 308 {
mbed_official 29:d3b77affed28 309 buffer = RZA_IO_RegRead_16(&USB201.DVSTCTR0,
mbed_official 29:d3b77affed28 310 USB_DVSTCTR0_RHST_SHIFT,
mbed_official 29:d3b77affed28 311 USB_DVSTCTR0_RHST);
mbed_official 29:d3b77affed28 312 if (buffer == USB_HOST_HSPROC)
mbed_official 29:d3b77affed28 313 {
mbed_official 29:d3b77affed28 314 Userdef_USB_usb1_host_delay_xms(10);
mbed_official 29:d3b77affed28 315 }
mbed_official 29:d3b77affed28 316 else
mbed_official 29:d3b77affed28 317 {
mbed_official 29:d3b77affed28 318 break;
mbed_official 29:d3b77affed28 319 }
mbed_official 29:d3b77affed28 320 }
mbed_official 29:d3b77affed28 321
mbed_official 29:d3b77affed28 322 return buffer;
mbed_official 29:d3b77affed28 323 }
mbed_official 29:d3b77affed28 324
mbed_official 29:d3b77affed28 325 /*******************************************************************************
mbed_official 29:d3b77affed28 326 * Function Name: usb1_host_UsbResume
mbed_official 29:d3b77affed28 327 * Description : Issues the USB resume signal.
mbed_official 29:d3b77affed28 328 * Arguments : none
mbed_official 29:d3b77affed28 329 * Return Value : int32_t ; DEVDRV_SUCCESS
mbed_official 29:d3b77affed28 330 * : ; DEVDRV_ERROR
mbed_official 29:d3b77affed28 331 *******************************************************************************/
mbed_official 29:d3b77affed28 332 int32_t usb1_host_UsbResume (void)
mbed_official 29:d3b77affed28 333 {
mbed_official 29:d3b77affed28 334 uint16_t buf;
mbed_official 29:d3b77affed28 335
mbed_official 29:d3b77affed28 336 if ((g_usb1_host_driver_state & USB_HOST_DRV_SUSPEND) == 0)
mbed_official 29:d3b77affed28 337 {
mbed_official 29:d3b77affed28 338 /* not SUSPEND */
mbed_official 29:d3b77affed28 339 return DEVDRV_ERROR;
mbed_official 29:d3b77affed28 340 }
mbed_official 29:d3b77affed28 341
mbed_official 29:d3b77affed28 342 RZA_IO_RegWrite_16(&USB201.INTENB1,
mbed_official 29:d3b77affed28 343 0,
mbed_official 29:d3b77affed28 344 USB_INTENB1_BCHGE_SHIFT,
mbed_official 29:d3b77affed28 345 USB_INTENB1_BCHGE);
mbed_official 29:d3b77affed28 346 RZA_IO_RegWrite_16(&USB201.DVSTCTR0,
mbed_official 29:d3b77affed28 347 1,
mbed_official 29:d3b77affed28 348 USB_DVSTCTR0_RESUME_SHIFT,
mbed_official 29:d3b77affed28 349 USB_DVSTCTR0_RESUME);
mbed_official 29:d3b77affed28 350 Userdef_USB_usb1_host_delay_xms(20);
mbed_official 29:d3b77affed28 351
mbed_official 29:d3b77affed28 352 buf = USB201.DVSTCTR0;
mbed_official 29:d3b77affed28 353 buf &= (uint16_t)(~(USB_HOST_BITRESUME));
mbed_official 29:d3b77affed28 354 buf |= USB_HOST_BITUACT;
mbed_official 29:d3b77affed28 355 USB201.DVSTCTR0 = buf;
mbed_official 29:d3b77affed28 356
mbed_official 29:d3b77affed28 357 g_usb1_host_driver_state &= (uint16_t)~USB_HOST_DRV_SUSPEND;
mbed_official 29:d3b77affed28 358
mbed_official 29:d3b77affed28 359 return DEVDRV_SUCCESS;
mbed_official 29:d3b77affed28 360 }
mbed_official 29:d3b77affed28 361
mbed_official 29:d3b77affed28 362 /*******************************************************************************
mbed_official 29:d3b77affed28 363 * Function Name: usb1_host_UsbSuspend
mbed_official 29:d3b77affed28 364 * Description : Issues the USB suspend signal.
mbed_official 29:d3b77affed28 365 * Arguments : none
mbed_official 29:d3b77affed28 366 * Return Value : int32_t ; DEVDRV_SUCCESS :not SUSPEND
mbed_official 29:d3b77affed28 367 * : ; DEVDRV_ERROR :SUSPEND
mbed_official 29:d3b77affed28 368 *******************************************************************************/
mbed_official 29:d3b77affed28 369 int32_t usb1_host_UsbSuspend (void)
mbed_official 29:d3b77affed28 370 {
mbed_official 29:d3b77affed28 371 uint16_t buf;
mbed_official 29:d3b77affed28 372
mbed_official 29:d3b77affed28 373 if ((g_usb1_host_driver_state & USB_HOST_DRV_SUSPEND) != 0)
mbed_official 29:d3b77affed28 374 {
mbed_official 29:d3b77affed28 375 /* SUSPEND */
mbed_official 29:d3b77affed28 376 return DEVDRV_ERROR;
mbed_official 29:d3b77affed28 377 }
mbed_official 29:d3b77affed28 378
mbed_official 29:d3b77affed28 379 RZA_IO_RegWrite_16(&USB201.DVSTCTR0,
mbed_official 29:d3b77affed28 380 0,
mbed_official 29:d3b77affed28 381 USB_DVSTCTR0_UACT_SHIFT,
mbed_official 29:d3b77affed28 382 USB_DVSTCTR0_UACT);
mbed_official 29:d3b77affed28 383
mbed_official 29:d3b77affed28 384 Userdef_USB_usb1_host_delay_xms(5);
mbed_official 29:d3b77affed28 385
mbed_official 29:d3b77affed28 386 buf = RZA_IO_RegRead_16(&USB201.SYSSTS0,
mbed_official 29:d3b77affed28 387 USB_SYSSTS0_LNST_SHIFT,
mbed_official 29:d3b77affed28 388 USB_SYSSTS0_LNST);
mbed_official 29:d3b77affed28 389 if ((buf != USB_HOST_FS_JSTS) && (buf != USB_HOST_LS_JSTS))
mbed_official 29:d3b77affed28 390 {
mbed_official 29:d3b77affed28 391 usb1_host_UsbDetach();
mbed_official 29:d3b77affed28 392 }
mbed_official 29:d3b77affed28 393 else
mbed_official 29:d3b77affed28 394 {
mbed_official 29:d3b77affed28 395 g_usb1_host_driver_state |= USB_HOST_DRV_SUSPEND;
mbed_official 29:d3b77affed28 396 }
mbed_official 29:d3b77affed28 397
mbed_official 29:d3b77affed28 398 return DEVDRV_SUCCESS;
mbed_official 29:d3b77affed28 399 }
mbed_official 29:d3b77affed28 400
mbed_official 29:d3b77affed28 401 /*******************************************************************************
mbed_official 29:d3b77affed28 402 * Function Name: usb1_host_Enable_DetachINT
mbed_official 29:d3b77affed28 403 * Description : Enables the USB disconnection interrupt.
mbed_official 29:d3b77affed28 404 * Arguments : none
mbed_official 29:d3b77affed28 405 * Return Value : none
mbed_official 29:d3b77affed28 406 *******************************************************************************/
mbed_official 29:d3b77affed28 407 void usb1_host_Enable_DetachINT (void)
mbed_official 29:d3b77affed28 408 {
mbed_official 29:d3b77affed28 409 USB201.INTSTS1 = (uint16_t)(~(USB_HOST_BITDTCH));
mbed_official 29:d3b77affed28 410 RZA_IO_RegWrite_16(&USB201.INTENB1,
mbed_official 29:d3b77affed28 411 1,
mbed_official 29:d3b77affed28 412 USB_INTENB1_DTCHE_SHIFT,
mbed_official 29:d3b77affed28 413 USB_INTENB1_DTCHE);
mbed_official 29:d3b77affed28 414 }
mbed_official 29:d3b77affed28 415
mbed_official 29:d3b77affed28 416 /*******************************************************************************
mbed_official 29:d3b77affed28 417 * Function Name: usb1_host_Disable_DetachINT
mbed_official 29:d3b77affed28 418 * Description : Disables the USB disconnection interrupt.
mbed_official 29:d3b77affed28 419 * Arguments : none
mbed_official 29:d3b77affed28 420 * Return Value : none
mbed_official 29:d3b77affed28 421 *******************************************************************************/
mbed_official 29:d3b77affed28 422 void usb1_host_Disable_DetachINT (void)
mbed_official 29:d3b77affed28 423 {
mbed_official 29:d3b77affed28 424 USB201.INTSTS1 = (uint16_t)(~(USB_HOST_BITDTCH));
mbed_official 29:d3b77affed28 425 RZA_IO_RegWrite_16(&USB201.INTENB1,
mbed_official 29:d3b77affed28 426 0,
mbed_official 29:d3b77affed28 427 USB_INTENB1_DTCHE_SHIFT,
mbed_official 29:d3b77affed28 428 USB_INTENB1_DTCHE);
mbed_official 29:d3b77affed28 429 }
mbed_official 29:d3b77affed28 430
mbed_official 29:d3b77affed28 431 /*******************************************************************************
mbed_official 29:d3b77affed28 432 * Function Name: usb1_host_Enable_AttachINT
mbed_official 29:d3b77affed28 433 * Description : Enables the USB connection detection interrupt.
mbed_official 29:d3b77affed28 434 * Arguments : none
mbed_official 29:d3b77affed28 435 * Return Value : none
mbed_official 29:d3b77affed28 436 *******************************************************************************/
mbed_official 29:d3b77affed28 437 void usb1_host_Enable_AttachINT (void)
mbed_official 29:d3b77affed28 438 {
mbed_official 29:d3b77affed28 439 USB201.INTSTS1 = (uint16_t)(~(USB_HOST_BITATTCH));
mbed_official 29:d3b77affed28 440 RZA_IO_RegWrite_16(&USB201.INTENB1,
mbed_official 29:d3b77affed28 441 1,
mbed_official 29:d3b77affed28 442 USB_INTENB1_ATTCHE_SHIFT,
mbed_official 29:d3b77affed28 443 USB_INTENB1_ATTCHE);
mbed_official 29:d3b77affed28 444 }
mbed_official 29:d3b77affed28 445
mbed_official 29:d3b77affed28 446 /*******************************************************************************
mbed_official 29:d3b77affed28 447 * Function Name: usb1_host_Disable_AttachINT
mbed_official 29:d3b77affed28 448 * Description : Disables the USB connection detection interrupt.
mbed_official 29:d3b77affed28 449 * Arguments : none
mbed_official 29:d3b77affed28 450 * Return Value : none
mbed_official 29:d3b77affed28 451 *******************************************************************************/
mbed_official 29:d3b77affed28 452 void usb1_host_Disable_AttachINT (void)
mbed_official 29:d3b77affed28 453 {
mbed_official 29:d3b77affed28 454 USB201.INTSTS1 = (uint16_t)(~(USB_HOST_BITATTCH));
mbed_official 29:d3b77affed28 455 RZA_IO_RegWrite_16(&USB201.INTENB1,
mbed_official 29:d3b77affed28 456 0,
mbed_official 29:d3b77affed28 457 USB_INTENB1_ATTCHE_SHIFT,
mbed_official 29:d3b77affed28 458 USB_INTENB1_ATTCHE);
mbed_official 29:d3b77affed28 459 }
mbed_official 29:d3b77affed28 460
mbed_official 29:d3b77affed28 461 /*******************************************************************************
mbed_official 29:d3b77affed28 462 * Function Name: usb1_host_Disable_BchgINT
mbed_official 29:d3b77affed28 463 * Description : Disables the USB bus change detection interrupt.
mbed_official 29:d3b77affed28 464 * Arguments : none
mbed_official 29:d3b77affed28 465 * Return Value : none
mbed_official 29:d3b77affed28 466 *******************************************************************************/
mbed_official 29:d3b77affed28 467 void usb1_host_Disable_BchgINT (void)
mbed_official 29:d3b77affed28 468 {
mbed_official 29:d3b77affed28 469 USB201.INTSTS1 = (uint16_t)(~(USB_HOST_BITBCHG));
mbed_official 29:d3b77affed28 470 RZA_IO_RegWrite_16(&USB201.INTENB1,
mbed_official 29:d3b77affed28 471 0,
mbed_official 29:d3b77affed28 472 USB_INTENB1_BCHGE_SHIFT,
mbed_official 29:d3b77affed28 473 USB_INTENB1_BCHGE);
mbed_official 29:d3b77affed28 474 }
mbed_official 29:d3b77affed28 475
mbed_official 29:d3b77affed28 476 /*******************************************************************************
mbed_official 29:d3b77affed28 477 * Function Name: usb1_host_set_devadd
mbed_official 29:d3b77affed28 478 * Description : DEVADDn register is set by specified value
mbed_official 29:d3b77affed28 479 * Arguments : uint16_t addr : Device address
mbed_official 29:d3b77affed28 480 * : uint16_t *devadd : Set value
mbed_official 29:d3b77affed28 481 * Return Value : none
mbed_official 29:d3b77affed28 482 *******************************************************************************/
mbed_official 29:d3b77affed28 483 void usb1_host_set_devadd (uint16_t addr, uint16_t * devadd)
mbed_official 29:d3b77affed28 484 {
mbed_official 29:d3b77affed28 485 uint16_t * ptr;
mbed_official 29:d3b77affed28 486 uint16_t ret_flag = DEVDRV_FLAG_ON; // avoid warning.
mbed_official 29:d3b77affed28 487
mbed_official 29:d3b77affed28 488 switch (addr)
mbed_official 29:d3b77affed28 489 {
mbed_official 29:d3b77affed28 490 case USB_HOST_DEVICE_0:
mbed_official 29:d3b77affed28 491 ptr = (uint16_t *)&USB201.DEVADD0;
mbed_official 29:d3b77affed28 492 break;
mbed_official 29:d3b77affed28 493
mbed_official 29:d3b77affed28 494 case USB_HOST_DEVICE_1:
mbed_official 29:d3b77affed28 495 ptr = (uint16_t *)&USB201.DEVADD1;
mbed_official 29:d3b77affed28 496 break;
mbed_official 29:d3b77affed28 497
mbed_official 29:d3b77affed28 498 case USB_HOST_DEVICE_2:
mbed_official 29:d3b77affed28 499 ptr = (uint16_t *)&USB201.DEVADD2;
mbed_official 29:d3b77affed28 500 break;
mbed_official 29:d3b77affed28 501
mbed_official 29:d3b77affed28 502 case USB_HOST_DEVICE_3:
mbed_official 29:d3b77affed28 503 ptr = (uint16_t *)&USB201.DEVADD3;
mbed_official 29:d3b77affed28 504 break;
mbed_official 29:d3b77affed28 505
mbed_official 29:d3b77affed28 506 case USB_HOST_DEVICE_4:
mbed_official 29:d3b77affed28 507 ptr = (uint16_t *)&USB201.DEVADD4;
mbed_official 29:d3b77affed28 508 break;
mbed_official 29:d3b77affed28 509
mbed_official 29:d3b77affed28 510 case USB_HOST_DEVICE_5:
mbed_official 29:d3b77affed28 511 ptr = (uint16_t *)&USB201.DEVADD5;
mbed_official 29:d3b77affed28 512 break;
mbed_official 29:d3b77affed28 513
mbed_official 29:d3b77affed28 514 case USB_HOST_DEVICE_6:
mbed_official 29:d3b77affed28 515 ptr = (uint16_t *)&USB201.DEVADD6;
mbed_official 29:d3b77affed28 516 break;
mbed_official 29:d3b77affed28 517
mbed_official 29:d3b77affed28 518 case USB_HOST_DEVICE_7:
mbed_official 29:d3b77affed28 519 ptr = (uint16_t *)&USB201.DEVADD7;
mbed_official 29:d3b77affed28 520 break;
mbed_official 29:d3b77affed28 521
mbed_official 29:d3b77affed28 522 case USB_HOST_DEVICE_8:
mbed_official 29:d3b77affed28 523 ptr = (uint16_t *)&USB201.DEVADD8;
mbed_official 29:d3b77affed28 524 break;
mbed_official 29:d3b77affed28 525
mbed_official 29:d3b77affed28 526 case USB_HOST_DEVICE_9:
mbed_official 29:d3b77affed28 527 ptr = (uint16_t *)&USB201.DEVADD9;
mbed_official 29:d3b77affed28 528 break;
mbed_official 29:d3b77affed28 529
mbed_official 29:d3b77affed28 530 case USB_HOST_DEVICE_10:
mbed_official 29:d3b77affed28 531 ptr = (uint16_t *)&USB201.DEVADDA;
mbed_official 29:d3b77affed28 532 break;
mbed_official 29:d3b77affed28 533
mbed_official 29:d3b77affed28 534 default:
mbed_official 29:d3b77affed28 535 ret_flag = DEVDRV_FLAG_OFF;
mbed_official 29:d3b77affed28 536 break;
mbed_official 29:d3b77affed28 537 }
mbed_official 29:d3b77affed28 538
mbed_official 29:d3b77affed28 539 if (ret_flag == DEVDRV_FLAG_ON)
mbed_official 29:d3b77affed28 540 {
mbed_official 29:d3b77affed28 541 *ptr = (uint16_t)(*devadd & USB_HOST_DEVADD_MASK);
mbed_official 29:d3b77affed28 542 }
mbed_official 29:d3b77affed28 543 }
mbed_official 29:d3b77affed28 544
mbed_official 29:d3b77affed28 545 /*******************************************************************************
mbed_official 29:d3b77affed28 546 * Function Name: usb1_host_get_devadd
mbed_official 29:d3b77affed28 547 * Description : DEVADDn register is obtained
mbed_official 29:d3b77affed28 548 * Arguments : uint16_t addr : Device address
mbed_official 29:d3b77affed28 549 * : uint16_t *devadd : USB_HOST_DEVADD register value
mbed_official 29:d3b77affed28 550 * Return Value : none
mbed_official 29:d3b77affed28 551 *******************************************************************************/
mbed_official 29:d3b77affed28 552 void usb1_host_get_devadd (uint16_t addr, uint16_t * devadd)
mbed_official 29:d3b77affed28 553 {
mbed_official 29:d3b77affed28 554 uint16_t * ptr;
mbed_official 29:d3b77affed28 555 uint16_t ret_flag = DEVDRV_FLAG_ON; // avoid warning.
mbed_official 29:d3b77affed28 556
mbed_official 29:d3b77affed28 557 switch (addr)
mbed_official 29:d3b77affed28 558 {
mbed_official 29:d3b77affed28 559 case USB_HOST_DEVICE_0:
mbed_official 29:d3b77affed28 560 ptr = (uint16_t *)&USB201.DEVADD0;
mbed_official 29:d3b77affed28 561 break;
mbed_official 29:d3b77affed28 562
mbed_official 29:d3b77affed28 563 case USB_HOST_DEVICE_1:
mbed_official 29:d3b77affed28 564 ptr = (uint16_t *)&USB201.DEVADD1;
mbed_official 29:d3b77affed28 565 break;
mbed_official 29:d3b77affed28 566
mbed_official 29:d3b77affed28 567 case USB_HOST_DEVICE_2:
mbed_official 29:d3b77affed28 568 ptr = (uint16_t *)&USB201.DEVADD2;
mbed_official 29:d3b77affed28 569 break;
mbed_official 29:d3b77affed28 570
mbed_official 29:d3b77affed28 571 case USB_HOST_DEVICE_3:
mbed_official 29:d3b77affed28 572 ptr = (uint16_t *)&USB201.DEVADD3;
mbed_official 29:d3b77affed28 573 break;
mbed_official 29:d3b77affed28 574
mbed_official 29:d3b77affed28 575 case USB_HOST_DEVICE_4:
mbed_official 29:d3b77affed28 576 ptr = (uint16_t *)&USB201.DEVADD4;
mbed_official 29:d3b77affed28 577 break;
mbed_official 29:d3b77affed28 578
mbed_official 29:d3b77affed28 579 case USB_HOST_DEVICE_5:
mbed_official 29:d3b77affed28 580 ptr = (uint16_t *)&USB201.DEVADD5;
mbed_official 29:d3b77affed28 581 break;
mbed_official 29:d3b77affed28 582
mbed_official 29:d3b77affed28 583 case USB_HOST_DEVICE_6:
mbed_official 29:d3b77affed28 584 ptr = (uint16_t *)&USB201.DEVADD6;
mbed_official 29:d3b77affed28 585 break;
mbed_official 29:d3b77affed28 586
mbed_official 29:d3b77affed28 587 case USB_HOST_DEVICE_7:
mbed_official 29:d3b77affed28 588 ptr = (uint16_t *)&USB201.DEVADD7;
mbed_official 29:d3b77affed28 589 break;
mbed_official 29:d3b77affed28 590
mbed_official 29:d3b77affed28 591 case USB_HOST_DEVICE_8:
mbed_official 29:d3b77affed28 592 ptr = (uint16_t *)&USB201.DEVADD8;
mbed_official 29:d3b77affed28 593 break;
mbed_official 29:d3b77affed28 594
mbed_official 29:d3b77affed28 595 case USB_HOST_DEVICE_9:
mbed_official 29:d3b77affed28 596 ptr = (uint16_t *)&USB201.DEVADD9;
mbed_official 29:d3b77affed28 597 break;
mbed_official 29:d3b77affed28 598
mbed_official 29:d3b77affed28 599 case USB_HOST_DEVICE_10:
mbed_official 29:d3b77affed28 600 ptr = (uint16_t *)&USB201.DEVADDA;
mbed_official 29:d3b77affed28 601 break;
mbed_official 29:d3b77affed28 602
mbed_official 29:d3b77affed28 603 default:
mbed_official 29:d3b77affed28 604 ret_flag = DEVDRV_FLAG_OFF;
mbed_official 29:d3b77affed28 605 break;
mbed_official 29:d3b77affed28 606 }
mbed_official 29:d3b77affed28 607
mbed_official 29:d3b77affed28 608 if (ret_flag == DEVDRV_FLAG_ON)
mbed_official 29:d3b77affed28 609 {
mbed_official 29:d3b77affed28 610 *devadd = *ptr;
mbed_official 29:d3b77affed28 611 }
mbed_official 29:d3b77affed28 612 }
mbed_official 29:d3b77affed28 613
mbed_official 29:d3b77affed28 614 /*******************************************************************************
mbed_official 29:d3b77affed28 615 * Function Name: usb1_host_EnableINT_Module
mbed_official 29:d3b77affed28 616 * Description : Enables BEMP/NRDY/BRDY interrupt and SIGN/SACK interrupt.
mbed_official 29:d3b77affed28 617 * : Enables NRDY/BEMP interrupt in the pipe0.
mbed_official 29:d3b77affed28 618 * Arguments : none
mbed_official 29:d3b77affed28 619 * Return Value : none
mbed_official 29:d3b77affed28 620 *******************************************************************************/
mbed_official 29:d3b77affed28 621 void usb1_host_EnableINT_Module (void)
mbed_official 29:d3b77affed28 622 {
mbed_official 29:d3b77affed28 623 uint16_t buf;
mbed_official 29:d3b77affed28 624
mbed_official 29:d3b77affed28 625 buf = USB201.INTENB0;
mbed_official 29:d3b77affed28 626 buf |= (USB_HOST_BITBEMPE | USB_HOST_BITNRDYE | USB_HOST_BITBRDYE);
mbed_official 29:d3b77affed28 627 USB201.INTENB0 = buf;
mbed_official 29:d3b77affed28 628
mbed_official 29:d3b77affed28 629 buf = USB201.INTENB1;
mbed_official 29:d3b77affed28 630 buf |= (USB_HOST_BITSIGNE | USB_HOST_BITSACKE);
mbed_official 29:d3b77affed28 631 USB201.INTENB1 = buf;
mbed_official 29:d3b77affed28 632
mbed_official 29:d3b77affed28 633 usb1_host_enable_nrdy_int(USB_HOST_PIPE0);
mbed_official 29:d3b77affed28 634 usb1_host_enable_bemp_int(USB_HOST_PIPE0);
mbed_official 29:d3b77affed28 635 }
mbed_official 29:d3b77affed28 636
mbed_official 29:d3b77affed28 637 /* End of File */