123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441 |
- /*******************************************************************************
- * 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 : usb0_function_api.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 "usb0_function.h"
- #include "dev_drv.h"
-
-
- /*******************************************************************************
- 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: usb0_api_function_init
- * Description : Initializes the USB module in the USB function mode.
- * Arguments : uint8_t int_level ; interruput level
- * : uint16_t mode : Speed modes
- * : : USB_FUCNTION_HIGH_SPEED: High-speed device
- * : : USB_FUCNTION_FULL_SPEED: Full-speed device
- * : uint16_t clockmode ; 48MHz ; USBFCLOCK_X1_48MHZ
- * : ; 12MHz ; USBFCLOCK_EXTAL_12MHZ
- * Return Value : none
- *******************************************************************************/
- #if 0
- void usb0_api_function_init (uint8_t int_level, uint16_t mode, uint16_t clockmode)
- {
- volatile uint8_t dummy_buf;
-
- CPG.STBCR7 &= 0xfd; /* The clock of USB0 modules is permitted */
- dummy_buf = CPG.STBCR7; /* (Dummy read) */
-
- usb0_function_setting_interrupt(int_level);
-
- usb0_function_reset_module(clockmode); /* reset USB module with setting tranciever */
- /* and HSE=1 */
-
- usb0_function_init_status(); /* clear variables */
-
- usb0_function_InitModule(mode); /* select USB Function and Interrupt Enable */
- /* Detect USB Device to attach or detach */
- }
- #endif
-
- /*******************************************************************************
- * Function Name: usb0_api_function_IsConfigured
- * Description : Checks if the USB device is configured to return the result as
- * : the return value.
- * Arguments : none
- * Return Value : DEVDRV_USBF_YES : Configured & Configured Suspend
- * : DEVDRV_USBF_NO : not Configured
- *******************************************************************************/
- uint16_t usb0_api_function_IsConfigured (void)
- {
- uint16_t dvst;
-
- dvst = usb0_function_GetDeviceState();
-
- if ((dvst == USB_FUNCTION_DVST_CONFIGURED) ||
- (dvst == USB_FUNCTION_DVST_CONFIGURED_SUSPEND))
- {
- return DEVDRV_USBF_YES;
- }
-
- return DEVDRV_USBF_NO;
- }
-
- /*******************************************************************************
- * Function Name: usb0_function_GetDeviceState
- * Description : Returns the state of USB device.
- * Arguments : none
- * Return Value : Device States
- *******************************************************************************/
- uint16_t usb0_function_GetDeviceState (void)
- {
- uint16_t dvsq;
- uint16_t dvst;
-
- dvsq = USB200.INTSTS0;
- switch(dvsq & USB_FUNCTION_BITDVSQ)
- {
- case USB_FUNCTION_DS_POWR: /* Power state *//* power-on */
- dvst = USB_FUNCTION_DVST_POWERED;
- break;
-
- case USB_FUNCTION_DS_DFLT: /* Default state *//* bus-reset */
- dvst = USB_FUNCTION_DVST_DEFAULT;
- break;
-
- case USB_FUNCTION_DS_ADDS: /* Address state */
- dvst = USB_FUNCTION_DVST_ADDRESS;
- break;
-
- case USB_FUNCTION_DS_CNFG: /* Configured state */
- dvst = USB_FUNCTION_DVST_CONFIGURED;
- break;
-
- case USB_FUNCTION_DS_SPD_CNFG: /* Configured Suspend state */
- dvst = USB_FUNCTION_DVST_CONFIGURED_SUSPEND;
- break;
-
- case USB_FUNCTION_DS_SPD_POWR: /* Power Suspend state */
- case USB_FUNCTION_DS_SPD_DFLT: /* Default Suspend state */
- case USB_FUNCTION_DS_SPD_ADDR: /* Address Suspend state */
- dvst = USB_FUNCTION_DVST_SUSPEND;
- break;
-
- default: /* error */
- dvst = USB_FUNCTION_DVST_SUSPEND;
- break;
- }
-
- return dvst;
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_start_receive_transfer
- * Description : Starts USB data reception using the pipe specified in the argument.
- * : The FIFO for using is set in the pipe definition table.
- * Arguments : uint16_t pipe ; Pipe Number
- * : uint32_t size ; Data Size
- * : uint8_t *data ; Data data Address
- * Return Value : none
- *******************************************************************************/
- void usb0_api_function_start_receive_transfer (uint16_t pipe, uint32_t size, uint8_t * data)
- {
- usb0_function_start_receive_transfer(pipe, size, data);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_start_send_transfer
- * Description : Starts the USB data communication using pipe specified by the argument.
- * Arguments : uint16_t pipe ; Pipe Number
- * : uint32_t size ; Data Size
- * : uint8_t *data ; Data data Address
- * Return Value : DEVDRV_USBF_WRITEEND ; Write end
- * : DEVDRV_USBF_WRITESHRT ; short data
- * : DEVDRV_USBF_WRITING ; Continue of data write
- * : DEVDRV_USBF_WRITEDMA ; Write DMA
- * : DEVDRV_USBF_FIFOERROR ; FIFO status
- *******************************************************************************/
- uint16_t usb0_api_function_start_send_transfer (uint16_t pipe, uint32_t size, uint8_t * data)
- {
- uint16_t status;
-
- status = usb0_function_start_send_transfer(pipe, size, data);
-
- return status;
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_check_pipe_status
- * Description : Starts USB data reception using the pipe specified in the argument.
- * : The FIFO for using is set in the pipe definition table.
- * Arguments : uint16_t pipe ; Pipe Number
- * : uint32_t *size ; Data Size
- * Return Value : Pipe Status
- *******************************************************************************/
- uint16_t usb0_api_function_check_pipe_status (uint16_t pipe, uint32_t * size)
- {
- if (g_usb0_function_pipe_status[pipe] == DEVDRV_USBF_PIPE_DONE)
- {
- *size = g_usb0_function_PipeDataSize[pipe];
- g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_IDLE;
-
- return DEVDRV_USBF_PIPE_DONE;
- }
- else if (g_usb0_function_pipe_status[pipe] == DEVDRV_USBF_PIPE_NORES)
- {
- *size = 0;
- g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_IDLE;
-
- return DEVDRV_USBF_PIPE_NORES;
- }
- else if (g_usb0_function_pipe_status[pipe] == DEVDRV_USBF_PIPE_STALL)
- {
- *size = 0;
- g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_IDLE;
-
- return DEVDRV_USBF_PIPE_STALL;
- }
- else if (g_usb0_function_pipe_status[pipe] == DEVDRV_USBF_FIFOERROR)
- {
- *size = 0;
- g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_IDLE;
-
- return DEVDRV_USBF_FIFOERROR;
- }
- else
- {
- /* Do Nothing */
- }
-
- return g_usb0_function_pipe_status[pipe];
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_clear_pipe_status
- * Description : Starts USB data reception using the pipe specified in the argument.
- * : The FIFO for using is set in the pipe definition table.
- * Arguments : uint16_t pipe ; Pipe Number
- * Return Value : Pipe Status
- *******************************************************************************/
- void usb0_api_function_clear_pipe_status (uint16_t pipe)
- {
- g_usb0_function_pipe_status[pipe] = DEVDRV_USBF_PIPE_IDLE;
- g_usb0_function_PipeDataSize[pipe] = 0;
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_set_pid_buf
- * Description : Enables communicaqtion in the pipe specified by the argument
- * : (BUF).
- * Arguments : uint16_t pipe ; pipe Number
- * Return Value : none
- *******************************************************************************/
- void usb0_api_function_set_pid_buf (uint16_t pipe)
- {
- usb0_function_set_pid_buf(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_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 usb0_api_function_set_pid_nak (uint16_t pipe)
- {
- usb0_function_set_pid_nak(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_set_pid_stall
- * Description : Disables communication (STALL) in the pipe specified by the
- * : argument.
- * Arguments : uint16_t pipe ; pipe Number
- * Return Value : none
- *******************************************************************************/
- void usb0_api_function_set_pid_stall (uint16_t pipe)
- {
- usb0_function_set_pid_stall(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_clear_pid_stall
- * Description : Disables communication (NAK) in the pipe specified by the argument.
- * Arguments : uint16_t pipe ; pipe Number
- * Return Value : none
- *******************************************************************************/
- void usb0_api_function_clear_pid_stall (uint16_t pipe)
- {
- usb0_function_clear_pid_stall(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_get_pid
- * Description : Returns the pipe state specified by the argument.
- * Arguments : uint16_t pipe ; Pipe Number
- * Return Value : PID
- *******************************************************************************/
- uint16_t usb0_api_function_get_pid (uint16_t pipe)
- {
- uint16_t pid;
-
- pid = usb0_function_get_pid(pipe);
-
- return pid;
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_check_stall
- * Description :
- * Arguments : uint16_t pipe ; Pipe Number
- * Return Value : PID
- *******************************************************************************/
- int32_t usb0_api_function_check_stall (uint16_t pipe)
- {
- uint16_t pid;
-
- pid = usb0_function_get_pid(pipe);
-
- if ((pid & DEVDRV_USBF_PID_STALL) == DEVDRV_USBF_PID_STALL)
- {
- return DEVDRV_USBF_STALL;
- }
-
- return DEVDRV_SUCCESS;
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_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 usb0_api_function_set_sqclr (uint16_t pipe)
- {
- usb0_function_set_sqclr(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_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 usb0_api_function_set_sqset (uint16_t pipe)
- {
- usb0_function_set_sqset(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_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 usb0_api_function_set_csclr (uint16_t pipe)
- {
- usb0_function_set_csclr(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_set_curpipe
- * Description : Allocates FIF0 specifed by the argument in the pipe assigned
- * : by the argument.
- * Arguments : uint16_t pipe ; Pipe Number
- * : uint16_t fifosel ; Select FIFO
- * : uint16_t isel ; FIFO Access Direction
- * : uint16_t mbw ; FIFO Port Access Bit Width
- * Return Value : none
- *******************************************************************************/
- void usb0_api_function_set_curpipe (uint16_t pipe, uint16_t fifosel, uint16_t isel, uint16_t mbw)
- {
- usb0_function_set_curpipe(pipe, fifosel, isel, mbw);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_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 usb0_api_function_clear_brdy_sts (uint16_t pipe)
- {
- usb0_function_clear_brdy_sts(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_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 usb0_api_function_clear_bemp_sts (uint16_t pipe)
- {
- usb0_function_clear_bemp_sts(pipe);
- }
-
- /*******************************************************************************
- * Function Name: usb0_api_function_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 usb0_api_function_clear_nrdy_sts (uint16_t pipe)
- {
- usb0_function_clear_nrdy_sts(pipe);
- }
-
- /* End of File */
|