| /******************************************************************************* |
| |
| This software file (the "File") is distributed by Marvell International Ltd. |
| or its affiliate(s) under the terms of the GNU General Public License Version 2, |
| June 1991 (the "License"). You may use, redistribute and/or modify this File |
| in accordance with the terms and conditions of the License, a copy of which |
| is available along with the File in the license.txt file or by writing to the |
| Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
| or on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| |
| THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| DISCLAIMED. The GPL License provides additional details about this warranty |
| disclaimer. |
| |
| (C) Copyright 2004 - 2007 Marvell Semiconductor Israel Ltd. All Rights Reserved. |
| (C) Copyright 1999 - 2004 Chipidea Microelectronica, S.A. All Rights Reserved. |
| |
| *******************************************************************************/ |
| |
| #ifndef __mvUsbDevApi_h__ |
| #define __mvUsbDevApi_h__ |
| |
| #include "mvUsbTypes.h" |
| #include "mvUsbDebug.h" |
| #include "mvUsbDefs.h" |
| #include "ctrlEnv/mvCtrlEnvSpec.h" |
| |
| |
| #define ARC_USB_MAX_ENDPOINTS (16) |
| |
| #define MAX_EP_TR_DESCRS (48) |
| #define MAX_XDS_FOR_TR_CALLS (32) |
| #define MAX_USB_DEVICES MV_USB_MAX_PORTS |
| |
| /*Assumption here is that all control endpoints are sequential 0,1,.. |
| if they are not you need to modify the tr_complete routine to handle that */ |
| #define USB_MAX_CONTROL_ENDPOINTS (1) |
| |
| #define USB_MAX_CTRL_PAYLOAD (64) |
| |
| |
| /* Endpoint types */ |
| #define ARC_USB_CONTROL_ENDPOINT (0) |
| #define ARC_USB_ISOCHRONOUS_ENDPOINT (1) |
| #define ARC_USB_BULK_ENDPOINT (2) |
| #define ARC_USB_INTERRUPT_ENDPOINT (3) |
| |
| /* Informational Request/Set Types */ |
| #define ARC_USB_STATUS_DEVICE_STATE (0x01) |
| #define ARC_USB_STATUS_INTERFACE (0x02) |
| #define ARC_USB_STATUS_ADDRESS (0x03) |
| #define ARC_USB_STATUS_CURRENT_CONFIG (0x04) |
| #define ARC_USB_STATUS_SOF_COUNT (0x05) |
| #define ARC_USB_STATUS_DEVICE (0x06) |
| #define ARC_USB_STATUS_TEST_MODE (0x07) |
| #define ARC_USB_FORCE_FULL_SPEED (0x08) |
| #define ARC_USB_PHY_LOW_POWER_SUSPEND (0x09) |
| |
| #define ARC_USB_STATUS_ENDPOINT_NUMBER_MASK (0x000F) |
| #define ARC_USB_STATUS_ENDPOINT_DIR_MASK (0x0080) |
| |
| #define ARC_USB_TEST_MODE_TEST_PACKET (0x0400) |
| |
| /* Available service types */ |
| /* Services 0 through 15 are reserved for endpoints */ |
| #define ARC_USB_SERVICE_EP0 (0x00) |
| #define ARC_USB_SERVICE_EP1 (0x01) |
| #define ARC_USB_SERVICE_EP2 (0x02) |
| #define ARC_USB_SERVICE_EP3 (0x03) |
| #define ARC_USB_SERVICE_BUS_RESET (0x10) |
| #define ARC_USB_SERVICE_SUSPEND (0x11) |
| #define ARC_USB_SERVICE_SOF (0x12) |
| #define ARC_USB_SERVICE_RESUME (0x13) |
| #define ARC_USB_SERVICE_SLEEP (0x14) |
| #define ARC_USB_SERVICE_SPEED_DETECTION (0x15) |
| #define ARC_USB_SERVICE_ERROR (0x16) |
| #define ARC_USB_SERVICE_STALL (0x17) |
| |
| typedef pointer _usb_device_handle; |
| typedef void (*USB_SERVICE_FUNC)(void* handle, uint_8, boolean, uint_8, |
| uint_8_ptr, uint_32, uint_8); |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| void _usb_dci_vusb20_isr(void* handle); |
| |
| void _usb_device_set_bsp_funcs(USB_IMPORT_FUNCS* pBspFuncs); |
| |
| uint_8 _usb_device_init(uint_8 devNo, void** pHandle); |
| |
| uint_8 _usb_device_get_max_endpoint(void* handle); |
| |
| uint_8 _usb_device_get_dev_num(void* handle); |
| |
| void _usb_device_shutdown(void* handle); |
| |
| void _usb_device_stop(void* handle); |
| void _usb_device_start(void* handle); |
| |
| uint_8 _usb_device_init_endpoint(void* handle, uint_8 ep_num, uint_16 max_pkt_size, |
| uint_8 direction, uint_8 type, uint_8 flag); |
| uint_8 _usb_device_deinit_endpoint(void* handle, uint_8 ep_num, uint_8 direction); |
| |
| uint_8 _usb_device_recv_data(void* handle, uint_8 ep_num, uint_8* buf_ptr, uint_32 size); |
| uint_8 _usb_device_send_data(void* handle, uint_8 ep_num, uint_8* buf_ptr, uint_32 size); |
| uint_8 _usb_device_cancel_transfer(void* handle, uint_8 ep_num, uint_8 direction); |
| uint_8 _usb_device_get_transfer_status(void* handle, uint_8 ep_num, uint_8 direction); |
| void _usb_device_stall_endpoint(void* handle, uint_8 ep_num, uint_8 direction); |
| void _usb_device_unstall_endpoint(void* handle, uint_8 ep_num, uint_8 direction); |
| uint_8 _usb_device_is_endpoint_stalled(void* handle, uint_8 ep_num, uint_8 direction); |
| void _usb_device_assert_resume(void* handle); |
| uint_8 _usb_device_get_status(void* handle, uint_8 component, uint_16* status_ptr); |
| uint_8 _usb_device_set_status(void* handle, uint_8 component, uint_16 setting); |
| void _usb_device_read_setup_data(void* handle, uint_8 ep_num, uint_8* buf_ptr); |
| |
| uint_8 _usb_device_register_service(void* handle, uint_8 type, USB_SERVICE_FUNC serviceFunc); |
| |
| uint_8 _usb_device_unregister_service(void* handle, uint_8 type); |
| |
| |
| |
| /* These functions that implement USB 2.0 standard Chapter 9 Setup requests */ |
| void mvUsbCh9GetStatus(void* handle, boolean setup, |
| SETUP_STRUCT* ctrl_req); |
| |
| void mvUsbCh9ClearFeature(void* handle, boolean setup, |
| SETUP_STRUCT* setup_ptr); |
| |
| void mvUsbCh9SetFeature(void* handle, boolean setup, |
| SETUP_STRUCT* setup_ptr); |
| |
| void mvUsbCh9SetAddress(void* handle, boolean setup, |
| SETUP_STRUCT* setup_ptr); |
| |
| /* DEBUG Functions */ |
| void _usb_dci_vusb20_set_test_mode(void* handle, uint_16 testMode); |
| |
| void _usb_debug_set_flags(uint_32 flags); |
| uint_32 _usb_debug_get_flags(void); |
| |
| void _usb_debug_init_trace_log(void); |
| void _usb_debug_print_trace_log(void); |
| |
| void _usb_regs(void* usbHandle); |
| void _usb_status(void* usbHandle); |
| void _usb_stats(void* usbHandle); |
| void _usb_clear_stats(void* usbHandle); |
| void _usb_ep_status(void* usbHandle, int ep_num, int direction); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __mvUsbDevApi_h__ */ |
| /* EOF */ |
| |