LPCOpen Platform  v1.03
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
usbd_hw.h
Go to the documentation of this file.
1 /***********************************************************************
2 * $Id: mw_usbd_hw.h.rca 1.4 Tue Nov 1 11:45:07 2011 nlv09221 Experimental $
3 *
4 * Project: USB device ROM Stack
5 *
6 * Description:
7 * USB Hardware Function prototypes.
8 *
9 ***********************************************************************
10 * Copyright(C) 2011, NXP Semiconductor
11 * All rights reserved.
12 *
13 * Software that is described herein is for illustrative purposes only
14 * which provides customers with programming information regarding the
15 * products. This software is supplied "AS IS" without any warranties.
16 * NXP Semiconductors assumes no responsibility or liability for the
17 * use of the software, conveys no license or title under any patent,
18 * copyright, or mask work right to the product. NXP Semiconductors
19 * reserves the right to make changes in the software without
20 * notification. NXP Semiconductors also make no representation or
21 * warranty that such application will be suitable for the specified
22 * use without further testing or modification.
23 **********************************************************************/
24 #ifndef __USBHW_H__
25 #define __USBHW_H__
26 
27 #include "error.h"
28 #include "usbd.h"
29 #include "usbd_core.h"
30 
66 };
67 
75 typedef struct USBD_HW_API
76 {
89 
105 
119  void (*Connect)(USBD_HANDLE_T hUsb, uint32_t con);
120 
132  void (*ISR)(USBD_HANDLE_T hUsb);
133 
144  void (*Reset)(USBD_HANDLE_T hUsb);
145 
157  void (*ForceFullSpeed )(USBD_HANDLE_T hUsb, uint32_t cfg);
158 
176  void (*WakeUpCfg)(USBD_HANDLE_T hUsb, uint32_t cfg);
177 
193  void (*SetAddress)(USBD_HANDLE_T hUsb, uint32_t adr);
194 
209  void (*Configure)(USBD_HANDLE_T hUsb, uint32_t cfg);
210 
226  void (*ConfigEP)(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);
227 
242  void (*DirCtrlEP)(USBD_HANDLE_T hUsb, uint32_t dir);
243 
254  void (*EnableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
255 
266  void (*DisableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
267 
278  void (*ResetEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
279 
290  void (*SetStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
291 
302  void (*ClrStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
303 
320  ErrorCode_t (*SetTestMode)(USBD_HANDLE_T hUsb, uint8_t mode);
321 
334  uint32_t (*ReadEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);
335 
350  uint32_t (*ReadReqEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);
351 
364  uint32_t (*ReadSetupPkt)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t *pData);
365 
379  uint32_t (*WriteEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);
380 
394  void (*WakeUp)(USBD_HANDLE_T hUsb);
395 
411  ErrorCode_t (*EnableEvent)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type,
412  uint32_t enable);
413 
414 } USBD_HW_API_T;
415 
416 /*-----------------------------------------------------------------------------
417  * Private functions & structures prototypes used by stack internally
418  *-----------------------------------------------------------------------------*/
421 /* Driver functions */
422 uint32_t hwUSB_GetMemSize(USBD_API_INIT_PARAM_T* param);
424 void hwUSB_Connect(USBD_HANDLE_T hUsb, uint32_t con);
425 void hwUSB_ISR(USBD_HANDLE_T hUsb);
426 
427 /* USB Hardware Functions */
428 extern void hwUSB_Reset(USBD_HANDLE_T hUsb);
429 extern void hwUSB_ForceFullSpeed (USBD_HANDLE_T hUsb, uint32_t con);
430 extern void hwUSB_WakeUpCfg(USBD_HANDLE_T hUsb, uint32_t cfg);
431 extern void hwUSB_SetAddress(USBD_HANDLE_T hUsb, uint32_t adr);
432 extern void hwUSB_Configure(USBD_HANDLE_T hUsb, uint32_t cfg);
433 extern void hwUSB_ConfigEP(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);
434 extern void hwUSB_DirCtrlEP(USBD_HANDLE_T hUsb, uint32_t dir);
435 extern void hwUSB_EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
436 extern void hwUSB_DisableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
437 extern void hwUSB_ResetEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
438 extern void hwUSB_SetStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
439 extern void hwUSB_ClrStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
440 extern ErrorCode_t hwUSB_SetTestMode(USBD_HANDLE_T hUsb, uint8_t mode); /* for FS only devices return ERR_USBD_INVALID_REQ */
441 extern uint32_t hwUSB_ReadEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);
442 extern uint32_t hwUSB_ReadReqEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);
443 extern uint32_t hwUSB_ReadSetupPkt(USBD_HANDLE_T hUsb, uint32_t, uint32_t *);
444 extern uint32_t hwUSB_WriteEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);
445 
446 /* generate resume signalling on the bus */
447 extern void hwUSB_WakeUp(USBD_HANDLE_T hUsb);
448 extern ErrorCode_t hwUSB_EnableEvent(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable);
449 /* TODO implement following routines
450 - function to program TD and queue them to ep Qh
451 */
452 
456 #endif /* __USBHW_H__ */