1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/cpu/cc2538/include/vendor/hw_usb.h
smlng df37e69b90 cpu/cc2538: add TI vendor headers
Currently the cc2538 is based on from-scratch adaption which is
    not feature complete and thus lacks defines etc. Introducing the
    official vendor header will ease future extension and adaptions
    of the CPU and its features.
2018-08-03 08:29:32 +02:00

803 lines
49 KiB
C
Executable File

/******************************************************************************
* Filename: hw_usb.h
* Revised: $Date: 2013-04-30 17:13:44 +0200 (Tue, 30 Apr 2013) $
* Revision: $Revision: 9943 $
*
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 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.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "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 COPYRIGHT
* OWNER OR CONTRIBUTORS 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.
*
******************************************************************************/
#ifndef __HW_USB_H__
#define __HW_USB_H__
//*****************************************************************************
//
// The following are defines for the USB register offsets.
//
//*****************************************************************************
#define USB_ADDR 0x40089000 // Function address
#define USB_POW 0x40089004 // Power management and control
// register
#define USB_IIF 0x40089008 // Interrupt flags for endpoint 0
// and IN endpoints 1-5
#define USB_OIF 0x40089010 // Interrupt flags for OUT
// endpoints 1-5
#define USB_CIF 0x40089018 // Common USB interrupt flags
#define USB_IIE 0x4008901C // Interrupt enable mask for IN
// endpoints 1-5 and endpoint 0
#define USB_OIE 0x40089024 // Interrupt enable mask for OUT
// endpoints 1-5
#define USB_CIE 0x4008902C // Common USB interrupt enable
// mask
#define USB_FRML 0x40089030 // Frame number (low byte)
#define USB_FRMH 0x40089034 // Frame number (high byte)
#define USB_INDEX 0x40089038 // Index register for selecting
// the endpoint status and control
// registers
#define USB_CTRL 0x4008903C // USB peripheral control register
#define USB_MAXI 0x40089040 // Indexed register: For USB_INDEX
// = 1-5: Maximum packet size for
// IN endpoint {1-5}
#define USB_CS0_CSIL 0x40089044 // Indexed register: For USB_INDEX
// = 0: Endpoint 0 control and
// status For USB_INDEX = 1-5: IN
// endpoint {1-5} control and
// status (low byte)
#define USB_CSIH 0x40089048 // Indexed register: For USB_INDEX
// = 1-5: IN endpoint {1-5} control
// and status (high byte)
#define USB_MAXO 0x4008904C // Indexed register: For USB_INDEX
// = 1-5: Maximum packet size for
// OUT endpoint {1-5}
#define USB_CSOL 0x40089050 // Indexed register: For USB_INDEX
// = 1-5: OUT endpoint {1-5}
// control and status (low byte)
#define USB_CSOH 0x40089054 // Indexed register: For USB_INDEX
// = 1-5: OUT endpoint {1-5}
// control and status (high byte)
#define USB_CNT0_CNTL 0x40089058 // Indexed register: For USB_INDEX
// = 0: Number of received bytes in
// the endpoint 0 FIFO For
// USB_INDEX = 1-5: Number of
// received bytes in the OUT
// endpoint {1-5} FIFO (low byte)
#define USB_CNTH 0x4008905C // Indexed register: For USB_INDEX
// = 1-5: Number of received in the
// OUT endpoint {1-5} FIFO (high
// byte)
#define USB_F0 0x40089080 // Endpoint 0 FIFO
#define USB_F1 0x40089088 // IN/OUT endpoint 1 FIFO
#define USB_F2 0x40089090 // IN/OUT endpoint 2 FIFO
#define USB_F3 0x40089098 // IN/OUT endpoint 3 FIFO
#define USB_F4 0x400890A0 // IN/OUT endpoint 4 FIFO
#define USB_F5 0x400890A8 // IN/OUT endpoint 5 FIFO
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_ADDR register.
//
//*****************************************************************************
#define USB_ADDR_UPDATE 0x00000080 // This bit is set by hardware
// when writing to this register,
// and is cleared by hardware when
// the new address becomes
// effective.
#define USB_ADDR_UPDATE_M 0x00000080
#define USB_ADDR_UPDATE_S 7
#define USB_ADDR_USBADDR_M 0x0000007F // Device address. The address
// shall be updated upon successful
// completion of the status stage
// of the SET_ADDRESS request.
#define USB_ADDR_USBADDR_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_POW register.
//
//*****************************************************************************
#define USB_POW_ISOWAITSOF 0x00000080 // For isochronous mode IN
// endpoints: When set, the USB
// controller will wait for an SOF
// token from the time
// USB_CSIL.INPKTRDY is set before
// sending the packet. If an IN
// token is received before an SOF
// token, then a zero length data
// packet will be sent.
#define USB_POW_ISOWAITSOF_M 0x00000080
#define USB_POW_ISOWAITSOF_S 7
#define USB_POW_RST 0x00000008 // Indicates that reset signaling
// is present on the bus
#define USB_POW_RST_M 0x00000008
#define USB_POW_RST_S 3
#define USB_POW_RESUME 0x00000004 // Drives resume signaling for
// remote wakeup According to the
// USB Specification, the resume
// signal must be held active for
// at least 1 ms and no more than
// 15 ms. It is recommended to keep
// this bit set for approximately
// 10 ms.
#define USB_POW_RESUME_M 0x00000004
#define USB_POW_RESUME_S 2
#define USB_POW_SUSPEND 0x00000002 // Indicates entry into suspend
// mode Suspend mode must be
// enabled by setting
// USB_POW.SUSPENDEN Software
// clears this bit by reading the
// USB_CIF register or by asserting
// USB_POW.RESUME
#define USB_POW_SUSPEND_M 0x00000002
#define USB_POW_SUSPEND_S 1
#define USB_POW_SUSPENDEN 0x00000001 // Enables detection of and entry
// into suspend mode.
#define USB_POW_SUSPENDEN_M 0x00000001
#define USB_POW_SUSPENDEN_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_IIF register.
//
//*****************************************************************************
#define USB_IIF_INEP5IF 0x00000020 // Interrupt flag for IN endpoint
// 5 Cleared by hardware when read
#define USB_IIF_INEP5IF_M 0x00000020
#define USB_IIF_INEP5IF_S 5
#define USB_IIF_INEP4IF 0x00000010 // Interrupt flag for IN endpoint
// 4 Cleared by hardware when read
#define USB_IIF_INEP4IF_M 0x00000010
#define USB_IIF_INEP4IF_S 4
#define USB_IIF_INEP3IF 0x00000008 // Interrupt flag for IN endpoint
// 3 Cleared by hardware when read
#define USB_IIF_INEP3IF_M 0x00000008
#define USB_IIF_INEP3IF_S 3
#define USB_IIF_INEP2IF 0x00000004 // Interrupt flag for IN endpoint
// 2 Cleared by hardware when read
#define USB_IIF_INEP2IF_M 0x00000004
#define USB_IIF_INEP2IF_S 2
#define USB_IIF_INEP1IF 0x00000002 // Interrupt flag for IN endpoint
// 1 Cleared by hardware when read
#define USB_IIF_INEP1IF_M 0x00000002
#define USB_IIF_INEP1IF_S 1
#define USB_IIF_EP0IF 0x00000001 // Interrupt flag for endpoint 0
// Cleared by hardware when read
#define USB_IIF_EP0IF_M 0x00000001
#define USB_IIF_EP0IF_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_OIF register.
//
//*****************************************************************************
#define USB_OIF_OUTEP5IF 0x00000020 // Interrupt flag for OUT endpoint
// 5 Cleared by hardware when read
#define USB_OIF_OUTEP5IF_M 0x00000020
#define USB_OIF_OUTEP5IF_S 5
#define USB_OIF_OUTEP4IF 0x00000010 // Interrupt flag for OUT endpoint
// 4 Cleared by hardware when read
#define USB_OIF_OUTEP4IF_M 0x00000010
#define USB_OIF_OUTEP4IF_S 4
#define USB_OIF_OUTEP3IF 0x00000008 // Interrupt flag for OUT endpoint
// 3 Cleared by hardware when read
#define USB_OIF_OUTEP3IF_M 0x00000008
#define USB_OIF_OUTEP3IF_S 3
#define USB_OIF_OUTEP2IF 0x00000004 // Interrupt flag for OUT endpoint
// 2 Cleared by hardware when read
#define USB_OIF_OUTEP2IF_M 0x00000004
#define USB_OIF_OUTEP2IF_S 2
#define USB_OIF_OUTEP1IF 0x00000002 // Interrupt flag for OUT endpoint
// 1 Cleared by hardware when read
#define USB_OIF_OUTEP1IF_M 0x00000002
#define USB_OIF_OUTEP1IF_S 1
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CIF register.
//
//*****************************************************************************
#define USB_CIF_SOFIF 0x00000008 // Start-of-frame interrupt flag
// Cleared by hardware when read
#define USB_CIF_SOFIF_M 0x00000008
#define USB_CIF_SOFIF_S 3
#define USB_CIF_RSTIF 0x00000004 // Reset interrupt flag Cleared by
// hardware when read
#define USB_CIF_RSTIF_M 0x00000004
#define USB_CIF_RSTIF_S 2
#define USB_CIF_RESUMEIF 0x00000002 // Resume interrupt flag Cleared
// by hardware when read
#define USB_CIF_RESUMEIF_M 0x00000002
#define USB_CIF_RESUMEIF_S 1
#define USB_CIF_SUSPENDIF 0x00000001 // Suspend interrupt flag Cleared
// by hardware when read
#define USB_CIF_SUSPENDIF_M 0x00000001
#define USB_CIF_SUSPENDIF_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_IIE register.
//
//*****************************************************************************
#define USB_IIE_INEP5IE 0x00000020 // Interrupt enable for IN
// endpoint 5 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_IIE_INEP5IE_M 0x00000020
#define USB_IIE_INEP5IE_S 5
#define USB_IIE_INEP4IE 0x00000010 // Interrupt enable for IN
// endpoint 4 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_IIE_INEP4IE_M 0x00000010
#define USB_IIE_INEP4IE_S 4
#define USB_IIE_INEP3IE 0x00000008 // Interrupt enable for IN
// endpoint 3 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_IIE_INEP3IE_M 0x00000008
#define USB_IIE_INEP3IE_S 3
#define USB_IIE_INEP2IE 0x00000004 // Interrupt enable for IN
// endpoint 2 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_IIE_INEP2IE_M 0x00000004
#define USB_IIE_INEP2IE_S 2
#define USB_IIE_INEP1IE 0x00000002 // Interrupt enable for IN
// endpoint 1 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_IIE_INEP1IE_M 0x00000002
#define USB_IIE_INEP1IE_S 1
#define USB_IIE_EP0IE 0x00000001 // Interrupt enable for endpoint 0
// 0: Interrupt disabled 1:
// Interrupt enabled
#define USB_IIE_EP0IE_M 0x00000001
#define USB_IIE_EP0IE_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_OIE register.
//
//*****************************************************************************
#define USB_OIE_reserved8_M 0x000000C0 // Reserved
#define USB_OIE_reserved8_S 6
#define USB_OIE_OUTEP5IE 0x00000020 // Interrupt enable for OUT
// endpoint 5 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_OIE_OUTEP5IE_M 0x00000020
#define USB_OIE_OUTEP5IE_S 5
#define USB_OIE_OUTEP4IE 0x00000010 // Interrupt enable for OUT
// endpoint 4 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_OIE_OUTEP4IE_M 0x00000010
#define USB_OIE_OUTEP4IE_S 4
#define USB_OIE_OUTEP3IE 0x00000008 // Interrupt enable for OUT
// endpoint 3 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_OIE_OUTEP3IE_M 0x00000008
#define USB_OIE_OUTEP3IE_S 3
#define USB_OIE_OUTEP2IE 0x00000004 // Interrupt enable for OUT
// endpoint 2 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_OIE_OUTEP2IE_M 0x00000004
#define USB_OIE_OUTEP2IE_S 2
#define USB_OIE_OUTEP1IE 0x00000002 // Interrupt enable for OUT
// endpoint 1 0: Interrupt disabled
// 1: Interrupt enabled
#define USB_OIE_OUTEP1IE_M 0x00000002
#define USB_OIE_OUTEP1IE_S 1
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CIE register.
//
//*****************************************************************************
#define USB_CIE_SOFIE 0x00000008 // Start-of-frame interrupt enable
// 0: Interrupt disabled 1:
// Interrupt enabled
#define USB_CIE_SOFIE_M 0x00000008
#define USB_CIE_SOFIE_S 3
#define USB_CIE_RSTIE 0x00000004 // Reset interrupt enable 0:
// Interrupt disabled 1: Interrupt
// enabled
#define USB_CIE_RSTIE_M 0x00000004
#define USB_CIE_RSTIE_S 2
#define USB_CIE_RESUMEIE 0x00000002 // Resume interrupt enable 0:
// Interrupt disabled 1: Interrupt
// enabled
#define USB_CIE_RESUMEIE_M 0x00000002
#define USB_CIE_RESUMEIE_S 1
#define USB_CIE_SUSPENDIE 0x00000001 // Suspend interrupt enable 0:
// Interrupt disabled 1: Interrupt
// enabled
#define USB_CIE_SUSPENDIE_M 0x00000001
#define USB_CIE_SUSPENDIE_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_FRML register.
//
//*****************************************************************************
#define USB_FRML_FRAMEL_M 0x000000FF // Bits 7:0 of the 11-bit frame
// number The frame number is only
// updated upon successful
// reception of SOF tokens
#define USB_FRML_FRAMEL_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_FRMH register.
//
//*****************************************************************************
#define USB_FRMH_FRAMEH_M 0x00000007 // Bits 10:8 of the 11-bit frame
// number The frame number is only
// updated upon successful
// reception of SOF tokens
#define USB_FRMH_FRAMEH_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_INDEX register.
//
//*****************************************************************************
#define USB_INDEX_USBINDEX_M 0x0000000F // Index of the currently selected
// endpoint The index is set to 0
// to enable access to endpoint 0
// control and status registers The
// index is set to 1, 2, 3, 4 or 5
// to enable access to IN/OUT
// endpoint 1, 2, 3, 4 or 5 control
// and status registers,
// respectively
#define USB_INDEX_USBINDEX_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CTRL register.
//
//*****************************************************************************
#define USB_CTRL_PLLLOCKED 0x00000080 // PLL lock status. The PLL is
// locked when USB_CTRL.PLLLOCKED
// is 1.
#define USB_CTRL_PLLLOCKED_M 0x00000080
#define USB_CTRL_PLLLOCKED_S 7
#define USB_CTRL_PLLEN 0x00000002 // 48 MHz USB PLL enable When this
// bit is set, the 48 MHz PLL is
// started. Software must avoid
// access to other USB registers
// before the PLL has locked; that
// is, USB_CTRL.PLLLOCKED is 1.
// This bit can be set only when
// USB_CTRL.USBEN is 1. The PLL
// must be disabled before entering
// PM1 when suspended, and must be
// re-enabled when resuming
// operation.
#define USB_CTRL_PLLEN_M 0x00000002
#define USB_CTRL_PLLEN_S 1
#define USB_CTRL_USBEN 0x00000001 // USB enable The USB controller
// is reset when this bit is
// cleared
#define USB_CTRL_USBEN_M 0x00000001
#define USB_CTRL_USBEN_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_MAXI register.
//
//*****************************************************************************
#define USB_MAXI_USBMAXI_M 0x000000FF // Maximum packet size, in units
// of 8 bytes, for the selected IN
// endpoint The value of this
// register should match the
// wMaxPacketSize field in the
// standard endpoint descriptor for
// the endpoint. The value must not
// exceed the available memory.
#define USB_MAXI_USBMAXI_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CS0_CSIL register.
//
//*****************************************************************************
#define USB_CS0_CSIL_CLROUTPKTRDY_or_CLRDATATOG \
0x00000040 // USB_CS0.CLROUTPKTRDY [RW]:
// Software sets this bit to clear
// the USB_CS0.OUTPKTRDY bit. It is
// cleared automatically.
// USB_CSIL.CLRDATATOG [RW]:
// Software sets this bit to reset
// the IN endpoint data toggle to
// 0.
#define USB_CS0_CSIL_CLROUTPKTRDY_or_CLRDATATOG_M \
0x00000040
#define USB_CS0_CSIL_CLROUTPKTRDY_or_CLRDATATOG_S 6
#define USB_CS0_CSIL_SENDSTALL_or_SENTSTALL \
0x00000020 // USB_CS0.SENDSTALL [RW]:
// Software sets this bit to
// terminate the current
// transaction with a STALL
// handshake. The bit is cleared
// automatically when the STALL
// handshake has been transmitted.
// USB_CSIL.SENTSTALL [RW]: For
// bulk/interrupt mode IN
// endpoints: This bit is set when
// a STALL handshake is
// transmitted. The FIFO is flushed
// and the USB_CSIL.INPKTRDY bit
// cleared. Software should clear
// this bit.
#define USB_CS0_CSIL_SENDSTALL_or_SENTSTALL_M \
0x00000020
#define USB_CS0_CSIL_SENDSTALL_or_SENTSTALL_S 5
#define USB_CS0_CSIL_SETUPEND_or_SENDSTALL \
0x00000010 // USB_CS0.SETUPEND [RO]: This bit
// is set when a control
// transaction ends before the
// USB_CS0.DATAEND bit has been
// set. An interrupt is generated
// and the FIFO flushed at this
// time. Software clears this bit
// by setting USB_CS0.CLRSETUPEND.
// CSIL.SENDSTALL [RW]: For
// bulk/interrupt mode IN
// endpoints: Software sets this
// bit to issue a STALL handshake.
// Software clears this bit to
// terminate the stall condition.
#define USB_CS0_CSIL_SETUPEND_or_SENDSTALL_M \
0x00000010
#define USB_CS0_CSIL_SETUPEND_or_SENDSTALL_S 4
#define USB_CS0_CSIL_DATAEND_or_FLUSHPACKET \
0x00000008 // USB_CS0.DATAEND [RW]: This bit
// is used to signal the end of the
// data stage, and must be set: 1.
// When the last data packet is
// loaded and USB_CS0.INPKTRDY is
// set. 2. When the last data
// packet is unloaded and
// USB_CS0.CLROUTPKTRDY is set. 3.
// When USB_CS0.INPKTRDY is set to
// send a zero-length packet. The
// USB controller clears this bit
// automatically.
// USB_CSIL.FLUSHPACKET [RW]:
// Software sets this bit to flush
// the next packet to be
// transmitted from the IN endpoint
// FIFO. The FIFO pointer is reset
// and the USB_CSIL.INPKTRDY bit is
// cleared. Note: If the FIFO
// contains two packets,
// USB_CSIL.FLUSHPACKET will need
// to be set twice to completely
// clear the FIFO.
#define USB_CS0_CSIL_DATAEND_or_FLUSHPACKET_M \
0x00000008
#define USB_CS0_CSIL_DATAEND_or_FLUSHPACKET_S 3
#define USB_CS0_CSIL_SENTSTALL_or_UNDERRUN \
0x00000004 // USB_CS0.SENTSTALL [RW]: This
// bit is set when a STALL
// handshake is sent. An interrupt
// is generated is generated when
// this bit is set. Software must
// clear this bit.
// USB_CSIL.UNDERRUN [RW]: In
// isochronous mode, this bit is
// set when a zero length data
// packet is sent after receiving
// an IN token with
// USB_CSIL.INPKTRDY not set. In
// bulk/interrupt mode, this bit is
// set when a NAK is returned in
// response to an IN token.
// Software should clear this bit.
#define USB_CS0_CSIL_SENTSTALL_or_UNDERRUN_M \
0x00000004
#define USB_CS0_CSIL_SENTSTALL_or_UNDERRUN_S 2
#define USB_CS0_CSIL_INPKTRDY_or_PKTPRESENT \
0x00000002 // USB_CS0. INPKTRDY [RW]:
// Software sets this bit after
// loading a data packet into the
// endpoint 0 FIFO. It is cleared
// automatically when the data
// packet has been transmitted. An
// interrupt is generated when the
// bit is cleared.
// USB_CSIL.PKTPRESENT [RO]: This
// bit is set when there is at
// least one packet in the IN
// endpoint FIFO.
#define USB_CS0_CSIL_INPKTRDY_or_PKTPRESENT_M \
0x00000002
#define USB_CS0_CSIL_INPKTRDY_or_PKTPRESENT_S 1
#define USB_CS0_CSIL_OUTPKTRDY_or_INPKTRDY \
0x00000001 // USB_CS0.OUTPKTRDY [RO]:
// Endpoint 0 data packet received
// An interrupt request (EP0) is
// generated if the interrupt is
// enabled. Software must read the
// endpoint 0 FIFO empty, and clear
// this bit by setting
// USB_CS0.CLROUTPKTRDY
// USB_CSIL.INPKTRDY [RW]: IN
// endpoint {1-5} packet transfer
// pending Software sets this bit
// after loading a data packet into
// the FIFO. It is cleared
// automatically when a data packet
// has been transmitted. An
// interrupt is generated (if
// enabled) when the bit is
// cleared. When using
// double-buffering, the bit is
// cleared immediately if the other
// FIFO is empty.
#define USB_CS0_CSIL_OUTPKTRDY_or_INPKTRDY_M \
0x00000001
#define USB_CS0_CSIL_OUTPKTRDY_or_INPKTRDY_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CSIH register.
//
//*****************************************************************************
#define USB_CSIH_AUTISET 0x00000080 // If set by software, the
// USB_CSIL.INPKTRDY bit is
// automatically set when a data
// packet of maximum size
// (specified by USBMAXI) is loaded
// into the IN endpoint FIFO. If a
// packet of less than the maximum
// packet size is loaded, then
// USB_CSIL.INPKTRDY will have to
// be set manually.
#define USB_CSIH_AUTISET_M 0x00000080
#define USB_CSIH_AUTISET_S 7
#define USB_CSIH_ISO 0x00000040 // Selects IN endpoint type: 0:
// Bulk/interrupt 1: Isochronous
#define USB_CSIH_ISO_M 0x00000040
#define USB_CSIH_ISO_S 6
#define USB_CSIH_FORCEDATATOG 0x00000008 // Software sets this bit to force
// the IN endpoint's data toggle to
// switch after each data packet is
// sent regardless of whether an
// ACK was received. This can be
// used by interrupt IN endpoints
// which are used to communicate
// rate feedback for isochronous
// endpoints.
#define USB_CSIH_FORCEDATATOG_M 0x00000008
#define USB_CSIH_FORCEDATATOG_S 3
#define USB_CSIH_INDBLBUF 0x00000001 // IN endpoint FIFO
// double-buffering enable: 0:
// Double buffering disabled 1:
// Double buffering enabled
#define USB_CSIH_INDBLBUF_M 0x00000001
#define USB_CSIH_INDBLBUF_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_MAXO register.
//
//*****************************************************************************
#define USB_MAXO_USBMAXO_M 0x000000FF // Maximum packet size, in units
// of 8 bytes, for the selected OUT
// endpoint The value of this
// register should match the
// wMaxPacketSize field in the
// standard endpoint descriptor for
// the endpoint. The value must not
// exceed the available memory.
#define USB_MAXO_USBMAXO_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CSOL register.
//
//*****************************************************************************
#define USB_CSOL_CLRDATATOG 0x00000080 // Software sets this bit to reset
// the endpoint data toggle to 0.
#define USB_CSOL_CLRDATATOG_M 0x00000080
#define USB_CSOL_CLRDATATOG_S 7
#define USB_CSOL_SENTSTALL 0x00000040 // This bit is set when a STALL
// handshake is transmitted. An
// interrupt is generated when this
// bit is set. Software should
// clear this bit.
#define USB_CSOL_SENTSTALL_M 0x00000040
#define USB_CSOL_SENTSTALL_S 6
#define USB_CSOL_SENDSTALL 0x00000020 // For bulk/interrupt mode OUT
// endpoints: Software sets this
// bit to issue a STALL handshake.
// Software clears this bit to
// terminate the stall condition.
#define USB_CSOL_SENDSTALL_M 0x00000020
#define USB_CSOL_SENDSTALL_S 5
#define USB_CSOL_FLUSHPACKET 0x00000010 // Software sets this bit to flush
// the next packet to be read from
// the endpoint OUT FIFO. Note: If
// the FIFO contains two packets,
// USB_CSOL.FLUSHPACKET will need
// to be set twice to completely
// clear the FIFO.
#define USB_CSOL_FLUSHPACKET_M 0x00000010
#define USB_CSOL_FLUSHPACKET_S 4
#define USB_CSOL_DATAERROR 0x00000008 // For isochronous mode OUT
// endpoints: This bit is set when
// USB_CSOL.OUTPKTRDY is set if the
// data packet has a CRC or
// bit-stuff error. It is cleared
// automatically when
// USB_CSOL.OUTPKTRDY is cleared.
#define USB_CSOL_DATAERROR_M 0x00000008
#define USB_CSOL_DATAERROR_S 3
#define USB_CSOL_OVERRUN 0x00000004 // For isochronous mode OUT
// endpoints: This bit is set when
// an OUT packet cannot be loaded
// into the OUT endpoint FIFO.
// Firmware should clear this bit.
#define USB_CSOL_OVERRUN_M 0x00000004
#define USB_CSOL_OVERRUN_S 2
#define USB_CSOL_FIFOFULL 0x00000002 // This bit is set when no more
// packets can be loaded into the
// OUT endpoint FIFO.
#define USB_CSOL_FIFOFULL_M 0x00000002
#define USB_CSOL_FIFOFULL_S 1
#define USB_CSOL_OUTPKTRDY 0x00000001 // This bit is set when a data
// packet has been received.
// Software should clear this bit
// when the packet has been
// unloaded from the OUT endpoint
// FIFO. An interrupt is generated
// when the bit is set.
#define USB_CSOL_OUTPKTRDY_M 0x00000001
#define USB_CSOL_OUTPKTRDY_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CSOH register.
//
//*****************************************************************************
#define USB_CSOH_AUTOCLEAR 0x00000080 // If software sets this bit, the
// USB_CSOL.OUTPKTRDY bit will be
// automatically cleared when a
// packet of maximum size
// (specified by USB_MAXO) has been
// unloaded from the OUT FIFO. When
// packets of less than the maximum
// packet size are unloaded,
// USB_CSOL.OUTPKTRDY will have to
// be cleared manually.
#define USB_CSOH_AUTOCLEAR_M 0x00000080
#define USB_CSOH_AUTOCLEAR_S 7
#define USB_CSOH_ISO 0x00000040 // Selects OUT endpoint type: 0:
// Bulk/interrupt 1: Isochronous
#define USB_CSOH_ISO_M 0x00000040
#define USB_CSOH_ISO_S 6
#define USB_CSOH_OUTDBLBUF 0x00000001 // OUT endpoint FIFO
// double-buffering enable: 0:
// Double buffering disabled 1:
// Double buffering enabled
#define USB_CSOH_OUTDBLBUF_M 0x00000001
#define USB_CSOH_OUTDBLBUF_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the
// USB_CNT0_CNTL register.
//
//*****************************************************************************
#define USB_CNT0_CNTL_FIFOCNT_or_FIFOCNTL_M \
0x000000FF // USB_CS0.FIFOCNT (USBINDEX = 0)
// [RO]: Number of bytes received
// in the packet in the endpoint 0
// FIFO Valid only when
// USB_CS0.OUTPKTRDY is set
// USB_CSIL.FIFOCNTL (USBINDEX = 1
// to 5) [RW]: Bits 7:0 of the of
// the number of bytes received in
// the packet in the OUT endpoint
// {1-5} FIFO Valid only when
// USB_CSOL.OUTPKTRDY is set
#define USB_CNT0_CNTL_FIFOCNT_or_FIFOCNTL_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_CNTH register.
//
//*****************************************************************************
#define USB_CNTH_FIFOCNTH_M 0x00000007 // Bits 10:8 of the of the number
// of bytes received in the packet
// in the OUT endpoint {1-5} FIFO
// Valid only when
// USB_CSOL.OUTPKTRDY is set
#define USB_CNTH_FIFOCNTH_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_F0 register.
//
//*****************************************************************************
#define USB_F0_USBF0_M 0x000000FF // Endpoint 0 FIFO Reading this
// register unloads one byte from
// the endpoint 0 FIFO. Writing to
// this register loads one byte
// into the endpoint 0 FIFO. The
// FIFO memory for EP0 is used for
// incoming and outgoing data
// packets.
#define USB_F0_USBF0_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_F1 register.
//
//*****************************************************************************
#define USB_F1_USBF1_M 0x000000FF // Endpoint 1 FIFO register
// Reading this register unloads
// one byte from the EP1 OUT FIFO.
// Writing to this register loads
// one byte into the EP1 IN FIFO.
#define USB_F1_USBF1_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_F2 register.
//
//*****************************************************************************
#define USB_F2_USBF2_M 0x000000FF // Endpoint 2 FIFO register
// Reading this register unloads
// one byte from the EP2 OUT FIFO.
// Writing to this register loads
// one byte into the EP2 IN FIFO.
#define USB_F2_USBF2_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_F3 register.
//
//*****************************************************************************
#define USB_F3_USBF3_M 0x000000FF // Endpoint 3 FIFO register
// Reading this register unloads
// one byte from the EP3 OUT FIFO.
// Writing to this register loads
// one byte into the EP3 IN FIFO.
#define USB_F3_USBF3_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_F4 register.
//
//*****************************************************************************
#define USB_F4_USBF4_M 0x000000FF // Endpoint 4 FIFO register
// Reading this register unloads
// one byte from the EP4 OUT FIFO.
// Writing to this register loads
// one byte into the EP4 IN FIFO.
#define USB_F4_USBF4_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the USB_F5 register.
//
//*****************************************************************************
#define USB_F5_USBF5_M 0x000000FF // Endpoint 5 FIFO register
// Reading this register unloads
// one byte from the EP5 OUT FIFO.
// Writing to this register loads
// one byte into the EP5 IN FIFO.
#define USB_F5_USBF5_S 0
#endif // __HW_USB_H__