summaryrefslogtreecommitdiff
path: root/src/portable
diff options
context:
space:
mode:
authorJerzy Kasenberg <[email protected]>2021-12-26 21:50:48 +0100
committerJerzy Kasenberg <[email protected]>2021-12-31 22:53:27 +0100
commit2f69649bb6a2dcd583b52005dc946e08580323fd (patch)
tree8460e0f2d7edc95d7eea287ec519e0b6fd0e860c /src/portable
parent868948f67c90fa7c2553cdcd604b52862cf55720 (diff)
Add register file for Microchip PIC32MZ
Diffstat (limited to 'src/portable')
-rw-r--r--src/portable/microchip/pic32mz/usbhs_registers.h931
1 files changed, 931 insertions, 0 deletions
diff --git a/src/portable/microchip/pic32mz/usbhs_registers.h b/src/portable/microchip/pic32mz/usbhs_registers.h
new file mode 100644
index 000000000..757e3f083
--- /dev/null
+++ b/src/portable/microchip/pic32mz/usbhs_registers.h
@@ -0,0 +1,931 @@
+/*******************************************************************************
+* Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries.
+*
+* Subject to your compliance with these terms, you may use Microchip software
+* and any derivatives exclusively with Microchip products. It is your
+* responsibility to comply with third party license terms applicable to your
+* use of third party software (including open source software) that may
+* accompany Microchip software.
+*
+* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
+* EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
+* WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
+* PARTICULAR PURPOSE.
+*
+* IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
+* INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
+* WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
+* BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
+* FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
+* ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
+* THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+*******************************************************************************/
+/*******************************************************************************
+ USBHS Peripheral Library Register Defintions
+
+ File Name:
+ usbhs_registers.h
+
+ Summary:
+ USBHS PLIB Register Defintions
+
+ Description:
+ This file contains the constants and defintions which are required by the
+ the USBHS library.
+*******************************************************************************/
+
+#ifndef __USBHS_REGISTERS_H__
+#define __USBHS_REGISTERS_H__
+
+#include <p32xxxx.h>
+#include <stdint.h>
+
+/*****************************************
+ * Module Register Offsets.
+ *****************************************/
+
+#define USBHS_REG_FADDR 0x000
+#define USBHS_REG_POWER 0x001
+#define USBHS_REG_INTRTX 0x002
+#define USBHS_REG_INTRRX 0x004
+#define USBHS_REG_INTRTXE 0x006
+#define USBHS_REG_INTRRXE 0x008
+#define USBHS_REG_INTRUSB 0x00A
+#define USBHS_REG_INTRUSBE 0x00B
+#define USBHS_REG_FRAME 0x00C
+#define USBHS_REG_INDEX 0x00E
+#define USBHS_REG_TESTMODE 0x00F
+
+/*******************************************************
+ * Endpoint Control Status Registers (CSR). These values
+ * should be added to either the 0x10 to access the
+ * register through Indexed CSR. To access the actual
+ * CSR, see ahead in this header file.
+ ******************************************************/
+
+#define USBHS_REG_EP_TXMAXP 0x000
+#define USBHS_REG_EP_CSR0L 0x002
+#define USBHS_REG_EP_CSR0H 0x003
+#define USBHS_REG_EP_TXCSRL 0x002
+#define USBHS_REG_EP_TXCSRH 0x003
+#define USBHS_REG_EP_RXMAXP 0x004
+#define USBHS_REG_EP_RXCSRL 0x006
+#define USBHS_REG_EP_RXCSRH 0x007
+#define USBHS_REG_EP_COUNT0 0x008
+#define USBHS_REG_EP_RXCOUNT 0x008
+#define USBHS_REG_EP_TYPE0 0x01A
+#define USBHS_REG_EP_TXTYPE 0x01A
+#define USBHS_REG_EP_NAKLIMIT0 0x01B
+#define USBHS_REG_EP_TXINTERVAL 0x01B
+#define USBHS_REG_EP_RXTYPE 0x01C
+#define USBHS_REG_EP_RXINTERVAL 0x01D
+#define USBHS_REG_EP_CONFIGDATA 0x01F
+#define USBHS_REG_EP_FIFOSIZE 0x01F
+
+#define USBHS_HOST_EP0_SETUPKT_SET 0x8
+#define USBHS_HOST_EP0_TXPKTRDY_SET 0x2
+#define USBHS_SOFT_RST_NRST_SET 0x1
+#define USBHS_SOFT_RST_NRSTX_SET 0x2
+#define USBHS_EP0_DEVICE_SERVICED_RXPKTRDY 0x40
+#define USBHS_EP0_DEVICE_DATAEND 0x08
+#define USBHS_EP0_DEVICE_TXPKTRDY 0x02
+#define USBHS_EP0_HOST_STATUS_STAGE_START 0x40
+#define USBHS_EP0_HOST_REQPKT 0x20
+#define USBHS_EP0_HOST_TXPKTRDY 0x02
+#define USBHS_EP0_HOST_RXPKTRDY 0x01
+#define USBHS_EP_DEVICE_TX_SENT_STALL 0x20
+#define USBHS_EP_DEVICE_TX_SEND_STALL 0x10
+#define USBHS_EP_DEVICE_RX_SENT_STALL 0x40
+#define USBHS_EP_DEVICE_RX_SEND_STALL 0x20
+
+/* FADDR - Device Function Address */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned FUNC:7;
+ unsigned :1;
+ };
+
+ uint8_t w;
+
+} __USBHS_FADDR_t;
+
+/* POWER - Control Resume and Suspend signalling */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned SUSPEN:1;
+ unsigned SUSPMODE:1;
+ unsigned RESUME:1;
+ unsigned RESET:1;
+ unsigned HSMODE:1;
+ unsigned HSEN:1;
+ unsigned SOFTCONN:1;
+ unsigned ISOUPD:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_POWER_t;
+
+/* INTRTXE - Transmit endpoint interrupt enable */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned EP0IE:1;
+ unsigned EP1TXIE:1;
+ unsigned EP2TXIE:1;
+ unsigned EP3TXIE:1;
+ unsigned EP4TXIE:1;
+ unsigned EP5TXIE:1;
+ unsigned EP6TXIE:1;
+ unsigned EP7TXIE:1;
+ unsigned :8;
+ };
+ struct
+ {
+ uint16_t w;
+ };
+
+} __USBHS_INTRTXE_t;
+
+/* INTRRXE - Receive endpoint interrupt enable */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned :1;
+ unsigned EP1RXIE:1;
+ unsigned EP2RXIE:1;
+ unsigned EP3RXIE:1;
+ unsigned EP4RXIE:1;
+ unsigned EP5RXIE:1;
+ unsigned EP6RXIE:1;
+ unsigned EP7RXIE:1;
+ unsigned :8;
+ };
+ struct
+ {
+ uint16_t w;
+ };
+
+} __USBHS_INTRRXE_t;
+
+/* INTRUSBE - General USB Interrupt enable */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned SUSPIE:1;
+ unsigned RESUMEIE:1;
+ unsigned RESETIE:1;
+ unsigned SOFIE:1;
+ unsigned CONNIE:1;
+ unsigned DISCONIE:1;
+ unsigned SESSRQIE:1;
+ unsigned VBUSERRIE:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_INTRUSBE_t;
+
+/* FRAME - Frame number */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RFRMNUM:11;
+ unsigned :5;
+ };
+ struct
+ {
+ uint16_t w;
+ };
+
+} __USBHS_FRAME_t;
+
+/* INDEX - Endpoint index */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned ENDPOINT:4;
+ unsigned :4;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_INDEX_t;
+
+/* TESTMODE - Test mode register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned NAK:1;
+ unsigned TESTJ:1;
+ unsigned TESTK:1;
+ unsigned PACKET:1;
+ unsigned FORCEHS:1;
+ unsigned FORCEFS:1;
+ unsigned FIFOACC:1;
+ unsigned FORCEHST:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_TESTMODE_t;
+
+/* COUNT0 - Indicates the amount of data received in endpoint 0 */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXCNT:7;
+ unsigned :1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_COUNT0_t;
+
+/* TYPE0 - Operating speed of target device */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned :6;
+ unsigned SPEED:2;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_TYPE0_t;
+
+/* DEVCTL - Module control register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned SESSION:1;
+ unsigned HOSTREQ:1;
+ unsigned HOSTMODE:1;
+ unsigned VBUS:2;
+ unsigned LSDEV:1;
+ unsigned FSDEV:1;
+ unsigned BDEV:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_DEVCTL_t;
+
+/* CSR0L Device - Endpoint Device Mode Control Status Register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXPKTRDY:1;
+ unsigned TXPKTRDY:1;
+ unsigned SENTSTALL:1;
+ unsigned DATAEND:1;
+ unsigned SETUPEND:1;
+ unsigned SENDSTALL:1;
+ unsigned SVCRPR:1;
+ unsigned SVSSETEND:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_CSR0L_DEVICE_t;
+
+/* CSR0L Host - Endpoint Host Mode Control Status Register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXPKTRDY:1;
+ unsigned TXPKTRDY:1;
+ unsigned RXSTALL:1;
+ unsigned SETUPPKT:1;
+ unsigned ERROR:1;
+ unsigned REQPKT:1;
+ unsigned STATPKT:1;
+ unsigned NAKTMOUT:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_CSR0L_HOST_t;
+
+/* TXCSRL Device - Endpoint Transmit Control Status Register Low */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TXPKTRDY:1;
+ unsigned FIFOONE:1;
+ unsigned UNDERRUN:1;
+ unsigned FLUSH:1;
+ unsigned SENDSTALL:1;
+ unsigned SENTSTALL:1;
+ unsigned CLRDT:1;
+ unsigned INCOMPTX:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_TXCSRL_DEVICE_t;
+
+/* TXCSRL Host - Endpoint Transmit Control Status Register Low */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TXPKTRDY:1;
+ unsigned FIFONE:1;
+ unsigned ERROR:1;
+ unsigned FLUSH:1;
+ unsigned SETUPPKT:1;
+ unsigned RXSTALL:1;
+ unsigned CLRDT:1;
+ unsigned INCOMPTX:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_TXCSRL_HOST_t;
+
+/* TXCSRH Device - Endpoint Transmit Control Status Register High */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned :2;
+ unsigned DMAREQMD:1;
+ unsigned FRCDATTG:1;
+ unsigned DMAREQENL:1;
+ unsigned MODE:1;
+ unsigned ISO:1;
+ unsigned AUTOSET:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_TXCSRH_DEVICE_t;
+
+/* TXCSRH Host - Endpoint Transmit Control Status Register High */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned DATATGGL:1;
+ unsigned DTWREN:1;
+ unsigned DMAREQMD:1;
+ unsigned FRCDATTG:1;
+ unsigned DMAREQEN:1;
+ unsigned MODE:1;
+ unsigned :1;
+ unsigned AUOTSET:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_TXCSRH_HOST_t;
+
+/* CSR0H Device - Endpoint 0 Control Status Register High */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned FLSHFIFO:1;
+ unsigned :7;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_CSR0H_DEVICE_t;
+
+/* CSR0H Host - Endpoint 0 Control Status Register High */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned FLSHFIFO:1;
+ unsigned DATATGGL:1;
+ unsigned DTWREN:1;
+ unsigned DISPING:1;
+ unsigned :4;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_CSR0H_HOST_t;
+
+/* RXMAXP - Receive Endpoint Max packet size. */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXMAXP:11;
+ unsigned MULT:5;
+ };
+ struct
+ {
+ uint16_t w;
+ };
+
+} __USBHS_RXMAXP_t;
+
+/* RXCSRL Device - Receive endpoint Control Status Register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXPKTRDY:1;
+ unsigned FIFOFULL:1;
+ unsigned OVERRUN:1;
+ unsigned DATAERR:1;
+ unsigned FLUSH:1;
+ unsigned SENDSTALL:1;
+ unsigned SENTSTALL:1;
+ unsigned CLRDT:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_RXCSRL_DEVICE_t;
+
+/* RXCSRL Host - Receive endpoint Control Status Register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXPKTRDY:1;
+ unsigned FIFOFULL:1;
+ unsigned ERROR:1;
+ unsigned DERRNAKT:1;
+ unsigned FLUSH:1;
+ unsigned REQPKT:1;
+ unsigned RXSTALL:1;
+ unsigned CLRDT:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_RXCSRL_HOST_t;
+
+/* RXCSRH Device - Receive endpoint Control Status Register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned INCOMPRX:1;
+ unsigned :2;
+ unsigned DMAREQMODE:1;
+ unsigned DISNYET:1;
+ unsigned DMAREQEN:1;
+ unsigned ISO:1;
+ unsigned AUTOCLR:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_RXCSRH_DEVICE_t;
+
+/* RXCSRH Host - Receive endpoint Control Status Register */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned INCOMPRX:1;
+ unsigned DATATGGL:1;
+ unsigned DATATWEN:1;
+ unsigned DMAREQMD:1;
+ unsigned PIDERR:1;
+ unsigned DMAREQEN:1;
+ unsigned AUTORQ:1;
+ unsigned AUOTCLR:1;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_RXCSRH_HOST_t;
+
+/* RXCOUNT - Amount of data pending in RX FIFO */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXCNT:14;
+ unsigned :2;
+ };
+ struct
+ {
+ uint16_t w;
+ };
+
+} __USBHS_RXCOUNT_t;
+
+/* TXTYPE - Specifies the target transmit endpoint */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TEP:4;
+ unsigned PROTOCOL:2;
+ unsigned SPEED:2;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_TXTYPE_t;
+
+/* RXTYPE - Specifies the target receive endpoint */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TEP:4;
+ unsigned PROTOCOL:2;
+ unsigned SPEED:2;
+ };
+ struct
+ {
+ uint8_t w;
+ };
+
+} __USBHS_RXTYPE_t;
+
+/* TXINTERVAL - Defines the polling interval */
+typedef struct
+{
+ uint8_t TXINTERV;
+
+} __USBHS_TXINTERVAL_t;
+
+/* RXINTERVAL - Defines the polling interval */
+typedef struct
+{
+ uint8_t RXINTERV;
+
+} __USBHS_RXINTERVAL_t;
+
+/* TXMAXP - Maximum amount of data that can be transferred through a TX endpoint
+ * */
+
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TXMAXP:11;
+ unsigned MULT:5;
+ };
+ uint16_t w;
+
+} __USBHS_TXMAXP_t;
+
+/* TXFIFOSZ - Size of the transmit endpoint FIFO */
+typedef struct __attribute__((packed))
+{
+ unsigned TXFIFOSZ:4;
+ unsigned TXDPB:1;
+ unsigned :3;
+
+} __USBHS_TXFIFOSZ_t;
+
+/* RXFIFOSZ - Size of the receive endpoint FIFO */
+typedef struct __attribute__((packed))
+{
+ unsigned RXFIFOSZ:4;
+ unsigned RXDPB:1;
+ unsigned :3;
+
+} __USBHS_RXFIFOSZ_t;
+
+/* TXFIFOADD - Start address of the transmit endpoint FIFO */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TXFIFOAD:13;
+ unsigned :3;
+ };
+ uint16_t w;
+
+} __USBHS_TXFIFOADD_t;
+
+/* RXFIFOADD - Start address of the receive endpoint FIFO */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXFIFOAD:13;
+ unsigned :3;
+ };
+ uint16_t w;
+
+} __USBHS_RXFIFOADD_t;
+
+/* SOFTRST - Asserts NRSTO and NRSTOX */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned NRST:1;
+ unsigned NRSTX:1;
+ unsigned :6;
+ };
+ uint8_t w;
+
+} __USBHS_SOFTRST_t;
+
+/* TXFUNCADDR - Target address of transmit endpoint */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TXFADDR:7;
+ unsigned :1;
+ };
+ uint8_t w;
+
+} __USBHS_TXFUNCADDR_t;
+
+/* RXFUNCADDR - Target address of receive endpoint */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXFADDR:7;
+ unsigned :1;
+ };
+ uint8_t w;
+
+} __USBHS_RXFUNCADDR_t;
+
+/* TXHUBADDR - Address of the hub to which the target transmit device endpoint
+ * is connected */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TXHUBADDR:7;
+ unsigned MULTTRAN:1;
+ };
+ uint8_t w;
+
+} __USBHS_TXHUBADDR_t;
+
+/* RXHUBADDR - Address of the hub to which the target receive device endpoint is
+ * connected */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXHUBADDR:7;
+ unsigned MULTTRAN:1;
+ };
+ uint8_t w;
+
+} __USBHS_RXHUBADDR_t;
+
+/* TXHUBPORT - Address of the hub to which the target transmit device endpoint
+ * is connected. */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned TXHUBPRT:7;
+ unsigned :1;
+ };
+
+ uint8_t w;
+
+} __USBHS_TXHUBPORT_t;
+
+/* RXHUBPORT - Address of the hub to which the target receive device endpoint
+ * is connected. */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned RXHUBPRT:7;
+ unsigned :1;
+ };
+
+ uint8_t w;
+
+} __USBHS_RXHUBPORT_t;
+
+/* DMACONTROL - Configures a DMA channel */
+typedef union
+{
+ struct __attribute__((packed))
+ {
+ unsigned DMAEN:1;
+ unsigned DMADIR:1;
+ unsigned DMAMODE:1;
+ unsigned DMAIE:1;
+ unsigned DMAEP:4;
+ unsigned DMAERR:1;
+ unsigned DMABRSTM:2;
+ unsigned:21;
+ };
+
+ uint32_t w;
+
+} __USBHS_DMACNTL_t;
+
+/* Endpoint Control and Status Register Set */
+typedef struct __attribute__((packed))
+{
+ volatile __USBHS_TXMAXP_t TXMAXPbits;
+ union
+ {
+ struct
+ {
+ union
+ {
+ volatile __USBHS_CSR0L_DEVICE_t CSR0L_DEVICEbits;
+ volatile __USBHS_CSR0L_HOST_t CSR0L_HOSTbits;
+ };
+ union
+ {
+ volatile __USBHS_CSR0H_DEVICE_t CSR0H_DEVICEbits;
+ volatile __USBHS_CSR0H_HOST_t CSR0H_HOSTbits;
+ };
+ };
+
+ struct
+ {
+ union
+ {
+ volatile __USBHS_TXCSRL_DEVICE_t TXCSRL_DEVICEbits;
+ volatile __USBHS_TXCSRL_HOST_t TXCSRL_HOSTbits;
+ };
+
+ union
+ {
+ volatile __USBHS_TXCSRH_DEVICE_t TXCSRH_DEVICEbits;
+ volatile __USBHS_TXCSRH_HOST_t TXCSRH_HOSTbits;
+ };
+ };
+ };
+
+ volatile __USBHS_RXMAXP_t RXMAXPbits;
+
+ union
+ {
+ volatile __USBHS_RXCSRL_DEVICE_t RXCSRL_DEVICEbits;
+ volatile __USBHS_RXCSRL_HOST_t RXCSRL_HOSTbits;
+ };
+
+ union
+ {
+ volatile __USBHS_RXCSRH_DEVICE_t RXCSRH_DEVICEbits;
+ volatile __USBHS_RXCSRH_HOST_t RXCSRH_HOSTbits;
+ };
+
+ union
+ {
+ volatile __USBHS_COUNT0_t COUNT0bits;
+ volatile __USBHS_RXCOUNT_t RXCOUNTbits;
+ };
+
+ union
+ {
+ volatile __USBHS_TYPE0_t TYPE0bits;
+ volatile __USBHS_TXTYPE_t TXTYPEbits;
+ };
+
+ union
+ {
+ volatile uint8_t NAKLIMIT0;
+ volatile __USBHS_TXINTERVAL_t TXINTERVALbits;
+ };
+
+ volatile __USBHS_RXTYPE_t RXTYPEbits;
+ volatile __USBHS_RXINTERVAL_t RXINTERVALbits;
+ unsigned :8;
+ union
+ {
+ volatile uint8_t CONFIGDATA;
+ volatile uint8_t FIFOSIZE;
+ };
+
+} __USBHS_EPCSR_t;
+
+/* Set of registers that configure the multi-point option */
+typedef struct __attribute__((packed))
+{
+ volatile __USBHS_TXFUNCADDR_t TXFUNCADDRbits;
+ unsigned :8;
+ volatile __USBHS_TXHUBADDR_t TXHUBADDRbits;
+ volatile __USBHS_TXHUBPORT_t TXHUBPORTbits;
+ volatile __USBHS_RXFUNCADDR_t RXFUNCADDRbits;
+ unsigned :8;
+ volatile __USBHS_RXHUBADDR_t RXHUBADDRbits;
+ volatile __USBHS_RXHUBPORT_t RXHUBPORTbits;
+
+} __USBHS_TARGET_ADDR_t;
+
+/* Set of registers that configure the DMA channel */
+typedef struct __attribute__((packed))
+{
+ volatile __USBHS_DMACNTL_t DMACNTLbits;
+ volatile uint32_t DMAADDR;
+ volatile uint32_t DMACOUNT;
+ volatile uint32_t pad;
+} __USBHS_DMA_CHANNEL_t;
+
+/* USBHS module register set */
+typedef struct __attribute__((aligned(4),packed))
+{
+ volatile __USBHS_FADDR_t FADDRbits;
+ volatile __USBHS_POWER_t POWERbits;
+ volatile uint16_t INTRTX;
+ volatile uint16_t INTRRX;
+ volatile __USBHS_INTRTXE_t INTRTXEbits;
+ volatile __USBHS_INTRRXE_t INTRRXEbits;
+ volatile uint8_t INTRUSB;
+ volatile __USBHS_INTRUSBE_t INTRUSBEbits;
+ volatile __USBHS_FRAME_t FRAMEbits;
+ volatile __USBHS_INDEX_t INDEXbits;
+ volatile __USBHS_TESTMODE_t TESTMODEbits;
+ volatile __USBHS_EPCSR_t INDEXED_EPCSR;
+ volatile uint32_t FIFO[16];
+ volatile __USBHS_DEVCTL_t DEVCTLbits;
+ volatile uint8_t MISC;
+ volatile __USBHS_TXFIFOSZ_t TXFIFOSZbits;
+ volatile __USBHS_RXFIFOSZ_t RXFIFOSZbits;
+
+ volatile __USBHS_TXFIFOADD_t TXFIFOADDbits;
+ volatile __USBHS_RXFIFOADD_t RXFIFOADDbits;
+
+ volatile uint32_t VCONTROL;
+ volatile uint16_t HWVERS;
+ volatile uint8_t padding1[10];
+ volatile uint8_t EPINFO;
+ volatile uint8_t RAMINFO;
+ volatile uint8_t LINKINFO;
+ volatile uint8_t VPLEN;
+ volatile uint8_t HS_EOF1;
+ volatile uint8_t FS_EOF1;
+ volatile uint8_t LS_EOF1;
+
+ volatile __USBHS_SOFTRST_t SOFTRSTbits;
+
+ volatile __USBHS_TARGET_ADDR_t TADDR[16];
+ volatile __USBHS_EPCSR_t EPCSR[16];
+ volatile uint32_t DMA_INTR;
+ volatile __USBHS_DMA_CHANNEL_t DMA_CHANNEL[8];
+ volatile uint32_t RQPKTXOUNT[16];
+
+} usbhs_registers_t;
+
+#endif