X-TOUCH to djay bridge

Dependencies:   mbed mbed-rtos FATFileSystem

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

Who changed what in which revision?

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