| /* | |
| LPCUSB, an USB device driver for LPC microcontrollers | |
| Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) | |
| Redistribution and use in source and binary forms, with or without | |
| modification, are permitted provided that the following conditions are met: | |
| 1. Redistributions of source code must retain the above copyright | |
| notice, this list of conditions and the following disclaimer. | |
| 2. Redistributions in binary form must reproduce the above copyright | |
| notice, this list of conditions and the following disclaimer in the | |
| documentation and/or other materials provided with the distribution. | |
| 3. The name of the author may not be used to endorse or promote products | |
| derived from this software without specific prior written permission. | |
| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
| IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
| OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |
| IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | |
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
| NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
| THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| */ | |
| /** | |
| Hardware definitions for the LPC176x USB controller | |
| These are private to the usbhw module | |
| */ | |
| // CodeRed - pull in defines from NXP header file | |
| //#include "NXP\LPC17xx\LPC17xx.h" | |
| #include "LPC17xx.h" | |
| // CodeRed - these registers have been renamed on LPC176x | |
| #define USBReEP USBReEp | |
| #define OTG_CLK_CTRL USBClkCtrl | |
| #define OTG_CLK_STAT USBClkSt | |
| /* USBIntSt bits */ | |
| #define USB_INT_REQ_LP (1<<0) | |
| #define USB_INT_REQ_HP (1<<1) | |
| #define USB_INT_REQ_DMA (1<<2) | |
| #define USB_need_clock (1<<8) | |
| #define EN_USB_BITS (1<<31) | |
| /* USBDevInt... bits */ | |
| #define FRAME (1<<0) | |
| #define EP_FAST (1<<1) | |
| #define EP_SLOW (1<<2) | |
| #define DEV_STAT (1<<3) | |
| #define CCEMTY (1<<4) | |
| #define CDFULL (1<<5) | |
| #define RxENDPKT (1<<6) | |
| #define TxENDPKT (1<<7) | |
| #define EP_RLZED (1<<8) | |
| #define ERR_INT (1<<9) | |
| /* USBRxPLen bits */ | |
| #define PKT_LNGTH (1<<0) | |
| #define PKT_LNGTH_MASK 0x3FF | |
| #define DV (1<<10) | |
| #define PKT_RDY (1<<11) | |
| /* USBCtrl bits */ | |
| #define RD_EN (1<<0) | |
| #define WR_EN (1<<1) | |
| #define LOG_ENDPOINT (1<<2) | |
| /* protocol engine command codes */ | |
| /* device commands */ | |
| #define CMD_DEV_SET_ADDRESS 0xD0 | |
| #define CMD_DEV_CONFIG 0xD8 | |
| #define CMD_DEV_SET_MODE 0xF3 | |
| #define CMD_DEV_READ_CUR_FRAME_NR 0xF5 | |
| #define CMD_DEV_READ_TEST_REG 0xFD | |
| #define CMD_DEV_STATUS 0xFE /* read/write */ | |
| #define CMD_DEV_GET_ERROR_CODE 0xFF | |
| #define CMD_DEV_READ_ERROR_STATUS 0xFB | |
| /* endpoint commands */ | |
| #define CMD_EP_SELECT 0x00 | |
| #define CMD_EP_SELECT_CLEAR 0x40 | |
| #define CMD_EP_SET_STATUS 0x40 | |
| #define CMD_EP_CLEAR_BUFFER 0xF2 | |
| #define CMD_EP_VALIDATE_BUFFER 0xFA | |
| /* set address command */ | |
| #define DEV_ADDR (1<<0) | |
| #define DEV_EN (1<<7) | |
| /* configure device command */ | |
| #define CONF_DEVICE (1<<0) | |
| /* set mode command */ | |
| #define AP_CLK (1<<0) | |
| #define INAK_CI (1<<1) | |
| #define INAK_CO (1<<2) | |
| #define INAK_II (1<<3) | |
| #define INAK_IO (1<<4) | |
| #define INAK_BI (1<<5) | |
| #define INAK_BO (1<<6) | |
| /* set get device status command */ | |
| #define CON (1<<0) | |
| #define CON_CH (1<<1) | |
| #define SUS (1<<2) | |
| #define SUS_CH (1<<3) | |
| #define RST (1<<4) | |
| /* get error code command */ | |
| // ... | |
| /* Select Endpoint command read bits */ | |
| #define EPSTAT_FE (1<<0) | |
| #define EPSTAT_ST (1<<1) | |
| #define EPSTAT_STP (1<<2) | |
| #define EPSTAT_PO (1<<3) | |
| #define EPSTAT_EPN (1<<4) | |
| #define EPSTAT_B1FULL (1<<5) | |
| #define EPSTAT_B2FULL (1<<6) | |
| /* CMD_EP_SET_STATUS command */ | |
| #define EP_ST (1<<0) | |
| #define EP_DA (1<<5) | |
| #define EP_RF_MO (1<<6) | |
| #define EP_CND_ST (1<<7) | |
| /* read error status command */ | |
| #define PID_ERR (1<<0) | |
| #define UEPKT (1<<1) | |
| #define DCRC (1<<2) | |
| #define TIMEOUT (1<<3) | |
| #define EOP (1<<4) | |
| #define B_OVRN (1<<5) | |
| #define BTSTF (1<<6) | |
| #define TGL_ERR (1<<7) | |