| /* |
| 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) |
| |
| |
| |
| |
| |
| |
| |
| |