]> git.gag.com Git - fw/altos/blobdiff - src/lpc/lpc.h
altos: Allow target-specific USB endpoint specifications
[fw/altos] / src / lpc / lpc.h
index 5a1987f57338792b5b1ebc54e5e7514523df189d..4e229838623d431c808b1cb8e7712ea4a04f61e4 100644 (file)
@@ -828,6 +828,118 @@ struct lpc_usb {
 
 extern struct lpc_usb lpc_usb;
 
+#define LPC_USB_DEVCMDSTAT_DEV_ADDR    0
+#define LPC_USB_DEVCMDSTAT_DEV_ADDR_MASK       0x7f
+#define LPC_USB_DEVCMDSTAT_DEV_EN      7
+#define LPC_USB_DEVCMDSTAT_SETUP       8
+#define LPC_USB_DEVCMDSTAT_PLL_ON      9
+#define LPC_USB_DEVCMDSTAT_LPM_SUP     11
+#define LPC_USB_DEVCMDSTAT_INTONNAK_AO 12
+#define LPC_USB_DEVCMDSTAT_INTONNAK_AI 13
+#define LPC_USB_DEVCMDSTAT_INTONNAK_CO 14
+#define LPC_USB_DEVCMDSTAT_INTONNAK_CI 15
+#define LPC_USB_DEVCMDSTAT_DCON                16
+#define LPC_USB_DEVCMDSTAT_DSUS                17
+#define LPC_USB_DEVCMDSTAT_LPM_SUS     19
+#define LPC_USB_DEVCMDSTAT_LPM_REWP    20
+#define LPC_USB_DEVCMDSTAT_DCON_C      24
+#define LPC_USB_DEVCMDSTAT_DSUS_C      25
+#define LPC_USB_DEVCMDSTAT_DRES_C      26
+#define LPC_USB_DEVCMDSTAT_VBUSDEBOUNCED       28
+
+#define LPC_USB_INFO_FRAME_NR          0
+#define LPC_USB_INFO_FRAME_NR_MASK     0x3ff
+#define LPC_USB_INFO_ERR_CODE          11
+#define LPC_USB_INFO_ERR_CODE_NO_ERROR                 0
+#define LPC_USB_INFO_ERR_CODE_PID_ENCODING_ERROR       1
+#define LPC_USB_INFO_ERR_CODE_PID_UNKNOWN              2
+#define LPC_USB_INFO_ERR_CODE_PACKET_UNEXPECTED                3
+#define LPC_USB_INFO_ERR_CODE_TOKEN_CRC_ERROR          4
+#define LPC_USB_INFO_ERR_CODE_DATA_CRC_ERROR           5
+#define LPC_USB_INFO_ERR_CODE_TIME_OUT                 6
+#define LPC_USB_INFO_ERR_CODE_BABBLE                   7
+#define LPC_USB_INFO_ERR_CODE_TRUNCATED_EOP            8
+#define LPC_USB_INFO_ERR_CODE_SENT_RECEIVED_NAK                9
+#define LPC_USB_INFO_ERR_CODE_SENT_STALL               0xa
+#define LPC_USB_INFO_ERR_CODE_OVERRUN                  0xb
+#define LPC_USB_INFO_ERR_CODE_SENT_EMPTY_PACKET                0xc
+#define LPC_USB_INFO_ERR_CODE_BITSTUFF_ERROR           0xd
+#define LPC_USB_INFO_ERR_CODE_SYNC_ERROR               0xe
+#define LPC_USB_INFO_ERR_CODE_WRONG_DATA_TOGGLE                0xf
+#define LPC_USB_INFO_ERR_CODE_MASK                     0xf
+
+#define LPC_USB_EPLISTSTART_EP_LIST                    0
+
+#define LPC_USB_DATABUFSTART_DA_BUF                    0
+
+#define LPC_USB_LPM_HIRD_HW            0
+#define LPC_USB_LPM_HIRD_HW_MASK               0xf
+#define LPC_USB_LPM_HIRD_SW            4
+#define LPC_USB_LPM_HIRD_SW_MASK               0xf
+#define LPC_USB_LPM_DATA_PENDING       8
+
+#define LPC_USB_EPSKIP_SKIP            0
+
+#define LPC_USB_EPINUSE_BUF(ep)                (ep)
+
+#define LPC_USB_EPBUFCFG_BUF_SB(ep)    (ep)
+
+#define LPC_USB_INTSTAT_EP0OUT         0
+#define LPC_USB_INTSTAT_EP0IN          1
+#define LPC_USB_INTSTAT_EP1OUT         2
+#define LPC_USB_INTSTAT_EP1IN          3
+#define LPC_USB_INTSTAT_EP2OUT         4
+#define LPC_USB_INTSTAT_EP2IN          5
+#define LPC_USB_INTSTAT_EP3OUT         6
+#define LPC_USB_INTSTAT_EP3IN          7
+#define LPC_USB_INTSTAT_EP4OUT         8
+#define LPC_USB_INTSTAT_EP4IN          9
+#define LPC_USB_INTSTAT_FRAME_INT      30
+#define LPC_USB_INTSTAT_DEV_INT                31
+
+#define LPC_USB_INTIN_EP_INT_EN(ep)    (ep)
+#define LPC_USB_INTIN_FRAME_INT_EN     30
+#define LPC_USB_INTIN_DEV_INT_EN       31
+
+#define LPC_USB_INTSETSTAT_EP_SET_INT(ep)      (ep)
+#define LPC_USB_INTSETSTAT_FRAME_SET_INT       30
+#define LPC_USB_INTSETSTAT_DEV_SET_INT         31
+
+#define LPC_USB_INTROUTING_ROUTE_INT(ep)       (ep)
+#define LPC_USB_INTROUTING_INT30               30
+#define LPC_USB_INTROUTING_INT31               31
+
+#define LPC_USB_EPTOGGLE_TOGGLE(ep)            (ep)
+
+struct lpc_usb_ep {
+       vuint16_t       buffer_offset;
+       vuint16_t       buffer_status_nbytes;
+};
+
+struct lpc_usb_epn {
+       struct lpc_usb_ep       out[2];
+       struct lpc_usb_ep       in[2];
+};
+
+struct lpc_usb_endpoint {
+       struct lpc_usb_ep       ep0_out;
+       vuint16_t       setup_offset;
+       vuint16_t       reserved_06;
+       struct lpc_usb_ep       ep0_in;
+       vuint16_t       reserved_0c;
+       vuint16_t       reserved_0e;
+       struct lpc_usb_epn      epn[4];
+};
+
+#define LPC_USB_EP_STATUS_ACTIVE       15
+#define LPC_USB_EP_STATUS_DISABLED     14
+#define LPC_USB_EP_STATUS_STALL                13
+#define LPC_USB_EP_STATUS_TOGGLE_RESET 12
+#define LPC_USB_EP_STATUS_RATE_FEEDBACK        11
+#define LPC_USB_EP_STATUS_ENDPOINT_TYPE        10
+#define LPC_USB_EP_STATUS_OFFSET       0
+#define LPC_USB_EP_STATUS_OFFSET_MASK  0x3ff
+
 #define LPC_ISR_PIN_INT0_POS   0
 #define LPC_ISR_PIN_INT1_POS   1
 #define LPC_ISR_PIN_INT2_POS   2