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.
Diff: USBHost/TARGET_RENESAS/TARGET_RZ_A1H/usb1/src/common/usb1_host_lib.c
- Revision:
- 39:d96aa62afc5b
- Parent:
- 38:d66f404b66d4
- Child:
- 40:7c3b59bb364e
--- a/USBHost/TARGET_RENESAS/TARGET_RZ_A1H/usb1/src/common/usb1_host_lib.c Thu Jul 20 12:21:36 2017 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1598 +0,0 @@ -/******************************************************************************* -* DISCLAIMER -* This software is supplied by Renesas Electronics Corporation and is only -* intended for use with Renesas products. No other uses are authorized. This -* software is owned by Renesas Electronics Corporation and is protected under -* all applicable laws, including copyright laws. -* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING -* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT -* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE -* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. -* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS -* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE -* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR -* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE -* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -* Renesas reserves the right, without notice, to make changes to this software -* and to discontinue the availability of this software. By using this software, -* you agree to the additional terms and conditions found by accessing the -* following link: -* http://www.renesas.com/disclaimer -* Copyright (C) 2012 - 2014 Renesas Electronics Corporation. All rights reserved. -*******************************************************************************/ -/******************************************************************************* -* File Name : usb1_host_lib.c -* $Rev: 1116 $ -* $Date:: 2014-07-09 16:29:19 +0900#$ -* Device(s) : RZ/A1H -* Tool-Chain : -* OS : None -* H/W Platform : -* Description : RZ/A1H R7S72100 USB Sample Program -* Operation : -* Limitations : -*******************************************************************************/ - - -/******************************************************************************* -Includes <System Includes> , "Project Includes" -*******************************************************************************/ -#include "usb1_host.h" -#if(1) /* ohci_wrapp */ -#include "MBRZA1H.h" /* INTC Driver Header */ -#else -#include "devdrv_intc.h" /* INTC Driver Header */ -#endif - - -/******************************************************************************* -Typedef definitions -*******************************************************************************/ - - -/******************************************************************************* -Macro definitions -*******************************************************************************/ - - -/******************************************************************************* -Imported global variables and functions (from other files) -*******************************************************************************/ - - -/******************************************************************************* -Exported global variables and functions (to be accessed by other files) -*******************************************************************************/ - - -/******************************************************************************* -Private global variables and functions -*******************************************************************************/ - - -/******************************************************************************* -* Function Name: usb1_host_enable_brdy_int -* Description : Enables BRDY interrupt in the pipe spceified by the argument. -* : Disables BEMP/NRDY/BRDY interrupts in all pipes before enabling -* : BRDY. Enables BRDY interrupt in the pipe specified by the argument -* : in the disabled status. After enabling BRDY, recover all -* : BEMP/NRDY/BRDY disabled/enabled status. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_enable_brdy_int (uint16_t pipe) -{ - /* enable brdy interrupt */ - USB201.BRDYENB |= (uint16_t)g_usb1_host_bit_set[pipe]; -} - -/******************************************************************************* -* Function Name: usb1_host_disable_brdy_int -* Description : Disables BRDY interrupt in the pipe spceified by the argument. -* : Disables BEMP/NRDY/BRDY interrupts in all pipes before disabling -* : BRDY. Enables BRDY interrupt in the pipe specified by the argument -* : in the disabled status. After disabling BRDY, recover all -* : BEMP/NRDY/BRDY disabled/enabled status. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_disable_brdy_int (uint16_t pipe) -{ - /* disable brdy interrupt */ - USB201.BRDYENB &= (uint16_t)~(g_usb1_host_bit_set[pipe]); -} - -/******************************************************************************* -* Function Name: usb1_host_clear_brdy_sts -* Description : Clear BRDY interrupt status in the pipe spceified by the argument. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_clear_brdy_sts (uint16_t pipe) -{ - /* clear brdy status */ - USB201.BRDYSTS = (uint16_t)~(g_usb1_host_bit_set[pipe]); -} - -/******************************************************************************* -* Function Name: usb1_host_enable_bemp_int -* Description : Enables BEMP interrupt in the pipe spceified by the argument. -* : Disables BEMP/NRDY/BRDY interrupts in all pipes before enabling -* : BEMP. Enables BEMP interrupt in the pipe specified by the argument -* : in the disabled status. After enabling BEMP, recover all -* : BEMP/NRDY/BRDY disabled/enabled status. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_enable_bemp_int (uint16_t pipe) -{ - /* enable bemp interrupt */ - USB201.BEMPENB |= (uint16_t)g_usb1_host_bit_set[pipe]; -} - -/******************************************************************************* -* Function Name: usb1_host_disable_bemp_int -* Description : Disables BEMP interrupt in the pipe spceified by the argument. -* : Disables BEMP/NRDY/BRDY interrupts in all pipes before disabling -* : BEMP. Enables BEMP interrupt in the pipe specified by the argument -* : in the disabled status. After enabling BEMP, recover all -* : BEMP/NRDY/BRDY disabled/enabled status. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_disable_bemp_int (uint16_t pipe) -{ - /* disable bemp interrupt */ - USB201.BEMPENB &= (uint16_t)~(g_usb1_host_bit_set[pipe]); -} - -/******************************************************************************* -* Function Name: usb1_host_clear_bemp_sts -* Description : Clear BEMP interrupt status in the pipe spceified by the argument. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_clear_bemp_sts (uint16_t pipe) -{ - /* clear bemp status */ - USB201.BEMPSTS = (uint16_t)~(g_usb1_host_bit_set[pipe]); -} - -/******************************************************************************* -* Function Name: usb1_host_enable_nrdy_int -* Description : Enables NRDY interrupt in the pipe spceified by the argument. -* : Disables BEMP/NRDY/BRDY interrupts in all pipes before enabling -* : NRDY. Enables NRDY interrupt in the pipe specified by the argument -* : in the disabled status. After enabling NRDY, recover all -* : BEMP/NRDY/BRDY disabled/enabled status. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_enable_nrdy_int (uint16_t pipe) -{ - /* enable nrdy interrupt */ - USB201.NRDYENB |= (uint16_t)g_usb1_host_bit_set[pipe]; -} - -/******************************************************************************* -* Function Name: usb1_host_disable_nrdy_int -* Description : Disables NRDY interrupt in the pipe spceified by the argument. -* : Disables BEMP/NRDY/BRDY interrupts in all pipes before disabling -* : NRDY. Disables NRDY interrupt in the pipe specified by the argument -* : in the disabled status. After disabling NRDY, recover all -* : BEMP/NRDY/BRDY disabled/enabled status. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_disable_nrdy_int (uint16_t pipe) -{ - /* disable nrdy interrupt */ - USB201.NRDYENB &= (uint16_t)~(g_usb1_host_bit_set[pipe]); -} - -/******************************************************************************* -* Function Name: usb1_host_clear_nrdy_sts -* Description : Clear NRDY interrupt status in the pipe spceified by the argument. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_clear_nrdy_sts (uint16_t pipe) -{ - /* clear nrdy status */ - USB201.NRDYSTS = (uint16_t)~(g_usb1_host_bit_set[pipe]); -} - -/******************************************************************************* -* Function Name: usb1_host_is_hispeed -* Description : Returns the result of USB reset hand shake (RHST) as -* : return value. -* Arguments : none -* Return Value : USB_HOST_HIGH_SPEED ; Hi-Speed -* : USB_HOST_FULL_SPEED ; Full-Speed -* : USB_HOST_LOW_SPEED ; Low-Speed -* : USB_HOST_NON_SPEED ; error -*******************************************************************************/ -uint16_t usb1_host_is_hispeed (void) -{ - uint16_t rhst; - uint16_t speed; - - rhst = RZA_IO_RegRead_16(&USB201.DVSTCTR0, - USB_DVSTCTR0_RHST_SHIFT, - USB_DVSTCTR0_RHST); - if (rhst == USB_HOST_HSMODE) - { - speed = USB_HOST_HIGH_SPEED; - } - else if (rhst == USB_HOST_FSMODE) - { - speed = USB_HOST_FULL_SPEED; - } - else if (rhst == USB_HOST_LSMODE) - { - speed = USB_HOST_LOW_SPEED; - } - else - { - speed = USB_HOST_NON_SPEED; - } - - return speed; -} - -/******************************************************************************* -* Function Name: usb1_host_is_hispeed_enable -* Description : Returns the USB High-Speed connection enabled status as -* : return value. -* Arguments : none -* Return Value : USB_HOST_YES : Hi-Speed Enable -* : USB_HOST_NO : Hi-Speed Disable -*******************************************************************************/ -uint16_t usb1_host_is_hispeed_enable (void) -{ - uint16_t ret; - - ret = USB_HOST_NO; - - if (RZA_IO_RegRead_16(&USB201.SYSCFG0, - USB_SYSCFG_HSE_SHIFT, - USB_SYSCFG_HSE) == 1) - { - ret = USB_HOST_YES; - } - - return ret; -} - -/******************************************************************************* -* Function Name: usb1_host_set_pid_buf -* Description : Enables communicaqtion in the pipe specified by the argument -* : (BUF). -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_set_pid_buf (uint16_t pipe) -{ - uint16_t pid; - - pid = usb1_host_get_pid(pipe); - - if (pid == USB_HOST_PID_STALL2) - { - usb1_host_set_pid_nak(pipe); - } - - switch (pipe) - { - case USB_HOST_PIPE0: - RZA_IO_RegWrite_16(&USB201.DCPCTR, - USB_HOST_PID_BUF, - USB_DCPCTR_PID_SHIFT, - USB_DCPCTR_PID); - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - USB_HOST_PID_BUF, - USB_PIPEnCTR_9_PID_SHIFT, - USB_PIPEnCTR_9_PID); - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name: usb1_host_set_pid_nak -* Description : Disables communication (NAK) in the pipe specified by the argument. -* : When the pipe status was enabling communication (BUF) before -* : executing before executing this function, waits in the software -* : until the pipe becomes ready after setting disabled. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_set_pid_nak (uint16_t pipe) -{ - uint16_t pid; - uint16_t pbusy; - uint32_t loop; - - pid = usb1_host_get_pid(pipe); - - if (pid == USB_HOST_PID_STALL2) - { - usb1_host_set_pid_stall(pipe); - } - - switch (pipe) - { - case USB_HOST_PIPE0: - RZA_IO_RegWrite_16(&USB201.DCPCTR, - USB_HOST_PID_NAK, - USB_DCPCTR_PID_SHIFT, - USB_DCPCTR_PID); - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - USB_HOST_PID_NAK, - USB_PIPEnCTR_9_PID_SHIFT, - USB_PIPEnCTR_9_PID); - break; - - default: - break; - } - - if (pid == USB_HOST_PID_BUF) - { - for (loop = 0; loop < 200; loop++) - { - switch (pipe) - { - case USB_HOST_PIPE0: - pbusy = RZA_IO_RegRead_16(&USB201.DCPCTR, - USB_DCPCTR_PBUSY_SHIFT, - USB_DCPCTR_PBUSY); - break; - - case USB_HOST_PIPE1: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE1CTR, - USB_PIPEnCTR_1_5_PBUSY_SHIFT, - USB_PIPEnCTR_1_5_PBUSY); - break; - - case USB_HOST_PIPE2: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE2CTR, - USB_PIPEnCTR_1_5_PBUSY_SHIFT, - USB_PIPEnCTR_1_5_PBUSY); - break; - - case USB_HOST_PIPE3: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE3CTR, - USB_PIPEnCTR_1_5_PBUSY_SHIFT, - USB_PIPEnCTR_1_5_PBUSY); - break; - - case USB_HOST_PIPE4: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE4CTR, - USB_PIPEnCTR_1_5_PBUSY_SHIFT, - USB_PIPEnCTR_1_5_PBUSY); - break; - - case USB_HOST_PIPE5: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE5CTR, - USB_PIPEnCTR_1_5_PBUSY_SHIFT, - USB_PIPEnCTR_1_5_PBUSY); - break; - - case USB_HOST_PIPE6: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE6CTR, - USB_PIPEnCTR_6_8_PBUSY_SHIFT, - USB_PIPEnCTR_6_8_PBUSY); - break; - - case USB_HOST_PIPE7: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE7CTR, - USB_PIPEnCTR_6_8_PBUSY_SHIFT, - USB_PIPEnCTR_6_8_PBUSY); - break; - - case USB_HOST_PIPE8: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE8CTR, - USB_PIPEnCTR_6_8_PBUSY_SHIFT, - USB_PIPEnCTR_6_8_PBUSY); - break; - - case USB_HOST_PIPE9: - pbusy = RZA_IO_RegRead_16(&USB201.PIPE9CTR, - USB_PIPEnCTR_9_PBUSY_SHIFT, - USB_PIPEnCTR_9_PBUSY); - break; - - default: - pbusy = 1; - break; - } - - if (pbusy == 0) - { - break; - } - - Userdef_USB_usb1_host_delay_500ns(); - } - } -} - -/******************************************************************************* -* Function Name: usb1_host_set_pid_stall -* Description : Disables communication (STALL) in the pipe specified by the -* : argument. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_set_pid_stall (uint16_t pipe) -{ - uint16_t pid; - - pid = usb1_host_get_pid(pipe); - - if (pid == USB_HOST_PID_BUF) - { - switch (pipe) - { - case USB_HOST_PIPE0: - RZA_IO_RegWrite_16(&USB201.DCPCTR, - USB_HOST_PID_STALL2, - USB_DCPCTR_PID_SHIFT, - USB_DCPCTR_PID); - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - USB_HOST_PID_STALL2, - USB_PIPEnCTR_9_PID_SHIFT, - USB_PIPEnCTR_9_PID); - break; - - default: - break; - } - } - else - { - switch (pipe) - { - case USB_HOST_PIPE0: - RZA_IO_RegWrite_16(&USB201.DCPCTR, - USB_HOST_PID_STALL, - USB_DCPCTR_PID_SHIFT, - USB_DCPCTR_PID); - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - USB_HOST_PID_STALL, - USB_PIPEnCTR_9_PID_SHIFT, - USB_PIPEnCTR_9_PID); - break; - - default: - break; - } - } -} - -/******************************************************************************* -* Function Name: usb1_host_clear_pid_stall -* Description : Disables communication (NAK) in the pipe specified by the argument. -* Arguments : uint16_t pipe ; pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_clear_pid_stall (uint16_t pipe) -{ - usb1_host_set_pid_nak(pipe); -} - -/******************************************************************************* -* Function Name: usb1_host_get_pid -* Description : Returns the pipe state specified by the argument. -* Arguments : uint16_t pipe ; Pipe Number -* Return Value : PID -*******************************************************************************/ -uint16_t usb1_host_get_pid (uint16_t pipe) -{ - uint16_t pid; - - switch (pipe) - { - case USB_HOST_PIPE0: - pid = RZA_IO_RegRead_16(&USB201.DCPCTR, - USB_DCPCTR_PID_SHIFT, - USB_DCPCTR_PID); - break; - - case USB_HOST_PIPE1: - pid = RZA_IO_RegRead_16(&USB201.PIPE1CTR, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE2: - pid = RZA_IO_RegRead_16(&USB201.PIPE2CTR, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE3: - pid = RZA_IO_RegRead_16(&USB201.PIPE3CTR, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE4: - pid = RZA_IO_RegRead_16(&USB201.PIPE4CTR, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE5: - pid = RZA_IO_RegRead_16(&USB201.PIPE5CTR, - USB_PIPEnCTR_1_5_PID_SHIFT, - USB_PIPEnCTR_1_5_PID); - break; - - case USB_HOST_PIPE6: - pid = RZA_IO_RegRead_16(&USB201.PIPE6CTR, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE7: - pid = RZA_IO_RegRead_16(&USB201.PIPE7CTR, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE8: - pid = RZA_IO_RegRead_16(&USB201.PIPE8CTR, - USB_PIPEnCTR_6_8_PID_SHIFT, - USB_PIPEnCTR_6_8_PID); - break; - - case USB_HOST_PIPE9: - pid = RZA_IO_RegRead_16(&USB201.PIPE9CTR, - USB_PIPEnCTR_9_PID_SHIFT, - USB_PIPEnCTR_9_PID); - break; - - default: - pid = 0; - break; - } - - return pid; -} - -/******************************************************************************* -* Function Name: usb1_host_set_csclr -* Description : CSPLIT status clear setting of sprit transaction in specified -* : pipe is performed. -* : When SQSET bit or SQCLR bit, and SQSET bit or SQCLR bit -* : in DCPCTR register are continuously changed (when the sequence -* : toggle bit of data PID is continuously changed over two or more pipes), -* : the access cycle with 120 ns and more than 5 cycle bus clock is necessary. -* : Do not set both SQCLR bit and SQSET bit to 1 at the same time. -* : In addition, both bits should be operated after PID is set to NAK. -* : However, when it is set to the isochronous transfer as the transfer type -* : (TYPE=11), writing in SQSET bit is disabled. -* Arguments : uint16_t pipe ; Pipe number -* Return Value : none -*******************************************************************************/ -void usb1_host_set_csclr (uint16_t pipe) -{ - switch (pipe) - { - case USB_HOST_PIPE0: - RZA_IO_RegWrite_16(&USB201.DCPCTR, - 1, - USB_DCPCTR_CSCLR_SHIFT, - USB_DCPCTR_CSCLR); - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - 1, - USB_PIPEnCTR_1_5_CSCLR_SHIFT, - USB_PIPEnCTR_1_5_CSCLR); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - 1, - USB_PIPEnCTR_1_5_CSCLR_SHIFT, - USB_PIPEnCTR_1_5_CSCLR); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - 1, - USB_PIPEnCTR_1_5_CSCLR_SHIFT, - USB_PIPEnCTR_1_5_CSCLR); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - 1, - USB_PIPEnCTR_1_5_CSCLR_SHIFT, - USB_PIPEnCTR_1_5_CSCLR); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - 1, - USB_PIPEnCTR_1_5_CSCLR_SHIFT, - USB_PIPEnCTR_1_5_CSCLR); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - 1, - USB_PIPEnCTR_6_8_CSCLR_SHIFT, - USB_PIPEnCTR_6_8_CSCLR); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - 1, - USB_PIPEnCTR_6_8_CSCLR_SHIFT, - USB_PIPEnCTR_6_8_CSCLR); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - 1, - USB_PIPEnCTR_6_8_CSCLR_SHIFT, - USB_PIPEnCTR_6_8_CSCLR); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - 1, - USB_PIPEnCTR_9_CSCLR_SHIFT, - USB_PIPEnCTR_9_CSCLR); - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name: usb1_host_set_sqclr -* Description : Sets the sequence bit of the pipe specified by the argument to -* : DATA0. -* Arguments : uint16_t pipe ; Pipe Number -* Return Value : none -*******************************************************************************/ -void usb1_host_set_sqclr (uint16_t pipe) -{ - switch (pipe) - { - case USB_HOST_PIPE0: - RZA_IO_RegWrite_16(&USB201.DCPCTR, - 1, - USB_DCPCTR_SQCLR_SHIFT, - USB_DCPCTR_SQCLR); - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - 1, - USB_PIPEnCTR_1_5_SQCLR_SHIFT, - USB_PIPEnCTR_1_5_SQCLR); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - 1, - USB_PIPEnCTR_1_5_SQCLR_SHIFT, - USB_PIPEnCTR_1_5_SQCLR); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - 1, - USB_PIPEnCTR_1_5_SQCLR_SHIFT, - USB_PIPEnCTR_1_5_SQCLR); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - 1, - USB_PIPEnCTR_1_5_SQCLR_SHIFT, - USB_PIPEnCTR_1_5_SQCLR); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - 1, - USB_PIPEnCTR_1_5_SQCLR_SHIFT, - USB_PIPEnCTR_1_5_SQCLR); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - 1, - USB_PIPEnCTR_6_8_SQCLR_SHIFT, - USB_PIPEnCTR_6_8_SQCLR); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - 1, - USB_PIPEnCTR_6_8_SQCLR_SHIFT, - USB_PIPEnCTR_6_8_SQCLR); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - 1, - USB_PIPEnCTR_6_8_SQCLR_SHIFT, - USB_PIPEnCTR_6_8_SQCLR); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - 1, - USB_PIPEnCTR_9_SQCLR_SHIFT, - USB_PIPEnCTR_9_SQCLR); - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name: usb1_host_set_sqset -* Description : Sets the sequence bit of the pipe specified by the argument to -* : DATA1. -* Arguments : uint16_t pipe ; Pipe number -* Return Value : none -*******************************************************************************/ -void usb1_host_set_sqset (uint16_t pipe) -{ - switch (pipe) - { - case USB_HOST_PIPE0: - RZA_IO_RegWrite_16(&USB201.DCPCTR, - 1, - USB_DCPCTR_SQSET_SHIFT, - USB_DCPCTR_SQSET); - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - 1, - USB_PIPEnCTR_1_5_SQSET_SHIFT, - USB_PIPEnCTR_1_5_SQSET); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - 1, - USB_PIPEnCTR_1_5_SQSET_SHIFT, - USB_PIPEnCTR_1_5_SQSET); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - 1, - USB_PIPEnCTR_1_5_SQSET_SHIFT, - USB_PIPEnCTR_1_5_SQSET); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - 1, - USB_PIPEnCTR_1_5_SQSET_SHIFT, - USB_PIPEnCTR_1_5_SQSET); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - 1, - USB_PIPEnCTR_1_5_SQSET_SHIFT, - USB_PIPEnCTR_1_5_SQSET); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - 1, - USB_PIPEnCTR_6_8_SQSET_SHIFT, - USB_PIPEnCTR_6_8_SQSET); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - 1, - USB_PIPEnCTR_6_8_SQSET_SHIFT, - USB_PIPEnCTR_6_8_SQSET); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - 1, - USB_PIPEnCTR_6_8_SQSET_SHIFT, - USB_PIPEnCTR_6_8_SQSET); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - 1, - USB_PIPEnCTR_9_SQSET_SHIFT, - USB_PIPEnCTR_9_SQSET); - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name: usb1_host_get_sqmon -* Description : Toggle bit of specified pipe is obtained -* Arguments : uint16_t pipe ; Pipe number -* Return Value : sqmon -*******************************************************************************/ -uint16_t usb1_host_get_sqmon (uint16_t pipe) -{ - uint16_t sqmon; - - switch (pipe) - { - case USB_HOST_PIPE0: - sqmon = RZA_IO_RegRead_16(&USB201.DCPCTR, - USB_DCPCTR_SQMON_SHIFT, - USB_DCPCTR_SQMON); - break; - - case USB_HOST_PIPE1: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE1CTR, - USB_PIPEnCTR_1_5_SQMON_SHIFT, - USB_PIPEnCTR_1_5_SQMON); - break; - - case USB_HOST_PIPE2: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE2CTR, - USB_PIPEnCTR_1_5_SQMON_SHIFT, - USB_PIPEnCTR_1_5_SQMON); - break; - - case USB_HOST_PIPE3: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE3CTR, - USB_PIPEnCTR_1_5_SQMON_SHIFT, - USB_PIPEnCTR_1_5_SQMON); - break; - - case USB_HOST_PIPE4: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE4CTR, - USB_PIPEnCTR_1_5_SQMON_SHIFT, - USB_PIPEnCTR_1_5_SQMON); - break; - - case USB_HOST_PIPE5: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE5CTR, - USB_PIPEnCTR_1_5_SQMON_SHIFT, - USB_PIPEnCTR_1_5_SQMON); - break; - - case USB_HOST_PIPE6: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE6CTR, - USB_PIPEnCTR_6_8_SQMON_SHIFT, - USB_PIPEnCTR_6_8_SQMON); - break; - - case USB_HOST_PIPE7: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE7CTR, - USB_PIPEnCTR_6_8_SQMON_SHIFT, - USB_PIPEnCTR_6_8_SQMON); - break; - - case USB_HOST_PIPE8: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE8CTR, - USB_PIPEnCTR_6_8_SQMON_SHIFT, - USB_PIPEnCTR_6_8_SQMON); - break; - - case USB_HOST_PIPE9: - sqmon = RZA_IO_RegRead_16(&USB201.PIPE9CTR, - USB_PIPEnCTR_9_SQMON_SHIFT, - USB_PIPEnCTR_9_SQMON); - break; - - default: - sqmon = 0; - break; - } - - return sqmon; -} - -/******************************************************************************* -* Function Name: usb1_host_aclrm -* Description : The buffer of specified pipe is initialized -* Arguments : uint16_t pipe : Pipe -* Return Value : none -*******************************************************************************/ -void usb1_host_aclrm (uint16_t pipe) -{ - usb1_host_set_aclrm(pipe); - usb1_host_clr_aclrm(pipe); -} - -/******************************************************************************* -* Function Name: usb1_host_set_aclrm -* Description : The auto buffer clear mode of specified pipe is enabled -* Arguments : uint16_t pipe : Pipe -* Return Value : none -*******************************************************************************/ -void usb1_host_set_aclrm (uint16_t pipe) -{ - switch (pipe) - { - case USB_HOST_PIPE0: - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - 1, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - 1, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - 1, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - 1, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - 1, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - 1, - USB_PIPEnCTR_6_8_ACLRM_SHIFT, - USB_PIPEnCTR_6_8_ACLRM); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - 1, - USB_PIPEnCTR_6_8_ACLRM_SHIFT, - USB_PIPEnCTR_6_8_ACLRM); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - 1, - USB_PIPEnCTR_6_8_ACLRM_SHIFT, - USB_PIPEnCTR_6_8_ACLRM); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - 1, - USB_PIPEnCTR_9_ACLRM_SHIFT, - USB_PIPEnCTR_9_ACLRM); - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name: usb1_host_clr_aclrm -* Description : The auto buffer clear mode of specified pipe is enabled -* Arguments : uint16_t pipe : Pipe -* Return Value : none -*******************************************************************************/ -void usb1_host_clr_aclrm (uint16_t pipe) -{ - switch (pipe) - { - case USB_HOST_PIPE0: - break; - - case USB_HOST_PIPE1: - RZA_IO_RegWrite_16(&USB201.PIPE1CTR, - 0, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE2: - RZA_IO_RegWrite_16(&USB201.PIPE2CTR, - 0, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE3: - RZA_IO_RegWrite_16(&USB201.PIPE3CTR, - 0, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE4: - RZA_IO_RegWrite_16(&USB201.PIPE4CTR, - 0, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE5: - RZA_IO_RegWrite_16(&USB201.PIPE5CTR, - 0, - USB_PIPEnCTR_1_5_ACLRM_SHIFT, - USB_PIPEnCTR_1_5_ACLRM); - break; - - case USB_HOST_PIPE6: - RZA_IO_RegWrite_16(&USB201.PIPE6CTR, - 0, - USB_PIPEnCTR_6_8_ACLRM_SHIFT, - USB_PIPEnCTR_6_8_ACLRM); - break; - - case USB_HOST_PIPE7: - RZA_IO_RegWrite_16(&USB201.PIPE7CTR, - 0, - USB_PIPEnCTR_6_8_ACLRM_SHIFT, - USB_PIPEnCTR_6_8_ACLRM); - break; - - case USB_HOST_PIPE8: - RZA_IO_RegWrite_16(&USB201.PIPE8CTR, - 0, - USB_PIPEnCTR_6_8_ACLRM_SHIFT, - USB_PIPEnCTR_6_8_ACLRM); - break; - - case USB_HOST_PIPE9: - RZA_IO_RegWrite_16(&USB201.PIPE9CTR, - 0, - USB_PIPEnCTR_9_ACLRM_SHIFT, - USB_PIPEnCTR_9_ACLRM); - break; - - default: - break; - } -} - -/******************************************************************************* -* Function Name: usb1_host_get_inbuf -* Description : Returns INBUFM of the pipe specified by the argument. -* Arguments : uint16_t pipe ; Pipe Number -* Return Value : inbuf -*******************************************************************************/ -uint16_t usb1_host_get_inbuf (uint16_t pipe) -{ - uint16_t inbuf; - - switch (pipe) - { - case USB_HOST_PIPE0: - inbuf = 0; - break; - - case USB_HOST_PIPE1: - inbuf = RZA_IO_RegRead_16(&USB201.PIPE1CTR, - USB_PIPEnCTR_1_5_INBUFM_SHIFT, - USB_PIPEnCTR_1_5_INBUFM); - break; - - case USB_HOST_PIPE2: - inbuf = RZA_IO_RegRead_16(&USB201.PIPE2CTR, - USB_PIPEnCTR_1_5_INBUFM_SHIFT, - USB_PIPEnCTR_1_5_INBUFM); - break; - - case USB_HOST_PIPE3: - inbuf = RZA_IO_RegRead_16(&USB201.PIPE3CTR, - USB_PIPEnCTR_1_5_INBUFM_SHIFT, - USB_PIPEnCTR_1_5_INBUFM); - break; - - case USB_HOST_PIPE4: - inbuf = RZA_IO_RegRead_16(&USB201.PIPE4CTR, - USB_PIPEnCTR_1_5_INBUFM_SHIFT, - USB_PIPEnCTR_1_5_INBUFM); - break; - - case USB_HOST_PIPE5: - inbuf = RZA_IO_RegRead_16(&USB201.PIPE5CTR, - USB_PIPEnCTR_1_5_INBUFM_SHIFT, - USB_PIPEnCTR_1_5_INBUFM); - break; - - case USB_HOST_PIPE6: - inbuf = 0; - break; - - case USB_HOST_PIPE7: - inbuf = 0; - break; - - case USB_HOST_PIPE8: - inbuf = 0; - break; - - case USB_HOST_PIPE9: - inbuf = RZA_IO_RegRead_16(&USB201.PIPE9CTR, - USB_PIPEnCTR_9_INBUFM_SHIFT, - USB_PIPEnCTR_9_INBUFM); - break; - - default: - inbuf = 0; - break; - } - - return inbuf; -} - -/******************************************************************************* -* Function Name: usb1_host_setting_interrupt -* Description : Sets the USB module interrupt level. -* Arguments : uint8_t level ; interrupt level -* Return Value : none -*******************************************************************************/ -void usb1_host_setting_interrupt (uint8_t level) -{ -#if(1) /* ohci_wrapp */ - IRQn_Type d0fifo_dmaintid; - IRQn_Type d1fifo_dmaintid; - - InterruptHandlerRegister(USBI1_IRQn, usb1_host_interrupt); - GIC_SetPriority(USBI1_IRQn, level); - GIC_EnableIRQ(USBI1_IRQn); - - d0fifo_dmaintid = (IRQn_Type)Userdef_USB_usb1_host_d0fifo_dmaintid(); - - if (d0fifo_dmaintid != 0xFFFF) - { - InterruptHandlerRegister(d0fifo_dmaintid, usb1_host_dma_interrupt_d0fifo); - GIC_SetPriority(d0fifo_dmaintid, level); - GIC_EnableIRQ(d0fifo_dmaintid); - } - - d1fifo_dmaintid = (IRQn_Type)Userdef_USB_usb1_host_d1fifo_dmaintid(); - - if (d1fifo_dmaintid != 0xFFFF) - { - InterruptHandlerRegister(d1fifo_dmaintid, usb1_host_dma_interrupt_d1fifo); - GIC_SetPriority(d1fifo_dmaintid, level); - GIC_EnableIRQ(d1fifo_dmaintid); - } -#else - uint16_t d0fifo_dmaintid; - uint16_t d1fifo_dmaintid; - - R_INTC_RegistIntFunc(INTC_ID_USBI1, usb1_host_interrupt); - R_INTC_SetPriority(INTC_ID_USBI1, level); - R_INTC_Enable(INTC_ID_USBI1); - - d0fifo_dmaintid = Userdef_USB_usb1_host_d0fifo_dmaintid(); - - if (d0fifo_dmaintid != 0xFFFF) - { - R_INTC_RegistIntFunc(d0fifo_dmaintid, usb1_host_dma_interrupt_d0fifo); - R_INTC_SetPriority(d0fifo_dmaintid, level); - R_INTC_Enable(d0fifo_dmaintid); - } - - d1fifo_dmaintid = Userdef_USB_usb1_host_d1fifo_dmaintid(); - - if (d1fifo_dmaintid != 0xFFFF) - { - R_INTC_RegistIntFunc(d1fifo_dmaintid, usb1_host_dma_interrupt_d1fifo); - R_INTC_SetPriority(d1fifo_dmaintid, level); - R_INTC_Enable(d1fifo_dmaintid); - } -#endif -} - -/******************************************************************************* -* Function Name: usb1_host_reset_module -* Description : Initializes the USB module. -* : Enables providing clock to the USB module. -* : Sets USB bus wait register. -* Arguments : uint16_t clockmode ; 48MHz ; USBHCLOCK_X1_48MHZ -* : ; 12MHz ; USBHCLOCK_EXTAL_12MHZ -* Return Value : none -*******************************************************************************/ -void usb1_host_reset_module (uint16_t clockmode) -{ - if (RZA_IO_RegRead_16(&USB200.SYSCFG0, - USB_SYSCFG_UPLLE_SHIFT, - USB_SYSCFG_UPLLE) == 1) - { - if ((USB200.SYSCFG0 & USB_HOST_BITUCKSEL) != clockmode) - { - RZA_IO_RegWrite_16(&USB201.SUSPMODE, - 0, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - RZA_IO_RegWrite_16(&USB200.SUSPMODE, - 0, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - USB201.SYSCFG0 = 0; - USB200.SYSCFG0 = 0; - USB200.SYSCFG0 = (USB_HOST_BITUPLLE | clockmode); - Userdef_USB_usb1_host_delay_xms(1); - RZA_IO_RegWrite_16(&USB200.SUSPMODE, - 1, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - RZA_IO_RegWrite_16(&USB201.SUSPMODE, - 1, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - } - else - { - RZA_IO_RegWrite_16(&USB201.SUSPMODE, - 0, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - Userdef_USB_usb1_host_delay_xms(1); - RZA_IO_RegWrite_16(&USB201.SUSPMODE, - 1, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - } - } - else - { - RZA_IO_RegWrite_16(&USB201.SUSPMODE, - 0, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - RZA_IO_RegWrite_16(&USB200.SUSPMODE, - 0, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - USB201.SYSCFG0 = 0; - USB200.SYSCFG0 = 0; - USB200.SYSCFG0 = (USB_HOST_BITUPLLE | clockmode); - Userdef_USB_usb1_host_delay_xms(1); - RZA_IO_RegWrite_16(&USB200.SUSPMODE, - 1, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - RZA_IO_RegWrite_16(&USB201.SUSPMODE, - 1, - USB_SUSPMODE_SUSPM_SHIFT, - USB_SUSPMODE_SUSPM); - } - - USB201.BUSWAIT = (uint16_t)(USB_HOST_BUSWAIT_05 & USB_HOST_BITBWAIT); -} - -/******************************************************************************* -* Function Name: usb1_host_get_buf_size -* Description : Obtains pipe buffer size specified by the argument and -* : maximum packet size of the USB device in use. -* : When USB_HOST_PIPE0 is specified by the argument, obtains the maximum -* : packet size of the USB device using the corresponding pipe. -* : For the case that USB_HOST_PIPE0 is not assigned by the argument, when the -* : corresponding pipe is in continuous transfer mode, -* : obtains the buffer size allocated in the corresponcing pipe, -* : when incontinuous transfer, obtains maximum packet size. -* Arguments : uint16_t ; pipe Number -* Return Value : Maximum packet size or buffer size -*******************************************************************************/ -uint16_t usb1_host_get_buf_size (uint16_t pipe) -{ - uint16_t size; - uint16_t bufsize; - - if (pipe == USB_HOST_PIPE0) - { - size = RZA_IO_RegRead_16(&USB201.DCPMAXP, - USB_DCPMAXP_MXPS_SHIFT, - USB_DCPMAXP_MXPS); - } - else - { - if (RZA_IO_RegRead_16(&g_usb1_host_pipecfg[pipe], USB_PIPECFG_CNTMD_SHIFT, USB_PIPECFG_CNTMD) == 1) - { - bufsize = RZA_IO_RegRead_16(&g_usb1_host_pipebuf[pipe], USB_PIPEBUF_BUFSIZE_SHIFT, USB_PIPEBUF_BUFSIZE); - size = (uint16_t)((bufsize + 1) * USB_HOST_PIPExBUF); - } - else - { - size = RZA_IO_RegRead_16(&g_usb1_host_pipemaxp[pipe], USB_PIPEMAXP_MXPS_SHIFT, USB_PIPEMAXP_MXPS); - } - } - return size; -} - -/******************************************************************************* -* Function Name: usb1_host_get_mxps -* Description : Obtains maximum packet size of the USB device using the pipe -* : specified by the argument. -* Arguments : uint16_t ; Pipe Number -* Return Value : Max Packet Size -*******************************************************************************/ -uint16_t usb1_host_get_mxps (uint16_t pipe) -{ - uint16_t size; - - if (pipe == USB_HOST_PIPE0) - { - size = RZA_IO_RegRead_16(&USB201.DCPMAXP, - USB_DCPMAXP_MXPS_SHIFT, - USB_DCPMAXP_MXPS); - } - else - { - size = RZA_IO_RegRead_16(&g_usb1_host_pipemaxp[pipe], USB_PIPEMAXP_MXPS_SHIFT, USB_PIPEMAXP_MXPS); - } - - return size; -} - -/* End of File */