#ifndef __mvUsbDefs_h__ #define __mvUsbDefs_h__ 1 /******************************************************************************* ** File : $HeadURL$ ** Author : $Author$ ** Project : HSCTRL ** Instances : ** Creation date : ******************************************************************************** ******************************************************************************** ** ChipIdea Microelectronica - IPCS ** TECMAIA, Rua Eng. Frederico Ulrich, n 2650 ** 4470-920 MOREIRA MAIA ** Portugal ** Tel: +351 229471010 ** Fax: +351 229471011 ** e_mail: chipidea.com ******************************************************************************** ** ISO 9001:2000 - Certified Company ** (C) 2005 Copyright Chipidea(R) ** Chipidea(R) - Microelectronica, S.A. reserves the right to make changes to ** the information contained herein without notice. No liability shall be ** incurred as a result of its use or application. ******************************************************************************** ** Modification history: ** $Date$ ** $Revision$ ******************************************************************************* *** Comments: *** This file contains USB Device API defines for state and function *** returns. ************************************************************************** **END*********************************************************/ #include "udc2_hw.h" #include "utils.h" // for disableInterrupts definition #include "csw_mem.h" // for malloc, free definition #include "string.h" // for memset, memcpy definition #include "mmap.h" // for NON_CACHED_TO_CACHED, CACHED_TO_NON_CACHED macro definition /*******************************************/ /* USB Core Types */ /*******************************************/ #define _PTR_ * #define _CODE_PTR_ * typedef char _PTR_ char_ptr; /* signed character */ typedef signed char int_8, _PTR_ int_8_ptr; /* 8-bit signed integer */ typedef unsigned char uint_8, _PTR_ uint_8_ptr; /* 8-bit signed integer */ typedef short int_16, _PTR_ int_16_ptr; /* 16-bit signed integer */ typedef unsigned short uint_16, _PTR_ uint_16_ptr; /* 16-bit unsigned integer*/ typedef int int_32, _PTR_ int_32_ptr; /* 32-bit signed integer */ typedef unsigned int uint_32, _PTR_ uint_32_ptr; /* 32-bit unsigned integer*/ typedef unsigned long boolean; /* Machine representation of a boolean */ typedef void _PTR_ pointer; /* Machine representation of a pointer */ UINT32* USB_uncached_memalloc(UINT32 size, UINT32 phyAddr); //hongji 201011 void USBMemPoolAlignFree(void* alignAddress); /*******************************************/ /* Macro */ /*******************************************/ #define USB_virt_to_phys(PvIRT) (uint_32)(PvIRT) #define USB_get_cap_reg_addr(dEV) ((void*)USB2_CAP_LENGTH_REG) //#define USB_uncached_memfree(PvIRT, sIZE, pHYSaDDR) free(NON_CACHED_TO_CACHED(PvIRT)) #define USB_uncached_memfree(PvIRT, sIZE, pHYSaDDR) USBMemPoolAlignFree((void *)PvIRT) #define USB_memalloc(sIZE) USB_uncached_memalloc(sIZE,0) #define USB_memfree(pTR) USB_uncached_memfree(pTR, NULL, NULL) #define USB_memzero(pTR, n) memset(pTR, 0, n) #define USB_memcopy(sRC, dST, n) memcpy(dST, sRC, n) #define USB_dcache_inv(pTR, sIZE) CacheInvalidateMemory(pTR, sIZE) #define USB_dcache_flush(pTR, sIZE) CacheCleanMemory( pTR, sIZE) #define USB_lock() disableInterrupts(); #define USB_unlock(key) restoreInterrupts(key); /* Endianess macros. */ #define USB_16BIT_LE(X) (X) #define USB_32BIT_LE(X) (X) #define USB_MEM_ALIGN(n, align) ((n) + (-(n) & (align-1))) /* Macro for aligning the EP queue head to 32 byte boundary */ #define USB_MEM32_ALIGN(n) USB_MEM_ALIGN(n, 32) /* Macro for aligning the EP queue head to 1024 byte boundary */ #define USB_MEM1024_ALIGN(n) USB_MEM_ALIGN(n, 1023) /* Macro for aligning the EP queue head to 1024 byte boundary */ #define USB_MEM2048_ALIGN(n) USB_MEM_ALIGN(n, 2047) /*******************************************/ /* Host specific */ /*******************************************/ #define USB_DEBOUNCE_DELAY (101) #define USB_RESET_RECOVERY_DELAY (11) #define USB_RESET_DELAY (60) /*******************************************/ /* Error codes */ /*******************************************/ #define USB_OK (0x00) #define USBERR_ALLOC (0x81) #define USBERR_BAD_STATUS (0x82) #define USBERR_CLOSED_SERVICE (0x83) #define USBERR_OPEN_SERVICE (0x84) #define USBERR_TRANSFER_IN_PROGRESS (0x85) #define USBERR_ENDPOINT_STALLED (0x86) #define USBERR_ALLOC_STATE (0x87) #define USBERR_DRIVER_INSTALL_FAILED (0x88) #define USBERR_DRIVER_NOT_INSTALLED (0x89) #define USBERR_INSTALL_ISR (0x8A) #define USBERR_INVALID_DEVICE_NUM (0x8B) #define USBERR_ALLOC_SERVICE (0x8C) #define USBERR_INIT_FAILED (0x8D) #define USBERR_SHUTDOWN (0x8E) #define USBERR_INVALID_PIPE_HANDLE (0x8F) #define USBERR_OPEN_PIPE_FAILED (0x90) #define USBERR_INIT_DATA (0x91) #define USBERR_SRP_REQ_INVALID_STATE (0x92) #define USBERR_TX_FAILED (0x93) #define USBERR_RX_FAILED (0x94) #define USBERR_EP_INIT_FAILED (0x95) #define USBERR_EP_DEINIT_FAILED (0x96) #define USBERR_TR_FAILED (0x97) #define USBERR_BANDWIDTH_ALLOC_FAILED (0x98) #define USBERR_INVALID_NUM_OF_ENDPOINTS (0x99) #define USBERR_DEVICE_NOT_FOUND (0xC0) #define USBERR_DEVICE_BUSY (0xC1) #define USBERR_NO_DEVICE_CLASS (0xC3) #define USBERR_UNKNOWN_ERROR (0xC4) #define USBERR_INVALID_BMREQ_TYPE (0xC5) #define USBERR_GET_MEMORY_FAILED (0xC6) #define USBERR_INVALID_MEM_TYPE (0xC7) #define USBERR_NO_DESCRIPTOR (0xC8) #define USBERR_NULL_CALLBACK (0xC9) #define USBERR_NO_INTERFACE (0xCA) #define USBERR_INVALID_CFIG_NUM (0xCB) #define USBERR_INVALID_ANCHOR (0xCC) #define USBERR_INVALID_REQ_TYPE (0xCD) /*******************************************/ /* Error Codes for lower-layer */ /*******************************************/ #define USBERR_ALLOC_EP_QUEUE_HEAD (0xA8) #define USBERR_ALLOC_TR (0xA9) #define USBERR_ALLOC_DTD_BASE (0xAA) #define USBERR_CLASS_DRIVER_INSTALL (0xAB) /*******************************************/ /* Pipe Types */ /*******************************************/ #define USB_ISOCHRONOUS_PIPE (0x01) #define USB_INTERRUPT_PIPE (0x02) #define USB_CONTROL_PIPE (0x03) #define USB_BULK_PIPE (0x04) #define MV_USB_STATE_UNKNOWN (0xff) #define MV_USB_STATE_POWERED (0x03) #define MV_USB_STATE_DEFAULT (0x02) #define MV_USB_STATE_ADDRESS (0x01) #define MV_USB_STATE_CONFIG (0x00) #define MV_USB_STATE_SUSPEND (0x80) #define MV_USB_SELF_POWERED (0x01) #define MV_USB_REMOTE_WAKEUP (0x02) /*******************************************/ /* Bus Control values */ /*******************************************/ #define MV_USB_NO_OPERATION (0x00) #define MV_USB_ASSERT_BUS_RESET (0x01) #define MV_USB_DEASSERT_BUS_RESET (0x02) #define MV_USB_ASSERT_RESUME (0x03) #define MV_USB_DEASSERT_RESUME (0x04) #define MV_USB_SUSPEND_SOF (0x05) #define MV_USB_RESUME_SOF (0x06) /*******************************************/ /* possible values of XD->bStatus */ /*******************************************/ #define MV_USB_STATUS_IDLE (0) #define MV_USB_STATUS_TRANSFER_ACCEPTED (1) #define MV_USB_STATUS_TRANSFER_PENDING (2) #define MV_USB_STATUS_TRANSFER_IN_PROGRESS (3) #define MV_USB_STATUS_ERROR (4) #define MV_USB_STATUS_DISABLED (5) #define MV_USB_STATUS_STALLED (6) #define MV_USB_STATUS_TRANSFER_QUEUED (7) #define MV_USB_RECV (0) #define MV_USB_SEND (1) #define MV_USB_DEVICE_DONT_ZERO_TERMINATE (0x1) #define MV_USB_SETUP_DATA_XFER_DIRECTION (0x80) #define MV_USB_SPEED_FULL (0) #define MV_USB_SPEED_LOW (1) #define MV_USB_SPEED_HIGH (2) #define MV_USB_MAX_PKTS_PER_UFRAME (0x6) //extern void* memcpy(void*,const void*,unsigned long ); //extern void* malloc (size_t size); /* USB 1.1 Setup Packet */ typedef struct setup_struct { uint_8 REQUESTTYPE; uint_8 REQUEST; uint_16 VALUE; uint_16 INDEX; uint_16 LENGTH; } SETUP_STRUCT, _PTR_ SETUP_STRUCT_PTR; typedef pointer _usb_device_handle; #endif /* __mvUsbDefs_h__ */ /* EOF */