-- Configuration options cannot be set via USB. Must use the USB bootloader to
- load a new firmware instead.
- - SCSI ID hardcoded to 0
- - Partity checking is on
- - Unit Attention Condition is off
-
- DMA is not used for SPI transfers
+ - Potential for large performance improvement.
- Parity checking not implemented for the PSoC Datapath implementation
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* API for USBFS Component.\r
+*\r
+* Note:\r
+* Many of the functions use endpoint number. RAM arrays are sized with 9\r
+* elements so they are indexed directly by epNumber. The SIE and ARB\r
+* registers are indexed by variations of epNumber - 1.\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include <CyDmac.h>\r
+#include "USBFS.h"\r
+#include "USBFS_pvt.h"\r
+#include "USBFS_hid.h"\r
+#if(USBFS_DMA1_REMOVE == 0u)\r
+ #include "USBFS_ep1_dma.h"\r
+#endif /* End USBFS_DMA1_REMOVE */\r
+#if(USBFS_DMA2_REMOVE == 0u)\r
+ #include "USBFS_ep2_dma.h"\r
+#endif /* End USBFS_DMA2_REMOVE */\r
+#if(USBFS_DMA3_REMOVE == 0u)\r
+ #include "USBFS_ep3_dma.h"\r
+#endif /* End USBFS_DMA3_REMOVE */\r
+#if(USBFS_DMA4_REMOVE == 0u)\r
+ #include "USBFS_ep4_dma.h"\r
+#endif /* End USBFS_DMA4_REMOVE */\r
+#if(USBFS_DMA5_REMOVE == 0u)\r
+ #include "USBFS_ep5_dma.h"\r
+#endif /* End USBFS_DMA5_REMOVE */\r
+#if(USBFS_DMA6_REMOVE == 0u)\r
+ #include "USBFS_ep6_dma.h"\r
+#endif /* End USBFS_DMA6_REMOVE */\r
+#if(USBFS_DMA7_REMOVE == 0u)\r
+ #include "USBFS_ep7_dma.h"\r
+#endif /* End USBFS_DMA7_REMOVE */\r
+#if(USBFS_DMA8_REMOVE == 0u)\r
+ #include "USBFS_ep8_dma.h"\r
+#endif /* End USBFS_DMA8_REMOVE */\r
+\r
+\r
+/***************************************\r
+* Global data allocation\r
+***************************************/\r
+\r
+uint8 USBFS_initVar = 0u;\r
+#if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ uint8 USBFS_DmaChan[USBFS_MAX_EP];\r
+ uint8 USBFS_DmaTd[USBFS_MAX_EP];\r
+#endif /* End USBFS_EP_MM */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Start\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function initialize the USB SIE, arbiter and the\r
+* endpoint APIs, including setting the D+ Pullup\r
+*\r
+* Parameters:\r
+* device: Contains the device number of the desired device descriptor.\r
+* The device number can be found in the Device Descriptor Tab of\r
+* "Configure" dialog, under the settings of desired Device Descriptor,\r
+* in the "Device Number" field.\r
+* mode: The operating voltage. This determines whether the voltage regulator\r
+* is enabled for 5V operation or if pass through mode is used for 3.3V\r
+* operation. Symbolic names and their associated values are given in the\r
+* following table.\r
+* USBFS_3V_OPERATION - Disable voltage regulator and pass-thru\r
+* Vcc for pull-up\r
+* USBFS_5V_OPERATION - Enable voltage regulator and use\r
+* regulator for pull-up\r
+* USBFS_DWR_VDDD_OPERATION - Enable or Disable voltage\r
+* regulator depend on Vddd Voltage configuration in DWR.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* The USBFS_intiVar variable is used to indicate initial\r
+* configuration of this component. The variable is initialized to zero (0u)\r
+* and set to one (1u) the first time USBFS_Start() is called.\r
+* This allows for component Re-Start without unnecessary re-initialization\r
+* in all subsequent calls to the USBFS_Start() routine.\r
+* If re-initialization of the component is required the variable should be set\r
+* to zero before call of UART_Start() routine, or the user may call\r
+* USBFS_Init() and USBFS_InitComponent() as done\r
+* in the USBFS_Start() routine.\r
+*\r
+* Side Effects:\r
+* This function will reset all communication states to default.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_Start(uint8 device, uint8 mode) \r
+{\r
+ /* If not Initialized then initialize all required hardware and software */\r
+ if(USBFS_initVar == 0u)\r
+ {\r
+ USBFS_Init();\r
+ USBFS_initVar = 1u;\r
+ }\r
+ USBFS_InitComponent(device, mode);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Init\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Initialize component's hardware. Usually called in USBFS_Start().\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_Init(void) \r
+{\r
+ uint8 enableInterrupts;\r
+ #if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ uint16 i;\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ enableInterrupts = CyEnterCriticalSection();\r
+\r
+ /* Enable USB block */\r
+ USBFS_PM_ACT_CFG_REG |= USBFS_PM_ACT_EN_FSUSB;\r
+ /* Enable USB block for Standby Power Mode */\r
+ USBFS_PM_STBY_CFG_REG |= USBFS_PM_STBY_EN_FSUSB;\r
+\r
+ /* Enable core clock */\r
+ USBFS_USB_CLK_EN_REG = USBFS_USB_CLK_ENABLE;\r
+\r
+ USBFS_CR1_REG = USBFS_CR1_ENABLE_LOCK;\r
+\r
+ /* ENABLING USBIO PADS IN USB MODE FROM I/O MODE */\r
+ /* Ensure USB transmit enable is low (USB_USBIO_CR0.ten). - Manual Transmission - Disabled */\r
+ USBFS_USBIO_CR0_REG &= ((uint8)(~USBFS_USBIO_CR0_TEN));\r
+ CyDelayUs(0u); /*~50ns delay */\r
+ /* Disable the USBIO by asserting PM.USB_CR0.fsusbio_pd_n(Inverted)\r
+ * high. This will have been set low by the power manger out of reset.\r
+ * Also confirm USBIO pull-up disabled\r
+ */\r
+ USBFS_PM_USB_CR0_REG &= ((uint8)(~(USBFS_PM_USB_CR0_PD_N |\r
+ USBFS_PM_USB_CR0_PD_PULLUP_N)));\r
+\r
+ /* Select iomode to USB mode*/\r
+ USBFS_USBIO_CR1_REG &= ((uint8)(~USBFS_USBIO_CR1_IOMODE));\r
+\r
+ /* Enable the USBIO reference by setting PM.USB_CR0.fsusbio_ref_en.*/\r
+ USBFS_PM_USB_CR0_REG |= USBFS_PM_USB_CR0_REF_EN;\r
+ /* The reference will be available 1 us after the regulator is enabled */\r
+ CyDelayUs(1u);\r
+ /* OR 40us after power restored */\r
+ CyDelayUs(40u);\r
+ /* Ensure the single ended disable bits are low (PRT15.INP_DIS[7:6])(input receiver enabled). */\r
+ USBFS_DM_INP_DIS_REG &= ((uint8)(~USBFS_DM_MASK));\r
+ USBFS_DP_INP_DIS_REG &= ((uint8)(~USBFS_DP_MASK));\r
+\r
+ /* Enable USBIO */\r
+ USBFS_PM_USB_CR0_REG |= USBFS_PM_USB_CR0_PD_N;\r
+ CyDelayUs(2u);\r
+ /* Set the USBIO pull-up enable */\r
+ USBFS_PM_USB_CR0_REG |= USBFS_PM_USB_CR0_PD_PULLUP_N;\r
+\r
+ /* Write WAx */\r
+ CY_SET_REG8(USBFS_ARB_RW1_WA_PTR, 0u);\r
+ CY_SET_REG8(USBFS_ARB_RW1_WA_MSB_PTR, 0u);\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ /* Init transfer descriptor. This will be used to detect the DMA state - initialized or not. */\r
+ for (i = 0u; i < USBFS_MAX_EP; i++)\r
+ {\r
+ USBFS_DmaTd[i] = DMA_INVALID_TD;\r
+ }\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ CyExitCriticalSection(enableInterrupts);\r
+\r
+\r
+ /* Set the bus reset Interrupt. */\r
+ (void) CyIntSetVector(USBFS_BUS_RESET_VECT_NUM, &USBFS_BUS_RESET_ISR);\r
+ CyIntSetPriority(USBFS_BUS_RESET_VECT_NUM, USBFS_BUS_RESET_PRIOR);\r
+\r
+ /* Set the SOF Interrupt. */\r
+ #if(USBFS_SOF_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_SOF_VECT_NUM, &USBFS_SOF_ISR);\r
+ CyIntSetPriority(USBFS_SOF_VECT_NUM, USBFS_SOF_PRIOR);\r
+ #endif /* End USBFS_SOF_ISR_REMOVE */\r
+\r
+ /* Set the Control Endpoint Interrupt. */\r
+ (void) CyIntSetVector(USBFS_EP_0_VECT_NUM, &USBFS_EP_0_ISR);\r
+ CyIntSetPriority(USBFS_EP_0_VECT_NUM, USBFS_EP_0_PRIOR);\r
+\r
+ /* Set the Data Endpoint 1 Interrupt. */\r
+ #if(USBFS_EP1_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_1_VECT_NUM, &USBFS_EP_1_ISR);\r
+ CyIntSetPriority(USBFS_EP_1_VECT_NUM, USBFS_EP_1_PRIOR);\r
+ #endif /* End USBFS_EP1_ISR_REMOVE */\r
+\r
+ /* Set the Data Endpoint 2 Interrupt. */\r
+ #if(USBFS_EP2_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_2_VECT_NUM, &USBFS_EP_2_ISR);\r
+ CyIntSetPriority(USBFS_EP_2_VECT_NUM, USBFS_EP_2_PRIOR);\r
+ #endif /* End USBFS_EP2_ISR_REMOVE */\r
+\r
+ /* Set the Data Endpoint 3 Interrupt. */\r
+ #if(USBFS_EP3_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_3_VECT_NUM, &USBFS_EP_3_ISR);\r
+ CyIntSetPriority(USBFS_EP_3_VECT_NUM, USBFS_EP_3_PRIOR);\r
+ #endif /* End USBFS_EP3_ISR_REMOVE */\r
+\r
+ /* Set the Data Endpoint 4 Interrupt. */\r
+ #if(USBFS_EP4_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_4_VECT_NUM, &USBFS_EP_4_ISR);\r
+ CyIntSetPriority(USBFS_EP_4_VECT_NUM, USBFS_EP_4_PRIOR);\r
+ #endif /* End USBFS_EP4_ISR_REMOVE */\r
+\r
+ /* Set the Data Endpoint 5 Interrupt. */\r
+ #if(USBFS_EP5_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_5_VECT_NUM, &USBFS_EP_5_ISR);\r
+ CyIntSetPriority(USBFS_EP_5_VECT_NUM, USBFS_EP_5_PRIOR);\r
+ #endif /* End USBFS_EP5_ISR_REMOVE */\r
+\r
+ /* Set the Data Endpoint 6 Interrupt. */\r
+ #if(USBFS_EP6_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_6_VECT_NUM, &USBFS_EP_6_ISR);\r
+ CyIntSetPriority(USBFS_EP_6_VECT_NUM, USBFS_EP_6_PRIOR);\r
+ #endif /* End USBFS_EP6_ISR_REMOVE */\r
+\r
+ /* Set the Data Endpoint 7 Interrupt. */\r
+ #if(USBFS_EP7_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_7_VECT_NUM, &USBFS_EP_7_ISR);\r
+ CyIntSetPriority(USBFS_EP_7_VECT_NUM, USBFS_EP_7_PRIOR);\r
+ #endif /* End USBFS_EP7_ISR_REMOVE */\r
+\r
+ /* Set the Data Endpoint 8 Interrupt. */\r
+ #if(USBFS_EP8_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_EP_8_VECT_NUM, &USBFS_EP_8_ISR);\r
+ CyIntSetPriority(USBFS_EP_8_VECT_NUM, USBFS_EP_8_PRIOR);\r
+ #endif /* End USBFS_EP8_ISR_REMOVE */\r
+\r
+ #if((USBFS_EP_MM != USBFS__EP_MANUAL) && (USBFS_ARB_ISR_REMOVE == 0u))\r
+ /* Set the ARB Interrupt. */\r
+ (void) CyIntSetVector(USBFS_ARB_VECT_NUM, &USBFS_ARB_ISR);\r
+ CyIntSetPriority(USBFS_ARB_VECT_NUM, USBFS_ARB_PRIOR);\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_InitComponent\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Initialize the component, except for the HW which is done one time in\r
+* the Start function. This function pulls up D+.\r
+*\r
+* Parameters:\r
+* device: Contains the device number of the desired device descriptor.\r
+* The device number can be found in the Device Descriptor Tab of\r
+* "Configure" dialog, under the settings of desired Device Descriptor,\r
+* in the "Device Number" field.\r
+* mode: The operating voltage. This determines whether the voltage regulator\r
+* is enabled for 5V operation or if pass through mode is used for 3.3V\r
+* operation. Symbolic names and their associated values are given in the\r
+* following table.\r
+* USBFS_3V_OPERATION - Disable voltage regulator and pass-thru\r
+* Vcc for pull-up\r
+* USBFS_5V_OPERATION - Enable voltage regulator and use\r
+* regulator for pull-up\r
+* USBFS_DWR_VDDD_OPERATION - Enable or Disable voltage\r
+* regulator depend on Vddd Voltage configuration in DWR.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_device: Contains the device number of the desired device\r
+* descriptor. The device number can be found in the Device Descriptor Tab\r
+* of "Configure" dialog, under the settings of desired Device Descriptor,\r
+* in the "Device Number" field.\r
+* USBFS_transferState: This variable used by the communication\r
+* functions to handle current transfer state. Initialized to\r
+* TRANS_STATE_IDLE in this API.\r
+* USBFS_configuration: Contains current configuration number\r
+* which is set by the Host using SET_CONFIGURATION request.\r
+* Initialized to zero in this API.\r
+* USBFS_deviceAddress: Contains current device address. This\r
+* variable is initialized to zero in this API. Host starts to communicate\r
+* to device with address 0 and then set it to whatever value using\r
+* SET_ADDRESS request.\r
+* USBFS_deviceStatus: initialized to 0.\r
+* This is two bit variable which contain power status in first bit\r
+* (DEVICE_STATUS_BUS_POWERED or DEVICE_STATUS_SELF_POWERED) and remote\r
+* wakeup status (DEVICE_STATUS_REMOTE_WAKEUP) in second bit.\r
+* USBFS_lastPacketSize initialized to 0;\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_InitComponent(uint8 device, uint8 mode) \r
+{\r
+ /* Initialize _hidProtocol variable to comply with\r
+ * HID 7.2.6 Set_Protocol Request:\r
+ * "When initialized, all devices default to report protocol."\r
+ */\r
+ #if defined(USBFS_ENABLE_HID_CLASS)\r
+ uint8 i;\r
+\r
+ for (i = 0u; i < USBFS_MAX_INTERFACES_NUMBER; i++)\r
+ {\r
+ USBFS_hidProtocol[i] = USBFS_PROTOCOL_REPORT;\r
+ }\r
+ #endif /* USBFS_ENABLE_HID_CLASS */\r
+\r
+ /* Enable Interrupts. */\r
+ CyIntEnable(USBFS_BUS_RESET_VECT_NUM);\r
+ CyIntEnable(USBFS_EP_0_VECT_NUM);\r
+ #if(USBFS_EP1_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_1_VECT_NUM);\r
+ #endif /* End USBFS_EP1_ISR_REMOVE */\r
+ #if(USBFS_EP2_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_2_VECT_NUM);\r
+ #endif /* End USBFS_EP2_ISR_REMOVE */\r
+ #if(USBFS_EP3_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_3_VECT_NUM);\r
+ #endif /* End USBFS_EP3_ISR_REMOVE */\r
+ #if(USBFS_EP4_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_4_VECT_NUM);\r
+ #endif /* End USBFS_EP4_ISR_REMOVE */\r
+ #if(USBFS_EP5_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_5_VECT_NUM);\r
+ #endif /* End USBFS_EP5_ISR_REMOVE */\r
+ #if(USBFS_EP6_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_6_VECT_NUM);\r
+ #endif /* End USBFS_EP6_ISR_REMOVE */\r
+ #if(USBFS_EP7_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_7_VECT_NUM);\r
+ #endif /* End USBFS_EP7_ISR_REMOVE */\r
+ #if(USBFS_EP8_ISR_REMOVE == 0u)\r
+ CyIntEnable(USBFS_EP_8_VECT_NUM);\r
+ #endif /* End USBFS_EP8_ISR_REMOVE */\r
+ #if((USBFS_EP_MM != USBFS__EP_MANUAL) && (USBFS_ARB_ISR_REMOVE == 0u))\r
+ /* usb arb interrupt enable */\r
+ USBFS_ARB_INT_EN_REG = USBFS_ARB_INT_MASK;\r
+ CyIntEnable(USBFS_ARB_VECT_NUM);\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ /* Arbiter configuration for DMA transfers */\r
+ #if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAMANUAL)\r
+ USBFS_ARB_CFG_REG = USBFS_ARB_CFG_MANUAL_DMA;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAMANUAL */\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ /*Set cfg cmplt this rises DMA request when the full configuration is done */\r
+ USBFS_ARB_CFG_REG = USBFS_ARB_CFG_AUTO_DMA | USBFS_ARB_CFG_AUTO_MEM;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ USBFS_transferState = USBFS_TRANS_STATE_IDLE;\r
+\r
+ /* USB Locking: Enabled, VRegulator: depend on mode or DWR Voltage configuration*/\r
+ switch(mode)\r
+ {\r
+ case USBFS_3V_OPERATION:\r
+ USBFS_CR1_REG = USBFS_CR1_ENABLE_LOCK;\r
+ break;\r
+ case USBFS_5V_OPERATION:\r
+ USBFS_CR1_REG = USBFS_CR1_ENABLE_LOCK | USBFS_CR1_REG_ENABLE;\r
+ break;\r
+ default: /*USBFS_DWR_VDDD_OPERATION */\r
+ #if(USBFS_VDDD_MV < USBFS_3500MV)\r
+ USBFS_CR1_REG = USBFS_CR1_ENABLE_LOCK;\r
+ #else\r
+ USBFS_CR1_REG = USBFS_CR1_ENABLE_LOCK | USBFS_CR1_REG_ENABLE;\r
+ #endif /* End USBFS_VDDD_MV < USBFS_3500MV */\r
+ break;\r
+ }\r
+\r
+ /* Record the descriptor selection */\r
+ USBFS_device = device;\r
+\r
+ /* Clear all of the component data */\r
+ USBFS_configuration = 0u;\r
+ USBFS_interfaceNumber = 0u;\r
+ USBFS_configurationChanged = 0u;\r
+ USBFS_deviceAddress = 0u;\r
+ USBFS_deviceStatus = 0u;\r
+\r
+ USBFS_lastPacketSize = 0u;\r
+\r
+ /* ACK Setup, Stall IN/OUT */\r
+ CY_SET_REG8(USBFS_EP0_CR_PTR, USBFS_MODE_STALL_IN_OUT);\r
+\r
+ /* Enable the SIE with an address 0 */\r
+ CY_SET_REG8(USBFS_CR0_PTR, USBFS_CR0_ENABLE);\r
+\r
+ /* Workaround for PSOC5LP */\r
+ CyDelayCycles(1u);\r
+\r
+ /* Finally, Enable d+ pullup and select iomode to USB mode*/\r
+ CY_SET_REG8(USBFS_USBIO_CR1_PTR, USBFS_USBIO_CR1_USBPUEN);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ReInitComponent\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function reinitialize the component configuration and is\r
+* intend to be called from the Reset interrupt.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_device: Contains the device number of the desired device\r
+* descriptor. The device number can be found in the Device Descriptor Tab\r
+* of "Configure" dialog, under the settings of desired Device Descriptor,\r
+* in the "Device Number" field.\r
+* USBFS_transferState: This variable used by the communication\r
+* functions to handle current transfer state. Initialized to\r
+* TRANS_STATE_IDLE in this API.\r
+* USBFS_configuration: Contains current configuration number\r
+* which is set by the Host using SET_CONFIGURATION request.\r
+* Initialized to zero in this API.\r
+* USBFS_deviceAddress: Contains current device address. This\r
+* variable is initialized to zero in this API. Host starts to communicate\r
+* to device with address 0 and then set it to whatever value using\r
+* SET_ADDRESS request.\r
+* USBFS_deviceStatus: initialized to 0.\r
+* This is two bit variable which contain power status in first bit\r
+* (DEVICE_STATUS_BUS_POWERED or DEVICE_STATUS_SELF_POWERED) and remote\r
+* wakeup status (DEVICE_STATUS_REMOTE_WAKEUP) in second bit.\r
+* USBFS_lastPacketSize initialized to 0;\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_ReInitComponent(void) \r
+{\r
+ /* Initialize _hidProtocol variable to comply with HID 7.2.6 Set_Protocol\r
+ * Request: "When initialized, all devices default to report protocol."\r
+ */\r
+ #if defined(USBFS_ENABLE_HID_CLASS)\r
+ uint8 i;\r
+\r
+ for (i = 0u; i < USBFS_MAX_INTERFACES_NUMBER; i++)\r
+ {\r
+ USBFS_hidProtocol[i] = USBFS_PROTOCOL_REPORT;\r
+ }\r
+ #endif /* USBFS_ENABLE_HID_CLASS */\r
+\r
+ USBFS_transferState = USBFS_TRANS_STATE_IDLE;\r
+\r
+ /* Clear all of the component data */\r
+ USBFS_configuration = 0u;\r
+ USBFS_interfaceNumber = 0u;\r
+ USBFS_configurationChanged = 0u;\r
+ USBFS_deviceAddress = 0u;\r
+ USBFS_deviceStatus = 0u;\r
+\r
+ USBFS_lastPacketSize = 0u;\r
+\r
+\r
+ /* ACK Setup, Stall IN/OUT */\r
+ CY_SET_REG8(USBFS_EP0_CR_PTR, USBFS_MODE_STALL_IN_OUT);\r
+\r
+ /* Enable the SIE with an address 0 */\r
+ CY_SET_REG8(USBFS_CR0_PTR, USBFS_CR0_ENABLE);\r
+\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Stop\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function shuts down the USB function including to release\r
+* the D+ Pullup and disabling the SIE.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_configuration: Contains current configuration number\r
+* which is set by the Host using SET_CONFIGURATION request.\r
+* Initialized to zero in this API.\r
+* USBFS_deviceAddress: Contains current device address. This\r
+* variable is initialized to zero in this API. Host starts to communicate\r
+* to device with address 0 and then set it to whatever value using\r
+* SET_ADDRESS request.\r
+* USBFS_deviceStatus: initialized to 0.\r
+* This is two bit variable which contain power status in first bit\r
+* (DEVICE_STATUS_BUS_POWERED or DEVICE_STATUS_SELF_POWERED) and remote\r
+* wakeup status (DEVICE_STATUS_REMOTE_WAKEUP) in second bit.\r
+* USBFS_configurationChanged: This variable is set to one after\r
+* SET_CONFIGURATION request and cleared in this function.\r
+* USBFS_intiVar variable is set to zero\r
+*\r
+*******************************************************************************/\r
+void USBFS_Stop(void) \r
+{\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ USBFS_Stop_DMA(USBFS_MAX_EP); /* Stop all DMAs */\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ /* Disable the SIE */\r
+ USBFS_CR0_REG &= (uint8)(~USBFS_CR0_ENABLE);\r
+ /* Disable the d+ pullup */\r
+ USBFS_USBIO_CR1_REG &= (uint8)(~USBFS_USBIO_CR1_USBPUEN);\r
+ /* Disable USB in ACT PM */\r
+ USBFS_PM_ACT_CFG_REG &= (uint8)(~USBFS_PM_ACT_EN_FSUSB);\r
+ /* Disable USB block for Standby Power Mode */\r
+ USBFS_PM_STBY_CFG_REG &= (uint8)(~USBFS_PM_STBY_EN_FSUSB);\r
+\r
+ /* Disable the reset and EP interrupts */\r
+ CyIntDisable(USBFS_BUS_RESET_VECT_NUM);\r
+ CyIntDisable(USBFS_EP_0_VECT_NUM);\r
+ #if(USBFS_EP1_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_1_VECT_NUM);\r
+ #endif /* End USBFS_EP1_ISR_REMOVE */\r
+ #if(USBFS_EP2_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_2_VECT_NUM);\r
+ #endif /* End USBFS_EP2_ISR_REMOVE */\r
+ #if(USBFS_EP3_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_3_VECT_NUM);\r
+ #endif /* End USBFS_EP3_ISR_REMOVE */\r
+ #if(USBFS_EP4_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_4_VECT_NUM);\r
+ #endif /* End USBFS_EP4_ISR_REMOVE */\r
+ #if(USBFS_EP5_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_5_VECT_NUM);\r
+ #endif /* End USBFS_EP5_ISR_REMOVE */\r
+ #if(USBFS_EP6_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_6_VECT_NUM);\r
+ #endif /* End USBFS_EP6_ISR_REMOVE */\r
+ #if(USBFS_EP7_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_7_VECT_NUM);\r
+ #endif /* End USBFS_EP7_ISR_REMOVE */\r
+ #if(USBFS_EP8_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_EP_8_VECT_NUM);\r
+ #endif /* End USBFS_EP8_ISR_REMOVE */\r
+\r
+ /* Clear all of the component data */\r
+ USBFS_configuration = 0u;\r
+ USBFS_interfaceNumber = 0u;\r
+ USBFS_configurationChanged = 0u;\r
+ USBFS_deviceAddress = 0u;\r
+ USBFS_deviceStatus = 0u;\r
+ USBFS_initVar = 0u;\r
+\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_CheckActivity\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returns the activity status of the bus. Clears the status hardware to\r
+* provide fresh activity status on the next call of this routine.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* 1 - If bus activity was detected since the last call to this function\r
+* 0 - If bus activity not was detected since the last call to this function\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_CheckActivity(void) \r
+{\r
+ uint8 r;\r
+\r
+ r = CY_GET_REG8(USBFS_CR1_PTR);\r
+ CY_SET_REG8(USBFS_CR1_PTR, (r & ((uint8)(~USBFS_CR1_BUS_ACTIVITY))));\r
+\r
+ return((r & USBFS_CR1_BUS_ACTIVITY) >> USBFS_CR1_BUS_ACTIVITY_SHIFT);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetConfiguration\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returns the current configuration setting\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* configuration.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_GetConfiguration(void) \r
+{\r
+ return(USBFS_configuration);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_IsConfigurationChanged\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returns the clear on read configuration state. It is usefull when PC send\r
+* double SET_CONFIGURATION request with same configuration number.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* Not zero value when new configuration has been changed, otherwise zero is\r
+* returned.\r
+*\r
+* Global variables:\r
+* USBFS_configurationChanged: This variable is set to one after\r
+* SET_CONFIGURATION request and cleared in this function.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_IsConfigurationChanged(void) \r
+{\r
+ uint8 res = 0u;\r
+\r
+ if(USBFS_configurationChanged != 0u)\r
+ {\r
+ res = USBFS_configurationChanged;\r
+ USBFS_configurationChanged = 0u;\r
+ }\r
+\r
+ return(res);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetInterfaceSetting\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returns the alternate setting from current interface\r
+*\r
+* Parameters:\r
+* uint8 interfaceNumber, interface number\r
+*\r
+* Return:\r
+* Alternate setting.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_GetInterfaceSetting(uint8 interfaceNumber)\r
+ \r
+{\r
+ return(USBFS_interfaceSetting[interfaceNumber]);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetEPState\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returned the state of the requested endpoint.\r
+*\r
+* Parameters:\r
+* epNumber: Endpoint Number\r
+*\r
+* Return:\r
+* State of the requested endpoint.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_GetEPState(uint8 epNumber) \r
+{\r
+ return(USBFS_EP[epNumber].apiEpState);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetEPCount\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function supports Data Endpoints only(EP1-EP8).\r
+* Returns the transfer count for the requested endpoint. The value from\r
+* the count registers includes 2 counts for the two byte checksum of the\r
+* packet. This function subtracts the two counts.\r
+*\r
+* Parameters:\r
+* epNumber: Data Endpoint Number.\r
+* Valid values are between 1 and 8.\r
+*\r
+* Return:\r
+* Returns the current byte count from the specified endpoint or 0 for an\r
+* invalid endpoint.\r
+*\r
+*******************************************************************************/\r
+uint16 USBFS_GetEPCount(uint8 epNumber) \r
+{\r
+ uint8 ri;\r
+ uint16 result = 0u;\r
+\r
+ if((epNumber > USBFS_EP0) && (epNumber < USBFS_MAX_EP))\r
+ {\r
+ ri = ((epNumber - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+\r
+ result = (uint8)(CY_GET_REG8((reg8 *)(USBFS_SIE_EP1_CNT0_IND + ri)) &\r
+ USBFS_EPX_CNT0_MASK);\r
+ result = (result << 8u) | CY_GET_REG8((reg8 *)(USBFS_SIE_EP1_CNT1_IND + ri));\r
+ result -= USBFS_EPX_CNTX_CRC_COUNT;\r
+ }\r
+ return(result);\r
+}\r
+\r
+\r
+#if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_InitEP_DMA\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * This function allocates and initializes a DMA channel to be used by the\r
+ * USBFS_LoadInEP() or USBFS_ReadOutEP() APIs for data\r
+ * transfer.\r
+ *\r
+ * Parameters:\r
+ * epNumber: Contains the data endpoint number.\r
+ * Valid values are between 1 and 8.\r
+ * *pData: Pointer to a data array that is related to the EP transfers.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_InitEP_DMA(uint8 epNumber, const uint8 *pData)\r
+ \r
+ {\r
+ uint16 src;\r
+ uint16 dst;\r
+ #if (CY_PSOC3) /* PSoC 3 */\r
+ src = HI16(CYDEV_SRAM_BASE);\r
+ dst = HI16(CYDEV_PERIPH_BASE);\r
+ pData = pData;\r
+ #else /* PSoC 5 */\r
+ if((USBFS_EP[epNumber].addr & USBFS_DIR_IN) != 0u )\r
+ { /* for the IN EP source is the SRAM memory buffer */\r
+ src = HI16(pData);\r
+ dst = HI16(CYDEV_PERIPH_BASE);\r
+ }\r
+ else\r
+ { /* for the OUT EP source is the SIE register */\r
+ src = HI16(CYDEV_PERIPH_BASE);\r
+ dst = HI16(pData);\r
+ }\r
+ #endif /* End C51 */\r
+ switch(epNumber)\r
+ {\r
+ case USBFS_EP1:\r
+ #if(USBFS_DMA1_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep1_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA1_REMOVE */\r
+ break;\r
+ case USBFS_EP2:\r
+ #if(USBFS_DMA2_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep2_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA2_REMOVE */\r
+ break;\r
+ case USBFS_EP3:\r
+ #if(USBFS_DMA3_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep3_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA3_REMOVE */\r
+ break;\r
+ case USBFS_EP4:\r
+ #if(USBFS_DMA4_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep4_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA4_REMOVE */\r
+ break;\r
+ case USBFS_EP5:\r
+ #if(USBFS_DMA5_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep5_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA5_REMOVE */\r
+ break;\r
+ case USBFS_EP6:\r
+ #if(USBFS_DMA6_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep6_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA6_REMOVE */\r
+ break;\r
+ case USBFS_EP7:\r
+ #if(USBFS_DMA7_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep7_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA7_REMOVE */\r
+ break;\r
+ case USBFS_EP8:\r
+ #if(USBFS_DMA8_REMOVE == 0u)\r
+ USBFS_DmaChan[epNumber] = USBFS_ep8_DmaInitialize(\r
+ USBFS_DMA_BYTES_PER_BURST, USBFS_DMA_REQUEST_PER_BURST, src, dst);\r
+ #endif /* End USBFS_DMA8_REMOVE */\r
+ break;\r
+ default:\r
+ /* Do not support EP0 DMA transfers */\r
+ break;\r
+ }\r
+ if((epNumber > USBFS_EP0) && (epNumber < USBFS_MAX_EP))\r
+ {\r
+ USBFS_DmaTd[epNumber] = CyDmaTdAllocate();\r
+ }\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_Stop_DMA\r
+ ********************************************************************************\r
+ *\r
+ * Summary: Stops and free DMA\r
+ *\r
+ * Parameters:\r
+ * epNumber: Contains the data endpoint number or\r
+ * USBFS_MAX_EP to stop all DMAs\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_Stop_DMA(uint8 epNumber) \r
+ {\r
+ uint8 i;\r
+ i = (epNumber < USBFS_MAX_EP) ? epNumber : USBFS_EP1;\r
+ do\r
+ {\r
+ if(USBFS_DmaTd[i] != DMA_INVALID_TD)\r
+ {\r
+ (void) CyDmaChDisable(USBFS_DmaChan[i]);\r
+ CyDmaTdFree(USBFS_DmaTd[i]);\r
+ USBFS_DmaTd[i] = DMA_INVALID_TD;\r
+ }\r
+ i++;\r
+ }while((i < USBFS_MAX_EP) && (epNumber == USBFS_MAX_EP));\r
+ }\r
+\r
+#endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_LoadInEP\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Loads and enables the specified USB data endpoint for an IN interrupt or bulk\r
+* transfer.\r
+*\r
+* Parameters:\r
+* epNumber: Contains the data endpoint number.\r
+* Valid values are between 1 and 8.\r
+* *pData: A pointer to a data array from which the data for the endpoint space\r
+* is loaded.\r
+* length: The number of bytes to transfer from the array and then send as a\r
+* result of an IN request. Valid values are between 0 and 512.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_LoadInEP(uint8 epNumber, const uint8 pData[], uint16 length)\r
+ \r
+{\r
+ uint8 ri;\r
+ reg8 *p;\r
+ #if(USBFS_EP_MM == USBFS__EP_MANUAL)\r
+ uint16 i;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_MANUAL */\r
+\r
+ if((epNumber > USBFS_EP0) && (epNumber < USBFS_MAX_EP))\r
+ {\r
+ ri = ((epNumber - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+ p = (reg8 *)(USBFS_ARB_RW1_DR_IND + ri);\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ /* Limits length to available buffer space, auto MM could send packets up to 1024 bytes */\r
+ if(length > (USBFS_EPX_DATA_BUF_MAX - USBFS_EP[epNumber].buffOffset))\r
+ {\r
+ length = USBFS_EPX_DATA_BUF_MAX - USBFS_EP[epNumber].buffOffset;\r
+ }\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+\r
+ /* Set the count and data toggle */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CNT0_IND + ri),\r
+ (length >> 8u) | (USBFS_EP[epNumber].epToggle));\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CNT1_IND + ri), length & 0xFFu);\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_MANUAL)\r
+ if(pData != NULL)\r
+ {\r
+ /* Copy the data using the arbiter data register */\r
+ for (i = 0u; i < length; i++)\r
+ {\r
+ CY_SET_REG8(p, pData[i]);\r
+ }\r
+ }\r
+ USBFS_EP[epNumber].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ /* Write the Mode register */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_EP[epNumber].epMode);\r
+ #else\r
+ /* Init DMA if it was not initialized */\r
+ if(USBFS_DmaTd[epNumber] == DMA_INVALID_TD)\r
+ {\r
+ USBFS_InitEP_DMA(epNumber, pData);\r
+ }\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_MANUAL */\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAMANUAL)\r
+ USBFS_EP[epNumber].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ if((pData != NULL) && (length > 0u))\r
+ {\r
+ /* Enable DMA in mode2 for transferring data */\r
+ (void) CyDmaChDisable(USBFS_DmaChan[epNumber]);\r
+ (void) CyDmaTdSetConfiguration(USBFS_DmaTd[epNumber], length, CY_DMA_DISABLE_TD,\r
+ TD_TERMIN_EN | TD_INC_SRC_ADR);\r
+ (void) CyDmaTdSetAddress(USBFS_DmaTd[epNumber], LO16((uint32)pData), LO16((uint32)p));\r
+ /* Enable the DMA */\r
+ (void) CyDmaChSetInitialTd(USBFS_DmaChan[epNumber], USBFS_DmaTd[epNumber]);\r
+ (void) CyDmaChEnable(USBFS_DmaChan[epNumber], 1u);\r
+ /* Generate DMA request */\r
+ * (reg8 *)(USBFS_ARB_EP1_CFG_IND + ri) |= USBFS_ARB_EPX_CFG_DMA_REQ;\r
+ * (reg8 *)(USBFS_ARB_EP1_CFG_IND + ri) &= ((uint8)(~USBFS_ARB_EPX_CFG_DMA_REQ));\r
+ /* Mode register will be written in arb ISR after DMA transfer complete */\r
+ }\r
+ else\r
+ {\r
+ /* When zero-length packet - write the Mode register directly */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_EP[epNumber].epMode);\r
+ }\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAMANUAL */\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ if(pData != NULL)\r
+ {\r
+ /* Enable DMA in mode3 for transferring data */\r
+ (void) CyDmaChDisable(USBFS_DmaChan[epNumber]);\r
+ (void) CyDmaTdSetConfiguration(USBFS_DmaTd[epNumber], length,\r
+ USBFS_DmaTd[epNumber], TD_TERMIN_EN | TD_INC_SRC_ADR);\r
+ (void) CyDmaTdSetAddress(USBFS_DmaTd[epNumber], LO16((uint32)pData), LO16((uint32)p));\r
+ /* Clear Any potential pending DMA requests before starting the DMA channel to transfer data */\r
+ (void) CyDmaClearPendingDrq(USBFS_DmaChan[epNumber]);\r
+ /* Enable the DMA */\r
+ (void) CyDmaChSetInitialTd(USBFS_DmaChan[epNumber], USBFS_DmaTd[epNumber]);\r
+ (void) CyDmaChEnable(USBFS_DmaChan[epNumber], 1u);\r
+ }\r
+ else\r
+ {\r
+ USBFS_EP[epNumber].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ if(length > 0u)\r
+ {\r
+ /* Set Data ready status, This will generate DMA request */\r
+ * (reg8 *)(USBFS_ARB_EP1_CFG_IND + ri) |= USBFS_ARB_EPX_CFG_IN_DATA_RDY;\r
+ /* Mode register will be written in arb ISR(In Buffer Full) after first DMA transfer complete */\r
+ }\r
+ else\r
+ {\r
+ /* When zero-length packet - write the Mode register directly */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_EP[epNumber].epMode);\r
+ }\r
+ }\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ReadOutEP\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Read data from an endpoint. The application must call\r
+* USBFS_GetEPState to see if an event is pending.\r
+*\r
+* Parameters:\r
+* epNumber: Contains the data endpoint number.\r
+* Valid values are between 1 and 8.\r
+* pData: A pointer to a data array from which the data for the endpoint space\r
+* is loaded.\r
+* length: The number of bytes to transfer from the USB Out endpoint and loads\r
+* it into data array. Valid values are between 0 and 1023. The function\r
+* moves fewer than the requested number of bytes if the host sends\r
+* fewer bytes than requested.\r
+*\r
+* Returns:\r
+* Number of bytes received, 0 for an invalid endpoint.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint16 USBFS_ReadOutEP(uint8 epNumber, uint8 pData[], uint16 length)\r
+ \r
+{\r
+ uint8 ri;\r
+ reg8 *p;\r
+ #if(USBFS_EP_MM == USBFS__EP_MANUAL)\r
+ uint16 i;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_MANUAL */\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ uint16 xferCount;\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+\r
+ if((epNumber > USBFS_EP0) && (epNumber < USBFS_MAX_EP) && (pData != NULL))\r
+ {\r
+ ri = ((epNumber - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+ p = (reg8 *)(USBFS_ARB_RW1_DR_IND + ri);\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ /* Determine which is smaller the requested data or the available data */\r
+ xferCount = USBFS_GetEPCount(epNumber);\r
+ if (length > xferCount)\r
+ {\r
+ length = xferCount;\r
+ }\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_MANUAL)\r
+ /* Copy the data using the arbiter data register */\r
+ for (i = 0u; i < length; i++)\r
+ {\r
+ pData[i] = CY_GET_REG8(p);\r
+ }\r
+\r
+ /* (re)arming of OUT endpoint */\r
+ USBFS_EnableOutEP(epNumber);\r
+ #else\r
+ /*Init DMA if it was not initialized */\r
+ if(USBFS_DmaTd[epNumber] == DMA_INVALID_TD)\r
+ {\r
+ USBFS_InitEP_DMA(epNumber, pData);\r
+ }\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_MANUAL */\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAMANUAL)\r
+ /* Enable DMA in mode2 for transferring data */\r
+ (void) CyDmaChDisable(USBFS_DmaChan[epNumber]);\r
+ (void) CyDmaTdSetConfiguration(USBFS_DmaTd[epNumber], length, CY_DMA_DISABLE_TD,\r
+ TD_TERMIN_EN | TD_INC_DST_ADR);\r
+ (void) CyDmaTdSetAddress(USBFS_DmaTd[epNumber], LO16((uint32)p), LO16((uint32)pData));\r
+ /* Enable the DMA */\r
+ (void) CyDmaChSetInitialTd(USBFS_DmaChan[epNumber], USBFS_DmaTd[epNumber]);\r
+ (void) CyDmaChEnable(USBFS_DmaChan[epNumber], 1u);\r
+\r
+ /* Generate DMA request */\r
+ * (reg8 *)(USBFS_ARB_EP1_CFG_IND + ri) |= USBFS_ARB_EPX_CFG_DMA_REQ;\r
+ * (reg8 *)(USBFS_ARB_EP1_CFG_IND + ri) &= ((uint8)(~USBFS_ARB_EPX_CFG_DMA_REQ));\r
+ /* Out EP will be (re)armed in arb ISR after transfer complete */\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAMANUAL */\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ /* Enable DMA in mode3 for transferring data */\r
+ (void) CyDmaChDisable(USBFS_DmaChan[epNumber]);\r
+ (void) CyDmaTdSetConfiguration(USBFS_DmaTd[epNumber], length, USBFS_DmaTd[epNumber],\r
+ TD_TERMIN_EN | TD_INC_DST_ADR);\r
+ (void) CyDmaTdSetAddress(USBFS_DmaTd[epNumber], LO16((uint32)p), LO16((uint32)pData));\r
+\r
+ /* Clear Any potential pending DMA requests before starting the DMA channel to transfer data */\r
+ (void) CyDmaClearPendingDrq(USBFS_DmaChan[epNumber]);\r
+ /* Enable the DMA */\r
+ (void) CyDmaChSetInitialTd(USBFS_DmaChan[epNumber], USBFS_DmaTd[epNumber]);\r
+ (void) CyDmaChEnable(USBFS_DmaChan[epNumber], 1u);\r
+ /* Out EP will be (re)armed in arb ISR after transfer complete */\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+\r
+ }\r
+ else\r
+ {\r
+ length = 0u;\r
+ }\r
+\r
+ return(length);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_EnableOutEP\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function enables an OUT endpoint. It should not be\r
+* called for an IN endpoint.\r
+*\r
+* Parameters:\r
+* epNumber: Endpoint Number\r
+* Valid values are between 1 and 8.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_EP[epNumber].apiEpState - set to NO_EVENT_PENDING\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_EnableOutEP(uint8 epNumber) \r
+{\r
+ uint8 ri;\r
+\r
+ if((epNumber > USBFS_EP0) && (epNumber < USBFS_MAX_EP))\r
+ {\r
+ ri = ((epNumber - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+ USBFS_EP[epNumber].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ /* Write the Mode register */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_EP[epNumber].epMode);\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_DisableOutEP\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function disables an OUT endpoint. It should not be\r
+* called for an IN endpoint.\r
+*\r
+* Parameters:\r
+* epNumber: Endpoint Number\r
+* Valid values are between 1 and 8.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+*******************************************************************************/\r
+void USBFS_DisableOutEP(uint8 epNumber) \r
+{\r
+ uint8 ri ;\r
+\r
+ if((epNumber > USBFS_EP0) && (epNumber < USBFS_MAX_EP))\r
+ {\r
+ ri = ((epNumber - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+ /* Write the Mode register */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_NAK_OUT);\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Force\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Forces the bus state\r
+*\r
+* Parameters:\r
+* bState\r
+* USBFS_FORCE_J\r
+* USBFS_FORCE_K\r
+* USBFS_FORCE_SE0\r
+* USBFS_FORCE_NONE\r
+*\r
+* Return:\r
+* None.\r
+*\r
+*******************************************************************************/\r
+void USBFS_Force(uint8 bState) \r
+{\r
+ CY_SET_REG8(USBFS_USBIO_CR0_PTR, bState);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetEPAckState\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returns the ACK of the CR0 Register (ACKD)\r
+*\r
+* Parameters:\r
+* epNumber: Endpoint Number\r
+* Valid values are between 1 and 8.\r
+*\r
+* Returns\r
+* 0 if nothing has been ACKD, non-=zero something has been ACKD\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_GetEPAckState(uint8 epNumber) \r
+{\r
+ uint8 ri;\r
+ uint8 cr = 0u;\r
+\r
+ if((epNumber > USBFS_EP0) && (epNumber < USBFS_MAX_EP))\r
+ {\r
+ ri = ((epNumber - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+ cr = CY_GET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri)) & USBFS_MODE_ACKD;\r
+ }\r
+\r
+ return(cr);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_SetPowerStatus\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Sets the device power status for reporting in the Get Device Status\r
+* request\r
+*\r
+* Parameters:\r
+* powerStatus: USBFS_DEVICE_STATUS_BUS_POWERED(0) - Bus Powered,\r
+* USBFS_DEVICE_STATUS_SELF_POWERED(1) - Self Powered\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_deviceStatus - set power status\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_SetPowerStatus(uint8 powerStatus) \r
+{\r
+ if (powerStatus != USBFS_DEVICE_STATUS_BUS_POWERED)\r
+ {\r
+ USBFS_deviceStatus |= USBFS_DEVICE_STATUS_SELF_POWERED;\r
+ }\r
+ else\r
+ {\r
+ USBFS_deviceStatus &= ((uint8)(~USBFS_DEVICE_STATUS_SELF_POWERED));\r
+ }\r
+}\r
+\r
+\r
+#if (USBFS_MON_VBUS == 1u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_VBusPresent\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Determines VBUS presence for Self Powered Devices.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * 1 if VBUS is present, otherwise 0.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_VBusPresent(void) \r
+ {\r
+ return((0u != (CY_GET_REG8(USBFS_VBUS_PS_PTR) & USBFS_VBUS_MASK)) ? 1u : 0u);\r
+ }\r
+\r
+#endif /* USBFS_MON_VBUS */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_RWUEnabled\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returns TRUE if Remote Wake Up is enabled, otherwise FALSE\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* TRUE - Remote Wake Up Enabled\r
+* FALSE - Remote Wake Up Disabled\r
+*\r
+* Global variables:\r
+* USBFS_deviceStatus - checked to determine remote status\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_RWUEnabled(void) \r
+{\r
+ uint8 result = USBFS_FALSE;\r
+ if((USBFS_deviceStatus & USBFS_DEVICE_STATUS_REMOTE_WAKEUP) != 0u)\r
+ {\r
+ result = USBFS_TRUE;\r
+ }\r
+\r
+ return(result);\r
+}\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS.h\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Header File for the USFS component. Contains prototypes and constant values.\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_USBFS_USBFS_H)\r
+#define CY_USBFS_USBFS_H\r
+\r
+#include "cytypes.h"\r
+#include "cydevice_trm.h"\r
+#include "cyfitter.h"\r
+#include "CyLib.h"\r
+\r
+\r
+/***************************************\r
+* Conditional Compilation Parameters\r
+***************************************/\r
+\r
+/* Check to see if required defines such as CY_PSOC5LP are available */\r
+/* They are defined starting with cy_boot v3.0 */\r
+#if !defined (CY_PSOC5LP)\r
+ #error Component USBFS_v2_60 requires cy_boot v3.0 or later\r
+#endif /* (CY_PSOC5LP) */\r
+\r
+\r
+/***************************************\r
+* Memory Type Definitions\r
+***************************************/\r
+\r
+/* Renamed Type Definitions for backward compatibility.\r
+* Should not be used in new designs.\r
+*/\r
+#define USBFS_CODE CYCODE\r
+#define USBFS_FAR CYFAR\r
+#if defined(__C51__) || defined(__CX51__)\r
+ #define USBFS_DATA data\r
+ #define USBFS_XDATA xdata\r
+#else\r
+ #define USBFS_DATA\r
+ #define USBFS_XDATA\r
+#endif /* End __C51__ */\r
+#define USBFS_NULL NULL\r
+\r
+\r
+/***************************************\r
+* Enumerated Types and Parameters\r
+***************************************/\r
+\r
+#define USBFS__EP_MANUAL 0\r
+#define USBFS__EP_DMAMANUAL 1\r
+#define USBFS__EP_DMAAUTO 2\r
+\r
+#define USBFS__MA_STATIC 0\r
+#define USBFS__MA_DYNAMIC 1\r
+\r
+\r
+\r
+/***************************************\r
+* Initial Parameter Constants\r
+***************************************/\r
+\r
+#define USBFS_NUM_DEVICES (1u)\r
+#define USBFS_ENABLE_DESCRIPTOR_STRINGS \r
+#define USBFS_ENABLE_SN_STRING \r
+#define USBFS_ENABLE_STRINGS \r
+#define USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_BUF_SIZE (65u)\r
+#define USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_NUM_IN_RPTS (1u)\r
+#define USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_BUF_SIZE (65u)\r
+#define USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_NUM_OUT_RPTS (1u)\r
+#define USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_COUNT (1u)\r
+#define USBFS_ENABLE_HID_CLASS \r
+#define USBFS_HID_RPT_1_SIZE_LSB (0x24u)\r
+#define USBFS_HID_RPT_1_SIZE_MSB (0x00u)\r
+#define USBFS_MAX_REPORTID_NUMBER (0u)\r
+\r
+#define USBFS_MON_VBUS (0u)\r
+#define USBFS_EXTERN_VBUS (0u)\r
+#define USBFS_EXTERN_VND (0u)\r
+#define USBFS_EXTERN_CLS (0u)\r
+#define USBFS_MAX_INTERFACES_NUMBER (1u)\r
+#define USBFS_EP0_ISR_REMOVE (0u)\r
+#define USBFS_EP1_ISR_REMOVE (0u)\r
+#define USBFS_EP2_ISR_REMOVE (0u)\r
+#define USBFS_EP3_ISR_REMOVE (1u)\r
+#define USBFS_EP4_ISR_REMOVE (1u)\r
+#define USBFS_EP5_ISR_REMOVE (1u)\r
+#define USBFS_EP6_ISR_REMOVE (1u)\r
+#define USBFS_EP7_ISR_REMOVE (1u)\r
+#define USBFS_EP8_ISR_REMOVE (1u)\r
+#define USBFS_EP_MM (0u)\r
+#define USBFS_EP_MA (0u)\r
+#define USBFS_DMA1_REMOVE (1u)\r
+#define USBFS_DMA2_REMOVE (1u)\r
+#define USBFS_DMA3_REMOVE (1u)\r
+#define USBFS_DMA4_REMOVE (1u)\r
+#define USBFS_DMA5_REMOVE (1u)\r
+#define USBFS_DMA6_REMOVE (1u)\r
+#define USBFS_DMA7_REMOVE (1u)\r
+#define USBFS_DMA8_REMOVE (1u)\r
+#define USBFS_SOF_ISR_REMOVE (0u)\r
+#define USBFS_ARB_ISR_REMOVE (0u)\r
+#define USBFS_DP_ISR_REMOVE (0u)\r
+#define USBFS_ENABLE_CDC_CLASS_API (1u)\r
+#define USBFS_ENABLE_MIDI_API (1u)\r
+#define USBFS_MIDI_EXT_MODE (0u)\r
+\r
+\r
+/***************************************\r
+* Data Struct Definition\r
+***************************************/\r
+\r
+typedef struct\r
+{\r
+ uint8 attrib;\r
+ uint8 apiEpState;\r
+ uint8 hwEpState;\r
+ uint8 epToggle;\r
+ uint8 addr;\r
+ uint8 epMode;\r
+ uint16 buffOffset;\r
+ uint16 bufferSize;\r
+ uint8 interface;\r
+} T_USBFS_EP_CTL_BLOCK;\r
+\r
+typedef struct\r
+{\r
+ uint8 interface;\r
+ uint8 altSetting;\r
+ uint8 addr;\r
+ uint8 attributes;\r
+ uint16 bufferSize;\r
+ uint8 bMisc;\r
+} T_USBFS_EP_SETTINGS_BLOCK;\r
+\r
+typedef struct\r
+{\r
+ uint8 status;\r
+ uint16 length;\r
+} T_USBFS_XFER_STATUS_BLOCK;\r
+\r
+typedef struct\r
+{\r
+ uint16 count;\r
+ volatile uint8 *pData;\r
+ T_USBFS_XFER_STATUS_BLOCK *pStatusBlock;\r
+} T_USBFS_TD;\r
+\r
+\r
+typedef struct\r
+{\r
+ uint8 c;\r
+ const void *p_list;\r
+} T_USBFS_LUT;\r
+\r
+/* Resume/Suspend API Support */\r
+typedef struct\r
+{\r
+ uint8 enableState;\r
+ uint8 mode;\r
+} USBFS_BACKUP_STRUCT;\r
+\r
+\r
+/* Renamed structure fields for backward compatibility.\r
+* Should not be used in new designs.\r
+*/\r
+#define wBuffOffset buffOffset\r
+#define wBufferSize bufferSize\r
+#define bStatus status\r
+#define wLength length\r
+#define wCount count\r
+\r
+/* Renamed global variable for backward compatibility.\r
+* Should not be used in new designs.\r
+*/\r
+#define CurrentTD USBFS_currentTD\r
+\r
+\r
+/***************************************\r
+* Function Prototypes\r
+***************************************/\r
+\r
+void USBFS_Start(uint8 device, uint8 mode) ;\r
+void USBFS_Init(void) ;\r
+void USBFS_InitComponent(uint8 device, uint8 mode) ;\r
+void USBFS_Stop(void) ;\r
+uint8 USBFS_CheckActivity(void) ;\r
+uint8 USBFS_GetConfiguration(void) ;\r
+uint8 USBFS_IsConfigurationChanged(void) ;\r
+uint8 USBFS_GetInterfaceSetting(uint8 interfaceNumber)\r
+ ;\r
+uint8 USBFS_GetEPState(uint8 epNumber) ;\r
+uint16 USBFS_GetEPCount(uint8 epNumber) ;\r
+void USBFS_LoadInEP(uint8 epNumber, const uint8 pData[], uint16 length)\r
+ ;\r
+uint16 USBFS_ReadOutEP(uint8 epNumber, uint8 pData[], uint16 length)\r
+ ;\r
+void USBFS_EnableOutEP(uint8 epNumber) ;\r
+void USBFS_DisableOutEP(uint8 epNumber) ;\r
+void USBFS_Force(uint8 bState) ;\r
+uint8 USBFS_GetEPAckState(uint8 epNumber) ;\r
+void USBFS_SetPowerStatus(uint8 powerStatus) ;\r
+uint8 USBFS_RWUEnabled(void) ;\r
+void USBFS_TerminateEP(uint8 ep) ;\r
+\r
+void USBFS_Suspend(void) ;\r
+void USBFS_Resume(void) ;\r
+\r
+#if defined(USBFS_ENABLE_FWSN_STRING)\r
+ void USBFS_SerialNumString(uint8 snString[]) ;\r
+#endif /* USBFS_ENABLE_FWSN_STRING */\r
+#if (USBFS_MON_VBUS == 1u)\r
+ uint8 USBFS_VBusPresent(void) ;\r
+#endif /* End USBFS_MON_VBUS */\r
+\r
+#if defined(CYDEV_BOOTLOADER_IO_COMP) && ((CYDEV_BOOTLOADER_IO_COMP == CyBtldr_USBFS) || \\r
+ (CYDEV_BOOTLOADER_IO_COMP == CyBtldr_Custom_Interface))\r
+\r
+ void USBFS_CyBtldrCommStart(void) ;\r
+ void USBFS_CyBtldrCommStop(void) ;\r
+ void USBFS_CyBtldrCommReset(void) ;\r
+ cystatus USBFS_CyBtldrCommWrite(uint8 *pData, uint16 size, uint16 *count, uint8 timeOut) CYSMALL\r
+ ;\r
+ cystatus USBFS_CyBtldrCommRead( uint8 *pData, uint16 size, uint16 *count, uint8 timeOut) CYSMALL\r
+ ;\r
+\r
+ #define USBFS_BTLDR_SIZEOF_WRITE_BUFFER (64u) /* EP 1 OUT */\r
+ #define USBFS_BTLDR_SIZEOF_READ_BUFFER (64u) /* EP 2 IN */\r
+ #define USBFS_BTLDR_MAX_PACKET_SIZE USBFS_BTLDR_SIZEOF_WRITE_BUFFER\r
+\r
+ /* These defines active if used USBFS interface as an\r
+ * IO Component for bootloading. When Custom_Interface selected\r
+ * in Bootloder configuration as the IO Component, user must\r
+ * provide these functions\r
+ */\r
+ #if (CYDEV_BOOTLOADER_IO_COMP == CyBtldr_USBFS)\r
+ #define CyBtldrCommStart USBFS_CyBtldrCommStart\r
+ #define CyBtldrCommStop USBFS_CyBtldrCommStop\r
+ #define CyBtldrCommReset USBFS_CyBtldrCommReset\r
+ #define CyBtldrCommWrite USBFS_CyBtldrCommWrite\r
+ #define CyBtldrCommRead USBFS_CyBtldrCommRead\r
+ #endif /*End CYDEV_BOOTLOADER_IO_COMP == CyBtldr_USBFS */\r
+\r
+#endif /* End CYDEV_BOOTLOADER_IO_COMP */\r
+\r
+#if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ void USBFS_InitEP_DMA(uint8 epNumber, const uint8 *pData)\r
+ ;\r
+ void USBFS_Stop_DMA(uint8 epNumber) ;\r
+#endif /* End USBFS_EP_MM != USBFS__EP_MANUAL) */\r
+\r
+#if defined(USBFS_ENABLE_MIDI_STREAMING) && (USBFS_ENABLE_MIDI_API != 0u)\r
+ void USBFS_MIDI_EP_Init(void) ;\r
+\r
+ #if (USBFS_MIDI_IN_BUFF_SIZE > 0)\r
+ void USBFS_MIDI_IN_Service(void) ;\r
+ uint8 USBFS_PutUsbMidiIn(uint8 ic, const uint8 midiMsg[], uint8 cable)\r
+ ;\r
+ #endif /* USBFS_MIDI_IN_BUFF_SIZE > 0 */\r
+\r
+ #if (USBFS_MIDI_OUT_BUFF_SIZE > 0)\r
+ void USBFS_MIDI_OUT_EP_Service(void) ;\r
+ #endif /* USBFS_MIDI_OUT_BUFF_SIZE > 0 */\r
+\r
+#endif /* End USBFS_ENABLE_MIDI_API != 0u */\r
+\r
+/* Renamed Functions for backward compatibility.\r
+* Should not be used in new designs.\r
+*/\r
+\r
+#define USBFS_bCheckActivity USBFS_CheckActivity\r
+#define USBFS_bGetConfiguration USBFS_GetConfiguration\r
+#define USBFS_bGetInterfaceSetting USBFS_GetInterfaceSetting\r
+#define USBFS_bGetEPState USBFS_GetEPState\r
+#define USBFS_wGetEPCount USBFS_GetEPCount\r
+#define USBFS_bGetEPAckState USBFS_GetEPAckState\r
+#define USBFS_bRWUEnabled USBFS_RWUEnabled\r
+#define USBFS_bVBusPresent USBFS_VBusPresent\r
+\r
+#define USBFS_bConfiguration USBFS_configuration\r
+#define USBFS_bInterfaceSetting USBFS_interfaceSetting\r
+#define USBFS_bDeviceAddress USBFS_deviceAddress\r
+#define USBFS_bDeviceStatus USBFS_deviceStatus\r
+#define USBFS_bDevice USBFS_device\r
+#define USBFS_bTransferState USBFS_transferState\r
+#define USBFS_bLastPacketSize USBFS_lastPacketSize\r
+\r
+#define USBFS_LoadEP USBFS_LoadInEP\r
+#define USBFS_LoadInISOCEP USBFS_LoadInEP\r
+#define USBFS_EnableOutISOCEP USBFS_EnableOutEP\r
+\r
+#define USBFS_SetVector CyIntSetVector\r
+#define USBFS_SetPriority CyIntSetPriority\r
+#define USBFS_EnableInt CyIntEnable\r
+\r
+\r
+/***************************************\r
+* API Constants\r
+***************************************/\r
+\r
+#define USBFS_EP0 (0u)\r
+#define USBFS_EP1 (1u)\r
+#define USBFS_EP2 (2u)\r
+#define USBFS_EP3 (3u)\r
+#define USBFS_EP4 (4u)\r
+#define USBFS_EP5 (5u)\r
+#define USBFS_EP6 (6u)\r
+#define USBFS_EP7 (7u)\r
+#define USBFS_EP8 (8u)\r
+#define USBFS_MAX_EP (9u)\r
+\r
+#define USBFS_TRUE (1u)\r
+#define USBFS_FALSE (0u)\r
+\r
+#define USBFS_NO_EVENT_ALLOWED (2u)\r
+#define USBFS_EVENT_PENDING (1u)\r
+#define USBFS_NO_EVENT_PENDING (0u)\r
+\r
+#define USBFS_IN_BUFFER_FULL USBFS_NO_EVENT_PENDING\r
+#define USBFS_IN_BUFFER_EMPTY USBFS_EVENT_PENDING\r
+#define USBFS_OUT_BUFFER_FULL USBFS_EVENT_PENDING\r
+#define USBFS_OUT_BUFFER_EMPTY USBFS_NO_EVENT_PENDING\r
+\r
+#define USBFS_FORCE_J (0xA0u)\r
+#define USBFS_FORCE_K (0x80u)\r
+#define USBFS_FORCE_SE0 (0xC0u)\r
+#define USBFS_FORCE_NONE (0x00u)\r
+\r
+#define USBFS_IDLE_TIMER_RUNNING (0x02u)\r
+#define USBFS_IDLE_TIMER_EXPIRED (0x01u)\r
+#define USBFS_IDLE_TIMER_INDEFINITE (0x00u)\r
+\r
+#define USBFS_DEVICE_STATUS_BUS_POWERED (0x00u)\r
+#define USBFS_DEVICE_STATUS_SELF_POWERED (0x01u)\r
+\r
+#define USBFS_3V_OPERATION (0x00u)\r
+#define USBFS_5V_OPERATION (0x01u)\r
+#define USBFS_DWR_VDDD_OPERATION (0x02u)\r
+\r
+#define USBFS_MODE_DISABLE (0x00u)\r
+#define USBFS_MODE_NAK_IN_OUT (0x01u)\r
+#define USBFS_MODE_STATUS_OUT_ONLY (0x02u)\r
+#define USBFS_MODE_STALL_IN_OUT (0x03u)\r
+#define USBFS_MODE_RESERVED_0100 (0x04u)\r
+#define USBFS_MODE_ISO_OUT (0x05u)\r
+#define USBFS_MODE_STATUS_IN_ONLY (0x06u)\r
+#define USBFS_MODE_ISO_IN (0x07u)\r
+#define USBFS_MODE_NAK_OUT (0x08u)\r
+#define USBFS_MODE_ACK_OUT (0x09u)\r
+#define USBFS_MODE_RESERVED_1010 (0x0Au)\r
+#define USBFS_MODE_ACK_OUT_STATUS_IN (0x0Bu)\r
+#define USBFS_MODE_NAK_IN (0x0Cu)\r
+#define USBFS_MODE_ACK_IN (0x0Du)\r
+#define USBFS_MODE_RESERVED_1110 (0x0Eu)\r
+#define USBFS_MODE_ACK_IN_STATUS_OUT (0x0Fu)\r
+#define USBFS_MODE_MASK (0x0Fu)\r
+#define USBFS_MODE_STALL_DATA_EP (0x80u)\r
+\r
+#define USBFS_MODE_ACKD (0x10u)\r
+#define USBFS_MODE_OUT_RCVD (0x20u)\r
+#define USBFS_MODE_IN_RCVD (0x40u)\r
+#define USBFS_MODE_SETUP_RCVD (0x80u)\r
+\r
+#define USBFS_RQST_TYPE_MASK (0x60u)\r
+#define USBFS_RQST_TYPE_STD (0x00u)\r
+#define USBFS_RQST_TYPE_CLS (0x20u)\r
+#define USBFS_RQST_TYPE_VND (0x40u)\r
+#define USBFS_RQST_DIR_MASK (0x80u)\r
+#define USBFS_RQST_DIR_D2H (0x80u)\r
+#define USBFS_RQST_DIR_H2D (0x00u)\r
+#define USBFS_RQST_RCPT_MASK (0x03u)\r
+#define USBFS_RQST_RCPT_DEV (0x00u)\r
+#define USBFS_RQST_RCPT_IFC (0x01u)\r
+#define USBFS_RQST_RCPT_EP (0x02u)\r
+#define USBFS_RQST_RCPT_OTHER (0x03u)\r
+\r
+/* USB Class Codes */\r
+#define USBFS_CLASS_DEVICE (0x00u) /* Use class code info from Interface Descriptors */\r
+#define USBFS_CLASS_AUDIO (0x01u) /* Audio device */\r
+#define USBFS_CLASS_CDC (0x02u) /* Communication device class */\r
+#define USBFS_CLASS_HID (0x03u) /* Human Interface Device */\r
+#define USBFS_CLASS_PDC (0x05u) /* Physical device class */\r
+#define USBFS_CLASS_IMAGE (0x06u) /* Still Imaging device */\r
+#define USBFS_CLASS_PRINTER (0x07u) /* Printer device */\r
+#define USBFS_CLASS_MSD (0x08u) /* Mass Storage device */\r
+#define USBFS_CLASS_HUB (0x09u) /* Full/Hi speed Hub */\r
+#define USBFS_CLASS_CDC_DATA (0x0Au) /* CDC data device */\r
+#define USBFS_CLASS_SMART_CARD (0x0Bu) /* Smart Card device */\r
+#define USBFS_CLASS_CSD (0x0Du) /* Content Security device */\r
+#define USBFS_CLASS_VIDEO (0x0Eu) /* Video device */\r
+#define USBFS_CLASS_PHD (0x0Fu) /* Personal Healthcare device */\r
+#define USBFS_CLASS_WIRELESSD (0xDCu) /* Wireless Controller */\r
+#define USBFS_CLASS_MIS (0xE0u) /* Miscellaneous */\r
+#define USBFS_CLASS_APP (0xEFu) /* Application Specific */\r
+#define USBFS_CLASS_VENDOR (0xFFu) /* Vendor specific */\r
+\r
+\r
+/* Standard Request Types (Table 9-4) */\r
+#define USBFS_GET_STATUS (0x00u)\r
+#define USBFS_CLEAR_FEATURE (0x01u)\r
+#define USBFS_SET_FEATURE (0x03u)\r
+#define USBFS_SET_ADDRESS (0x05u)\r
+#define USBFS_GET_DESCRIPTOR (0x06u)\r
+#define USBFS_SET_DESCRIPTOR (0x07u)\r
+#define USBFS_GET_CONFIGURATION (0x08u)\r
+#define USBFS_SET_CONFIGURATION (0x09u)\r
+#define USBFS_GET_INTERFACE (0x0Au)\r
+#define USBFS_SET_INTERFACE (0x0Bu)\r
+#define USBFS_SYNCH_FRAME (0x0Cu)\r
+\r
+/* Vendor Specific Request Types */\r
+/* Request for Microsoft OS String Descriptor */\r
+#define USBFS_GET_EXTENDED_CONFIG_DESCRIPTOR (0x01u)\r
+\r
+/* Descriptor Types (Table 9-5) */\r
+#define USBFS_DESCR_DEVICE (1u)\r
+#define USBFS_DESCR_CONFIG (2u)\r
+#define USBFS_DESCR_STRING (3u)\r
+#define USBFS_DESCR_INTERFACE (4u)\r
+#define USBFS_DESCR_ENDPOINT (5u)\r
+#define USBFS_DESCR_DEVICE_QUALIFIER (6u)\r
+#define USBFS_DESCR_OTHER_SPEED (7u)\r
+#define USBFS_DESCR_INTERFACE_POWER (8u)\r
+\r
+/* Device Descriptor Defines */\r
+#define USBFS_DEVICE_DESCR_LENGTH (18u)\r
+#define USBFS_DEVICE_DESCR_SN_SHIFT (16u)\r
+\r
+/* Config Descriptor Shifts and Masks */\r
+#define USBFS_CONFIG_DESCR_LENGTH (0u)\r
+#define USBFS_CONFIG_DESCR_TYPE (1u)\r
+#define USBFS_CONFIG_DESCR_TOTAL_LENGTH_LOW (2u)\r
+#define USBFS_CONFIG_DESCR_TOTAL_LENGTH_HI (3u)\r
+#define USBFS_CONFIG_DESCR_NUM_INTERFACES (4u)\r
+#define USBFS_CONFIG_DESCR_CONFIG_VALUE (5u)\r
+#define USBFS_CONFIG_DESCR_CONFIGURATION (6u)\r
+#define USBFS_CONFIG_DESCR_ATTRIB (7u)\r
+#define USBFS_CONFIG_DESCR_ATTRIB_SELF_POWERED (0x40u)\r
+#define USBFS_CONFIG_DESCR_ATTRIB_RWU_EN (0x20u)\r
+\r
+/* Feature Selectors (Table 9-6) */\r
+#define USBFS_DEVICE_REMOTE_WAKEUP (0x01u)\r
+#define USBFS_ENDPOINT_HALT (0x00u)\r
+#define USBFS_TEST_MODE (0x02u)\r
+\r
+/* USB Device Status (Figure 9-4) */\r
+#define USBFS_DEVICE_STATUS_BUS_POWERED (0x00u)\r
+#define USBFS_DEVICE_STATUS_SELF_POWERED (0x01u)\r
+#define USBFS_DEVICE_STATUS_REMOTE_WAKEUP (0x02u)\r
+\r
+/* USB Endpoint Status (Figure 9-4) */\r
+#define USBFS_ENDPOINT_STATUS_HALT (0x01u)\r
+\r
+/* USB Endpoint Directions */\r
+#define USBFS_DIR_IN (0x80u)\r
+#define USBFS_DIR_OUT (0x00u)\r
+#define USBFS_DIR_UNUSED (0x7Fu)\r
+\r
+/* USB Endpoint Attributes */\r
+#define USBFS_EP_TYPE_CTRL (0x00u)\r
+#define USBFS_EP_TYPE_ISOC (0x01u)\r
+#define USBFS_EP_TYPE_BULK (0x02u)\r
+#define USBFS_EP_TYPE_INT (0x03u)\r
+#define USBFS_EP_TYPE_MASK (0x03u)\r
+\r
+#define USBFS_EP_SYNC_TYPE_NO_SYNC (0x00u)\r
+#define USBFS_EP_SYNC_TYPE_ASYNC (0x04u)\r
+#define USBFS_EP_SYNC_TYPE_ADAPTIVE (0x08u)\r
+#define USBFS_EP_SYNC_TYPE_SYNCHRONOUS (0x0Cu)\r
+#define USBFS_EP_SYNC_TYPE_MASK (0x0Cu)\r
+\r
+#define USBFS_EP_USAGE_TYPE_DATA (0x00u)\r
+#define USBFS_EP_USAGE_TYPE_FEEDBACK (0x10u)\r
+#define USBFS_EP_USAGE_TYPE_IMPLICIT (0x20u)\r
+#define USBFS_EP_USAGE_TYPE_RESERVED (0x30u)\r
+#define USBFS_EP_USAGE_TYPE_MASK (0x30u)\r
+\r
+/* Endpoint Status defines */\r
+#define USBFS_EP_STATUS_LENGTH (0x02u)\r
+\r
+/* Endpoint Device defines */\r
+#define USBFS_DEVICE_STATUS_LENGTH (0x02u)\r
+\r
+#define USBFS_STATUS_LENGTH_MAX \\r
+ ( (USBFS_EP_STATUS_LENGTH > USBFS_DEVICE_STATUS_LENGTH) ? \\r
+ USBFS_EP_STATUS_LENGTH : USBFS_DEVICE_STATUS_LENGTH )\r
+/* Transfer Completion Notification */\r
+#define USBFS_XFER_IDLE (0x00u)\r
+#define USBFS_XFER_STATUS_ACK (0x01u)\r
+#define USBFS_XFER_PREMATURE (0x02u)\r
+#define USBFS_XFER_ERROR (0x03u)\r
+\r
+/* Driver State defines */\r
+#define USBFS_TRANS_STATE_IDLE (0x00u)\r
+#define USBFS_TRANS_STATE_CONTROL_READ (0x02u)\r
+#define USBFS_TRANS_STATE_CONTROL_WRITE (0x04u)\r
+#define USBFS_TRANS_STATE_NO_DATA_CONTROL (0x06u)\r
+\r
+/* String Descriptor defines */\r
+#define USBFS_STRING_MSOS (0xEEu)\r
+#define USBFS_MSOS_DESCRIPTOR_LENGTH (18u)\r
+#define USBFS_MSOS_CONF_DESCR_LENGTH (40u)\r
+\r
+#if(USBFS_EP_MM == USBFS__EP_DMAMANUAL)\r
+ /* DMA manual mode defines */\r
+ #define USBFS_DMA_BYTES_PER_BURST (0u)\r
+ #define USBFS_DMA_REQUEST_PER_BURST (0u)\r
+#endif /* End USBFS_EP_MM == USBFS__EP_DMAMANUAL */\r
+#if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ /* DMA automatic mode defines */\r
+ #define USBFS_DMA_BYTES_PER_BURST (32u)\r
+ /* BUF_SIZE-BYTES_PER_BURST examples: 55-32 bytes 44-16 bytes 33-8 bytes 22-4 bytes 11-2 bytes */\r
+ #define USBFS_DMA_BUF_SIZE (0x55u)\r
+ #define USBFS_DMA_REQUEST_PER_BURST (1u)\r
+#endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+\r
+/* DIE ID string descriptor defines */\r
+#if defined(USBFS_ENABLE_IDSN_STRING)\r
+ #define USBFS_IDSN_DESCR_LENGTH (0x22u)\r
+#endif /* USBFS_ENABLE_IDSN_STRING */\r
+\r
+\r
+/***************************************\r
+* External data references\r
+***************************************/\r
+\r
+extern uint8 USBFS_initVar;\r
+extern volatile uint8 USBFS_device;\r
+extern volatile uint8 USBFS_transferState;\r
+extern volatile uint8 USBFS_configuration;\r
+extern volatile uint8 USBFS_configurationChanged;\r
+extern volatile uint8 USBFS_deviceStatus;\r
+\r
+/* HID Variables */\r
+#if defined(USBFS_ENABLE_HID_CLASS)\r
+ extern volatile uint8 USBFS_hidProtocol[USBFS_MAX_INTERFACES_NUMBER];\r
+ extern volatile uint8 USBFS_hidIdleRate[USBFS_MAX_INTERFACES_NUMBER];\r
+ extern volatile uint8 USBFS_hidIdleTimer[USBFS_MAX_INTERFACES_NUMBER];\r
+#endif /* USBFS_ENABLE_HID_CLASS */\r
+\r
+\r
+/***************************************\r
+* Registers\r
+***************************************/\r
+\r
+#define USBFS_ARB_CFG_PTR ( (reg8 *) USBFS_USB__ARB_CFG)\r
+#define USBFS_ARB_CFG_REG (* (reg8 *) USBFS_USB__ARB_CFG)\r
+\r
+#define USBFS_ARB_EP1_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP1_CFG)\r
+#define USBFS_ARB_EP1_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP1_CFG)\r
+#define USBFS_ARB_EP1_CFG_IND USBFS_USB__ARB_EP1_CFG\r
+#define USBFS_ARB_EP1_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP1_INT_EN)\r
+#define USBFS_ARB_EP1_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP1_INT_EN)\r
+#define USBFS_ARB_EP1_INT_EN_IND USBFS_USB__ARB_EP1_INT_EN\r
+#define USBFS_ARB_EP1_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP1_SR)\r
+#define USBFS_ARB_EP1_SR_REG (* (reg8 *) USBFS_USB__ARB_EP1_SR)\r
+#define USBFS_ARB_EP1_SR_IND USBFS_USB__ARB_EP1_SR\r
+\r
+#define USBFS_ARB_EP2_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP2_CFG)\r
+#define USBFS_ARB_EP2_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP2_CFG)\r
+#define USBFS_ARB_EP2_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP2_INT_EN)\r
+#define USBFS_ARB_EP2_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP2_INT_EN)\r
+#define USBFS_ARB_EP2_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP2_SR)\r
+#define USBFS_ARB_EP2_SR_REG (* (reg8 *) USBFS_USB__ARB_EP2_SR)\r
+\r
+#define USBFS_ARB_EP3_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP3_CFG)\r
+#define USBFS_ARB_EP3_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP3_CFG)\r
+#define USBFS_ARB_EP3_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP3_INT_EN)\r
+#define USBFS_ARB_EP3_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP3_INT_EN)\r
+#define USBFS_ARB_EP3_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP3_SR)\r
+#define USBFS_ARB_EP3_SR_REG (* (reg8 *) USBFS_USB__ARB_EP3_SR)\r
+\r
+#define USBFS_ARB_EP4_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP4_CFG)\r
+#define USBFS_ARB_EP4_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP4_CFG)\r
+#define USBFS_ARB_EP4_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP4_INT_EN)\r
+#define USBFS_ARB_EP4_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP4_INT_EN)\r
+#define USBFS_ARB_EP4_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP4_SR)\r
+#define USBFS_ARB_EP4_SR_REG (* (reg8 *) USBFS_USB__ARB_EP4_SR)\r
+\r
+#define USBFS_ARB_EP5_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP5_CFG)\r
+#define USBFS_ARB_EP5_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP5_CFG)\r
+#define USBFS_ARB_EP5_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP5_INT_EN)\r
+#define USBFS_ARB_EP5_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP5_INT_EN)\r
+#define USBFS_ARB_EP5_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP5_SR)\r
+#define USBFS_ARB_EP5_SR_REG (* (reg8 *) USBFS_USB__ARB_EP5_SR)\r
+\r
+#define USBFS_ARB_EP6_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP6_CFG)\r
+#define USBFS_ARB_EP6_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP6_CFG)\r
+#define USBFS_ARB_EP6_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP6_INT_EN)\r
+#define USBFS_ARB_EP6_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP6_INT_EN)\r
+#define USBFS_ARB_EP6_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP6_SR)\r
+#define USBFS_ARB_EP6_SR_REG (* (reg8 *) USBFS_USB__ARB_EP6_SR)\r
+\r
+#define USBFS_ARB_EP7_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP7_CFG)\r
+#define USBFS_ARB_EP7_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP7_CFG)\r
+#define USBFS_ARB_EP7_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP7_INT_EN)\r
+#define USBFS_ARB_EP7_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP7_INT_EN)\r
+#define USBFS_ARB_EP7_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP7_SR)\r
+#define USBFS_ARB_EP7_SR_REG (* (reg8 *) USBFS_USB__ARB_EP7_SR)\r
+\r
+#define USBFS_ARB_EP8_CFG_PTR ( (reg8 *) USBFS_USB__ARB_EP8_CFG)\r
+#define USBFS_ARB_EP8_CFG_REG (* (reg8 *) USBFS_USB__ARB_EP8_CFG)\r
+#define USBFS_ARB_EP8_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_EP8_INT_EN)\r
+#define USBFS_ARB_EP8_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_EP8_INT_EN)\r
+#define USBFS_ARB_EP8_SR_PTR ( (reg8 *) USBFS_USB__ARB_EP8_SR)\r
+#define USBFS_ARB_EP8_SR_REG (* (reg8 *) USBFS_USB__ARB_EP8_SR)\r
+\r
+#define USBFS_ARB_INT_EN_PTR ( (reg8 *) USBFS_USB__ARB_INT_EN)\r
+#define USBFS_ARB_INT_EN_REG (* (reg8 *) USBFS_USB__ARB_INT_EN)\r
+#define USBFS_ARB_INT_SR_PTR ( (reg8 *) USBFS_USB__ARB_INT_SR)\r
+#define USBFS_ARB_INT_SR_REG (* (reg8 *) USBFS_USB__ARB_INT_SR)\r
+\r
+#define USBFS_ARB_RW1_DR_PTR ((reg8 *) USBFS_USB__ARB_RW1_DR)\r
+#define USBFS_ARB_RW1_DR_IND USBFS_USB__ARB_RW1_DR\r
+#define USBFS_ARB_RW1_RA_PTR ((reg8 *) USBFS_USB__ARB_RW1_RA)\r
+#define USBFS_ARB_RW1_RA_IND USBFS_USB__ARB_RW1_RA\r
+#define USBFS_ARB_RW1_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW1_RA_MSB)\r
+#define USBFS_ARB_RW1_RA_MSB_IND USBFS_USB__ARB_RW1_RA_MSB\r
+#define USBFS_ARB_RW1_WA_PTR ((reg8 *) USBFS_USB__ARB_RW1_WA)\r
+#define USBFS_ARB_RW1_WA_IND USBFS_USB__ARB_RW1_WA\r
+#define USBFS_ARB_RW1_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW1_WA_MSB)\r
+#define USBFS_ARB_RW1_WA_MSB_IND USBFS_USB__ARB_RW1_WA_MSB\r
+\r
+#define USBFS_ARB_RW2_DR_PTR ((reg8 *) USBFS_USB__ARB_RW2_DR)\r
+#define USBFS_ARB_RW2_RA_PTR ((reg8 *) USBFS_USB__ARB_RW2_RA)\r
+#define USBFS_ARB_RW2_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW2_RA_MSB)\r
+#define USBFS_ARB_RW2_WA_PTR ((reg8 *) USBFS_USB__ARB_RW2_WA)\r
+#define USBFS_ARB_RW2_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW2_WA_MSB)\r
+\r
+#define USBFS_ARB_RW3_DR_PTR ((reg8 *) USBFS_USB__ARB_RW3_DR)\r
+#define USBFS_ARB_RW3_RA_PTR ((reg8 *) USBFS_USB__ARB_RW3_RA)\r
+#define USBFS_ARB_RW3_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW3_RA_MSB)\r
+#define USBFS_ARB_RW3_WA_PTR ((reg8 *) USBFS_USB__ARB_RW3_WA)\r
+#define USBFS_ARB_RW3_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW3_WA_MSB)\r
+\r
+#define USBFS_ARB_RW4_DR_PTR ((reg8 *) USBFS_USB__ARB_RW4_DR)\r
+#define USBFS_ARB_RW4_RA_PTR ((reg8 *) USBFS_USB__ARB_RW4_RA)\r
+#define USBFS_ARB_RW4_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW4_RA_MSB)\r
+#define USBFS_ARB_RW4_WA_PTR ((reg8 *) USBFS_USB__ARB_RW4_WA)\r
+#define USBFS_ARB_RW4_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW4_WA_MSB)\r
+\r
+#define USBFS_ARB_RW5_DR_PTR ((reg8 *) USBFS_USB__ARB_RW5_DR)\r
+#define USBFS_ARB_RW5_RA_PTR ((reg8 *) USBFS_USB__ARB_RW5_RA)\r
+#define USBFS_ARB_RW5_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW5_RA_MSB)\r
+#define USBFS_ARB_RW5_WA_PTR ((reg8 *) USBFS_USB__ARB_RW5_WA)\r
+#define USBFS_ARB_RW5_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW5_WA_MSB)\r
+\r
+#define USBFS_ARB_RW6_DR_PTR ((reg8 *) USBFS_USB__ARB_RW6_DR)\r
+#define USBFS_ARB_RW6_RA_PTR ((reg8 *) USBFS_USB__ARB_RW6_RA)\r
+#define USBFS_ARB_RW6_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW6_RA_MSB)\r
+#define USBFS_ARB_RW6_WA_PTR ((reg8 *) USBFS_USB__ARB_RW6_WA)\r
+#define USBFS_ARB_RW6_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW6_WA_MSB)\r
+\r
+#define USBFS_ARB_RW7_DR_PTR ((reg8 *) USBFS_USB__ARB_RW7_DR)\r
+#define USBFS_ARB_RW7_RA_PTR ((reg8 *) USBFS_USB__ARB_RW7_RA)\r
+#define USBFS_ARB_RW7_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW7_RA_MSB)\r
+#define USBFS_ARB_RW7_WA_PTR ((reg8 *) USBFS_USB__ARB_RW7_WA)\r
+#define USBFS_ARB_RW7_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW7_WA_MSB)\r
+\r
+#define USBFS_ARB_RW8_DR_PTR ((reg8 *) USBFS_USB__ARB_RW8_DR)\r
+#define USBFS_ARB_RW8_RA_PTR ((reg8 *) USBFS_USB__ARB_RW8_RA)\r
+#define USBFS_ARB_RW8_RA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW8_RA_MSB)\r
+#define USBFS_ARB_RW8_WA_PTR ((reg8 *) USBFS_USB__ARB_RW8_WA)\r
+#define USBFS_ARB_RW8_WA_MSB_PTR ((reg8 *) USBFS_USB__ARB_RW8_WA_MSB)\r
+\r
+#define USBFS_BUF_SIZE_PTR ( (reg8 *) USBFS_USB__BUF_SIZE)\r
+#define USBFS_BUF_SIZE_REG (* (reg8 *) USBFS_USB__BUF_SIZE)\r
+#define USBFS_BUS_RST_CNT_PTR ( (reg8 *) USBFS_USB__BUS_RST_CNT)\r
+#define USBFS_BUS_RST_CNT_REG (* (reg8 *) USBFS_USB__BUS_RST_CNT)\r
+#define USBFS_CWA_PTR ( (reg8 *) USBFS_USB__CWA)\r
+#define USBFS_CWA_REG (* (reg8 *) USBFS_USB__CWA)\r
+#define USBFS_CWA_MSB_PTR ( (reg8 *) USBFS_USB__CWA_MSB)\r
+#define USBFS_CWA_MSB_REG (* (reg8 *) USBFS_USB__CWA_MSB)\r
+#define USBFS_CR0_PTR ( (reg8 *) USBFS_USB__CR0)\r
+#define USBFS_CR0_REG (* (reg8 *) USBFS_USB__CR0)\r
+#define USBFS_CR1_PTR ( (reg8 *) USBFS_USB__CR1)\r
+#define USBFS_CR1_REG (* (reg8 *) USBFS_USB__CR1)\r
+\r
+#define USBFS_DMA_THRES_PTR ( (reg8 *) USBFS_USB__DMA_THRES)\r
+#define USBFS_DMA_THRES_REG (* (reg8 *) USBFS_USB__DMA_THRES)\r
+#define USBFS_DMA_THRES_MSB_PTR ( (reg8 *) USBFS_USB__DMA_THRES_MSB)\r
+#define USBFS_DMA_THRES_MSB_REG (* (reg8 *) USBFS_USB__DMA_THRES_MSB)\r
+\r
+#define USBFS_EP_ACTIVE_PTR ( (reg8 *) USBFS_USB__EP_ACTIVE)\r
+#define USBFS_EP_ACTIVE_REG (* (reg8 *) USBFS_USB__EP_ACTIVE)\r
+#define USBFS_EP_TYPE_PTR ( (reg8 *) USBFS_USB__EP_TYPE)\r
+#define USBFS_EP_TYPE_REG (* (reg8 *) USBFS_USB__EP_TYPE)\r
+\r
+#define USBFS_EP0_CNT_PTR ( (reg8 *) USBFS_USB__EP0_CNT)\r
+#define USBFS_EP0_CNT_REG (* (reg8 *) USBFS_USB__EP0_CNT)\r
+#define USBFS_EP0_CR_PTR ( (reg8 *) USBFS_USB__EP0_CR)\r
+#define USBFS_EP0_CR_REG (* (reg8 *) USBFS_USB__EP0_CR)\r
+#define USBFS_EP0_DR0_PTR ( (reg8 *) USBFS_USB__EP0_DR0)\r
+#define USBFS_EP0_DR0_REG (* (reg8 *) USBFS_USB__EP0_DR0)\r
+#define USBFS_EP0_DR0_IND USBFS_USB__EP0_DR0\r
+#define USBFS_EP0_DR1_PTR ( (reg8 *) USBFS_USB__EP0_DR1)\r
+#define USBFS_EP0_DR1_REG (* (reg8 *) USBFS_USB__EP0_DR1)\r
+#define USBFS_EP0_DR2_PTR ( (reg8 *) USBFS_USB__EP0_DR2)\r
+#define USBFS_EP0_DR2_REG (* (reg8 *) USBFS_USB__EP0_DR2)\r
+#define USBFS_EP0_DR3_PTR ( (reg8 *) USBFS_USB__EP0_DR3)\r
+#define USBFS_EP0_DR3_REG (* (reg8 *) USBFS_USB__EP0_DR3)\r
+#define USBFS_EP0_DR4_PTR ( (reg8 *) USBFS_USB__EP0_DR4)\r
+#define USBFS_EP0_DR4_REG (* (reg8 *) USBFS_USB__EP0_DR4)\r
+#define USBFS_EP0_DR5_PTR ( (reg8 *) USBFS_USB__EP0_DR5)\r
+#define USBFS_EP0_DR5_REG (* (reg8 *) USBFS_USB__EP0_DR5)\r
+#define USBFS_EP0_DR6_PTR ( (reg8 *) USBFS_USB__EP0_DR6)\r
+#define USBFS_EP0_DR6_REG (* (reg8 *) USBFS_USB__EP0_DR6)\r
+#define USBFS_EP0_DR7_PTR ( (reg8 *) USBFS_USB__EP0_DR7)\r
+#define USBFS_EP0_DR7_REG (* (reg8 *) USBFS_USB__EP0_DR7)\r
+\r
+#define USBFS_OSCLK_DR0_PTR ( (reg8 *) USBFS_USB__OSCLK_DR0)\r
+#define USBFS_OSCLK_DR0_REG (* (reg8 *) USBFS_USB__OSCLK_DR0)\r
+#define USBFS_OSCLK_DR1_PTR ( (reg8 *) USBFS_USB__OSCLK_DR1)\r
+#define USBFS_OSCLK_DR1_REG (* (reg8 *) USBFS_USB__OSCLK_DR1)\r
+\r
+#define USBFS_PM_ACT_CFG_PTR ( (reg8 *) USBFS_USB__PM_ACT_CFG)\r
+#define USBFS_PM_ACT_CFG_REG (* (reg8 *) USBFS_USB__PM_ACT_CFG)\r
+#define USBFS_PM_STBY_CFG_PTR ( (reg8 *) USBFS_USB__PM_STBY_CFG)\r
+#define USBFS_PM_STBY_CFG_REG (* (reg8 *) USBFS_USB__PM_STBY_CFG)\r
+\r
+#define USBFS_SIE_EP_INT_EN_PTR ( (reg8 *) USBFS_USB__SIE_EP_INT_EN)\r
+#define USBFS_SIE_EP_INT_EN_REG (* (reg8 *) USBFS_USB__SIE_EP_INT_EN)\r
+#define USBFS_SIE_EP_INT_SR_PTR ( (reg8 *) USBFS_USB__SIE_EP_INT_SR)\r
+#define USBFS_SIE_EP_INT_SR_REG (* (reg8 *) USBFS_USB__SIE_EP_INT_SR)\r
+\r
+#define USBFS_SIE_EP1_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP1_CNT0)\r
+#define USBFS_SIE_EP1_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP1_CNT0)\r
+#define USBFS_SIE_EP1_CNT0_IND USBFS_USB__SIE_EP1_CNT0\r
+#define USBFS_SIE_EP1_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP1_CNT1)\r
+#define USBFS_SIE_EP1_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP1_CNT1)\r
+#define USBFS_SIE_EP1_CNT1_IND USBFS_USB__SIE_EP1_CNT1\r
+#define USBFS_SIE_EP1_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP1_CR0)\r
+#define USBFS_SIE_EP1_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP1_CR0)\r
+#define USBFS_SIE_EP1_CR0_IND USBFS_USB__SIE_EP1_CR0\r
+\r
+#define USBFS_SIE_EP2_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP2_CNT0)\r
+#define USBFS_SIE_EP2_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP2_CNT0)\r
+#define USBFS_SIE_EP2_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP2_CNT1)\r
+#define USBFS_SIE_EP2_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP2_CNT1)\r
+#define USBFS_SIE_EP2_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP2_CR0)\r
+#define USBFS_SIE_EP2_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP2_CR0)\r
+\r
+#define USBFS_SIE_EP3_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP3_CNT0)\r
+#define USBFS_SIE_EP3_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP3_CNT0)\r
+#define USBFS_SIE_EP3_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP3_CNT1)\r
+#define USBFS_SIE_EP3_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP3_CNT1)\r
+#define USBFS_SIE_EP3_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP3_CR0)\r
+#define USBFS_SIE_EP3_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP3_CR0)\r
+\r
+#define USBFS_SIE_EP4_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP4_CNT0)\r
+#define USBFS_SIE_EP4_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP4_CNT0)\r
+#define USBFS_SIE_EP4_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP4_CNT1)\r
+#define USBFS_SIE_EP4_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP4_CNT1)\r
+#define USBFS_SIE_EP4_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP4_CR0)\r
+#define USBFS_SIE_EP4_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP4_CR0)\r
+\r
+#define USBFS_SIE_EP5_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP5_CNT0)\r
+#define USBFS_SIE_EP5_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP5_CNT0)\r
+#define USBFS_SIE_EP5_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP5_CNT1)\r
+#define USBFS_SIE_EP5_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP5_CNT1)\r
+#define USBFS_SIE_EP5_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP5_CR0)\r
+#define USBFS_SIE_EP5_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP5_CR0)\r
+\r
+#define USBFS_SIE_EP6_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP6_CNT0)\r
+#define USBFS_SIE_EP6_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP6_CNT0)\r
+#define USBFS_SIE_EP6_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP6_CNT1)\r
+#define USBFS_SIE_EP6_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP6_CNT1)\r
+#define USBFS_SIE_EP6_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP6_CR0)\r
+#define USBFS_SIE_EP6_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP6_CR0)\r
+\r
+#define USBFS_SIE_EP7_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP7_CNT0)\r
+#define USBFS_SIE_EP7_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP7_CNT0)\r
+#define USBFS_SIE_EP7_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP7_CNT1)\r
+#define USBFS_SIE_EP7_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP7_CNT1)\r
+#define USBFS_SIE_EP7_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP7_CR0)\r
+#define USBFS_SIE_EP7_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP7_CR0)\r
+\r
+#define USBFS_SIE_EP8_CNT0_PTR ( (reg8 *) USBFS_USB__SIE_EP8_CNT0)\r
+#define USBFS_SIE_EP8_CNT0_REG (* (reg8 *) USBFS_USB__SIE_EP8_CNT0)\r
+#define USBFS_SIE_EP8_CNT1_PTR ( (reg8 *) USBFS_USB__SIE_EP8_CNT1)\r
+#define USBFS_SIE_EP8_CNT1_REG (* (reg8 *) USBFS_USB__SIE_EP8_CNT1)\r
+#define USBFS_SIE_EP8_CR0_PTR ( (reg8 *) USBFS_USB__SIE_EP8_CR0)\r
+#define USBFS_SIE_EP8_CR0_REG (* (reg8 *) USBFS_USB__SIE_EP8_CR0)\r
+\r
+#define USBFS_SOF0_PTR ( (reg8 *) USBFS_USB__SOF0)\r
+#define USBFS_SOF0_REG (* (reg8 *) USBFS_USB__SOF0)\r
+#define USBFS_SOF1_PTR ( (reg8 *) USBFS_USB__SOF1)\r
+#define USBFS_SOF1_REG (* (reg8 *) USBFS_USB__SOF1)\r
+\r
+#define USBFS_USB_CLK_EN_PTR ( (reg8 *) USBFS_USB__USB_CLK_EN)\r
+#define USBFS_USB_CLK_EN_REG (* (reg8 *) USBFS_USB__USB_CLK_EN)\r
+\r
+#define USBFS_USBIO_CR0_PTR ( (reg8 *) USBFS_USB__USBIO_CR0)\r
+#define USBFS_USBIO_CR0_REG (* (reg8 *) USBFS_USB__USBIO_CR0)\r
+#define USBFS_USBIO_CR1_PTR ( (reg8 *) USBFS_USB__USBIO_CR1)\r
+#define USBFS_USBIO_CR1_REG (* (reg8 *) USBFS_USB__USBIO_CR1)\r
+#if(!CY_PSOC5LP)\r
+ #define USBFS_USBIO_CR2_PTR ( (reg8 *) USBFS_USB__USBIO_CR2)\r
+ #define USBFS_USBIO_CR2_REG (* (reg8 *) USBFS_USB__USBIO_CR2)\r
+#endif /* End CY_PSOC5LP */\r
+\r
+#define USBFS_DIE_ID CYDEV_FLSHID_CUST_TABLES_BASE\r
+\r
+#define USBFS_PM_USB_CR0_PTR ( (reg8 *) CYREG_PM_USB_CR0)\r
+#define USBFS_PM_USB_CR0_REG (* (reg8 *) CYREG_PM_USB_CR0)\r
+#define USBFS_DYN_RECONFIG_PTR ( (reg8 *) USBFS_USB__DYN_RECONFIG)\r
+#define USBFS_DYN_RECONFIG_REG (* (reg8 *) USBFS_USB__DYN_RECONFIG)\r
+\r
+#define USBFS_DM_INP_DIS_PTR ( (reg8 *) USBFS_Dm__INP_DIS)\r
+#define USBFS_DM_INP_DIS_REG (* (reg8 *) USBFS_Dm__INP_DIS)\r
+#define USBFS_DP_INP_DIS_PTR ( (reg8 *) USBFS_Dp__INP_DIS)\r
+#define USBFS_DP_INP_DIS_REG (* (reg8 *) USBFS_Dp__INP_DIS)\r
+#define USBFS_DP_INTSTAT_PTR ( (reg8 *) USBFS_Dp__INTSTAT)\r
+#define USBFS_DP_INTSTAT_REG (* (reg8 *) USBFS_Dp__INTSTAT)\r
+\r
+#if (USBFS_MON_VBUS == 1u)\r
+ #if (USBFS_EXTERN_VBUS == 0u)\r
+ #define USBFS_VBUS_DR_PTR ( (reg8 *) USBFS_VBUS__DR)\r
+ #define USBFS_VBUS_DR_REG (* (reg8 *) USBFS_VBUS__DR)\r
+ #define USBFS_VBUS_PS_PTR ( (reg8 *) USBFS_VBUS__PS)\r
+ #define USBFS_VBUS_PS_REG (* (reg8 *) USBFS_VBUS__PS)\r
+ #define USBFS_VBUS_MASK USBFS_VBUS__MASK\r
+ #else\r
+ #define USBFS_VBUS_PS_PTR ( (reg8 *) USBFS_Vbus_ps_sts_sts_reg__STATUS_REG )\r
+ #define USBFS_VBUS_MASK (0x01u)\r
+ #endif /* End USBFS_EXTERN_VBUS == 0u */\r
+#endif /* End USBFS_MON_VBUS */\r
+\r
+/* Renamed Registers for backward compatibility.\r
+* Should not be used in new designs.\r
+*/\r
+#define USBFS_ARB_CFG USBFS_ARB_CFG_PTR\r
+\r
+#define USBFS_ARB_EP1_CFG USBFS_ARB_EP1_CFG_PTR\r
+#define USBFS_ARB_EP1_INT_EN USBFS_ARB_EP1_INT_EN_PTR\r
+#define USBFS_ARB_EP1_SR USBFS_ARB_EP1_SR_PTR\r
+\r
+#define USBFS_ARB_EP2_CFG USBFS_ARB_EP2_CFG_PTR\r
+#define USBFS_ARB_EP2_INT_EN USBFS_ARB_EP2_INT_EN_PTR\r
+#define USBFS_ARB_EP2_SR USBFS_ARB_EP2_SR_PTR\r
+\r
+#define USBFS_ARB_EP3_CFG USBFS_ARB_EP3_CFG_PTR\r
+#define USBFS_ARB_EP3_INT_EN USBFS_ARB_EP3_INT_EN_PTR\r
+#define USBFS_ARB_EP3_SR USBFS_ARB_EP3_SR_PTR\r
+\r
+#define USBFS_ARB_EP4_CFG USBFS_ARB_EP4_CFG_PTR\r
+#define USBFS_ARB_EP4_INT_EN USBFS_ARB_EP4_INT_EN_PTR\r
+#define USBFS_ARB_EP4_SR USBFS_ARB_EP4_SR_PTR\r
+\r
+#define USBFS_ARB_EP5_CFG USBFS_ARB_EP5_CFG_PTR\r
+#define USBFS_ARB_EP5_INT_EN USBFS_ARB_EP5_INT_EN_PTR\r
+#define USBFS_ARB_EP5_SR USBFS_ARB_EP5_SR_PTR\r
+\r
+#define USBFS_ARB_EP6_CFG USBFS_ARB_EP6_CFG_PTR\r
+#define USBFS_ARB_EP6_INT_EN USBFS_ARB_EP6_INT_EN_PTR\r
+#define USBFS_ARB_EP6_SR USBFS_ARB_EP6_SR_PTR\r
+\r
+#define USBFS_ARB_EP7_CFG USBFS_ARB_EP7_CFG_PTR\r
+#define USBFS_ARB_EP7_INT_EN USBFS_ARB_EP7_INT_EN_PTR\r
+#define USBFS_ARB_EP7_SR USBFS_ARB_EP7_SR_PTR\r
+\r
+#define USBFS_ARB_EP8_CFG USBFS_ARB_EP8_CFG_PTR\r
+#define USBFS_ARB_EP8_INT_EN USBFS_ARB_EP8_INT_EN_PTR\r
+#define USBFS_ARB_EP8_SR USBFS_ARB_EP8_SR_PTR\r
+\r
+#define USBFS_ARB_INT_EN USBFS_ARB_INT_EN_PTR\r
+#define USBFS_ARB_INT_SR USBFS_ARB_INT_SR_PTR\r
+\r
+#define USBFS_ARB_RW1_DR USBFS_ARB_RW1_DR_PTR\r
+#define USBFS_ARB_RW1_RA USBFS_ARB_RW1_RA_PTR\r
+#define USBFS_ARB_RW1_RA_MSB USBFS_ARB_RW1_RA_MSB_PTR\r
+#define USBFS_ARB_RW1_WA USBFS_ARB_RW1_WA_PTR\r
+#define USBFS_ARB_RW1_WA_MSB USBFS_ARB_RW1_WA_MSB_PTR\r
+\r
+#define USBFS_ARB_RW2_DR USBFS_ARB_RW2_DR_PTR\r
+#define USBFS_ARB_RW2_RA USBFS_ARB_RW2_RA_PTR\r
+#define USBFS_ARB_RW2_RA_MSB USBFS_ARB_RW2_RA_MSB_PTR\r
+#define USBFS_ARB_RW2_WA USBFS_ARB_RW2_WA_PTR\r
+#define USBFS_ARB_RW2_WA_MSB USBFS_ARB_RW2_WA_MSB_PTR\r
+\r
+#define USBFS_ARB_RW3_DR USBFS_ARB_RW3_DR_PTR\r
+#define USBFS_ARB_RW3_RA USBFS_ARB_RW3_RA_PTR\r
+#define USBFS_ARB_RW3_RA_MSB USBFS_ARB_RW3_RA_MSB_PTR\r
+#define USBFS_ARB_RW3_WA USBFS_ARB_RW3_WA_PTR\r
+#define USBFS_ARB_RW3_WA_MSB USBFS_ARB_RW3_WA_MSB_PTR\r
+\r
+#define USBFS_ARB_RW4_DR USBFS_ARB_RW4_DR_PTR\r
+#define USBFS_ARB_RW4_RA USBFS_ARB_RW4_RA_PTR\r
+#define USBFS_ARB_RW4_RA_MSB USBFS_ARB_RW4_RA_MSB_PTR\r
+#define USBFS_ARB_RW4_WA USBFS_ARB_RW4_WA_PTR\r
+#define USBFS_ARB_RW4_WA_MSB USBFS_ARB_RW4_WA_MSB_PTR\r
+\r
+#define USBFS_ARB_RW5_DR USBFS_ARB_RW5_DR_PTR\r
+#define USBFS_ARB_RW5_RA USBFS_ARB_RW5_RA_PTR\r
+#define USBFS_ARB_RW5_RA_MSB USBFS_ARB_RW5_RA_MSB_PTR\r
+#define USBFS_ARB_RW5_WA USBFS_ARB_RW5_WA_PTR\r
+#define USBFS_ARB_RW5_WA_MSB USBFS_ARB_RW5_WA_MSB_PTR\r
+\r
+#define USBFS_ARB_RW6_DR USBFS_ARB_RW6_DR_PTR\r
+#define USBFS_ARB_RW6_RA USBFS_ARB_RW6_RA_PTR\r
+#define USBFS_ARB_RW6_RA_MSB USBFS_ARB_RW6_RA_MSB_PTR\r
+#define USBFS_ARB_RW6_WA USBFS_ARB_RW6_WA_PTR\r
+#define USBFS_ARB_RW6_WA_MSB USBFS_ARB_RW6_WA_MSB_PTR\r
+\r
+#define USBFS_ARB_RW7_DR USBFS_ARB_RW7_DR_PTR\r
+#define USBFS_ARB_RW7_RA USBFS_ARB_RW7_RA_PTR\r
+#define USBFS_ARB_RW7_RA_MSB USBFS_ARB_RW7_RA_MSB_PTR\r
+#define USBFS_ARB_RW7_WA USBFS_ARB_RW7_WA_PTR\r
+#define USBFS_ARB_RW7_WA_MSB USBFS_ARB_RW7_WA_MSB_PTR\r
+\r
+#define USBFS_ARB_RW8_DR USBFS_ARB_RW8_DR_PTR\r
+#define USBFS_ARB_RW8_RA USBFS_ARB_RW8_RA_PTR\r
+#define USBFS_ARB_RW8_RA_MSB USBFS_ARB_RW8_RA_MSB_PTR\r
+#define USBFS_ARB_RW8_WA USBFS_ARB_RW8_WA_PTR\r
+#define USBFS_ARB_RW8_WA_MSB USBFS_ARB_RW8_WA_MSB_PTR\r
+\r
+#define USBFS_BUF_SIZE USBFS_BUF_SIZE_PTR\r
+#define USBFS_BUS_RST_CNT USBFS_BUS_RST_CNT_PTR\r
+#define USBFS_CR0 USBFS_CR0_PTR\r
+#define USBFS_CR1 USBFS_CR1_PTR\r
+#define USBFS_CWA USBFS_CWA_PTR\r
+#define USBFS_CWA_MSB USBFS_CWA_MSB_PTR\r
+\r
+#define USBFS_DMA_THRES USBFS_DMA_THRES_PTR\r
+#define USBFS_DMA_THRES_MSB USBFS_DMA_THRES_MSB_PTR\r
+\r
+#define USBFS_EP_ACTIVE USBFS_EP_ACTIVE_PTR\r
+#define USBFS_EP_TYPE USBFS_EP_TYPE_PTR\r
+\r
+#define USBFS_EP0_CNT USBFS_EP0_CNT_PTR\r
+#define USBFS_EP0_CR USBFS_EP0_CR_PTR\r
+#define USBFS_EP0_DR0 USBFS_EP0_DR0_PTR\r
+#define USBFS_EP0_DR1 USBFS_EP0_DR1_PTR\r
+#define USBFS_EP0_DR2 USBFS_EP0_DR2_PTR\r
+#define USBFS_EP0_DR3 USBFS_EP0_DR3_PTR\r
+#define USBFS_EP0_DR4 USBFS_EP0_DR4_PTR\r
+#define USBFS_EP0_DR5 USBFS_EP0_DR5_PTR\r
+#define USBFS_EP0_DR6 USBFS_EP0_DR6_PTR\r
+#define USBFS_EP0_DR7 USBFS_EP0_DR7_PTR\r
+\r
+#define USBFS_OSCLK_DR0 USBFS_OSCLK_DR0_PTR\r
+#define USBFS_OSCLK_DR1 USBFS_OSCLK_DR1_PTR\r
+\r
+#define USBFS_PM_ACT_CFG USBFS_PM_ACT_CFG_PTR\r
+#define USBFS_PM_STBY_CFG USBFS_PM_STBY_CFG_PTR\r
+\r
+#define USBFS_SIE_EP_INT_EN USBFS_SIE_EP_INT_EN_PTR\r
+#define USBFS_SIE_EP_INT_SR USBFS_SIE_EP_INT_SR_PTR\r
+\r
+#define USBFS_SIE_EP1_CNT0 USBFS_SIE_EP1_CNT0_PTR\r
+#define USBFS_SIE_EP1_CNT1 USBFS_SIE_EP1_CNT1_PTR\r
+#define USBFS_SIE_EP1_CR0 USBFS_SIE_EP1_CR0_PTR\r
+\r
+#define USBFS_SIE_EP2_CNT0 USBFS_SIE_EP2_CNT0_PTR\r
+#define USBFS_SIE_EP2_CNT1 USBFS_SIE_EP2_CNT1_PTR\r
+#define USBFS_SIE_EP2_CR0 USBFS_SIE_EP2_CR0_PTR\r
+\r
+#define USBFS_SIE_EP3_CNT0 USBFS_SIE_EP3_CNT0_PTR\r
+#define USBFS_SIE_EP3_CNT1 USBFS_SIE_EP3_CNT1_PTR\r
+#define USBFS_SIE_EP3_CR0 USBFS_SIE_EP3_CR0_PTR\r
+\r
+#define USBFS_SIE_EP4_CNT0 USBFS_SIE_EP4_CNT0_PTR\r
+#define USBFS_SIE_EP4_CNT1 USBFS_SIE_EP4_CNT1_PTR\r
+#define USBFS_SIE_EP4_CR0 USBFS_SIE_EP4_CR0_PTR\r
+\r
+#define USBFS_SIE_EP5_CNT0 USBFS_SIE_EP5_CNT0_PTR\r
+#define USBFS_SIE_EP5_CNT1 USBFS_SIE_EP5_CNT1_PTR\r
+#define USBFS_SIE_EP5_CR0 USBFS_SIE_EP5_CR0_PTR\r
+\r
+#define USBFS_SIE_EP6_CNT0 USBFS_SIE_EP6_CNT0_PTR\r
+#define USBFS_SIE_EP6_CNT1 USBFS_SIE_EP6_CNT1_PTR\r
+#define USBFS_SIE_EP6_CR0 USBFS_SIE_EP6_CR0_PTR\r
+\r
+#define USBFS_SIE_EP7_CNT0 USBFS_SIE_EP7_CNT0_PTR\r
+#define USBFS_SIE_EP7_CNT1 USBFS_SIE_EP7_CNT1_PTR\r
+#define USBFS_SIE_EP7_CR0 USBFS_SIE_EP7_CR0_PTR\r
+\r
+#define USBFS_SIE_EP8_CNT0 USBFS_SIE_EP8_CNT0_PTR\r
+#define USBFS_SIE_EP8_CNT1 USBFS_SIE_EP8_CNT1_PTR\r
+#define USBFS_SIE_EP8_CR0 USBFS_SIE_EP8_CR0_PTR\r
+\r
+#define USBFS_SOF0 USBFS_SOF0_PTR\r
+#define USBFS_SOF1 USBFS_SOF1_PTR\r
+\r
+#define USBFS_USB_CLK_EN USBFS_USB_CLK_EN_PTR\r
+\r
+#define USBFS_USBIO_CR0 USBFS_USBIO_CR0_PTR\r
+#define USBFS_USBIO_CR1 USBFS_USBIO_CR1_PTR\r
+#define USBFS_USBIO_CR2 USBFS_USBIO_CR2_PTR\r
+\r
+#define USBFS_USB_MEM ((reg8 *) CYDEV_USB_MEM_BASE)\r
+\r
+#if(CYDEV_CHIP_DIE_EXPECT == CYDEV_CHIP_DIE_LEOPARD)\r
+ /* PSoC3 interrupt registers*/\r
+ #define USBFS_USB_ISR_PRIOR ((reg8 *) CYDEV_INTC_PRIOR0)\r
+ #define USBFS_USB_ISR_SET_EN ((reg8 *) CYDEV_INTC_SET_EN0)\r
+ #define USBFS_USB_ISR_CLR_EN ((reg8 *) CYDEV_INTC_CLR_EN0)\r
+ #define USBFS_USB_ISR_VECT ((cyisraddress *) CYDEV_INTC_VECT_MBASE)\r
+#elif(CYDEV_CHIP_DIE_EXPECT == CYDEV_CHIP_DIE_PANTHER)\r
+ /* PSoC5 interrupt registers*/\r
+ #define USBFS_USB_ISR_PRIOR ((reg8 *) CYDEV_NVIC_PRI_0)\r
+ #define USBFS_USB_ISR_SET_EN ((reg8 *) CYDEV_NVIC_SETENA0)\r
+ #define USBFS_USB_ISR_CLR_EN ((reg8 *) CYDEV_NVIC_CLRENA0)\r
+ #define USBFS_USB_ISR_VECT ((cyisraddress *) CYDEV_NVIC_VECT_OFFSET)\r
+#endif /* End CYDEV_CHIP_DIE_EXPECT */\r
+\r
+\r
+/***************************************\r
+* Interrupt vectors, masks and priorities\r
+***************************************/\r
+\r
+#define USBFS_BUS_RESET_PRIOR USBFS_bus_reset__INTC_PRIOR_NUM\r
+#define USBFS_BUS_RESET_MASK USBFS_bus_reset__INTC_MASK\r
+#define USBFS_BUS_RESET_VECT_NUM USBFS_bus_reset__INTC_NUMBER\r
+\r
+#define USBFS_SOF_PRIOR USBFS_sof_int__INTC_PRIOR_NUM\r
+#define USBFS_SOF_MASK USBFS_sof_int__INTC_MASK\r
+#define USBFS_SOF_VECT_NUM USBFS_sof_int__INTC_NUMBER\r
+\r
+#define USBFS_EP_0_PRIOR USBFS_ep_0__INTC_PRIOR_NUM\r
+#define USBFS_EP_0_MASK USBFS_ep_0__INTC_MASK\r
+#define USBFS_EP_0_VECT_NUM USBFS_ep_0__INTC_NUMBER\r
+\r
+#define USBFS_EP_1_PRIOR USBFS_ep_1__INTC_PRIOR_NUM\r
+#define USBFS_EP_1_MASK USBFS_ep_1__INTC_MASK\r
+#define USBFS_EP_1_VECT_NUM USBFS_ep_1__INTC_NUMBER\r
+\r
+#define USBFS_EP_2_PRIOR USBFS_ep_2__INTC_PRIOR_NUM\r
+#define USBFS_EP_2_MASK USBFS_ep_2__INTC_MASK\r
+#define USBFS_EP_2_VECT_NUM USBFS_ep_2__INTC_NUMBER\r
+\r
+#define USBFS_EP_3_PRIOR USBFS_ep_3__INTC_PRIOR_NUM\r
+#define USBFS_EP_3_MASK USBFS_ep_3__INTC_MASK\r
+#define USBFS_EP_3_VECT_NUM USBFS_ep_3__INTC_NUMBER\r
+\r
+#define USBFS_EP_4_PRIOR USBFS_ep_4__INTC_PRIOR_NUM\r
+#define USBFS_EP_4_MASK USBFS_ep_4__INTC_MASK\r
+#define USBFS_EP_4_VECT_NUM USBFS_ep_4__INTC_NUMBER\r
+\r
+#define USBFS_EP_5_PRIOR USBFS_ep_5__INTC_PRIOR_NUM\r
+#define USBFS_EP_5_MASK USBFS_ep_5__INTC_MASK\r
+#define USBFS_EP_5_VECT_NUM USBFS_ep_5__INTC_NUMBER\r
+\r
+#define USBFS_EP_6_PRIOR USBFS_ep_6__INTC_PRIOR_NUM\r
+#define USBFS_EP_6_MASK USBFS_ep_6__INTC_MASK\r
+#define USBFS_EP_6_VECT_NUM USBFS_ep_6__INTC_NUMBER\r
+\r
+#define USBFS_EP_7_PRIOR USBFS_ep_7__INTC_PRIOR_NUM\r
+#define USBFS_EP_7_MASK USBFS_ep_7__INTC_MASK\r
+#define USBFS_EP_7_VECT_NUM USBFS_ep_7__INTC_NUMBER\r
+\r
+#define USBFS_EP_8_PRIOR USBFS_ep_8__INTC_PRIOR_NUM\r
+#define USBFS_EP_8_MASK USBFS_ep_8__INTC_MASK\r
+#define USBFS_EP_8_VECT_NUM USBFS_ep_8__INTC_NUMBER\r
+\r
+#define USBFS_DP_INTC_PRIOR USBFS_dp_int__INTC_PRIOR_NUM\r
+#define USBFS_DP_INTC_MASK USBFS_dp_int__INTC_MASK\r
+#define USBFS_DP_INTC_VECT_NUM USBFS_dp_int__INTC_NUMBER\r
+\r
+/* ARB ISR should have higher priority from EP_X ISR, therefore it is defined to highest (0) */\r
+#define USBFS_ARB_PRIOR (0u)\r
+#define USBFS_ARB_MASK USBFS_arb_int__INTC_MASK\r
+#define USBFS_ARB_VECT_NUM USBFS_arb_int__INTC_NUMBER\r
+\r
+/***************************************\r
+ * Endpoint 0 offsets (Table 9-2)\r
+ **************************************/\r
+\r
+#define USBFS_bmRequestType USBFS_EP0_DR0_PTR\r
+#define USBFS_bRequest USBFS_EP0_DR1_PTR\r
+#define USBFS_wValue USBFS_EP0_DR2_PTR\r
+#define USBFS_wValueHi USBFS_EP0_DR3_PTR\r
+#define USBFS_wValueLo USBFS_EP0_DR2_PTR\r
+#define USBFS_wIndex USBFS_EP0_DR4_PTR\r
+#define USBFS_wIndexHi USBFS_EP0_DR5_PTR\r
+#define USBFS_wIndexLo USBFS_EP0_DR4_PTR\r
+#define USBFS_length USBFS_EP0_DR6_PTR\r
+#define USBFS_lengthHi USBFS_EP0_DR7_PTR\r
+#define USBFS_lengthLo USBFS_EP0_DR6_PTR\r
+\r
+\r
+/***************************************\r
+* Register Constants\r
+***************************************/\r
+#define USBFS_VDDD_MV CYDEV_VDDD_MV\r
+#define USBFS_3500MV (3500u)\r
+\r
+#define USBFS_CR1_REG_ENABLE (0x01u)\r
+#define USBFS_CR1_ENABLE_LOCK (0x02u)\r
+#define USBFS_CR1_BUS_ACTIVITY_SHIFT (0x02u)\r
+#define USBFS_CR1_BUS_ACTIVITY ((uint8)(0x01u << USBFS_CR1_BUS_ACTIVITY_SHIFT))\r
+#define USBFS_CR1_TRIM_MSB_EN (0x08u)\r
+\r
+#define USBFS_EP0_CNT_DATA_TOGGLE (0x80u)\r
+#define USBFS_EPX_CNT_DATA_TOGGLE (0x80u)\r
+#define USBFS_EPX_CNT0_MASK (0x0Fu)\r
+#define USBFS_EPX_CNTX_MSB_MASK (0x07u)\r
+#define USBFS_EPX_CNTX_ADDR_SHIFT (0x04u)\r
+#define USBFS_EPX_CNTX_ADDR_OFFSET (0x10u)\r
+#define USBFS_EPX_CNTX_CRC_COUNT (0x02u)\r
+#define USBFS_EPX_DATA_BUF_MAX (512u)\r
+\r
+#define USBFS_CR0_ENABLE (0x80u)\r
+\r
+/* A 100 KHz clock is used for BUS reset count. Recommended is to count 10 pulses */\r
+#define USBFS_BUS_RST_COUNT (0x0au)\r
+\r
+#define USBFS_USBIO_CR1_IOMODE (0x20u)\r
+#define USBFS_USBIO_CR1_USBPUEN (0x04u)\r
+#define USBFS_USBIO_CR1_DP0 (0x02u)\r
+#define USBFS_USBIO_CR1_DM0 (0x01u)\r
+\r
+#define USBFS_USBIO_CR0_TEN (0x80u)\r
+#define USBFS_USBIO_CR0_TSE0 (0x40u)\r
+#define USBFS_USBIO_CR0_TD (0x20u)\r
+#define USBFS_USBIO_CR0_RD (0x01u)\r
+\r
+#define USBFS_FASTCLK_IMO_CR_USBCLK_ON (0x40u)\r
+#define USBFS_FASTCLK_IMO_CR_XCLKEN (0x20u)\r
+#define USBFS_FASTCLK_IMO_CR_FX2ON (0x10u)\r
+\r
+#define USBFS_ARB_EPX_CFG_RESET (0x08u)\r
+#define USBFS_ARB_EPX_CFG_CRC_BYPASS (0x04u)\r
+#define USBFS_ARB_EPX_CFG_DMA_REQ (0x02u)\r
+#define USBFS_ARB_EPX_CFG_IN_DATA_RDY (0x01u)\r
+\r
+#define USBFS_ARB_EPX_SR_IN_BUF_FULL (0x01u)\r
+#define USBFS_ARB_EPX_SR_DMA_GNT (0x02u)\r
+#define USBFS_ARB_EPX_SR_BUF_OVER (0x04u)\r
+#define USBFS_ARB_EPX_SR_BUF_UNDER (0x08u)\r
+\r
+#define USBFS_ARB_CFG_AUTO_MEM (0x10u)\r
+#define USBFS_ARB_CFG_MANUAL_DMA (0x20u)\r
+#define USBFS_ARB_CFG_AUTO_DMA (0x40u)\r
+#define USBFS_ARB_CFG_CFG_CPM (0x80u)\r
+\r
+#if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ #define USBFS_ARB_EPX_INT_MASK (0x1Du)\r
+#else\r
+ #define USBFS_ARB_EPX_INT_MASK (0x1Fu)\r
+#endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+#define USBFS_ARB_INT_MASK (uint8)((USBFS_DMA1_REMOVE ^ 1u) | \\r
+ (uint8)((USBFS_DMA2_REMOVE ^ 1u) << 1u) | \\r
+ (uint8)((USBFS_DMA3_REMOVE ^ 1u) << 2u) | \\r
+ (uint8)((USBFS_DMA4_REMOVE ^ 1u) << 3u) | \\r
+ (uint8)((USBFS_DMA5_REMOVE ^ 1u) << 4u) | \\r
+ (uint8)((USBFS_DMA6_REMOVE ^ 1u) << 5u) | \\r
+ (uint8)((USBFS_DMA7_REMOVE ^ 1u) << 6u) | \\r
+ (uint8)((USBFS_DMA8_REMOVE ^ 1u) << 7u) )\r
+\r
+#define USBFS_SIE_EP_INT_EP1_MASK (0x01u)\r
+#define USBFS_SIE_EP_INT_EP2_MASK (0x02u)\r
+#define USBFS_SIE_EP_INT_EP3_MASK (0x04u)\r
+#define USBFS_SIE_EP_INT_EP4_MASK (0x08u)\r
+#define USBFS_SIE_EP_INT_EP5_MASK (0x10u)\r
+#define USBFS_SIE_EP_INT_EP6_MASK (0x20u)\r
+#define USBFS_SIE_EP_INT_EP7_MASK (0x40u)\r
+#define USBFS_SIE_EP_INT_EP8_MASK (0x80u)\r
+\r
+#define USBFS_PM_ACT_EN_FSUSB USBFS_USB__PM_ACT_MSK\r
+#define USBFS_PM_STBY_EN_FSUSB USBFS_USB__PM_STBY_MSK\r
+#define USBFS_PM_AVAIL_EN_FSUSBIO (0x10u)\r
+\r
+#define USBFS_PM_USB_CR0_REF_EN (0x01u)\r
+#define USBFS_PM_USB_CR0_PD_N (0x02u)\r
+#define USBFS_PM_USB_CR0_PD_PULLUP_N (0x04u)\r
+\r
+#define USBFS_USB_CLK_ENABLE (0x01u)\r
+\r
+#define USBFS_DM_MASK USBFS_Dm__0__MASK\r
+#define USBFS_DP_MASK USBFS_Dp__0__MASK\r
+\r
+#define USBFS_DYN_RECONFIG_ENABLE (0x01u)\r
+#define USBFS_DYN_RECONFIG_EP_SHIFT (0x01u)\r
+#define USBFS_DYN_RECONFIG_RDY_STS (0x10u)\r
+\r
+\r
+#endif /* End CY_USBFS_USBFS_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_Dm.c \r
+* Version 1.90\r
+*\r
+* Description:\r
+* This file contains API to enable firmware control of a Pins component.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions, \r
+* disclaimers, and limitations in the end user license agreement accompanying \r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "cytypes.h"\r
+#include "USBFS_Dm.h"\r
+\r
+/* APIs are not generated for P15[7:6] on PSoC 5 */\r
+#if !(CY_PSOC5A &&\\r
+ USBFS_Dm__PORT == 15 && ((USBFS_Dm__MASK & 0xC0) != 0))\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dm_Write\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Assign a new value to the digital port's data output register. \r
+*\r
+* Parameters: \r
+* prtValue: The value to be assigned to the Digital Port. \r
+*\r
+* Return: \r
+* None\r
+* \r
+*******************************************************************************/\r
+void USBFS_Dm_Write(uint8 value) \r
+{\r
+ uint8 staticBits = (USBFS_Dm_DR & (uint8)(~USBFS_Dm_MASK));\r
+ USBFS_Dm_DR = staticBits | ((uint8)(value << USBFS_Dm_SHIFT) & USBFS_Dm_MASK);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dm_SetDriveMode\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Change the drive mode on the pins of the port.\r
+* \r
+* Parameters: \r
+* mode: Change the pins to this drive mode.\r
+*\r
+* Return: \r
+* None\r
+*\r
+*******************************************************************************/\r
+void USBFS_Dm_SetDriveMode(uint8 mode) \r
+{\r
+ CyPins_SetPinDriveMode(USBFS_Dm_0, mode);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dm_Read\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Read the current value on the pins of the Digital Port in right justified \r
+* form.\r
+*\r
+* Parameters: \r
+* None\r
+*\r
+* Return: \r
+* Returns the current value of the Digital Port as a right justified number\r
+* \r
+* Note:\r
+* Macro USBFS_Dm_ReadPS calls this function. \r
+* \r
+*******************************************************************************/\r
+uint8 USBFS_Dm_Read(void) \r
+{\r
+ return (USBFS_Dm_PS & USBFS_Dm_MASK) >> USBFS_Dm_SHIFT;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dm_ReadDataReg\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Read the current value assigned to a Digital Port's data output register\r
+*\r
+* Parameters: \r
+* None \r
+*\r
+* Return: \r
+* Returns the current value assigned to the Digital Port's data output register\r
+* \r
+*******************************************************************************/\r
+uint8 USBFS_Dm_ReadDataReg(void) \r
+{\r
+ return (USBFS_Dm_DR & USBFS_Dm_MASK) >> USBFS_Dm_SHIFT;\r
+}\r
+\r
+\r
+/* If Interrupts Are Enabled for this Pins component */ \r
+#if defined(USBFS_Dm_INTSTAT) \r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_Dm_ClearInterrupt\r
+ ********************************************************************************\r
+ * Summary:\r
+ * Clears any active interrupts attached to port and returns the value of the \r
+ * interrupt status register.\r
+ *\r
+ * Parameters: \r
+ * None \r
+ *\r
+ * Return: \r
+ * Returns the value of the interrupt status register\r
+ * \r
+ *******************************************************************************/\r
+ uint8 USBFS_Dm_ClearInterrupt(void) \r
+ {\r
+ return (USBFS_Dm_INTSTAT & USBFS_Dm_MASK) >> USBFS_Dm_SHIFT;\r
+ }\r
+\r
+#endif /* If Interrupts Are Enabled for this Pins component */ \r
+\r
+#endif /* CY_PSOC5A... */\r
+\r
+ \r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_Dm.h \r
+* Version 1.90\r
+*\r
+* Description:\r
+* This file containts Control Register function prototypes and register defines\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions, \r
+* disclaimers, and limitations in the end user license agreement accompanying \r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_PINS_USBFS_Dm_H) /* Pins USBFS_Dm_H */\r
+#define CY_PINS_USBFS_Dm_H\r
+\r
+#include "cytypes.h"\r
+#include "cyfitter.h"\r
+#include "cypins.h"\r
+#include "USBFS_Dm_aliases.h"\r
+\r
+/* Check to see if required defines such as CY_PSOC5A are available */\r
+/* They are defined starting with cy_boot v3.0 */\r
+#if !defined (CY_PSOC5A)\r
+ #error Component cy_pins_v1_90 requires cy_boot v3.0 or later\r
+#endif /* (CY_PSOC5A) */\r
+\r
+/* APIs are not generated for P15[7:6] */\r
+#if !(CY_PSOC5A &&\\r
+ USBFS_Dm__PORT == 15 && ((USBFS_Dm__MASK & 0xC0) != 0))\r
+\r
+\r
+/***************************************\r
+* Function Prototypes \r
+***************************************/ \r
+\r
+void USBFS_Dm_Write(uint8 value) ;\r
+void USBFS_Dm_SetDriveMode(uint8 mode) ;\r
+uint8 USBFS_Dm_ReadDataReg(void) ;\r
+uint8 USBFS_Dm_Read(void) ;\r
+uint8 USBFS_Dm_ClearInterrupt(void) ;\r
+\r
+\r
+/***************************************\r
+* API Constants \r
+***************************************/\r
+\r
+/* Drive Modes */\r
+#define USBFS_Dm_DM_ALG_HIZ PIN_DM_ALG_HIZ\r
+#define USBFS_Dm_DM_DIG_HIZ PIN_DM_DIG_HIZ\r
+#define USBFS_Dm_DM_RES_UP PIN_DM_RES_UP\r
+#define USBFS_Dm_DM_RES_DWN PIN_DM_RES_DWN\r
+#define USBFS_Dm_DM_OD_LO PIN_DM_OD_LO\r
+#define USBFS_Dm_DM_OD_HI PIN_DM_OD_HI\r
+#define USBFS_Dm_DM_STRONG PIN_DM_STRONG\r
+#define USBFS_Dm_DM_RES_UPDWN PIN_DM_RES_UPDWN\r
+\r
+/* Digital Port Constants */\r
+#define USBFS_Dm_MASK USBFS_Dm__MASK\r
+#define USBFS_Dm_SHIFT USBFS_Dm__SHIFT\r
+#define USBFS_Dm_WIDTH 1u\r
+\r
+\r
+/***************************************\r
+* Registers \r
+***************************************/\r
+\r
+/* Main Port Registers */\r
+/* Pin State */\r
+#define USBFS_Dm_PS (* (reg8 *) USBFS_Dm__PS)\r
+/* Data Register */\r
+#define USBFS_Dm_DR (* (reg8 *) USBFS_Dm__DR)\r
+/* Port Number */\r
+#define USBFS_Dm_PRT_NUM (* (reg8 *) USBFS_Dm__PRT) \r
+/* Connect to Analog Globals */ \r
+#define USBFS_Dm_AG (* (reg8 *) USBFS_Dm__AG) \r
+/* Analog MUX bux enable */\r
+#define USBFS_Dm_AMUX (* (reg8 *) USBFS_Dm__AMUX) \r
+/* Bidirectional Enable */ \r
+#define USBFS_Dm_BIE (* (reg8 *) USBFS_Dm__BIE)\r
+/* Bit-mask for Aliased Register Access */\r
+#define USBFS_Dm_BIT_MASK (* (reg8 *) USBFS_Dm__BIT_MASK)\r
+/* Bypass Enable */\r
+#define USBFS_Dm_BYP (* (reg8 *) USBFS_Dm__BYP)\r
+/* Port wide control signals */ \r
+#define USBFS_Dm_CTL (* (reg8 *) USBFS_Dm__CTL)\r
+/* Drive Modes */\r
+#define USBFS_Dm_DM0 (* (reg8 *) USBFS_Dm__DM0) \r
+#define USBFS_Dm_DM1 (* (reg8 *) USBFS_Dm__DM1)\r
+#define USBFS_Dm_DM2 (* (reg8 *) USBFS_Dm__DM2) \r
+/* Input Buffer Disable Override */\r
+#define USBFS_Dm_INP_DIS (* (reg8 *) USBFS_Dm__INP_DIS)\r
+/* LCD Common or Segment Drive */\r
+#define USBFS_Dm_LCD_COM_SEG (* (reg8 *) USBFS_Dm__LCD_COM_SEG)\r
+/* Enable Segment LCD */\r
+#define USBFS_Dm_LCD_EN (* (reg8 *) USBFS_Dm__LCD_EN)\r
+/* Slew Rate Control */\r
+#define USBFS_Dm_SLW (* (reg8 *) USBFS_Dm__SLW)\r
+\r
+/* DSI Port Registers */\r
+/* Global DSI Select Register */\r
+#define USBFS_Dm_PRTDSI__CAPS_SEL (* (reg8 *) USBFS_Dm__PRTDSI__CAPS_SEL) \r
+/* Double Sync Enable */\r
+#define USBFS_Dm_PRTDSI__DBL_SYNC_IN (* (reg8 *) USBFS_Dm__PRTDSI__DBL_SYNC_IN) \r
+/* Output Enable Select Drive Strength */\r
+#define USBFS_Dm_PRTDSI__OE_SEL0 (* (reg8 *) USBFS_Dm__PRTDSI__OE_SEL0) \r
+#define USBFS_Dm_PRTDSI__OE_SEL1 (* (reg8 *) USBFS_Dm__PRTDSI__OE_SEL1) \r
+/* Port Pin Output Select Registers */\r
+#define USBFS_Dm_PRTDSI__OUT_SEL0 (* (reg8 *) USBFS_Dm__PRTDSI__OUT_SEL0) \r
+#define USBFS_Dm_PRTDSI__OUT_SEL1 (* (reg8 *) USBFS_Dm__PRTDSI__OUT_SEL1) \r
+/* Sync Output Enable Registers */\r
+#define USBFS_Dm_PRTDSI__SYNC_OUT (* (reg8 *) USBFS_Dm__PRTDSI__SYNC_OUT) \r
+\r
+\r
+#if defined(USBFS_Dm__INTSTAT) /* Interrupt Registers */\r
+\r
+ #define USBFS_Dm_INTSTAT (* (reg8 *) USBFS_Dm__INTSTAT)\r
+ #define USBFS_Dm_SNAP (* (reg8 *) USBFS_Dm__SNAP)\r
+\r
+#endif /* Interrupt Registers */\r
+\r
+#endif /* CY_PSOC5A... */\r
+\r
+#endif /* CY_PINS_USBFS_Dm_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_Dm.h \r
+* Version 1.90\r
+*\r
+* Description:\r
+* This file containts Control Register function prototypes and register defines\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions, \r
+* disclaimers, and limitations in the end user license agreement accompanying \r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_PINS_USBFS_Dm_ALIASES_H) /* Pins USBFS_Dm_ALIASES_H */\r
+#define CY_PINS_USBFS_Dm_ALIASES_H\r
+\r
+#include "cytypes.h"\r
+#include "cyfitter.h"\r
+\r
+\r
+\r
+/***************************************\r
+* Constants \r
+***************************************/\r
+#define USBFS_Dm_0 USBFS_Dm__0__PC\r
+\r
+#endif /* End Pins USBFS_Dm_ALIASES_H */\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_Dp.c \r
+* Version 1.90\r
+*\r
+* Description:\r
+* This file contains API to enable firmware control of a Pins component.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions, \r
+* disclaimers, and limitations in the end user license agreement accompanying \r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "cytypes.h"\r
+#include "USBFS_Dp.h"\r
+\r
+/* APIs are not generated for P15[7:6] on PSoC 5 */\r
+#if !(CY_PSOC5A &&\\r
+ USBFS_Dp__PORT == 15 && ((USBFS_Dp__MASK & 0xC0) != 0))\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dp_Write\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Assign a new value to the digital port's data output register. \r
+*\r
+* Parameters: \r
+* prtValue: The value to be assigned to the Digital Port. \r
+*\r
+* Return: \r
+* None\r
+* \r
+*******************************************************************************/\r
+void USBFS_Dp_Write(uint8 value) \r
+{\r
+ uint8 staticBits = (USBFS_Dp_DR & (uint8)(~USBFS_Dp_MASK));\r
+ USBFS_Dp_DR = staticBits | ((uint8)(value << USBFS_Dp_SHIFT) & USBFS_Dp_MASK);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dp_SetDriveMode\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Change the drive mode on the pins of the port.\r
+* \r
+* Parameters: \r
+* mode: Change the pins to this drive mode.\r
+*\r
+* Return: \r
+* None\r
+*\r
+*******************************************************************************/\r
+void USBFS_Dp_SetDriveMode(uint8 mode) \r
+{\r
+ CyPins_SetPinDriveMode(USBFS_Dp_0, mode);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dp_Read\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Read the current value on the pins of the Digital Port in right justified \r
+* form.\r
+*\r
+* Parameters: \r
+* None\r
+*\r
+* Return: \r
+* Returns the current value of the Digital Port as a right justified number\r
+* \r
+* Note:\r
+* Macro USBFS_Dp_ReadPS calls this function. \r
+* \r
+*******************************************************************************/\r
+uint8 USBFS_Dp_Read(void) \r
+{\r
+ return (USBFS_Dp_PS & USBFS_Dp_MASK) >> USBFS_Dp_SHIFT;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Dp_ReadDataReg\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Read the current value assigned to a Digital Port's data output register\r
+*\r
+* Parameters: \r
+* None \r
+*\r
+* Return: \r
+* Returns the current value assigned to the Digital Port's data output register\r
+* \r
+*******************************************************************************/\r
+uint8 USBFS_Dp_ReadDataReg(void) \r
+{\r
+ return (USBFS_Dp_DR & USBFS_Dp_MASK) >> USBFS_Dp_SHIFT;\r
+}\r
+\r
+\r
+/* If Interrupts Are Enabled for this Pins component */ \r
+#if defined(USBFS_Dp_INTSTAT) \r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_Dp_ClearInterrupt\r
+ ********************************************************************************\r
+ * Summary:\r
+ * Clears any active interrupts attached to port and returns the value of the \r
+ * interrupt status register.\r
+ *\r
+ * Parameters: \r
+ * None \r
+ *\r
+ * Return: \r
+ * Returns the value of the interrupt status register\r
+ * \r
+ *******************************************************************************/\r
+ uint8 USBFS_Dp_ClearInterrupt(void) \r
+ {\r
+ return (USBFS_Dp_INTSTAT & USBFS_Dp_MASK) >> USBFS_Dp_SHIFT;\r
+ }\r
+\r
+#endif /* If Interrupts Are Enabled for this Pins component */ \r
+\r
+#endif /* CY_PSOC5A... */\r
+\r
+ \r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_Dp.h \r
+* Version 1.90\r
+*\r
+* Description:\r
+* This file containts Control Register function prototypes and register defines\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions, \r
+* disclaimers, and limitations in the end user license agreement accompanying \r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_PINS_USBFS_Dp_H) /* Pins USBFS_Dp_H */\r
+#define CY_PINS_USBFS_Dp_H\r
+\r
+#include "cytypes.h"\r
+#include "cyfitter.h"\r
+#include "cypins.h"\r
+#include "USBFS_Dp_aliases.h"\r
+\r
+/* Check to see if required defines such as CY_PSOC5A are available */\r
+/* They are defined starting with cy_boot v3.0 */\r
+#if !defined (CY_PSOC5A)\r
+ #error Component cy_pins_v1_90 requires cy_boot v3.0 or later\r
+#endif /* (CY_PSOC5A) */\r
+\r
+/* APIs are not generated for P15[7:6] */\r
+#if !(CY_PSOC5A &&\\r
+ USBFS_Dp__PORT == 15 && ((USBFS_Dp__MASK & 0xC0) != 0))\r
+\r
+\r
+/***************************************\r
+* Function Prototypes \r
+***************************************/ \r
+\r
+void USBFS_Dp_Write(uint8 value) ;\r
+void USBFS_Dp_SetDriveMode(uint8 mode) ;\r
+uint8 USBFS_Dp_ReadDataReg(void) ;\r
+uint8 USBFS_Dp_Read(void) ;\r
+uint8 USBFS_Dp_ClearInterrupt(void) ;\r
+\r
+\r
+/***************************************\r
+* API Constants \r
+***************************************/\r
+\r
+/* Drive Modes */\r
+#define USBFS_Dp_DM_ALG_HIZ PIN_DM_ALG_HIZ\r
+#define USBFS_Dp_DM_DIG_HIZ PIN_DM_DIG_HIZ\r
+#define USBFS_Dp_DM_RES_UP PIN_DM_RES_UP\r
+#define USBFS_Dp_DM_RES_DWN PIN_DM_RES_DWN\r
+#define USBFS_Dp_DM_OD_LO PIN_DM_OD_LO\r
+#define USBFS_Dp_DM_OD_HI PIN_DM_OD_HI\r
+#define USBFS_Dp_DM_STRONG PIN_DM_STRONG\r
+#define USBFS_Dp_DM_RES_UPDWN PIN_DM_RES_UPDWN\r
+\r
+/* Digital Port Constants */\r
+#define USBFS_Dp_MASK USBFS_Dp__MASK\r
+#define USBFS_Dp_SHIFT USBFS_Dp__SHIFT\r
+#define USBFS_Dp_WIDTH 1u\r
+\r
+\r
+/***************************************\r
+* Registers \r
+***************************************/\r
+\r
+/* Main Port Registers */\r
+/* Pin State */\r
+#define USBFS_Dp_PS (* (reg8 *) USBFS_Dp__PS)\r
+/* Data Register */\r
+#define USBFS_Dp_DR (* (reg8 *) USBFS_Dp__DR)\r
+/* Port Number */\r
+#define USBFS_Dp_PRT_NUM (* (reg8 *) USBFS_Dp__PRT) \r
+/* Connect to Analog Globals */ \r
+#define USBFS_Dp_AG (* (reg8 *) USBFS_Dp__AG) \r
+/* Analog MUX bux enable */\r
+#define USBFS_Dp_AMUX (* (reg8 *) USBFS_Dp__AMUX) \r
+/* Bidirectional Enable */ \r
+#define USBFS_Dp_BIE (* (reg8 *) USBFS_Dp__BIE)\r
+/* Bit-mask for Aliased Register Access */\r
+#define USBFS_Dp_BIT_MASK (* (reg8 *) USBFS_Dp__BIT_MASK)\r
+/* Bypass Enable */\r
+#define USBFS_Dp_BYP (* (reg8 *) USBFS_Dp__BYP)\r
+/* Port wide control signals */ \r
+#define USBFS_Dp_CTL (* (reg8 *) USBFS_Dp__CTL)\r
+/* Drive Modes */\r
+#define USBFS_Dp_DM0 (* (reg8 *) USBFS_Dp__DM0) \r
+#define USBFS_Dp_DM1 (* (reg8 *) USBFS_Dp__DM1)\r
+#define USBFS_Dp_DM2 (* (reg8 *) USBFS_Dp__DM2) \r
+/* Input Buffer Disable Override */\r
+#define USBFS_Dp_INP_DIS (* (reg8 *) USBFS_Dp__INP_DIS)\r
+/* LCD Common or Segment Drive */\r
+#define USBFS_Dp_LCD_COM_SEG (* (reg8 *) USBFS_Dp__LCD_COM_SEG)\r
+/* Enable Segment LCD */\r
+#define USBFS_Dp_LCD_EN (* (reg8 *) USBFS_Dp__LCD_EN)\r
+/* Slew Rate Control */\r
+#define USBFS_Dp_SLW (* (reg8 *) USBFS_Dp__SLW)\r
+\r
+/* DSI Port Registers */\r
+/* Global DSI Select Register */\r
+#define USBFS_Dp_PRTDSI__CAPS_SEL (* (reg8 *) USBFS_Dp__PRTDSI__CAPS_SEL) \r
+/* Double Sync Enable */\r
+#define USBFS_Dp_PRTDSI__DBL_SYNC_IN (* (reg8 *) USBFS_Dp__PRTDSI__DBL_SYNC_IN) \r
+/* Output Enable Select Drive Strength */\r
+#define USBFS_Dp_PRTDSI__OE_SEL0 (* (reg8 *) USBFS_Dp__PRTDSI__OE_SEL0) \r
+#define USBFS_Dp_PRTDSI__OE_SEL1 (* (reg8 *) USBFS_Dp__PRTDSI__OE_SEL1) \r
+/* Port Pin Output Select Registers */\r
+#define USBFS_Dp_PRTDSI__OUT_SEL0 (* (reg8 *) USBFS_Dp__PRTDSI__OUT_SEL0) \r
+#define USBFS_Dp_PRTDSI__OUT_SEL1 (* (reg8 *) USBFS_Dp__PRTDSI__OUT_SEL1) \r
+/* Sync Output Enable Registers */\r
+#define USBFS_Dp_PRTDSI__SYNC_OUT (* (reg8 *) USBFS_Dp__PRTDSI__SYNC_OUT) \r
+\r
+\r
+#if defined(USBFS_Dp__INTSTAT) /* Interrupt Registers */\r
+\r
+ #define USBFS_Dp_INTSTAT (* (reg8 *) USBFS_Dp__INTSTAT)\r
+ #define USBFS_Dp_SNAP (* (reg8 *) USBFS_Dp__SNAP)\r
+\r
+#endif /* Interrupt Registers */\r
+\r
+#endif /* CY_PSOC5A... */\r
+\r
+#endif /* CY_PINS_USBFS_Dp_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_Dp.h \r
+* Version 1.90\r
+*\r
+* Description:\r
+* This file containts Control Register function prototypes and register defines\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions, \r
+* disclaimers, and limitations in the end user license agreement accompanying \r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_PINS_USBFS_Dp_ALIASES_H) /* Pins USBFS_Dp_ALIASES_H */\r
+#define CY_PINS_USBFS_Dp_ALIASES_H\r
+\r
+#include "cytypes.h"\r
+#include "cyfitter.h"\r
+\r
+\r
+\r
+/***************************************\r
+* Constants \r
+***************************************/\r
+#define USBFS_Dp_0 USBFS_Dp__0__PC\r
+\r
+#endif /* End Pins USBFS_Dp_ALIASES_H */\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_audio.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* USB AUDIO Class request handler.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+\r
+#if defined(USBFS_ENABLE_AUDIO_CLASS)\r
+\r
+#include "USBFS_audio.h"\r
+#include "USBFS_pvt.h"\r
+#if defined(USBFS_ENABLE_MIDI_STREAMING) \r
+ #include "USBFS_midi.h"\r
+#endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+\r
+\r
+/***************************************\r
+* Custom Declarations\r
+***************************************/\r
+\r
+/* `#START CUSTOM_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+#if !defined(USER_SUPPLIED_AUDIO_HANDLER)\r
+\r
+\r
+/***************************************\r
+* AUDIO Variables\r
+***************************************/\r
+\r
+#if defined(USBFS_ENABLE_AUDIO_STREAMING)\r
+ volatile uint8 USBFS_currentSampleFrequency[USBFS_MAX_EP][USBFS_SAMPLE_FREQ_LEN];\r
+ volatile uint8 USBFS_frequencyChanged;\r
+ volatile uint8 USBFS_currentMute;\r
+ volatile uint8 USBFS_currentVolume[USBFS_VOLUME_LEN];\r
+ volatile uint8 USBFS_minimumVolume[USBFS_VOLUME_LEN] = {USBFS_VOL_MIN_LSB,\r
+ USBFS_VOL_MIN_MSB};\r
+ volatile uint8 USBFS_maximumVolume[USBFS_VOLUME_LEN] = {USBFS_VOL_MAX_LSB,\r
+ USBFS_VOL_MAX_MSB};\r
+ volatile uint8 USBFS_resolutionVolume[USBFS_VOLUME_LEN] = {USBFS_VOL_RES_LSB,\r
+ USBFS_VOL_RES_MSB};\r
+#endif /* End USBFS_ENABLE_AUDIO_STREAMING */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_DispatchAUDIOClassRqst\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine dispatches class requests\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled\r
+*\r
+* Global variables:\r
+* USBFS_currentSampleFrequency: Contains the current audio Sample\r
+* Frequency. It is set by the Host using SET_CUR request to the endpoint.\r
+* USBFS_frequencyChanged: This variable is used as a flag for the\r
+* user code, to be aware that Host has been sent request for changing\r
+* Sample Frequency. Sample frequency will be sent on the next OUT\r
+* transaction. It is contains endpoint address when set. The following\r
+* code is recommended for detecting new Sample Frequency in main code:\r
+* if((USBFS_frequencyChanged != 0) &&\r
+* (USBFS_transferState == USBFS_TRANS_STATE_IDLE))\r
+* {\r
+* USBFS_frequencyChanged = 0;\r
+* }\r
+* USBFS_transferState variable is checked to be sure that\r
+* transfer completes.\r
+* USBFS_currentMute: Contains mute configuration set by Host.\r
+* USBFS_currentVolume: Contains volume level set by Host.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_DispatchAUDIOClassRqst(void) \r
+{\r
+ uint8 requestHandled = USBFS_FALSE;\r
+\r
+ #if defined(USBFS_ENABLE_AUDIO_STREAMING)\r
+ uint8 epNumber;\r
+ epNumber = CY_GET_REG8(USBFS_wIndexLo) & USBFS_DIR_UNUSED;\r
+ #endif /* End USBFS_ENABLE_AUDIO_STREAMING */\r
+\r
+ if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) == USBFS_RQST_DIR_D2H)\r
+ {\r
+ /* Control Read */\r
+ if((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK) == \\r
+ USBFS_RQST_RCPT_EP)\r
+ {\r
+ /* Endpoint */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_GET_CUR:\r
+ #if defined(USBFS_ENABLE_AUDIO_STREAMING)\r
+ if(CY_GET_REG8(USBFS_wValueHi) == USBFS_SAMPLING_FREQ_CONTROL)\r
+ {\r
+ /* Endpoint Control Selector is Sampling Frequency */\r
+ USBFS_currentTD.wCount = USBFS_SAMPLE_FREQ_LEN;\r
+ USBFS_currentTD.pData = USBFS_currentSampleFrequency[epNumber];\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ #endif /* End USBFS_ENABLE_AUDIO_STREAMING */\r
+\r
+ /* `#START AUDIO_READ_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ else if((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK) == \\r
+ USBFS_RQST_RCPT_IFC)\r
+ {\r
+ /* Interface or Entity ID */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_GET_CUR:\r
+ #if defined(USBFS_ENABLE_AUDIO_STREAMING)\r
+ if(CY_GET_REG8(USBFS_wValueHi) == USBFS_MUTE_CONTROL)\r
+ {\r
+ /* `#START MUTE_CONTROL_GET_REQUEST` Place multi-channel handler here */\r
+\r
+ /* `#END` */\r
+ \r
+ /* Entity ID Control Selector is MUTE */\r
+ USBFS_currentTD.wCount = 1u;\r
+ USBFS_currentTD.pData = &USBFS_currentMute;\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ else if(CY_GET_REG8(USBFS_wValueHi) == USBFS_VOLUME_CONTROL)\r
+ {\r
+ /* `#START VOLUME_CONTROL_GET_REQUEST` Place multi-channel handler here */\r
+\r
+ /* `#END` */\r
+\r
+ /* Entity ID Control Selector is VOLUME, */\r
+ USBFS_currentTD.wCount = USBFS_VOLUME_LEN;\r
+ USBFS_currentTD.pData = USBFS_currentVolume;\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ else\r
+ {\r
+ /* `#START OTHER_GET_CUR_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+ }\r
+ break;\r
+ case USBFS_GET_MIN: /* GET_MIN */\r
+ if(CY_GET_REG8(USBFS_wValueHi) == USBFS_VOLUME_CONTROL)\r
+ {\r
+ /* Entity ID Control Selector is VOLUME, */\r
+ USBFS_currentTD.wCount = USBFS_VOLUME_LEN;\r
+ USBFS_currentTD.pData = &USBFS_minimumVolume[0];\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ break;\r
+ case USBFS_GET_MAX: /* GET_MAX */\r
+ if(CY_GET_REG8(USBFS_wValueHi) == USBFS_VOLUME_CONTROL)\r
+ {\r
+ /* Entity ID Control Selector is VOLUME, */\r
+ USBFS_currentTD.wCount = USBFS_VOLUME_LEN;\r
+ USBFS_currentTD.pData = &USBFS_maximumVolume[0];\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ break;\r
+ case USBFS_GET_RES: /* GET_RES */\r
+ if(CY_GET_REG8(USBFS_wValueHi) == USBFS_VOLUME_CONTROL)\r
+ {\r
+ /* Entity ID Control Selector is VOLUME, */\r
+ USBFS_currentTD.wCount = USBFS_VOLUME_LEN;\r
+ USBFS_currentTD.pData = &USBFS_resolutionVolume[0];\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ break;\r
+ /* The contents of the status message is reserved for future use.\r
+ * For the time being, a null packet should be returned in the data stage of the\r
+ * control transfer, and the received null packet should be ACKed.\r
+ */\r
+ case USBFS_GET_STAT:\r
+ USBFS_currentTD.wCount = 0u;\r
+ requestHandled = USBFS_InitControlWrite();\r
+\r
+ #endif /* End USBFS_ENABLE_AUDIO_STREAMING */\r
+\r
+ /* `#START AUDIO_WRITE_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ { /* USBFS_RQST_RCPT_OTHER */\r
+ }\r
+ }\r
+ else if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) == \\r
+ USBFS_RQST_DIR_H2D)\r
+ {\r
+ /* Control Write */\r
+ if((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK) == \\r
+ USBFS_RQST_RCPT_EP)\r
+ {\r
+ /* Endpoint */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_SET_CUR:\r
+ #if defined(USBFS_ENABLE_AUDIO_STREAMING)\r
+ if(CY_GET_REG8(USBFS_wValueHi) == USBFS_SAMPLING_FREQ_CONTROL)\r
+ {\r
+ /* Endpoint Control Selector is Sampling Frequency */\r
+ USBFS_currentTD.wCount = USBFS_SAMPLE_FREQ_LEN;\r
+ USBFS_currentTD.pData = USBFS_currentSampleFrequency[epNumber];\r
+ requestHandled = USBFS_InitControlWrite();\r
+ USBFS_frequencyChanged = epNumber;\r
+ }\r
+ #endif /* End USBFS_ENABLE_AUDIO_STREAMING */\r
+\r
+ /* `#START AUDIO_SAMPLING_FREQ_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ else if((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK) == \\r
+ USBFS_RQST_RCPT_IFC)\r
+ {\r
+ /* Interface or Entity ID */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_SET_CUR:\r
+ #if defined(USBFS_ENABLE_AUDIO_STREAMING)\r
+ if(CY_GET_REG8(USBFS_wValueHi) == USBFS_MUTE_CONTROL)\r
+ {\r
+ /* `#START MUTE_SET_REQUEST` Place multi-channel handler here */\r
+\r
+ /* `#END` */\r
+\r
+ /* Entity ID Control Selector is MUTE */\r
+ USBFS_currentTD.wCount = 1u;\r
+ USBFS_currentTD.pData = &USBFS_currentMute;\r
+ requestHandled = USBFS_InitControlWrite();\r
+ }\r
+ else if(CY_GET_REG8(USBFS_wValueHi) == USBFS_VOLUME_CONTROL)\r
+ {\r
+ /* `#START VOLUME_CONTROL_SET_REQUEST` Place multi-channel handler here */\r
+\r
+ /* `#END` */\r
+\r
+ /* Entity ID Control Selector is VOLUME */\r
+ USBFS_currentTD.wCount = USBFS_VOLUME_LEN;\r
+ USBFS_currentTD.pData = USBFS_currentVolume;\r
+ requestHandled = USBFS_InitControlWrite();\r
+ }\r
+ else\r
+ {\r
+ /* `#START OTHER_SET_CUR_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+ }\r
+ #endif /* End USBFS_ENABLE_AUDIO_STREAMING */\r
+\r
+ /* `#START AUDIO_CONTROL_SEL_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ { /* USBFS_RQST_RCPT_OTHER */\r
+ }\r
+ }\r
+ else\r
+ { /* requestHandled is initialized as FALSE by default */\r
+ }\r
+\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+#endif /* USER_SUPPLIED_AUDIO_HANDLER */\r
+\r
+\r
+/*******************************************************************************\r
+* Additional user functions supporting AUDIO Requests\r
+********************************************************************************/\r
+\r
+/* `#START AUDIO_FUNCTIONS` Place any additional functions here */\r
+\r
+/* `#END` */\r
+\r
+#endif /* End USBFS_ENABLE_AUDIO_CLASS*/\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_audio.h\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Header File for the USFS component. Contains prototypes and constant values.\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_USBFS_USBFS_audio_H)\r
+#define CY_USBFS_USBFS_audio_H\r
+\r
+#include "cytypes.h"\r
+\r
+\r
+/***************************************\r
+* Custom Declarations\r
+***************************************/\r
+\r
+/* `#START CUSTOM_CONSTANTS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/***************************************\r
+* Constants for USBFS_audio API.\r
+***************************************/\r
+\r
+/* Audio Class-Specific Request Codes (AUDIO Table A-9) */\r
+#define USBFS_REQUEST_CODE_UNDEFINED (0x00u)\r
+#define USBFS_SET_CUR (0x01u)\r
+#define USBFS_GET_CUR (0x81u)\r
+#define USBFS_SET_MIN (0x02u)\r
+#define USBFS_GET_MIN (0x82u)\r
+#define USBFS_SET_MAX (0x03u)\r
+#define USBFS_GET_MAX (0x83u)\r
+#define USBFS_SET_RES (0x04u)\r
+#define USBFS_GET_RES (0x84u)\r
+#define USBFS_SET_MEM (0x05u)\r
+#define USBFS_GET_MEM (0x85u)\r
+#define USBFS_GET_STAT (0xFFu)\r
+\r
+/* Endpoint Control Selectors (AUDIO Table A-19) */\r
+#define USBFS_EP_CONTROL_UNDEFINED (0x00u)\r
+#define USBFS_SAMPLING_FREQ_CONTROL (0x01u)\r
+#define USBFS_PITCH_CONTROL (0x02u)\r
+\r
+/* Feature Unit Control Selectors (AUDIO Table A-11) */\r
+#define USBFS_FU_CONTROL_UNDEFINED (0x00u)\r
+#define USBFS_MUTE_CONTROL (0x01u)\r
+#define USBFS_VOLUME_CONTROL (0x02u)\r
+#define USBFS_BASS_CONTROL (0x03u)\r
+#define USBFS_MID_CONTROL (0x04u)\r
+#define USBFS_TREBLE_CONTROL (0x05u)\r
+#define USBFS_GRAPHIC_EQUALIZER_CONTROL (0x06u)\r
+#define USBFS_AUTOMATIC_GAIN_CONTROL (0x07u)\r
+#define USBFS_DELAY_CONTROL (0x08u)\r
+#define USBFS_BASS_BOOST_CONTROL (0x09u)\r
+#define USBFS_LOUDNESS_CONTROL (0x0Au)\r
+\r
+#define USBFS_SAMPLE_FREQ_LEN (3u)\r
+#define USBFS_VOLUME_LEN (2u)\r
+\r
+#if !defined(USER_SUPPLIED_DEFAULT_VOLUME_VALUE)\r
+ #define USBFS_VOL_MIN_MSB (0x80u)\r
+ #define USBFS_VOL_MIN_LSB (0x01u)\r
+ #define USBFS_VOL_MAX_MSB (0x7Fu)\r
+ #define USBFS_VOL_MAX_LSB (0xFFu)\r
+ #define USBFS_VOL_RES_MSB (0x00u)\r
+ #define USBFS_VOL_RES_LSB (0x01u)\r
+#endif /* USER_SUPPLIED_DEFAULT_VOLUME_VALUE */\r
+\r
+\r
+/***************************************\r
+* External data references\r
+***************************************/\r
+\r
+extern volatile uint8 USBFS_currentSampleFrequency[USBFS_MAX_EP]\r
+ [USBFS_SAMPLE_FREQ_LEN];\r
+extern volatile uint8 USBFS_frequencyChanged;\r
+extern volatile uint8 USBFS_currentMute;\r
+extern volatile uint8 USBFS_currentVolume[USBFS_VOLUME_LEN];\r
+extern volatile uint8 USBFS_minimumVolume[USBFS_VOLUME_LEN];\r
+extern volatile uint8 USBFS_maximumVolume[USBFS_VOLUME_LEN];\r
+extern volatile uint8 USBFS_resolutionVolume[USBFS_VOLUME_LEN];\r
+\r
+#endif /* End CY_USBFS_USBFS_audio_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_boot.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Boot loader API for USBFS Component.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+\r
+#if defined(CYDEV_BOOTLOADER_IO_COMP) && ((CYDEV_BOOTLOADER_IO_COMP == CyBtldr_USBFS) || \\r
+ (CYDEV_BOOTLOADER_IO_COMP == CyBtldr_Custom_Interface))\r
+\r
+\r
+/***************************************\r
+* Bootloader defines\r
+***************************************/\r
+\r
+#define USBFS_CyBtLdrStarttimer(X, T) {USBFS_universalTime = T * 10; X = 0u;}\r
+#define USBFS_CyBtLdrChecktimer(X) ((X++ < USBFS_universalTime) ? 1u : 0u)\r
+\r
+#define USBFS_BTLDR_OUT_EP (0x01u)\r
+#define USBFS_BTLDR_IN_EP (0x02u)\r
+\r
+\r
+/***************************************\r
+* Bootloader Variables\r
+***************************************/\r
+\r
+static uint16 USBFS_universalTime;\r
+static uint8 USBFS_started = 0u;\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_CyBtldrCommStart\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Starts the component and enables the interrupt.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Side Effects:\r
+* This function starts the USB with 3V or 5V operation.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_CyBtldrCommStart(void) \r
+{\r
+ CyGlobalIntEnable; /* Enable Global Interrupts */\r
+\r
+ /*Start USBFS Operation/device 0 and with 5V or 3V operation depend on Voltage Configuration in DWR */\r
+ USBFS_Start(0u, USBFS_DWR_VDDD_OPERATION);\r
+\r
+ /* USB component started, the correct enumeration will be checked in first Read operation */\r
+ USBFS_started = 1u;\r
+\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_CyBtldrCommStop.\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Disable the component and disable the interrupt.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+*******************************************************************************/\r
+void USBFS_CyBtldrCommStop(void) \r
+{\r
+ USBFS_Stop();\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_CyBtldrCommReset.\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Resets the receive and transmit communication Buffers.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_CyBtldrCommReset(void) \r
+{\r
+ USBFS_EnableOutEP(USBFS_BTLDR_OUT_EP); /* Enable the OUT endpoint */\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_CyBtldrCommWrite.\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Allows the caller to write data to the boot loader host. The function will\r
+* handle polling to allow a block of data to be completely sent to the host\r
+* device.\r
+*\r
+* Parameters:\r
+* pData: A pointer to the block of data to send to the device\r
+* size: The number of bytes to write.\r
+* count: Pointer to an unsigned short variable to write the number of\r
+* bytes actually written.\r
+* timeOut: Number of units to wait before returning because of a timeout.\r
+*\r
+* Return:\r
+* Returns the value that best describes the problem.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+cystatus USBFS_CyBtldrCommWrite(uint8 *pData, uint16 size, uint16 *count, uint8 timeOut) CYSMALL\r
+ \r
+{\r
+ uint16 time;\r
+ cystatus status;\r
+\r
+ /* Enable IN transfer */\r
+ USBFS_LoadInEP(USBFS_BTLDR_IN_EP, pData, USBFS_BTLDR_SIZEOF_READ_BUFFER);\r
+\r
+ /* Start a timer to wait on. */\r
+ USBFS_CyBtLdrStarttimer(time, timeOut);\r
+\r
+ /* Wait for the master to read it. */\r
+ while((USBFS_GetEPState(USBFS_BTLDR_IN_EP) == USBFS_IN_BUFFER_FULL) && \\r
+ USBFS_CyBtLdrChecktimer(time))\r
+ {\r
+ CyDelay(1u); /* 1ms delay */\r
+ }\r
+\r
+ if (USBFS_GetEPState(USBFS_BTLDR_IN_EP) == USBFS_IN_BUFFER_FULL)\r
+ {\r
+ status = CYRET_TIMEOUT;\r
+ }\r
+ else\r
+ {\r
+ *count = size;\r
+ status = CYRET_SUCCESS;\r
+ }\r
+\r
+ return(status);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_CyBtldrCommRead.\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Allows the caller to read data from the boot loader host. The function will\r
+* handle polling to allow a block of data to be completely received from the\r
+* host device.\r
+*\r
+* Parameters:\r
+* pData: A pointer to the area to store the block of data received\r
+* from the device.\r
+* size: The number of bytes to read.\r
+* count: Pointer to an unsigned short variable to write the number\r
+* of bytes actually read.\r
+* timeOut: Number of units to wait before returning because of a timeOut.\r
+* Timeout is measured in 10s of ms.\r
+*\r
+* Return:\r
+* Returns the value that best describes the problem.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+cystatus USBFS_CyBtldrCommRead(uint8 *pData, uint16 size, uint16 *count, uint8 timeOut) CYSMALL\r
+ \r
+{\r
+ cystatus status;\r
+ uint16 time;\r
+\r
+ if(size > USBFS_BTLDR_SIZEOF_WRITE_BUFFER)\r
+ {\r
+ size = USBFS_BTLDR_SIZEOF_WRITE_BUFFER;\r
+ }\r
+ /* Start a timer to wait on. */\r
+ USBFS_CyBtLdrStarttimer(time, timeOut);\r
+\r
+ /* Wait on enumeration in first time */\r
+ if(USBFS_started)\r
+ {\r
+ /* Wait for Device to enumerate */\r
+ while(!USBFS_GetConfiguration() && USBFS_CyBtLdrChecktimer(time))\r
+ {\r
+ CyDelay(1u); /* 1ms delay */\r
+ }\r
+ /* Enable first OUT, if enumeration complete */\r
+ if(USBFS_GetConfiguration())\r
+ {\r
+ USBFS_IsConfigurationChanged(); /* Clear configuration changes state status */\r
+ USBFS_CyBtldrCommReset();\r
+ USBFS_started = 0u;\r
+ }\r
+ }\r
+ else /* Check for configuration changes, has been done by Host */\r
+ {\r
+ if(USBFS_IsConfigurationChanged() != 0u) /* Host could send double SET_INTERFACE request or RESET */\r
+ {\r
+ if(USBFS_GetConfiguration() != 0u) /* Init OUT endpoints when device reconfigured */\r
+ {\r
+ USBFS_CyBtldrCommReset();\r
+ }\r
+ }\r
+ }\r
+ /* Wait on next packet */\r
+ while((USBFS_GetEPState(USBFS_BTLDR_OUT_EP) != USBFS_OUT_BUFFER_FULL) && \\r
+ USBFS_CyBtLdrChecktimer(time))\r
+ {\r
+ CyDelay(1u); /* 1ms delay */\r
+ }\r
+\r
+ /* OUT EP has completed */\r
+ if (USBFS_GetEPState(USBFS_BTLDR_OUT_EP) == USBFS_OUT_BUFFER_FULL)\r
+ {\r
+ *count = USBFS_ReadOutEP(USBFS_BTLDR_OUT_EP, pData, size);\r
+ status = CYRET_SUCCESS;\r
+ }\r
+ else\r
+ {\r
+ *count = 0u;\r
+ status = CYRET_TIMEOUT;\r
+ }\r
+ return(status);\r
+}\r
+\r
+#endif /* End CYDEV_BOOTLOADER_IO_COMP == CyBtldr_USBFS */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_cdc.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* USB HID Class request handler.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2012-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+\r
+#if defined(USBFS_ENABLE_CDC_CLASS)\r
+\r
+#include "USBFS_cdc.h"\r
+#include "USBFS_pvt.h"\r
+\r
+\r
+/***************************************\r
+* CDC Variables\r
+***************************************/\r
+\r
+volatile uint8 USBFS_lineCoding[USBFS_LINE_CODING_SIZE];\r
+volatile uint8 USBFS_lineChanged;\r
+volatile uint16 USBFS_lineControlBitmap;\r
+volatile uint8 USBFS_cdc_data_in_ep;\r
+volatile uint8 USBFS_cdc_data_out_ep;\r
+\r
+\r
+/***************************************\r
+* Static Function Prototypes\r
+***************************************/\r
+static uint16 USBFS_StrLen(const char8 string[]) ;\r
+\r
+\r
+/***************************************\r
+* Custom Declarations\r
+***************************************/\r
+\r
+/* `#START CDC_CUSTOM_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_DispatchCDCClassRqst\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine dispatches CDC class requests.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled\r
+*\r
+* Global variables:\r
+* USBFS_lineCoding: Contains the current line coding structure.\r
+* It is set by the Host using SET_LINE_CODING request and returned to the\r
+* user code by the USBFS_GetDTERate(), USBFS_GetCharFormat(),\r
+* USBFS_GetParityType(), USBFS_GetDataBits() APIs.\r
+* USBFS_lineControlBitmap: Contains the current control signal\r
+* bitmap. It is set by the Host using SET_CONTROL_LINE request and returned\r
+* to the user code by the USBFS_GetLineControl() API.\r
+* USBFS_lineChanged: This variable is used as a flag for the\r
+* USBFS_IsLineChanged() API, to be aware that Host has been sent request\r
+* for changing Line Coding or Control Bitmap.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_DispatchCDCClassRqst(void) \r
+{\r
+ uint8 requestHandled = USBFS_FALSE;\r
+\r
+ if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) == USBFS_RQST_DIR_D2H)\r
+ { /* Control Read */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_CDC_GET_LINE_CODING:\r
+ USBFS_currentTD.count = USBFS_LINE_CODING_SIZE;\r
+ USBFS_currentTD.pData = USBFS_lineCoding;\r
+ requestHandled = USBFS_InitControlRead();\r
+ break;\r
+\r
+ /* `#START CDC_READ_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ }\r
+ else if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) == \\r
+ USBFS_RQST_DIR_H2D)\r
+ { /* Control Write */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_CDC_SET_LINE_CODING:\r
+ USBFS_currentTD.count = USBFS_LINE_CODING_SIZE;\r
+ USBFS_currentTD.pData = USBFS_lineCoding;\r
+ USBFS_lineChanged |= USBFS_LINE_CODING_CHANGED;\r
+ requestHandled = USBFS_InitControlWrite();\r
+ break;\r
+\r
+ case USBFS_CDC_SET_CONTROL_LINE_STATE:\r
+ USBFS_lineControlBitmap = CY_GET_REG8(USBFS_wValueLo);\r
+ USBFS_lineChanged |= USBFS_LINE_CONTROL_CHANGED;\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ break;\r
+\r
+ /* `#START CDC_WRITE_REQUESTS` Place other request handler here */\r
+\r
+ /* `#END` */\r
+\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ { /* requestHandled is initialized as FALSE by default */\r
+ }\r
+\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+/***************************************\r
+* Optional CDC APIs\r
+***************************************/\r
+#if (USBFS_ENABLE_CDC_CLASS_API != 0u)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_CDC_Init\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * This function initialize the CDC interface to be ready for the receive data\r
+ * from the PC.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Global variables:\r
+ * USBFS_lineChanged: Initialized to zero.\r
+ * USBFS_cdc_data_out_ep: Used as an OUT endpoint number.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_CDC_Init(void) \r
+ {\r
+ USBFS_lineChanged = 0u;\r
+ USBFS_EnableOutEP(USBFS_cdc_data_out_ep);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_PutData\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Sends a specified number of bytes from the location specified by a\r
+ * pointer to the PC.\r
+ *\r
+ * Parameters:\r
+ * pData: pointer to the buffer containing data to be sent.\r
+ * length: Specifies the number of bytes to send from the pData\r
+ * buffer. Maximum length will be limited by the maximum packet\r
+ * size for the endpoint.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_in_ep: CDC IN endpoint number used for sending\r
+ * data.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_PutData(const uint8* pData, uint16 length) \r
+ {\r
+ /* Limits length to maximum packet size for the EP */\r
+ if(length > USBFS_EP[USBFS_cdc_data_in_ep].bufferSize)\r
+ {\r
+ /* Caution: Data will be lost if length is greater than Max Packet Length */\r
+ length = USBFS_EP[USBFS_cdc_data_in_ep].bufferSize;\r
+ /* Halt CPU in debug mode */\r
+ CYASSERT(0u != 0u);\r
+ }\r
+ USBFS_LoadInEP(USBFS_cdc_data_in_ep, pData, length);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_StrLen\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Calculates length of a null terminated string.\r
+ *\r
+ * Parameters:\r
+ * string: pointer to the string.\r
+ *\r
+ * Return:\r
+ * Length of the string\r
+ *\r
+ *******************************************************************************/\r
+ static uint16 USBFS_StrLen(const char8 string[]) \r
+ {\r
+ uint16 len = 0u;\r
+\r
+ while (string[len] != (char8)0)\r
+ {\r
+ len++;\r
+ }\r
+\r
+ return (len);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_PutString\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Sends a null terminated string to the PC.\r
+ *\r
+ * Parameters:\r
+ * string: pointer to the string to be sent to the PC\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_in_ep: CDC IN endpoint number used for sending\r
+ * data.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ * Theory:\r
+ * This function will block if there is not enough memory to place the whole\r
+ * string, it will block until the entire string has been written to the\r
+ * transmit buffer.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_PutString(const char8 string[]) \r
+ {\r
+ uint16 str_length;\r
+ uint16 send_length;\r
+ uint16 buf_index = 0u;\r
+\r
+ /* Get length of the null terminated string */\r
+ str_length = USBFS_StrLen(string);\r
+ do\r
+ {\r
+ /* Limits length to maximum packet size for the EP */\r
+ send_length = (str_length > USBFS_EP[USBFS_cdc_data_in_ep].bufferSize) ?\r
+ USBFS_EP[USBFS_cdc_data_in_ep].bufferSize : str_length;\r
+ /* Enable IN transfer */\r
+ USBFS_LoadInEP(USBFS_cdc_data_in_ep, (const uint8 *)&string[buf_index], send_length);\r
+ str_length -= send_length;\r
+\r
+ /* If more data are present to send */\r
+ if(str_length > 0u)\r
+ {\r
+ buf_index += send_length;\r
+ /* Wait for the Host to read it. */\r
+ while(USBFS_EP[USBFS_cdc_data_in_ep].apiEpState ==\r
+ USBFS_IN_BUFFER_FULL)\r
+ {\r
+ ;\r
+ }\r
+ }\r
+ }while(str_length > 0u);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_PutChar\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Writes a single character to the PC.\r
+ *\r
+ * Parameters:\r
+ * txDataByte: Character to be sent to the PC.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_in_ep: CDC IN endpoint number used for sending\r
+ * data.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_PutChar(char8 txDataByte) \r
+ {\r
+ uint8 dataByte;\r
+ dataByte = (uint8)txDataByte;\r
+\r
+ USBFS_LoadInEP(USBFS_cdc_data_in_ep, &dataByte, 1u);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_PutCRLF\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Sends a carriage return (0x0D) and line feed (0x0A) to the PC\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_in_ep: CDC IN endpoint number used for sending\r
+ * data.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_PutCRLF(void) \r
+ {\r
+ const uint8 CYCODE txData[] = {0x0Du, 0x0Au};\r
+\r
+ USBFS_LoadInEP(USBFS_cdc_data_in_ep, (const uint8 *)txData, 2u);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetCount\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * This function returns the number of bytes that were received from the PC.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * Returns the number of received bytes.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_out_ep: CDC OUT endpoint number used.\r
+ *\r
+ *******************************************************************************/\r
+ uint16 USBFS_GetCount(void) \r
+ {\r
+ uint16 bytesCount = 0u;\r
+\r
+ if (USBFS_EP[USBFS_cdc_data_out_ep].apiEpState == USBFS_OUT_BUFFER_FULL)\r
+ {\r
+ bytesCount = USBFS_GetEPCount(USBFS_cdc_data_out_ep);\r
+ }\r
+\r
+ return(bytesCount);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_DataIsReady\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Returns a nonzero value if the component received data or received\r
+ * zero-length packet. The GetAll() or GetData() API should be called to read\r
+ * data from the buffer and re-init OUT endpoint even when zero-length packet\r
+ * received.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * If the OUT packet received this function returns a nonzero value.\r
+ * Otherwise zero is returned.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_out_ep: CDC OUT endpoint number used.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_DataIsReady(void) \r
+ {\r
+ return(USBFS_EP[USBFS_cdc_data_out_ep].apiEpState);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_CDCIsReady\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Returns a nonzero value if the component is ready to send more data to the\r
+ * PC. Otherwise returns zero. Should be called before sending new data to\r
+ * ensure the previous data has finished sending.This function returns the\r
+ * number of bytes that were received from the PC.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * If the buffer can accept new data then this function returns a nonzero value.\r
+ * Otherwise zero is returned.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_in_ep: CDC IN endpoint number used.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_CDCIsReady(void) \r
+ {\r
+ return(USBFS_EP[USBFS_cdc_data_in_ep].apiEpState);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetData\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Gets a specified number of bytes from the input buffer and places it in a\r
+ * data array specified by the passed pointer.\r
+ * USBFS_DataIsReady() API should be called before, to be sure\r
+ * that data is received from the Host.\r
+ *\r
+ * Parameters:\r
+ * pData: Pointer to the data array where data will be placed.\r
+ * Length: Number of bytes to read into the data array from the RX buffer.\r
+ * Maximum length is limited by the the number of received bytes.\r
+ *\r
+ * Return:\r
+ * Number of bytes received.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_out_ep: CDC OUT endpoint number used.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ uint16 USBFS_GetData(uint8* pData, uint16 length) \r
+ {\r
+ return(USBFS_ReadOutEP(USBFS_cdc_data_out_ep, pData, length));\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetAll\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Gets all bytes of received data from the input buffer and places it into a\r
+ * specified data array. USBFS_DataIsReady() API should be called\r
+ * before, to be sure that data is received from the Host.\r
+ *\r
+ * Parameters:\r
+ * pData: Pointer to the data array where data will be placed.\r
+ *\r
+ * Return:\r
+ * Number of bytes received.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_out_ep: CDC OUT endpoint number used.\r
+ * USBFS_EP[].bufferSize: EP max packet size is used as a length\r
+ * to read all data from the EP buffer.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ uint16 USBFS_GetAll(uint8* pData) \r
+ {\r
+ return (USBFS_ReadOutEP(USBFS_cdc_data_out_ep, pData,\r
+ USBFS_EP[USBFS_cdc_data_out_ep].bufferSize));\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetChar\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Reads one byte of received data from the buffer.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * Received one character.\r
+ *\r
+ * Global variables:\r
+ * USBFS_cdc_data_out_ep: CDC OUT endpoint number used.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_GetChar(void) \r
+ {\r
+ uint8 rxData;\r
+\r
+ (void) USBFS_ReadOutEP(USBFS_cdc_data_out_ep, &rxData, 1u);\r
+\r
+ return(rxData);\r
+ }\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_IsLineChanged\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * This function returns clear on read status of the line.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * If SET_LINE_CODING or CDC_SET_CONTROL_LINE_STATE request received then not\r
+ * zero value returned. Otherwise zero is returned.\r
+ *\r
+ * Global variables:\r
+ * USBFS_transferState - it is checked to be sure then OUT data\r
+ * phase has been complete, and data written to the lineCoding or Control\r
+ * Bitmap buffer.\r
+ * USBFS_lineChanged: used as a flag to be aware that Host has been\r
+ * sent request for changing Line Coding or Control Bitmap.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_IsLineChanged(void) \r
+ {\r
+ uint8 state = 0u;\r
+\r
+ /* transferState is checked to be sure then OUT data phase has been complete */\r
+ if(USBFS_transferState == USBFS_TRANS_STATE_IDLE)\r
+ {\r
+ if(USBFS_lineChanged != 0u)\r
+ {\r
+ state = USBFS_lineChanged;\r
+ USBFS_lineChanged = 0u;\r
+ }\r
+ }\r
+\r
+ return(state);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetDTERate\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Returns the data terminal rate set for this port in bits per second.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * Returns a uint32 value of the data rate in bits per second.\r
+ *\r
+ * Global variables:\r
+ * USBFS_lineCoding: First four bytes converted to uint32\r
+ * depend on compiler, and returned as a data rate.\r
+ *\r
+ *******************************************************************************/\r
+ uint32 USBFS_GetDTERate(void) \r
+ {\r
+ uint32 rate;\r
+\r
+ rate = USBFS_lineCoding[USBFS_LINE_CODING_RATE + 3u];\r
+ rate = (rate << 8u) | USBFS_lineCoding[USBFS_LINE_CODING_RATE + 2u];\r
+ rate = (rate << 8u) | USBFS_lineCoding[USBFS_LINE_CODING_RATE + 1u];\r
+ rate = (rate << 8u) | USBFS_lineCoding[USBFS_LINE_CODING_RATE];\r
+\r
+ return(rate);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetCharFormat\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Returns the number of stop bits.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * Returns the number of stop bits.\r
+ *\r
+ * Global variables:\r
+ * USBFS_lineCoding: used to get a parameter.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_GetCharFormat(void) \r
+ {\r
+ return(USBFS_lineCoding[USBFS_LINE_CODING_STOP_BITS]);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetParityType\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Returns the parity type for the CDC port.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * Returns the parity type.\r
+ *\r
+ * Global variables:\r
+ * USBFS_lineCoding: used to get a parameter.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_GetParityType(void) \r
+ {\r
+ return(USBFS_lineCoding[USBFS_LINE_CODING_PARITY]);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetDataBits\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Returns the number of data bits for the CDC port.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * Returns the number of data bits.\r
+ * The number of data bits can be 5, 6, 7, 8 or 16.\r
+ *\r
+ * Global variables:\r
+ * USBFS_lineCoding: used to get a parameter.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_GetDataBits(void) \r
+ {\r
+ return(USBFS_lineCoding[USBFS_LINE_CODING_DATA_BITS]);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_GetLineControl\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Returns Line control bitmap.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * Returns Line control bitmap.\r
+ *\r
+ * Global variables:\r
+ * USBFS_lineControlBitmap: used to get a parameter.\r
+ *\r
+ *******************************************************************************/\r
+ uint16 USBFS_GetLineControl(void) \r
+ {\r
+ return(USBFS_lineControlBitmap);\r
+ }\r
+\r
+#endif /* End USBFS_ENABLE_CDC_CLASS_API*/\r
+\r
+\r
+/*******************************************************************************\r
+* Additional user functions supporting CDC Requests\r
+********************************************************************************/\r
+\r
+/* `#START CDC_FUNCTIONS` Place any additional functions here */\r
+\r
+/* `#END` */\r
+\r
+#endif /* End USBFS_ENABLE_CDC_CLASS*/\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_cdc.h\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Header File for the USFS component.\r
+* Contains CDC class prototypes and constant values.\r
+*\r
+********************************************************************************\r
+* Copyright 2012-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_USBFS_USBFS_cdc_H)\r
+#define CY_USBFS_USBFS_cdc_H\r
+\r
+#include "cytypes.h"\r
+\r
+\r
+/***************************************\r
+* Prototypes of the USBFS_cdc API.\r
+***************************************/\r
+\r
+#if (USBFS_ENABLE_CDC_CLASS_API != 0u)\r
+ void USBFS_CDC_Init(void) ;\r
+ void USBFS_PutData(const uint8* pData, uint16 length) ;\r
+ void USBFS_PutString(const char8 string[]) ;\r
+ void USBFS_PutChar(char8 txDataByte) ;\r
+ void USBFS_PutCRLF(void) ;\r
+ uint16 USBFS_GetCount(void) ;\r
+ uint8 USBFS_CDCIsReady(void) ;\r
+ uint8 USBFS_DataIsReady(void) ;\r
+ uint16 USBFS_GetData(uint8* pData, uint16 length) ;\r
+ uint16 USBFS_GetAll(uint8* pData) ;\r
+ uint8 USBFS_GetChar(void) ;\r
+ uint8 USBFS_IsLineChanged(void) ;\r
+ uint32 USBFS_GetDTERate(void) ;\r
+ uint8 USBFS_GetCharFormat(void) ;\r
+ uint8 USBFS_GetParityType(void) ;\r
+ uint8 USBFS_GetDataBits(void) ;\r
+ uint16 USBFS_GetLineControl(void) ;\r
+#endif /* End USBFS_ENABLE_CDC_CLASS_API*/\r
+\r
+\r
+/***************************************\r
+* Constants for USBFS_cdc API.\r
+***************************************/\r
+\r
+/* CDC Class-Specific Request Codes (CDC ver 1.2 Table 19) */\r
+#define USBFS_CDC_SET_LINE_CODING (0x20u)\r
+#define USBFS_CDC_GET_LINE_CODING (0x21u)\r
+#define USBFS_CDC_SET_CONTROL_LINE_STATE (0x22u)\r
+\r
+#define USBFS_LINE_CODING_CHANGED (0x01u)\r
+#define USBFS_LINE_CONTROL_CHANGED (0x02u)\r
+\r
+#define USBFS_1_STOPBIT (0x00u)\r
+#define USBFS_1_5_STOPBITS (0x01u)\r
+#define USBFS_2_STOPBITS (0x02u)\r
+\r
+#define USBFS_PARITY_NONE (0x00u)\r
+#define USBFS_PARITY_ODD (0x01u)\r
+#define USBFS_PARITY_EVEN (0x02u)\r
+#define USBFS_PARITY_MARK (0x03u)\r
+#define USBFS_PARITY_SPACE (0x04u)\r
+\r
+#define USBFS_LINE_CODING_SIZE (0x07u)\r
+#define USBFS_LINE_CODING_RATE (0x00u)\r
+#define USBFS_LINE_CODING_STOP_BITS (0x04u)\r
+#define USBFS_LINE_CODING_PARITY (0x05u)\r
+#define USBFS_LINE_CODING_DATA_BITS (0x06u)\r
+\r
+#define USBFS_LINE_CONTROL_DTR (0x01u)\r
+#define USBFS_LINE_CONTROL_RTS (0x02u)\r
+\r
+\r
+/***************************************\r
+* External data references\r
+***************************************/\r
+\r
+extern volatile uint8 USBFS_lineCoding[USBFS_LINE_CODING_SIZE];\r
+extern volatile uint8 USBFS_lineChanged;\r
+extern volatile uint16 USBFS_lineControlBitmap;\r
+extern volatile uint8 USBFS_cdc_data_in_ep;\r
+extern volatile uint8 USBFS_cdc_data_out_ep;\r
+\r
+#endif /* End CY_USBFS_USBFS_cdc_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+;******************************************************************************\r
+; File Name: USBFS_cdc.inf\r
+; Version 2.60\r
+;\r
+; Description:\r
+; Windows USB CDC setup file for USBUART Device.\r
+;\r
+;******************************************************************************\r
+; Copyright 2007-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+; You may use this file only in accordance with the license, terms, conditions,\r
+; disclaimers, and limitations in the end user license agreement accompanying\r
+; the software package with which this file was provided.\r
+;******************************************************************************\r
+\r
+[Version]\r
+Signature="$Windows NT$"\r
+Class=Ports\r
+ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}\r
+Provider=%PROVIDER%\r
+LayoutFile=layout.inf\r
+DriverVer=03/05/2007,2.0.0000.0\r
+\r
+[Manufacturer]\r
+%MFGNAME%=DeviceList, NTx86, NTia64, NTamd64\r
+\r
+[DestinationDirs]\r
+DefaultDestDir=12\r
+\r
+[SourceDisksFiles]\r
+\r
+[SourceDisksNames]\r
+\r
+[DeviceList.NTx86]\r
+%DESCRIPTION%=DriverInstall, USB\VID_04B4&PID_F232\r
+\r
+[DeviceList.NTia64]\r
+%DESCRIPTION%=DriverInstall, USB\VID_04B4&PID_F232\r
+\r
+[DeviceList.NTamd64]\r
+%DESCRIPTION%=DriverInstall, USB\VID_04B4&PID_F232\r
+\r
+\r
+;------------------------------------------------------------------------------\r
+; 32 bit section for Windows 2000/2003/XP/Vista\r
+;------------------------------------------------------------------------------\r
+\r
+[DriverInstall.NTx86]\r
+include=mdmcpq.inf\r
+CopyFiles=DriverCopyFiles\r
+AddReg=DriverInstall.NTx86.AddReg\r
+\r
+[DriverCopyFiles]\r
+usbser.sys,,,0x20\r
+\r
+[DriverInstall.NTx86.AddReg]\r
+HKR,,DevLoader,,*ntkern\r
+HKR,,NTMPDriver,,usbser.sys\r
+HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"\r
+\r
+[DriverInstall.NTx86.Services]\r
+AddService=usbser, 0x00000002, DriverService\r
+\r
+;------------------------------------------------------------------------------\r
+; 64 bit section for Intel Itanium based systems\r
+;------------------------------------------------------------------------------\r
+\r
+[DriverInstall.NTia64]\r
+include=mdmcpq.inf\r
+CopyFiles=DriverCopyFiles\r
+AddReg=DriverInstall.NTia64.AddReg\r
+\r
+[DriverCopyFiles]\r
+usbser.sys,,,0x20\r
+\r
+[DriverInstall.NTia64.AddReg]\r
+HKR,,DevLoader,,*ntkern\r
+HKR,,NTMPDriver,,usbser.sys\r
+HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"\r
+\r
+[DriverInstall.NTia64.Services]\r
+AddService=usbser, 0x00000002, DriverService\r
+\r
+;------------------------------------------------------------------------------\r
+; 64 bit section for AMD64 and Intel EM64T based systems\r
+;------------------------------------------------------------------------------\r
+\r
+[DriverInstall.NTamd64]\r
+include=mdmcpq.inf\r
+CopyFiles=DriverCopyFiles\r
+AddReg=DriverInstall.NTamd64.AddReg\r
+\r
+[DriverCopyFiles]\r
+usbser.sys,,,0x20\r
+\r
+[DriverInstall.NTamd64.AddReg]\r
+HKR,,DevLoader,,*ntkern\r
+HKR,,NTMPDriver,,usbser.sys\r
+HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"\r
+\r
+[DriverInstall.NTamd64.Services]\r
+AddService=usbser, 0x00000002, DriverService\r
+\r
+;------------------------------------------------------------------------------\r
+;\r
+;------------------------------------------------------------------------------\r
+\r
+[DriverService]\r
+DisplayName=%SERVICE%\r
+ServiceType=1\r
+StartType=3\r
+ErrorControl=1\r
+ServiceBinary=%12%\usbser.sys\r
+\r
+;------------------------------------------------------------------------------\r
+; String Definitions\r
+;------------------------------------------------------------------------------\r
+\r
+[Strings]\r
+PROVIDER="Cypress"\r
+MFGNAME="Cypress Semiconductor Corporation"\r
+DESCRIPTION="Cypress USB UART"\r
+SERVICE="USB UART"\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_cls.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* USB Class request handler.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+\r
+#if(USBFS_EXTERN_CLS == USBFS_FALSE)\r
+\r
+#include "USBFS_pvt.h"\r
+\r
+\r
+/***************************************\r
+* User Implemented Class Driver Declarations.\r
+***************************************/\r
+/* `#START USER_DEFINED_CLASS_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_DispatchClassRqst\r
+********************************************************************************\r
+* Summary:\r
+* This routine dispatches class specific requests depend on interface class.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_DispatchClassRqst(void) \r
+{\r
+ uint8 requestHandled = USBFS_FALSE;\r
+ uint8 interfaceNumber = 0u;\r
+\r
+ switch(CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK)\r
+ {\r
+ case USBFS_RQST_RCPT_IFC: /* Class-specific request directed to an interface */\r
+ interfaceNumber = CY_GET_REG8(USBFS_wIndexLo); /* wIndexLo contain Interface number */\r
+ break;\r
+ case USBFS_RQST_RCPT_EP: /* Class-specific request directed to the endpoint */\r
+ /* Find related interface to the endpoint, wIndexLo contain EP number */\r
+ interfaceNumber =\r
+ USBFS_EP[CY_GET_REG8(USBFS_wIndexLo) & USBFS_DIR_UNUSED].interface;\r
+ break;\r
+ default: /* RequestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ /* Handle Class request depend on interface type */\r
+ switch(USBFS_interfaceClass[interfaceNumber])\r
+ {\r
+ case USBFS_CLASS_HID:\r
+ #if defined(USBFS_ENABLE_HID_CLASS)\r
+ requestHandled = USBFS_DispatchHIDClassRqst();\r
+ #endif /* USBFS_ENABLE_HID_CLASS */\r
+ break;\r
+ case USBFS_CLASS_AUDIO:\r
+ #if defined(USBFS_ENABLE_AUDIO_CLASS)\r
+ requestHandled = USBFS_DispatchAUDIOClassRqst();\r
+ #endif /* USBFS_ENABLE_HID_CLASS */\r
+ break;\r
+ case USBFS_CLASS_CDC:\r
+ #if defined(USBFS_ENABLE_CDC_CLASS)\r
+ requestHandled = USBFS_DispatchCDCClassRqst();\r
+ #endif /* USBFS_ENABLE_CDC_CLASS */\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+\r
+ /* `#START USER_DEFINED_CLASS_CODE` Place your Class request here */\r
+\r
+ /* `#END` */\r
+\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Additional user functions supporting Class Specific Requests\r
+********************************************************************************/\r
+\r
+/* `#START CLASS_SPECIFIC_FUNCTIONS` Place any additional functions here */\r
+\r
+/* `#END` */\r
+\r
+#endif /* USBFS_EXTERN_CLS */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_descr.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* USB descriptors and storage.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+#include "USBFS_pvt.h"\r
+\r
+\r
+/*****************************************************************************\r
+* User supplied descriptors. If you want to specify your own descriptors,\r
+* remove the comments around the define USER_SUPPLIED_DESCRIPTORS below and\r
+* add your descriptors.\r
+*****************************************************************************/\r
+/* `#START USER_DESCRIPTORS_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/***************************************\r
+* USB Customizer Generated Descriptors\r
+***************************************/\r
+\r
+#if !defined(USER_SUPPLIED_DESCRIPTORS)\r
+/*********************************************************************\r
+* Device Descriptors\r
+*********************************************************************/\r
+const uint8 CYCODE USBFS_DEVICE0_DESCR[18u] = {\r
+/* Descriptor Length */ 0x12u,\r
+/* DescriptorType: DEVICE */ 0x01u,\r
+/* bcdUSB (ver 2.0) */ 0x00u, 0x02u,\r
+/* bDeviceClass */ 0x00u,\r
+/* bDeviceSubClass */ 0x00u,\r
+/* bDeviceProtocol */ 0x00u,\r
+/* bMaxPacketSize0 */ 0x08u,\r
+/* idVendor */ 0xB4u, 0x04u,\r
+/* idProduct */ 0x37u, 0x13u,\r
+/* bcdDevice */ 0x00u, 0x30u,\r
+/* iManufacturer */ 0x02u,\r
+/* iProduct */ 0x01u,\r
+/* iSerialNumber */ 0x80u,\r
+/* bNumConfigurations */ 0x01u\r
+};\r
+/*********************************************************************\r
+* Config Descriptor \r
+*********************************************************************/\r
+const uint8 CYCODE USBFS_DEVICE0_CONFIGURATION0_DESCR[41u] = {\r
+/* Config Descriptor Length */ 0x09u,\r
+/* DescriptorType: CONFIG */ 0x02u,\r
+/* wTotalLength */ 0x29u, 0x00u,\r
+/* bNumInterfaces */ 0x01u,\r
+/* bConfigurationValue */ 0x01u,\r
+/* iConfiguration */ 0x00u,\r
+/* bmAttributes */ 0x80u,\r
+/* bMaxPower */ 0xFAu,\r
+/*********************************************************************\r
+* Interface Descriptor\r
+*********************************************************************/\r
+/* Interface Descriptor Length */ 0x09u,\r
+/* DescriptorType: INTERFACE */ 0x04u,\r
+/* bInterfaceNumber */ 0x00u,\r
+/* bAlternateSetting */ 0x00u,\r
+/* bNumEndpoints */ 0x02u,\r
+/* bInterfaceClass */ 0x03u,\r
+/* bInterfaceSubClass */ 0x00u,\r
+/* bInterfaceProtocol */ 0x00u,\r
+/* iInterface */ 0x00u,\r
+/*********************************************************************\r
+* HID Class Descriptor\r
+*********************************************************************/\r
+/* HID Class Descriptor Length */ 0x09u,\r
+/* DescriptorType: HID_CLASS */ 0x21u,\r
+/* bcdHID */ 0x11u, 0x01u,\r
+/* bCountryCode */ 0x00u,\r
+/* bNumDescriptors */ 0x01u,\r
+/* bDescriptorType */ 0x22u,\r
+/* wDescriptorLength (LSB) */ USBFS_HID_RPT_1_SIZE_LSB,\r
+/* wDescriptorLength (MSB) */ USBFS_HID_RPT_1_SIZE_MSB,\r
+/*********************************************************************\r
+* Endpoint Descriptor\r
+*********************************************************************/\r
+/* Endpoint Descriptor Length */ 0x07u,\r
+/* DescriptorType: ENDPOINT */ 0x05u,\r
+/* bEndpointAddress */ 0x01u,\r
+/* bmAttributes */ 0x03u,\r
+/* wMaxPacketSize */ 0x40u, 0x00u,\r
+/* bInterval */ 0x80u,\r
+/*********************************************************************\r
+* Endpoint Descriptor\r
+*********************************************************************/\r
+/* Endpoint Descriptor Length */ 0x07u,\r
+/* DescriptorType: ENDPOINT */ 0x05u,\r
+/* bEndpointAddress */ 0x82u,\r
+/* bmAttributes */ 0x03u,\r
+/* wMaxPacketSize */ 0x40u, 0x00u,\r
+/* bInterval */ 0x80u\r
+};\r
+\r
+/*********************************************************************\r
+* String Descriptor Table\r
+*********************************************************************/\r
+const uint8 CYCODE USBFS_STRING_DESCRIPTORS[45u] = {\r
+/*********************************************************************\r
+* Language ID Descriptor\r
+*********************************************************************/\r
+/* Descriptor Length */ 0x04u,\r
+/* DescriptorType: STRING */ 0x03u,\r
+/* Language Id */ 0x09u, 0x04u,\r
+/*********************************************************************\r
+* String Descriptor: "SCSI2SD"\r
+*********************************************************************/\r
+/* Descriptor Length */ 0x10u,\r
+/* DescriptorType: STRING */ 0x03u,\r
+ (uint8)'S', 0u,(uint8)'C', 0u,(uint8)'S', 0u,(uint8)'I', 0u,(uint8)'2', 0u,\r
+ (uint8)'S', 0u,(uint8)'D', 0u,\r
+/*********************************************************************\r
+* String Descriptor: "codesrc.com"\r
+*********************************************************************/\r
+/* Descriptor Length */ 0x18u,\r
+/* DescriptorType: STRING */ 0x03u,\r
+ (uint8)'c', 0u,(uint8)'o', 0u,(uint8)'d', 0u,(uint8)'e', 0u,(uint8)'s', 0u,\r
+ (uint8)'r', 0u,(uint8)'c', 0u,(uint8)'.', 0u,(uint8)'c', 0u,(uint8)'o', 0u,\r
+ (uint8)'m', 0u,\r
+/*********************************************************************/\r
+/* Marks the end of the list. */ 0x00u};\r
+/*********************************************************************/\r
+\r
+/*********************************************************************\r
+* Serial Number String Descriptor\r
+*********************************************************************/\r
+const uint8 CYCODE USBFS_SN_STRING_DESCRIPTOR[10] = {\r
+/* Descriptor Length */ 0x0Au,\r
+/* DescriptorType: STRING */ 0x03u,\r
+(uint8)'1', 0u,(uint8)'2', 0u,(uint8)'3', 0u,(uint8)'4', 0u\r
+};\r
+\r
+/*********************************************************************\r
+* HID Report Descriptor: Generic HID\r
+*********************************************************************/\r
+const uint8 CYCODE USBFS_HIDREPORT_DESCRIPTOR1[40u] = {\r
+/* Descriptor Size (Not part of descriptor)*/ USBFS_HID_RPT_1_SIZE_LSB,\r
+USBFS_HID_RPT_1_SIZE_MSB,\r
+/* USAGE_PAGE */ 0x05u, 0x01u, \r
+/* USAGE */ 0x09u, 0x00u, \r
+/* COLLECTION */ 0xA1u, 0x00u, \r
+/* USAGE */ 0x09u, 0x00u, \r
+/* COLLECTION */ 0xA1u, 0x00u, \r
+/* USAGE */ 0x09u, 0x00u, \r
+/* LOGICAL_MINIMUM */ 0x15u, 0x00u, \r
+/* LOGICAL_MAXIMUM */ 0x25u, 0xFFu, \r
+/* REPORT_SIZE */ 0x75u, 0x08u, \r
+/* REPORT_COUNT */ 0x95u, 0x40u, \r
+/* OUTPUT */ 0x91u, 0x02u, \r
+/* USAGE */ 0x09u, 0x00u, \r
+/* LOGICAL_MINIMUM */ 0x15u, 0x00u, \r
+/* LOGICAL_MAXIMUM */ 0x25u, 0xFFu, \r
+/* REPORT_SIZE */ 0x75u, 0x08u, \r
+/* REPORT_COUNT */ 0x95u, 0x40u, \r
+/* INPUT */ 0x81u, 0x02u, \r
+/* END_COLLECTION */ 0xC0u, \r
+/* END_COLLECTION */ 0xC0u, \r
+/*********************************************************************/\r
+/* End of the HID Report Descriptor */ 0x00u, 0x00u};\r
+/*********************************************************************/\r
+\r
+#if !defined(USER_DEFINE_USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_HID_RPT_STORAGE)\r
+/*********************************************************************\r
+* HID Input Report Storage\r
+*********************************************************************/\r
+T_USBFS_XFER_STATUS_BLOCK USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_RPT_SCB;\r
+uint8 USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_BUF[\r
+ USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_BUF_SIZE];\r
+\r
+/*********************************************************************\r
+* HID Input Report TD Table\r
+*********************************************************************/\r
+const T_USBFS_TD CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_RPT_TABLE[1u] = {\r
+ {USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_BUF_SIZE,\r
+ &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_BUF[0u],\r
+ &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_RPT_SCB},\r
+};\r
+/*********************************************************************\r
+* HID Output Report Storage\r
+*********************************************************************/\r
+T_USBFS_XFER_STATUS_BLOCK USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_RPT_SCB;\r
+uint8 USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_BUF[\r
+ USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_BUF_SIZE];\r
+\r
+/*********************************************************************\r
+* HID Output Report TD Table\r
+*********************************************************************/\r
+const T_USBFS_TD CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_RPT_TABLE[1u] = {\r
+ {USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_BUF_SIZE,\r
+ &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_BUF[0u],\r
+ &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_RPT_SCB},\r
+};\r
+/*********************************************************************\r
+* HID Report Look Up Table This table has four entries:\r
+* IN Report Table\r
+* OUT Report Table\r
+* Feature Report Table\r
+* HID Report Descriptor\r
+* HID Class Descriptor\r
+*********************************************************************/\r
+const T_USBFS_LUT CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_TABLE[5u] = {\r
+ {0x00u, &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_RPT_TABLE},\r
+ {0x00u, &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_RPT_TABLE},\r
+ {0x00u, NULL},\r
+ {0x01u, (const void *)&USBFS_HIDREPORT_DESCRIPTOR1[0]},\r
+ {0x01u, (const void *)&USBFS_DEVICE0_CONFIGURATION0_DESCR[18]}\r
+};\r
+#endif /* USER_DEFINE_USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_HID_RPT_STORAGE */\r
+\r
+/*********************************************************************\r
+* Interface Dispatch Table -- Points to the Class Dispatch Tables\r
+*********************************************************************/\r
+const T_USBFS_LUT CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_TABLE[1u] = {\r
+ {USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_COUNT, \r
+ &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_TABLE}\r
+};\r
+/*********************************************************************\r
+* Endpoint Setting Table -- This table contain the endpoint setting\r
+* for each endpoint in the configuration. It\r
+* contains the necessary information to\r
+* configure the endpoint hardware for each\r
+* interface and alternate setting.\r
+*********************************************************************/\r
+const T_USBFS_EP_SETTINGS_BLOCK CYCODE USBFS_DEVICE0_CONFIGURATION0_EP_SETTINGS_TABLE[2u] = {\r
+/* IFC ALT EPAddr bmAttr MaxPktSize Class ********************/\r
+{0x00u, 0x00u, 0x01u, 0x03u, 0x0040u, 0x03u},\r
+{0x00u, 0x00u, 0x82u, 0x03u, 0x0040u, 0x03u}\r
+};\r
+const uint8 CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE_CLASS[1u] = {\r
+0x03u\r
+};\r
+/*********************************************************************\r
+* Config Dispatch Table -- Points to the Config Descriptor and each of\r
+* and endpoint setup table and to each\r
+* interface table if it specifies a USB Class\r
+*********************************************************************/\r
+const T_USBFS_LUT CYCODE USBFS_DEVICE0_CONFIGURATION0_TABLE[4u] = {\r
+ {0x01u, &USBFS_DEVICE0_CONFIGURATION0_DESCR},\r
+ {0x02u, &USBFS_DEVICE0_CONFIGURATION0_EP_SETTINGS_TABLE},\r
+ {0x01u, &USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_TABLE},\r
+ {0x00u, &USBFS_DEVICE0_CONFIGURATION0_INTERFACE_CLASS}\r
+};\r
+/*********************************************************************\r
+* Device Dispatch Table -- Points to the Device Descriptor and each of\r
+* and Configuration Tables for this Device \r
+*********************************************************************/\r
+const T_USBFS_LUT CYCODE USBFS_DEVICE0_TABLE[2u] = {\r
+ {0x01u, &USBFS_DEVICE0_DESCR},\r
+ {0x01u, &USBFS_DEVICE0_CONFIGURATION0_TABLE}\r
+};\r
+/*********************************************************************\r
+* Device Table -- Indexed by the device number.\r
+*********************************************************************/\r
+const T_USBFS_LUT CYCODE USBFS_TABLE[1u] = {\r
+ {0x01u, &USBFS_DEVICE0_TABLE}\r
+};\r
+\r
+#endif /* USER_SUPPLIED_DESCRIPTORS */\r
+\r
+#if defined(USBFS_ENABLE_MSOS_STRING)\r
+\r
+ /******************************************************************************\r
+ * USB Microsoft OS String Descriptor\r
+ * "MSFT" identifies a Microsoft host\r
+ * "100" specifies version 1.00\r
+ * USBFS_GET_EXTENDED_CONFIG_DESCRIPTOR becomes the bRequest value\r
+ * in a host vendor device/class request\r
+ ******************************************************************************/\r
+\r
+ const uint8 CYCODE USBFS_MSOS_DESCRIPTOR[USBFS_MSOS_DESCRIPTOR_LENGTH] = {\r
+ /* Descriptor Length */ 0x12u,\r
+ /* DescriptorType: STRING */ 0x03u,\r
+ /* qwSignature - "MSFT100" */ (uint8)'M', 0u, (uint8)'S', 0u, (uint8)'F', 0u, (uint8)'T', 0u,\r
+ (uint8)'1', 0u, (uint8)'0', 0u, (uint8)'0', 0u,\r
+ /* bMS_VendorCode: */ USBFS_GET_EXTENDED_CONFIG_DESCRIPTOR,\r
+ /* bPad */ 0x00u\r
+ };\r
+\r
+ /* Extended Configuration Descriptor */\r
+\r
+ const uint8 CYCODE USBFS_MSOS_CONFIGURATION_DESCR[USBFS_MSOS_CONF_DESCR_LENGTH] = {\r
+ /* Length of the descriptor 4 bytes */ 0x28u, 0x00u, 0x00u, 0x00u,\r
+ /* Version of the descriptor 2 bytes */ 0x00u, 0x01u,\r
+ /* wIndex - Fixed:INDEX_CONFIG_DESCRIPTOR */ 0x04u, 0x00u,\r
+ /* bCount - Count of device functions. */ 0x01u,\r
+ /* Reserved : 7 bytes */ 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,\r
+ /* bFirstInterfaceNumber */ 0x00u,\r
+ /* Reserved */ 0x01u,\r
+ /* compatibleID - "CYUSB\0\0" */ (uint8)'C', (uint8)'Y', (uint8)'U', (uint8)'S', (uint8)'B',\r
+ 0x00u, 0x00u, 0x00u,\r
+ /* subcompatibleID - "00001\0\0" */ (uint8)'0', (uint8)'0', (uint8)'0', (uint8)'0', (uint8)'1',\r
+ 0x00u, 0x00u, 0x00u,\r
+ /* Reserved : 6 bytes */ 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u\r
+ };\r
+\r
+#endif /* USBFS_ENABLE_MSOS_STRING */\r
+\r
+/* DIE ID string descriptor for 8 bytes ID */\r
+#if defined(USBFS_ENABLE_IDSN_STRING)\r
+ uint8 USBFS_idSerialNumberStringDescriptor[USBFS_IDSN_DESCR_LENGTH];\r
+#endif /* USBFS_ENABLE_IDSN_STRING */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_drv.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Endpoint 0 Driver for the USBFS Component.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+#include "USBFS_pvt.h"\r
+\r
+\r
+/***************************************\r
+* Global data allocation\r
+***************************************/\r
+\r
+volatile T_USBFS_EP_CTL_BLOCK USBFS_EP[USBFS_MAX_EP];\r
+volatile uint8 USBFS_configuration;\r
+volatile uint8 USBFS_interfaceNumber;\r
+volatile uint8 USBFS_configurationChanged;\r
+volatile uint8 USBFS_deviceAddress;\r
+volatile uint8 USBFS_deviceStatus;\r
+volatile uint8 USBFS_interfaceSetting[USBFS_MAX_INTERFACES_NUMBER];\r
+volatile uint8 USBFS_interfaceSetting_last[USBFS_MAX_INTERFACES_NUMBER];\r
+volatile uint8 USBFS_interfaceStatus[USBFS_MAX_INTERFACES_NUMBER];\r
+volatile uint8 USBFS_device;\r
+const uint8 CYCODE *USBFS_interfaceClass;\r
+\r
+\r
+/***************************************\r
+* Local data allocation\r
+***************************************/\r
+\r
+volatile uint8 USBFS_ep0Toggle;\r
+volatile uint8 USBFS_lastPacketSize;\r
+volatile uint8 USBFS_transferState;\r
+volatile T_USBFS_TD USBFS_currentTD;\r
+volatile uint8 USBFS_ep0Mode;\r
+volatile uint8 USBFS_ep0Count;\r
+volatile uint16 USBFS_transferByteCount;\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ep_0_Interrupt\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This Interrupt Service Routine handles Endpoint 0 (Control Pipe) traffic.\r
+* It dispatches setup requests and handles the data and status stages.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+*******************************************************************************/\r
+CY_ISR(USBFS_EP_0_ISR)\r
+{\r
+ uint8 bRegTemp;\r
+ uint8 modifyReg;\r
+\r
+\r
+ bRegTemp = CY_GET_REG8(USBFS_EP0_CR_PTR);\r
+ if ((bRegTemp & USBFS_MODE_ACKD) != 0u)\r
+ {\r
+ modifyReg = 1u;\r
+ if ((bRegTemp & USBFS_MODE_SETUP_RCVD) != 0u)\r
+ {\r
+ if((bRegTemp & USBFS_MODE_MASK) != USBFS_MODE_NAK_IN_OUT)\r
+ {\r
+ modifyReg = 0u; /* When mode not NAK_IN_OUT => invalid setup */\r
+ }\r
+ else\r
+ {\r
+ USBFS_HandleSetup();\r
+ if((USBFS_ep0Mode & USBFS_MODE_SETUP_RCVD) != 0u)\r
+ {\r
+ modifyReg = 0u; /* if SETUP bit set -> exit without modifying the mode */\r
+ }\r
+\r
+ }\r
+ }\r
+ else if ((bRegTemp & USBFS_MODE_IN_RCVD) != 0u)\r
+ {\r
+ USBFS_HandleIN();\r
+ }\r
+ else if ((bRegTemp & USBFS_MODE_OUT_RCVD) != 0u)\r
+ {\r
+ USBFS_HandleOUT();\r
+ }\r
+ else\r
+ {\r
+ modifyReg = 0u;\r
+ }\r
+ if(modifyReg != 0u)\r
+ {\r
+ bRegTemp = CY_GET_REG8(USBFS_EP0_CR_PTR); /* unlock registers */\r
+ if((bRegTemp & USBFS_MODE_SETUP_RCVD) == 0u) /* Check if SETUP bit is not set, otherwise exit */\r
+ {\r
+ /* Update the count register */\r
+ bRegTemp = USBFS_ep0Toggle | USBFS_ep0Count;\r
+ CY_SET_REG8(USBFS_EP0_CNT_PTR, bRegTemp);\r
+ if(bRegTemp == CY_GET_REG8(USBFS_EP0_CNT_PTR)) /* continue if writing was successful */\r
+ {\r
+ do\r
+ {\r
+ modifyReg = USBFS_ep0Mode; /* Init temporary variable */\r
+ /* Unlock registers */\r
+ bRegTemp = CY_GET_REG8(USBFS_EP0_CR_PTR) & USBFS_MODE_SETUP_RCVD;\r
+ if(bRegTemp == 0u) /* Check if SETUP bit is not set */\r
+ {\r
+ /* Set the Mode Register */\r
+ CY_SET_REG8(USBFS_EP0_CR_PTR, USBFS_ep0Mode);\r
+ /* Writing check */\r
+ modifyReg = CY_GET_REG8(USBFS_EP0_CR_PTR) & USBFS_MODE_MASK;\r
+ }\r
+ }while(modifyReg != USBFS_ep0Mode); /* Repeat if writing was not successful */\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_HandleSetup\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This Routine dispatches requests for the four USB request types\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_HandleSetup(void) \r
+{\r
+ uint8 requestHandled;\r
+\r
+ requestHandled = CY_GET_REG8(USBFS_EP0_CR_PTR); /* unlock registers */\r
+ CY_SET_REG8(USBFS_EP0_CR_PTR, requestHandled); /* clear setup bit */\r
+ requestHandled = CY_GET_REG8(USBFS_EP0_CR_PTR); /* reread register */\r
+ if((requestHandled & USBFS_MODE_SETUP_RCVD) != 0u)\r
+ {\r
+ USBFS_ep0Mode = requestHandled; /* if SETUP bit set -> exit without modifying the mode */\r
+ }\r
+ else\r
+ {\r
+ /* In case the previous transfer did not complete, close it out */\r
+ USBFS_UpdateStatusBlock(USBFS_XFER_PREMATURE);\r
+\r
+ switch (CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_TYPE_MASK)\r
+ {\r
+ case USBFS_RQST_TYPE_STD:\r
+ requestHandled = USBFS_HandleStandardRqst();\r
+ break;\r
+ case USBFS_RQST_TYPE_CLS:\r
+ requestHandled = USBFS_DispatchClassRqst();\r
+ break;\r
+ case USBFS_RQST_TYPE_VND:\r
+ requestHandled = USBFS_HandleVendorRqst();\r
+ break;\r
+ default:\r
+ requestHandled = USBFS_FALSE;\r
+ break;\r
+ }\r
+ if (requestHandled == USBFS_FALSE)\r
+ {\r
+ USBFS_ep0Mode = USBFS_MODE_STALL_IN_OUT;\r
+ }\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_HandleIN\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine handles EP0 IN transfers.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_HandleIN(void) \r
+{\r
+ switch (USBFS_transferState)\r
+ {\r
+ case USBFS_TRANS_STATE_IDLE:\r
+ break;\r
+ case USBFS_TRANS_STATE_CONTROL_READ:\r
+ USBFS_ControlReadDataStage();\r
+ break;\r
+ case USBFS_TRANS_STATE_CONTROL_WRITE:\r
+ USBFS_ControlWriteStatusStage();\r
+ break;\r
+ case USBFS_TRANS_STATE_NO_DATA_CONTROL:\r
+ USBFS_NoDataControlStatusStage();\r
+ break;\r
+ default: /* there are no more states */\r
+ break;\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_HandleOUT\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine handles EP0 OUT transfers.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_HandleOUT(void) \r
+{\r
+ switch (USBFS_transferState)\r
+ {\r
+ case USBFS_TRANS_STATE_IDLE:\r
+ break;\r
+ case USBFS_TRANS_STATE_CONTROL_READ:\r
+ USBFS_ControlReadStatusStage();\r
+ break;\r
+ case USBFS_TRANS_STATE_CONTROL_WRITE:\r
+ USBFS_ControlWriteDataStage();\r
+ break;\r
+ case USBFS_TRANS_STATE_NO_DATA_CONTROL:\r
+ /* Update the completion block */\r
+ USBFS_UpdateStatusBlock(USBFS_XFER_ERROR);\r
+ /* We expect no more data, so stall INs and OUTs */\r
+ USBFS_ep0Mode = USBFS_MODE_STALL_IN_OUT;\r
+ break;\r
+ default: /* There are no more states */\r
+ break;\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_LoadEP0\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine loads the EP0 data registers for OUT transfers. It uses the\r
+* currentTD (previously initialized by the _InitControlWrite function and\r
+* updated for each OUT transfer, and the bLastPacketSize) to determine how\r
+* many uint8s to transfer on the current OUT.\r
+*\r
+* If the number of uint8s remaining is zero and the last transfer was full,\r
+* we need to send a zero length packet. Otherwise we send the minimum\r
+* of the control endpoint size (8) or remaining number of uint8s for the\r
+* transaction.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_transferByteCount - Update the transfer byte count from the\r
+* last transaction.\r
+* USBFS_ep0Count - counts the data loaded to the SIE memory in\r
+* current packet.\r
+* USBFS_lastPacketSize - remembers the USBFS_ep0Count value for the\r
+* next packet.\r
+* USBFS_transferByteCount - sum of the previous bytes transferred\r
+* on previous packets(sum of USBFS_lastPacketSize)\r
+* USBFS_ep0Toggle - inverted\r
+* USBFS_ep0Mode - prepare for mode register content.\r
+* USBFS_transferState - set to TRANS_STATE_CONTROL_READ\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_LoadEP0(void) \r
+{\r
+ uint8 ep0Count = 0u;\r
+\r
+ /* Update the transfer byte count from the last transaction */\r
+ USBFS_transferByteCount += USBFS_lastPacketSize;\r
+ /* Now load the next transaction */\r
+ while ((USBFS_currentTD.count > 0u) && (ep0Count < 8u))\r
+ {\r
+ CY_SET_REG8((reg8 *)(USBFS_EP0_DR0_IND + ep0Count), *USBFS_currentTD.pData);\r
+ USBFS_currentTD.pData = &USBFS_currentTD.pData[1u];\r
+ ep0Count++;\r
+ USBFS_currentTD.count--;\r
+ }\r
+ /* Support zero-length packet*/\r
+ if( (USBFS_lastPacketSize == 8u) || (ep0Count > 0u) )\r
+ {\r
+ /* Update the data toggle */\r
+ USBFS_ep0Toggle ^= USBFS_EP0_CNT_DATA_TOGGLE;\r
+ /* Set the Mode Register */\r
+ USBFS_ep0Mode = USBFS_MODE_ACK_IN_STATUS_OUT;\r
+ /* Update the state (or stay the same) */\r
+ USBFS_transferState = USBFS_TRANS_STATE_CONTROL_READ;\r
+ }\r
+ else\r
+ {\r
+ /* Expect Status Stage Out */\r
+ USBFS_ep0Mode = USBFS_MODE_STATUS_OUT_ONLY;\r
+ /* Update the state (or stay the same) */\r
+ USBFS_transferState = USBFS_TRANS_STATE_CONTROL_READ;\r
+ }\r
+\r
+ /* Save the packet size for next time */\r
+ USBFS_lastPacketSize = ep0Count;\r
+ USBFS_ep0Count = ep0Count;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_InitControlRead\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Initialize a control read transaction, usable to send data to the host.\r
+* The following global variables should be initialized before this function\r
+* called. To send zero length packet use InitZeroLengthControlTransfer\r
+* function.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled state.\r
+*\r
+* Global variables:\r
+* USBFS_currentTD.count - counts of data to be sent.\r
+* USBFS_currentTD.pData - data pointer.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_InitControlRead(void) \r
+{\r
+ uint16 xferCount;\r
+ if(USBFS_currentTD.count == 0u)\r
+ {\r
+ (void) USBFS_InitZeroLengthControlTransfer();\r
+ }\r
+ else\r
+ {\r
+ /* Set up the state machine */\r
+ USBFS_transferState = USBFS_TRANS_STATE_CONTROL_READ;\r
+ /* Set the toggle, it gets updated in LoadEP */\r
+ USBFS_ep0Toggle = 0u;\r
+ /* Initialize the Status Block */\r
+ USBFS_InitializeStatusBlock();\r
+ xferCount = (((uint16)CY_GET_REG8(USBFS_lengthHi) << 8u) | (CY_GET_REG8(USBFS_lengthLo)));\r
+\r
+ if (USBFS_currentTD.count > xferCount)\r
+ {\r
+ USBFS_currentTD.count = xferCount;\r
+ }\r
+ USBFS_LoadEP0();\r
+ }\r
+\r
+ return(USBFS_TRUE);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_InitZeroLengthControlTransfer\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Initialize a zero length data IN transfer.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled state.\r
+*\r
+* Global variables:\r
+* USBFS_ep0Toggle - set to EP0_CNT_DATA_TOGGLE\r
+* USBFS_ep0Mode - prepare for mode register content.\r
+* USBFS_transferState - set to TRANS_STATE_CONTROL_READ\r
+* USBFS_ep0Count - cleared, means the zero-length packet.\r
+* USBFS_lastPacketSize - cleared.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_InitZeroLengthControlTransfer(void)\r
+ \r
+{\r
+ /* Update the state */\r
+ USBFS_transferState = USBFS_TRANS_STATE_CONTROL_READ;\r
+ /* Set the data toggle */\r
+ USBFS_ep0Toggle = USBFS_EP0_CNT_DATA_TOGGLE;\r
+ /* Set the Mode Register */\r
+ USBFS_ep0Mode = USBFS_MODE_ACK_IN_STATUS_OUT;\r
+ /* Save the packet size for next time */\r
+ USBFS_lastPacketSize = 0u;\r
+ USBFS_ep0Count = 0u;\r
+\r
+ return(USBFS_TRUE);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ControlReadDataStage\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Handle the Data Stage of a control read transfer.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_ControlReadDataStage(void) \r
+\r
+{\r
+ USBFS_LoadEP0();\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ControlReadStatusStage\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Handle the Status Stage of a control read transfer.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_USBFS_transferByteCount - updated with last packet size.\r
+* USBFS_transferState - set to TRANS_STATE_IDLE.\r
+* USBFS_ep0Mode - set to MODE_STALL_IN_OUT.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_ControlReadStatusStage(void) \r
+{\r
+ /* Update the transfer byte count */\r
+ USBFS_transferByteCount += USBFS_lastPacketSize;\r
+ /* Go Idle */\r
+ USBFS_transferState = USBFS_TRANS_STATE_IDLE;\r
+ /* Update the completion block */\r
+ USBFS_UpdateStatusBlock(USBFS_XFER_STATUS_ACK);\r
+ /* We expect no more data, so stall INs and OUTs */\r
+ USBFS_ep0Mode = USBFS_MODE_STALL_IN_OUT;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_InitControlWrite\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Initialize a control write transaction\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled state.\r
+*\r
+* Global variables:\r
+* USBFS_USBFS_transferState - set to TRANS_STATE_CONTROL_WRITE\r
+* USBFS_ep0Toggle - set to EP0_CNT_DATA_TOGGLE\r
+* USBFS_ep0Mode - set to MODE_ACK_OUT_STATUS_IN\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_InitControlWrite(void) \r
+{\r
+ uint16 xferCount;\r
+\r
+ /* Set up the state machine */\r
+ USBFS_transferState = USBFS_TRANS_STATE_CONTROL_WRITE;\r
+ /* This might not be necessary */\r
+ USBFS_ep0Toggle = USBFS_EP0_CNT_DATA_TOGGLE;\r
+ /* Initialize the Status Block */\r
+ USBFS_InitializeStatusBlock();\r
+\r
+ xferCount = (((uint16)CY_GET_REG8(USBFS_lengthHi) << 8u) | (CY_GET_REG8(USBFS_lengthLo)));\r
+\r
+ if (USBFS_currentTD.count > xferCount)\r
+ {\r
+ USBFS_currentTD.count = xferCount;\r
+ }\r
+\r
+ /* Expect Data or Status Stage */\r
+ USBFS_ep0Mode = USBFS_MODE_ACK_OUT_STATUS_IN;\r
+\r
+ return(USBFS_TRUE);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ControlWriteDataStage\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Handle the Data Stage of a control write transfer\r
+* 1. Get the data (We assume the destination was validated previously)\r
+* 2. Update the count and data toggle\r
+* 3. Update the mode register for the next transaction\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_transferByteCount - Update the transfer byte count from the\r
+* last transaction.\r
+* USBFS_ep0Count - counts the data loaded from the SIE memory\r
+* in current packet.\r
+* USBFS_transferByteCount - sum of the previous bytes transferred\r
+* on previous packets(sum of USBFS_lastPacketSize)\r
+* USBFS_ep0Toggle - inverted\r
+* USBFS_ep0Mode - set to MODE_ACK_OUT_STATUS_IN.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_ControlWriteDataStage(void) \r
+{\r
+ uint8 ep0Count;\r
+ uint8 regIndex = 0u;\r
+\r
+ ep0Count = (CY_GET_REG8(USBFS_EP0_CNT_PTR) & USBFS_EPX_CNT0_MASK) -\r
+ USBFS_EPX_CNTX_CRC_COUNT;\r
+\r
+ USBFS_transferByteCount += ep0Count;\r
+\r
+ while ((USBFS_currentTD.count > 0u) && (ep0Count > 0u))\r
+ {\r
+ *USBFS_currentTD.pData = CY_GET_REG8((reg8 *)(USBFS_EP0_DR0_IND + regIndex));\r
+ USBFS_currentTD.pData = &USBFS_currentTD.pData[1u];\r
+ regIndex++;\r
+ ep0Count--;\r
+ USBFS_currentTD.count--;\r
+ }\r
+ USBFS_ep0Count = ep0Count;\r
+ /* Update the data toggle */\r
+ USBFS_ep0Toggle ^= USBFS_EP0_CNT_DATA_TOGGLE;\r
+ /* Expect Data or Status Stage */\r
+ USBFS_ep0Mode = USBFS_MODE_ACK_OUT_STATUS_IN;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ControlWriteStatusStage\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Handle the Status Stage of a control write transfer\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_transferState - set to TRANS_STATE_IDLE.\r
+* USBFS_USBFS_ep0Mode - set to MODE_STALL_IN_OUT.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_ControlWriteStatusStage(void) \r
+{\r
+ /* Go Idle */\r
+ USBFS_transferState = USBFS_TRANS_STATE_IDLE;\r
+ /* Update the completion block */\r
+ USBFS_UpdateStatusBlock(USBFS_XFER_STATUS_ACK);\r
+ /* We expect no more data, so stall INs and OUTs */\r
+ USBFS_ep0Mode = USBFS_MODE_STALL_IN_OUT;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_InitNoDataControlTransfer\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Initialize a no data control transfer\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled state.\r
+*\r
+* Global variables:\r
+* USBFS_transferState - set to TRANS_STATE_NO_DATA_CONTROL.\r
+* USBFS_ep0Mode - set to MODE_STATUS_IN_ONLY.\r
+* USBFS_ep0Count - cleared.\r
+* USBFS_ep0Toggle - set to EP0_CNT_DATA_TOGGLE\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_InitNoDataControlTransfer(void) \r
+{\r
+ USBFS_transferState = USBFS_TRANS_STATE_NO_DATA_CONTROL;\r
+ USBFS_ep0Mode = USBFS_MODE_STATUS_IN_ONLY;\r
+ USBFS_ep0Toggle = USBFS_EP0_CNT_DATA_TOGGLE;\r
+ USBFS_ep0Count = 0u;\r
+\r
+ return(USBFS_TRUE);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_NoDataControlStatusStage\r
+********************************************************************************\r
+* Summary:\r
+* Handle the Status Stage of a no data control transfer.\r
+*\r
+* SET_ADDRESS is special, since we need to receive the status stage with\r
+* the old address.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_transferState - set to TRANS_STATE_IDLE.\r
+* USBFS_ep0Mode - set to MODE_STALL_IN_OUT.\r
+* USBFS_ep0Toggle - set to EP0_CNT_DATA_TOGGLE\r
+* USBFS_deviceAddress - used to set new address and cleared\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_NoDataControlStatusStage(void) \r
+{\r
+ /* Change the USB address register if we got a SET_ADDRESS. */\r
+ if (USBFS_deviceAddress != 0u)\r
+ {\r
+ CY_SET_REG8(USBFS_CR0_PTR, USBFS_deviceAddress | USBFS_CR0_ENABLE);\r
+ USBFS_deviceAddress = 0u;\r
+ }\r
+ /* Go Idle */\r
+ USBFS_transferState = USBFS_TRANS_STATE_IDLE;\r
+ /* Update the completion block */\r
+ USBFS_UpdateStatusBlock(USBFS_XFER_STATUS_ACK);\r
+ /* We expect no more data, so stall INs and OUTs */\r
+ USBFS_ep0Mode = USBFS_MODE_STALL_IN_OUT;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_UpdateStatusBlock\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Update the Completion Status Block for a Request. The block is updated\r
+* with the completion code the USBFS_transferByteCount. The\r
+* StatusBlock Pointer is set to NULL.\r
+*\r
+* Parameters:\r
+* completionCode - status.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_currentTD.pStatusBlock->status - updated by the\r
+* completionCode parameter.\r
+* USBFS_currentTD.pStatusBlock->length - updated.\r
+* USBFS_currentTD.pStatusBlock - cleared.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_UpdateStatusBlock(uint8 completionCode) \r
+{\r
+ if (USBFS_currentTD.pStatusBlock != NULL)\r
+ {\r
+ USBFS_currentTD.pStatusBlock->status = completionCode;\r
+ USBFS_currentTD.pStatusBlock->length = USBFS_transferByteCount;\r
+ USBFS_currentTD.pStatusBlock = NULL;\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_InitializeStatusBlock\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Initialize the Completion Status Block for a Request. The completion\r
+* code is set to USB_XFER_IDLE.\r
+*\r
+* Also, initializes USBFS_transferByteCount. Save some space,\r
+* this is the only consumer.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_currentTD.pStatusBlock->status - set to XFER_IDLE.\r
+* USBFS_currentTD.pStatusBlock->length - cleared.\r
+* USBFS_transferByteCount - cleared.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_InitializeStatusBlock(void) \r
+{\r
+ USBFS_transferByteCount = 0u;\r
+ if(USBFS_currentTD.pStatusBlock != NULL)\r
+ {\r
+ USBFS_currentTD.pStatusBlock->status = USBFS_XFER_IDLE;\r
+ USBFS_currentTD.pStatusBlock->length = 0u;\r
+ }\r
+}\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_episr.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Data endpoint Interrupt Service Routines\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+#include "USBFS_pvt.h"\r
+#if defined(USBFS_ENABLE_MIDI_STREAMING) && (USBFS_ENABLE_MIDI_API != 0u)\r
+ #include "USBFS_midi.h"\r
+#endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+\r
+\r
+/***************************************\r
+* Custom Declarations\r
+***************************************/\r
+/* `#START CUSTOM_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+#if(USBFS_EP1_ISR_REMOVE == 0u)\r
+\r
+\r
+ /******************************************************************************\r
+ * Function Name: USBFS_EP_1_ISR\r
+ *******************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 1 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ ******************************************************************************/\r
+ CY_ISR(USBFS_EP_1_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
+\r
+ /* `#START EP1_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP1_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP1].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP1].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP1].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR) &\r
+ (uint8)~USBFS_SIE_EP_INT_EP1_MASK);\r
+\r
+ #if( defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT )\r
+ if(USBFS_midi_out_ep == USBFS_EP1)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP1_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if ( defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 )\r
+ EA = int_en;\r
+ #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
+ }\r
+\r
+#endif /* End USBFS_EP1_ISR_REMOVE */\r
+\r
+\r
+#if(USBFS_EP2_ISR_REMOVE == 0u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_EP_2_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 2 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_EP_2_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
+\r
+ /* `#START EP2_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 )\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP2_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP2].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP2].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP2].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
+ & (uint8)~USBFS_SIE_EP_INT_EP2_MASK);\r
+\r
+ #if( defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT )\r
+ if(USBFS_midi_out_ep == USBFS_EP2)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP2_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ EA = int_en;\r
+ #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
+ }\r
+\r
+#endif /* End USBFS_EP2_ISR_REMOVE */\r
+\r
+\r
+#if(USBFS_EP3_ISR_REMOVE == 0u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_EP_3_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 3 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_EP_3_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
+\r
+ /* `#START EP3_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP3_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP3].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP3].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP3].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
+ & (uint8)~USBFS_SIE_EP_INT_EP3_MASK);\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT)\r
+ if(USBFS_midi_out_ep == USBFS_EP3)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP3_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ EA = int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+ }\r
+\r
+#endif /* End USBFS_EP3_ISR_REMOVE */\r
+\r
+\r
+#if(USBFS_EP4_ISR_REMOVE == 0u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_EP_4_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 4 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_EP_4_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP4_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP4_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP4].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP4].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP4].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
+ & (uint8)~USBFS_SIE_EP_INT_EP4_MASK);\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT)\r
+ if(USBFS_midi_out_ep == USBFS_EP4)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP4_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ EA = int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+ }\r
+\r
+#endif /* End USBFS_EP4_ISR_REMOVE */\r
+\r
+\r
+#if(USBFS_EP5_ISR_REMOVE == 0u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_EP_5_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 5 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_EP_5_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP5_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP5_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP5].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP5].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP5].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
+ & (uint8)~USBFS_SIE_EP_INT_EP5_MASK);\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT)\r
+ if(USBFS_midi_out_ep == USBFS_EP5)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP5_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ EA = int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+ }\r
+#endif /* End USBFS_EP5_ISR_REMOVE */\r
+\r
+\r
+#if(USBFS_EP6_ISR_REMOVE == 0u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_EP_6_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 6 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_EP_6_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP6_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP6_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP6].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP6].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP6].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
+ & (uint8)~USBFS_SIE_EP_INT_EP6_MASK);\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT)\r
+ if(USBFS_midi_out_ep == USBFS_EP6)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP6_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ EA = int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+ }\r
+\r
+#endif /* End USBFS_EP6_ISR_REMOVE */\r
+\r
+\r
+#if(USBFS_EP7_ISR_REMOVE == 0u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_EP_7_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 7 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_EP_7_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP7_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP7_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP7].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP7].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP7].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
+ & (uint8)~USBFS_SIE_EP_INT_EP7_MASK);\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT)\r
+ if(USBFS_midi_out_ep == USBFS_EP7)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP7_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ EA = int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+ }\r
+\r
+#endif /* End USBFS_EP7_ISR_REMOVE */\r
+\r
+\r
+#if(USBFS_EP8_ISR_REMOVE == 0u)\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_EP_8_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Endpoint 8 Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_EP_8_ISR)\r
+ {\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ uint8 int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP8_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ int_en = EA;\r
+ CyGlobalIntEnable; /* Make sure nested interrupt is enabled */\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ CY_GET_REG8(USBFS_SIE_EP8_CR0_PTR); /* Must read the mode reg */\r
+ /* Do not toggle ISOC endpoint */\r
+ if((USBFS_EP[USBFS_EP8].attrib & USBFS_EP_TYPE_MASK) !=\r
+ USBFS_EP_TYPE_ISOC)\r
+ {\r
+ USBFS_EP[USBFS_EP8].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
+ }\r
+ USBFS_EP[USBFS_EP8].apiEpState = USBFS_EVENT_PENDING;\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
+ & (uint8)~USBFS_SIE_EP_INT_EP8_MASK);\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT)\r
+ if(USBFS_midi_out_ep == USBFS_EP8)\r
+ {\r
+ USBFS_MIDI_OUT_EP_Service();\r
+ }\r
+ #endif /* End USBFS_ISR_SERVICE_MIDI_OUT */\r
+\r
+ /* `#START EP8_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
+ EA = int_en;\r
+ #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT */\r
+ }\r
+\r
+#endif /* End USBFS_EP8_ISR_REMOVE */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_SOF_ISR\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Start of Frame Interrupt Service Routine\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+*******************************************************************************/\r
+CY_ISR(USBFS_SOF_ISR)\r
+{\r
+ /* `#START SOF_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_BUS_RESET_ISR\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* USB Bus Reset Interrupt Service Routine. Calls _Start with the same\r
+* parameters as the last USER call to _Start\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+*******************************************************************************/\r
+CY_ISR(USBFS_BUS_RESET_ISR)\r
+{\r
+ /* `#START BUS_RESET_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ USBFS_ReInitComponent();\r
+}\r
+\r
+\r
+#if((USBFS_EP_MM != USBFS__EP_MANUAL) && (USBFS_ARB_ISR_REMOVE == 0u))\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_ARB_ISR\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Arbiter Interrupt Service Routine\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Side effect:\r
+ * Search for EP8 int_status will be much slower than search for EP1 int_status.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_ARB_ISR)\r
+ {\r
+ uint8 int_status;\r
+ uint8 ep_status;\r
+ uint8 ep = USBFS_EP1;\r
+ uint8 ptr = 0u;\r
+\r
+ /* `#START ARB_BEGIN_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ int_status = USBFS_ARB_INT_SR_REG; /* read Arbiter Status Register */\r
+ USBFS_ARB_INT_SR_REG = int_status; /* Clear Serviced Interrupts */\r
+\r
+ while(int_status != 0u)\r
+ {\r
+ if((int_status & 1u) != 0u) /* If EpX interrupt present */\r
+ { /* read Endpoint Status Register */\r
+ ep_status = CY_GET_REG8((reg8 *)(USBFS_ARB_EP1_SR_IND + ptr));\r
+ /* If In Buffer Full */\r
+ if((ep_status & USBFS_ARB_EPX_SR_IN_BUF_FULL) != 0u)\r
+ {\r
+ if((USBFS_EP[ep].addr & USBFS_DIR_IN) != 0u)\r
+ {\r
+ /* Clear Data ready status */\r
+ *(reg8 *)(USBFS_ARB_EP1_CFG_IND + ptr) &=\r
+ (uint8)~USBFS_ARB_EPX_CFG_IN_DATA_RDY;\r
+ /* Write the Mode register */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ptr), USBFS_EP[ep].epMode);\r
+ #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_IN)\r
+ if(ep == USBFS_midi_in_ep)\r
+ { /* Clear MIDI input pointer */\r
+ USBFS_midiInPointer = 0u;\r
+ }\r
+ #endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+ }\r
+ }\r
+ /* (re)arm Out EP only for mode2 */\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ /* If DMA Grant */\r
+ if((ep_status & USBFS_ARB_EPX_SR_DMA_GNT) != 0u)\r
+ {\r
+ if((USBFS_EP[ep].addr & USBFS_DIR_IN) == 0u)\r
+ {\r
+ USBFS_EP[ep].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ /* Write the Mode register */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ptr),\r
+ USBFS_EP[ep].epMode);\r
+ }\r
+ }\r
+ #endif /* End USBFS_EP_MM */\r
+\r
+ /* `#START ARB_USER_CODE` Place your code here for handle Buffer Underflow/Overflow */\r
+\r
+ /* `#END` */\r
+\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_EP1_SR_IND + ptr), ep_status); /* Clear Serviced events */\r
+ }\r
+ ptr += USBFS_EPX_CNTX_ADDR_OFFSET; /* prepare pointer for next EP */\r
+ ep++;\r
+ int_status >>= 1u;\r
+ }\r
+\r
+ /* `#START ARB_END_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+ }\r
+\r
+#endif /* End USBFS_EP_MM */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_hid.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* USB HID Class request handler.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+\r
+#if defined(USBFS_ENABLE_HID_CLASS)\r
+\r
+#include "USBFS_pvt.h"\r
+#include "USBFS_hid.h"\r
+\r
+\r
+/***************************************\r
+* HID Variables\r
+***************************************/\r
+\r
+volatile uint8 USBFS_hidProtocol[USBFS_MAX_INTERFACES_NUMBER]; /* HID device protocol status */\r
+volatile uint8 USBFS_hidIdleRate[USBFS_MAX_INTERFACES_NUMBER]; /* HID device idle reload value */\r
+volatile uint8 USBFS_hidIdleTimer[USBFS_MAX_INTERFACES_NUMBER]; /* HID device idle rate value */\r
+\r
+\r
+/***************************************\r
+* Custom Declarations\r
+***************************************/\r
+\r
+/* `#START HID_CUSTOM_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_UpdateHIDTimer\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Updates the HID report timer and reloads it if expired\r
+*\r
+* Parameters:\r
+* interface: Interface Number.\r
+*\r
+* Return:\r
+* status.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_UpdateHIDTimer(uint8 interface) \r
+{\r
+ uint8 stat = USBFS_IDLE_TIMER_INDEFINITE;\r
+\r
+ if(USBFS_hidIdleRate[interface] != 0u)\r
+ {\r
+ if(USBFS_hidIdleTimer[interface] > 0u)\r
+ {\r
+ USBFS_hidIdleTimer[interface]--;\r
+ stat = USBFS_IDLE_TIMER_RUNNING;\r
+ }\r
+ else\r
+ {\r
+ USBFS_hidIdleTimer[interface] = USBFS_hidIdleRate[interface];\r
+ stat = USBFS_IDLE_TIMER_EXPIRED;\r
+ }\r
+ }\r
+\r
+ return(stat);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetProtocol\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Returns the selected protocol value to the application\r
+*\r
+* Parameters:\r
+* interface: Interface Number.\r
+*\r
+* Return:\r
+* Interface protocol.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_GetProtocol(uint8 interface) \r
+{\r
+ return(USBFS_hidProtocol[interface]);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_DispatchHIDClassRqst\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine dispatches class requests\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_DispatchHIDClassRqst(void) \r
+{\r
+ uint8 requestHandled = USBFS_FALSE;\r
+ uint8 interfaceNumber;\r
+\r
+ interfaceNumber = CY_GET_REG8(USBFS_wIndexLo);\r
+ if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) == USBFS_RQST_DIR_D2H)\r
+ { /* Control Read */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_GET_DESCRIPTOR:\r
+ if (CY_GET_REG8(USBFS_wValueHi) == USBFS_DESCR_HID_CLASS)\r
+ {\r
+ USBFS_FindHidClassDecriptor();\r
+ if (USBFS_currentTD.count != 0u)\r
+ {\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ }\r
+ else if (CY_GET_REG8(USBFS_wValueHi) == USBFS_DESCR_HID_REPORT)\r
+ {\r
+ USBFS_FindReportDescriptor();\r
+ if (USBFS_currentTD.count != 0u)\r
+ {\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ }\r
+ else\r
+ { /* requestHandled is initialezed as FALSE by default */\r
+ }\r
+ break;\r
+ case USBFS_HID_GET_REPORT:\r
+ USBFS_FindReport();\r
+ if (USBFS_currentTD.count != 0u)\r
+ {\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ break;\r
+\r
+ case USBFS_HID_GET_IDLE:\r
+ /* This function does not support multiple reports per interface*/\r
+ /* Validate interfaceNumber and Report ID (should be 0) */\r
+ if( (interfaceNumber < USBFS_MAX_INTERFACES_NUMBER) &&\r
+ (CY_GET_REG8(USBFS_wValueLo) == 0u ) ) /* Do not support Idle per Report ID */\r
+ {\r
+ USBFS_currentTD.count = 1u;\r
+ USBFS_currentTD.pData = &USBFS_hidIdleRate[interfaceNumber];\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ break;\r
+ case USBFS_HID_GET_PROTOCOL:\r
+ /* Validate interfaceNumber */\r
+ if( interfaceNumber < USBFS_MAX_INTERFACES_NUMBER)\r
+ {\r
+ USBFS_currentTD.count = 1u;\r
+ USBFS_currentTD.pData = &USBFS_hidProtocol[interfaceNumber];\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ }\r
+ else if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) ==\r
+ USBFS_RQST_DIR_H2D)\r
+ { /* Control Write */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_HID_SET_REPORT:\r
+ USBFS_FindReport();\r
+ if (USBFS_currentTD.count != 0u)\r
+ {\r
+ requestHandled = USBFS_InitControlWrite();\r
+ }\r
+ break;\r
+ case USBFS_HID_SET_IDLE:\r
+ /* This function does not support multiple reports per interface */\r
+ /* Validate interfaceNumber and Report ID (should be 0) */\r
+ if( (interfaceNumber < USBFS_MAX_INTERFACES_NUMBER) &&\r
+ (CY_GET_REG8(USBFS_wValueLo) == 0u ) ) /* Do not support Idle per Report ID */\r
+ {\r
+ USBFS_hidIdleRate[interfaceNumber] = CY_GET_REG8(USBFS_wValueHi);\r
+ /* With regards to HID spec: "7.2.4 Set_Idle Request"\r
+ * Latency. If the current period has gone past the\r
+ * newly proscribed time duration, then a report\r
+ * will be generated immediately.\r
+ */\r
+ if(USBFS_hidIdleRate[interfaceNumber] <\r
+ USBFS_hidIdleTimer[interfaceNumber])\r
+ {\r
+ /* Set the timer to zero and let the UpdateHIDTimer() API return IDLE_TIMER_EXPIRED status*/\r
+ USBFS_hidIdleTimer[interfaceNumber] = 0u;\r
+ }\r
+ /* If the new request is received within 4 milliseconds\r
+ * (1 count) of the end of the current period, then the\r
+ * new request will have no effect until after the report.\r
+ */\r
+ else if(USBFS_hidIdleTimer[interfaceNumber] <= 1u)\r
+ {\r
+ /* Do nothing.\r
+ * Let the UpdateHIDTimer() API continue to work and\r
+ * return IDLE_TIMER_EXPIRED status\r
+ */\r
+ }\r
+ else\r
+ { /* Reload the timer*/\r
+ USBFS_hidIdleTimer[interfaceNumber] =\r
+ USBFS_hidIdleRate[interfaceNumber];\r
+ }\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+ break;\r
+\r
+ case USBFS_HID_SET_PROTOCOL:\r
+ /* Validate interfaceNumber and protocol (must be 0 or 1) */\r
+ if( (interfaceNumber < USBFS_MAX_INTERFACES_NUMBER) &&\r
+ (CY_GET_REG8(USBFS_wValueLo) <= 1u) )\r
+ {\r
+ USBFS_hidProtocol[interfaceNumber] = CY_GET_REG8(USBFS_wValueLo);\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ { /* requestHandled is initialized as FALSE by default */\r
+ }\r
+\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USB_FindHidClassDescriptor\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine find Hid Class Descriptor pointer based on the Interface number\r
+* and Alternate setting then loads the currentTD structure with the address of\r
+* the buffer and the size.\r
+* The HID Class Descriptor resides inside the config descriptor.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* currentTD\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_FindHidClassDecriptor(void) \r
+{\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ volatile uint8 *pDescr;\r
+ uint8 interfaceN;\r
+\r
+ pTmp = USBFS_GetConfigTablePtr(USBFS_configuration - 1u);\r
+ interfaceN = CY_GET_REG8(USBFS_wIndexLo);\r
+ /* Third entry in the LUT starts the Interface Table pointers */\r
+ /* Now use the request interface number*/\r
+ pTmp = &pTmp[interfaceN + 2u];\r
+ /* USB_DEVICEx_CONFIGURATIONy_INTERFACEz_TABLE */\r
+ pTmp = (const T_USBFS_LUT CYCODE *) pTmp->p_list;\r
+ /* Now use Alternate setting number */\r
+ pTmp = &pTmp[USBFS_interfaceSetting[interfaceN]];\r
+ /* USB_DEVICEx_CONFIGURATIONy_INTERFACEz_ALTERNATEi_HID_TABLE */\r
+ pTmp = (const T_USBFS_LUT CYCODE *) pTmp->p_list;\r
+ /* Fifth entry in the LUT points to Hid Class Descriptor in Configuration Descriptor */\r
+ pTmp = &pTmp[4u];\r
+ pDescr = (volatile uint8 *)pTmp->p_list;\r
+ /* The first byte contains the descriptor length */\r
+ USBFS_currentTD.count = *pDescr;\r
+ USBFS_currentTD.pData = pDescr;\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USB_FindReportDescriptor\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine find Hid Report Descriptor pointer based on the Interface\r
+* number, then loads the currentTD structure with the address of the buffer\r
+* and the size.\r
+* Hid Report Descriptor is located after IN/OUT/FEATURE reports.\r
+*\r
+* Parameters:\r
+* void\r
+*\r
+* Return:\r
+* currentTD\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_FindReportDescriptor(void) \r
+{\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ volatile uint8 *pDescr;\r
+ uint8 interfaceN;\r
+\r
+ pTmp = USBFS_GetConfigTablePtr(USBFS_configuration - 1u);\r
+ interfaceN = CY_GET_REG8(USBFS_wIndexLo);\r
+ /* Third entry in the LUT starts the Interface Table pointers */\r
+ /* Now use the request interface number */\r
+ pTmp = &pTmp[interfaceN + 2u];\r
+ /* USB_DEVICEx_CONFIGURATIONy_INTERFACEz_TABLE */\r
+ pTmp = (const T_USBFS_LUT CYCODE *) pTmp->p_list;\r
+ /* Now use Alternate setting number */\r
+ pTmp = &pTmp[USBFS_interfaceSetting[interfaceN]];\r
+ /* USB_DEVICEx_CONFIGURATIONy_INTERFACEz_ALTERNATEi_HID_TABLE */\r
+ pTmp = (const T_USBFS_LUT CYCODE *) pTmp->p_list;\r
+ /* Fourth entry in the LUT starts the Hid Report Descriptor */\r
+ pTmp = &pTmp[3u];\r
+ pDescr = (volatile uint8 *)pTmp->p_list;\r
+ /* The 1st and 2nd bytes of descriptor contain its length. LSB is 1st. */\r
+ USBFS_currentTD.count = (((uint16)pDescr[1u] << 8u) | pDescr[0u]);\r
+ USBFS_currentTD.pData = &pDescr[2u];\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_FindReport\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine sets up a transfer based on the Interface number, Report Type\r
+* and Report ID, then loads the currentTD structure with the address of the\r
+* buffer and the size. The caller has to decide if it is a control read or\r
+* control write.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* currentTD\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_FindReport(void) \r
+{\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ T_USBFS_TD *pTD;\r
+ uint8 interfaceN;\r
+ uint8 reportType;\r
+\r
+ /* `#START HID_FINDREPORT` Place custom handling here */\r
+\r
+ /* `#END` */\r
+ USBFS_currentTD.count = 0u; /* Init not supported condition */\r
+ pTmp = USBFS_GetConfigTablePtr(USBFS_configuration - 1u);\r
+ reportType = CY_GET_REG8(USBFS_wValueHi);\r
+ interfaceN = CY_GET_REG8(USBFS_wIndexLo);\r
+ /* Third entry in the LUT COnfiguration Table starts the Interface Table pointers */\r
+ /* Now use the request interface number */\r
+ pTmp = &pTmp[interfaceN + 2u];\r
+ /* USB_DEVICEx_CONFIGURATIONy_INTERFACEz_TABLE*/\r
+ pTmp = (const T_USBFS_LUT CYCODE *) pTmp->p_list;\r
+ if(interfaceN < USBFS_MAX_INTERFACES_NUMBER)\r
+ {\r
+ /* Now use Alternate setting number */\r
+ pTmp = &pTmp[USBFS_interfaceSetting[interfaceN]];\r
+ /* USB_DEVICEx_CONFIGURATIONy_INTERFACEz_ALTERNATEi_HID_TABLE */\r
+ pTmp = (const T_USBFS_LUT CYCODE *) pTmp->p_list;\r
+ /* Validate reportType to comply with "7.2.1 Get_Report Request" */\r
+ if((reportType >= USBFS_HID_GET_REPORT_INPUT) &&\r
+ (reportType <= USBFS_HID_GET_REPORT_FEATURE))\r
+ {\r
+ /* Get the entry proper TD (IN, OUT or Feature Report Table)*/\r
+ pTmp = &pTmp[reportType - 1u];\r
+ reportType = CY_GET_REG8(USBFS_wValueLo); /* Get reportID */\r
+ /* Validate table support by the HID descriptor, compare table count with reportID */\r
+ if(pTmp->c >= reportType)\r
+ {\r
+ pTD = (T_USBFS_TD *) pTmp->p_list;\r
+ pTD = &pTD[reportType]; /* select entry depend on report ID*/\r
+ USBFS_currentTD.pData = pTD->pData; /* Buffer pointer */\r
+ USBFS_currentTD.count = pTD->count; /* Buffer Size */\r
+ USBFS_currentTD.pStatusBlock = pTD->pStatusBlock;\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Additional user functions supporting HID Requests\r
+********************************************************************************/\r
+\r
+/* `#START HID_FUNCTIONS` Place any additional functions here */\r
+\r
+/* `#END` */\r
+\r
+#endif /* End USBFS_ENABLE_HID_CLASS */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_hid.h\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Header File for the USFS component. Contains prototypes and constant values.\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_USBFS_USBFS_hid_H)\r
+#define CY_USBFS_USBFS_hid_H\r
+\r
+#include "cytypes.h"\r
+\r
+\r
+/***************************************\r
+* Prototypes of the USBFS_hid API.\r
+***************************************/\r
+\r
+uint8 USBFS_UpdateHIDTimer(uint8 interface) ;\r
+uint8 USBFS_GetProtocol(uint8 interface) ;\r
+\r
+\r
+/***************************************\r
+*Renamed Functions for backward compatible\r
+***************************************/\r
+\r
+#define USBFS_bGetProtocol USBFS_GetProtocol\r
+\r
+\r
+/***************************************\r
+* Constants for USBFS_hid API.\r
+***************************************/\r
+\r
+#define USBFS_PROTOCOL_BOOT (0x00u)\r
+#define USBFS_PROTOCOL_REPORT (0x01u)\r
+\r
+/* Request Types (HID Chapter 7.2) */\r
+#define USBFS_HID_GET_REPORT (0x01u)\r
+#define USBFS_HID_GET_IDLE (0x02u)\r
+#define USBFS_HID_GET_PROTOCOL (0x03u)\r
+#define USBFS_HID_SET_REPORT (0x09u)\r
+#define USBFS_HID_SET_IDLE (0x0Au)\r
+#define USBFS_HID_SET_PROTOCOL (0x0Bu)\r
+\r
+/* Descriptor Types (HID Chapter 7.1) */\r
+#define USBFS_DESCR_HID_CLASS (0x21u)\r
+#define USBFS_DESCR_HID_REPORT (0x22u)\r
+#define USBFS_DESCR_HID_PHYSICAL (0x23u)\r
+\r
+/* Report Request Types (HID Chapter 7.2.1) */\r
+#define USBFS_HID_GET_REPORT_INPUT (0x01u)\r
+#define USBFS_HID_GET_REPORT_OUTPUT (0x02u)\r
+#define USBFS_HID_GET_REPORT_FEATURE (0x03u)\r
+\r
+#endif /* End CY_USBFS_USBFS_hid_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_midi.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* MIDI Streaming request handler.\r
+* This file contains routines for sending and receiving MIDI\r
+* messages, and handles running status in both directions.\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+\r
+#if defined(USBFS_ENABLE_MIDI_STREAMING)\r
+\r
+#include "USBFS_midi.h"\r
+#include "USBFS_pvt.h"\r
+\r
+\r
+/***************************************\r
+* MIDI Constants\r
+***************************************/\r
+\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ /* The Size of the MIDI messages (MIDI Table 4-1) */\r
+ static const uint8 CYCODE USBFS_MIDI_SIZE[] = {\r
+ /* Miscellaneous function codes(Reserved) */ 0x03u,\r
+ /* Cable events (Reserved) */ 0x03u,\r
+ /* Two-byte System Common messages */ 0x02u,\r
+ /* Three-byte System Common messages */ 0x03u,\r
+ /* SysEx starts or continues */ 0x03u,\r
+ /* Single-byte System Common Message or\r
+ SysEx ends with following single byte */ 0x01u,\r
+ /* SysEx ends with following two bytes */ 0x02u,\r
+ /* SysEx ends with following three bytes */ 0x03u,\r
+ /* Note-off */ 0x03u,\r
+ /* Note-on */ 0x03u,\r
+ /* Poly-KeyPress */ 0x03u,\r
+ /* Control Change */ 0x03u,\r
+ /* Program Change */ 0x02u,\r
+ /* Channel Pressure */ 0x02u,\r
+ /* PitchBend Change */ 0x03u,\r
+ /* Single Byte */ 0x01u\r
+ };\r
+#endif /* USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+\r
+\r
+/***************************************\r
+* Global variables\r
+***************************************/\r
+\r
+#if (USBFS_MIDI_IN_BUFF_SIZE > 0)\r
+ #if (USBFS_MIDI_IN_BUFF_SIZE >= 256)\r
+ volatile uint16 USBFS_midiInPointer; /* Input endpoint buffer pointer */\r
+ #else\r
+ volatile uint8 USBFS_midiInPointer; /* Input endpoint buffer pointer */\r
+ #endif /* End USBFS_MIDI_IN_BUFF_SIZE >=256 */\r
+ volatile uint8 USBFS_midi_in_ep; /* Input endpoint number */\r
+ uint8 USBFS_midiInBuffer[USBFS_MIDI_IN_BUFF_SIZE]; /* Input endpoint buffer */\r
+#endif /* USBFS_MIDI_IN_BUFF_SIZE > 0 */\r
+\r
+#if (USBFS_MIDI_OUT_BUFF_SIZE > 0)\r
+ volatile uint8 USBFS_midi_out_ep; /* Output endpoint number */\r
+ uint8 USBFS_midiOutBuffer[USBFS_MIDI_OUT_BUFF_SIZE]; /* Output endpoint buffer */\r
+#endif /* USBFS_MIDI_OUT_BUFF_SIZE > 0 */\r
+\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ static USBFS_MIDI_RX_STATUS USBFS_MIDI1_Event; /* MIDI RX status structure */\r
+ static volatile uint8 USBFS_MIDI1_TxRunStat; /* MIDI Output running status */\r
+ volatile uint8 USBFS_MIDI1_InqFlags; /* Device inquiry flag */\r
+\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ static USBFS_MIDI_RX_STATUS USBFS_MIDI2_Event; /* MIDI RX status structure */\r
+ static volatile uint8 USBFS_MIDI2_TxRunStat; /* MIDI Output running status */\r
+ volatile uint8 USBFS_MIDI2_InqFlags; /* Device inquiry flag */\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+#endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+\r
+/***************************************\r
+* Custom Declarations\r
+***************************************/\r
+\r
+/* `#START MIDI_CUSTOM_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/***************************************\r
+* Optional MIDI APIs\r
+***************************************/\r
+#if (USBFS_ENABLE_MIDI_API != 0u)\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_MIDI_EP_Init\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function initializes the MIDI interface and UART(s) to be ready to\r
+* receive data from the PC and MIDI ports.\r
+*\r
+* Parameters:\r
+* None\r
+*\r
+* Return:\r
+* None\r
+*\r
+* Global variables:\r
+* USBFS_midiInBuffer: This buffer is used for saving and combining\r
+* the received data from UART(s) and(or) generated internally by\r
+* PutUsbMidiIn() function messages. USBFS_MIDI_IN_EP_Service()\r
+* function transfers the data from this buffer to the PC.\r
+* USBFS_midiOutBuffer: This buffer is used by the\r
+* USBFS_MIDI_OUT_EP_Service() function for saving the received\r
+* from the PC data, then the data are parsed and transferred to UART(s)\r
+* buffer and to the internal processing by the\r
+* USBFS_callbackLocalMidiEvent function.\r
+* USBFS_midi_out_ep: Used as an OUT endpoint number.\r
+* USBFS_midi_in_ep: Used as an IN endpoint number.\r
+* USBFS_midiInPointer: Initialized to zero.\r
+*\r
+* Reentrant:\r
+* No\r
+*\r
+*******************************************************************************/\r
+void USBFS_MIDI_EP_Init(void) \r
+{\r
+ #if (USBFS_MIDI_IN_BUFF_SIZE > 0)\r
+ USBFS_midiInPointer = 0u;\r
+ #endif /* USBFS_MIDI_IN_BUFF_SIZE > 0 */\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ #if (USBFS_MIDI_IN_BUFF_SIZE > 0)\r
+ /* Init DMA configurations for IN EP*/\r
+ USBFS_LoadInEP(USBFS_midi_in_ep, USBFS_midiInBuffer,\r
+ USBFS_MIDI_IN_BUFF_SIZE);\r
+ \r
+ #endif /* USBFS_MIDI_IN_BUFF_SIZE > 0 */\r
+ #if (USBFS_MIDI_OUT_BUFF_SIZE > 0)\r
+ /* Init DMA configurations for OUT EP*/\r
+ (void)USBFS_ReadOutEP(USBFS_midi_out_ep, USBFS_midiOutBuffer,\r
+ USBFS_MIDI_OUT_BUFF_SIZE);\r
+ #endif /*USBFS_MIDI_OUT_BUFF_SIZE > 0 */\r
+ #endif /* End USBFS__EP_DMAAUTO */\r
+\r
+ #if (USBFS_MIDI_OUT_BUFF_SIZE > 0)\r
+ USBFS_EnableOutEP(USBFS_midi_out_ep);\r
+ #endif /* USBFS_MIDI_OUT_BUFF_SIZE > 0 */\r
+\r
+ /* Initialize the MIDI port(s) */\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ USBFS_MIDI_Init();\r
+ #endif /* USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+}\r
+\r
+#if (USBFS_MIDI_OUT_BUFF_SIZE > 0)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI_OUT_EP_Service\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Services the USB MIDI OUT endpoints.\r
+ * This function is called from OUT EP ISR. It transfers the received from PC\r
+ * data to the external MIDI port(UART TX buffer) and calls the\r
+ * USBFS_callbackLocalMidiEvent() function to internal process\r
+ * of the MIDI data.\r
+ * This function is blocked by UART, if not enough space is available in UART\r
+ * TX buffer. Therefore it is recommended to use large UART TX buffer size.\r
+ *\r
+ * Parameters:\r
+ * None\r
+ *\r
+ * Return:\r
+ * None\r
+ *\r
+ * Global variables:\r
+ * USBFS_midiOutBuffer: Used as temporary buffer between USB internal\r
+ * memory and UART TX buffer.\r
+ * USBFS_midi_out_ep: Used as an OUT endpoint number.\r
+ *\r
+ * Reentrant:\r
+ * No\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_MIDI_OUT_EP_Service(void) \r
+ {\r
+ #if USBFS_MIDI_OUT_BUFF_SIZE >= 256\r
+ uint16 outLength;\r
+ uint16 outPointer;\r
+ #else\r
+ uint8 outLength;\r
+ uint8 outPointer;\r
+ #endif /* End USBFS_MIDI_OUT_BUFF_SIZE >=256 */\r
+\r
+ uint8 dmaState = 0u;\r
+\r
+ /* Service the USB MIDI output endpoint */\r
+ if (USBFS_GetEPState(USBFS_midi_out_ep) == USBFS_OUT_BUFFER_FULL)\r
+ {\r
+ #if USBFS_MIDI_OUT_BUFF_SIZE >= 256\r
+ outLength = USBFS_GetEPCount(USBFS_midi_out_ep);\r
+ #else\r
+ outLength = (uint8)USBFS_GetEPCount(USBFS_midi_out_ep);\r
+ #endif /* End USBFS_MIDI_OUT_BUFF_SIZE >= 256 */\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ #if USBFS_MIDI_OUT_BUFF_SIZE >= 256\r
+ outLength = USBFS_ReadOutEP(USBFS_midi_out_ep,\r
+ USBFS_midiOutBuffer, outLength);\r
+ #else\r
+ outLength = (uint8)USBFS_ReadOutEP(USBFS_midi_out_ep,\r
+ USBFS_midiOutBuffer, (uint16)outLength);\r
+ #endif /* End USBFS_MIDI_OUT_BUFF_SIZE >= 256 */\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAMANUAL)\r
+ do /* wait for DMA transfer complete */\r
+ {\r
+ (void)CyDmaChStatus(USBFS_DmaChan[USBFS_midi_out_ep], NULL, &dmaState);\r
+ }while((dmaState & (STATUS_TD_ACTIVE | STATUS_CHAIN_ACTIVE)) != 0u);\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAMANUAL */\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+ if(dmaState != 0u)\r
+ {\r
+ /* Suppress compiler warning */\r
+ }\r
+ if (outLength >= USBFS_EVENT_LENGTH)\r
+ {\r
+ outPointer = 0u;\r
+ while (outPointer < outLength)\r
+ {\r
+ /* In some OS OUT packet could be appended by nulls which could be skipped */\r
+ if (USBFS_midiOutBuffer[outPointer] == 0u)\r
+ {\r
+ break;\r
+ }\r
+ /* Route USB MIDI to the External connection */\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ if ((USBFS_midiOutBuffer[outPointer] & USBFS_CABLE_MASK) ==\r
+ USBFS_MIDI_CABLE_00)\r
+ {\r
+ USBFS_MIDI1_ProcessUsbOut(&USBFS_midiOutBuffer[outPointer]);\r
+ }\r
+ else if ((USBFS_midiOutBuffer[outPointer] & USBFS_CABLE_MASK) ==\r
+ USBFS_MIDI_CABLE_01)\r
+ {\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ USBFS_MIDI2_ProcessUsbOut(&USBFS_midiOutBuffer[outPointer]);\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+ }\r
+ else\r
+ {\r
+ /* `#START CUSTOM_MIDI_OUT_EP_SERV` Place your code here */\r
+\r
+ /* `#END` */\r
+ }\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+ /* Process any local MIDI output functions */\r
+ USBFS_callbackLocalMidiEvent(\r
+ USBFS_midiOutBuffer[outPointer] & USBFS_CABLE_MASK,\r
+ &USBFS_midiOutBuffer[outPointer + USBFS_EVENT_BYTE1]);\r
+ outPointer += USBFS_EVENT_LENGTH;\r
+ }\r
+ }\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ /* Enable Out EP*/\r
+ USBFS_EnableOutEP(USBFS_midi_out_ep);\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+ }\r
+ }\r
+\r
+#endif /* #if (USBFS_MIDI_OUT_BUFF_SIZE > 0) */\r
+\r
+#if (USBFS_MIDI_IN_BUFF_SIZE > 0)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI_IN_EP_Service\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Services the USB MIDI IN endpoint. Non-blocking.\r
+ * Checks that previous packet was processed by HOST, otherwise service the\r
+ * input endpoint on the subsequent call. It is called from the\r
+ * USBFS_MIDI_IN_Service() and from the\r
+ * USBFS_PutUsbMidiIn() function.\r
+ *\r
+ * Parameters:\r
+ * None\r
+ *\r
+ * Return:\r
+ * None\r
+ *\r
+ * Global variables:\r
+ * USBFS_midi_in_ep: Used as an IN endpoint number.\r
+ * USBFS_midiInBuffer: Function loads the data from this buffer to\r
+ * the USB IN endpoint.\r
+ * USBFS_midiInPointer: Cleared to zero when data are sent.\r
+ *\r
+ * Reentrant:\r
+ * No\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_MIDI_IN_EP_Service(void) \r
+ {\r
+ /* Service the USB MIDI input endpoint */\r
+ /* Check that previous packet was processed by HOST, otherwise service the USB later */\r
+ if (USBFS_midiInPointer != 0u)\r
+ {\r
+ if(USBFS_GetEPState(USBFS_midi_in_ep) == USBFS_EVENT_PENDING)\r
+ {\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ USBFS_LoadInEP(USBFS_midi_in_ep, USBFS_midiInBuffer,\r
+ (uint16)USBFS_midiInPointer);\r
+ #else /* USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+ /* rearm IN EP */\r
+ USBFS_LoadInEP(USBFS_midi_in_ep, NULL, (uint16)USBFS_midiInPointer);\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO*/\r
+\r
+ /* Clear the midiInPointer. For DMA mode, clear this pointer in the ARB ISR when data are moved by DMA */\r
+ #if(USBFS_EP_MM == USBFS__EP_MANUAL)\r
+ USBFS_midiInPointer = 0u;\r
+ #endif /* USBFS_EP_MM == USBFS__EP_MANUAL */\r
+ }\r
+ }\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI_IN_Service\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Services the traffic from the MIDI input ports (RX UART) and prepare data\r
+ * in USB MIDI IN endpoint buffer.\r
+ * Calls the USBFS_MIDI_IN_EP_Service() function to sent the\r
+ * data from buffer to PC. Non-blocking. Should be called from main foreground\r
+ * task.\r
+ * This function is not protected from the reentrant calls. When it is required\r
+ * to use this function in UART RX ISR to guaranty low latency, care should be\r
+ * taken to protect from reentrant calls.\r
+ *\r
+ * Parameters:\r
+ * None\r
+ *\r
+ * Return:\r
+ * None\r
+ *\r
+ * Global variables:\r
+ * USBFS_midiInPointer: Cleared to zero when data are sent.\r
+ *\r
+ * Reentrant:\r
+ * No\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_MIDI_IN_Service(void) \r
+ {\r
+ /* Service the MIDI UART inputs until either both receivers have no more\r
+ * events or until the input endpoint buffer fills up.\r
+ */\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ uint8 m1 = 0u;\r
+ uint8 m2 = 0u;\r
+ do\r
+ {\r
+ if (USBFS_midiInPointer <= (USBFS_MIDI_IN_BUFF_SIZE - USBFS_EVENT_LENGTH))\r
+ {\r
+ /* Check MIDI1 input port for a complete event */\r
+ m1 = USBFS_MIDI1_GetEvent();\r
+ if (m1 != 0u)\r
+ {\r
+ USBFS_PrepareInBuffer(m1, (uint8 *)&USBFS_MIDI1_Event.msgBuff[0],\r
+ USBFS_MIDI1_Event.size, USBFS_MIDI_CABLE_00);\r
+ }\r
+ }\r
+\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ if (USBFS_midiInPointer <= (USBFS_MIDI_IN_BUFF_SIZE - USBFS_EVENT_LENGTH))\r
+ {\r
+ /* Check MIDI2 input port for a complete event */\r
+ m2 = USBFS_MIDI2_GetEvent();\r
+ if (m2 != 0u)\r
+ {\r
+ USBFS_PrepareInBuffer(m2, (uint8 *)&USBFS_MIDI2_Event.msgBuff[0],\r
+ USBFS_MIDI2_Event.size, USBFS_MIDI_CABLE_01);\r
+ }\r
+ }\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+\r
+ }while( (USBFS_midiInPointer <= (USBFS_MIDI_IN_BUFF_SIZE - USBFS_EVENT_LENGTH))\r
+ && ((m1 != 0u) || (m2 != 0u)) );\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+ /* Service the USB MIDI input endpoint */\r
+ USBFS_MIDI_IN_EP_Service();\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_PutUsbMidiIn\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Puts one MIDI messages into the USB MIDI In endpoint buffer. These are\r
+ * MIDI input messages to the host. This function is only used if the device\r
+ * has internal MIDI input functionality. USBMIDI_MIDI_IN_Service() function\r
+ * should additionally be called to send the message from local buffer to\r
+ * IN endpoint.\r
+ *\r
+ * Parameters:\r
+ * ic: 0 = No message (should never happen)\r
+ * 1 - 3 = Complete MIDI message in midiMsg\r
+ * 3 - IN EP LENGTH = Complete SySEx message(without EOSEX byte) in\r
+ * midiMsg. The length is limited by the max BULK EP size(64)\r
+ * MIDI_SYSEX = Start or continuation of SysEx message\r
+ * (put event bytes in midiMsg buffer)\r
+ * MIDI_EOSEX = End of SysEx message\r
+ * (put event bytes in midiMsg buffer)\r
+ * MIDI_TUNEREQ = Tune Request message (single byte system common msg)\r
+ * 0xf8 - 0xff = Single byte real-time message\r
+ * midiMsg: pointer to MIDI message.\r
+ * cable: cable number.\r
+ *\r
+ * Return:\r
+ * USBFS_TRUE if error.\r
+ * USBFS_FALSE if success.\r
+ *\r
+ * Global variables:\r
+ * USBFS_midi_in_ep: MIDI IN endpoint number used for sending data.\r
+ * USBFS_midiInPointer: Checked this variable to see if there is\r
+ * enough free space in the IN endpoint buffer. If buffer is full, initiate\r
+ * sending to PC.\r
+ *\r
+ * Reentrant:\r
+ * No\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_PutUsbMidiIn(uint8 ic, const uint8 midiMsg[], uint8 cable)\r
+ \r
+ {\r
+ uint8 retError = USBFS_FALSE;\r
+ uint8 msgIndex;\r
+\r
+ /* Protect PrepareInBuffer() function from concurrent calls */\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ MIDI1_UART_DisableRxInt();\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ MIDI2_UART_DisableRxInt();\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+ if (USBFS_midiInPointer >\r
+ (USBFS_EP[USBFS_midi_in_ep].bufferSize - USBFS_EVENT_LENGTH))\r
+ {\r
+ USBFS_MIDI_IN_EP_Service();\r
+ }\r
+ if (USBFS_midiInPointer <=\r
+ (USBFS_EP[USBFS_midi_in_ep].bufferSize - USBFS_EVENT_LENGTH))\r
+ {\r
+ if((ic < USBFS_EVENT_LENGTH) || (ic >= USBFS_MIDI_STATUS_MASK))\r
+ {\r
+ USBFS_PrepareInBuffer(ic, midiMsg, ic, cable);\r
+ }\r
+ else\r
+ { /* Only SysEx message is greater than 4 bytes */\r
+ msgIndex = 0u;\r
+ do\r
+ {\r
+ USBFS_PrepareInBuffer(USBFS_MIDI_SYSEX, &midiMsg[msgIndex],\r
+ USBFS_EVENT_BYTE3, cable);\r
+ ic -= USBFS_EVENT_BYTE3;\r
+ msgIndex += USBFS_EVENT_BYTE3;\r
+ if (USBFS_midiInPointer >\r
+ (USBFS_EP[USBFS_midi_in_ep].bufferSize - USBFS_EVENT_LENGTH))\r
+ {\r
+ USBFS_MIDI_IN_EP_Service();\r
+ if (USBFS_midiInPointer >\r
+ (USBFS_EP[USBFS_midi_in_ep].bufferSize - USBFS_EVENT_LENGTH))\r
+ {\r
+ /* Error condition. HOST is not ready to receive this packet. */\r
+ retError = USBFS_TRUE;\r
+ break;\r
+ }\r
+ }\r
+ }while(ic > USBFS_EVENT_BYTE3);\r
+\r
+ if(retError == USBFS_FALSE)\r
+ {\r
+ USBFS_PrepareInBuffer(USBFS_MIDI_EOSEX, midiMsg, ic, cable);\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ /* Error condition. HOST is not ready to receive this packet. */\r
+ retError = USBFS_TRUE;\r
+ }\r
+\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ MIDI1_UART_EnableRxInt();\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ MIDI2_UART_EnableRxInt();\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+ return (retError);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_PrepareInBuffer\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Builds a USB MIDI event in the input endpoint buffer at the current pointer.\r
+ * Puts one MIDI message into the USB MIDI In endpoint buffer.\r
+ *\r
+ * Parameters:\r
+ * ic: 0 = No message (should never happen)\r
+ * 1 - 3 = Complete MIDI message at pMdat[0]\r
+ * MIDI_SYSEX = Start or continuation of SysEx message\r
+ * (put eventLen bytes in buffer)\r
+ * MIDI_EOSEX = End of SysEx message\r
+ * (put eventLen bytes in buffer,\r
+ * and append MIDI_EOSEX)\r
+ * MIDI_TUNEREQ = Tune Request message (single byte system common msg)\r
+ * 0xf8 - 0xff = Single byte real-time message\r
+ *\r
+ * srcBuff: pointer to MIDI data\r
+ * eventLen: number of bytes in MIDI event\r
+ * cable: MIDI source port number\r
+ *\r
+ * Return:\r
+ * None\r
+ *\r
+ * Global variables:\r
+ * USBFS_midiInBuffer: This buffer is used for saving and combine the\r
+ * received from UART(s) and(or) generated internally by\r
+ * USBFS_PutUsbMidiIn() function messages.\r
+ * USBFS_midiInPointer: Used as an index for midiInBuffer to\r
+ * write data.\r
+ *\r
+ * Reentrant:\r
+ * No\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_PrepareInBuffer(uint8 ic, const uint8 srcBuff[], uint8 eventLen, uint8 cable)\r
+ \r
+ {\r
+ uint8 srcBuffZero;\r
+ uint8 srcBuffOne;\r
+\r
+ srcBuffZero = srcBuff[0u];\r
+ srcBuffOne = srcBuff[1u];\r
+\r
+ if (ic >= (USBFS_MIDI_STATUS_MASK | USBFS_MIDI_SINGLE_BYTE_MASK))\r
+ {\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_SINGLE_BYTE | cable;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = ic;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = 0u;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = 0u;\r
+ USBFS_midiInPointer++;\r
+ }\r
+ else if((ic < USBFS_EVENT_LENGTH) || (ic == USBFS_MIDI_SYSEX))\r
+ {\r
+ if(ic == USBFS_MIDI_SYSEX)\r
+ {\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_SYSEX | cable;\r
+ USBFS_midiInPointer++;\r
+ }\r
+ else if (srcBuffZero < USBFS_MIDI_SYSEX)\r
+ {\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = (srcBuffZero >> 4u) | cable;\r
+ USBFS_midiInPointer++;\r
+ }\r
+ else if (srcBuffZero == USBFS_MIDI_TUNEREQ)\r
+ {\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_1BYTE_COMMON | cable;\r
+ USBFS_midiInPointer++;\r
+ }\r
+ else if ((srcBuffZero == USBFS_MIDI_QFM) || (srcBuffZero == USBFS_MIDI_SONGSEL))\r
+ {\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_2BYTE_COMMON | cable;\r
+ USBFS_midiInPointer++;\r
+ }\r
+ else if (srcBuffZero == USBFS_MIDI_SPP)\r
+ {\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_3BYTE_COMMON | cable;\r
+ USBFS_midiInPointer++;\r
+ }\r
+ else\r
+ {\r
+ }\r
+\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = srcBuffZero;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = srcBuffOne;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = srcBuff[2u];\r
+ USBFS_midiInPointer++;\r
+ }\r
+ else if (ic == USBFS_MIDI_EOSEX)\r
+ {\r
+ switch (eventLen)\r
+ {\r
+ case 0u:\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] =\r
+ USBFS_SYSEX_ENDS_WITH1 | cable;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_MIDI_EOSEX;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = 0u;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = 0u;\r
+ USBFS_midiInPointer++;\r
+ break;\r
+ case 1u:\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] =\r
+ USBFS_SYSEX_ENDS_WITH2 | cable;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = srcBuffZero;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_MIDI_EOSEX;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = 0u;\r
+ USBFS_midiInPointer++;\r
+ break;\r
+ case 2u:\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] =\r
+ USBFS_SYSEX_ENDS_WITH3 | cable;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = srcBuffZero;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = srcBuffOne;\r
+ USBFS_midiInPointer++;\r
+ USBFS_midiInBuffer[USBFS_midiInPointer] = USBFS_MIDI_EOSEX;\r
+ USBFS_midiInPointer++;\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ }\r
+ }\r
+\r
+#endif /* #if (USBFS_MIDI_IN_BUFF_SIZE > 0) */\r
+\r
+\r
+/* The implementation for external serial input and output connections\r
+* to route USB MIDI data to and from those connections.\r
+*/\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI_Init\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Initializes MIDI variables and starts the UART(s) hardware block(s).\r
+ *\r
+ * Parameters:\r
+ * None\r
+ *\r
+ * Return:\r
+ * None\r
+ *\r
+ * Side Effects:\r
+ * Change the priority of the UART(s) TX interrupts to be higher than the\r
+ * default EP ISR priority.\r
+ *\r
+ * Global variables:\r
+ * USBFS_MIDI_Event: initialized to zero.\r
+ * USBFS_MIDI_TxRunStat: initialized to zero.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_MIDI_Init(void) \r
+ {\r
+ USBFS_MIDI1_Event.length = 0u;\r
+ USBFS_MIDI1_Event.count = 0u;\r
+ USBFS_MIDI1_Event.size = 0u;\r
+ USBFS_MIDI1_Event.runstat = 0u;\r
+ USBFS_MIDI1_TxRunStat = 0u;\r
+ USBFS_MIDI1_InqFlags = 0u;\r
+ /* Start UART block */\r
+ MIDI1_UART_Start();\r
+ /* Change the priority of the UART TX and RX interrupt */\r
+ CyIntSetPriority(MIDI1_UART_TX_VECT_NUM, USBFS_CUSTOM_UART_TX_PRIOR_NUM);\r
+ CyIntSetPriority(MIDI1_UART_RX_VECT_NUM, USBFS_CUSTOM_UART_RX_PRIOR_NUM);\r
+\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ USBFS_MIDI2_Event.length = 0u;\r
+ USBFS_MIDI2_Event.count = 0u;\r
+ USBFS_MIDI2_Event.size = 0u;\r
+ USBFS_MIDI2_Event.runstat = 0u;\r
+ USBFS_MIDI2_TxRunStat = 0u;\r
+ USBFS_MIDI2_InqFlags = 0u;\r
+ /* Start second UART block */\r
+ MIDI2_UART_Start();\r
+ /* Change the priority of the UART TX interrupt */\r
+ CyIntSetPriority(MIDI2_UART_TX_VECT_NUM, USBFS_CUSTOM_UART_TX_PRIOR_NUM);\r
+ CyIntSetPriority(MIDI2_UART_RX_VECT_NUM, USBFS_CUSTOM_UART_RX_PRIOR_NUM);\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF*/\r
+\r
+ /* `#START MIDI_INIT_CUSTOM` Init other extended UARTs here */\r
+\r
+ /* `#END` */\r
+\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_ProcessMidiIn\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Processes one byte of incoming MIDI data.\r
+ *\r
+ * Parameters:\r
+ * mData = current MIDI input data byte\r
+ * *rxStat = pointer to a MIDI_RX_STATUS structure\r
+ *\r
+ * Return:\r
+ * 0, if no complete message\r
+ * 1 - 4, if message complete\r
+ * MIDI_SYSEX, if start or continuation of system exclusive\r
+ * MIDI_EOSEX, if end of system exclusive\r
+ * 0xf8 - 0xff, if single byte real time message\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_ProcessMidiIn(uint8 mData, USBFS_MIDI_RX_STATUS *rxStat)\r
+ \r
+ {\r
+ uint8 midiReturn = 0u;\r
+\r
+ /* Check for a MIDI status byte. All status bytes, except real time messages,\r
+ * which are a single byte, force the start of a new buffer cycle.\r
+ */\r
+ if ((mData & USBFS_MIDI_STATUS_BYTE_MASK) != 0u)\r
+ {\r
+ if ((mData & USBFS_MIDI_STATUS_MASK) == USBFS_MIDI_STATUS_MASK)\r
+ {\r
+ if ((mData & USBFS_MIDI_SINGLE_BYTE_MASK) != 0u) /* System Real-Time Messages(single byte) */\r
+ {\r
+ midiReturn = mData;\r
+ }\r
+ else /* System Common Messages */\r
+ {\r
+ switch (mData)\r
+ {\r
+ case USBFS_MIDI_SYSEX:\r
+ rxStat->msgBuff[0u] = USBFS_MIDI_SYSEX;\r
+ rxStat->runstat = USBFS_MIDI_SYSEX;\r
+ rxStat->count = 1u;\r
+ rxStat->length = 3u;\r
+ break;\r
+ case USBFS_MIDI_EOSEX:\r
+ rxStat->runstat = 0u;\r
+ rxStat->size = rxStat->count;\r
+ rxStat->count = 0u;\r
+ midiReturn = USBFS_MIDI_EOSEX;\r
+ break;\r
+ case USBFS_MIDI_SPP:\r
+ rxStat->msgBuff[0u] = USBFS_MIDI_SPP;\r
+ rxStat->runstat = 0u;\r
+ rxStat->count = 1u;\r
+ rxStat->length = 3u;\r
+ break;\r
+ case USBFS_MIDI_SONGSEL:\r
+ rxStat->msgBuff[0u] = USBFS_MIDI_SONGSEL;\r
+ rxStat->runstat = 0u;\r
+ rxStat->count = 1u;\r
+ rxStat->length = 2u;\r
+ break;\r
+ case USBFS_MIDI_QFM:\r
+ rxStat->msgBuff[0u] = USBFS_MIDI_QFM;\r
+ rxStat->runstat = 0u;\r
+ rxStat->count = 1u;\r
+ rxStat->length = 2u;\r
+ break;\r
+ case USBFS_MIDI_TUNEREQ:\r
+ rxStat->msgBuff[0u] = USBFS_MIDI_TUNEREQ;\r
+ rxStat->runstat = 0u;\r
+ rxStat->size = 1u;\r
+ rxStat->count = 0u;\r
+ midiReturn = rxStat->size;\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ else /* Channel Messages */\r
+ {\r
+ rxStat->msgBuff[0u] = mData;\r
+ rxStat->runstat = mData;\r
+ rxStat->count = 1u;\r
+ switch (mData & USBFS_MIDI_STATUS_MASK)\r
+ {\r
+ case USBFS_MIDI_NOTE_OFF:\r
+ case USBFS_MIDI_NOTE_ON:\r
+ case USBFS_MIDI_POLY_KEY_PRESSURE:\r
+ case USBFS_MIDI_CONTROL_CHANGE:\r
+ case USBFS_MIDI_PITCH_BEND_CHANGE:\r
+ rxStat->length = 3u;\r
+ break;\r
+ case USBFS_MIDI_PROGRAM_CHANGE:\r
+ case USBFS_MIDI_CHANNEL_PRESSURE:\r
+ rxStat->length = 2u;\r
+ break;\r
+ default:\r
+ rxStat->runstat = 0u;\r
+ rxStat->count = 0u;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ /* Otherwise, it's a data byte */\r
+ else\r
+ {\r
+ if (rxStat->runstat == USBFS_MIDI_SYSEX)\r
+ {\r
+ rxStat->msgBuff[rxStat->count] = mData;\r
+ rxStat->count++;\r
+ if (rxStat->count >= rxStat->length)\r
+ {\r
+ rxStat->size = rxStat->count;\r
+ rxStat->count = 0u;\r
+ midiReturn = USBFS_MIDI_SYSEX;\r
+ }\r
+ }\r
+ else if (rxStat->count > 0u)\r
+ {\r
+ rxStat->msgBuff[rxStat->count] = mData;\r
+ rxStat->count++;\r
+ if (rxStat->count >= rxStat->length)\r
+ {\r
+ rxStat->size = rxStat->count;\r
+ rxStat->count = 0u;\r
+ midiReturn = rxStat->size;\r
+ }\r
+ }\r
+ else if (rxStat->runstat != 0u)\r
+ {\r
+ rxStat->msgBuff[0u] = rxStat->runstat;\r
+ rxStat->msgBuff[1u] = mData;\r
+ rxStat->count = 2u;\r
+ switch (rxStat->runstat & USBFS_MIDI_STATUS_MASK)\r
+ {\r
+ case USBFS_MIDI_NOTE_OFF:\r
+ case USBFS_MIDI_NOTE_ON:\r
+ case USBFS_MIDI_POLY_KEY_PRESSURE:\r
+ case USBFS_MIDI_CONTROL_CHANGE:\r
+ case USBFS_MIDI_PITCH_BEND_CHANGE:\r
+ rxStat->length = 3u;\r
+ break;\r
+ case USBFS_MIDI_PROGRAM_CHANGE:\r
+ case USBFS_MIDI_CHANNEL_PRESSURE:\r
+ rxStat->size =rxStat->count;\r
+ rxStat->count = 0u;\r
+ midiReturn = rxStat->size;\r
+ break;\r
+ default:\r
+ rxStat->count = 0u;\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ }\r
+ }\r
+ return (midiReturn);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI1_GetEvent\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Checks for incoming MIDI data, calls the MIDI event builder if so.\r
+ * Returns either empty or with a complete event.\r
+ *\r
+ * Parameters:\r
+ * None\r
+ *\r
+ * Return:\r
+ * 0, if no complete message\r
+ * 1 - 4, if message complete\r
+ * MIDI_SYSEX, if start or continuation of system exclusive\r
+ * MIDI_EOSEX, if end of system exclusive\r
+ * 0xf8 - 0xff, if single byte real time message\r
+ *\r
+ * Global variables:\r
+ * USBFS_MIDI1_Event: RX status structure used to parse received\r
+ * data.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_MIDI1_GetEvent(void) \r
+ {\r
+ uint8 msgRtn = 0u;\r
+ uint8 rxData;\r
+ #if (MIDI1_UART_RXBUFFERSIZE >= 256u)\r
+ uint16 rxBufferRead;\r
+ #if CY_PSOC3 /* This local variable is required only for PSOC3 and large buffer */\r
+ uint16 rxBufferWrite;\r
+ #endif /* end CY_PSOC3 */\r
+ #else\r
+ uint8 rxBufferRead;\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 */\r
+ uint8 rxBufferLoopDetect;\r
+ /* Read buffer loop condition to the local variable */\r
+ rxBufferLoopDetect = MIDI1_UART_rxBufferLoopDetect;\r
+\r
+ if ( (MIDI1_UART_rxBufferRead != MIDI1_UART_rxBufferWrite) || (rxBufferLoopDetect != 0u) )\r
+ {\r
+ /* Protect variables that could change on interrupt by disabling Rx interrupt.*/\r
+ #if ((MIDI1_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntDisable(MIDI1_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 */\r
+ rxBufferRead = MIDI1_UART_rxBufferRead;\r
+ #if ((MIDI1_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ rxBufferWrite = MIDI1_UART_rxBufferWrite;\r
+ CyIntEnable(MIDI1_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 */\r
+\r
+ /* Stay here until either the buffer is empty or we have a complete message\r
+ * in the message buffer. Note that we must use a temporary buffer pointer\r
+ * since it takes two instructions to increment with a wrap, and we can't\r
+ * risk doing that with the real pointer and getting an interrupt in between\r
+ * instructions.\r
+ */\r
+\r
+ #if ((MIDI1_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ while ( ((rxBufferRead != rxBufferWrite) || (rxBufferLoopDetect != 0u)) && (msgRtn == 0u) )\r
+ #else\r
+ while ( ((rxBufferRead != MIDI1_UART_rxBufferWrite) || (rxBufferLoopDetect != 0u)) && (msgRtn == 0u) )\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 && CY_PSOC3 */\r
+ {\r
+ rxData = MIDI1_UART_rxBuffer[rxBufferRead];\r
+ /* Increment pointer with a wrap */\r
+ rxBufferRead++;\r
+ if(rxBufferRead >= MIDI1_UART_RXBUFFERSIZE)\r
+ {\r
+ rxBufferRead = 0u;\r
+ }\r
+ /* If loop condition was set - update real read buffer pointer\r
+ * to avoid overflow status\r
+ */\r
+ if(rxBufferLoopDetect != 0u )\r
+ {\r
+ MIDI1_UART_rxBufferLoopDetect = 0u;\r
+ #if ((MIDI1_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntDisable(MIDI1_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 */\r
+ MIDI1_UART_rxBufferRead = rxBufferRead;\r
+ #if ((MIDI1_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntEnable(MIDI1_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 */\r
+ }\r
+\r
+ msgRtn = USBFS_ProcessMidiIn(rxData,\r
+ (USBFS_MIDI_RX_STATUS *)&USBFS_MIDI1_Event);\r
+\r
+ /* Read buffer loop condition to the local variable */\r
+ rxBufferLoopDetect = MIDI1_UART_rxBufferLoopDetect;\r
+ }\r
+\r
+ /* Finally, update the real output pointer, then return with\r
+ * an indication as to whether there's a complete message in the buffer.\r
+ */\r
+ #if ((MIDI1_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntDisable(MIDI1_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 */\r
+ MIDI1_UART_rxBufferRead = rxBufferRead;\r
+ #if ((MIDI1_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntEnable(MIDI1_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI1_UART_RXBUFFERSIZE >= 256 */\r
+ }\r
+\r
+ return (msgRtn);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI1_ProcessUsbOut\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Process a USB MIDI output event.\r
+ * Puts data into the MIDI TX output buffer.\r
+ *\r
+ * Parameters:\r
+ * *epBuf: pointer on MIDI event.\r
+ *\r
+ * Return:\r
+ * None\r
+ *\r
+ * Global variables:\r
+ * USBFS_MIDI1_TxRunStat: This variable used to save the MIDI\r
+ * status byte and skip to send the repeated status byte in subsequent event.\r
+ * USBFS_MIDI1_InqFlags: The following flags are set when SysEx\r
+ * message comes.\r
+ * USBFS_INQ_SYSEX_FLAG: Non-Real Time SySEx message received.\r
+ * USBFS_INQ_IDENTITY_REQ_FLAG: Identity Request received.\r
+ * This bit should be cleared by user when Identity Reply message generated.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_MIDI1_ProcessUsbOut(const uint8 epBuf[])\r
+ \r
+ {\r
+ uint8 cmd;\r
+ uint8 len;\r
+ uint8 i;\r
+\r
+ /* User code is required at the beginning of the procedure */\r
+ /* `#START MIDI1_PROCESS_OUT_BEGIN` */\r
+\r
+ /* `#END` */\r
+\r
+ cmd = epBuf[USBFS_EVENT_BYTE0] & USBFS_CIN_MASK;\r
+ if((cmd != USBFS_RESERVED0) && (cmd != USBFS_RESERVED1))\r
+ {\r
+ len = USBFS_MIDI_SIZE[cmd];\r
+ i = USBFS_EVENT_BYTE1;\r
+ /* Universal System Exclusive message parsing */\r
+ if(cmd == USBFS_SYSEX)\r
+ {\r
+ if((epBuf[USBFS_EVENT_BYTE1] == USBFS_MIDI_SYSEX) &&\r
+ (epBuf[USBFS_EVENT_BYTE2] == USBFS_MIDI_SYSEX_NON_REAL_TIME))\r
+ { /* Non-Real Time SySEx starts */\r
+ USBFS_MIDI1_InqFlags |= USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ else\r
+ {\r
+ USBFS_MIDI1_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ }\r
+ else if(cmd == USBFS_SYSEX_ENDS_WITH1)\r
+ {\r
+ USBFS_MIDI1_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ else if(cmd == USBFS_SYSEX_ENDS_WITH2)\r
+ {\r
+ USBFS_MIDI1_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ else if(cmd == USBFS_SYSEX_ENDS_WITH3)\r
+ {\r
+ /* Identify Request support */\r
+ if((USBFS_MIDI1_InqFlags & USBFS_INQ_SYSEX_FLAG) != 0u)\r
+ {\r
+ USBFS_MIDI1_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ if((epBuf[USBFS_EVENT_BYTE1] == USBFS_MIDI_SYSEX_GEN_INFORMATION) &&\r
+ (epBuf[USBFS_EVENT_BYTE2] == USBFS_MIDI_SYSEX_IDENTITY_REQ))\r
+ { /* Set the flag about received the Identity Request.\r
+ * The Identity Reply message may be send by user code.\r
+ */\r
+ USBFS_MIDI1_InqFlags |= USBFS_INQ_IDENTITY_REQ_FLAG;\r
+ }\r
+ }\r
+ }\r
+ else /* Do nothing for other command */\r
+ {\r
+ }\r
+ /* Running Status for Voice and Mode messages only. */\r
+ if((cmd >= USBFS_NOTE_OFF) && ( cmd <= USBFS_PITCH_BEND_CHANGE))\r
+ {\r
+ if(USBFS_MIDI1_TxRunStat == epBuf[USBFS_EVENT_BYTE1])\r
+ { /* Skip the repeated Status byte */\r
+ i++;\r
+ }\r
+ else\r
+ { /* Save Status byte for next event */\r
+ USBFS_MIDI1_TxRunStat = epBuf[USBFS_EVENT_BYTE1];\r
+ }\r
+ }\r
+ else\r
+ { /* Clear Running Status */\r
+ USBFS_MIDI1_TxRunStat = 0u;\r
+ }\r
+ /* Puts data into the MIDI TX output buffer.*/\r
+ do\r
+ {\r
+ MIDI1_UART_PutChar(epBuf[i]);\r
+ i++;\r
+ } while (i <= len);\r
+ }\r
+\r
+ /* User code is required at the end of the procedure */\r
+ /* `#START MIDI1_PROCESS_OUT_END` */\r
+\r
+ /* `#END` */\r
+ }\r
+\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI2_GetEvent\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Checks for incoming MIDI data, calls the MIDI event builder if so.\r
+ * Returns either empty or with a complete event.\r
+ *\r
+ * Parameters:\r
+ * None\r
+ *\r
+ * Return:\r
+ * 0, if no complete message\r
+ * 1 - 4, if message complete\r
+ * MIDI_SYSEX, if start or continuation of system exclusive\r
+ * MIDI_EOSEX, if end of system exclusive\r
+ * 0xf8 - 0xff, if single byte real time message\r
+ *\r
+ * Global variables:\r
+ * USBFS_MIDI2_Event: RX status structure used to parse received\r
+ * data.\r
+ *\r
+ *******************************************************************************/\r
+ uint8 USBFS_MIDI2_GetEvent(void) \r
+ {\r
+ uint8 msgRtn = 0u;\r
+ uint8 rxData;\r
+ #if (MIDI2_UART_RXBUFFERSIZE >= 256u)\r
+ uint16 rxBufferRead;\r
+ #if CY_PSOC3 /* This local variable required only for PSOC3 and large buffer */\r
+ uint16 rxBufferWrite;\r
+ #endif /* end CY_PSOC3 */\r
+ #else\r
+ uint8 rxBufferRead;\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 */\r
+ uint8 rxBufferLoopDetect;\r
+ /* Read buffer loop condition to the local variable */\r
+ rxBufferLoopDetect = MIDI2_UART_rxBufferLoopDetect;\r
+\r
+ if ( (MIDI2_UART_rxBufferRead != MIDI2_UART_rxBufferWrite) || (rxBufferLoopDetect != 0u) )\r
+ {\r
+ /* Protect variables that could change on interrupt by disabling Rx interrupt.*/\r
+ #if ((MIDI2_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntDisable(MIDI2_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 */\r
+ rxBufferRead = MIDI2_UART_rxBufferRead;\r
+ #if ((MIDI2_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ rxBufferWrite = MIDI2_UART_rxBufferWrite;\r
+ CyIntEnable(MIDI2_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 */\r
+\r
+ /* Stay here until either the buffer is empty or we have a complete message\r
+ * in the message buffer. Note that we must use a temporary output pointer to\r
+ * since it takes two instructions to increment with a wrap, and we can't\r
+ * risk doing that with the real pointer and getting an interrupt in between\r
+ * instructions.\r
+ */\r
+\r
+ #if ((MIDI2_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ while ( ((rxBufferRead != rxBufferWrite) || (rxBufferLoopDetect != 0u)) && (msgRtn == 0u) )\r
+ #else\r
+ while ( ((rxBufferRead != MIDI2_UART_rxBufferWrite) || (rxBufferLoopDetect != 0u)) && (msgRtn == 0u) )\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 && CY_PSOC3 */\r
+ {\r
+ rxData = MIDI2_UART_rxBuffer[rxBufferRead];\r
+ rxBufferRead++;\r
+ if(rxBufferRead >= MIDI2_UART_RXBUFFERSIZE)\r
+ {\r
+ rxBufferRead = 0u;\r
+ }\r
+ /* If loop condition was set - update real read buffer pointer\r
+ * to avoid overflow status\r
+ */\r
+ if(rxBufferLoopDetect != 0u )\r
+ {\r
+ MIDI2_UART_rxBufferLoopDetect = 0u;\r
+ #if ((MIDI2_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntDisable(MIDI2_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 */\r
+ MIDI2_UART_rxBufferRead = rxBufferRead;\r
+ #if ((MIDI2_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntEnable(MIDI2_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 */\r
+ }\r
+\r
+ msgRtn = USBFS_ProcessMidiIn(rxData,\r
+ (USBFS_MIDI_RX_STATUS *)&USBFS_MIDI2_Event);\r
+\r
+ /* Read buffer loop condition to the local variable */\r
+ rxBufferLoopDetect = MIDI2_UART_rxBufferLoopDetect;\r
+ }\r
+\r
+ /* Finally, update the real output pointer, then return with\r
+ * an indication as to whether there's a complete message in the buffer.\r
+ */\r
+ #if ((MIDI2_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntDisable(MIDI2_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 */\r
+ MIDI2_UART_rxBufferRead = rxBufferRead;\r
+ #if ((MIDI2_UART_RXBUFFERSIZE >= 256u) && (CY_PSOC3))\r
+ CyIntEnable(MIDI2_UART_RX_VECT_NUM);\r
+ #endif /* End MIDI2_UART_RXBUFFERSIZE >= 256 */\r
+ }\r
+\r
+ return (msgRtn);\r
+ }\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_MIDI2_ProcessUsbOut\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Process a USB MIDI output event.\r
+ * Puts data into the MIDI TX output buffer.\r
+ *\r
+ * Parameters:\r
+ * *epBuf: pointer on MIDI event.\r
+ *\r
+ * Return:\r
+ * None\r
+ *\r
+ * Global variables:\r
+ * USBFS_MIDI2_TxRunStat: This variable used to save the MIDI\r
+ * status byte and skip to send the repeated status byte in subsequent event.\r
+ * USBFS_MIDI2_InqFlags: The following flags are set when SysEx\r
+ * message comes.\r
+ * USBFS_INQ_SYSEX_FLAG: Non-Real Time SySEx message received.\r
+ * USBFS_INQ_IDENTITY_REQ_FLAG: Identity Request received.\r
+ * This bit should be cleared by user when Identity Reply message generated.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_MIDI2_ProcessUsbOut(const uint8 epBuf[])\r
+ \r
+ {\r
+ uint8 cmd;\r
+ uint8 len;\r
+ uint8 i;\r
+\r
+ /* User code is required at the beginning of the procedure */\r
+ /* `#START MIDI2_PROCESS_OUT_START` */\r
+\r
+ /* `#END` */\r
+\r
+ cmd = epBuf[USBFS_EVENT_BYTE0] & USBFS_CIN_MASK;\r
+ if((cmd != USBFS_RESERVED0) && (cmd != USBFS_RESERVED1))\r
+ {\r
+ len = USBFS_MIDI_SIZE[cmd];\r
+ i = USBFS_EVENT_BYTE1;\r
+ /* Universal System Exclusive message parsing */\r
+ if(cmd == USBFS_SYSEX)\r
+ {\r
+ if((epBuf[USBFS_EVENT_BYTE1] == USBFS_MIDI_SYSEX) &&\r
+ (epBuf[USBFS_EVENT_BYTE2] == USBFS_MIDI_SYSEX_NON_REAL_TIME))\r
+ { /* SySEx starts */\r
+ USBFS_MIDI2_InqFlags |= USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ else\r
+ {\r
+ USBFS_MIDI2_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ }\r
+ else if(cmd == USBFS_SYSEX_ENDS_WITH1)\r
+ {\r
+ USBFS_MIDI2_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ else if(cmd == USBFS_SYSEX_ENDS_WITH2)\r
+ {\r
+ USBFS_MIDI2_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ }\r
+ else if(cmd == USBFS_SYSEX_ENDS_WITH3)\r
+ {\r
+ /* Identify Request support */\r
+ if((USBFS_MIDI2_InqFlags & USBFS_INQ_SYSEX_FLAG) != 0u)\r
+ {\r
+ USBFS_MIDI2_InqFlags &= (uint8)~USBFS_INQ_SYSEX_FLAG;\r
+ if((epBuf[USBFS_EVENT_BYTE1] == USBFS_MIDI_SYSEX_GEN_INFORMATION) &&\r
+ (epBuf[USBFS_EVENT_BYTE2] == USBFS_MIDI_SYSEX_IDENTITY_REQ))\r
+ { /* Set the flag about received the Identity Request.\r
+ * The Identity Reply message may be send by user code.\r
+ */\r
+ USBFS_MIDI2_InqFlags |= USBFS_INQ_IDENTITY_REQ_FLAG;\r
+ }\r
+ }\r
+ }\r
+ else /* Do nothing for other command */\r
+ {\r
+ }\r
+ /* Running Status for Voice and Mode messages only. */\r
+ if((cmd >= USBFS_NOTE_OFF) && ( cmd <= USBFS_PITCH_BEND_CHANGE))\r
+ {\r
+ if(USBFS_MIDI2_TxRunStat == epBuf[USBFS_EVENT_BYTE1])\r
+ { /* Skip the repeated Status byte */\r
+ i++;\r
+ }\r
+ else\r
+ { /* Save Status byte for next event */\r
+ USBFS_MIDI2_TxRunStat = epBuf[USBFS_EVENT_BYTE1];\r
+ }\r
+ }\r
+ else\r
+ { /* Clear Running Status */\r
+ USBFS_MIDI2_TxRunStat = 0u;\r
+ }\r
+ /* Puts data into the MIDI TX output buffer.*/\r
+ do\r
+ {\r
+ MIDI2_UART_PutChar(epBuf[i]);\r
+ i++;\r
+ } while (i <= len);\r
+ }\r
+\r
+ /* User code is required at the end of the procedure */\r
+ /* `#START MIDI2_PROCESS_OUT_END` */\r
+\r
+ /* `#END` */\r
+ }\r
+#endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+#endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+#endif /* End (USBFS_ENABLE_MIDI_API != 0u) */\r
+\r
+\r
+/* `#START MIDI_FUNCTIONS` Place any additional functions here */\r
+\r
+/* `#END` */\r
+\r
+#endif /* End defined(USBFS_ENABLE_MIDI_STREAMING) */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_midi.h\r
+* Version 2.60\r
+*\r
+* Description:\r
+* Header File for the USBFS MIDI module.\r
+* Contains prototypes and constant values.\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_USBFS_USBFS_midi_H)\r
+#define CY_USBFS_USBFS_midi_H\r
+\r
+#include "cytypes.h"\r
+#include "USBFS.h"\r
+\r
+\r
+/***************************************\r
+* Data Struct Definition\r
+***************************************/\r
+\r
+/* The following structure is used to hold status information for\r
+ building and parsing incoming MIDI messages. */\r
+typedef struct\r
+{\r
+ uint8 length; /* expected length */\r
+ uint8 count; /* current byte count */\r
+ uint8 size; /* complete size */\r
+ uint8 runstat; /* running status */\r
+ uint8 msgBuff[4]; /* message buffer */\r
+} USBFS_MIDI_RX_STATUS;\r
+\r
+\r
+/***************************************\r
+* MIDI Constants.\r
+***************************************/\r
+\r
+#define USBFS_ONE_EXT_INTRF (0x01u)\r
+#define USBFS_TWO_EXT_INTRF (0x02u)\r
+\r
+/* Flag definitions for use with MIDI device inquiry */\r
+#define USBFS_INQ_SYSEX_FLAG (0x01u)\r
+#define USBFS_INQ_IDENTITY_REQ_FLAG (0x02u)\r
+\r
+/* USB-MIDI Code Index Number Classifications (MIDI Table 4-1) */\r
+#define USBFS_CIN_MASK (0x0Fu)\r
+#define USBFS_RESERVED0 (0x00u)\r
+#define USBFS_RESERVED1 (0x01u)\r
+#define USBFS_2BYTE_COMMON (0x02u)\r
+#define USBFS_3BYTE_COMMON (0x03u)\r
+#define USBFS_SYSEX (0x04u)\r
+#define USBFS_1BYTE_COMMON (0x05u)\r
+#define USBFS_SYSEX_ENDS_WITH1 (0x05u)\r
+#define USBFS_SYSEX_ENDS_WITH2 (0x06u)\r
+#define USBFS_SYSEX_ENDS_WITH3 (0x07u)\r
+#define USBFS_NOTE_OFF (0x08u)\r
+#define USBFS_NOTE_ON (0x09u)\r
+#define USBFS_POLY_KEY_PRESSURE (0x0Au)\r
+#define USBFS_CONTROL_CHANGE (0x0Bu)\r
+#define USBFS_PROGRAM_CHANGE (0x0Cu)\r
+#define USBFS_CHANNEL_PRESSURE (0x0Du)\r
+#define USBFS_PITCH_BEND_CHANGE (0x0Eu)\r
+#define USBFS_SINGLE_BYTE (0x0Fu)\r
+\r
+#define USBFS_CABLE_MASK (0xF0u)\r
+#define USBFS_MIDI_CABLE_00 (0x00u)\r
+#define USBFS_MIDI_CABLE_01 (0x10u)\r
+\r
+#define USBFS_EVENT_BYTE0 (0x00u)\r
+#define USBFS_EVENT_BYTE1 (0x01u)\r
+#define USBFS_EVENT_BYTE2 (0x02u)\r
+#define USBFS_EVENT_BYTE3 (0x03u)\r
+#define USBFS_EVENT_LENGTH (0x04u)\r
+\r
+#define USBFS_MIDI_STATUS_BYTE_MASK (0x80u)\r
+#define USBFS_MIDI_STATUS_MASK (0xF0u)\r
+#define USBFS_MIDI_SINGLE_BYTE_MASK (0x08u)\r
+#define USBFS_MIDI_NOTE_OFF (0x80u)\r
+#define USBFS_MIDI_NOTE_ON (0x90u)\r
+#define USBFS_MIDI_POLY_KEY_PRESSURE (0xA0u)\r
+#define USBFS_MIDI_CONTROL_CHANGE (0xB0u)\r
+#define USBFS_MIDI_PROGRAM_CHANGE (0xC0u)\r
+#define USBFS_MIDI_CHANNEL_PRESSURE (0xD0u)\r
+#define USBFS_MIDI_PITCH_BEND_CHANGE (0xE0u)\r
+#define USBFS_MIDI_SYSEX (0xF0u)\r
+#define USBFS_MIDI_EOSEX (0xF7u)\r
+#define USBFS_MIDI_QFM (0xF1u)\r
+#define USBFS_MIDI_SPP (0xF2u)\r
+#define USBFS_MIDI_SONGSEL (0xF3u)\r
+#define USBFS_MIDI_TUNEREQ (0xF6u)\r
+#define USBFS_MIDI_ACTIVESENSE (0xFEu)\r
+\r
+/* MIDI Universal System Exclusive defines */\r
+#define USBFS_MIDI_SYSEX_NON_REAL_TIME (0x7Eu)\r
+#define USBFS_MIDI_SYSEX_REALTIME (0x7Fu)\r
+/* ID of target device */\r
+#define USBFS_MIDI_SYSEX_ID_ALL (0x7Fu)\r
+/* Sub-ID#1*/\r
+#define USBFS_MIDI_SYSEX_GEN_INFORMATION (0x06u)\r
+#define USBFS_MIDI_SYSEX_GEN_MESSAGE (0x09u)\r
+/* Sub-ID#2*/\r
+#define USBFS_MIDI_SYSEX_IDENTITY_REQ (0x01u)\r
+#define USBFS_MIDI_SYSEX_IDENTITY_REPLY (0x02u)\r
+#define USBFS_MIDI_SYSEX_SYSTEM_ON (0x01u)\r
+#define USBFS_MIDI_SYSEX_SYSTEM_OFF (0x02u)\r
+\r
+#define USBFS_CUSTOM_UART_TX_PRIOR_NUM (0x04u)\r
+#define USBFS_CUSTOM_UART_RX_PRIOR_NUM (0x02u)\r
+\r
+#define USBFS_ISR_SERVICE_MIDI_OUT \\r
+ ( (USBFS_ENABLE_MIDI_API != 0u) && \\r
+ (USBFS_MIDI_OUT_BUFF_SIZE > 0) && (USBFS_EP_MM == USBFS__EP_DMAAUTO) )\r
+#define USBFS_ISR_SERVICE_MIDI_IN \\r
+ ( (USBFS_ENABLE_MIDI_API != 0u) && (USBFS_MIDI_IN_BUFF_SIZE > 0) )\r
+\r
+/***************************************\r
+* External function references\r
+***************************************/\r
+\r
+void USBFS_callbackLocalMidiEvent(uint8 cable, uint8 *midiMsg)\r
+ ;\r
+\r
+\r
+/***************************************\r
+* External references\r
+***************************************/\r
+\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ #include "MIDI1_UART.h"\r
+#endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ #include "MIDI2_UART.h"\r
+#endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+#if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ #include <CyDmac.h>\r
+#endif /* End USBFS_EP_MM */\r
+\r
+\r
+/***************************************\r
+* Private function prototypes\r
+***************************************/\r
+\r
+void USBFS_PrepareInBuffer(uint8 ic, const uint8 srcBuff[], uint8 eventLen, uint8 cable)\r
+ ;\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ void USBFS_MIDI_Init(void) ;\r
+ uint8 USBFS_ProcessMidiIn(uint8 mData, USBFS_MIDI_RX_STATUS *rxStat)\r
+ ;\r
+ uint8 USBFS_MIDI1_GetEvent(void) ;\r
+ void USBFS_MIDI1_ProcessUsbOut(const uint8 epBuf[])\r
+ ;\r
+\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ uint8 USBFS_MIDI2_GetEvent(void) ;\r
+ void USBFS_MIDI2_ProcessUsbOut(const uint8 epBuf[])\r
+ ;\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+#endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+\r
+/***************************************\r
+* External data references\r
+***************************************/\r
+\r
+#if defined(USBFS_ENABLE_MIDI_STREAMING)\r
+\r
+#if (USBFS_MIDI_IN_BUFF_SIZE > 0)\r
+ #if (USBFS_MIDI_IN_BUFF_SIZE >= 256)\r
+ extern volatile uint16 USBFS_midiInPointer; /* Input endpoint buffer pointer */\r
+ #else\r
+ extern volatile uint8 USBFS_midiInPointer; /* Input endpoint buffer pointer */\r
+ #endif /* End USBFS_MIDI_IN_BUFF_SIZE >=256 */\r
+ extern volatile uint8 USBFS_midi_in_ep; /* Input endpoint number */\r
+ extern uint8 USBFS_midiInBuffer[USBFS_MIDI_IN_BUFF_SIZE]; /* Input endpoint buffer */\r
+#endif /* USBFS_MIDI_IN_BUFF_SIZE > 0 */\r
+\r
+#if (USBFS_MIDI_OUT_BUFF_SIZE > 0)\r
+ extern volatile uint8 USBFS_midi_out_ep; /* Output endpoint number */\r
+ extern uint8 USBFS_midiOutBuffer[USBFS_MIDI_OUT_BUFF_SIZE]; /* Output endpoint buffer */\r
+#endif /* USBFS_MIDI_OUT_BUFF_SIZE > 0 */\r
+\r
+#if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)\r
+ extern volatile uint8 USBFS_MIDI1_InqFlags; /* Device inquiry flag */\r
+ #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)\r
+ extern volatile uint8 USBFS_MIDI2_InqFlags; /* Device inquiry flag */\r
+ #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */\r
+#endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */\r
+\r
+#endif /* USBFS_ENABLE_MIDI_STREAMING */\r
+\r
+\r
+#endif /* End CY_USBFS_USBFS_midi_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_pm.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* This file provides Suspend/Resume APIs functionality.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "project.h"\r
+#include "USBFS.h"\r
+#include "USBFS_pvt.h"\r
+\r
+\r
+/***************************************\r
+* Custom Declarations\r
+***************************************/\r
+/* `#START PM_CUSTOM_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/***************************************\r
+* Local data allocation\r
+***************************************/\r
+\r
+static USBFS_BACKUP_STRUCT USBFS_backup;\r
+\r
+\r
+#if(USBFS_DP_ISR_REMOVE == 0u)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_DP_Interrupt\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * This Interrupt Service Routine handles DP pin changes for wake-up from\r
+ * the sleep mode.\r
+ *\r
+ * Parameters:\r
+ * None.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ *******************************************************************************/\r
+ CY_ISR(USBFS_DP_ISR)\r
+ {\r
+ /* `#START DP_USER_CODE` Place your code here */\r
+\r
+ /* `#END` */\r
+\r
+ /* Clears active interrupt */\r
+ CY_GET_REG8(USBFS_DP_INTSTAT_PTR);\r
+ }\r
+\r
+#endif /* (USBFS_DP_ISR_REMOVE == 0u) */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_SaveConfig\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Saves the current user configuration.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_SaveConfig(void) \r
+{\r
+\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_RestoreConfig\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Restores the current user configuration.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_RestoreConfig(void) \r
+{\r
+ if(USBFS_configuration != 0u)\r
+ {\r
+ USBFS_ConfigReg();\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Suspend\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function disables the USBFS block and prepares for power donwn mode.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_backup.enable: modified.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_Suspend(void) \r
+{\r
+ uint8 enableInterrupts;\r
+ enableInterrupts = CyEnterCriticalSection();\r
+\r
+ if((CY_GET_REG8(USBFS_CR0_PTR) & USBFS_CR0_ENABLE) != 0u)\r
+ { /* USB block is enabled */\r
+ USBFS_backup.enableState = 1u;\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ USBFS_Stop_DMA(USBFS_MAX_EP); /* Stop all DMAs */\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ /* Ensure USB transmit enable is low (USB_USBIO_CR0.ten). - Manual Transmission - Disabled */\r
+ USBFS_USBIO_CR0_REG &= (uint8)~USBFS_USBIO_CR0_TEN;\r
+ CyDelayUs(0u); /*~50ns delay */\r
+\r
+ /* Disable the USBIO by asserting PM.USB_CR0.fsusbio_pd_n(Inverted) and pd_pullup_hv(Inverted) high. */\r
+ USBFS_PM_USB_CR0_REG &=\r
+ (uint8)~(USBFS_PM_USB_CR0_PD_N | USBFS_PM_USB_CR0_PD_PULLUP_N);\r
+\r
+ /* Disable the SIE */\r
+ USBFS_CR0_REG &= (uint8)~USBFS_CR0_ENABLE;\r
+\r
+ CyDelayUs(0u); /*~50ns delay */\r
+ /* Store mode and Disable VRegulator*/\r
+ USBFS_backup.mode = USBFS_CR1_REG & USBFS_CR1_REG_ENABLE;\r
+ USBFS_CR1_REG &= (uint8)~USBFS_CR1_REG_ENABLE;\r
+\r
+ CyDelayUs(1u); /* 0.5 us min delay */\r
+ /* Disable the USBIO reference by setting PM.USB_CR0.fsusbio_ref_en.*/\r
+ USBFS_PM_USB_CR0_REG &= (uint8)~USBFS_PM_USB_CR0_REF_EN;\r
+\r
+ /* Switch DP and DM terminals to GPIO mode and disconnect 1.5k pullup*/\r
+ USBFS_USBIO_CR1_REG |= USBFS_USBIO_CR1_IOMODE;\r
+\r
+ /* Disable USB in ACT PM */\r
+ USBFS_PM_ACT_CFG_REG &= (uint8)~USBFS_PM_ACT_EN_FSUSB;\r
+ /* Disable USB block for Standby Power Mode */\r
+ USBFS_PM_STBY_CFG_REG &= (uint8)~USBFS_PM_STBY_EN_FSUSB;\r
+ CyDelayUs(1u); /* min 0.5us delay required */\r
+\r
+ }\r
+ else\r
+ {\r
+ USBFS_backup.enableState = 0u;\r
+ }\r
+ CyExitCriticalSection(enableInterrupts);\r
+\r
+ /* Set the DP Interrupt for wake-up from sleep mode. */\r
+ #if(USBFS_DP_ISR_REMOVE == 0u)\r
+ (void) CyIntSetVector(USBFS_DP_INTC_VECT_NUM, &USBFS_DP_ISR);\r
+ CyIntSetPriority(USBFS_DP_INTC_VECT_NUM, USBFS_DP_INTC_PRIOR);\r
+ CyIntClearPending(USBFS_DP_INTC_VECT_NUM);\r
+ CyIntEnable(USBFS_DP_INTC_VECT_NUM);\r
+ #endif /* (USBFS_DP_ISR_REMOVE == 0u) */\r
+\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Resume\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function enables the USBFS block after power down mode.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Global variables:\r
+* USBFS_backup - checked.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_Resume(void) \r
+{\r
+ uint8 enableInterrupts;\r
+ enableInterrupts = CyEnterCriticalSection();\r
+\r
+ if(USBFS_backup.enableState != 0u)\r
+ {\r
+ #if(USBFS_DP_ISR_REMOVE == 0u)\r
+ CyIntDisable(USBFS_DP_INTC_VECT_NUM);\r
+ #endif /* End USBFS_DP_ISR_REMOVE */\r
+\r
+ /* Enable USB block */\r
+ USBFS_PM_ACT_CFG_REG |= USBFS_PM_ACT_EN_FSUSB;\r
+ /* Enable USB block for Standby Power Mode */\r
+ USBFS_PM_STBY_CFG_REG |= USBFS_PM_STBY_EN_FSUSB;\r
+ /* Enable core clock */\r
+ USBFS_USB_CLK_EN_REG |= USBFS_USB_CLK_ENABLE;\r
+\r
+ /* Enable the USBIO reference by setting PM.USB_CR0.fsusbio_ref_en.*/\r
+ USBFS_PM_USB_CR0_REG |= USBFS_PM_USB_CR0_REF_EN;\r
+ /* The reference will be available ~40us after power restored */\r
+ CyDelayUs(40u);\r
+ /* Return VRegulator*/\r
+ USBFS_CR1_REG |= USBFS_backup.mode;\r
+ CyDelayUs(0u); /*~50ns delay */\r
+ /* Enable USBIO */\r
+ USBFS_PM_USB_CR0_REG |= USBFS_PM_USB_CR0_PD_N;\r
+ CyDelayUs(2u);\r
+ /* Set the USBIO pull-up enable */\r
+ USBFS_PM_USB_CR0_REG |= USBFS_PM_USB_CR0_PD_PULLUP_N;\r
+\r
+ /* Reinit Arbiter configuration for DMA transfers */\r
+ #if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ /* usb arb interrupt enable */\r
+ USBFS_ARB_INT_EN_REG = USBFS_ARB_INT_MASK;\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAMANUAL)\r
+ USBFS_ARB_CFG_REG = USBFS_ARB_CFG_MANUAL_DMA;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAMANUAL */\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ /*Set cfg cmplt this rises DMA request when the full configuration is done */\r
+ USBFS_ARB_CFG_REG = USBFS_ARB_CFG_AUTO_DMA | USBFS_ARB_CFG_AUTO_MEM;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ /* STALL_IN_OUT */\r
+ CY_SET_REG8(USBFS_EP0_CR_PTR, USBFS_MODE_STALL_IN_OUT);\r
+ /* Enable the SIE with a last address */\r
+ USBFS_CR0_REG |= USBFS_CR0_ENABLE;\r
+ CyDelayCycles(1u);\r
+ /* Finally, Enable d+ pullup and select iomode to USB mode*/\r
+ CY_SET_REG8(USBFS_USBIO_CR1_PTR, USBFS_USBIO_CR1_USBPUEN);\r
+\r
+ /* Restore USB register settings */\r
+ USBFS_RestoreConfig();\r
+\r
+ }\r
+ CyExitCriticalSection(enableInterrupts);\r
+}\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: .h\r
+* Version 2.60\r
+*\r
+* Description:\r
+* This private file provides constants and parameter values for the\r
+* USBFS Component.\r
+* Please do not use this file or its content in your project.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#if !defined(CY_USBFS_USBFS_pvt_H)\r
+#define CY_USBFS_USBFS_pvt_H\r
+\r
+\r
+/***************************************\r
+* Private Variables\r
+***************************************/\r
+\r
+/* Generated external references for descriptors*/\r
+extern const uint8 CYCODE USBFS_DEVICE0_DESCR[18u];\r
+extern const uint8 CYCODE USBFS_DEVICE0_CONFIGURATION0_DESCR[41u];\r
+extern const T_USBFS_LUT CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_TABLE[1u];\r
+extern const T_USBFS_EP_SETTINGS_BLOCK CYCODE USBFS_DEVICE0_CONFIGURATION0_EP_SETTINGS_TABLE[2u];\r
+extern const uint8 CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE_CLASS[1u];\r
+extern const T_USBFS_LUT CYCODE USBFS_DEVICE0_CONFIGURATION0_TABLE[4u];\r
+extern const T_USBFS_LUT CYCODE USBFS_DEVICE0_TABLE[2u];\r
+extern const T_USBFS_LUT CYCODE USBFS_TABLE[1u];\r
+extern const uint8 CYCODE USBFS_SN_STRING_DESCRIPTOR[10];\r
+extern const uint8 CYCODE USBFS_STRING_DESCRIPTORS[45u];\r
+extern T_USBFS_XFER_STATUS_BLOCK USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_RPT_SCB;\r
+extern uint8 USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_BUF[\r
+ USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_BUF_SIZE];\r
+extern T_USBFS_XFER_STATUS_BLOCK USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_RPT_SCB;\r
+extern uint8 USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_BUF[\r
+ USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_BUF_SIZE];\r
+extern const uint8 CYCODE USBFS_HIDREPORT_DESCRIPTOR1[40u];\r
+extern const T_USBFS_TD CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_IN_RPT_TABLE[1u];\r
+extern const T_USBFS_TD CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_OUT_RPT_TABLE[1u];\r
+extern const T_USBFS_LUT CYCODE USBFS_DEVICE0_CONFIGURATION0_INTERFACE0_ALTERNATE0_HID_TABLE[5u];\r
+\r
+\r
+extern const uint8 CYCODE USBFS_MSOS_DESCRIPTOR[USBFS_MSOS_DESCRIPTOR_LENGTH];\r
+extern const uint8 CYCODE USBFS_MSOS_CONFIGURATION_DESCR[USBFS_MSOS_CONF_DESCR_LENGTH];\r
+#if defined(USBFS_ENABLE_IDSN_STRING)\r
+ extern uint8 USBFS_idSerialNumberStringDescriptor[USBFS_IDSN_DESCR_LENGTH];\r
+#endif /* USBFS_ENABLE_IDSN_STRING */\r
+\r
+extern volatile uint8 USBFS_interfaceNumber;\r
+extern volatile uint8 USBFS_interfaceSetting[USBFS_MAX_INTERFACES_NUMBER];\r
+extern volatile uint8 USBFS_interfaceSetting_last[USBFS_MAX_INTERFACES_NUMBER];\r
+extern volatile uint8 USBFS_deviceAddress;\r
+extern volatile uint8 USBFS_interfaceStatus[USBFS_MAX_INTERFACES_NUMBER];\r
+extern const uint8 CYCODE *USBFS_interfaceClass;\r
+\r
+extern volatile T_USBFS_EP_CTL_BLOCK USBFS_EP[USBFS_MAX_EP];\r
+extern volatile T_USBFS_TD USBFS_currentTD;\r
+\r
+#if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ extern uint8 USBFS_DmaChan[USBFS_MAX_EP];\r
+ extern uint8 USBFS_DmaTd[USBFS_MAX_EP];\r
+#endif /* End USBFS_EP_MM */\r
+\r
+extern volatile uint8 USBFS_ep0Toggle;\r
+extern volatile uint8 USBFS_lastPacketSize;\r
+extern volatile uint8 USBFS_ep0Mode;\r
+extern volatile uint8 USBFS_ep0Count;\r
+extern volatile uint16 USBFS_transferByteCount;\r
+\r
+\r
+/***************************************\r
+* Private Function Prototypes\r
+***************************************/\r
+void USBFS_ReInitComponent(void) ;\r
+void USBFS_HandleSetup(void) ;\r
+void USBFS_HandleIN(void) ;\r
+void USBFS_HandleOUT(void) ;\r
+void USBFS_LoadEP0(void) ;\r
+uint8 USBFS_InitControlRead(void) ;\r
+uint8 USBFS_InitControlWrite(void) ;\r
+void USBFS_ControlReadDataStage(void) ;\r
+void USBFS_ControlReadStatusStage(void) ;\r
+void USBFS_ControlReadPrematureStatus(void)\r
+ ;\r
+uint8 USBFS_InitControlWrite(void) ;\r
+uint8 USBFS_InitZeroLengthControlTransfer(void)\r
+ ;\r
+void USBFS_ControlWriteDataStage(void) ;\r
+void USBFS_ControlWriteStatusStage(void) ;\r
+void USBFS_ControlWritePrematureStatus(void)\r
+ ;\r
+uint8 USBFS_InitNoDataControlTransfer(void) ;\r
+void USBFS_NoDataControlStatusStage(void) ;\r
+void USBFS_InitializeStatusBlock(void) ;\r
+void USBFS_UpdateStatusBlock(uint8 completionCode) ;\r
+uint8 USBFS_DispatchClassRqst(void) ;\r
+\r
+void USBFS_Config(uint8 clearAltSetting) ;\r
+void USBFS_ConfigAltChanged(void) ;\r
+void USBFS_ConfigReg(void) ;\r
+\r
+const T_USBFS_LUT CYCODE *USBFS_GetConfigTablePtr(uint8 c)\r
+ ;\r
+const T_USBFS_LUT CYCODE *USBFS_GetDeviceTablePtr(void)\r
+ ;\r
+const uint8 CYCODE *USBFS_GetInterfaceClassTablePtr(void)\r
+ ;\r
+uint8 USBFS_ClearEndpointHalt(void) ;\r
+uint8 USBFS_SetEndpointHalt(void) ;\r
+uint8 USBFS_ValidateAlternateSetting(void) ;\r
+\r
+void USBFS_SaveConfig(void) ;\r
+void USBFS_RestoreConfig(void) ;\r
+\r
+#if defined(USBFS_ENABLE_IDSN_STRING)\r
+ void USBFS_ReadDieID(uint8 descr[]) ;\r
+#endif /* USBFS_ENABLE_IDSN_STRING */\r
+\r
+#if defined(USBFS_ENABLE_HID_CLASS)\r
+ uint8 USBFS_DispatchHIDClassRqst(void);\r
+#endif /* End USBFS_ENABLE_HID_CLASS */\r
+#if defined(USBFS_ENABLE_AUDIO_CLASS)\r
+ uint8 USBFS_DispatchAUDIOClassRqst(void);\r
+#endif /* End USBFS_ENABLE_HID_CLASS */\r
+#if defined(USBFS_ENABLE_CDC_CLASS)\r
+ uint8 USBFS_DispatchCDCClassRqst(void);\r
+#endif /* End USBFS_ENABLE_CDC_CLASS */\r
+\r
+CY_ISR_PROTO(USBFS_EP_0_ISR);\r
+#if(USBFS_EP1_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_1_ISR);\r
+#endif /* End USBFS_EP1_ISR_REMOVE */\r
+#if(USBFS_EP2_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_2_ISR);\r
+#endif /* End USBFS_EP2_ISR_REMOVE */\r
+#if(USBFS_EP3_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_3_ISR);\r
+#endif /* End USBFS_EP3_ISR_REMOVE */\r
+#if(USBFS_EP4_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_4_ISR);\r
+#endif /* End USBFS_EP4_ISR_REMOVE */\r
+#if(USBFS_EP5_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_5_ISR);\r
+#endif /* End USBFS_EP5_ISR_REMOVE */\r
+#if(USBFS_EP6_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_6_ISR);\r
+#endif /* End USBFS_EP6_ISR_REMOVE */\r
+#if(USBFS_EP7_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_7_ISR);\r
+#endif /* End USBFS_EP7_ISR_REMOVE */\r
+#if(USBFS_EP8_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_EP_8_ISR);\r
+#endif /* End USBFS_EP8_ISR_REMOVE */\r
+CY_ISR_PROTO(USBFS_BUS_RESET_ISR);\r
+#if(USBFS_SOF_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_SOF_ISR);\r
+#endif /* End USBFS_SOF_ISR_REMOVE */\r
+#if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ CY_ISR_PROTO(USBFS_ARB_ISR);\r
+#endif /* End USBFS_EP_MM */\r
+#if(USBFS_DP_ISR_REMOVE == 0u)\r
+ CY_ISR_PROTO(USBFS_DP_ISR);\r
+#endif /* End USBFS_DP_ISR_REMOVE */\r
+\r
+\r
+/***************************************\r
+* Request Handlers\r
+***************************************/\r
+\r
+uint8 USBFS_HandleStandardRqst(void) ;\r
+uint8 USBFS_DispatchClassRqst(void) ;\r
+uint8 USBFS_HandleVendorRqst(void) ;\r
+\r
+\r
+/***************************************\r
+* HID Internal references\r
+***************************************/\r
+#if defined(USBFS_ENABLE_HID_CLASS)\r
+ void USBFS_FindReport(void) ;\r
+ void USBFS_FindReportDescriptor(void) ;\r
+ void USBFS_FindHidClassDecriptor(void) ;\r
+#endif /* USBFS_ENABLE_HID_CLASS */\r
+\r
+\r
+/***************************************\r
+* MIDI Internal references\r
+***************************************/\r
+#if defined(USBFS_ENABLE_MIDI_STREAMING)\r
+ void USBFS_MIDI_IN_EP_Service(void) ;\r
+#endif /* USBFS_ENABLE_MIDI_STREAMING */\r
+\r
+\r
+#endif /* CY_USBFS_USBFS_pvt_H */\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_std.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* USB Standard request handler.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+#include "USBFS_cdc.h"\r
+#include "USBFS_pvt.h"\r
+#if defined(USBFS_ENABLE_MIDI_STREAMING) \r
+ #include "USBFS_midi.h"\r
+#endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+\r
+\r
+/***************************************\r
+* Static data allocation\r
+***************************************/\r
+\r
+#if defined(USBFS_ENABLE_FWSN_STRING)\r
+ static volatile uint8 *USBFS_fwSerialNumberStringDescriptor;\r
+ static volatile uint8 USBFS_snStringConfirm = USBFS_FALSE;\r
+#endif /* USBFS_ENABLE_FWSN_STRING */\r
+\r
+#if defined(USBFS_ENABLE_FWSN_STRING)\r
+\r
+\r
+ /*******************************************************************************\r
+ * Function Name: USBFS_SerialNumString\r
+ ********************************************************************************\r
+ *\r
+ * Summary:\r
+ * Application firmware may supply the source of the USB device descriptors\r
+ * serial number string during runtime.\r
+ *\r
+ * Parameters:\r
+ * snString: pointer to string.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ *******************************************************************************/\r
+ void USBFS_SerialNumString(uint8 snString[]) \r
+ {\r
+ USBFS_snStringConfirm = USBFS_FALSE;\r
+ if(snString != NULL)\r
+ {\r
+ USBFS_fwSerialNumberStringDescriptor = snString;\r
+ /* Check descriptor validation */\r
+ if( (snString[0u] > 1u ) && (snString[1u] == USBFS_DESCR_STRING) )\r
+ {\r
+ USBFS_snStringConfirm = USBFS_TRUE;\r
+ }\r
+ }\r
+ }\r
+\r
+#endif /* USBFS_ENABLE_FWSN_STRING */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_HandleStandardRqst\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This Routine dispatches standard requests\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* TRUE if request handled.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_HandleStandardRqst(void) \r
+{\r
+ uint8 requestHandled = USBFS_FALSE;\r
+ uint8 interfaceNumber;\r
+ #if defined(USBFS_ENABLE_STRINGS)\r
+ volatile uint8 *pStr = 0u;\r
+ #if defined(USBFS_ENABLE_DESCRIPTOR_STRINGS)\r
+ uint8 nStr;\r
+ uint8 descrLength;\r
+ #endif /* USBFS_ENABLE_DESCRIPTOR_STRINGS */\r
+ #endif /* USBFS_ENABLE_STRINGS */\r
+ static volatile uint8 USBFS_tBuffer[USBFS_STATUS_LENGTH_MAX];\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ USBFS_currentTD.count = 0u;\r
+\r
+ if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) == USBFS_RQST_DIR_D2H)\r
+ {\r
+ /* Control Read */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_GET_DESCRIPTOR:\r
+ if (CY_GET_REG8(USBFS_wValueHi) == USBFS_DESCR_DEVICE)\r
+ {\r
+ pTmp = USBFS_GetDeviceTablePtr();\r
+ USBFS_currentTD.pData = (volatile uint8 *)pTmp->p_list;\r
+ USBFS_currentTD.count = USBFS_DEVICE_DESCR_LENGTH;\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ else if (CY_GET_REG8(USBFS_wValueHi) == USBFS_DESCR_CONFIG)\r
+ {\r
+ pTmp = USBFS_GetConfigTablePtr(CY_GET_REG8(USBFS_wValueLo));\r
+ USBFS_currentTD.pData = (volatile uint8 *)pTmp->p_list;\r
+ USBFS_currentTD.count = ((uint16)(USBFS_currentTD.pData)[ \\r
+ USBFS_CONFIG_DESCR_TOTAL_LENGTH_HI] << 8u) | \\r
+ (USBFS_currentTD.pData)[USBFS_CONFIG_DESCR_TOTAL_LENGTH_LOW];\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ #if defined(USBFS_ENABLE_STRINGS)\r
+ else if (CY_GET_REG8(USBFS_wValueHi) == USBFS_DESCR_STRING)\r
+ {\r
+ /* Descriptor Strings*/\r
+ #if defined(USBFS_ENABLE_DESCRIPTOR_STRINGS)\r
+ nStr = 0u;\r
+ pStr = (volatile uint8 *)&USBFS_STRING_DESCRIPTORS[0u];\r
+ while ( (CY_GET_REG8(USBFS_wValueLo) > nStr) && (*pStr != 0u) )\r
+ {\r
+ /* Read descriptor length from 1st byte */\r
+ descrLength = *pStr;\r
+ /* Move to next string descriptor */\r
+ pStr = &pStr[descrLength];\r
+ nStr++;\r
+ }\r
+ #endif /* End USBFS_ENABLE_DESCRIPTOR_STRINGS */\r
+ /* Microsoft OS String*/\r
+ #if defined(USBFS_ENABLE_MSOS_STRING)\r
+ if( CY_GET_REG8(USBFS_wValueLo) == USBFS_STRING_MSOS )\r
+ {\r
+ pStr = (volatile uint8 *)&USBFS_MSOS_DESCRIPTOR[0u];\r
+ }\r
+ #endif /* End USBFS_ENABLE_MSOS_STRING*/\r
+ /* SN string */\r
+ #if defined(USBFS_ENABLE_SN_STRING)\r
+ if( (CY_GET_REG8(USBFS_wValueLo) != 0u) &&\r
+ (CY_GET_REG8(USBFS_wValueLo) ==\r
+ USBFS_DEVICE0_DESCR[USBFS_DEVICE_DESCR_SN_SHIFT]) )\r
+ {\r
+ pStr = (volatile uint8 *)&USBFS_SN_STRING_DESCRIPTOR[0u];\r
+ #if defined(USBFS_ENABLE_FWSN_STRING)\r
+ if(USBFS_snStringConfirm != USBFS_FALSE)\r
+ {\r
+ pStr = USBFS_fwSerialNumberStringDescriptor;\r
+ }\r
+ #endif /* USBFS_ENABLE_FWSN_STRING */\r
+ #if defined(USBFS_ENABLE_IDSN_STRING)\r
+ /* Read DIE ID and generate string descriptor in RAM */\r
+ USBFS_ReadDieID(USBFS_idSerialNumberStringDescriptor);\r
+ pStr = USBFS_idSerialNumberStringDescriptor;\r
+ #endif /* End USBFS_ENABLE_IDSN_STRING */\r
+ }\r
+ #endif /* End USBFS_ENABLE_SN_STRING */\r
+ if (*pStr != 0u)\r
+ {\r
+ USBFS_currentTD.count = *pStr;\r
+ USBFS_currentTD.pData = pStr;\r
+ requestHandled = USBFS_InitControlRead();\r
+ }\r
+ }\r
+ #endif /* End USBFS_ENABLE_STRINGS */\r
+ else\r
+ {\r
+ requestHandled = USBFS_DispatchClassRqst();\r
+ }\r
+ break;\r
+ case USBFS_GET_STATUS:\r
+ switch ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK))\r
+ {\r
+ case USBFS_RQST_RCPT_EP:\r
+ USBFS_currentTD.count = USBFS_EP_STATUS_LENGTH;\r
+ USBFS_tBuffer[0u] = USBFS_EP[ \\r
+ CY_GET_REG8(USBFS_wIndexLo) & USBFS_DIR_UNUSED].hwEpState;\r
+ USBFS_tBuffer[1u] = 0u;\r
+ USBFS_currentTD.pData = &USBFS_tBuffer[0u];\r
+ requestHandled = USBFS_InitControlRead();\r
+ break;\r
+ case USBFS_RQST_RCPT_DEV:\r
+ USBFS_currentTD.count = USBFS_DEVICE_STATUS_LENGTH;\r
+ USBFS_tBuffer[0u] = USBFS_deviceStatus;\r
+ USBFS_tBuffer[1u] = 0u;\r
+ USBFS_currentTD.pData = &USBFS_tBuffer[0u];\r
+ requestHandled = USBFS_InitControlRead();\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ break;\r
+ case USBFS_GET_CONFIGURATION:\r
+ USBFS_currentTD.count = 1u;\r
+ USBFS_currentTD.pData = (volatile uint8 *)&USBFS_configuration;\r
+ requestHandled = USBFS_InitControlRead();\r
+ break;\r
+ case USBFS_GET_INTERFACE:\r
+ USBFS_currentTD.count = 1u;\r
+ USBFS_currentTD.pData = (volatile uint8 *)&USBFS_interfaceSetting[ \\r
+ CY_GET_REG8(USBFS_wIndexLo)];\r
+ requestHandled = USBFS_InitControlRead();\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ }\r
+ else {\r
+ /* Control Write */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_SET_ADDRESS:\r
+ USBFS_deviceAddress = CY_GET_REG8(USBFS_wValueLo);\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ break;\r
+ case USBFS_SET_CONFIGURATION:\r
+ USBFS_configuration = CY_GET_REG8(USBFS_wValueLo);\r
+ USBFS_configurationChanged = USBFS_TRUE;\r
+ USBFS_Config(USBFS_TRUE);\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ break;\r
+ case USBFS_SET_INTERFACE:\r
+ if (USBFS_ValidateAlternateSetting() != 0u)\r
+ {\r
+ interfaceNumber = CY_GET_REG8(USBFS_wIndexLo);\r
+ USBFS_interfaceNumber = interfaceNumber;\r
+ USBFS_configurationChanged = USBFS_TRUE;\r
+ #if ((USBFS_EP_MA == USBFS__MA_DYNAMIC) && \\r
+ (USBFS_EP_MM == USBFS__EP_MANUAL) )\r
+ USBFS_Config(USBFS_FALSE);\r
+ #else\r
+ USBFS_ConfigAltChanged();\r
+ #endif /* End (USBFS_EP_MA == USBFS__MA_DYNAMIC) */\r
+ /* Update handled Alt setting changes status */\r
+ USBFS_interfaceSetting_last[interfaceNumber] =\r
+ USBFS_interfaceSetting[interfaceNumber];\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+ break;\r
+ case USBFS_CLEAR_FEATURE:\r
+ switch (CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK)\r
+ {\r
+ case USBFS_RQST_RCPT_EP:\r
+ if (CY_GET_REG8(USBFS_wValueLo) == USBFS_ENDPOINT_HALT)\r
+ {\r
+ requestHandled = USBFS_ClearEndpointHalt();\r
+ }\r
+ break;\r
+ case USBFS_RQST_RCPT_DEV:\r
+ /* Clear device REMOTE_WAKEUP */\r
+ if (CY_GET_REG8(USBFS_wValueLo) == USBFS_DEVICE_REMOTE_WAKEUP)\r
+ {\r
+ USBFS_deviceStatus &= (uint8)~USBFS_DEVICE_STATUS_REMOTE_WAKEUP;\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+ break;\r
+ case USBFS_RQST_RCPT_IFC:\r
+ /* Validate interfaceNumber */\r
+ if (CY_GET_REG8(USBFS_wIndexLo) < USBFS_MAX_INTERFACES_NUMBER)\r
+ {\r
+ USBFS_interfaceStatus[CY_GET_REG8(USBFS_wIndexLo)] &=\r
+ (uint8)~(CY_GET_REG8(USBFS_wValueLo));\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ break;\r
+ case USBFS_SET_FEATURE:\r
+ switch (CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK)\r
+ {\r
+ case USBFS_RQST_RCPT_EP:\r
+ if (CY_GET_REG8(USBFS_wValueLo) == USBFS_ENDPOINT_HALT)\r
+ {\r
+ requestHandled = USBFS_SetEndpointHalt();\r
+ }\r
+ break;\r
+ case USBFS_RQST_RCPT_DEV:\r
+ /* Set device REMOTE_WAKEUP */\r
+ if (CY_GET_REG8(USBFS_wValueLo) == USBFS_DEVICE_REMOTE_WAKEUP)\r
+ {\r
+ USBFS_deviceStatus |= USBFS_DEVICE_STATUS_REMOTE_WAKEUP;\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+ break;\r
+ case USBFS_RQST_RCPT_IFC:\r
+ /* Validate interfaceNumber */\r
+ if (CY_GET_REG8(USBFS_wIndexLo) < USBFS_MAX_INTERFACES_NUMBER)\r
+ {\r
+ USBFS_interfaceStatus[CY_GET_REG8(USBFS_wIndexLo)] &=\r
+ (uint8)~(CY_GET_REG8(USBFS_wValueLo));\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ break;\r
+ default: /* requestHandled is initialized as FALSE by default */\r
+ break;\r
+ }\r
+ }\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+#if defined(USBFS_ENABLE_IDSN_STRING)\r
+\r
+ /***************************************************************************\r
+ * Function Name: USBFS_ReadDieID\r
+ ****************************************************************************\r
+ *\r
+ * Summary:\r
+ * This routine read Die ID and generate Serial Number string descriptor.\r
+ *\r
+ * Parameters:\r
+ * descr: pointer on string descriptor.\r
+ *\r
+ * Return:\r
+ * None.\r
+ *\r
+ * Reentrant:\r
+ * No.\r
+ *\r
+ ***************************************************************************/\r
+ void USBFS_ReadDieID(uint8 descr[]) \r
+ {\r
+ uint8 i;\r
+ uint8 j = 0u;\r
+ uint8 value;\r
+ const char8 CYCODE hex[16u] = "0123456789ABCDEF";\r
+\r
+\r
+ /* Check descriptor validation */\r
+ if( descr != NULL)\r
+ {\r
+ descr[0u] = USBFS_IDSN_DESCR_LENGTH;\r
+ descr[1u] = USBFS_DESCR_STRING;\r
+\r
+ /* fill descriptor */\r
+ for(i = 2u; i < USBFS_IDSN_DESCR_LENGTH; i += 4u)\r
+ {\r
+ value = CY_GET_XTND_REG8((void CYFAR *)(USBFS_DIE_ID + j));\r
+ j++;\r
+ descr[i] = (uint8)hex[value >> 4u];\r
+ descr[i + 2u] = (uint8)hex[value & 0x0Fu];\r
+ }\r
+ }\r
+ }\r
+\r
+#endif /* End USBFS_ENABLE_IDSN_STRING */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ConfigReg\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine configures hardware registers from the variables.\r
+* It is called from USBFS_Config() function and from RestoreConfig\r
+* after Wakeup.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+*******************************************************************************/\r
+void USBFS_ConfigReg(void) \r
+{\r
+ uint8 ep;\r
+ uint8 i;\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ uint8 ep_type = 0u;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+\r
+ /* Set the endpoint buffer addresses */\r
+ ep = USBFS_EP1;\r
+ for (i = 0u; i < 0x80u; i+= 0x10u)\r
+ {\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_EP1_CFG_IND + i), USBFS_ARB_EPX_CFG_CRC_BYPASS |\r
+ USBFS_ARB_EPX_CFG_RESET);\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_MANUAL)\r
+ /* Enable all Arbiter EP Interrupts : err, buf under, buf over, dma gnt(mode2 only), in buf full */\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_EP1_INT_EN_IND + i), USBFS_ARB_EPX_INT_MASK);\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_MANUAL */\r
+\r
+ if(USBFS_EP[ep].epMode != USBFS_MODE_DISABLE)\r
+ {\r
+ if((USBFS_EP[ep].addr & USBFS_DIR_IN) != 0u )\r
+ {\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + i), USBFS_MODE_NAK_IN);\r
+ }\r
+ else\r
+ {\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + i), USBFS_MODE_NAK_OUT);\r
+ /* Prepare EP type mask for automatic memory allocation */\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ ep_type |= (uint8)(0x01u << (ep - USBFS_EP1));\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+ }\r
+ }\r
+ else\r
+ {\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + i), USBFS_MODE_STALL_DATA_EP);\r
+ }\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CNT0_IND + i), USBFS_EP[ep].bufferSize >> 8u);\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CNT1_IND + i), USBFS_EP[ep].bufferSize & 0xFFu);\r
+\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_RA_IND + i), USBFS_EP[ep].buffOffset & 0xFFu);\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_RA_MSB_IND + i), USBFS_EP[ep].buffOffset >> 8u);\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_WA_IND + i), USBFS_EP[ep].buffOffset & 0xFFu);\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_WA_MSB_IND + i), USBFS_EP[ep].buffOffset >> 8u);\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+\r
+ ep++;\r
+ }\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ /* BUF_SIZE depend on DMA_THRESS value: 55-32 bytes 44-16 bytes 33-8 bytes 22-4 bytes 11-2 bytes */\r
+ USBFS_BUF_SIZE_REG = USBFS_DMA_BUF_SIZE;\r
+ USBFS_DMA_THRES_REG = USBFS_DMA_BYTES_PER_BURST; /* DMA burst threshold */\r
+ USBFS_DMA_THRES_MSB_REG = 0u;\r
+ USBFS_EP_ACTIVE_REG = USBFS_ARB_INT_MASK;\r
+ USBFS_EP_TYPE_REG = ep_type;\r
+ /* Cfg_cmp bit set to 1 once configuration is complete. */\r
+ USBFS_ARB_CFG_REG = USBFS_ARB_CFG_AUTO_DMA | USBFS_ARB_CFG_AUTO_MEM |\r
+ USBFS_ARB_CFG_CFG_CPM;\r
+ /* Cfg_cmp bit set to 0 during configuration of PFSUSB Registers. */\r
+ USBFS_ARB_CFG_REG = USBFS_ARB_CFG_AUTO_DMA | USBFS_ARB_CFG_AUTO_MEM;\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+\r
+ CY_SET_REG8(USBFS_SIE_EP_INT_EN_PTR, 0xFFu);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_Config\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine configures endpoints for the entire configuration by scanning\r
+* the configuration descriptor.\r
+*\r
+* Parameters:\r
+* clearAltSetting: It configures the bAlternateSetting 0 for each interface.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* USBFS_interfaceClass - Initialized class array for each interface.\r
+* It is used for handling Class specific requests depend on interface class.\r
+* Different classes in multiple Alternate settings does not supported.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_Config(uint8 clearAltSetting) \r
+{\r
+ uint8 ep;\r
+ uint8 cur_ep;\r
+ uint8 i;\r
+ uint8 ep_type;\r
+ const uint8 *pDescr;\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ uint16 buffCount = 0u;\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ const T_USBFS_EP_SETTINGS_BLOCK CYCODE *pEP;\r
+\r
+ /* Clear all of the endpoints */\r
+ for (ep = 0u; ep < USBFS_MAX_EP; ep++)\r
+ {\r
+ USBFS_EP[ep].attrib = 0u;\r
+ USBFS_EP[ep].hwEpState = 0u;\r
+ USBFS_EP[ep].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ USBFS_EP[ep].epToggle = 0u;\r
+ USBFS_EP[ep].epMode = USBFS_MODE_DISABLE;\r
+ USBFS_EP[ep].bufferSize = 0u;\r
+ USBFS_EP[ep].interface = 0u;\r
+\r
+ }\r
+\r
+ /* Clear Alternate settings for all interfaces */\r
+ if(clearAltSetting != 0u)\r
+ {\r
+ for (i = 0u; i < USBFS_MAX_INTERFACES_NUMBER; i++)\r
+ {\r
+ USBFS_interfaceSetting[i] = 0x00u;\r
+ USBFS_interfaceSetting_last[i] = 0x00u;\r
+ }\r
+ }\r
+\r
+ /* Init Endpoints and Device Status if configured */\r
+ if(USBFS_configuration > 0u)\r
+ {\r
+ pTmp = USBFS_GetConfigTablePtr(USBFS_configuration - 1u);\r
+ /* Set Power status for current configuration */\r
+ pDescr = (const uint8 *)pTmp->p_list;\r
+ if((pDescr[USBFS_CONFIG_DESCR_ATTRIB] & USBFS_CONFIG_DESCR_ATTRIB_SELF_POWERED) != 0u)\r
+ {\r
+ USBFS_deviceStatus |= USBFS_DEVICE_STATUS_SELF_POWERED;\r
+ }\r
+ else\r
+ {\r
+ USBFS_deviceStatus &= (uint8)~USBFS_DEVICE_STATUS_SELF_POWERED;\r
+ }\r
+ /* Move to next element */\r
+ pTmp = &pTmp[1u];\r
+ ep = pTmp->c; /* For this table, c is the number of endpoints configurations */\r
+\r
+ #if ((USBFS_EP_MA == USBFS__MA_DYNAMIC) && \\r
+ (USBFS_EP_MM == USBFS__EP_MANUAL) )\r
+ /* Configure for dynamic EP memory allocation */\r
+ /* p_list points the endpoint setting table. */\r
+ pEP = (T_USBFS_EP_SETTINGS_BLOCK *) pTmp->p_list;\r
+ for (i = 0u; i < ep; i++)\r
+ {\r
+ /* Compare current Alternate setting with EP Alt*/\r
+ if(USBFS_interfaceSetting[pEP->interface] == pEP->altSetting)\r
+ {\r
+ cur_ep = pEP->addr & USBFS_DIR_UNUSED;\r
+ ep_type = pEP->attributes & USBFS_EP_TYPE_MASK;\r
+ if (pEP->addr & USBFS_DIR_IN)\r
+ {\r
+ /* IN Endpoint */\r
+ USBFS_EP[cur_ep].apiEpState = USBFS_EVENT_PENDING;\r
+ USBFS_EP[cur_ep].epMode = (ep_type == USBFS_EP_TYPE_ISOC) ?\r
+ USBFS_MODE_ISO_IN : USBFS_MODE_ACK_IN;\r
+ #if defined(USBFS_ENABLE_CDC_CLASS)\r
+ if(((pEP->bMisc == USBFS_CLASS_CDC_DATA) ||\r
+ (pEP->bMisc == USBFS_CLASS_CDC)) &&\r
+ (ep_type != USBFS_EP_TYPE_INT))\r
+ {\r
+ USBFS_cdc_data_in_ep = cur_ep;\r
+ }\r
+ #endif /* End USBFS_ENABLE_CDC_CLASS*/\r
+ #if ( defined(USBFS_ENABLE_MIDI_STREAMING) && \\r
+ (USBFS_MIDI_IN_BUFF_SIZE > 0) )\r
+ if((pEP->bMisc == USBFS_CLASS_AUDIO) &&\r
+ (ep_type == USBFS_EP_TYPE_BULK))\r
+ {\r
+ USBFS_midi_in_ep = cur_ep;\r
+ }\r
+ #endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+ }\r
+ else\r
+ {\r
+ /* OUT Endpoint */\r
+ USBFS_EP[cur_ep].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ USBFS_EP[cur_ep].epMode = (ep_type == USBFS_EP_TYPE_ISOC) ?\r
+ USBFS_MODE_ISO_OUT : USBFS_MODE_ACK_OUT;\r
+ #if defined(USBFS_ENABLE_CDC_CLASS)\r
+ if(((pEP->bMisc == USBFS_CLASS_CDC_DATA) ||\r
+ (pEP->bMisc == USBFS_CLASS_CDC)) &&\r
+ (ep_type != USBFS_EP_TYPE_INT))\r
+ {\r
+ USBFS_cdc_data_out_ep = cur_ep;\r
+ }\r
+ #endif /* End USBFS_ENABLE_CDC_CLASS*/\r
+ #if ( defined(USBFS_ENABLE_MIDI_STREAMING) && \\r
+ (USBFS_MIDI_OUT_BUFF_SIZE > 0) )\r
+ if((pEP->bMisc == USBFS_CLASS_AUDIO) &&\r
+ (ep_type == USBFS_EP_TYPE_BULK))\r
+ {\r
+ USBFS_midi_out_ep = cur_ep;\r
+ }\r
+ #endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+ }\r
+ USBFS_EP[cur_ep].bufferSize = pEP->bufferSize;\r
+ USBFS_EP[cur_ep].addr = pEP->addr;\r
+ USBFS_EP[cur_ep].attrib = pEP->attributes;\r
+ }\r
+ pEP = &pEP[1u];\r
+ }\r
+ #else /* Config for static EP memory allocation */\r
+ for (i = USBFS_EP1; i < USBFS_MAX_EP; i++)\r
+ {\r
+ /* p_list points the endpoint setting table. */\r
+ pEP = (const T_USBFS_EP_SETTINGS_BLOCK CYCODE *) pTmp->p_list;\r
+ /* Find max length for each EP and select it (length could be different in different Alt settings) */\r
+ /* but other settings should be correct with regards to Interface alt Setting */\r
+ for (cur_ep = 0u; cur_ep < ep; cur_ep++)\r
+ {\r
+ /* EP count is equal to EP # in table and we found larger EP length than have before*/\r
+ if(i == (pEP->addr & USBFS_DIR_UNUSED))\r
+ {\r
+ if(USBFS_EP[i].bufferSize < pEP->bufferSize)\r
+ {\r
+ USBFS_EP[i].bufferSize = pEP->bufferSize;\r
+ }\r
+ /* Compare current Alternate setting with EP Alt*/\r
+ if(USBFS_interfaceSetting[pEP->interface] == pEP->altSetting)\r
+ {\r
+ ep_type = pEP->attributes & USBFS_EP_TYPE_MASK;\r
+ if ((pEP->addr & USBFS_DIR_IN) != 0u)\r
+ {\r
+ /* IN Endpoint */\r
+ USBFS_EP[i].apiEpState = USBFS_EVENT_PENDING;\r
+ USBFS_EP[i].epMode = (ep_type == USBFS_EP_TYPE_ISOC) ?\r
+ USBFS_MODE_ISO_IN : USBFS_MODE_ACK_IN;\r
+ /* Find and init CDC IN endpoint number */\r
+ #if defined(USBFS_ENABLE_CDC_CLASS)\r
+ if(((pEP->bMisc == USBFS_CLASS_CDC_DATA) ||\r
+ (pEP->bMisc == USBFS_CLASS_CDC)) &&\r
+ (ep_type != USBFS_EP_TYPE_INT))\r
+ {\r
+ USBFS_cdc_data_in_ep = i;\r
+ }\r
+ #endif /* End USBFS_ENABLE_CDC_CLASS*/\r
+ #if ( defined(USBFS_ENABLE_MIDI_STREAMING) && \\r
+ (USBFS_MIDI_IN_BUFF_SIZE > 0) )\r
+ if((pEP->bMisc == USBFS_CLASS_AUDIO) &&\r
+ (ep_type == USBFS_EP_TYPE_BULK))\r
+ {\r
+ USBFS_midi_in_ep = i;\r
+ }\r
+ #endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+ }\r
+ else\r
+ {\r
+ /* OUT Endpoint */\r
+ USBFS_EP[i].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ USBFS_EP[i].epMode = (ep_type == USBFS_EP_TYPE_ISOC) ?\r
+ USBFS_MODE_ISO_OUT : USBFS_MODE_ACK_OUT;\r
+ /* Find and init CDC IN endpoint number */\r
+ #if defined(USBFS_ENABLE_CDC_CLASS)\r
+ if(((pEP->bMisc == USBFS_CLASS_CDC_DATA) ||\r
+ (pEP->bMisc == USBFS_CLASS_CDC)) &&\r
+ (ep_type != USBFS_EP_TYPE_INT))\r
+ {\r
+ USBFS_cdc_data_out_ep = i;\r
+ }\r
+ #endif /* End USBFS_ENABLE_CDC_CLASS*/\r
+ #if ( defined(USBFS_ENABLE_MIDI_STREAMING) && \\r
+ (USBFS_MIDI_OUT_BUFF_SIZE > 0) )\r
+ if((pEP->bMisc == USBFS_CLASS_AUDIO) &&\r
+ (ep_type == USBFS_EP_TYPE_BULK))\r
+ {\r
+ USBFS_midi_out_ep = i;\r
+ }\r
+ #endif /* End USBFS_ENABLE_MIDI_STREAMING*/\r
+ }\r
+ USBFS_EP[i].addr = pEP->addr;\r
+ USBFS_EP[i].attrib = pEP->attributes;\r
+\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ break; /* use first EP setting in Auto memory managment */\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+ }\r
+ }\r
+ pEP = &pEP[1u];\r
+ }\r
+ }\r
+ #endif /* End (USBFS_EP_MA == USBFS__MA_DYNAMIC) */\r
+\r
+ /* Init class array for each interface and interface number for each EP.\r
+ * It is used for handling Class specific requests directed to either an\r
+ * interface or the endpoint.\r
+ */\r
+ /* p_list points the endpoint setting table. */\r
+ pEP = (const T_USBFS_EP_SETTINGS_BLOCK CYCODE *) pTmp->p_list;\r
+ for (i = 0u; i < ep; i++)\r
+ {\r
+ /* Configure interface number for each EP*/\r
+ USBFS_EP[pEP->addr & USBFS_DIR_UNUSED].interface = pEP->interface;\r
+ pEP = &pEP[1u];\r
+ }\r
+ /* Init pointer on interface class table*/\r
+ USBFS_interfaceClass = USBFS_GetInterfaceClassTablePtr();\r
+ /* Set the endpoint buffer addresses */\r
+\r
+ #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
+ for (ep = USBFS_EP1; ep < USBFS_MAX_EP; ep++)\r
+ {\r
+ USBFS_EP[ep].buffOffset = buffCount;\r
+ buffCount += USBFS_EP[ep].bufferSize;\r
+ }\r
+ #endif /* End USBFS_EP_MM != USBFS__EP_DMAAUTO */\r
+\r
+ /* Configure hardware registers */\r
+ USBFS_ConfigReg();\r
+ } /* USBFS_configuration > 0 */\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ConfigAltChanged\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine update configuration for the required endpoints only.\r
+* It is called after SET_INTERFACE request when Static memory allocation used.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_ConfigAltChanged(void) \r
+{\r
+ uint8 ep;\r
+ uint8 cur_ep;\r
+ uint8 i;\r
+ uint8 ep_type;\r
+ uint8 ri;\r
+\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ const T_USBFS_EP_SETTINGS_BLOCK CYCODE *pEP;\r
+\r
+\r
+ /* Init Endpoints and Device Status if configured */\r
+ if(USBFS_configuration > 0u)\r
+ {\r
+ pTmp = USBFS_GetConfigTablePtr(USBFS_configuration - 1u);\r
+ pTmp = &pTmp[1u];\r
+ ep = pTmp->c; /* For this table, c is the number of endpoints configurations */\r
+\r
+ /* Do not touch EP which doesn't need reconfiguration */\r
+ /* When Alt setting changed, the only required endpoints need to be reconfigured */\r
+ /* p_list points the endpoint setting table. */\r
+ pEP = (const T_USBFS_EP_SETTINGS_BLOCK CYCODE *) pTmp->p_list;\r
+ for (i = 0u; i < ep; i++)\r
+ {\r
+ /*If Alt setting changed and new is same with EP Alt */\r
+ if((USBFS_interfaceSetting[pEP->interface] !=\r
+ USBFS_interfaceSetting_last[pEP->interface] ) &&\r
+ (USBFS_interfaceSetting[pEP->interface] == pEP->altSetting) &&\r
+ (pEP->interface == CY_GET_REG8(USBFS_wIndexLo)))\r
+ {\r
+ cur_ep = pEP->addr & USBFS_DIR_UNUSED;\r
+ ri = ((cur_ep - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+ ep_type = pEP->attributes & USBFS_EP_TYPE_MASK;\r
+ if ((pEP->addr & USBFS_DIR_IN) != 0u)\r
+ {\r
+ /* IN Endpoint */\r
+ USBFS_EP[cur_ep].apiEpState = USBFS_EVENT_PENDING;\r
+ USBFS_EP[cur_ep].epMode = (ep_type == USBFS_EP_TYPE_ISOC) ?\r
+ USBFS_MODE_ISO_IN : USBFS_MODE_ACK_IN;\r
+ }\r
+ else\r
+ {\r
+ /* OUT Endpoint */\r
+ USBFS_EP[cur_ep].apiEpState = USBFS_NO_EVENT_PENDING;\r
+ USBFS_EP[cur_ep].epMode = (ep_type == USBFS_EP_TYPE_ISOC) ?\r
+ USBFS_MODE_ISO_OUT : USBFS_MODE_ACK_OUT;\r
+ }\r
+ /* Change the SIE mode for the selected EP to NAK ALL */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_NAK_IN_OUT);\r
+ USBFS_EP[cur_ep].bufferSize = pEP->bufferSize;\r
+ USBFS_EP[cur_ep].addr = pEP->addr;\r
+ USBFS_EP[cur_ep].attrib = pEP->attributes;\r
+\r
+ /* Clear the data toggle */\r
+ USBFS_EP[cur_ep].epToggle = 0u;\r
+\r
+ /* Dynamic reconfiguration for mode 3 transfer */\r
+ #if(USBFS_EP_MM == USBFS__EP_DMAAUTO)\r
+ /* In_data_rdy for selected EP should be set to 0 */\r
+ * (reg8 *)(USBFS_ARB_EP1_CFG_IND + ri) &= (uint8)~USBFS_ARB_EPX_CFG_IN_DATA_RDY;\r
+\r
+ /* write the EP number for which reconfiguration is required */\r
+ USBFS_DYN_RECONFIG_REG = (cur_ep - USBFS_EP1) <<\r
+ USBFS_DYN_RECONFIG_EP_SHIFT;\r
+ /* Set the dyn_config_en bit in dynamic reconfiguration register */\r
+ USBFS_DYN_RECONFIG_REG |= USBFS_DYN_RECONFIG_ENABLE;\r
+ /* wait for the dyn_config_rdy bit to set by the block,\r
+ * this bit will be set to 1 when block is ready for reconfiguration.\r
+ */\r
+ while((USBFS_DYN_RECONFIG_REG & USBFS_DYN_RECONFIG_RDY_STS) == 0u)\r
+ {\r
+ ;\r
+ }\r
+ /* Once dyn_config_rdy bit is set, FW can change the EP configuration. */\r
+ /* Change EP Type with new direction */\r
+ if((pEP->addr & USBFS_DIR_IN) == 0u)\r
+ {\r
+ USBFS_EP_TYPE_REG |= (uint8)(0x01u << (cur_ep - USBFS_EP1));\r
+ }\r
+ else\r
+ {\r
+ USBFS_EP_TYPE_REG &= (uint8)~(uint8)(0x01u << (cur_ep - USBFS_EP1));\r
+ }\r
+ /* dynamic reconfiguration enable bit cleared, pointers and control/status\r
+ * signals for the selected EP is cleared/re-initialized on negative edge\r
+ * of dynamic reconfiguration enable bit).\r
+ */\r
+ USBFS_DYN_RECONFIG_REG &= (uint8)~USBFS_DYN_RECONFIG_ENABLE;\r
+ /* The main loop has to re-enable DMA and OUT endpoint*/\r
+ #else\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CNT0_IND + ri),\r
+ USBFS_EP[cur_ep].bufferSize >> 8u);\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CNT1_IND + ri),\r
+ USBFS_EP[cur_ep].bufferSize & 0xFFu);\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_RA_IND + ri),\r
+ USBFS_EP[cur_ep].buffOffset & 0xFFu);\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_RA_MSB_IND + ri),\r
+ USBFS_EP[cur_ep].buffOffset >> 8u);\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_WA_IND + ri),\r
+ USBFS_EP[cur_ep].buffOffset & 0xFFu);\r
+ CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_WA_MSB_IND + ri),\r
+ USBFS_EP[cur_ep].buffOffset >> 8u);\r
+ #endif /* End USBFS_EP_MM == USBFS__EP_DMAAUTO */\r
+ }\r
+ /* Get next EP element */\r
+ pEP = &pEP[1u];\r
+ }\r
+ } /* USBFS_configuration > 0 */\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetConfigTablePtr\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine returns a pointer a configuration table entry\r
+*\r
+* Parameters:\r
+* c: Configuration Index\r
+*\r
+* Return:\r
+* Device Descriptor pointer.\r
+*\r
+*******************************************************************************/\r
+const T_USBFS_LUT CYCODE *USBFS_GetConfigTablePtr(uint8 c)\r
+ \r
+{\r
+ /* Device Table */\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+\r
+ pTmp = (const T_USBFS_LUT CYCODE *) USBFS_TABLE[USBFS_device].p_list;\r
+\r
+ /* The first entry points to the Device Descriptor,\r
+ * the rest configuration entries.\r
+ */\r
+ return( (const T_USBFS_LUT CYCODE *) pTmp[c + 1u].p_list );\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_GetDeviceTablePtr\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine returns a pointer to the Device table\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* Device Table pointer\r
+*\r
+*******************************************************************************/\r
+const T_USBFS_LUT CYCODE *USBFS_GetDeviceTablePtr(void)\r
+ \r
+{\r
+ /* Device Table */\r
+ return( (const T_USBFS_LUT CYCODE *) USBFS_TABLE[USBFS_device].p_list );\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USB_GetInterfaceClassTablePtr\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine returns Interface Class table pointer, which contains\r
+* the relation between interface number and interface class.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* Interface Class table pointer.\r
+*\r
+*******************************************************************************/\r
+const uint8 CYCODE *USBFS_GetInterfaceClassTablePtr(void)\r
+ \r
+{\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ uint8 currentInterfacesNum;\r
+\r
+ pTmp = USBFS_GetConfigTablePtr(USBFS_configuration - 1u);\r
+ currentInterfacesNum = ((const uint8 *) pTmp->p_list)[USBFS_CONFIG_DESCR_NUM_INTERFACES];\r
+ /* Third entry in the LUT starts the Interface Table pointers */\r
+ /* The INTERFACE_CLASS table is located after all interfaces */\r
+ pTmp = &pTmp[currentInterfacesNum + 2u];\r
+ return( (const uint8 CYCODE *) pTmp->p_list );\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_TerminateEP\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This function terminates the specified USBFS endpoint.\r
+* This function should be used before endpoint reconfiguration.\r
+*\r
+* Parameters:\r
+* Endpoint number.\r
+*\r
+* Return:\r
+* None.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+void USBFS_TerminateEP(uint8 ep) \r
+{\r
+ uint8 ri;\r
+\r
+ ep &= USBFS_DIR_UNUSED;\r
+ ri = ((ep - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+\r
+ if ((ep > USBFS_EP0) && (ep < USBFS_MAX_EP))\r
+ {\r
+ /* Set the endpoint Halt */\r
+ USBFS_EP[ep].hwEpState |= (USBFS_ENDPOINT_STATUS_HALT);\r
+\r
+ /* Clear the data toggle */\r
+ USBFS_EP[ep].epToggle = 0u;\r
+ USBFS_EP[ep].apiEpState = USBFS_NO_EVENT_ALLOWED;\r
+\r
+ if ((USBFS_EP[ep].addr & USBFS_DIR_IN) != 0u)\r
+ {\r
+ /* IN Endpoint */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_NAK_IN);\r
+ }\r
+ else\r
+ {\r
+ /* OUT Endpoint */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_NAK_OUT);\r
+ }\r
+ }\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_SetEndpointHalt\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine handles set endpoint halt.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_SetEndpointHalt(void) \r
+{\r
+ uint8 ep;\r
+ uint8 ri;\r
+ uint8 requestHandled = USBFS_FALSE;\r
+\r
+ /* Set endpoint halt */\r
+ ep = CY_GET_REG8(USBFS_wIndexLo) & USBFS_DIR_UNUSED;\r
+ ri = ((ep - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+\r
+ if ((ep > USBFS_EP0) && (ep < USBFS_MAX_EP))\r
+ {\r
+ /* Set the endpoint Halt */\r
+ USBFS_EP[ep].hwEpState |= (USBFS_ENDPOINT_STATUS_HALT);\r
+\r
+ /* Clear the data toggle */\r
+ USBFS_EP[ep].epToggle = 0u;\r
+ USBFS_EP[ep].apiEpState |= USBFS_NO_EVENT_ALLOWED;\r
+\r
+ if ((USBFS_EP[ep].addr & USBFS_DIR_IN) != 0u)\r
+ {\r
+ /* IN Endpoint */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_STALL_DATA_EP |\r
+ USBFS_MODE_ACK_IN);\r
+ }\r
+ else\r
+ {\r
+ /* OUT Endpoint */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_STALL_DATA_EP |\r
+ USBFS_MODE_ACK_OUT);\r
+ }\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ClearEndpointHalt\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine handles clear endpoint halt.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_ClearEndpointHalt(void) \r
+{\r
+ uint8 ep;\r
+ uint8 ri;\r
+ uint8 requestHandled = USBFS_FALSE;\r
+\r
+ /* Clear endpoint halt */\r
+ ep = CY_GET_REG8(USBFS_wIndexLo) & USBFS_DIR_UNUSED;\r
+ ri = ((ep - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
+\r
+ if ((ep > USBFS_EP0) && (ep < USBFS_MAX_EP))\r
+ {\r
+ /* Clear the endpoint Halt */\r
+ USBFS_EP[ep].hwEpState &= (uint8)~(USBFS_ENDPOINT_STATUS_HALT);\r
+\r
+ /* Clear the data toggle */\r
+ USBFS_EP[ep].epToggle = 0u;\r
+ /* Clear toggle bit for already armed packet */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CNT0_IND + ri), CY_GET_REG8(\r
+ (reg8 *)(USBFS_SIE_EP1_CNT0_IND + ri)) & (uint8)~USBFS_EPX_CNT_DATA_TOGGLE);\r
+ /* Return API State as it was defined before */\r
+ USBFS_EP[ep].apiEpState &= (uint8)~USBFS_NO_EVENT_ALLOWED;\r
+\r
+ if ((USBFS_EP[ep].addr & USBFS_DIR_IN) != 0u)\r
+ {\r
+ /* IN Endpoint */\r
+ if(USBFS_EP[ep].apiEpState == USBFS_IN_BUFFER_EMPTY)\r
+ { /* Wait for next packet from application */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_NAK_IN);\r
+ }\r
+ else /* Continue armed transfer */\r
+ {\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_ACK_IN);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ /* OUT Endpoint */\r
+ if(USBFS_EP[ep].apiEpState == USBFS_OUT_BUFFER_FULL)\r
+ { /* Allow application to read full buffer */\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_NAK_OUT);\r
+ }\r
+ else /* Mark endpoint as empty, so it will be reloaded */\r
+ {\r
+ CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ri), USBFS_MODE_ACK_OUT);\r
+ }\r
+ }\r
+ requestHandled = USBFS_InitNoDataControlTransfer();\r
+ }\r
+\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_ValidateAlternateSetting\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* Validates (and records) a SET INTERFACE request.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_ValidateAlternateSetting(void) \r
+{\r
+ uint8 requestHandled = USBFS_TRUE;\r
+ uint8 interfaceNum;\r
+ const T_USBFS_LUT CYCODE *pTmp;\r
+ uint8 currentInterfacesNum;\r
+\r
+ interfaceNum = CY_GET_REG8(USBFS_wIndexLo);\r
+ /* Validate interface setting, stall if invalid. */\r
+ pTmp = USBFS_GetConfigTablePtr(USBFS_configuration - 1u);\r
+ currentInterfacesNum = ((const uint8 *) pTmp->p_list)[USBFS_CONFIG_DESCR_NUM_INTERFACES];\r
+\r
+ if((interfaceNum >= currentInterfacesNum) || (interfaceNum >= USBFS_MAX_INTERFACES_NUMBER))\r
+ { /* Wrong interface number */\r
+ requestHandled = USBFS_FALSE;\r
+ }\r
+ else\r
+ {\r
+ /* Save current Alt setting to find out the difference in Config() function */\r
+ USBFS_interfaceSetting_last[interfaceNum] = USBFS_interfaceSetting[interfaceNum];\r
+ USBFS_interfaceSetting[interfaceNum] = CY_GET_REG8(USBFS_wValueLo);\r
+ }\r
+\r
+ return (requestHandled);\r
+}\r
+\r
+\r
+/* [] END OF FILE */\r
--- /dev/null
+/*******************************************************************************\r
+* File Name: USBFS_vnd.c\r
+* Version 2.60\r
+*\r
+* Description:\r
+* USB vendor request handler.\r
+*\r
+* Note:\r
+*\r
+********************************************************************************\r
+* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
+* You may use this file only in accordance with the license, terms, conditions,\r
+* disclaimers, and limitations in the end user license agreement accompanying\r
+* the software package with which this file was provided.\r
+*******************************************************************************/\r
+\r
+#include "USBFS.h"\r
+#include "USBFS_pvt.h"\r
+\r
+#if(USBFS_EXTERN_VND == USBFS_FALSE)\r
+\r
+\r
+/***************************************\r
+* Vendor Specific Declarations\r
+***************************************/\r
+\r
+/* `#START VENDOR_SPECIFIC_DECLARATIONS` Place your declaration here */\r
+\r
+/* `#END` */\r
+\r
+\r
+/*******************************************************************************\r
+* Function Name: USBFS_HandleVendorRqst\r
+********************************************************************************\r
+*\r
+* Summary:\r
+* This routine provide users with a method to implement vendor specifc\r
+* requests.\r
+*\r
+* To implement vendor specific requests, add your code in this function to\r
+* decode and disposition the request. If the request is handled, your code\r
+* must set the variable "requestHandled" to TRUE, indicating that the\r
+* request has been handled.\r
+*\r
+* Parameters:\r
+* None.\r
+*\r
+* Return:\r
+* requestHandled.\r
+*\r
+* Reentrant:\r
+* No.\r
+*\r
+*******************************************************************************/\r
+uint8 USBFS_HandleVendorRqst(void) \r
+{\r
+ uint8 requestHandled = USBFS_FALSE;\r
+\r
+ if ((CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_DIR_MASK) == USBFS_RQST_DIR_D2H)\r
+ {\r
+ /* Control Read */\r
+ switch (CY_GET_REG8(USBFS_bRequest))\r
+ {\r
+ case USBFS_GET_EXTENDED_CONFIG_DESCRIPTOR:\r
+ #if defined(USBFS_ENABLE_MSOS_STRING)\r
+ USBFS_currentTD.pData = (volatile uint8 *)&USBFS_MSOS_CONFIGURATION_DESCR[0u];\r
+ USBFS_currentTD.count = USBFS_MSOS_CONFIGURATION_DESCR[0u];\r
+ requestHandled = USBFS_InitControlRead();\r
+ #endif /* End USBFS_ENABLE_MSOS_STRING */\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ }\r
+\r
+ /* `#START VENDOR_SPECIFIC_CODE` Place your vendor specific request here */\r
+\r
+ /* `#END` */\r
+\r
+ return(requestHandled);\r
+}\r
+\r
+\r
+/*******************************************************************************\r
+* Additional user functions supporting Vendor Specific Requests\r
+********************************************************************************/\r
+\r
+/* `#START VENDOR_SPECIFIC_FUNCTIONS` Place any additional functions here */\r
+\r
+/* `#END` */\r
+\r
+\r
+#endif /* USBFS_EXTERN_VND */\r
+\r
+\r
+/* [] END OF FILE */\r
#include <cydevice.h>\r
#include <cydevice_trm.h>\r
\r
-/* USBFS_1_bus_reset */\r
-#define USBFS_1_bus_reset__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
-#define USBFS_1_bus_reset__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
-#define USBFS_1_bus_reset__INTC_MASK 0x800000u\r
-#define USBFS_1_bus_reset__INTC_NUMBER 23u\r
-#define USBFS_1_bus_reset__INTC_PRIOR_NUM 7u\r
-#define USBFS_1_bus_reset__INTC_PRIOR_REG CYREG_NVIC_PRI_23\r
-#define USBFS_1_bus_reset__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
-#define USBFS_1_bus_reset__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
+/* USBFS_bus_reset */\r
+#define USBFS_bus_reset__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
+#define USBFS_bus_reset__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
+#define USBFS_bus_reset__INTC_MASK 0x800000u\r
+#define USBFS_bus_reset__INTC_NUMBER 23u\r
+#define USBFS_bus_reset__INTC_PRIOR_NUM 7u\r
+#define USBFS_bus_reset__INTC_PRIOR_REG CYREG_NVIC_PRI_23\r
+#define USBFS_bus_reset__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
+#define USBFS_bus_reset__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_arb_int */\r
-#define USBFS_1_arb_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
-#define USBFS_1_arb_int__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
-#define USBFS_1_arb_int__INTC_MASK 0x400000u\r
-#define USBFS_1_arb_int__INTC_NUMBER 22u\r
-#define USBFS_1_arb_int__INTC_PRIOR_NUM 7u\r
-#define USBFS_1_arb_int__INTC_PRIOR_REG CYREG_NVIC_PRI_22\r
-#define USBFS_1_arb_int__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
-#define USBFS_1_arb_int__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
+/* USBFS_arb_int */\r
+#define USBFS_arb_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
+#define USBFS_arb_int__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
+#define USBFS_arb_int__INTC_MASK 0x400000u\r
+#define USBFS_arb_int__INTC_NUMBER 22u\r
+#define USBFS_arb_int__INTC_PRIOR_NUM 7u\r
+#define USBFS_arb_int__INTC_PRIOR_REG CYREG_NVIC_PRI_22\r
+#define USBFS_arb_int__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
+#define USBFS_arb_int__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_sof_int */\r
-#define USBFS_1_sof_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
-#define USBFS_1_sof_int__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
-#define USBFS_1_sof_int__INTC_MASK 0x200000u\r
-#define USBFS_1_sof_int__INTC_NUMBER 21u\r
-#define USBFS_1_sof_int__INTC_PRIOR_NUM 7u\r
-#define USBFS_1_sof_int__INTC_PRIOR_REG CYREG_NVIC_PRI_21\r
-#define USBFS_1_sof_int__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
-#define USBFS_1_sof_int__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
-\r
-/* USBFS_1_dp_int */\r
-#define USBFS_1_dp_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
-#define USBFS_1_dp_int__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
-#define USBFS_1_dp_int__INTC_MASK 0x1000u\r
-#define USBFS_1_dp_int__INTC_NUMBER 12u\r
-#define USBFS_1_dp_int__INTC_PRIOR_NUM 7u\r
-#define USBFS_1_dp_int__INTC_PRIOR_REG CYREG_NVIC_PRI_12\r
-#define USBFS_1_dp_int__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
-#define USBFS_1_dp_int__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
+/* USBFS_sof_int */\r
+#define USBFS_sof_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
+#define USBFS_sof_int__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
+#define USBFS_sof_int__INTC_MASK 0x200000u\r
+#define USBFS_sof_int__INTC_NUMBER 21u\r
+#define USBFS_sof_int__INTC_PRIOR_NUM 7u\r
+#define USBFS_sof_int__INTC_PRIOR_REG CYREG_NVIC_PRI_21\r
+#define USBFS_sof_int__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
+#define USBFS_sof_int__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
\r
/* SCSI_ATN_ISR */\r
#define SCSI_ATN_ISR__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
#define SDCard_BSPIM_sR8_Dp_u0__MSK_DP_AUX_CTL_REG CYREG_B0_UDB07_MSK_ACTL\r
#define SDCard_BSPIM_sR8_Dp_u0__PER_DP_AUX_CTL_REG CYREG_B0_UDB07_MSK_ACTL\r
\r
-/* USBFS_1_ep_0 */\r
-#define USBFS_1_ep_0__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
-#define USBFS_1_ep_0__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
-#define USBFS_1_ep_0__INTC_MASK 0x1000000u\r
-#define USBFS_1_ep_0__INTC_NUMBER 24u\r
-#define USBFS_1_ep_0__INTC_PRIOR_NUM 7u\r
-#define USBFS_1_ep_0__INTC_PRIOR_REG CYREG_NVIC_PRI_24\r
-#define USBFS_1_ep_0__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
-#define USBFS_1_ep_0__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
-\r
-/* USBFS_1_ep_1 */\r
-#define USBFS_1_ep_1__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
-#define USBFS_1_ep_1__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
-#define USBFS_1_ep_1__INTC_MASK 0x01u\r
-#define USBFS_1_ep_1__INTC_NUMBER 0u\r
-#define USBFS_1_ep_1__INTC_PRIOR_NUM 7u\r
-#define USBFS_1_ep_1__INTC_PRIOR_REG CYREG_NVIC_PRI_0\r
-#define USBFS_1_ep_1__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
-#define USBFS_1_ep_1__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
+/* USBFS_dp_int */\r
+#define USBFS_dp_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
+#define USBFS_dp_int__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
+#define USBFS_dp_int__INTC_MASK 0x1000u\r
+#define USBFS_dp_int__INTC_NUMBER 12u\r
+#define USBFS_dp_int__INTC_PRIOR_NUM 7u\r
+#define USBFS_dp_int__INTC_PRIOR_REG CYREG_NVIC_PRI_12\r
+#define USBFS_dp_int__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
+#define USBFS_dp_int__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
\r
/* SCSI_CTL_IO */\r
#define SCSI_CTL_IO_Sync_ctrl_reg__0__MASK 0x01u\r
#define SD_Init_Clk__PM_STBY_CFG CYREG_PM_STBY_CFG2\r
#define SD_Init_Clk__PM_STBY_MSK 0x02u\r
\r
-/* USBFS_1_USB */\r
-#define USBFS_1_USB__ARB_CFG CYREG_USB_ARB_CFG\r
-#define USBFS_1_USB__ARB_EP1_CFG CYREG_USB_ARB_EP1_CFG\r
-#define USBFS_1_USB__ARB_EP1_INT_EN CYREG_USB_ARB_EP1_INT_EN\r
-#define USBFS_1_USB__ARB_EP1_SR CYREG_USB_ARB_EP1_SR\r
-#define USBFS_1_USB__ARB_EP2_CFG CYREG_USB_ARB_EP2_CFG\r
-#define USBFS_1_USB__ARB_EP2_INT_EN CYREG_USB_ARB_EP2_INT_EN\r
-#define USBFS_1_USB__ARB_EP2_SR CYREG_USB_ARB_EP2_SR\r
-#define USBFS_1_USB__ARB_EP3_CFG CYREG_USB_ARB_EP3_CFG\r
-#define USBFS_1_USB__ARB_EP3_INT_EN CYREG_USB_ARB_EP3_INT_EN\r
-#define USBFS_1_USB__ARB_EP3_SR CYREG_USB_ARB_EP3_SR\r
-#define USBFS_1_USB__ARB_EP4_CFG CYREG_USB_ARB_EP4_CFG\r
-#define USBFS_1_USB__ARB_EP4_INT_EN CYREG_USB_ARB_EP4_INT_EN\r
-#define USBFS_1_USB__ARB_EP4_SR CYREG_USB_ARB_EP4_SR\r
-#define USBFS_1_USB__ARB_EP5_CFG CYREG_USB_ARB_EP5_CFG\r
-#define USBFS_1_USB__ARB_EP5_INT_EN CYREG_USB_ARB_EP5_INT_EN\r
-#define USBFS_1_USB__ARB_EP5_SR CYREG_USB_ARB_EP5_SR\r
-#define USBFS_1_USB__ARB_EP6_CFG CYREG_USB_ARB_EP6_CFG\r
-#define USBFS_1_USB__ARB_EP6_INT_EN CYREG_USB_ARB_EP6_INT_EN\r
-#define USBFS_1_USB__ARB_EP6_SR CYREG_USB_ARB_EP6_SR\r
-#define USBFS_1_USB__ARB_EP7_CFG CYREG_USB_ARB_EP7_CFG\r
-#define USBFS_1_USB__ARB_EP7_INT_EN CYREG_USB_ARB_EP7_INT_EN\r
-#define USBFS_1_USB__ARB_EP7_SR CYREG_USB_ARB_EP7_SR\r
-#define USBFS_1_USB__ARB_EP8_CFG CYREG_USB_ARB_EP8_CFG\r
-#define USBFS_1_USB__ARB_EP8_INT_EN CYREG_USB_ARB_EP8_INT_EN\r
-#define USBFS_1_USB__ARB_EP8_SR CYREG_USB_ARB_EP8_SR\r
-#define USBFS_1_USB__ARB_INT_EN CYREG_USB_ARB_INT_EN\r
-#define USBFS_1_USB__ARB_INT_SR CYREG_USB_ARB_INT_SR\r
-#define USBFS_1_USB__ARB_RW1_DR CYREG_USB_ARB_RW1_DR\r
-#define USBFS_1_USB__ARB_RW1_RA CYREG_USB_ARB_RW1_RA\r
-#define USBFS_1_USB__ARB_RW1_RA_MSB CYREG_USB_ARB_RW1_RA_MSB\r
-#define USBFS_1_USB__ARB_RW1_WA CYREG_USB_ARB_RW1_WA\r
-#define USBFS_1_USB__ARB_RW1_WA_MSB CYREG_USB_ARB_RW1_WA_MSB\r
-#define USBFS_1_USB__ARB_RW2_DR CYREG_USB_ARB_RW2_DR\r
-#define USBFS_1_USB__ARB_RW2_RA CYREG_USB_ARB_RW2_RA\r
-#define USBFS_1_USB__ARB_RW2_RA_MSB CYREG_USB_ARB_RW2_RA_MSB\r
-#define USBFS_1_USB__ARB_RW2_WA CYREG_USB_ARB_RW2_WA\r
-#define USBFS_1_USB__ARB_RW2_WA_MSB CYREG_USB_ARB_RW2_WA_MSB\r
-#define USBFS_1_USB__ARB_RW3_DR CYREG_USB_ARB_RW3_DR\r
-#define USBFS_1_USB__ARB_RW3_RA CYREG_USB_ARB_RW3_RA\r
-#define USBFS_1_USB__ARB_RW3_RA_MSB CYREG_USB_ARB_RW3_RA_MSB\r
-#define USBFS_1_USB__ARB_RW3_WA CYREG_USB_ARB_RW3_WA\r
-#define USBFS_1_USB__ARB_RW3_WA_MSB CYREG_USB_ARB_RW3_WA_MSB\r
-#define USBFS_1_USB__ARB_RW4_DR CYREG_USB_ARB_RW4_DR\r
-#define USBFS_1_USB__ARB_RW4_RA CYREG_USB_ARB_RW4_RA\r
-#define USBFS_1_USB__ARB_RW4_RA_MSB CYREG_USB_ARB_RW4_RA_MSB\r
-#define USBFS_1_USB__ARB_RW4_WA CYREG_USB_ARB_RW4_WA\r
-#define USBFS_1_USB__ARB_RW4_WA_MSB CYREG_USB_ARB_RW4_WA_MSB\r
-#define USBFS_1_USB__ARB_RW5_DR CYREG_USB_ARB_RW5_DR\r
-#define USBFS_1_USB__ARB_RW5_RA CYREG_USB_ARB_RW5_RA\r
-#define USBFS_1_USB__ARB_RW5_RA_MSB CYREG_USB_ARB_RW5_RA_MSB\r
-#define USBFS_1_USB__ARB_RW5_WA CYREG_USB_ARB_RW5_WA\r
-#define USBFS_1_USB__ARB_RW5_WA_MSB CYREG_USB_ARB_RW5_WA_MSB\r
-#define USBFS_1_USB__ARB_RW6_DR CYREG_USB_ARB_RW6_DR\r
-#define USBFS_1_USB__ARB_RW6_RA CYREG_USB_ARB_RW6_RA\r
-#define USBFS_1_USB__ARB_RW6_RA_MSB CYREG_USB_ARB_RW6_RA_MSB\r
-#define USBFS_1_USB__ARB_RW6_WA CYREG_USB_ARB_RW6_WA\r
-#define USBFS_1_USB__ARB_RW6_WA_MSB CYREG_USB_ARB_RW6_WA_MSB\r
-#define USBFS_1_USB__ARB_RW7_DR CYREG_USB_ARB_RW7_DR\r
-#define USBFS_1_USB__ARB_RW7_RA CYREG_USB_ARB_RW7_RA\r
-#define USBFS_1_USB__ARB_RW7_RA_MSB CYREG_USB_ARB_RW7_RA_MSB\r
-#define USBFS_1_USB__ARB_RW7_WA CYREG_USB_ARB_RW7_WA\r
-#define USBFS_1_USB__ARB_RW7_WA_MSB CYREG_USB_ARB_RW7_WA_MSB\r
-#define USBFS_1_USB__ARB_RW8_DR CYREG_USB_ARB_RW8_DR\r
-#define USBFS_1_USB__ARB_RW8_RA CYREG_USB_ARB_RW8_RA\r
-#define USBFS_1_USB__ARB_RW8_RA_MSB CYREG_USB_ARB_RW8_RA_MSB\r
-#define USBFS_1_USB__ARB_RW8_WA CYREG_USB_ARB_RW8_WA\r
-#define USBFS_1_USB__ARB_RW8_WA_MSB CYREG_USB_ARB_RW8_WA_MSB\r
-#define USBFS_1_USB__BUF_SIZE CYREG_USB_BUF_SIZE\r
-#define USBFS_1_USB__BUS_RST_CNT CYREG_USB_BUS_RST_CNT\r
-#define USBFS_1_USB__CR0 CYREG_USB_CR0\r
-#define USBFS_1_USB__CR1 CYREG_USB_CR1\r
-#define USBFS_1_USB__CWA CYREG_USB_CWA\r
-#define USBFS_1_USB__CWA_MSB CYREG_USB_CWA_MSB\r
-#define USBFS_1_USB__DMA_THRES CYREG_USB_DMA_THRES\r
-#define USBFS_1_USB__DMA_THRES_MSB CYREG_USB_DMA_THRES_MSB\r
-#define USBFS_1_USB__DYN_RECONFIG CYREG_USB_DYN_RECONFIG\r
-#define USBFS_1_USB__EP0_CNT CYREG_USB_EP0_CNT\r
-#define USBFS_1_USB__EP0_CR CYREG_USB_EP0_CR\r
-#define USBFS_1_USB__EP0_DR0 CYREG_USB_EP0_DR0\r
-#define USBFS_1_USB__EP0_DR1 CYREG_USB_EP0_DR1\r
-#define USBFS_1_USB__EP0_DR2 CYREG_USB_EP0_DR2\r
-#define USBFS_1_USB__EP0_DR3 CYREG_USB_EP0_DR3\r
-#define USBFS_1_USB__EP0_DR4 CYREG_USB_EP0_DR4\r
-#define USBFS_1_USB__EP0_DR5 CYREG_USB_EP0_DR5\r
-#define USBFS_1_USB__EP0_DR6 CYREG_USB_EP0_DR6\r
-#define USBFS_1_USB__EP0_DR7 CYREG_USB_EP0_DR7\r
-#define USBFS_1_USB__EP_ACTIVE CYREG_USB_EP_ACTIVE\r
-#define USBFS_1_USB__EP_TYPE CYREG_USB_EP_TYPE\r
-#define USBFS_1_USB__MEM_DATA CYREG_USB_MEM_DATA_MBASE\r
-#define USBFS_1_USB__PM_ACT_CFG CYREG_PM_ACT_CFG5\r
-#define USBFS_1_USB__PM_ACT_MSK 0x01u\r
-#define USBFS_1_USB__PM_STBY_CFG CYREG_PM_STBY_CFG5\r
-#define USBFS_1_USB__PM_STBY_MSK 0x01u\r
-#define USBFS_1_USB__SIE_EP1_CNT0 CYREG_USB_SIE_EP1_CNT0\r
-#define USBFS_1_USB__SIE_EP1_CNT1 CYREG_USB_SIE_EP1_CNT1\r
-#define USBFS_1_USB__SIE_EP1_CR0 CYREG_USB_SIE_EP1_CR0\r
-#define USBFS_1_USB__SIE_EP2_CNT0 CYREG_USB_SIE_EP2_CNT0\r
-#define USBFS_1_USB__SIE_EP2_CNT1 CYREG_USB_SIE_EP2_CNT1\r
-#define USBFS_1_USB__SIE_EP2_CR0 CYREG_USB_SIE_EP2_CR0\r
-#define USBFS_1_USB__SIE_EP3_CNT0 CYREG_USB_SIE_EP3_CNT0\r
-#define USBFS_1_USB__SIE_EP3_CNT1 CYREG_USB_SIE_EP3_CNT1\r
-#define USBFS_1_USB__SIE_EP3_CR0 CYREG_USB_SIE_EP3_CR0\r
-#define USBFS_1_USB__SIE_EP4_CNT0 CYREG_USB_SIE_EP4_CNT0\r
-#define USBFS_1_USB__SIE_EP4_CNT1 CYREG_USB_SIE_EP4_CNT1\r
-#define USBFS_1_USB__SIE_EP4_CR0 CYREG_USB_SIE_EP4_CR0\r
-#define USBFS_1_USB__SIE_EP5_CNT0 CYREG_USB_SIE_EP5_CNT0\r
-#define USBFS_1_USB__SIE_EP5_CNT1 CYREG_USB_SIE_EP5_CNT1\r
-#define USBFS_1_USB__SIE_EP5_CR0 CYREG_USB_SIE_EP5_CR0\r
-#define USBFS_1_USB__SIE_EP6_CNT0 CYREG_USB_SIE_EP6_CNT0\r
-#define USBFS_1_USB__SIE_EP6_CNT1 CYREG_USB_SIE_EP6_CNT1\r
-#define USBFS_1_USB__SIE_EP6_CR0 CYREG_USB_SIE_EP6_CR0\r
-#define USBFS_1_USB__SIE_EP7_CNT0 CYREG_USB_SIE_EP7_CNT0\r
-#define USBFS_1_USB__SIE_EP7_CNT1 CYREG_USB_SIE_EP7_CNT1\r
-#define USBFS_1_USB__SIE_EP7_CR0 CYREG_USB_SIE_EP7_CR0\r
-#define USBFS_1_USB__SIE_EP8_CNT0 CYREG_USB_SIE_EP8_CNT0\r
-#define USBFS_1_USB__SIE_EP8_CNT1 CYREG_USB_SIE_EP8_CNT1\r
-#define USBFS_1_USB__SIE_EP8_CR0 CYREG_USB_SIE_EP8_CR0\r
-#define USBFS_1_USB__SIE_EP_INT_EN CYREG_USB_SIE_EP_INT_EN\r
-#define USBFS_1_USB__SIE_EP_INT_SR CYREG_USB_SIE_EP_INT_SR\r
-#define USBFS_1_USB__SOF0 CYREG_USB_SOF0\r
-#define USBFS_1_USB__SOF1 CYREG_USB_SOF1\r
-#define USBFS_1_USB__USBIO_CR0 CYREG_USB_USBIO_CR0\r
-#define USBFS_1_USB__USBIO_CR1 CYREG_USB_USBIO_CR1\r
-#define USBFS_1_USB__USB_CLK_EN CYREG_USB_USB_CLK_EN\r
-\r
/* scsiTarget */\r
#define scsiTarget_StatusReg__0__MASK 0x01u\r
#define scsiTarget_StatusReg__0__POS 0\r
#define SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG CYREG_B0_UDB01_MSK\r
#define SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B0_UDB01_MSK_ACTL\r
\r
-/* USBFS_1_Dm */\r
-#define USBFS_1_Dm__0__MASK 0x80u\r
-#define USBFS_1_Dm__0__PC CYREG_IO_PC_PRT15_7_6_PC1\r
-#define USBFS_1_Dm__0__PORT 15u\r
-#define USBFS_1_Dm__0__SHIFT 7\r
-#define USBFS_1_Dm__AG CYREG_PRT15_AG\r
-#define USBFS_1_Dm__AMUX CYREG_PRT15_AMUX\r
-#define USBFS_1_Dm__BIE CYREG_PRT15_BIE\r
-#define USBFS_1_Dm__BIT_MASK CYREG_PRT15_BIT_MASK\r
-#define USBFS_1_Dm__BYP CYREG_PRT15_BYP\r
-#define USBFS_1_Dm__CTL CYREG_PRT15_CTL\r
-#define USBFS_1_Dm__DM0 CYREG_PRT15_DM0\r
-#define USBFS_1_Dm__DM1 CYREG_PRT15_DM1\r
-#define USBFS_1_Dm__DM2 CYREG_PRT15_DM2\r
-#define USBFS_1_Dm__DR CYREG_PRT15_DR\r
-#define USBFS_1_Dm__INP_DIS CYREG_PRT15_INP_DIS\r
-#define USBFS_1_Dm__LCD_COM_SEG CYREG_PRT15_LCD_COM_SEG\r
-#define USBFS_1_Dm__LCD_EN CYREG_PRT15_LCD_EN\r
-#define USBFS_1_Dm__MASK 0x80u\r
-#define USBFS_1_Dm__PORT 15u\r
-#define USBFS_1_Dm__PRT CYREG_PRT15_PRT\r
-#define USBFS_1_Dm__PRTDSI__CAPS_SEL CYREG_PRT15_CAPS_SEL\r
-#define USBFS_1_Dm__PRTDSI__DBL_SYNC_IN CYREG_PRT15_DBL_SYNC_IN\r
-#define USBFS_1_Dm__PRTDSI__OE_SEL0 CYREG_PRT15_OE_SEL0\r
-#define USBFS_1_Dm__PRTDSI__OE_SEL1 CYREG_PRT15_OE_SEL1\r
-#define USBFS_1_Dm__PRTDSI__OUT_SEL0 CYREG_PRT15_OUT_SEL0\r
-#define USBFS_1_Dm__PRTDSI__OUT_SEL1 CYREG_PRT15_OUT_SEL1\r
-#define USBFS_1_Dm__PRTDSI__SYNC_OUT CYREG_PRT15_SYNC_OUT\r
-#define USBFS_1_Dm__PS CYREG_PRT15_PS\r
-#define USBFS_1_Dm__SHIFT 7\r
-#define USBFS_1_Dm__SLW CYREG_PRT15_SLW\r
+/* USBFS_ep_0 */\r
+#define USBFS_ep_0__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
+#define USBFS_ep_0__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
+#define USBFS_ep_0__INTC_MASK 0x1000000u\r
+#define USBFS_ep_0__INTC_NUMBER 24u\r
+#define USBFS_ep_0__INTC_PRIOR_NUM 7u\r
+#define USBFS_ep_0__INTC_PRIOR_REG CYREG_NVIC_PRI_24\r
+#define USBFS_ep_0__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
+#define USBFS_ep_0__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
+\r
+/* USBFS_ep_1 */\r
+#define USBFS_ep_1__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
+#define USBFS_ep_1__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
+#define USBFS_ep_1__INTC_MASK 0x01u\r
+#define USBFS_ep_1__INTC_NUMBER 0u\r
+#define USBFS_ep_1__INTC_PRIOR_NUM 7u\r
+#define USBFS_ep_1__INTC_PRIOR_REG CYREG_NVIC_PRI_0\r
+#define USBFS_ep_1__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
+#define USBFS_ep_1__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_Dp */\r
-#define USBFS_1_Dp__0__MASK 0x40u\r
-#define USBFS_1_Dp__0__PC CYREG_IO_PC_PRT15_7_6_PC0\r
-#define USBFS_1_Dp__0__PORT 15u\r
-#define USBFS_1_Dp__0__SHIFT 6\r
-#define USBFS_1_Dp__AG CYREG_PRT15_AG\r
-#define USBFS_1_Dp__AMUX CYREG_PRT15_AMUX\r
-#define USBFS_1_Dp__BIE CYREG_PRT15_BIE\r
-#define USBFS_1_Dp__BIT_MASK CYREG_PRT15_BIT_MASK\r
-#define USBFS_1_Dp__BYP CYREG_PRT15_BYP\r
-#define USBFS_1_Dp__CTL CYREG_PRT15_CTL\r
-#define USBFS_1_Dp__DM0 CYREG_PRT15_DM0\r
-#define USBFS_1_Dp__DM1 CYREG_PRT15_DM1\r
-#define USBFS_1_Dp__DM2 CYREG_PRT15_DM2\r
-#define USBFS_1_Dp__DR CYREG_PRT15_DR\r
-#define USBFS_1_Dp__INP_DIS CYREG_PRT15_INP_DIS\r
-#define USBFS_1_Dp__INTSTAT CYREG_PICU15_INTSTAT\r
-#define USBFS_1_Dp__LCD_COM_SEG CYREG_PRT15_LCD_COM_SEG\r
-#define USBFS_1_Dp__LCD_EN CYREG_PRT15_LCD_EN\r
-#define USBFS_1_Dp__MASK 0x40u\r
-#define USBFS_1_Dp__PORT 15u\r
-#define USBFS_1_Dp__PRT CYREG_PRT15_PRT\r
-#define USBFS_1_Dp__PRTDSI__CAPS_SEL CYREG_PRT15_CAPS_SEL\r
-#define USBFS_1_Dp__PRTDSI__DBL_SYNC_IN CYREG_PRT15_DBL_SYNC_IN\r
-#define USBFS_1_Dp__PRTDSI__OE_SEL0 CYREG_PRT15_OE_SEL0\r
-#define USBFS_1_Dp__PRTDSI__OE_SEL1 CYREG_PRT15_OE_SEL1\r
-#define USBFS_1_Dp__PRTDSI__OUT_SEL0 CYREG_PRT15_OUT_SEL0\r
-#define USBFS_1_Dp__PRTDSI__OUT_SEL1 CYREG_PRT15_OUT_SEL1\r
-#define USBFS_1_Dp__PRTDSI__SYNC_OUT CYREG_PRT15_SYNC_OUT\r
-#define USBFS_1_Dp__PS CYREG_PRT15_PS\r
-#define USBFS_1_Dp__SHIFT 6\r
-#define USBFS_1_Dp__SLW CYREG_PRT15_SLW\r
-#define USBFS_1_Dp__SNAP CYREG_PICU_15_SNAP_15\r
+/* USBFS_ep_2 */\r
+#define USBFS_ep_2__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0\r
+#define USBFS_ep_2__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0\r
+#define USBFS_ep_2__INTC_MASK 0x02u\r
+#define USBFS_ep_2__INTC_NUMBER 1u\r
+#define USBFS_ep_2__INTC_PRIOR_NUM 7u\r
+#define USBFS_ep_2__INTC_PRIOR_REG CYREG_NVIC_PRI_1\r
+#define USBFS_ep_2__INTC_SET_EN_REG CYREG_NVIC_SETENA0\r
+#define USBFS_ep_2__INTC_SET_PD_REG CYREG_NVIC_SETPEND0\r
+\r
+/* USBFS_USB */\r
+#define USBFS_USB__ARB_CFG CYREG_USB_ARB_CFG\r
+#define USBFS_USB__ARB_EP1_CFG CYREG_USB_ARB_EP1_CFG\r
+#define USBFS_USB__ARB_EP1_INT_EN CYREG_USB_ARB_EP1_INT_EN\r
+#define USBFS_USB__ARB_EP1_SR CYREG_USB_ARB_EP1_SR\r
+#define USBFS_USB__ARB_EP2_CFG CYREG_USB_ARB_EP2_CFG\r
+#define USBFS_USB__ARB_EP2_INT_EN CYREG_USB_ARB_EP2_INT_EN\r
+#define USBFS_USB__ARB_EP2_SR CYREG_USB_ARB_EP2_SR\r
+#define USBFS_USB__ARB_EP3_CFG CYREG_USB_ARB_EP3_CFG\r
+#define USBFS_USB__ARB_EP3_INT_EN CYREG_USB_ARB_EP3_INT_EN\r
+#define USBFS_USB__ARB_EP3_SR CYREG_USB_ARB_EP3_SR\r
+#define USBFS_USB__ARB_EP4_CFG CYREG_USB_ARB_EP4_CFG\r
+#define USBFS_USB__ARB_EP4_INT_EN CYREG_USB_ARB_EP4_INT_EN\r
+#define USBFS_USB__ARB_EP4_SR CYREG_USB_ARB_EP4_SR\r
+#define USBFS_USB__ARB_EP5_CFG CYREG_USB_ARB_EP5_CFG\r
+#define USBFS_USB__ARB_EP5_INT_EN CYREG_USB_ARB_EP5_INT_EN\r
+#define USBFS_USB__ARB_EP5_SR CYREG_USB_ARB_EP5_SR\r
+#define USBFS_USB__ARB_EP6_CFG CYREG_USB_ARB_EP6_CFG\r
+#define USBFS_USB__ARB_EP6_INT_EN CYREG_USB_ARB_EP6_INT_EN\r
+#define USBFS_USB__ARB_EP6_SR CYREG_USB_ARB_EP6_SR\r
+#define USBFS_USB__ARB_EP7_CFG CYREG_USB_ARB_EP7_CFG\r
+#define USBFS_USB__ARB_EP7_INT_EN CYREG_USB_ARB_EP7_INT_EN\r
+#define USBFS_USB__ARB_EP7_SR CYREG_USB_ARB_EP7_SR\r
+#define USBFS_USB__ARB_EP8_CFG CYREG_USB_ARB_EP8_CFG\r
+#define USBFS_USB__ARB_EP8_INT_EN CYREG_USB_ARB_EP8_INT_EN\r
+#define USBFS_USB__ARB_EP8_SR CYREG_USB_ARB_EP8_SR\r
+#define USBFS_USB__ARB_INT_EN CYREG_USB_ARB_INT_EN\r
+#define USBFS_USB__ARB_INT_SR CYREG_USB_ARB_INT_SR\r
+#define USBFS_USB__ARB_RW1_DR CYREG_USB_ARB_RW1_DR\r
+#define USBFS_USB__ARB_RW1_RA CYREG_USB_ARB_RW1_RA\r
+#define USBFS_USB__ARB_RW1_RA_MSB CYREG_USB_ARB_RW1_RA_MSB\r
+#define USBFS_USB__ARB_RW1_WA CYREG_USB_ARB_RW1_WA\r
+#define USBFS_USB__ARB_RW1_WA_MSB CYREG_USB_ARB_RW1_WA_MSB\r
+#define USBFS_USB__ARB_RW2_DR CYREG_USB_ARB_RW2_DR\r
+#define USBFS_USB__ARB_RW2_RA CYREG_USB_ARB_RW2_RA\r
+#define USBFS_USB__ARB_RW2_RA_MSB CYREG_USB_ARB_RW2_RA_MSB\r
+#define USBFS_USB__ARB_RW2_WA CYREG_USB_ARB_RW2_WA\r
+#define USBFS_USB__ARB_RW2_WA_MSB CYREG_USB_ARB_RW2_WA_MSB\r
+#define USBFS_USB__ARB_RW3_DR CYREG_USB_ARB_RW3_DR\r
+#define USBFS_USB__ARB_RW3_RA CYREG_USB_ARB_RW3_RA\r
+#define USBFS_USB__ARB_RW3_RA_MSB CYREG_USB_ARB_RW3_RA_MSB\r
+#define USBFS_USB__ARB_RW3_WA CYREG_USB_ARB_RW3_WA\r
+#define USBFS_USB__ARB_RW3_WA_MSB CYREG_USB_ARB_RW3_WA_MSB\r
+#define USBFS_USB__ARB_RW4_DR CYREG_USB_ARB_RW4_DR\r
+#define USBFS_USB__ARB_RW4_RA CYREG_USB_ARB_RW4_RA\r
+#define USBFS_USB__ARB_RW4_RA_MSB CYREG_USB_ARB_RW4_RA_MSB\r
+#define USBFS_USB__ARB_RW4_WA CYREG_USB_ARB_RW4_WA\r
+#define USBFS_USB__ARB_RW4_WA_MSB CYREG_USB_ARB_RW4_WA_MSB\r
+#define USBFS_USB__ARB_RW5_DR CYREG_USB_ARB_RW5_DR\r
+#define USBFS_USB__ARB_RW5_RA CYREG_USB_ARB_RW5_RA\r
+#define USBFS_USB__ARB_RW5_RA_MSB CYREG_USB_ARB_RW5_RA_MSB\r
+#define USBFS_USB__ARB_RW5_WA CYREG_USB_ARB_RW5_WA\r
+#define USBFS_USB__ARB_RW5_WA_MSB CYREG_USB_ARB_RW5_WA_MSB\r
+#define USBFS_USB__ARB_RW6_DR CYREG_USB_ARB_RW6_DR\r
+#define USBFS_USB__ARB_RW6_RA CYREG_USB_ARB_RW6_RA\r
+#define USBFS_USB__ARB_RW6_RA_MSB CYREG_USB_ARB_RW6_RA_MSB\r
+#define USBFS_USB__ARB_RW6_WA CYREG_USB_ARB_RW6_WA\r
+#define USBFS_USB__ARB_RW6_WA_MSB CYREG_USB_ARB_RW6_WA_MSB\r
+#define USBFS_USB__ARB_RW7_DR CYREG_USB_ARB_RW7_DR\r
+#define USBFS_USB__ARB_RW7_RA CYREG_USB_ARB_RW7_RA\r
+#define USBFS_USB__ARB_RW7_RA_MSB CYREG_USB_ARB_RW7_RA_MSB\r
+#define USBFS_USB__ARB_RW7_WA CYREG_USB_ARB_RW7_WA\r
+#define USBFS_USB__ARB_RW7_WA_MSB CYREG_USB_ARB_RW7_WA_MSB\r
+#define USBFS_USB__ARB_RW8_DR CYREG_USB_ARB_RW8_DR\r
+#define USBFS_USB__ARB_RW8_RA CYREG_USB_ARB_RW8_RA\r
+#define USBFS_USB__ARB_RW8_RA_MSB CYREG_USB_ARB_RW8_RA_MSB\r
+#define USBFS_USB__ARB_RW8_WA CYREG_USB_ARB_RW8_WA\r
+#define USBFS_USB__ARB_RW8_WA_MSB CYREG_USB_ARB_RW8_WA_MSB\r
+#define USBFS_USB__BUF_SIZE CYREG_USB_BUF_SIZE\r
+#define USBFS_USB__BUS_RST_CNT CYREG_USB_BUS_RST_CNT\r
+#define USBFS_USB__CR0 CYREG_USB_CR0\r
+#define USBFS_USB__CR1 CYREG_USB_CR1\r
+#define USBFS_USB__CWA CYREG_USB_CWA\r
+#define USBFS_USB__CWA_MSB CYREG_USB_CWA_MSB\r
+#define USBFS_USB__DMA_THRES CYREG_USB_DMA_THRES\r
+#define USBFS_USB__DMA_THRES_MSB CYREG_USB_DMA_THRES_MSB\r
+#define USBFS_USB__DYN_RECONFIG CYREG_USB_DYN_RECONFIG\r
+#define USBFS_USB__EP0_CNT CYREG_USB_EP0_CNT\r
+#define USBFS_USB__EP0_CR CYREG_USB_EP0_CR\r
+#define USBFS_USB__EP0_DR0 CYREG_USB_EP0_DR0\r
+#define USBFS_USB__EP0_DR1 CYREG_USB_EP0_DR1\r
+#define USBFS_USB__EP0_DR2 CYREG_USB_EP0_DR2\r
+#define USBFS_USB__EP0_DR3 CYREG_USB_EP0_DR3\r
+#define USBFS_USB__EP0_DR4 CYREG_USB_EP0_DR4\r
+#define USBFS_USB__EP0_DR5 CYREG_USB_EP0_DR5\r
+#define USBFS_USB__EP0_DR6 CYREG_USB_EP0_DR6\r
+#define USBFS_USB__EP0_DR7 CYREG_USB_EP0_DR7\r
+#define USBFS_USB__EP_ACTIVE CYREG_USB_EP_ACTIVE\r
+#define USBFS_USB__EP_TYPE CYREG_USB_EP_TYPE\r
+#define USBFS_USB__MEM_DATA CYREG_USB_MEM_DATA_MBASE\r
+#define USBFS_USB__PM_ACT_CFG CYREG_PM_ACT_CFG5\r
+#define USBFS_USB__PM_ACT_MSK 0x01u\r
+#define USBFS_USB__PM_STBY_CFG CYREG_PM_STBY_CFG5\r
+#define USBFS_USB__PM_STBY_MSK 0x01u\r
+#define USBFS_USB__SIE_EP1_CNT0 CYREG_USB_SIE_EP1_CNT0\r
+#define USBFS_USB__SIE_EP1_CNT1 CYREG_USB_SIE_EP1_CNT1\r
+#define USBFS_USB__SIE_EP1_CR0 CYREG_USB_SIE_EP1_CR0\r
+#define USBFS_USB__SIE_EP2_CNT0 CYREG_USB_SIE_EP2_CNT0\r
+#define USBFS_USB__SIE_EP2_CNT1 CYREG_USB_SIE_EP2_CNT1\r
+#define USBFS_USB__SIE_EP2_CR0 CYREG_USB_SIE_EP2_CR0\r
+#define USBFS_USB__SIE_EP3_CNT0 CYREG_USB_SIE_EP3_CNT0\r
+#define USBFS_USB__SIE_EP3_CNT1 CYREG_USB_SIE_EP3_CNT1\r
+#define USBFS_USB__SIE_EP3_CR0 CYREG_USB_SIE_EP3_CR0\r
+#define USBFS_USB__SIE_EP4_CNT0 CYREG_USB_SIE_EP4_CNT0\r
+#define USBFS_USB__SIE_EP4_CNT1 CYREG_USB_SIE_EP4_CNT1\r
+#define USBFS_USB__SIE_EP4_CR0 CYREG_USB_SIE_EP4_CR0\r
+#define USBFS_USB__SIE_EP5_CNT0 CYREG_USB_SIE_EP5_CNT0\r
+#define USBFS_USB__SIE_EP5_CNT1 CYREG_USB_SIE_EP5_CNT1\r
+#define USBFS_USB__SIE_EP5_CR0 CYREG_USB_SIE_EP5_CR0\r
+#define USBFS_USB__SIE_EP6_CNT0 CYREG_USB_SIE_EP6_CNT0\r
+#define USBFS_USB__SIE_EP6_CNT1 CYREG_USB_SIE_EP6_CNT1\r
+#define USBFS_USB__SIE_EP6_CR0 CYREG_USB_SIE_EP6_CR0\r
+#define USBFS_USB__SIE_EP7_CNT0 CYREG_USB_SIE_EP7_CNT0\r
+#define USBFS_USB__SIE_EP7_CNT1 CYREG_USB_SIE_EP7_CNT1\r
+#define USBFS_USB__SIE_EP7_CR0 CYREG_USB_SIE_EP7_CR0\r
+#define USBFS_USB__SIE_EP8_CNT0 CYREG_USB_SIE_EP8_CNT0\r
+#define USBFS_USB__SIE_EP8_CNT1 CYREG_USB_SIE_EP8_CNT1\r
+#define USBFS_USB__SIE_EP8_CR0 CYREG_USB_SIE_EP8_CR0\r
+#define USBFS_USB__SIE_EP_INT_EN CYREG_USB_SIE_EP_INT_EN\r
+#define USBFS_USB__SIE_EP_INT_SR CYREG_USB_SIE_EP_INT_SR\r
+#define USBFS_USB__SOF0 CYREG_USB_SOF0\r
+#define USBFS_USB__SOF1 CYREG_USB_SOF1\r
+#define USBFS_USB__USBIO_CR0 CYREG_USB_USBIO_CR0\r
+#define USBFS_USB__USBIO_CR1 CYREG_USB_USBIO_CR1\r
+#define USBFS_USB__USB_CLK_EN CYREG_USB_USB_CLK_EN\r
\r
/* SCSI_ATN */\r
#define SCSI_ATN__0__MASK 0x20u\r
#define SCSI_RST__SLW CYREG_PRT6_SLW\r
#define SCSI_RST__SNAP CYREG_PICU6_SNAP\r
\r
+/* USBFS_Dm */\r
+#define USBFS_Dm__0__MASK 0x80u\r
+#define USBFS_Dm__0__PC CYREG_IO_PC_PRT15_7_6_PC1\r
+#define USBFS_Dm__0__PORT 15u\r
+#define USBFS_Dm__0__SHIFT 7\r
+#define USBFS_Dm__AG CYREG_PRT15_AG\r
+#define USBFS_Dm__AMUX CYREG_PRT15_AMUX\r
+#define USBFS_Dm__BIE CYREG_PRT15_BIE\r
+#define USBFS_Dm__BIT_MASK CYREG_PRT15_BIT_MASK\r
+#define USBFS_Dm__BYP CYREG_PRT15_BYP\r
+#define USBFS_Dm__CTL CYREG_PRT15_CTL\r
+#define USBFS_Dm__DM0 CYREG_PRT15_DM0\r
+#define USBFS_Dm__DM1 CYREG_PRT15_DM1\r
+#define USBFS_Dm__DM2 CYREG_PRT15_DM2\r
+#define USBFS_Dm__DR CYREG_PRT15_DR\r
+#define USBFS_Dm__INP_DIS CYREG_PRT15_INP_DIS\r
+#define USBFS_Dm__LCD_COM_SEG CYREG_PRT15_LCD_COM_SEG\r
+#define USBFS_Dm__LCD_EN CYREG_PRT15_LCD_EN\r
+#define USBFS_Dm__MASK 0x80u\r
+#define USBFS_Dm__PORT 15u\r
+#define USBFS_Dm__PRT CYREG_PRT15_PRT\r
+#define USBFS_Dm__PRTDSI__CAPS_SEL CYREG_PRT15_CAPS_SEL\r
+#define USBFS_Dm__PRTDSI__DBL_SYNC_IN CYREG_PRT15_DBL_SYNC_IN\r
+#define USBFS_Dm__PRTDSI__OE_SEL0 CYREG_PRT15_OE_SEL0\r
+#define USBFS_Dm__PRTDSI__OE_SEL1 CYREG_PRT15_OE_SEL1\r
+#define USBFS_Dm__PRTDSI__OUT_SEL0 CYREG_PRT15_OUT_SEL0\r
+#define USBFS_Dm__PRTDSI__OUT_SEL1 CYREG_PRT15_OUT_SEL1\r
+#define USBFS_Dm__PRTDSI__SYNC_OUT CYREG_PRT15_SYNC_OUT\r
+#define USBFS_Dm__PS CYREG_PRT15_PS\r
+#define USBFS_Dm__SHIFT 7\r
+#define USBFS_Dm__SLW CYREG_PRT15_SLW\r
+\r
+/* USBFS_Dp */\r
+#define USBFS_Dp__0__MASK 0x40u\r
+#define USBFS_Dp__0__PC CYREG_IO_PC_PRT15_7_6_PC0\r
+#define USBFS_Dp__0__PORT 15u\r
+#define USBFS_Dp__0__SHIFT 6\r
+#define USBFS_Dp__AG CYREG_PRT15_AG\r
+#define USBFS_Dp__AMUX CYREG_PRT15_AMUX\r
+#define USBFS_Dp__BIE CYREG_PRT15_BIE\r
+#define USBFS_Dp__BIT_MASK CYREG_PRT15_BIT_MASK\r
+#define USBFS_Dp__BYP CYREG_PRT15_BYP\r
+#define USBFS_Dp__CTL CYREG_PRT15_CTL\r
+#define USBFS_Dp__DM0 CYREG_PRT15_DM0\r
+#define USBFS_Dp__DM1 CYREG_PRT15_DM1\r
+#define USBFS_Dp__DM2 CYREG_PRT15_DM2\r
+#define USBFS_Dp__DR CYREG_PRT15_DR\r
+#define USBFS_Dp__INP_DIS CYREG_PRT15_INP_DIS\r
+#define USBFS_Dp__INTSTAT CYREG_PICU15_INTSTAT\r
+#define USBFS_Dp__LCD_COM_SEG CYREG_PRT15_LCD_COM_SEG\r
+#define USBFS_Dp__LCD_EN CYREG_PRT15_LCD_EN\r
+#define USBFS_Dp__MASK 0x40u\r
+#define USBFS_Dp__PORT 15u\r
+#define USBFS_Dp__PRT CYREG_PRT15_PRT\r
+#define USBFS_Dp__PRTDSI__CAPS_SEL CYREG_PRT15_CAPS_SEL\r
+#define USBFS_Dp__PRTDSI__DBL_SYNC_IN CYREG_PRT15_DBL_SYNC_IN\r
+#define USBFS_Dp__PRTDSI__OE_SEL0 CYREG_PRT15_OE_SEL0\r
+#define USBFS_Dp__PRTDSI__OE_SEL1 CYREG_PRT15_OE_SEL1\r
+#define USBFS_Dp__PRTDSI__OUT_SEL0 CYREG_PRT15_OUT_SEL0\r
+#define USBFS_Dp__PRTDSI__OUT_SEL1 CYREG_PRT15_OUT_SEL1\r
+#define USBFS_Dp__PRTDSI__SYNC_OUT CYREG_PRT15_SYNC_OUT\r
+#define USBFS_Dp__PS CYREG_PRT15_PS\r
+#define USBFS_Dp__SHIFT 6\r
+#define USBFS_Dp__SLW CYREG_PRT15_SLW\r
+#define USBFS_Dp__SNAP CYREG_PICU_15_SNAP_15\r
+\r
/* SCSI_In */\r
#define SCSI_In__0__AG CYREG_PRT2_AG\r
#define SCSI_In__0__AMUX CYREG_PRT2_AMUX\r
0x40005209u, /* Base address: 0x40005200 Count: 9 */\r
0x40006402u, /* Base address: 0x40006400 Count: 2 */\r
0x40010044u, /* Base address: 0x40010000 Count: 68 */\r
- 0x40010136u, /* Base address: 0x40010100 Count: 54 */\r
+ 0x40010135u, /* Base address: 0x40010100 Count: 53 */\r
0x4001023Eu, /* Base address: 0x40010200 Count: 62 */\r
- 0x4001034Eu, /* Base address: 0x40010300 Count: 78 */\r
+ 0x40010350u, /* Base address: 0x40010300 Count: 80 */\r
0x4001044Bu, /* Base address: 0x40010400 Count: 75 */\r
- 0x40010557u, /* Base address: 0x40010500 Count: 87 */\r
+ 0x40010554u, /* Base address: 0x40010500 Count: 84 */\r
0x40010605u, /* Base address: 0x40010600 Count: 5 */\r
- 0x4001074Au, /* Base address: 0x40010700 Count: 74 */\r
- 0x40010914u, /* Base address: 0x40010900 Count: 20 */\r
+ 0x4001074Bu, /* Base address: 0x40010700 Count: 75 */\r
+ 0x40010911u, /* Base address: 0x40010900 Count: 17 */\r
0x40010A37u, /* Base address: 0x40010A00 Count: 55 */\r
- 0x40010B38u, /* Base address: 0x40010B00 Count: 56 */\r
+ 0x40010B35u, /* Base address: 0x40010B00 Count: 53 */\r
0x40010D0Fu, /* Base address: 0x40010D00 Count: 15 */\r
0x40010F02u, /* Base address: 0x40010F00 Count: 2 */\r
- 0x40011505u, /* Base address: 0x40011500 Count: 5 */\r
+ 0x40011504u, /* Base address: 0x40011500 Count: 4 */\r
0x40011642u, /* Base address: 0x40011600 Count: 66 */\r
- 0x40011744u, /* Base address: 0x40011700 Count: 68 */\r
+ 0x40011747u, /* Base address: 0x40011700 Count: 71 */\r
0x40011908u, /* Base address: 0x40011900 Count: 8 */\r
- 0x40011B04u, /* Base address: 0x40011B00 Count: 4 */\r
- 0x4001400Eu, /* Base address: 0x40014000 Count: 14 */\r
- 0x4001410Eu, /* Base address: 0x40014100 Count: 14 */\r
- 0x40014205u, /* Base address: 0x40014200 Count: 5 */\r
- 0x40014305u, /* Base address: 0x40014300 Count: 5 */\r
+ 0x40011B05u, /* Base address: 0x40011B00 Count: 5 */\r
+ 0x4001400Fu, /* Base address: 0x40014000 Count: 15 */\r
+ 0x4001410Du, /* Base address: 0x40014100 Count: 13 */\r
+ 0x40014206u, /* Base address: 0x40014200 Count: 6 */\r
+ 0x40014308u, /* Base address: 0x40014300 Count: 8 */\r
0x4001440Au, /* Base address: 0x40014400 Count: 10 */\r
- 0x40014516u, /* Base address: 0x40014500 Count: 22 */\r
- 0x40014608u, /* Base address: 0x40014600 Count: 8 */\r
- 0x40014708u, /* Base address: 0x40014700 Count: 8 */\r
- 0x40014808u, /* Base address: 0x40014800 Count: 8 */\r
- 0x4001490Cu, /* Base address: 0x40014900 Count: 12 */\r
- 0x40014C01u, /* Base address: 0x40014C00 Count: 1 */\r
+ 0x40014514u, /* Base address: 0x40014500 Count: 20 */\r
+ 0x40014609u, /* Base address: 0x40014600 Count: 9 */\r
+ 0x40014709u, /* Base address: 0x40014700 Count: 9 */\r
+ 0x4001480Bu, /* Base address: 0x40014800 Count: 11 */\r
+ 0x40014907u, /* Base address: 0x40014900 Count: 7 */\r
+ 0x40014C02u, /* Base address: 0x40014C00 Count: 2 */\r
0x40015006u, /* Base address: 0x40015000 Count: 6 */\r
0x40015101u, /* Base address: 0x40015100 Count: 1 */\r
};\r
{0x65u, 0x02u},\r
{0x7Eu, 0x02u},\r
{0x01u, 0x01u},\r
- {0x18u, 0x04u},\r
+ {0x18u, 0x0Cu},\r
{0x19u, 0x04u},\r
{0x1Cu, 0x61u},\r
{0x20u, 0x50u},\r
{0x7Cu, 0x40u},\r
{0x33u, 0x03u},\r
{0x87u, 0x0Fu},\r
+ {0x00u, 0x0Du},\r
{0x03u, 0x04u},\r
{0x04u, 0x01u},\r
{0x06u, 0x32u},\r
{0x0Du, 0x24u},\r
{0x0Eu, 0x10u},\r
{0x0Fu, 0x09u},\r
- {0x10u, 0x0Du},\r
{0x14u, 0x62u},\r
{0x16u, 0x08u},\r
{0x1Bu, 0x03u},\r
{0x5Bu, 0x04u},\r
{0x5Cu, 0x99u},\r
{0x5Fu, 0x01u},\r
- {0x82u, 0x80u},\r
+ {0x80u, 0x24u},\r
+ {0x82u, 0x09u},\r
+ {0x85u, 0x08u},\r
+ {0x87u, 0x04u},\r
{0x8Au, 0x18u},\r
{0x8Bu, 0x09u},\r
{0x8Eu, 0x03u},\r
- {0x91u, 0x08u},\r
- {0x93u, 0x03u},\r
{0x96u, 0x24u},\r
{0x98u, 0x24u},\r
- {0x99u, 0x08u},\r
{0x9Au, 0x12u},\r
- {0x9Bu, 0x04u},\r
{0x9Eu, 0x20u},\r
{0x9Fu, 0x06u},\r
- {0xA0u, 0x24u},\r
- {0xA2u, 0x09u},\r
+ {0xA1u, 0x08u},\r
+ {0xA2u, 0x80u},\r
+ {0xA3u, 0x03u},\r
{0xA6u, 0x04u},\r
{0xAAu, 0x40u},\r
{0xACu, 0x40u},\r
{0xAFu, 0x08u},\r
{0xB0u, 0xC0u},\r
{0xB1u, 0x0Eu},\r
- {0xB3u, 0x01u},\r
{0xB4u, 0x38u},\r
+ {0xB5u, 0x01u},\r
{0xB6u, 0x07u},\r
{0xBEu, 0x01u},\r
- {0xBFu, 0x04u},\r
+ {0xBFu, 0x10u},\r
{0xD8u, 0x04u},\r
{0xD9u, 0x04u},\r
{0xDBu, 0x04u},\r
{0xDCu, 0x99u},\r
{0xDFu, 0x01u},\r
- {0x00u, 0x40u},\r
- {0x02u, 0x08u},\r
- {0x03u, 0x20u},\r
+ {0x00u, 0x60u},\r
+ {0x03u, 0x60u},\r
{0x05u, 0x50u},\r
- {0x06u, 0x80u},\r
- {0x08u, 0x01u},\r
+ {0x06u, 0x40u},\r
+ {0x07u, 0x04u},\r
{0x0Au, 0x22u},\r
{0x0Du, 0x14u},\r
{0x0Eu, 0x01u},\r
- {0x10u, 0xA0u},\r
- {0x11u, 0x10u},\r
- {0x13u, 0x40u},\r
+ {0x11u, 0x14u},\r
+ {0x13u, 0x41u},\r
{0x15u, 0x40u},\r
- {0x16u, 0x28u},\r
- {0x17u, 0x01u},\r
+ {0x16u, 0xA4u},\r
{0x18u, 0x40u},\r
{0x1Au, 0x02u},\r
{0x1Du, 0x50u},\r
- {0x1Eu, 0x44u},\r
+ {0x1Eu, 0x40u},\r
{0x21u, 0x20u},\r
{0x22u, 0x84u},\r
{0x23u, 0x08u},\r
- {0x27u, 0xA0u},\r
+ {0x25u, 0x10u},\r
+ {0x27u, 0x80u},\r
{0x29u, 0x01u},\r
- {0x2Au, 0x10u},\r
+ {0x2Bu, 0x04u},\r
{0x2Cu, 0x02u},\r
+ {0x2Fu, 0x40u},\r
{0x31u, 0x20u},\r
{0x32u, 0x80u},\r
- {0x36u, 0x21u},\r
- {0x37u, 0x81u},\r
+ {0x37u, 0x80u},\r
{0x39u, 0x28u},\r
- {0x3Au, 0x02u},\r
+ {0x3Au, 0x42u},\r
{0x3Bu, 0x80u},\r
- {0x3Cu, 0x20u},\r
+ {0x3Cu, 0x10u},\r
+ {0x3Fu, 0x04u},\r
{0x58u, 0x84u},\r
{0x59u, 0x02u},\r
{0x5Bu, 0x10u},\r
{0x80u, 0x40u},\r
{0x81u, 0x20u},\r
{0x86u, 0x80u},\r
- {0xC0u, 0xD7u},\r
- {0xC2u, 0xEDu},\r
+ {0xC0u, 0xDFu},\r
+ {0xC2u, 0xE5u},\r
{0xC4u, 0xFFu},\r
- {0xCAu, 0x15u},\r
- {0xCCu, 0xBCu},\r
- {0xCEu, 0x2Fu},\r
+ {0xCAu, 0x95u},\r
+ {0xCCu, 0x1Cu},\r
+ {0xCEu, 0x6Fu},\r
{0xD6u, 0x0Fu},\r
{0xDEu, 0x01u},\r
{0xE0u, 0x04u},\r
{0xE4u, 0x08u},\r
+ {0x0Cu, 0x01u},\r
{0x14u, 0x01u},\r
{0x18u, 0x02u},\r
- {0x1Cu, 0x01u},\r
{0x2Eu, 0x01u},\r
{0x36u, 0x03u},\r
{0x3Au, 0xC0u},\r
{0x86u, 0x69u},\r
{0x87u, 0x2Du},\r
{0x89u, 0x67u},\r
+ {0x8Au, 0xFFu},\r
{0x8Bu, 0x18u},\r
{0x8Cu, 0x33u},\r
{0x8Du, 0x02u},\r
{0x8Eu, 0xCCu},\r
{0x94u, 0x55u},\r
{0x96u, 0xAAu},\r
- {0x9Au, 0xFFu},\r
- {0x9Du, 0x02u},\r
+ {0x9Bu, 0x40u},\r
{0xA0u, 0x0Fu},\r
- {0xA1u, 0x16u},\r
+ {0xA1u, 0x02u},\r
{0xA2u, 0xF0u},\r
- {0xA3u, 0x48u},\r
{0xA4u, 0xFFu},\r
- {0xA7u, 0x40u},\r
- {0xADu, 0x01u},\r
+ {0xA5u, 0x01u},\r
+ {0xA7u, 0x02u},\r
+ {0xADu, 0x16u},\r
{0xAEu, 0xFFu},\r
- {0xAFu, 0x02u},\r
+ {0xAFu, 0x48u},\r
{0xB1u, 0x08u},\r
- {0xB2u, 0xFFu},\r
{0xB3u, 0x70u},\r
{0xB5u, 0x07u},\r
- {0xBEu, 0x04u},\r
+ {0xB6u, 0xFFu},\r
+ {0xBEu, 0x40u},\r
{0xBFu, 0x01u},\r
{0xC0u, 0x32u},\r
{0xC1u, 0x05u},\r
{0xEEu, 0x08u},\r
{0x01u, 0x80u},\r
{0x02u, 0x10u},\r
- {0x09u, 0x08u},\r
- {0x0Au, 0x04u},\r
- {0x0Du, 0x10u},\r
- {0x0Eu, 0x02u},\r
- {0x0Fu, 0x10u},\r
+ {0x03u, 0x04u},\r
+ {0x04u, 0x08u},\r
+ {0x05u, 0x40u},\r
+ {0x07u, 0x10u},\r
+ {0x0Au, 0x10u},\r
+ {0x0Fu, 0x14u},\r
{0x11u, 0x40u},\r
{0x13u, 0x0Au},\r
{0x15u, 0x40u},\r
- {0x16u, 0x04u},\r
- {0x17u, 0x10u},\r
- {0x1Bu, 0x08u},\r
+ {0x1Bu, 0x80u},\r
+ {0x1Du, 0x40u},\r
{0x1Eu, 0x02u},\r
- {0x1Fu, 0xC0u},\r
- {0x20u, 0x60u},\r
+ {0x1Fu, 0x40u},\r
+ {0x20u, 0x50u},\r
{0x21u, 0x14u},\r
- {0x22u, 0x20u},\r
- {0x23u, 0x10u},\r
- {0x29u, 0x04u},\r
- {0x2Bu, 0x82u},\r
- {0x32u, 0x80u},\r
+ {0x23u, 0x14u},\r
+ {0x29u, 0x42u},\r
+ {0x2Au, 0x08u},\r
+ {0x30u, 0x20u},\r
{0x38u, 0x80u},\r
{0x39u, 0x28u},\r
- {0x40u, 0x40u},\r
- {0x41u, 0x14u},\r
- {0x49u, 0x06u},\r
- {0x4Au, 0x81u},\r
- {0x50u, 0x40u},\r
- {0x52u, 0x44u},\r
+ {0x40u, 0x50u},\r
+ {0x41u, 0x10u},\r
+ {0x48u, 0x20u},\r
+ {0x49u, 0x02u},\r
+ {0x4Au, 0x01u},\r
+ {0x50u, 0x44u},\r
+ {0x52u, 0x40u},\r
{0x53u, 0x01u},\r
{0x58u, 0x50u},\r
- {0x5Au, 0x08u},\r
- {0x5Bu, 0x01u},\r
- {0x60u, 0x18u},\r
+ {0x5Au, 0x0Au},\r
+ {0x60u, 0x08u},\r
+ {0x61u, 0x08u},\r
{0x63u, 0x82u},\r
{0x68u, 0x06u},\r
{0x6Au, 0x01u},\r
{0x71u, 0x21u},\r
{0x72u, 0x22u},\r
{0x81u, 0x40u},\r
- {0x83u, 0x40u},\r
- {0x87u, 0x01u},\r
- {0x88u, 0x10u},\r
- {0x8Bu, 0x02u},\r
- {0x8Du, 0x10u},\r
- {0x8Eu, 0x10u},\r
- {0x92u, 0x4Cu},\r
- {0x95u, 0x38u},\r
+ {0x82u, 0x80u},\r
+ {0x83u, 0x42u},\r
+ {0x86u, 0x08u},\r
+ {0x89u, 0x08u},\r
+ {0x8Au, 0x01u},\r
+ {0x8Fu, 0x08u},\r
+ {0x92u, 0x48u},\r
+ {0x94u, 0x10u},\r
+ {0x95u, 0x3Cu},\r
{0x96u, 0x21u},\r
- {0x97u, 0xC2u},\r
- {0x99u, 0x10u},\r
- {0x9Bu, 0x88u},\r
- {0x9Cu, 0x07u},\r
+ {0x97u, 0xC7u},\r
+ {0x9Bu, 0x8Cu},\r
+ {0x9Cu, 0x06u},\r
{0x9Du, 0x03u},\r
- {0x9Eu, 0xAAu},\r
- {0x9Fu, 0x10u},\r
- {0xA4u, 0xB2u},\r
- {0xA6u, 0x29u},\r
+ {0x9Eu, 0xA6u},\r
+ {0x9Fu, 0x50u},\r
+ {0xA1u, 0x10u},\r
+ {0xA4u, 0x12u},\r
{0xA7u, 0x20u},\r
+ {0xABu, 0x04u},\r
{0xADu, 0x40u},\r
- {0xAFu, 0x20u},\r
- {0xB2u, 0x10u},\r
- {0xC0u, 0x05u},\r
- {0xC2u, 0xE6u},\r
+ {0xB5u, 0x10u},\r
+ {0xC0u, 0x87u},\r
+ {0xC2u, 0x64u},\r
{0xC4u, 0x8Du},\r
{0xCAu, 0x0Bu},\r
- {0xCCu, 0x08u},\r
+ {0xCCu, 0x04u},\r
{0xCEu, 0x0Eu},\r
{0xD0u, 0x07u},\r
{0xD2u, 0x08u},\r
{0xD6u, 0x0Fu},\r
{0xD8u, 0x0Fu},\r
- {0xE2u, 0x06u},\r
- {0xE6u, 0x10u},\r
+ {0xE2u, 0x14u},\r
+ {0xE4u, 0x01u},\r
+ {0xE6u, 0x02u},\r
{0xECu, 0x08u},\r
+ {0xEEu, 0x04u},\r
+ {0x00u, 0x40u},\r
{0x03u, 0x04u},\r
{0x06u, 0x04u},\r
{0x07u, 0x30u},\r
- {0x08u, 0x40u},\r
{0x09u, 0x41u},\r
{0x0Eu, 0x03u},\r
{0x0Fu, 0x41u},\r
- {0x10u, 0x24u},\r
- {0x11u, 0x41u},\r
- {0x12u, 0x09u},\r
- {0x15u, 0x12u},\r
- {0x16u, 0x18u},\r
- {0x17u, 0x0Du},\r
+ {0x11u, 0x23u},\r
+ {0x12u, 0x18u},\r
+ {0x13u, 0x0Cu},\r
+ {0x14u, 0x40u},\r
+ {0x15u, 0x02u},\r
+ {0x17u, 0x01u},\r
{0x19u, 0x41u},\r
{0x1Au, 0x20u},\r
{0x1Cu, 0x40u},\r
- {0x1Du, 0x02u},\r
- {0x1Fu, 0x01u},\r
- {0x20u, 0x40u},\r
+ {0x1Du, 0x41u},\r
+ {0x20u, 0x24u},\r
{0x21u, 0x41u},\r
+ {0x22u, 0x09u},\r
{0x24u, 0x24u},\r
- {0x25u, 0x05u},\r
+ {0x25u, 0x12u},\r
{0x26u, 0x12u},\r
- {0x27u, 0x0Au},\r
- {0x29u, 0x23u},\r
+ {0x27u, 0x0Du},\r
+ {0x29u, 0x05u},\r
{0x2Au, 0x24u},\r
- {0x2Bu, 0x0Cu},\r
+ {0x2Bu, 0x0Au},\r
{0x2Cu, 0x40u},\r
{0x2Fu, 0x08u},\r
+ {0x30u, 0x38u},\r
{0x31u, 0x40u},\r
- {0x32u, 0x38u},\r
- {0x34u, 0x40u},\r
+ {0x32u, 0x40u},\r
+ {0x33u, 0x03u},\r
{0x35u, 0x3Cu},\r
{0x36u, 0x07u},\r
- {0x37u, 0x03u},\r
- {0x38u, 0x20u},\r
- {0x3Bu, 0x80u},\r
- {0x3Eu, 0x10u},\r
+ {0x38u, 0x08u},\r
+ {0x3Bu, 0x08u},\r
+ {0x3Eu, 0x04u},\r
{0x3Fu, 0x01u},\r
{0x58u, 0x04u},\r
{0x59u, 0x0Bu},\r
{0x5Fu, 0x01u},\r
{0x82u, 0xFFu},\r
{0x84u, 0x96u},\r
- {0x85u, 0x69u},\r
+ {0x85u, 0xFFu},\r
{0x86u, 0x69u},\r
- {0x87u, 0x96u},\r
{0x88u, 0xFFu},\r
{0x8Cu, 0x0Fu},\r
{0x8Du, 0x33u},\r
{0x92u, 0xCCu},\r
{0x93u, 0xF0u},\r
{0x95u, 0xFFu},\r
- {0x99u, 0xFFu},\r
+ {0x99u, 0x69u},\r
+ {0x9Bu, 0x96u},\r
{0x9Du, 0x55u},\r
{0x9Fu, 0xAAu},\r
{0xA6u, 0xFFu},\r
{0xDFu, 0x01u},\r
{0x00u, 0x08u},\r
{0x01u, 0x80u},\r
- {0x03u, 0x08u},\r
+ {0x03u, 0x80u},\r
{0x04u, 0x02u},\r
- {0x05u, 0x50u},\r
- {0x06u, 0x10u},\r
- {0x07u, 0x02u},\r
- {0x09u, 0x20u},\r
- {0x0Au, 0x11u},\r
- {0x0Bu, 0x80u},\r
+ {0x05u, 0x40u},\r
+ {0x06u, 0x18u},\r
+ {0x07u, 0x16u},\r
+ {0x09u, 0x24u},\r
+ {0x0Au, 0x81u},\r
{0x0Fu, 0x80u},\r
- {0x11u, 0x80u},\r
- {0x12u, 0x60u},\r
- {0x13u, 0x10u},\r
+ {0x11u, 0x81u},\r
+ {0x13u, 0x14u},\r
{0x17u, 0x88u},\r
{0x19u, 0x80u},\r
- {0x1Au, 0x10u},\r
- {0x1Bu, 0x50u},\r
+ {0x1Au, 0x80u},\r
+ {0x1Bu, 0x48u},\r
{0x1Eu, 0x01u},\r
{0x20u, 0x04u},\r
- {0x22u, 0x43u},\r
+ {0x22u, 0x0Bu},\r
{0x25u, 0x40u},\r
- {0x28u, 0x04u},\r
+ {0x28u, 0x20u},\r
+ {0x29u, 0x10u},\r
{0x2Au, 0x02u},\r
- {0x2Bu, 0x22u},\r
+ {0x2Bu, 0x02u},\r
{0x2Du, 0x40u},\r
- {0x30u, 0x01u},\r
- {0x32u, 0x48u},\r
- {0x33u, 0x10u},\r
- {0x35u, 0x10u},\r
- {0x37u, 0x8Au},\r
+ {0x30u, 0x20u},\r
+ {0x32u, 0x08u},\r
+ {0x33u, 0x41u},\r
+ {0x37u, 0x9Au},\r
{0x38u, 0x04u},\r
- {0x39u, 0x90u},\r
- {0x3Bu, 0x41u},\r
- {0x3Fu, 0x84u},\r
- {0x5Eu, 0x40u},\r
+ {0x39u, 0x92u},\r
+ {0x3Bu, 0x40u},\r
+ {0x3Eu, 0x08u},\r
+ {0x3Fu, 0x80u},\r
+ {0x4Eu, 0x08u},\r
+ {0x4Fu, 0x20u},\r
+ {0x5Du, 0x01u},\r
+ {0x5Eu, 0x42u},\r
{0x64u, 0x02u},\r
{0x66u, 0x80u},\r
{0x78u, 0x02u},\r
- {0x80u, 0x08u},\r
- {0x82u, 0x10u},\r
- {0x84u, 0x40u},\r
+ {0x80u, 0x0Cu},\r
{0x8Au, 0x80u},\r
{0x8Cu, 0x01u},\r
{0x8Du, 0x40u},\r
+ {0x8Eu, 0x40u},\r
{0x91u, 0x68u},\r
{0x92u, 0x40u},\r
- {0x93u, 0x90u},\r
- {0x95u, 0x10u},\r
- {0x96u, 0x30u},\r
- {0x97u, 0x40u},\r
- {0x99u, 0x10u},\r
+ {0x93u, 0x14u},\r
+ {0x95u, 0x14u},\r
+ {0x96u, 0x20u},\r
+ {0x97u, 0x41u},\r
{0x9Au, 0x01u},\r
- {0x9Bu, 0xA8u},\r
- {0x9Cu, 0x4Bu},\r
+ {0x9Bu, 0xACu},\r
+ {0x9Cu, 0x0Au},\r
{0x9Du, 0x80u},\r
- {0x9Eu, 0x18u},\r
- {0x9Fu, 0x02u},\r
+ {0x9Eu, 0x14u},\r
+ {0x9Fu, 0x42u},\r
{0xA0u, 0x04u},\r
{0xA1u, 0x20u},\r
- {0xA2u, 0x21u},\r
- {0xA3u, 0x08u},\r
- {0xA4u, 0xA0u},\r
- {0xA6u, 0x08u},\r
- {0xA7u, 0x31u},\r
- {0xA8u, 0x10u},\r
- {0xA9u, 0x08u},\r
+ {0xA2u, 0x01u},\r
+ {0xA3u, 0x80u},\r
+ {0xA4u, 0x10u},\r
+ {0xA7u, 0x29u},\r
+ {0xAAu, 0x10u},\r
{0xABu, 0x80u},\r
- {0xACu, 0x04u},\r
+ {0xACu, 0x54u},\r
{0xAEu, 0x40u},\r
- {0xB6u, 0x81u},\r
- {0xB7u, 0x10u},\r
- {0xC0u, 0xF7u},\r
+ {0xB5u, 0x10u},\r
+ {0xB6u, 0x01u},\r
+ {0xC0u, 0xFDu},\r
{0xC2u, 0x1Fu},\r
{0xC4u, 0xAFu},\r
{0xCAu, 0x1Fu},\r
{0xD6u, 0x10u},\r
{0xD8u, 0x10u},\r
{0xDEu, 0x01u},\r
- {0xE0u, 0x01u},\r
- {0xE6u, 0x0Cu},\r
+ {0xE0u, 0x04u},\r
+ {0xE2u, 0x10u},\r
+ {0xE6u, 0x04u},\r
{0xE8u, 0x01u},\r
- {0xEAu, 0x10u},\r
- {0xECu, 0x10u},\r
- {0xEEu, 0x01u},\r
+ {0xEEu, 0x1Au},\r
{0x2Cu, 0x01u},\r
{0x36u, 0x01u},\r
{0x3Eu, 0x40u},\r
{0x58u, 0x04u},\r
{0x5Fu, 0x01u},\r
- {0x01u, 0x50u},\r
+ {0x01u, 0x70u},\r
{0x03u, 0x60u},\r
- {0x08u, 0x04u},\r
- {0x0Au, 0xA8u},\r
+ {0x08u, 0x01u},\r
+ {0x0Au, 0x80u},\r
+ {0x0Bu, 0x14u},\r
{0x0Eu, 0x01u},\r
{0x0Fu, 0x02u},\r
{0x10u, 0x22u},\r
{0x16u, 0x01u},\r
{0x19u, 0x01u},\r
{0x1Eu, 0x01u},\r
- {0x20u, 0x04u},\r
- {0x22u, 0x04u},\r
- {0x23u, 0x01u},\r
- {0x28u, 0x21u},\r
+ {0x21u, 0x09u},\r
+ {0x22u, 0x40u},\r
+ {0x28u, 0x01u},\r
{0x29u, 0x11u},\r
+ {0x2Bu, 0x10u},\r
{0x30u, 0x22u},\r
- {0x32u, 0x44u},\r
- {0x38u, 0x04u},\r
+ {0x31u, 0x08u},\r
+ {0x33u, 0x40u},\r
{0x39u, 0x40u},\r
{0x3Au, 0x02u},\r
- {0x3Bu, 0x10u},\r
- {0x42u, 0x60u},\r
- {0x43u, 0x20u},\r
- {0x44u, 0x01u},\r
+ {0x3Bu, 0x14u},\r
+ {0x40u, 0xB0u},\r
+ {0x41u, 0x20u},\r
+ {0x45u, 0x40u},\r
{0x47u, 0x40u},\r
- {0x49u, 0x04u},\r
- {0x4Au, 0x0Au},\r
+ {0x49u, 0x14u},\r
+ {0x4Au, 0x02u},\r
{0x4Bu, 0x02u},\r
{0x50u, 0x02u},\r
- {0x52u, 0x14u},\r
+ {0x52u, 0x50u},\r
{0x53u, 0x02u},\r
{0x62u, 0x80u},\r
- {0x68u, 0x60u},\r
+ {0x68u, 0x20u},\r
{0x69u, 0xD4u},\r
- {0x6Bu, 0x50u},\r
- {0x70u, 0x80u},\r
+ {0x6Bu, 0x48u},\r
{0x72u, 0x02u},\r
- {0x73u, 0x02u},\r
+ {0x73u, 0x03u},\r
{0x78u, 0x02u},\r
- {0x89u, 0x02u},\r
+ {0x80u, 0x80u},\r
+ {0x8Eu, 0x40u},\r
{0x91u, 0x28u},\r
- {0x92u, 0x82u},\r
- {0x95u, 0x90u},\r
+ {0x92u, 0x02u},\r
+ {0x95u, 0x96u},\r
{0x96u, 0x20u},\r
{0x97u, 0x01u},\r
{0x98u, 0x02u},\r
{0x9Au, 0x01u},\r
{0x9Bu, 0x20u},\r
- {0x9Cu, 0x05u},\r
- {0x9Du, 0x40u},\r
- {0x9Eu, 0x0Au},\r
- {0x9Fu, 0x10u},\r
- {0xA2u, 0x83u},\r
- {0xA4u, 0xA0u},\r
- {0xA6u, 0x08u},\r
+ {0x9Cu, 0x20u},\r
+ {0x9Du, 0x50u},\r
+ {0x9Eu, 0x02u},\r
+ {0x9Fu, 0x41u},\r
+ {0xA2u, 0x8Bu},\r
+ {0xA3u, 0x10u},\r
+ {0xA4u, 0x30u},\r
{0xA7u, 0x23u},\r
+ {0xA9u, 0x04u},\r
+ {0xAAu, 0x04u},\r
{0xADu, 0x80u},\r
- {0xB2u, 0xD0u},\r
- {0xB3u, 0x04u},\r
- {0xB4u, 0x04u},\r
+ {0xB2u, 0x90u},\r
{0xC0u, 0x0Fu},\r
{0xC2u, 0x0Eu},\r
{0xC4u, 0x8Fu},\r
{0xD2u, 0x0Cu},\r
{0xD8u, 0x08u},\r
{0xDEu, 0x01u},\r
- {0xE6u, 0x01u},\r
{0xE8u, 0x08u},\r
- {0x80u, 0x10u},\r
- {0x88u, 0x01u},\r
- {0x90u, 0x10u},\r
+ {0xEAu, 0x04u},\r
+ {0x8Fu, 0x40u},\r
+ {0x90u, 0x20u},\r
+ {0x96u, 0x04u},\r
{0x97u, 0x80u},\r
{0x9Cu, 0x40u},\r
{0x9Du, 0x08u},\r
- {0x9Eu, 0x20u},\r
- {0xA4u, 0x01u},\r
- {0xA9u, 0x08u},\r
+ {0xA7u, 0x40u},\r
+ {0xA9u, 0x09u},\r
{0xADu, 0x01u},\r
{0xAFu, 0x80u},\r
{0xB1u, 0x22u},\r
- {0xB2u, 0x11u},\r
+ {0xB2u, 0x10u},\r
{0xB4u, 0x04u},\r
- {0xB7u, 0x40u},\r
- {0xE0u, 0x80u},\r
+ {0xE4u, 0x40u},\r
{0xE8u, 0x08u},\r
{0xEAu, 0x83u},\r
- {0xECu, 0x40u},\r
- {0xEEu, 0xA0u},\r
+ {0xEEu, 0x20u},\r
{0x00u, 0x33u},\r
{0x02u, 0xCCu},\r
{0x08u, 0x55u},\r
+ {0x09u, 0x01u},\r
{0x0Au, 0xAAu},\r
- {0x0Du, 0x01u},\r
{0x10u, 0x69u},\r
{0x12u, 0x96u},\r
{0x16u, 0xFFu},\r
{0x1Eu, 0xF0u},\r
{0x26u, 0xFFu},\r
{0x29u, 0x02u},\r
- {0x33u, 0x01u},\r
- {0x35u, 0x02u},\r
- {0x36u, 0xFFu},\r
- {0x3Eu, 0x40u},\r
- {0x3Fu, 0x14u},\r
+ {0x30u, 0xFFu},\r
+ {0x31u, 0x02u},\r
+ {0x35u, 0x01u},\r
+ {0x3Eu, 0x01u},\r
+ {0x3Fu, 0x11u},\r
{0x58u, 0x04u},\r
{0x59u, 0x04u},\r
{0x5Fu, 0x01u},\r
{0x80u, 0x05u},\r
- {0x81u, 0x38u},\r
{0x82u, 0x0Au},\r
{0x84u, 0x20u},\r
- {0x89u, 0x25u},\r
- {0x8Bu, 0x02u},\r
+ {0x85u, 0x25u},\r
+ {0x87u, 0x02u},\r
+ {0x88u, 0x06u},\r
+ {0x8Au, 0x09u},\r
{0x8Cu, 0x03u},\r
+ {0x8Du, 0x38u},\r
{0x8Eu, 0x0Cu},\r
- {0x8Fu, 0x38u},\r
{0x94u, 0x10u},\r
- {0x95u, 0x09u},\r
- {0x97u, 0x06u},\r
+ {0x97u, 0x38u},\r
{0x99u, 0x04u},\r
{0x9Bu, 0x03u},\r
- {0x9Cu, 0x06u},\r
{0x9Du, 0x40u},\r
- {0x9Eu, 0x09u},\r
{0xA1u, 0x03u},\r
{0xA3u, 0x14u},\r
+ {0xA5u, 0x09u},\r
+ {0xA7u, 0x06u},\r
{0xACu, 0x40u},\r
{0xB0u, 0x0Fu},\r
{0xB2u, 0x40u},\r
{0xDFu, 0x01u},\r
{0x01u, 0x01u},\r
{0x02u, 0x04u},\r
- {0x04u, 0x08u},\r
+ {0x04u, 0x18u},\r
{0x05u, 0x42u},\r
{0x08u, 0x68u},\r
{0x09u, 0x02u},\r
{0x0Du, 0x08u},\r
- {0x0Fu, 0x01u},\r
- {0x13u, 0x08u},\r
+ {0x11u, 0x08u},\r
{0x16u, 0x01u},\r
- {0x1Au, 0x01u},\r
+ {0x19u, 0x01u},\r
{0x1Cu, 0x08u},\r
{0x1Du, 0x02u},\r
{0x1Fu, 0x84u},\r
- {0x22u, 0x08u},\r
- {0x23u, 0x04u},\r
- {0x24u, 0x10u},\r
+ {0x21u, 0x21u},\r
+ {0x24u, 0x20u},\r
{0x26u, 0x10u},\r
- {0x27u, 0x02u},\r
+ {0x27u, 0x01u},\r
{0x29u, 0x20u},\r
+ {0x2Du, 0x08u},\r
{0x2Fu, 0x40u},\r
- {0x35u, 0x08u},\r
{0x36u, 0x10u},\r
- {0x37u, 0x80u},\r
- {0x38u, 0x80u},\r
- {0x3Cu, 0x02u},\r
- {0x3Eu, 0x20u},\r
+ {0x37u, 0x88u},\r
+ {0x3Au, 0x10u},\r
+ {0x3Eu, 0x04u},\r
{0x3Fu, 0x80u},\r
{0x7Eu, 0x02u},\r
- {0x83u, 0x81u},\r
- {0x87u, 0x04u},\r
+ {0x83u, 0x88u},\r
{0x8Au, 0x02u},\r
- {0x8Cu, 0x08u},\r
- {0x90u, 0x80u},\r
- {0x97u, 0x04u},\r
+ {0x8Cu, 0x18u},\r
+ {0x95u, 0x02u},\r
+ {0x97u, 0x08u},\r
{0x98u, 0x20u},\r
{0x99u, 0x42u},\r
- {0x9Au, 0x05u},\r
- {0x9Bu, 0x08u},\r
- {0x9Cu, 0x40u},\r
- {0x9Fu, 0x02u},\r
+ {0x9Au, 0x15u},\r
+ {0x9Fu, 0x01u},\r
+ {0xA1u, 0x04u},\r
{0xA4u, 0x04u},\r
- {0xA6u, 0x08u},\r
+ {0xA5u, 0x20u},\r
{0xAAu, 0x04u},\r
- {0xABu, 0x02u},\r
- {0xC0u, 0xBAu},\r
- {0xC2u, 0xAFu},\r
+ {0xACu, 0x04u},\r
+ {0xAFu, 0x04u},\r
+ {0xB2u, 0x10u},\r
+ {0xC0u, 0xFAu},\r
+ {0xC2u, 0x2Fu},\r
{0xC4u, 0x84u},\r
- {0xCAu, 0x84u},\r
+ {0xCAu, 0xC4u},\r
{0xCCu, 0x70u},\r
- {0xCEu, 0xB8u},\r
+ {0xCEu, 0x54u},\r
{0xDEu, 0x10u},\r
- {0xE0u, 0x40u},\r
+ {0xE0u, 0x50u},\r
{0xE4u, 0x20u},\r
{0xE8u, 0x01u},\r
{0xEEu, 0x40u},\r
- {0x82u, 0x08u},\r
- {0x84u, 0x40u},\r
- {0x87u, 0x04u},\r
- {0x88u, 0x04u},\r
- {0x8Cu, 0x60u},\r
+ {0x81u, 0x20u},\r
+ {0x89u, 0x01u},\r
+ {0x8Bu, 0x01u},\r
+ {0x98u, 0x20u},\r
{0x99u, 0x42u},\r
{0x9Au, 0x01u},\r
- {0x9Bu, 0x08u},\r
+ {0xA1u, 0x04u},\r
{0xADu, 0x02u},\r
+ {0xB4u, 0x20u},\r
{0xB6u, 0x01u},\r
- {0xE0u, 0x40u},\r
{0xE2u, 0x20u},\r
- {0xE4u, 0x08u},\r
- {0xE6u, 0x80u},\r
- {0xEEu, 0x20u},\r
- {0x83u, 0x08u},\r
+ {0xE4u, 0x01u},\r
+ {0xE6u, 0x22u},\r
+ {0xE8u, 0x40u},\r
+ {0xEEu, 0x04u},\r
+ {0x81u, 0x04u},\r
{0x85u, 0x40u},\r
- {0x82u, 0x20u},\r
- {0x9Eu, 0x20u},\r
- {0xAEu, 0x08u},\r
- {0xB2u, 0x08u},\r
+ {0xACu, 0x21u},\r
+ {0xB2u, 0x02u},\r
+ {0xB3u, 0x14u},\r
{0xB5u, 0x10u},\r
{0x06u, 0x04u},\r
{0x0Eu, 0x03u},\r
{0x5Cu, 0x09u},\r
{0x5Du, 0x90u},\r
{0x5Fu, 0x01u},\r
- {0x80u, 0x30u},\r
- {0x84u, 0x10u},\r
- {0x85u, 0x42u},\r
- {0x86u, 0x0Fu},\r
- {0x87u, 0x04u},\r
- {0x88u, 0x40u},\r
- {0x8Au, 0x0Cu},\r
- {0x8Bu, 0x46u},\r
- {0x8Cu, 0x4Cu},\r
+ {0x80u, 0x08u},\r
+ {0x84u, 0x44u},\r
+ {0x85u, 0x01u},\r
+ {0x86u, 0x08u},\r
+ {0x87u, 0x5Eu},\r
+ {0x88u, 0x04u},\r
+ {0x89u, 0x39u},\r
+ {0x8Bu, 0x06u},\r
+ {0x8Cu, 0x0Cu},\r
{0x8Du, 0x46u},\r
- {0x90u, 0x04u},\r
+ {0x8Eu, 0x40u},\r
+ {0x90u, 0x30u},\r
{0x94u, 0x01u},\r
- {0x95u, 0x39u},\r
+ {0x95u, 0x42u},\r
{0x96u, 0x2Eu},\r
- {0x97u, 0x06u},\r
{0x98u, 0x01u},\r
- {0x99u, 0x01u},\r
+ {0x99u, 0x42u},\r
{0x9Au, 0x12u},\r
- {0x9Bu, 0x5Eu},\r
- {0x9Du, 0x42u},\r
+ {0x9Bu, 0x04u},\r
+ {0x9Du, 0x46u},\r
{0x9Eu, 0x40u},\r
{0xA0u, 0x4Cu},\r
{0xA1u, 0x46u},\r
- {0xA4u, 0x44u},\r
- {0xA5u, 0x04u},\r
- {0xA6u, 0x08u},\r
- {0xA7u, 0x20u},\r
- {0xA8u, 0x08u},\r
- {0xA9u, 0x77u},\r
- {0xABu, 0x08u},\r
- {0xACu, 0x0Cu},\r
- {0xADu, 0x46u},\r
- {0xAEu, 0x40u},\r
+ {0xA4u, 0x40u},\r
+ {0xA5u, 0x77u},\r
+ {0xA6u, 0x0Cu},\r
+ {0xA7u, 0x08u},\r
+ {0xA8u, 0x10u},\r
+ {0xAAu, 0x0Fu},\r
+ {0xABu, 0x46u},\r
+ {0xACu, 0x4Cu},\r
+ {0xADu, 0x04u},\r
+ {0xAFu, 0x20u},\r
{0xB0u, 0x31u},\r
{0xB1u, 0x08u},\r
{0xB2u, 0x40u},\r
{0xDCu, 0x99u},\r
{0xDDu, 0x90u},\r
{0xDFu, 0x01u},\r
- {0x00u, 0x84u},\r
- {0x01u, 0x12u},\r
+ {0x00u, 0x02u},\r
+ {0x01u, 0x44u},\r
+ {0x02u, 0x48u},\r
{0x05u, 0x40u},\r
{0x07u, 0x20u},\r
- {0x0Au, 0x84u},\r
+ {0x0Au, 0x44u},\r
{0x0Bu, 0x12u},\r
{0x0Du, 0x14u},\r
{0x0Eu, 0x02u},\r
- {0x10u, 0x20u},\r
- {0x11u, 0x40u},\r
+ {0x11u, 0x80u},\r
{0x12u, 0x04u},\r
- {0x13u, 0x02u},\r
- {0x19u, 0x1Au},\r
- {0x1Au, 0x04u},\r
+ {0x13u, 0x0Au},\r
+ {0x19u, 0x18u},\r
+ {0x1Au, 0x44u},\r
{0x1Bu, 0x20u},\r
{0x1Du, 0x40u},\r
- {0x20u, 0x04u},\r
+ {0x20u, 0x30u},\r
{0x21u, 0x20u},\r
- {0x22u, 0x98u},\r
- {0x23u, 0x98u},\r
- {0x28u, 0x11u},\r
- {0x29u, 0x10u},\r
- {0x2Au, 0x06u},\r
- {0x31u, 0x20u},\r
- {0x32u, 0x48u},\r
- {0x39u, 0x54u},\r
- {0x44u, 0x20u},\r
- {0x47u, 0x08u},\r
- {0x58u, 0x10u},\r
+ {0x22u, 0x90u},\r
+ {0x23u, 0x94u},\r
+ {0x29u, 0x20u},\r
+ {0x2Au, 0x42u},\r
+ {0x2Bu, 0x20u},\r
+ {0x30u, 0x20u},\r
+ {0x32u, 0x08u},\r
+ {0x33u, 0x40u},\r
+ {0x36u, 0x02u},\r
+ {0x37u, 0x01u},\r
+ {0x39u, 0x40u},\r
+ {0x3Au, 0x04u},\r
+ {0x3Bu, 0x14u},\r
+ {0x58u, 0x20u},\r
{0x59u, 0x04u},\r
{0x5Au, 0x02u},\r
{0x5Bu, 0x80u},\r
{0x67u, 0x02u},\r
{0x78u, 0x02u},\r
{0x7Cu, 0x02u},\r
- {0x81u, 0x20u},\r
- {0x82u, 0x40u},\r
{0x89u, 0x40u},\r
- {0x91u, 0x7Cu},\r
- {0x92u, 0x82u},\r
+ {0x91u, 0x6Cu},\r
+ {0x92u, 0x02u},\r
{0x93u, 0x02u},\r
+ {0x94u, 0x10u},\r
{0x96u, 0x60u},\r
- {0x97u, 0x10u},\r
- {0x98u, 0x03u},\r
- {0x99u, 0x04u},\r
- {0x9Au, 0x16u},\r
- {0x9Bu, 0x22u},\r
- {0x9Cu, 0x20u},\r
- {0x9Du, 0x52u},\r
- {0x9Eu, 0x28u},\r
- {0xA0u, 0x60u},\r
- {0xA2u, 0x01u},\r
- {0xA6u, 0x08u},\r
+ {0x97u, 0x14u},\r
+ {0x98u, 0x02u},\r
+ {0x99u, 0x24u},\r
+ {0x9Au, 0x52u},\r
+ {0x9Bu, 0x6Au},\r
+ {0x9Du, 0x50u},\r
+ {0x9Fu, 0x01u},\r
+ {0xA0u, 0x20u},\r
+ {0xA1u, 0x40u},\r
+ {0xA2u, 0x09u},\r
+ {0xA4u, 0x10u},\r
+ {0xA5u, 0x20u},\r
{0xA7u, 0x20u},\r
{0xC0u, 0xAFu},\r
{0xC2u, 0xEFu},\r
{0xD6u, 0x0Fu},\r
{0xD8u, 0x78u},\r
{0xDEu, 0x81u},\r
- {0xE0u, 0x04u},\r
- {0xEEu, 0x08u},\r
- {0x82u, 0x20u},\r
+ {0xEAu, 0x04u},\r
+ {0xEEu, 0x0Au},\r
{0x88u, 0x40u},\r
+ {0x96u, 0x04u},\r
{0x97u, 0x80u},\r
{0x9Cu, 0x40u},\r
{0x9Du, 0x08u},\r
- {0x9Eu, 0x20u},\r
+ {0xA8u, 0x10u},\r
{0xE0u, 0x80u},\r
- {0xEEu, 0x08u},\r
+ {0xEEu, 0x0Au},\r
+ {0xB2u, 0x04u},\r
{0xB3u, 0x40u},\r
{0xB5u, 0x08u},\r
{0xE8u, 0x40u},\r
- {0xECu, 0x80u},\r
+ {0xECu, 0xA0u},\r
{0x33u, 0x80u},\r
- {0x5Bu, 0x40u},\r
+ {0x36u, 0x40u},\r
+ {0x5Au, 0x80u},\r
+ {0x5Eu, 0x02u},\r
{0x62u, 0x01u},\r
{0x63u, 0x02u},\r
- {0x66u, 0x80u},\r
{0x67u, 0x08u},\r
{0x82u, 0x03u},\r
{0x87u, 0x04u},\r
- {0xCCu, 0x10u},\r
+ {0xCCu, 0x30u},\r
{0xD4u, 0x80u},\r
{0xD6u, 0xC0u},\r
{0xD8u, 0xC0u},\r
{0xE2u, 0x20u},\r
{0xE6u, 0x30u},\r
- {0x52u, 0x10u},\r
+ {0x51u, 0x08u},\r
{0x53u, 0x01u},\r
- {0x83u, 0x01u},\r
- {0x8Eu, 0x80u},\r
- {0x9Au, 0x12u},\r
- {0x9Eu, 0x80u},\r
- {0x9Fu, 0x40u},\r
+ {0x83u, 0x05u},\r
+ {0x8Eu, 0x40u},\r
+ {0x96u, 0x80u},\r
+ {0x9Au, 0x02u},\r
+ {0xA6u, 0x41u},\r
{0xA7u, 0x80u},\r
- {0xAEu, 0x10u},\r
{0xAFu, 0x01u},\r
{0xD4u, 0xA0u},\r
+ {0xE0u, 0x80u},\r
{0xE6u, 0x20u},\r
- {0xEAu, 0x40u},\r
{0xEEu, 0x10u},\r
- {0x94u, 0x01u},\r
+ {0x8Eu, 0x01u},\r
{0x9Au, 0x02u},\r
+ {0x9Fu, 0x04u},\r
+ {0xA6u, 0x41u},\r
{0xA7u, 0x80u},\r
- {0xB4u, 0x01u},\r
- {0xB7u, 0x40u},\r
- {0x82u, 0x20u},\r
- {0x94u, 0x01u},\r
+ {0xB5u, 0x08u},\r
+ {0x81u, 0x04u},\r
{0x9Au, 0x02u},\r
+ {0x9Fu, 0x84u},\r
+ {0xA6u, 0x40u},\r
{0xA7u, 0x80u},\r
- {0xE6u, 0x80u},\r
- {0x0Cu, 0x04u},\r
+ {0xABu, 0x80u},\r
+ {0xE4u, 0x80u},\r
+ {0xE8u, 0x80u},\r
+ {0x0Eu, 0x80u},\r
{0x10u, 0x80u},\r
- {0x53u, 0x80u},\r
+ {0x50u, 0x04u},\r
{0x54u, 0x10u},\r
{0x5Au, 0x10u},\r
{0x5Cu, 0x40u},\r
{0xD4u, 0x07u},\r
{0xD6u, 0x04u},\r
{0x03u, 0x01u},\r
- {0x04u, 0x81u},\r
+ {0x04u, 0x80u},\r
+ {0x06u, 0x80u},\r
+ {0x08u, 0x20u},\r
{0x09u, 0x04u},\r
- {0x0Bu, 0x04u},\r
{0x0Eu, 0x02u},\r
{0x0Fu, 0x40u},\r
- {0x87u, 0x80u},\r
- {0x88u, 0x04u},\r
- {0x8Cu, 0x41u},\r
- {0x94u, 0x40u},\r
+ {0x80u, 0x04u},\r
+ {0x86u, 0x40u},\r
+ {0x94u, 0x08u},\r
{0x96u, 0x10u},\r
- {0x97u, 0x04u},\r
- {0x98u, 0x04u},\r
+ {0x9Cu, 0x20u},\r
+ {0xA2u, 0x40u},\r
{0xA4u, 0x10u},\r
- {0xA7u, 0x80u},\r
- {0xB3u, 0x04u},\r
- {0xB4u, 0x80u},\r
+ {0xA8u, 0x20u},\r
+ {0xB4u, 0xC0u},\r
{0xC0u, 0x07u},\r
{0xC2u, 0x0Fu},\r
- {0xE0u, 0x02u},\r
- {0xE6u, 0x09u},\r
- {0xEEu, 0x06u},\r
+ {0xE8u, 0x02u},\r
+ {0xEEu, 0x02u},\r
{0x90u, 0x80u},\r
{0x93u, 0x40u},\r
{0x9Bu, 0x01u},\r
{0xA2u, 0x01u},\r
{0xA4u, 0x10u},\r
{0xAAu, 0x10u},\r
+ {0xB2u, 0x80u},\r
{0xB5u, 0x04u},\r
- {0xEEu, 0x02u},\r
+ {0xEEu, 0x06u},\r
{0x08u, 0x08u},\r
+ {0x0Fu, 0x40u},\r
{0xA8u, 0x40u},\r
{0xACu, 0x10u},\r
{0xAFu, 0x01u},\r
{0xB3u, 0x40u},\r
{0xB6u, 0x01u},\r
- {0xC2u, 0x08u},\r
+ {0xC2u, 0x0Cu},\r
{0xEAu, 0x0Cu},\r
- {0x23u, 0x40u},\r
- {0x24u, 0x01u},\r
- {0x94u, 0x01u},\r
- {0x9Au, 0x02u},\r
- {0xA2u, 0x20u},\r
+ {0x23u, 0x80u},\r
+ {0x27u, 0x04u},\r
+ {0x9Au, 0x22u},\r
+ {0x9Du, 0x04u},\r
+ {0x9Fu, 0x84u},\r
+ {0xAAu, 0x20u},\r
+ {0xAEu, 0x40u},\r
{0xAFu, 0x80u},\r
{0xC8u, 0x60u},\r
- {0xEEu, 0x10u},\r
- {0x07u, 0x10u},\r
- {0x52u, 0x20u},\r
- {0x56u, 0x02u},\r
- {0x83u, 0x10u},\r
- {0x9Au, 0x02u},\r
- {0xA2u, 0x20u},\r
- {0xAFu, 0x40u},\r
+ {0xEAu, 0x20u},\r
+ {0xEEu, 0x50u},\r
+ {0x05u, 0x04u},\r
+ {0x56u, 0x22u},\r
+ {0x9Au, 0x22u},\r
+ {0x9Du, 0x04u},\r
{0xC0u, 0x20u},\r
- {0xD4u, 0x20u},\r
+ {0xD4u, 0x40u},\r
{0xD6u, 0x20u},\r
- {0xE0u, 0x20u},\r
- {0xECu, 0x40u},\r
{0xACu, 0x08u},\r
+ {0xAFu, 0x40u},\r
{0x01u, 0x01u},\r
{0x09u, 0x01u},\r
{0x0Bu, 0x01u},\r
{0x0Du, 0x01u},\r
{0x11u, 0x01u},\r
{0x1Bu, 0x01u},\r
- {0x00u, 0x02u},\r
+ {0x00u, 0x0Au},\r
};\r
\r
\r
\r
/* UDB_1_2_0_CONFIG Address: CYDEV_UCFG_B0_P3_U1_BASE Size (bytes): 128 */\r
static const uint8 CYCODE BS_UDB_1_2_0_CONFIG_VAL[] = {\r
- 0xC0u, 0x01u, 0x02u, 0x00u, 0x1Fu, 0x40u, 0x20u, 0x00u, 0xC0u, 0x08u, 0x08u, 0x21u, 0x90u, 0x01u, 0x40u, 0x00u, \r
- 0x80u, 0x10u, 0x00u, 0x80u, 0x7Fu, 0x04u, 0x80u, 0x00u, 0x00u, 0x01u, 0x60u, 0x00u, 0x00u, 0x01u, 0x00u, 0x00u, \r
- 0xC0u, 0x40u, 0x01u, 0x00u, 0xC0u, 0x22u, 0x04u, 0x08u, 0x00u, 0x07u, 0xFFu, 0x18u, 0x00u, 0x01u, 0x9Fu, 0x00u, \r
- 0xFFu, 0x00u, 0x00u, 0x40u, 0x00u, 0x3Fu, 0x00u, 0x80u, 0x00u, 0x28u, 0x00u, 0x00u, 0x00u, 0x00u, 0x01u, 0x10u, \r
- 0x64u, 0x02u, 0x50u, 0x00u, 0x03u, 0xDEu, 0xF0u, 0xBCu, 0x3Bu, 0xFFu, 0xFFu, 0xFFu, 0x22u, 0x00u, 0xF0u, 0x08u, \r
+ 0xC0u, 0x01u, 0x02u, 0x00u, 0x1Fu, 0x22u, 0x20u, 0x08u, 0xC0u, 0x08u, 0x08u, 0x21u, 0x90u, 0x01u, 0x40u, 0x00u, \r
+ 0x00u, 0x10u, 0x60u, 0x80u, 0x00u, 0x40u, 0xFFu, 0x00u, 0x7Fu, 0x01u, 0x80u, 0x00u, 0x00u, 0x01u, 0x00u, 0x00u, \r
+ 0xC0u, 0x40u, 0x01u, 0x00u, 0xC0u, 0x01u, 0x04u, 0x00u, 0x80u, 0x07u, 0x00u, 0x18u, 0x00u, 0x04u, 0x9Fu, 0x00u, \r
+ 0xFFu, 0x80u, 0x00u, 0x3Fu, 0x00u, 0x00u, 0x00u, 0x40u, 0x00u, 0x88u, 0x00u, 0x00u, 0x00u, 0x00u, 0x01u, 0x04u, \r
+ 0x32u, 0x06u, 0x50u, 0x00u, 0x04u, 0xDEu, 0xFCu, 0xB0u, 0x2Fu, 0xFFu, 0xFFu, 0xFFu, 0x22u, 0x00u, 0xF0u, 0x08u, \r
0x04u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x02u, 0x20u, 0x04u, 0x0Bu, 0x0Bu, 0x0Bu, 0x90u, 0x99u, 0x00u, 0x01u, \r
0x00u, 0x00u, 0xC0u, 0x00u, 0x40u, 0x01u, 0x10u, 0x11u, 0xC0u, 0x01u, 0x00u, 0x11u, 0x40u, 0x01u, 0x40u, 0x01u, \r
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u};\r
.include "cydevicegnu.inc"\r
.include "cydevicegnu_trm.inc"\r
\r
-/* USBFS_1_bus_reset */\r
-.set USBFS_1_bus_reset__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
-.set USBFS_1_bus_reset__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
-.set USBFS_1_bus_reset__INTC_MASK, 0x800000\r
-.set USBFS_1_bus_reset__INTC_NUMBER, 23\r
-.set USBFS_1_bus_reset__INTC_PRIOR_NUM, 7\r
-.set USBFS_1_bus_reset__INTC_PRIOR_REG, CYREG_NVIC_PRI_23\r
-.set USBFS_1_bus_reset__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
-.set USBFS_1_bus_reset__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
+/* USBFS_bus_reset */\r
+.set USBFS_bus_reset__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
+.set USBFS_bus_reset__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
+.set USBFS_bus_reset__INTC_MASK, 0x800000\r
+.set USBFS_bus_reset__INTC_NUMBER, 23\r
+.set USBFS_bus_reset__INTC_PRIOR_NUM, 7\r
+.set USBFS_bus_reset__INTC_PRIOR_REG, CYREG_NVIC_PRI_23\r
+.set USBFS_bus_reset__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
+.set USBFS_bus_reset__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_arb_int */\r
-.set USBFS_1_arb_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
-.set USBFS_1_arb_int__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
-.set USBFS_1_arb_int__INTC_MASK, 0x400000\r
-.set USBFS_1_arb_int__INTC_NUMBER, 22\r
-.set USBFS_1_arb_int__INTC_PRIOR_NUM, 7\r
-.set USBFS_1_arb_int__INTC_PRIOR_REG, CYREG_NVIC_PRI_22\r
-.set USBFS_1_arb_int__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
-.set USBFS_1_arb_int__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
+/* USBFS_arb_int */\r
+.set USBFS_arb_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
+.set USBFS_arb_int__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
+.set USBFS_arb_int__INTC_MASK, 0x400000\r
+.set USBFS_arb_int__INTC_NUMBER, 22\r
+.set USBFS_arb_int__INTC_PRIOR_NUM, 7\r
+.set USBFS_arb_int__INTC_PRIOR_REG, CYREG_NVIC_PRI_22\r
+.set USBFS_arb_int__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
+.set USBFS_arb_int__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_sof_int */\r
-.set USBFS_1_sof_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
-.set USBFS_1_sof_int__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
-.set USBFS_1_sof_int__INTC_MASK, 0x200000\r
-.set USBFS_1_sof_int__INTC_NUMBER, 21\r
-.set USBFS_1_sof_int__INTC_PRIOR_NUM, 7\r
-.set USBFS_1_sof_int__INTC_PRIOR_REG, CYREG_NVIC_PRI_21\r
-.set USBFS_1_sof_int__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
-.set USBFS_1_sof_int__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
-\r
-/* USBFS_1_dp_int */\r
-.set USBFS_1_dp_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
-.set USBFS_1_dp_int__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
-.set USBFS_1_dp_int__INTC_MASK, 0x1000\r
-.set USBFS_1_dp_int__INTC_NUMBER, 12\r
-.set USBFS_1_dp_int__INTC_PRIOR_NUM, 7\r
-.set USBFS_1_dp_int__INTC_PRIOR_REG, CYREG_NVIC_PRI_12\r
-.set USBFS_1_dp_int__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
-.set USBFS_1_dp_int__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
+/* USBFS_sof_int */\r
+.set USBFS_sof_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
+.set USBFS_sof_int__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
+.set USBFS_sof_int__INTC_MASK, 0x200000\r
+.set USBFS_sof_int__INTC_NUMBER, 21\r
+.set USBFS_sof_int__INTC_PRIOR_NUM, 7\r
+.set USBFS_sof_int__INTC_PRIOR_REG, CYREG_NVIC_PRI_21\r
+.set USBFS_sof_int__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
+.set USBFS_sof_int__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
\r
/* SCSI_ATN_ISR */\r
.set SCSI_ATN_ISR__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
.set SDCard_BSPIM_sR8_Dp_u0__MSK_DP_AUX_CTL_REG, CYREG_B0_UDB07_MSK_ACTL\r
.set SDCard_BSPIM_sR8_Dp_u0__PER_DP_AUX_CTL_REG, CYREG_B0_UDB07_MSK_ACTL\r
\r
-/* USBFS_1_ep_0 */\r
-.set USBFS_1_ep_0__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
-.set USBFS_1_ep_0__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
-.set USBFS_1_ep_0__INTC_MASK, 0x1000000\r
-.set USBFS_1_ep_0__INTC_NUMBER, 24\r
-.set USBFS_1_ep_0__INTC_PRIOR_NUM, 7\r
-.set USBFS_1_ep_0__INTC_PRIOR_REG, CYREG_NVIC_PRI_24\r
-.set USBFS_1_ep_0__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
-.set USBFS_1_ep_0__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
-\r
-/* USBFS_1_ep_1 */\r
-.set USBFS_1_ep_1__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
-.set USBFS_1_ep_1__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
-.set USBFS_1_ep_1__INTC_MASK, 0x01\r
-.set USBFS_1_ep_1__INTC_NUMBER, 0\r
-.set USBFS_1_ep_1__INTC_PRIOR_NUM, 7\r
-.set USBFS_1_ep_1__INTC_PRIOR_REG, CYREG_NVIC_PRI_0\r
-.set USBFS_1_ep_1__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
-.set USBFS_1_ep_1__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
+/* USBFS_dp_int */\r
+.set USBFS_dp_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
+.set USBFS_dp_int__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
+.set USBFS_dp_int__INTC_MASK, 0x1000\r
+.set USBFS_dp_int__INTC_NUMBER, 12\r
+.set USBFS_dp_int__INTC_PRIOR_NUM, 7\r
+.set USBFS_dp_int__INTC_PRIOR_REG, CYREG_NVIC_PRI_12\r
+.set USBFS_dp_int__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
+.set USBFS_dp_int__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
\r
/* SCSI_CTL_IO */\r
.set SCSI_CTL_IO_Sync_ctrl_reg__0__MASK, 0x01\r
.set SD_Init_Clk__PM_STBY_CFG, CYREG_PM_STBY_CFG2\r
.set SD_Init_Clk__PM_STBY_MSK, 0x02\r
\r
-/* USBFS_1_USB */\r
-.set USBFS_1_USB__ARB_CFG, CYREG_USB_ARB_CFG\r
-.set USBFS_1_USB__ARB_EP1_CFG, CYREG_USB_ARB_EP1_CFG\r
-.set USBFS_1_USB__ARB_EP1_INT_EN, CYREG_USB_ARB_EP1_INT_EN\r
-.set USBFS_1_USB__ARB_EP1_SR, CYREG_USB_ARB_EP1_SR\r
-.set USBFS_1_USB__ARB_EP2_CFG, CYREG_USB_ARB_EP2_CFG\r
-.set USBFS_1_USB__ARB_EP2_INT_EN, CYREG_USB_ARB_EP2_INT_EN\r
-.set USBFS_1_USB__ARB_EP2_SR, CYREG_USB_ARB_EP2_SR\r
-.set USBFS_1_USB__ARB_EP3_CFG, CYREG_USB_ARB_EP3_CFG\r
-.set USBFS_1_USB__ARB_EP3_INT_EN, CYREG_USB_ARB_EP3_INT_EN\r
-.set USBFS_1_USB__ARB_EP3_SR, CYREG_USB_ARB_EP3_SR\r
-.set USBFS_1_USB__ARB_EP4_CFG, CYREG_USB_ARB_EP4_CFG\r
-.set USBFS_1_USB__ARB_EP4_INT_EN, CYREG_USB_ARB_EP4_INT_EN\r
-.set USBFS_1_USB__ARB_EP4_SR, CYREG_USB_ARB_EP4_SR\r
-.set USBFS_1_USB__ARB_EP5_CFG, CYREG_USB_ARB_EP5_CFG\r
-.set USBFS_1_USB__ARB_EP5_INT_EN, CYREG_USB_ARB_EP5_INT_EN\r
-.set USBFS_1_USB__ARB_EP5_SR, CYREG_USB_ARB_EP5_SR\r
-.set USBFS_1_USB__ARB_EP6_CFG, CYREG_USB_ARB_EP6_CFG\r
-.set USBFS_1_USB__ARB_EP6_INT_EN, CYREG_USB_ARB_EP6_INT_EN\r
-.set USBFS_1_USB__ARB_EP6_SR, CYREG_USB_ARB_EP6_SR\r
-.set USBFS_1_USB__ARB_EP7_CFG, CYREG_USB_ARB_EP7_CFG\r
-.set USBFS_1_USB__ARB_EP7_INT_EN, CYREG_USB_ARB_EP7_INT_EN\r
-.set USBFS_1_USB__ARB_EP7_SR, CYREG_USB_ARB_EP7_SR\r
-.set USBFS_1_USB__ARB_EP8_CFG, CYREG_USB_ARB_EP8_CFG\r
-.set USBFS_1_USB__ARB_EP8_INT_EN, CYREG_USB_ARB_EP8_INT_EN\r
-.set USBFS_1_USB__ARB_EP8_SR, CYREG_USB_ARB_EP8_SR\r
-.set USBFS_1_USB__ARB_INT_EN, CYREG_USB_ARB_INT_EN\r
-.set USBFS_1_USB__ARB_INT_SR, CYREG_USB_ARB_INT_SR\r
-.set USBFS_1_USB__ARB_RW1_DR, CYREG_USB_ARB_RW1_DR\r
-.set USBFS_1_USB__ARB_RW1_RA, CYREG_USB_ARB_RW1_RA\r
-.set USBFS_1_USB__ARB_RW1_RA_MSB, CYREG_USB_ARB_RW1_RA_MSB\r
-.set USBFS_1_USB__ARB_RW1_WA, CYREG_USB_ARB_RW1_WA\r
-.set USBFS_1_USB__ARB_RW1_WA_MSB, CYREG_USB_ARB_RW1_WA_MSB\r
-.set USBFS_1_USB__ARB_RW2_DR, CYREG_USB_ARB_RW2_DR\r
-.set USBFS_1_USB__ARB_RW2_RA, CYREG_USB_ARB_RW2_RA\r
-.set USBFS_1_USB__ARB_RW2_RA_MSB, CYREG_USB_ARB_RW2_RA_MSB\r
-.set USBFS_1_USB__ARB_RW2_WA, CYREG_USB_ARB_RW2_WA\r
-.set USBFS_1_USB__ARB_RW2_WA_MSB, CYREG_USB_ARB_RW2_WA_MSB\r
-.set USBFS_1_USB__ARB_RW3_DR, CYREG_USB_ARB_RW3_DR\r
-.set USBFS_1_USB__ARB_RW3_RA, CYREG_USB_ARB_RW3_RA\r
-.set USBFS_1_USB__ARB_RW3_RA_MSB, CYREG_USB_ARB_RW3_RA_MSB\r
-.set USBFS_1_USB__ARB_RW3_WA, CYREG_USB_ARB_RW3_WA\r
-.set USBFS_1_USB__ARB_RW3_WA_MSB, CYREG_USB_ARB_RW3_WA_MSB\r
-.set USBFS_1_USB__ARB_RW4_DR, CYREG_USB_ARB_RW4_DR\r
-.set USBFS_1_USB__ARB_RW4_RA, CYREG_USB_ARB_RW4_RA\r
-.set USBFS_1_USB__ARB_RW4_RA_MSB, CYREG_USB_ARB_RW4_RA_MSB\r
-.set USBFS_1_USB__ARB_RW4_WA, CYREG_USB_ARB_RW4_WA\r
-.set USBFS_1_USB__ARB_RW4_WA_MSB, CYREG_USB_ARB_RW4_WA_MSB\r
-.set USBFS_1_USB__ARB_RW5_DR, CYREG_USB_ARB_RW5_DR\r
-.set USBFS_1_USB__ARB_RW5_RA, CYREG_USB_ARB_RW5_RA\r
-.set USBFS_1_USB__ARB_RW5_RA_MSB, CYREG_USB_ARB_RW5_RA_MSB\r
-.set USBFS_1_USB__ARB_RW5_WA, CYREG_USB_ARB_RW5_WA\r
-.set USBFS_1_USB__ARB_RW5_WA_MSB, CYREG_USB_ARB_RW5_WA_MSB\r
-.set USBFS_1_USB__ARB_RW6_DR, CYREG_USB_ARB_RW6_DR\r
-.set USBFS_1_USB__ARB_RW6_RA, CYREG_USB_ARB_RW6_RA\r
-.set USBFS_1_USB__ARB_RW6_RA_MSB, CYREG_USB_ARB_RW6_RA_MSB\r
-.set USBFS_1_USB__ARB_RW6_WA, CYREG_USB_ARB_RW6_WA\r
-.set USBFS_1_USB__ARB_RW6_WA_MSB, CYREG_USB_ARB_RW6_WA_MSB\r
-.set USBFS_1_USB__ARB_RW7_DR, CYREG_USB_ARB_RW7_DR\r
-.set USBFS_1_USB__ARB_RW7_RA, CYREG_USB_ARB_RW7_RA\r
-.set USBFS_1_USB__ARB_RW7_RA_MSB, CYREG_USB_ARB_RW7_RA_MSB\r
-.set USBFS_1_USB__ARB_RW7_WA, CYREG_USB_ARB_RW7_WA\r
-.set USBFS_1_USB__ARB_RW7_WA_MSB, CYREG_USB_ARB_RW7_WA_MSB\r
-.set USBFS_1_USB__ARB_RW8_DR, CYREG_USB_ARB_RW8_DR\r
-.set USBFS_1_USB__ARB_RW8_RA, CYREG_USB_ARB_RW8_RA\r
-.set USBFS_1_USB__ARB_RW8_RA_MSB, CYREG_USB_ARB_RW8_RA_MSB\r
-.set USBFS_1_USB__ARB_RW8_WA, CYREG_USB_ARB_RW8_WA\r
-.set USBFS_1_USB__ARB_RW8_WA_MSB, CYREG_USB_ARB_RW8_WA_MSB\r
-.set USBFS_1_USB__BUF_SIZE, CYREG_USB_BUF_SIZE\r
-.set USBFS_1_USB__BUS_RST_CNT, CYREG_USB_BUS_RST_CNT\r
-.set USBFS_1_USB__CR0, CYREG_USB_CR0\r
-.set USBFS_1_USB__CR1, CYREG_USB_CR1\r
-.set USBFS_1_USB__CWA, CYREG_USB_CWA\r
-.set USBFS_1_USB__CWA_MSB, CYREG_USB_CWA_MSB\r
-.set USBFS_1_USB__DMA_THRES, CYREG_USB_DMA_THRES\r
-.set USBFS_1_USB__DMA_THRES_MSB, CYREG_USB_DMA_THRES_MSB\r
-.set USBFS_1_USB__DYN_RECONFIG, CYREG_USB_DYN_RECONFIG\r
-.set USBFS_1_USB__EP0_CNT, CYREG_USB_EP0_CNT\r
-.set USBFS_1_USB__EP0_CR, CYREG_USB_EP0_CR\r
-.set USBFS_1_USB__EP0_DR0, CYREG_USB_EP0_DR0\r
-.set USBFS_1_USB__EP0_DR1, CYREG_USB_EP0_DR1\r
-.set USBFS_1_USB__EP0_DR2, CYREG_USB_EP0_DR2\r
-.set USBFS_1_USB__EP0_DR3, CYREG_USB_EP0_DR3\r
-.set USBFS_1_USB__EP0_DR4, CYREG_USB_EP0_DR4\r
-.set USBFS_1_USB__EP0_DR5, CYREG_USB_EP0_DR5\r
-.set USBFS_1_USB__EP0_DR6, CYREG_USB_EP0_DR6\r
-.set USBFS_1_USB__EP0_DR7, CYREG_USB_EP0_DR7\r
-.set USBFS_1_USB__EP_ACTIVE, CYREG_USB_EP_ACTIVE\r
-.set USBFS_1_USB__EP_TYPE, CYREG_USB_EP_TYPE\r
-.set USBFS_1_USB__MEM_DATA, CYREG_USB_MEM_DATA_MBASE\r
-.set USBFS_1_USB__PM_ACT_CFG, CYREG_PM_ACT_CFG5\r
-.set USBFS_1_USB__PM_ACT_MSK, 0x01\r
-.set USBFS_1_USB__PM_STBY_CFG, CYREG_PM_STBY_CFG5\r
-.set USBFS_1_USB__PM_STBY_MSK, 0x01\r
-.set USBFS_1_USB__SIE_EP1_CNT0, CYREG_USB_SIE_EP1_CNT0\r
-.set USBFS_1_USB__SIE_EP1_CNT1, CYREG_USB_SIE_EP1_CNT1\r
-.set USBFS_1_USB__SIE_EP1_CR0, CYREG_USB_SIE_EP1_CR0\r
-.set USBFS_1_USB__SIE_EP2_CNT0, CYREG_USB_SIE_EP2_CNT0\r
-.set USBFS_1_USB__SIE_EP2_CNT1, CYREG_USB_SIE_EP2_CNT1\r
-.set USBFS_1_USB__SIE_EP2_CR0, CYREG_USB_SIE_EP2_CR0\r
-.set USBFS_1_USB__SIE_EP3_CNT0, CYREG_USB_SIE_EP3_CNT0\r
-.set USBFS_1_USB__SIE_EP3_CNT1, CYREG_USB_SIE_EP3_CNT1\r
-.set USBFS_1_USB__SIE_EP3_CR0, CYREG_USB_SIE_EP3_CR0\r
-.set USBFS_1_USB__SIE_EP4_CNT0, CYREG_USB_SIE_EP4_CNT0\r
-.set USBFS_1_USB__SIE_EP4_CNT1, CYREG_USB_SIE_EP4_CNT1\r
-.set USBFS_1_USB__SIE_EP4_CR0, CYREG_USB_SIE_EP4_CR0\r
-.set USBFS_1_USB__SIE_EP5_CNT0, CYREG_USB_SIE_EP5_CNT0\r
-.set USBFS_1_USB__SIE_EP5_CNT1, CYREG_USB_SIE_EP5_CNT1\r
-.set USBFS_1_USB__SIE_EP5_CR0, CYREG_USB_SIE_EP5_CR0\r
-.set USBFS_1_USB__SIE_EP6_CNT0, CYREG_USB_SIE_EP6_CNT0\r
-.set USBFS_1_USB__SIE_EP6_CNT1, CYREG_USB_SIE_EP6_CNT1\r
-.set USBFS_1_USB__SIE_EP6_CR0, CYREG_USB_SIE_EP6_CR0\r
-.set USBFS_1_USB__SIE_EP7_CNT0, CYREG_USB_SIE_EP7_CNT0\r
-.set USBFS_1_USB__SIE_EP7_CNT1, CYREG_USB_SIE_EP7_CNT1\r
-.set USBFS_1_USB__SIE_EP7_CR0, CYREG_USB_SIE_EP7_CR0\r
-.set USBFS_1_USB__SIE_EP8_CNT0, CYREG_USB_SIE_EP8_CNT0\r
-.set USBFS_1_USB__SIE_EP8_CNT1, CYREG_USB_SIE_EP8_CNT1\r
-.set USBFS_1_USB__SIE_EP8_CR0, CYREG_USB_SIE_EP8_CR0\r
-.set USBFS_1_USB__SIE_EP_INT_EN, CYREG_USB_SIE_EP_INT_EN\r
-.set USBFS_1_USB__SIE_EP_INT_SR, CYREG_USB_SIE_EP_INT_SR\r
-.set USBFS_1_USB__SOF0, CYREG_USB_SOF0\r
-.set USBFS_1_USB__SOF1, CYREG_USB_SOF1\r
-.set USBFS_1_USB__USBIO_CR0, CYREG_USB_USBIO_CR0\r
-.set USBFS_1_USB__USBIO_CR1, CYREG_USB_USBIO_CR1\r
-.set USBFS_1_USB__USB_CLK_EN, CYREG_USB_USB_CLK_EN\r
-\r
/* scsiTarget */\r
.set scsiTarget_StatusReg__0__MASK, 0x01\r
.set scsiTarget_StatusReg__0__POS, 0\r
.set SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG, CYREG_B0_UDB01_MSK\r
.set SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB01_MSK_ACTL\r
\r
-/* USBFS_1_Dm */\r
-.set USBFS_1_Dm__0__MASK, 0x80\r
-.set USBFS_1_Dm__0__PC, CYREG_IO_PC_PRT15_7_6_PC1\r
-.set USBFS_1_Dm__0__PORT, 15\r
-.set USBFS_1_Dm__0__SHIFT, 7\r
-.set USBFS_1_Dm__AG, CYREG_PRT15_AG\r
-.set USBFS_1_Dm__AMUX, CYREG_PRT15_AMUX\r
-.set USBFS_1_Dm__BIE, CYREG_PRT15_BIE\r
-.set USBFS_1_Dm__BIT_MASK, CYREG_PRT15_BIT_MASK\r
-.set USBFS_1_Dm__BYP, CYREG_PRT15_BYP\r
-.set USBFS_1_Dm__CTL, CYREG_PRT15_CTL\r
-.set USBFS_1_Dm__DM0, CYREG_PRT15_DM0\r
-.set USBFS_1_Dm__DM1, CYREG_PRT15_DM1\r
-.set USBFS_1_Dm__DM2, CYREG_PRT15_DM2\r
-.set USBFS_1_Dm__DR, CYREG_PRT15_DR\r
-.set USBFS_1_Dm__INP_DIS, CYREG_PRT15_INP_DIS\r
-.set USBFS_1_Dm__LCD_COM_SEG, CYREG_PRT15_LCD_COM_SEG\r
-.set USBFS_1_Dm__LCD_EN, CYREG_PRT15_LCD_EN\r
-.set USBFS_1_Dm__MASK, 0x80\r
-.set USBFS_1_Dm__PORT, 15\r
-.set USBFS_1_Dm__PRT, CYREG_PRT15_PRT\r
-.set USBFS_1_Dm__PRTDSI__CAPS_SEL, CYREG_PRT15_CAPS_SEL\r
-.set USBFS_1_Dm__PRTDSI__DBL_SYNC_IN, CYREG_PRT15_DBL_SYNC_IN\r
-.set USBFS_1_Dm__PRTDSI__OE_SEL0, CYREG_PRT15_OE_SEL0\r
-.set USBFS_1_Dm__PRTDSI__OE_SEL1, CYREG_PRT15_OE_SEL1\r
-.set USBFS_1_Dm__PRTDSI__OUT_SEL0, CYREG_PRT15_OUT_SEL0\r
-.set USBFS_1_Dm__PRTDSI__OUT_SEL1, CYREG_PRT15_OUT_SEL1\r
-.set USBFS_1_Dm__PRTDSI__SYNC_OUT, CYREG_PRT15_SYNC_OUT\r
-.set USBFS_1_Dm__PS, CYREG_PRT15_PS\r
-.set USBFS_1_Dm__SHIFT, 7\r
-.set USBFS_1_Dm__SLW, CYREG_PRT15_SLW\r
+/* USBFS_ep_0 */\r
+.set USBFS_ep_0__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
+.set USBFS_ep_0__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
+.set USBFS_ep_0__INTC_MASK, 0x1000000\r
+.set USBFS_ep_0__INTC_NUMBER, 24\r
+.set USBFS_ep_0__INTC_PRIOR_NUM, 7\r
+.set USBFS_ep_0__INTC_PRIOR_REG, CYREG_NVIC_PRI_24\r
+.set USBFS_ep_0__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
+.set USBFS_ep_0__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
+\r
+/* USBFS_ep_1 */\r
+.set USBFS_ep_1__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
+.set USBFS_ep_1__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
+.set USBFS_ep_1__INTC_MASK, 0x01\r
+.set USBFS_ep_1__INTC_NUMBER, 0\r
+.set USBFS_ep_1__INTC_PRIOR_NUM, 7\r
+.set USBFS_ep_1__INTC_PRIOR_REG, CYREG_NVIC_PRI_0\r
+.set USBFS_ep_1__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
+.set USBFS_ep_1__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_Dp */\r
-.set USBFS_1_Dp__0__MASK, 0x40\r
-.set USBFS_1_Dp__0__PC, CYREG_IO_PC_PRT15_7_6_PC0\r
-.set USBFS_1_Dp__0__PORT, 15\r
-.set USBFS_1_Dp__0__SHIFT, 6\r
-.set USBFS_1_Dp__AG, CYREG_PRT15_AG\r
-.set USBFS_1_Dp__AMUX, CYREG_PRT15_AMUX\r
-.set USBFS_1_Dp__BIE, CYREG_PRT15_BIE\r
-.set USBFS_1_Dp__BIT_MASK, CYREG_PRT15_BIT_MASK\r
-.set USBFS_1_Dp__BYP, CYREG_PRT15_BYP\r
-.set USBFS_1_Dp__CTL, CYREG_PRT15_CTL\r
-.set USBFS_1_Dp__DM0, CYREG_PRT15_DM0\r
-.set USBFS_1_Dp__DM1, CYREG_PRT15_DM1\r
-.set USBFS_1_Dp__DM2, CYREG_PRT15_DM2\r
-.set USBFS_1_Dp__DR, CYREG_PRT15_DR\r
-.set USBFS_1_Dp__INP_DIS, CYREG_PRT15_INP_DIS\r
-.set USBFS_1_Dp__INTSTAT, CYREG_PICU15_INTSTAT\r
-.set USBFS_1_Dp__LCD_COM_SEG, CYREG_PRT15_LCD_COM_SEG\r
-.set USBFS_1_Dp__LCD_EN, CYREG_PRT15_LCD_EN\r
-.set USBFS_1_Dp__MASK, 0x40\r
-.set USBFS_1_Dp__PORT, 15\r
-.set USBFS_1_Dp__PRT, CYREG_PRT15_PRT\r
-.set USBFS_1_Dp__PRTDSI__CAPS_SEL, CYREG_PRT15_CAPS_SEL\r
-.set USBFS_1_Dp__PRTDSI__DBL_SYNC_IN, CYREG_PRT15_DBL_SYNC_IN\r
-.set USBFS_1_Dp__PRTDSI__OE_SEL0, CYREG_PRT15_OE_SEL0\r
-.set USBFS_1_Dp__PRTDSI__OE_SEL1, CYREG_PRT15_OE_SEL1\r
-.set USBFS_1_Dp__PRTDSI__OUT_SEL0, CYREG_PRT15_OUT_SEL0\r
-.set USBFS_1_Dp__PRTDSI__OUT_SEL1, CYREG_PRT15_OUT_SEL1\r
-.set USBFS_1_Dp__PRTDSI__SYNC_OUT, CYREG_PRT15_SYNC_OUT\r
-.set USBFS_1_Dp__PS, CYREG_PRT15_PS\r
-.set USBFS_1_Dp__SHIFT, 6\r
-.set USBFS_1_Dp__SLW, CYREG_PRT15_SLW\r
-.set USBFS_1_Dp__SNAP, CYREG_PICU_15_SNAP_15\r
+/* USBFS_ep_2 */\r
+.set USBFS_ep_2__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0\r
+.set USBFS_ep_2__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0\r
+.set USBFS_ep_2__INTC_MASK, 0x02\r
+.set USBFS_ep_2__INTC_NUMBER, 1\r
+.set USBFS_ep_2__INTC_PRIOR_NUM, 7\r
+.set USBFS_ep_2__INTC_PRIOR_REG, CYREG_NVIC_PRI_1\r
+.set USBFS_ep_2__INTC_SET_EN_REG, CYREG_NVIC_SETENA0\r
+.set USBFS_ep_2__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0\r
+\r
+/* USBFS_USB */\r
+.set USBFS_USB__ARB_CFG, CYREG_USB_ARB_CFG\r
+.set USBFS_USB__ARB_EP1_CFG, CYREG_USB_ARB_EP1_CFG\r
+.set USBFS_USB__ARB_EP1_INT_EN, CYREG_USB_ARB_EP1_INT_EN\r
+.set USBFS_USB__ARB_EP1_SR, CYREG_USB_ARB_EP1_SR\r
+.set USBFS_USB__ARB_EP2_CFG, CYREG_USB_ARB_EP2_CFG\r
+.set USBFS_USB__ARB_EP2_INT_EN, CYREG_USB_ARB_EP2_INT_EN\r
+.set USBFS_USB__ARB_EP2_SR, CYREG_USB_ARB_EP2_SR\r
+.set USBFS_USB__ARB_EP3_CFG, CYREG_USB_ARB_EP3_CFG\r
+.set USBFS_USB__ARB_EP3_INT_EN, CYREG_USB_ARB_EP3_INT_EN\r
+.set USBFS_USB__ARB_EP3_SR, CYREG_USB_ARB_EP3_SR\r
+.set USBFS_USB__ARB_EP4_CFG, CYREG_USB_ARB_EP4_CFG\r
+.set USBFS_USB__ARB_EP4_INT_EN, CYREG_USB_ARB_EP4_INT_EN\r
+.set USBFS_USB__ARB_EP4_SR, CYREG_USB_ARB_EP4_SR\r
+.set USBFS_USB__ARB_EP5_CFG, CYREG_USB_ARB_EP5_CFG\r
+.set USBFS_USB__ARB_EP5_INT_EN, CYREG_USB_ARB_EP5_INT_EN\r
+.set USBFS_USB__ARB_EP5_SR, CYREG_USB_ARB_EP5_SR\r
+.set USBFS_USB__ARB_EP6_CFG, CYREG_USB_ARB_EP6_CFG\r
+.set USBFS_USB__ARB_EP6_INT_EN, CYREG_USB_ARB_EP6_INT_EN\r
+.set USBFS_USB__ARB_EP6_SR, CYREG_USB_ARB_EP6_SR\r
+.set USBFS_USB__ARB_EP7_CFG, CYREG_USB_ARB_EP7_CFG\r
+.set USBFS_USB__ARB_EP7_INT_EN, CYREG_USB_ARB_EP7_INT_EN\r
+.set USBFS_USB__ARB_EP7_SR, CYREG_USB_ARB_EP7_SR\r
+.set USBFS_USB__ARB_EP8_CFG, CYREG_USB_ARB_EP8_CFG\r
+.set USBFS_USB__ARB_EP8_INT_EN, CYREG_USB_ARB_EP8_INT_EN\r
+.set USBFS_USB__ARB_EP8_SR, CYREG_USB_ARB_EP8_SR\r
+.set USBFS_USB__ARB_INT_EN, CYREG_USB_ARB_INT_EN\r
+.set USBFS_USB__ARB_INT_SR, CYREG_USB_ARB_INT_SR\r
+.set USBFS_USB__ARB_RW1_DR, CYREG_USB_ARB_RW1_DR\r
+.set USBFS_USB__ARB_RW1_RA, CYREG_USB_ARB_RW1_RA\r
+.set USBFS_USB__ARB_RW1_RA_MSB, CYREG_USB_ARB_RW1_RA_MSB\r
+.set USBFS_USB__ARB_RW1_WA, CYREG_USB_ARB_RW1_WA\r
+.set USBFS_USB__ARB_RW1_WA_MSB, CYREG_USB_ARB_RW1_WA_MSB\r
+.set USBFS_USB__ARB_RW2_DR, CYREG_USB_ARB_RW2_DR\r
+.set USBFS_USB__ARB_RW2_RA, CYREG_USB_ARB_RW2_RA\r
+.set USBFS_USB__ARB_RW2_RA_MSB, CYREG_USB_ARB_RW2_RA_MSB\r
+.set USBFS_USB__ARB_RW2_WA, CYREG_USB_ARB_RW2_WA\r
+.set USBFS_USB__ARB_RW2_WA_MSB, CYREG_USB_ARB_RW2_WA_MSB\r
+.set USBFS_USB__ARB_RW3_DR, CYREG_USB_ARB_RW3_DR\r
+.set USBFS_USB__ARB_RW3_RA, CYREG_USB_ARB_RW3_RA\r
+.set USBFS_USB__ARB_RW3_RA_MSB, CYREG_USB_ARB_RW3_RA_MSB\r
+.set USBFS_USB__ARB_RW3_WA, CYREG_USB_ARB_RW3_WA\r
+.set USBFS_USB__ARB_RW3_WA_MSB, CYREG_USB_ARB_RW3_WA_MSB\r
+.set USBFS_USB__ARB_RW4_DR, CYREG_USB_ARB_RW4_DR\r
+.set USBFS_USB__ARB_RW4_RA, CYREG_USB_ARB_RW4_RA\r
+.set USBFS_USB__ARB_RW4_RA_MSB, CYREG_USB_ARB_RW4_RA_MSB\r
+.set USBFS_USB__ARB_RW4_WA, CYREG_USB_ARB_RW4_WA\r
+.set USBFS_USB__ARB_RW4_WA_MSB, CYREG_USB_ARB_RW4_WA_MSB\r
+.set USBFS_USB__ARB_RW5_DR, CYREG_USB_ARB_RW5_DR\r
+.set USBFS_USB__ARB_RW5_RA, CYREG_USB_ARB_RW5_RA\r
+.set USBFS_USB__ARB_RW5_RA_MSB, CYREG_USB_ARB_RW5_RA_MSB\r
+.set USBFS_USB__ARB_RW5_WA, CYREG_USB_ARB_RW5_WA\r
+.set USBFS_USB__ARB_RW5_WA_MSB, CYREG_USB_ARB_RW5_WA_MSB\r
+.set USBFS_USB__ARB_RW6_DR, CYREG_USB_ARB_RW6_DR\r
+.set USBFS_USB__ARB_RW6_RA, CYREG_USB_ARB_RW6_RA\r
+.set USBFS_USB__ARB_RW6_RA_MSB, CYREG_USB_ARB_RW6_RA_MSB\r
+.set USBFS_USB__ARB_RW6_WA, CYREG_USB_ARB_RW6_WA\r
+.set USBFS_USB__ARB_RW6_WA_MSB, CYREG_USB_ARB_RW6_WA_MSB\r
+.set USBFS_USB__ARB_RW7_DR, CYREG_USB_ARB_RW7_DR\r
+.set USBFS_USB__ARB_RW7_RA, CYREG_USB_ARB_RW7_RA\r
+.set USBFS_USB__ARB_RW7_RA_MSB, CYREG_USB_ARB_RW7_RA_MSB\r
+.set USBFS_USB__ARB_RW7_WA, CYREG_USB_ARB_RW7_WA\r
+.set USBFS_USB__ARB_RW7_WA_MSB, CYREG_USB_ARB_RW7_WA_MSB\r
+.set USBFS_USB__ARB_RW8_DR, CYREG_USB_ARB_RW8_DR\r
+.set USBFS_USB__ARB_RW8_RA, CYREG_USB_ARB_RW8_RA\r
+.set USBFS_USB__ARB_RW8_RA_MSB, CYREG_USB_ARB_RW8_RA_MSB\r
+.set USBFS_USB__ARB_RW8_WA, CYREG_USB_ARB_RW8_WA\r
+.set USBFS_USB__ARB_RW8_WA_MSB, CYREG_USB_ARB_RW8_WA_MSB\r
+.set USBFS_USB__BUF_SIZE, CYREG_USB_BUF_SIZE\r
+.set USBFS_USB__BUS_RST_CNT, CYREG_USB_BUS_RST_CNT\r
+.set USBFS_USB__CR0, CYREG_USB_CR0\r
+.set USBFS_USB__CR1, CYREG_USB_CR1\r
+.set USBFS_USB__CWA, CYREG_USB_CWA\r
+.set USBFS_USB__CWA_MSB, CYREG_USB_CWA_MSB\r
+.set USBFS_USB__DMA_THRES, CYREG_USB_DMA_THRES\r
+.set USBFS_USB__DMA_THRES_MSB, CYREG_USB_DMA_THRES_MSB\r
+.set USBFS_USB__DYN_RECONFIG, CYREG_USB_DYN_RECONFIG\r
+.set USBFS_USB__EP0_CNT, CYREG_USB_EP0_CNT\r
+.set USBFS_USB__EP0_CR, CYREG_USB_EP0_CR\r
+.set USBFS_USB__EP0_DR0, CYREG_USB_EP0_DR0\r
+.set USBFS_USB__EP0_DR1, CYREG_USB_EP0_DR1\r
+.set USBFS_USB__EP0_DR2, CYREG_USB_EP0_DR2\r
+.set USBFS_USB__EP0_DR3, CYREG_USB_EP0_DR3\r
+.set USBFS_USB__EP0_DR4, CYREG_USB_EP0_DR4\r
+.set USBFS_USB__EP0_DR5, CYREG_USB_EP0_DR5\r
+.set USBFS_USB__EP0_DR6, CYREG_USB_EP0_DR6\r
+.set USBFS_USB__EP0_DR7, CYREG_USB_EP0_DR7\r
+.set USBFS_USB__EP_ACTIVE, CYREG_USB_EP_ACTIVE\r
+.set USBFS_USB__EP_TYPE, CYREG_USB_EP_TYPE\r
+.set USBFS_USB__MEM_DATA, CYREG_USB_MEM_DATA_MBASE\r
+.set USBFS_USB__PM_ACT_CFG, CYREG_PM_ACT_CFG5\r
+.set USBFS_USB__PM_ACT_MSK, 0x01\r
+.set USBFS_USB__PM_STBY_CFG, CYREG_PM_STBY_CFG5\r
+.set USBFS_USB__PM_STBY_MSK, 0x01\r
+.set USBFS_USB__SIE_EP1_CNT0, CYREG_USB_SIE_EP1_CNT0\r
+.set USBFS_USB__SIE_EP1_CNT1, CYREG_USB_SIE_EP1_CNT1\r
+.set USBFS_USB__SIE_EP1_CR0, CYREG_USB_SIE_EP1_CR0\r
+.set USBFS_USB__SIE_EP2_CNT0, CYREG_USB_SIE_EP2_CNT0\r
+.set USBFS_USB__SIE_EP2_CNT1, CYREG_USB_SIE_EP2_CNT1\r
+.set USBFS_USB__SIE_EP2_CR0, CYREG_USB_SIE_EP2_CR0\r
+.set USBFS_USB__SIE_EP3_CNT0, CYREG_USB_SIE_EP3_CNT0\r
+.set USBFS_USB__SIE_EP3_CNT1, CYREG_USB_SIE_EP3_CNT1\r
+.set USBFS_USB__SIE_EP3_CR0, CYREG_USB_SIE_EP3_CR0\r
+.set USBFS_USB__SIE_EP4_CNT0, CYREG_USB_SIE_EP4_CNT0\r
+.set USBFS_USB__SIE_EP4_CNT1, CYREG_USB_SIE_EP4_CNT1\r
+.set USBFS_USB__SIE_EP4_CR0, CYREG_USB_SIE_EP4_CR0\r
+.set USBFS_USB__SIE_EP5_CNT0, CYREG_USB_SIE_EP5_CNT0\r
+.set USBFS_USB__SIE_EP5_CNT1, CYREG_USB_SIE_EP5_CNT1\r
+.set USBFS_USB__SIE_EP5_CR0, CYREG_USB_SIE_EP5_CR0\r
+.set USBFS_USB__SIE_EP6_CNT0, CYREG_USB_SIE_EP6_CNT0\r
+.set USBFS_USB__SIE_EP6_CNT1, CYREG_USB_SIE_EP6_CNT1\r
+.set USBFS_USB__SIE_EP6_CR0, CYREG_USB_SIE_EP6_CR0\r
+.set USBFS_USB__SIE_EP7_CNT0, CYREG_USB_SIE_EP7_CNT0\r
+.set USBFS_USB__SIE_EP7_CNT1, CYREG_USB_SIE_EP7_CNT1\r
+.set USBFS_USB__SIE_EP7_CR0, CYREG_USB_SIE_EP7_CR0\r
+.set USBFS_USB__SIE_EP8_CNT0, CYREG_USB_SIE_EP8_CNT0\r
+.set USBFS_USB__SIE_EP8_CNT1, CYREG_USB_SIE_EP8_CNT1\r
+.set USBFS_USB__SIE_EP8_CR0, CYREG_USB_SIE_EP8_CR0\r
+.set USBFS_USB__SIE_EP_INT_EN, CYREG_USB_SIE_EP_INT_EN\r
+.set USBFS_USB__SIE_EP_INT_SR, CYREG_USB_SIE_EP_INT_SR\r
+.set USBFS_USB__SOF0, CYREG_USB_SOF0\r
+.set USBFS_USB__SOF1, CYREG_USB_SOF1\r
+.set USBFS_USB__USBIO_CR0, CYREG_USB_USBIO_CR0\r
+.set USBFS_USB__USBIO_CR1, CYREG_USB_USBIO_CR1\r
+.set USBFS_USB__USB_CLK_EN, CYREG_USB_USB_CLK_EN\r
\r
/* SCSI_ATN */\r
.set SCSI_ATN__0__MASK, 0x20\r
.set SCSI_RST__SLW, CYREG_PRT6_SLW\r
.set SCSI_RST__SNAP, CYREG_PICU6_SNAP\r
\r
+/* USBFS_Dm */\r
+.set USBFS_Dm__0__MASK, 0x80\r
+.set USBFS_Dm__0__PC, CYREG_IO_PC_PRT15_7_6_PC1\r
+.set USBFS_Dm__0__PORT, 15\r
+.set USBFS_Dm__0__SHIFT, 7\r
+.set USBFS_Dm__AG, CYREG_PRT15_AG\r
+.set USBFS_Dm__AMUX, CYREG_PRT15_AMUX\r
+.set USBFS_Dm__BIE, CYREG_PRT15_BIE\r
+.set USBFS_Dm__BIT_MASK, CYREG_PRT15_BIT_MASK\r
+.set USBFS_Dm__BYP, CYREG_PRT15_BYP\r
+.set USBFS_Dm__CTL, CYREG_PRT15_CTL\r
+.set USBFS_Dm__DM0, CYREG_PRT15_DM0\r
+.set USBFS_Dm__DM1, CYREG_PRT15_DM1\r
+.set USBFS_Dm__DM2, CYREG_PRT15_DM2\r
+.set USBFS_Dm__DR, CYREG_PRT15_DR\r
+.set USBFS_Dm__INP_DIS, CYREG_PRT15_INP_DIS\r
+.set USBFS_Dm__LCD_COM_SEG, CYREG_PRT15_LCD_COM_SEG\r
+.set USBFS_Dm__LCD_EN, CYREG_PRT15_LCD_EN\r
+.set USBFS_Dm__MASK, 0x80\r
+.set USBFS_Dm__PORT, 15\r
+.set USBFS_Dm__PRT, CYREG_PRT15_PRT\r
+.set USBFS_Dm__PRTDSI__CAPS_SEL, CYREG_PRT15_CAPS_SEL\r
+.set USBFS_Dm__PRTDSI__DBL_SYNC_IN, CYREG_PRT15_DBL_SYNC_IN\r
+.set USBFS_Dm__PRTDSI__OE_SEL0, CYREG_PRT15_OE_SEL0\r
+.set USBFS_Dm__PRTDSI__OE_SEL1, CYREG_PRT15_OE_SEL1\r
+.set USBFS_Dm__PRTDSI__OUT_SEL0, CYREG_PRT15_OUT_SEL0\r
+.set USBFS_Dm__PRTDSI__OUT_SEL1, CYREG_PRT15_OUT_SEL1\r
+.set USBFS_Dm__PRTDSI__SYNC_OUT, CYREG_PRT15_SYNC_OUT\r
+.set USBFS_Dm__PS, CYREG_PRT15_PS\r
+.set USBFS_Dm__SHIFT, 7\r
+.set USBFS_Dm__SLW, CYREG_PRT15_SLW\r
+\r
+/* USBFS_Dp */\r
+.set USBFS_Dp__0__MASK, 0x40\r
+.set USBFS_Dp__0__PC, CYREG_IO_PC_PRT15_7_6_PC0\r
+.set USBFS_Dp__0__PORT, 15\r
+.set USBFS_Dp__0__SHIFT, 6\r
+.set USBFS_Dp__AG, CYREG_PRT15_AG\r
+.set USBFS_Dp__AMUX, CYREG_PRT15_AMUX\r
+.set USBFS_Dp__BIE, CYREG_PRT15_BIE\r
+.set USBFS_Dp__BIT_MASK, CYREG_PRT15_BIT_MASK\r
+.set USBFS_Dp__BYP, CYREG_PRT15_BYP\r
+.set USBFS_Dp__CTL, CYREG_PRT15_CTL\r
+.set USBFS_Dp__DM0, CYREG_PRT15_DM0\r
+.set USBFS_Dp__DM1, CYREG_PRT15_DM1\r
+.set USBFS_Dp__DM2, CYREG_PRT15_DM2\r
+.set USBFS_Dp__DR, CYREG_PRT15_DR\r
+.set USBFS_Dp__INP_DIS, CYREG_PRT15_INP_DIS\r
+.set USBFS_Dp__INTSTAT, CYREG_PICU15_INTSTAT\r
+.set USBFS_Dp__LCD_COM_SEG, CYREG_PRT15_LCD_COM_SEG\r
+.set USBFS_Dp__LCD_EN, CYREG_PRT15_LCD_EN\r
+.set USBFS_Dp__MASK, 0x40\r
+.set USBFS_Dp__PORT, 15\r
+.set USBFS_Dp__PRT, CYREG_PRT15_PRT\r
+.set USBFS_Dp__PRTDSI__CAPS_SEL, CYREG_PRT15_CAPS_SEL\r
+.set USBFS_Dp__PRTDSI__DBL_SYNC_IN, CYREG_PRT15_DBL_SYNC_IN\r
+.set USBFS_Dp__PRTDSI__OE_SEL0, CYREG_PRT15_OE_SEL0\r
+.set USBFS_Dp__PRTDSI__OE_SEL1, CYREG_PRT15_OE_SEL1\r
+.set USBFS_Dp__PRTDSI__OUT_SEL0, CYREG_PRT15_OUT_SEL0\r
+.set USBFS_Dp__PRTDSI__OUT_SEL1, CYREG_PRT15_OUT_SEL1\r
+.set USBFS_Dp__PRTDSI__SYNC_OUT, CYREG_PRT15_SYNC_OUT\r
+.set USBFS_Dp__PS, CYREG_PRT15_PS\r
+.set USBFS_Dp__SHIFT, 6\r
+.set USBFS_Dp__SLW, CYREG_PRT15_SLW\r
+.set USBFS_Dp__SNAP, CYREG_PICU_15_SNAP_15\r
+\r
/* SCSI_In */\r
.set SCSI_In__0__AG, CYREG_PRT2_AG\r
.set SCSI_In__0__AMUX, CYREG_PRT2_AMUX\r
INCLUDE cydeviceiar.inc\r
INCLUDE cydeviceiar_trm.inc\r
\r
-/* USBFS_1_bus_reset */\r
-USBFS_1_bus_reset__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_bus_reset__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_bus_reset__INTC_MASK EQU 0x800000\r
-USBFS_1_bus_reset__INTC_NUMBER EQU 23\r
-USBFS_1_bus_reset__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_bus_reset__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_23\r
-USBFS_1_bus_reset__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_bus_reset__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+/* USBFS_bus_reset */\r
+USBFS_bus_reset__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_bus_reset__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_bus_reset__INTC_MASK EQU 0x800000\r
+USBFS_bus_reset__INTC_NUMBER EQU 23\r
+USBFS_bus_reset__INTC_PRIOR_NUM EQU 7\r
+USBFS_bus_reset__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_23\r
+USBFS_bus_reset__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_bus_reset__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_arb_int */\r
-USBFS_1_arb_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_arb_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_arb_int__INTC_MASK EQU 0x400000\r
-USBFS_1_arb_int__INTC_NUMBER EQU 22\r
-USBFS_1_arb_int__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_arb_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_22\r
-USBFS_1_arb_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_arb_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+/* USBFS_arb_int */\r
+USBFS_arb_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_arb_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_arb_int__INTC_MASK EQU 0x400000\r
+USBFS_arb_int__INTC_NUMBER EQU 22\r
+USBFS_arb_int__INTC_PRIOR_NUM EQU 7\r
+USBFS_arb_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_22\r
+USBFS_arb_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_arb_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_sof_int */\r
-USBFS_1_sof_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_sof_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_sof_int__INTC_MASK EQU 0x200000\r
-USBFS_1_sof_int__INTC_NUMBER EQU 21\r
-USBFS_1_sof_int__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_sof_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_21\r
-USBFS_1_sof_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_sof_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
-\r
-/* USBFS_1_dp_int */\r
-USBFS_1_dp_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_dp_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_dp_int__INTC_MASK EQU 0x1000\r
-USBFS_1_dp_int__INTC_NUMBER EQU 12\r
-USBFS_1_dp_int__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_dp_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_12\r
-USBFS_1_dp_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_dp_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+/* USBFS_sof_int */\r
+USBFS_sof_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_sof_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_sof_int__INTC_MASK EQU 0x200000\r
+USBFS_sof_int__INTC_NUMBER EQU 21\r
+USBFS_sof_int__INTC_PRIOR_NUM EQU 7\r
+USBFS_sof_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_21\r
+USBFS_sof_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_sof_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
/* SCSI_ATN_ISR */\r
SCSI_ATN_ISR__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
SDCard_BSPIM_sR8_Dp_u0__MSK_DP_AUX_CTL_REG EQU CYREG_B0_UDB07_MSK_ACTL\r
SDCard_BSPIM_sR8_Dp_u0__PER_DP_AUX_CTL_REG EQU CYREG_B0_UDB07_MSK_ACTL\r
\r
-/* USBFS_1_ep_0 */\r
-USBFS_1_ep_0__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_ep_0__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_ep_0__INTC_MASK EQU 0x1000000\r
-USBFS_1_ep_0__INTC_NUMBER EQU 24\r
-USBFS_1_ep_0__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_ep_0__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_24\r
-USBFS_1_ep_0__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_ep_0__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
-\r
-/* USBFS_1_ep_1 */\r
-USBFS_1_ep_1__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_ep_1__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_ep_1__INTC_MASK EQU 0x01\r
-USBFS_1_ep_1__INTC_NUMBER EQU 0\r
-USBFS_1_ep_1__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0\r
-USBFS_1_ep_1__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_ep_1__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+/* USBFS_dp_int */\r
+USBFS_dp_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_dp_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_dp_int__INTC_MASK EQU 0x1000\r
+USBFS_dp_int__INTC_NUMBER EQU 12\r
+USBFS_dp_int__INTC_PRIOR_NUM EQU 7\r
+USBFS_dp_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_12\r
+USBFS_dp_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_dp_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
/* SCSI_CTL_IO */\r
SCSI_CTL_IO_Sync_ctrl_reg__0__MASK EQU 0x01\r
SD_Init_Clk__PM_STBY_CFG EQU CYREG_PM_STBY_CFG2\r
SD_Init_Clk__PM_STBY_MSK EQU 0x02\r
\r
-/* USBFS_1_USB */\r
-USBFS_1_USB__ARB_CFG EQU CYREG_USB_ARB_CFG\r
-USBFS_1_USB__ARB_EP1_CFG EQU CYREG_USB_ARB_EP1_CFG\r
-USBFS_1_USB__ARB_EP1_INT_EN EQU CYREG_USB_ARB_EP1_INT_EN\r
-USBFS_1_USB__ARB_EP1_SR EQU CYREG_USB_ARB_EP1_SR\r
-USBFS_1_USB__ARB_EP2_CFG EQU CYREG_USB_ARB_EP2_CFG\r
-USBFS_1_USB__ARB_EP2_INT_EN EQU CYREG_USB_ARB_EP2_INT_EN\r
-USBFS_1_USB__ARB_EP2_SR EQU CYREG_USB_ARB_EP2_SR\r
-USBFS_1_USB__ARB_EP3_CFG EQU CYREG_USB_ARB_EP3_CFG\r
-USBFS_1_USB__ARB_EP3_INT_EN EQU CYREG_USB_ARB_EP3_INT_EN\r
-USBFS_1_USB__ARB_EP3_SR EQU CYREG_USB_ARB_EP3_SR\r
-USBFS_1_USB__ARB_EP4_CFG EQU CYREG_USB_ARB_EP4_CFG\r
-USBFS_1_USB__ARB_EP4_INT_EN EQU CYREG_USB_ARB_EP4_INT_EN\r
-USBFS_1_USB__ARB_EP4_SR EQU CYREG_USB_ARB_EP4_SR\r
-USBFS_1_USB__ARB_EP5_CFG EQU CYREG_USB_ARB_EP5_CFG\r
-USBFS_1_USB__ARB_EP5_INT_EN EQU CYREG_USB_ARB_EP5_INT_EN\r
-USBFS_1_USB__ARB_EP5_SR EQU CYREG_USB_ARB_EP5_SR\r
-USBFS_1_USB__ARB_EP6_CFG EQU CYREG_USB_ARB_EP6_CFG\r
-USBFS_1_USB__ARB_EP6_INT_EN EQU CYREG_USB_ARB_EP6_INT_EN\r
-USBFS_1_USB__ARB_EP6_SR EQU CYREG_USB_ARB_EP6_SR\r
-USBFS_1_USB__ARB_EP7_CFG EQU CYREG_USB_ARB_EP7_CFG\r
-USBFS_1_USB__ARB_EP7_INT_EN EQU CYREG_USB_ARB_EP7_INT_EN\r
-USBFS_1_USB__ARB_EP7_SR EQU CYREG_USB_ARB_EP7_SR\r
-USBFS_1_USB__ARB_EP8_CFG EQU CYREG_USB_ARB_EP8_CFG\r
-USBFS_1_USB__ARB_EP8_INT_EN EQU CYREG_USB_ARB_EP8_INT_EN\r
-USBFS_1_USB__ARB_EP8_SR EQU CYREG_USB_ARB_EP8_SR\r
-USBFS_1_USB__ARB_INT_EN EQU CYREG_USB_ARB_INT_EN\r
-USBFS_1_USB__ARB_INT_SR EQU CYREG_USB_ARB_INT_SR\r
-USBFS_1_USB__ARB_RW1_DR EQU CYREG_USB_ARB_RW1_DR\r
-USBFS_1_USB__ARB_RW1_RA EQU CYREG_USB_ARB_RW1_RA\r
-USBFS_1_USB__ARB_RW1_RA_MSB EQU CYREG_USB_ARB_RW1_RA_MSB\r
-USBFS_1_USB__ARB_RW1_WA EQU CYREG_USB_ARB_RW1_WA\r
-USBFS_1_USB__ARB_RW1_WA_MSB EQU CYREG_USB_ARB_RW1_WA_MSB\r
-USBFS_1_USB__ARB_RW2_DR EQU CYREG_USB_ARB_RW2_DR\r
-USBFS_1_USB__ARB_RW2_RA EQU CYREG_USB_ARB_RW2_RA\r
-USBFS_1_USB__ARB_RW2_RA_MSB EQU CYREG_USB_ARB_RW2_RA_MSB\r
-USBFS_1_USB__ARB_RW2_WA EQU CYREG_USB_ARB_RW2_WA\r
-USBFS_1_USB__ARB_RW2_WA_MSB EQU CYREG_USB_ARB_RW2_WA_MSB\r
-USBFS_1_USB__ARB_RW3_DR EQU CYREG_USB_ARB_RW3_DR\r
-USBFS_1_USB__ARB_RW3_RA EQU CYREG_USB_ARB_RW3_RA\r
-USBFS_1_USB__ARB_RW3_RA_MSB EQU CYREG_USB_ARB_RW3_RA_MSB\r
-USBFS_1_USB__ARB_RW3_WA EQU CYREG_USB_ARB_RW3_WA\r
-USBFS_1_USB__ARB_RW3_WA_MSB EQU CYREG_USB_ARB_RW3_WA_MSB\r
-USBFS_1_USB__ARB_RW4_DR EQU CYREG_USB_ARB_RW4_DR\r
-USBFS_1_USB__ARB_RW4_RA EQU CYREG_USB_ARB_RW4_RA\r
-USBFS_1_USB__ARB_RW4_RA_MSB EQU CYREG_USB_ARB_RW4_RA_MSB\r
-USBFS_1_USB__ARB_RW4_WA EQU CYREG_USB_ARB_RW4_WA\r
-USBFS_1_USB__ARB_RW4_WA_MSB EQU CYREG_USB_ARB_RW4_WA_MSB\r
-USBFS_1_USB__ARB_RW5_DR EQU CYREG_USB_ARB_RW5_DR\r
-USBFS_1_USB__ARB_RW5_RA EQU CYREG_USB_ARB_RW5_RA\r
-USBFS_1_USB__ARB_RW5_RA_MSB EQU CYREG_USB_ARB_RW5_RA_MSB\r
-USBFS_1_USB__ARB_RW5_WA EQU CYREG_USB_ARB_RW5_WA\r
-USBFS_1_USB__ARB_RW5_WA_MSB EQU CYREG_USB_ARB_RW5_WA_MSB\r
-USBFS_1_USB__ARB_RW6_DR EQU CYREG_USB_ARB_RW6_DR\r
-USBFS_1_USB__ARB_RW6_RA EQU CYREG_USB_ARB_RW6_RA\r
-USBFS_1_USB__ARB_RW6_RA_MSB EQU CYREG_USB_ARB_RW6_RA_MSB\r
-USBFS_1_USB__ARB_RW6_WA EQU CYREG_USB_ARB_RW6_WA\r
-USBFS_1_USB__ARB_RW6_WA_MSB EQU CYREG_USB_ARB_RW6_WA_MSB\r
-USBFS_1_USB__ARB_RW7_DR EQU CYREG_USB_ARB_RW7_DR\r
-USBFS_1_USB__ARB_RW7_RA EQU CYREG_USB_ARB_RW7_RA\r
-USBFS_1_USB__ARB_RW7_RA_MSB EQU CYREG_USB_ARB_RW7_RA_MSB\r
-USBFS_1_USB__ARB_RW7_WA EQU CYREG_USB_ARB_RW7_WA\r
-USBFS_1_USB__ARB_RW7_WA_MSB EQU CYREG_USB_ARB_RW7_WA_MSB\r
-USBFS_1_USB__ARB_RW8_DR EQU CYREG_USB_ARB_RW8_DR\r
-USBFS_1_USB__ARB_RW8_RA EQU CYREG_USB_ARB_RW8_RA\r
-USBFS_1_USB__ARB_RW8_RA_MSB EQU CYREG_USB_ARB_RW8_RA_MSB\r
-USBFS_1_USB__ARB_RW8_WA EQU CYREG_USB_ARB_RW8_WA\r
-USBFS_1_USB__ARB_RW8_WA_MSB EQU CYREG_USB_ARB_RW8_WA_MSB\r
-USBFS_1_USB__BUF_SIZE EQU CYREG_USB_BUF_SIZE\r
-USBFS_1_USB__BUS_RST_CNT EQU CYREG_USB_BUS_RST_CNT\r
-USBFS_1_USB__CR0 EQU CYREG_USB_CR0\r
-USBFS_1_USB__CR1 EQU CYREG_USB_CR1\r
-USBFS_1_USB__CWA EQU CYREG_USB_CWA\r
-USBFS_1_USB__CWA_MSB EQU CYREG_USB_CWA_MSB\r
-USBFS_1_USB__DMA_THRES EQU CYREG_USB_DMA_THRES\r
-USBFS_1_USB__DMA_THRES_MSB EQU CYREG_USB_DMA_THRES_MSB\r
-USBFS_1_USB__DYN_RECONFIG EQU CYREG_USB_DYN_RECONFIG\r
-USBFS_1_USB__EP0_CNT EQU CYREG_USB_EP0_CNT\r
-USBFS_1_USB__EP0_CR EQU CYREG_USB_EP0_CR\r
-USBFS_1_USB__EP0_DR0 EQU CYREG_USB_EP0_DR0\r
-USBFS_1_USB__EP0_DR1 EQU CYREG_USB_EP0_DR1\r
-USBFS_1_USB__EP0_DR2 EQU CYREG_USB_EP0_DR2\r
-USBFS_1_USB__EP0_DR3 EQU CYREG_USB_EP0_DR3\r
-USBFS_1_USB__EP0_DR4 EQU CYREG_USB_EP0_DR4\r
-USBFS_1_USB__EP0_DR5 EQU CYREG_USB_EP0_DR5\r
-USBFS_1_USB__EP0_DR6 EQU CYREG_USB_EP0_DR6\r
-USBFS_1_USB__EP0_DR7 EQU CYREG_USB_EP0_DR7\r
-USBFS_1_USB__EP_ACTIVE EQU CYREG_USB_EP_ACTIVE\r
-USBFS_1_USB__EP_TYPE EQU CYREG_USB_EP_TYPE\r
-USBFS_1_USB__MEM_DATA EQU CYREG_USB_MEM_DATA_MBASE\r
-USBFS_1_USB__PM_ACT_CFG EQU CYREG_PM_ACT_CFG5\r
-USBFS_1_USB__PM_ACT_MSK EQU 0x01\r
-USBFS_1_USB__PM_STBY_CFG EQU CYREG_PM_STBY_CFG5\r
-USBFS_1_USB__PM_STBY_MSK EQU 0x01\r
-USBFS_1_USB__SIE_EP1_CNT0 EQU CYREG_USB_SIE_EP1_CNT0\r
-USBFS_1_USB__SIE_EP1_CNT1 EQU CYREG_USB_SIE_EP1_CNT1\r
-USBFS_1_USB__SIE_EP1_CR0 EQU CYREG_USB_SIE_EP1_CR0\r
-USBFS_1_USB__SIE_EP2_CNT0 EQU CYREG_USB_SIE_EP2_CNT0\r
-USBFS_1_USB__SIE_EP2_CNT1 EQU CYREG_USB_SIE_EP2_CNT1\r
-USBFS_1_USB__SIE_EP2_CR0 EQU CYREG_USB_SIE_EP2_CR0\r
-USBFS_1_USB__SIE_EP3_CNT0 EQU CYREG_USB_SIE_EP3_CNT0\r
-USBFS_1_USB__SIE_EP3_CNT1 EQU CYREG_USB_SIE_EP3_CNT1\r
-USBFS_1_USB__SIE_EP3_CR0 EQU CYREG_USB_SIE_EP3_CR0\r
-USBFS_1_USB__SIE_EP4_CNT0 EQU CYREG_USB_SIE_EP4_CNT0\r
-USBFS_1_USB__SIE_EP4_CNT1 EQU CYREG_USB_SIE_EP4_CNT1\r
-USBFS_1_USB__SIE_EP4_CR0 EQU CYREG_USB_SIE_EP4_CR0\r
-USBFS_1_USB__SIE_EP5_CNT0 EQU CYREG_USB_SIE_EP5_CNT0\r
-USBFS_1_USB__SIE_EP5_CNT1 EQU CYREG_USB_SIE_EP5_CNT1\r
-USBFS_1_USB__SIE_EP5_CR0 EQU CYREG_USB_SIE_EP5_CR0\r
-USBFS_1_USB__SIE_EP6_CNT0 EQU CYREG_USB_SIE_EP6_CNT0\r
-USBFS_1_USB__SIE_EP6_CNT1 EQU CYREG_USB_SIE_EP6_CNT1\r
-USBFS_1_USB__SIE_EP6_CR0 EQU CYREG_USB_SIE_EP6_CR0\r
-USBFS_1_USB__SIE_EP7_CNT0 EQU CYREG_USB_SIE_EP7_CNT0\r
-USBFS_1_USB__SIE_EP7_CNT1 EQU CYREG_USB_SIE_EP7_CNT1\r
-USBFS_1_USB__SIE_EP7_CR0 EQU CYREG_USB_SIE_EP7_CR0\r
-USBFS_1_USB__SIE_EP8_CNT0 EQU CYREG_USB_SIE_EP8_CNT0\r
-USBFS_1_USB__SIE_EP8_CNT1 EQU CYREG_USB_SIE_EP8_CNT1\r
-USBFS_1_USB__SIE_EP8_CR0 EQU CYREG_USB_SIE_EP8_CR0\r
-USBFS_1_USB__SIE_EP_INT_EN EQU CYREG_USB_SIE_EP_INT_EN\r
-USBFS_1_USB__SIE_EP_INT_SR EQU CYREG_USB_SIE_EP_INT_SR\r
-USBFS_1_USB__SOF0 EQU CYREG_USB_SOF0\r
-USBFS_1_USB__SOF1 EQU CYREG_USB_SOF1\r
-USBFS_1_USB__USBIO_CR0 EQU CYREG_USB_USBIO_CR0\r
-USBFS_1_USB__USBIO_CR1 EQU CYREG_USB_USBIO_CR1\r
-USBFS_1_USB__USB_CLK_EN EQU CYREG_USB_USB_CLK_EN\r
-\r
/* scsiTarget */\r
scsiTarget_StatusReg__0__MASK EQU 0x01\r
scsiTarget_StatusReg__0__POS EQU 0\r
SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB01_MSK\r
SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB01_MSK_ACTL\r
\r
-/* USBFS_1_Dm */\r
-USBFS_1_Dm__0__MASK EQU 0x80\r
-USBFS_1_Dm__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC1\r
-USBFS_1_Dm__0__PORT EQU 15\r
-USBFS_1_Dm__0__SHIFT EQU 7\r
-USBFS_1_Dm__AG EQU CYREG_PRT15_AG\r
-USBFS_1_Dm__AMUX EQU CYREG_PRT15_AMUX\r
-USBFS_1_Dm__BIE EQU CYREG_PRT15_BIE\r
-USBFS_1_Dm__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
-USBFS_1_Dm__BYP EQU CYREG_PRT15_BYP\r
-USBFS_1_Dm__CTL EQU CYREG_PRT15_CTL\r
-USBFS_1_Dm__DM0 EQU CYREG_PRT15_DM0\r
-USBFS_1_Dm__DM1 EQU CYREG_PRT15_DM1\r
-USBFS_1_Dm__DM2 EQU CYREG_PRT15_DM2\r
-USBFS_1_Dm__DR EQU CYREG_PRT15_DR\r
-USBFS_1_Dm__INP_DIS EQU CYREG_PRT15_INP_DIS\r
-USBFS_1_Dm__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
-USBFS_1_Dm__LCD_EN EQU CYREG_PRT15_LCD_EN\r
-USBFS_1_Dm__MASK EQU 0x80\r
-USBFS_1_Dm__PORT EQU 15\r
-USBFS_1_Dm__PRT EQU CYREG_PRT15_PRT\r
-USBFS_1_Dm__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
-USBFS_1_Dm__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
-USBFS_1_Dm__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
-USBFS_1_Dm__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
-USBFS_1_Dm__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
-USBFS_1_Dm__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
-USBFS_1_Dm__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
-USBFS_1_Dm__PS EQU CYREG_PRT15_PS\r
-USBFS_1_Dm__SHIFT EQU 7\r
-USBFS_1_Dm__SLW EQU CYREG_PRT15_SLW\r
+/* USBFS_ep_0 */\r
+USBFS_ep_0__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_ep_0__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_ep_0__INTC_MASK EQU 0x1000000\r
+USBFS_ep_0__INTC_NUMBER EQU 24\r
+USBFS_ep_0__INTC_PRIOR_NUM EQU 7\r
+USBFS_ep_0__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_24\r
+USBFS_ep_0__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_ep_0__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+\r
+/* USBFS_ep_1 */\r
+USBFS_ep_1__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_ep_1__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_ep_1__INTC_MASK EQU 0x01\r
+USBFS_ep_1__INTC_NUMBER EQU 0\r
+USBFS_ep_1__INTC_PRIOR_NUM EQU 7\r
+USBFS_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0\r
+USBFS_ep_1__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_ep_1__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
-/* USBFS_1_Dp */\r
-USBFS_1_Dp__0__MASK EQU 0x40\r
-USBFS_1_Dp__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC0\r
-USBFS_1_Dp__0__PORT EQU 15\r
-USBFS_1_Dp__0__SHIFT EQU 6\r
-USBFS_1_Dp__AG EQU CYREG_PRT15_AG\r
-USBFS_1_Dp__AMUX EQU CYREG_PRT15_AMUX\r
-USBFS_1_Dp__BIE EQU CYREG_PRT15_BIE\r
-USBFS_1_Dp__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
-USBFS_1_Dp__BYP EQU CYREG_PRT15_BYP\r
-USBFS_1_Dp__CTL EQU CYREG_PRT15_CTL\r
-USBFS_1_Dp__DM0 EQU CYREG_PRT15_DM0\r
-USBFS_1_Dp__DM1 EQU CYREG_PRT15_DM1\r
-USBFS_1_Dp__DM2 EQU CYREG_PRT15_DM2\r
-USBFS_1_Dp__DR EQU CYREG_PRT15_DR\r
-USBFS_1_Dp__INP_DIS EQU CYREG_PRT15_INP_DIS\r
-USBFS_1_Dp__INTSTAT EQU CYREG_PICU15_INTSTAT\r
-USBFS_1_Dp__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
-USBFS_1_Dp__LCD_EN EQU CYREG_PRT15_LCD_EN\r
-USBFS_1_Dp__MASK EQU 0x40\r
-USBFS_1_Dp__PORT EQU 15\r
-USBFS_1_Dp__PRT EQU CYREG_PRT15_PRT\r
-USBFS_1_Dp__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
-USBFS_1_Dp__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
-USBFS_1_Dp__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
-USBFS_1_Dp__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
-USBFS_1_Dp__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
-USBFS_1_Dp__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
-USBFS_1_Dp__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
-USBFS_1_Dp__PS EQU CYREG_PRT15_PS\r
-USBFS_1_Dp__SHIFT EQU 6\r
-USBFS_1_Dp__SLW EQU CYREG_PRT15_SLW\r
-USBFS_1_Dp__SNAP EQU CYREG_PICU_15_SNAP_15\r
+/* USBFS_ep_2 */\r
+USBFS_ep_2__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_ep_2__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_ep_2__INTC_MASK EQU 0x02\r
+USBFS_ep_2__INTC_NUMBER EQU 1\r
+USBFS_ep_2__INTC_PRIOR_NUM EQU 7\r
+USBFS_ep_2__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_1\r
+USBFS_ep_2__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_ep_2__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+\r
+/* USBFS_USB */\r
+USBFS_USB__ARB_CFG EQU CYREG_USB_ARB_CFG\r
+USBFS_USB__ARB_EP1_CFG EQU CYREG_USB_ARB_EP1_CFG\r
+USBFS_USB__ARB_EP1_INT_EN EQU CYREG_USB_ARB_EP1_INT_EN\r
+USBFS_USB__ARB_EP1_SR EQU CYREG_USB_ARB_EP1_SR\r
+USBFS_USB__ARB_EP2_CFG EQU CYREG_USB_ARB_EP2_CFG\r
+USBFS_USB__ARB_EP2_INT_EN EQU CYREG_USB_ARB_EP2_INT_EN\r
+USBFS_USB__ARB_EP2_SR EQU CYREG_USB_ARB_EP2_SR\r
+USBFS_USB__ARB_EP3_CFG EQU CYREG_USB_ARB_EP3_CFG\r
+USBFS_USB__ARB_EP3_INT_EN EQU CYREG_USB_ARB_EP3_INT_EN\r
+USBFS_USB__ARB_EP3_SR EQU CYREG_USB_ARB_EP3_SR\r
+USBFS_USB__ARB_EP4_CFG EQU CYREG_USB_ARB_EP4_CFG\r
+USBFS_USB__ARB_EP4_INT_EN EQU CYREG_USB_ARB_EP4_INT_EN\r
+USBFS_USB__ARB_EP4_SR EQU CYREG_USB_ARB_EP4_SR\r
+USBFS_USB__ARB_EP5_CFG EQU CYREG_USB_ARB_EP5_CFG\r
+USBFS_USB__ARB_EP5_INT_EN EQU CYREG_USB_ARB_EP5_INT_EN\r
+USBFS_USB__ARB_EP5_SR EQU CYREG_USB_ARB_EP5_SR\r
+USBFS_USB__ARB_EP6_CFG EQU CYREG_USB_ARB_EP6_CFG\r
+USBFS_USB__ARB_EP6_INT_EN EQU CYREG_USB_ARB_EP6_INT_EN\r
+USBFS_USB__ARB_EP6_SR EQU CYREG_USB_ARB_EP6_SR\r
+USBFS_USB__ARB_EP7_CFG EQU CYREG_USB_ARB_EP7_CFG\r
+USBFS_USB__ARB_EP7_INT_EN EQU CYREG_USB_ARB_EP7_INT_EN\r
+USBFS_USB__ARB_EP7_SR EQU CYREG_USB_ARB_EP7_SR\r
+USBFS_USB__ARB_EP8_CFG EQU CYREG_USB_ARB_EP8_CFG\r
+USBFS_USB__ARB_EP8_INT_EN EQU CYREG_USB_ARB_EP8_INT_EN\r
+USBFS_USB__ARB_EP8_SR EQU CYREG_USB_ARB_EP8_SR\r
+USBFS_USB__ARB_INT_EN EQU CYREG_USB_ARB_INT_EN\r
+USBFS_USB__ARB_INT_SR EQU CYREG_USB_ARB_INT_SR\r
+USBFS_USB__ARB_RW1_DR EQU CYREG_USB_ARB_RW1_DR\r
+USBFS_USB__ARB_RW1_RA EQU CYREG_USB_ARB_RW1_RA\r
+USBFS_USB__ARB_RW1_RA_MSB EQU CYREG_USB_ARB_RW1_RA_MSB\r
+USBFS_USB__ARB_RW1_WA EQU CYREG_USB_ARB_RW1_WA\r
+USBFS_USB__ARB_RW1_WA_MSB EQU CYREG_USB_ARB_RW1_WA_MSB\r
+USBFS_USB__ARB_RW2_DR EQU CYREG_USB_ARB_RW2_DR\r
+USBFS_USB__ARB_RW2_RA EQU CYREG_USB_ARB_RW2_RA\r
+USBFS_USB__ARB_RW2_RA_MSB EQU CYREG_USB_ARB_RW2_RA_MSB\r
+USBFS_USB__ARB_RW2_WA EQU CYREG_USB_ARB_RW2_WA\r
+USBFS_USB__ARB_RW2_WA_MSB EQU CYREG_USB_ARB_RW2_WA_MSB\r
+USBFS_USB__ARB_RW3_DR EQU CYREG_USB_ARB_RW3_DR\r
+USBFS_USB__ARB_RW3_RA EQU CYREG_USB_ARB_RW3_RA\r
+USBFS_USB__ARB_RW3_RA_MSB EQU CYREG_USB_ARB_RW3_RA_MSB\r
+USBFS_USB__ARB_RW3_WA EQU CYREG_USB_ARB_RW3_WA\r
+USBFS_USB__ARB_RW3_WA_MSB EQU CYREG_USB_ARB_RW3_WA_MSB\r
+USBFS_USB__ARB_RW4_DR EQU CYREG_USB_ARB_RW4_DR\r
+USBFS_USB__ARB_RW4_RA EQU CYREG_USB_ARB_RW4_RA\r
+USBFS_USB__ARB_RW4_RA_MSB EQU CYREG_USB_ARB_RW4_RA_MSB\r
+USBFS_USB__ARB_RW4_WA EQU CYREG_USB_ARB_RW4_WA\r
+USBFS_USB__ARB_RW4_WA_MSB EQU CYREG_USB_ARB_RW4_WA_MSB\r
+USBFS_USB__ARB_RW5_DR EQU CYREG_USB_ARB_RW5_DR\r
+USBFS_USB__ARB_RW5_RA EQU CYREG_USB_ARB_RW5_RA\r
+USBFS_USB__ARB_RW5_RA_MSB EQU CYREG_USB_ARB_RW5_RA_MSB\r
+USBFS_USB__ARB_RW5_WA EQU CYREG_USB_ARB_RW5_WA\r
+USBFS_USB__ARB_RW5_WA_MSB EQU CYREG_USB_ARB_RW5_WA_MSB\r
+USBFS_USB__ARB_RW6_DR EQU CYREG_USB_ARB_RW6_DR\r
+USBFS_USB__ARB_RW6_RA EQU CYREG_USB_ARB_RW6_RA\r
+USBFS_USB__ARB_RW6_RA_MSB EQU CYREG_USB_ARB_RW6_RA_MSB\r
+USBFS_USB__ARB_RW6_WA EQU CYREG_USB_ARB_RW6_WA\r
+USBFS_USB__ARB_RW6_WA_MSB EQU CYREG_USB_ARB_RW6_WA_MSB\r
+USBFS_USB__ARB_RW7_DR EQU CYREG_USB_ARB_RW7_DR\r
+USBFS_USB__ARB_RW7_RA EQU CYREG_USB_ARB_RW7_RA\r
+USBFS_USB__ARB_RW7_RA_MSB EQU CYREG_USB_ARB_RW7_RA_MSB\r
+USBFS_USB__ARB_RW7_WA EQU CYREG_USB_ARB_RW7_WA\r
+USBFS_USB__ARB_RW7_WA_MSB EQU CYREG_USB_ARB_RW7_WA_MSB\r
+USBFS_USB__ARB_RW8_DR EQU CYREG_USB_ARB_RW8_DR\r
+USBFS_USB__ARB_RW8_RA EQU CYREG_USB_ARB_RW8_RA\r
+USBFS_USB__ARB_RW8_RA_MSB EQU CYREG_USB_ARB_RW8_RA_MSB\r
+USBFS_USB__ARB_RW8_WA EQU CYREG_USB_ARB_RW8_WA\r
+USBFS_USB__ARB_RW8_WA_MSB EQU CYREG_USB_ARB_RW8_WA_MSB\r
+USBFS_USB__BUF_SIZE EQU CYREG_USB_BUF_SIZE\r
+USBFS_USB__BUS_RST_CNT EQU CYREG_USB_BUS_RST_CNT\r
+USBFS_USB__CR0 EQU CYREG_USB_CR0\r
+USBFS_USB__CR1 EQU CYREG_USB_CR1\r
+USBFS_USB__CWA EQU CYREG_USB_CWA\r
+USBFS_USB__CWA_MSB EQU CYREG_USB_CWA_MSB\r
+USBFS_USB__DMA_THRES EQU CYREG_USB_DMA_THRES\r
+USBFS_USB__DMA_THRES_MSB EQU CYREG_USB_DMA_THRES_MSB\r
+USBFS_USB__DYN_RECONFIG EQU CYREG_USB_DYN_RECONFIG\r
+USBFS_USB__EP0_CNT EQU CYREG_USB_EP0_CNT\r
+USBFS_USB__EP0_CR EQU CYREG_USB_EP0_CR\r
+USBFS_USB__EP0_DR0 EQU CYREG_USB_EP0_DR0\r
+USBFS_USB__EP0_DR1 EQU CYREG_USB_EP0_DR1\r
+USBFS_USB__EP0_DR2 EQU CYREG_USB_EP0_DR2\r
+USBFS_USB__EP0_DR3 EQU CYREG_USB_EP0_DR3\r
+USBFS_USB__EP0_DR4 EQU CYREG_USB_EP0_DR4\r
+USBFS_USB__EP0_DR5 EQU CYREG_USB_EP0_DR5\r
+USBFS_USB__EP0_DR6 EQU CYREG_USB_EP0_DR6\r
+USBFS_USB__EP0_DR7 EQU CYREG_USB_EP0_DR7\r
+USBFS_USB__EP_ACTIVE EQU CYREG_USB_EP_ACTIVE\r
+USBFS_USB__EP_TYPE EQU CYREG_USB_EP_TYPE\r
+USBFS_USB__MEM_DATA EQU CYREG_USB_MEM_DATA_MBASE\r
+USBFS_USB__PM_ACT_CFG EQU CYREG_PM_ACT_CFG5\r
+USBFS_USB__PM_ACT_MSK EQU 0x01\r
+USBFS_USB__PM_STBY_CFG EQU CYREG_PM_STBY_CFG5\r
+USBFS_USB__PM_STBY_MSK EQU 0x01\r
+USBFS_USB__SIE_EP1_CNT0 EQU CYREG_USB_SIE_EP1_CNT0\r
+USBFS_USB__SIE_EP1_CNT1 EQU CYREG_USB_SIE_EP1_CNT1\r
+USBFS_USB__SIE_EP1_CR0 EQU CYREG_USB_SIE_EP1_CR0\r
+USBFS_USB__SIE_EP2_CNT0 EQU CYREG_USB_SIE_EP2_CNT0\r
+USBFS_USB__SIE_EP2_CNT1 EQU CYREG_USB_SIE_EP2_CNT1\r
+USBFS_USB__SIE_EP2_CR0 EQU CYREG_USB_SIE_EP2_CR0\r
+USBFS_USB__SIE_EP3_CNT0 EQU CYREG_USB_SIE_EP3_CNT0\r
+USBFS_USB__SIE_EP3_CNT1 EQU CYREG_USB_SIE_EP3_CNT1\r
+USBFS_USB__SIE_EP3_CR0 EQU CYREG_USB_SIE_EP3_CR0\r
+USBFS_USB__SIE_EP4_CNT0 EQU CYREG_USB_SIE_EP4_CNT0\r
+USBFS_USB__SIE_EP4_CNT1 EQU CYREG_USB_SIE_EP4_CNT1\r
+USBFS_USB__SIE_EP4_CR0 EQU CYREG_USB_SIE_EP4_CR0\r
+USBFS_USB__SIE_EP5_CNT0 EQU CYREG_USB_SIE_EP5_CNT0\r
+USBFS_USB__SIE_EP5_CNT1 EQU CYREG_USB_SIE_EP5_CNT1\r
+USBFS_USB__SIE_EP5_CR0 EQU CYREG_USB_SIE_EP5_CR0\r
+USBFS_USB__SIE_EP6_CNT0 EQU CYREG_USB_SIE_EP6_CNT0\r
+USBFS_USB__SIE_EP6_CNT1 EQU CYREG_USB_SIE_EP6_CNT1\r
+USBFS_USB__SIE_EP6_CR0 EQU CYREG_USB_SIE_EP6_CR0\r
+USBFS_USB__SIE_EP7_CNT0 EQU CYREG_USB_SIE_EP7_CNT0\r
+USBFS_USB__SIE_EP7_CNT1 EQU CYREG_USB_SIE_EP7_CNT1\r
+USBFS_USB__SIE_EP7_CR0 EQU CYREG_USB_SIE_EP7_CR0\r
+USBFS_USB__SIE_EP8_CNT0 EQU CYREG_USB_SIE_EP8_CNT0\r
+USBFS_USB__SIE_EP8_CNT1 EQU CYREG_USB_SIE_EP8_CNT1\r
+USBFS_USB__SIE_EP8_CR0 EQU CYREG_USB_SIE_EP8_CR0\r
+USBFS_USB__SIE_EP_INT_EN EQU CYREG_USB_SIE_EP_INT_EN\r
+USBFS_USB__SIE_EP_INT_SR EQU CYREG_USB_SIE_EP_INT_SR\r
+USBFS_USB__SOF0 EQU CYREG_USB_SOF0\r
+USBFS_USB__SOF1 EQU CYREG_USB_SOF1\r
+USBFS_USB__USBIO_CR0 EQU CYREG_USB_USBIO_CR0\r
+USBFS_USB__USBIO_CR1 EQU CYREG_USB_USBIO_CR1\r
+USBFS_USB__USB_CLK_EN EQU CYREG_USB_USB_CLK_EN\r
\r
/* SCSI_ATN */\r
SCSI_ATN__0__MASK EQU 0x20\r
SCSI_RST__SLW EQU CYREG_PRT6_SLW\r
SCSI_RST__SNAP EQU CYREG_PICU6_SNAP\r
\r
+/* USBFS_Dm */\r
+USBFS_Dm__0__MASK EQU 0x80\r
+USBFS_Dm__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC1\r
+USBFS_Dm__0__PORT EQU 15\r
+USBFS_Dm__0__SHIFT EQU 7\r
+USBFS_Dm__AG EQU CYREG_PRT15_AG\r
+USBFS_Dm__AMUX EQU CYREG_PRT15_AMUX\r
+USBFS_Dm__BIE EQU CYREG_PRT15_BIE\r
+USBFS_Dm__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
+USBFS_Dm__BYP EQU CYREG_PRT15_BYP\r
+USBFS_Dm__CTL EQU CYREG_PRT15_CTL\r
+USBFS_Dm__DM0 EQU CYREG_PRT15_DM0\r
+USBFS_Dm__DM1 EQU CYREG_PRT15_DM1\r
+USBFS_Dm__DM2 EQU CYREG_PRT15_DM2\r
+USBFS_Dm__DR EQU CYREG_PRT15_DR\r
+USBFS_Dm__INP_DIS EQU CYREG_PRT15_INP_DIS\r
+USBFS_Dm__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
+USBFS_Dm__LCD_EN EQU CYREG_PRT15_LCD_EN\r
+USBFS_Dm__MASK EQU 0x80\r
+USBFS_Dm__PORT EQU 15\r
+USBFS_Dm__PRT EQU CYREG_PRT15_PRT\r
+USBFS_Dm__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
+USBFS_Dm__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
+USBFS_Dm__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
+USBFS_Dm__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
+USBFS_Dm__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
+USBFS_Dm__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
+USBFS_Dm__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
+USBFS_Dm__PS EQU CYREG_PRT15_PS\r
+USBFS_Dm__SHIFT EQU 7\r
+USBFS_Dm__SLW EQU CYREG_PRT15_SLW\r
+\r
+/* USBFS_Dp */\r
+USBFS_Dp__0__MASK EQU 0x40\r
+USBFS_Dp__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC0\r
+USBFS_Dp__0__PORT EQU 15\r
+USBFS_Dp__0__SHIFT EQU 6\r
+USBFS_Dp__AG EQU CYREG_PRT15_AG\r
+USBFS_Dp__AMUX EQU CYREG_PRT15_AMUX\r
+USBFS_Dp__BIE EQU CYREG_PRT15_BIE\r
+USBFS_Dp__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
+USBFS_Dp__BYP EQU CYREG_PRT15_BYP\r
+USBFS_Dp__CTL EQU CYREG_PRT15_CTL\r
+USBFS_Dp__DM0 EQU CYREG_PRT15_DM0\r
+USBFS_Dp__DM1 EQU CYREG_PRT15_DM1\r
+USBFS_Dp__DM2 EQU CYREG_PRT15_DM2\r
+USBFS_Dp__DR EQU CYREG_PRT15_DR\r
+USBFS_Dp__INP_DIS EQU CYREG_PRT15_INP_DIS\r
+USBFS_Dp__INTSTAT EQU CYREG_PICU15_INTSTAT\r
+USBFS_Dp__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
+USBFS_Dp__LCD_EN EQU CYREG_PRT15_LCD_EN\r
+USBFS_Dp__MASK EQU 0x40\r
+USBFS_Dp__PORT EQU 15\r
+USBFS_Dp__PRT EQU CYREG_PRT15_PRT\r
+USBFS_Dp__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
+USBFS_Dp__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
+USBFS_Dp__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
+USBFS_Dp__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
+USBFS_Dp__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
+USBFS_Dp__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
+USBFS_Dp__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
+USBFS_Dp__PS EQU CYREG_PRT15_PS\r
+USBFS_Dp__SHIFT EQU 6\r
+USBFS_Dp__SLW EQU CYREG_PRT15_SLW\r
+USBFS_Dp__SNAP EQU CYREG_PICU_15_SNAP_15\r
+\r
/* SCSI_In */\r
SCSI_In__0__AG EQU CYREG_PRT2_AG\r
SCSI_In__0__AMUX EQU CYREG_PRT2_AMUX\r
GET cydevicerv.inc\r
GET cydevicerv_trm.inc\r
\r
-; USBFS_1_bus_reset\r
-USBFS_1_bus_reset__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_bus_reset__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_bus_reset__INTC_MASK EQU 0x800000\r
-USBFS_1_bus_reset__INTC_NUMBER EQU 23\r
-USBFS_1_bus_reset__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_bus_reset__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_23\r
-USBFS_1_bus_reset__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_bus_reset__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+; USBFS_bus_reset\r
+USBFS_bus_reset__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_bus_reset__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_bus_reset__INTC_MASK EQU 0x800000\r
+USBFS_bus_reset__INTC_NUMBER EQU 23\r
+USBFS_bus_reset__INTC_PRIOR_NUM EQU 7\r
+USBFS_bus_reset__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_23\r
+USBFS_bus_reset__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_bus_reset__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
-; USBFS_1_arb_int\r
-USBFS_1_arb_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_arb_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_arb_int__INTC_MASK EQU 0x400000\r
-USBFS_1_arb_int__INTC_NUMBER EQU 22\r
-USBFS_1_arb_int__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_arb_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_22\r
-USBFS_1_arb_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_arb_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+; USBFS_arb_int\r
+USBFS_arb_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_arb_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_arb_int__INTC_MASK EQU 0x400000\r
+USBFS_arb_int__INTC_NUMBER EQU 22\r
+USBFS_arb_int__INTC_PRIOR_NUM EQU 7\r
+USBFS_arb_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_22\r
+USBFS_arb_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_arb_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
-; USBFS_1_sof_int\r
-USBFS_1_sof_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_sof_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_sof_int__INTC_MASK EQU 0x200000\r
-USBFS_1_sof_int__INTC_NUMBER EQU 21\r
-USBFS_1_sof_int__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_sof_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_21\r
-USBFS_1_sof_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_sof_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
-\r
-; USBFS_1_dp_int\r
-USBFS_1_dp_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_dp_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_dp_int__INTC_MASK EQU 0x1000\r
-USBFS_1_dp_int__INTC_NUMBER EQU 12\r
-USBFS_1_dp_int__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_dp_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_12\r
-USBFS_1_dp_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_dp_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+; USBFS_sof_int\r
+USBFS_sof_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_sof_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_sof_int__INTC_MASK EQU 0x200000\r
+USBFS_sof_int__INTC_NUMBER EQU 21\r
+USBFS_sof_int__INTC_PRIOR_NUM EQU 7\r
+USBFS_sof_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_21\r
+USBFS_sof_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_sof_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
; SCSI_ATN_ISR\r
SCSI_ATN_ISR__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
SDCard_BSPIM_sR8_Dp_u0__MSK_DP_AUX_CTL_REG EQU CYREG_B0_UDB07_MSK_ACTL\r
SDCard_BSPIM_sR8_Dp_u0__PER_DP_AUX_CTL_REG EQU CYREG_B0_UDB07_MSK_ACTL\r
\r
-; USBFS_1_ep_0\r
-USBFS_1_ep_0__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_ep_0__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_ep_0__INTC_MASK EQU 0x1000000\r
-USBFS_1_ep_0__INTC_NUMBER EQU 24\r
-USBFS_1_ep_0__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_ep_0__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_24\r
-USBFS_1_ep_0__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_ep_0__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
-\r
-; USBFS_1_ep_1\r
-USBFS_1_ep_1__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
-USBFS_1_ep_1__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
-USBFS_1_ep_1__INTC_MASK EQU 0x01\r
-USBFS_1_ep_1__INTC_NUMBER EQU 0\r
-USBFS_1_ep_1__INTC_PRIOR_NUM EQU 7\r
-USBFS_1_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0\r
-USBFS_1_ep_1__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
-USBFS_1_ep_1__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+; USBFS_dp_int\r
+USBFS_dp_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_dp_int__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_dp_int__INTC_MASK EQU 0x1000\r
+USBFS_dp_int__INTC_NUMBER EQU 12\r
+USBFS_dp_int__INTC_PRIOR_NUM EQU 7\r
+USBFS_dp_int__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_12\r
+USBFS_dp_int__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_dp_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
; SCSI_CTL_IO\r
SCSI_CTL_IO_Sync_ctrl_reg__0__MASK EQU 0x01\r
SD_Init_Clk__PM_STBY_CFG EQU CYREG_PM_STBY_CFG2\r
SD_Init_Clk__PM_STBY_MSK EQU 0x02\r
\r
-; USBFS_1_USB\r
-USBFS_1_USB__ARB_CFG EQU CYREG_USB_ARB_CFG\r
-USBFS_1_USB__ARB_EP1_CFG EQU CYREG_USB_ARB_EP1_CFG\r
-USBFS_1_USB__ARB_EP1_INT_EN EQU CYREG_USB_ARB_EP1_INT_EN\r
-USBFS_1_USB__ARB_EP1_SR EQU CYREG_USB_ARB_EP1_SR\r
-USBFS_1_USB__ARB_EP2_CFG EQU CYREG_USB_ARB_EP2_CFG\r
-USBFS_1_USB__ARB_EP2_INT_EN EQU CYREG_USB_ARB_EP2_INT_EN\r
-USBFS_1_USB__ARB_EP2_SR EQU CYREG_USB_ARB_EP2_SR\r
-USBFS_1_USB__ARB_EP3_CFG EQU CYREG_USB_ARB_EP3_CFG\r
-USBFS_1_USB__ARB_EP3_INT_EN EQU CYREG_USB_ARB_EP3_INT_EN\r
-USBFS_1_USB__ARB_EP3_SR EQU CYREG_USB_ARB_EP3_SR\r
-USBFS_1_USB__ARB_EP4_CFG EQU CYREG_USB_ARB_EP4_CFG\r
-USBFS_1_USB__ARB_EP4_INT_EN EQU CYREG_USB_ARB_EP4_INT_EN\r
-USBFS_1_USB__ARB_EP4_SR EQU CYREG_USB_ARB_EP4_SR\r
-USBFS_1_USB__ARB_EP5_CFG EQU CYREG_USB_ARB_EP5_CFG\r
-USBFS_1_USB__ARB_EP5_INT_EN EQU CYREG_USB_ARB_EP5_INT_EN\r
-USBFS_1_USB__ARB_EP5_SR EQU CYREG_USB_ARB_EP5_SR\r
-USBFS_1_USB__ARB_EP6_CFG EQU CYREG_USB_ARB_EP6_CFG\r
-USBFS_1_USB__ARB_EP6_INT_EN EQU CYREG_USB_ARB_EP6_INT_EN\r
-USBFS_1_USB__ARB_EP6_SR EQU CYREG_USB_ARB_EP6_SR\r
-USBFS_1_USB__ARB_EP7_CFG EQU CYREG_USB_ARB_EP7_CFG\r
-USBFS_1_USB__ARB_EP7_INT_EN EQU CYREG_USB_ARB_EP7_INT_EN\r
-USBFS_1_USB__ARB_EP7_SR EQU CYREG_USB_ARB_EP7_SR\r
-USBFS_1_USB__ARB_EP8_CFG EQU CYREG_USB_ARB_EP8_CFG\r
-USBFS_1_USB__ARB_EP8_INT_EN EQU CYREG_USB_ARB_EP8_INT_EN\r
-USBFS_1_USB__ARB_EP8_SR EQU CYREG_USB_ARB_EP8_SR\r
-USBFS_1_USB__ARB_INT_EN EQU CYREG_USB_ARB_INT_EN\r
-USBFS_1_USB__ARB_INT_SR EQU CYREG_USB_ARB_INT_SR\r
-USBFS_1_USB__ARB_RW1_DR EQU CYREG_USB_ARB_RW1_DR\r
-USBFS_1_USB__ARB_RW1_RA EQU CYREG_USB_ARB_RW1_RA\r
-USBFS_1_USB__ARB_RW1_RA_MSB EQU CYREG_USB_ARB_RW1_RA_MSB\r
-USBFS_1_USB__ARB_RW1_WA EQU CYREG_USB_ARB_RW1_WA\r
-USBFS_1_USB__ARB_RW1_WA_MSB EQU CYREG_USB_ARB_RW1_WA_MSB\r
-USBFS_1_USB__ARB_RW2_DR EQU CYREG_USB_ARB_RW2_DR\r
-USBFS_1_USB__ARB_RW2_RA EQU CYREG_USB_ARB_RW2_RA\r
-USBFS_1_USB__ARB_RW2_RA_MSB EQU CYREG_USB_ARB_RW2_RA_MSB\r
-USBFS_1_USB__ARB_RW2_WA EQU CYREG_USB_ARB_RW2_WA\r
-USBFS_1_USB__ARB_RW2_WA_MSB EQU CYREG_USB_ARB_RW2_WA_MSB\r
-USBFS_1_USB__ARB_RW3_DR EQU CYREG_USB_ARB_RW3_DR\r
-USBFS_1_USB__ARB_RW3_RA EQU CYREG_USB_ARB_RW3_RA\r
-USBFS_1_USB__ARB_RW3_RA_MSB EQU CYREG_USB_ARB_RW3_RA_MSB\r
-USBFS_1_USB__ARB_RW3_WA EQU CYREG_USB_ARB_RW3_WA\r
-USBFS_1_USB__ARB_RW3_WA_MSB EQU CYREG_USB_ARB_RW3_WA_MSB\r
-USBFS_1_USB__ARB_RW4_DR EQU CYREG_USB_ARB_RW4_DR\r
-USBFS_1_USB__ARB_RW4_RA EQU CYREG_USB_ARB_RW4_RA\r
-USBFS_1_USB__ARB_RW4_RA_MSB EQU CYREG_USB_ARB_RW4_RA_MSB\r
-USBFS_1_USB__ARB_RW4_WA EQU CYREG_USB_ARB_RW4_WA\r
-USBFS_1_USB__ARB_RW4_WA_MSB EQU CYREG_USB_ARB_RW4_WA_MSB\r
-USBFS_1_USB__ARB_RW5_DR EQU CYREG_USB_ARB_RW5_DR\r
-USBFS_1_USB__ARB_RW5_RA EQU CYREG_USB_ARB_RW5_RA\r
-USBFS_1_USB__ARB_RW5_RA_MSB EQU CYREG_USB_ARB_RW5_RA_MSB\r
-USBFS_1_USB__ARB_RW5_WA EQU CYREG_USB_ARB_RW5_WA\r
-USBFS_1_USB__ARB_RW5_WA_MSB EQU CYREG_USB_ARB_RW5_WA_MSB\r
-USBFS_1_USB__ARB_RW6_DR EQU CYREG_USB_ARB_RW6_DR\r
-USBFS_1_USB__ARB_RW6_RA EQU CYREG_USB_ARB_RW6_RA\r
-USBFS_1_USB__ARB_RW6_RA_MSB EQU CYREG_USB_ARB_RW6_RA_MSB\r
-USBFS_1_USB__ARB_RW6_WA EQU CYREG_USB_ARB_RW6_WA\r
-USBFS_1_USB__ARB_RW6_WA_MSB EQU CYREG_USB_ARB_RW6_WA_MSB\r
-USBFS_1_USB__ARB_RW7_DR EQU CYREG_USB_ARB_RW7_DR\r
-USBFS_1_USB__ARB_RW7_RA EQU CYREG_USB_ARB_RW7_RA\r
-USBFS_1_USB__ARB_RW7_RA_MSB EQU CYREG_USB_ARB_RW7_RA_MSB\r
-USBFS_1_USB__ARB_RW7_WA EQU CYREG_USB_ARB_RW7_WA\r
-USBFS_1_USB__ARB_RW7_WA_MSB EQU CYREG_USB_ARB_RW7_WA_MSB\r
-USBFS_1_USB__ARB_RW8_DR EQU CYREG_USB_ARB_RW8_DR\r
-USBFS_1_USB__ARB_RW8_RA EQU CYREG_USB_ARB_RW8_RA\r
-USBFS_1_USB__ARB_RW8_RA_MSB EQU CYREG_USB_ARB_RW8_RA_MSB\r
-USBFS_1_USB__ARB_RW8_WA EQU CYREG_USB_ARB_RW8_WA\r
-USBFS_1_USB__ARB_RW8_WA_MSB EQU CYREG_USB_ARB_RW8_WA_MSB\r
-USBFS_1_USB__BUF_SIZE EQU CYREG_USB_BUF_SIZE\r
-USBFS_1_USB__BUS_RST_CNT EQU CYREG_USB_BUS_RST_CNT\r
-USBFS_1_USB__CR0 EQU CYREG_USB_CR0\r
-USBFS_1_USB__CR1 EQU CYREG_USB_CR1\r
-USBFS_1_USB__CWA EQU CYREG_USB_CWA\r
-USBFS_1_USB__CWA_MSB EQU CYREG_USB_CWA_MSB\r
-USBFS_1_USB__DMA_THRES EQU CYREG_USB_DMA_THRES\r
-USBFS_1_USB__DMA_THRES_MSB EQU CYREG_USB_DMA_THRES_MSB\r
-USBFS_1_USB__DYN_RECONFIG EQU CYREG_USB_DYN_RECONFIG\r
-USBFS_1_USB__EP0_CNT EQU CYREG_USB_EP0_CNT\r
-USBFS_1_USB__EP0_CR EQU CYREG_USB_EP0_CR\r
-USBFS_1_USB__EP0_DR0 EQU CYREG_USB_EP0_DR0\r
-USBFS_1_USB__EP0_DR1 EQU CYREG_USB_EP0_DR1\r
-USBFS_1_USB__EP0_DR2 EQU CYREG_USB_EP0_DR2\r
-USBFS_1_USB__EP0_DR3 EQU CYREG_USB_EP0_DR3\r
-USBFS_1_USB__EP0_DR4 EQU CYREG_USB_EP0_DR4\r
-USBFS_1_USB__EP0_DR5 EQU CYREG_USB_EP0_DR5\r
-USBFS_1_USB__EP0_DR6 EQU CYREG_USB_EP0_DR6\r
-USBFS_1_USB__EP0_DR7 EQU CYREG_USB_EP0_DR7\r
-USBFS_1_USB__EP_ACTIVE EQU CYREG_USB_EP_ACTIVE\r
-USBFS_1_USB__EP_TYPE EQU CYREG_USB_EP_TYPE\r
-USBFS_1_USB__MEM_DATA EQU CYREG_USB_MEM_DATA_MBASE\r
-USBFS_1_USB__PM_ACT_CFG EQU CYREG_PM_ACT_CFG5\r
-USBFS_1_USB__PM_ACT_MSK EQU 0x01\r
-USBFS_1_USB__PM_STBY_CFG EQU CYREG_PM_STBY_CFG5\r
-USBFS_1_USB__PM_STBY_MSK EQU 0x01\r
-USBFS_1_USB__SIE_EP1_CNT0 EQU CYREG_USB_SIE_EP1_CNT0\r
-USBFS_1_USB__SIE_EP1_CNT1 EQU CYREG_USB_SIE_EP1_CNT1\r
-USBFS_1_USB__SIE_EP1_CR0 EQU CYREG_USB_SIE_EP1_CR0\r
-USBFS_1_USB__SIE_EP2_CNT0 EQU CYREG_USB_SIE_EP2_CNT0\r
-USBFS_1_USB__SIE_EP2_CNT1 EQU CYREG_USB_SIE_EP2_CNT1\r
-USBFS_1_USB__SIE_EP2_CR0 EQU CYREG_USB_SIE_EP2_CR0\r
-USBFS_1_USB__SIE_EP3_CNT0 EQU CYREG_USB_SIE_EP3_CNT0\r
-USBFS_1_USB__SIE_EP3_CNT1 EQU CYREG_USB_SIE_EP3_CNT1\r
-USBFS_1_USB__SIE_EP3_CR0 EQU CYREG_USB_SIE_EP3_CR0\r
-USBFS_1_USB__SIE_EP4_CNT0 EQU CYREG_USB_SIE_EP4_CNT0\r
-USBFS_1_USB__SIE_EP4_CNT1 EQU CYREG_USB_SIE_EP4_CNT1\r
-USBFS_1_USB__SIE_EP4_CR0 EQU CYREG_USB_SIE_EP4_CR0\r
-USBFS_1_USB__SIE_EP5_CNT0 EQU CYREG_USB_SIE_EP5_CNT0\r
-USBFS_1_USB__SIE_EP5_CNT1 EQU CYREG_USB_SIE_EP5_CNT1\r
-USBFS_1_USB__SIE_EP5_CR0 EQU CYREG_USB_SIE_EP5_CR0\r
-USBFS_1_USB__SIE_EP6_CNT0 EQU CYREG_USB_SIE_EP6_CNT0\r
-USBFS_1_USB__SIE_EP6_CNT1 EQU CYREG_USB_SIE_EP6_CNT1\r
-USBFS_1_USB__SIE_EP6_CR0 EQU CYREG_USB_SIE_EP6_CR0\r
-USBFS_1_USB__SIE_EP7_CNT0 EQU CYREG_USB_SIE_EP7_CNT0\r
-USBFS_1_USB__SIE_EP7_CNT1 EQU CYREG_USB_SIE_EP7_CNT1\r
-USBFS_1_USB__SIE_EP7_CR0 EQU CYREG_USB_SIE_EP7_CR0\r
-USBFS_1_USB__SIE_EP8_CNT0 EQU CYREG_USB_SIE_EP8_CNT0\r
-USBFS_1_USB__SIE_EP8_CNT1 EQU CYREG_USB_SIE_EP8_CNT1\r
-USBFS_1_USB__SIE_EP8_CR0 EQU CYREG_USB_SIE_EP8_CR0\r
-USBFS_1_USB__SIE_EP_INT_EN EQU CYREG_USB_SIE_EP_INT_EN\r
-USBFS_1_USB__SIE_EP_INT_SR EQU CYREG_USB_SIE_EP_INT_SR\r
-USBFS_1_USB__SOF0 EQU CYREG_USB_SOF0\r
-USBFS_1_USB__SOF1 EQU CYREG_USB_SOF1\r
-USBFS_1_USB__USBIO_CR0 EQU CYREG_USB_USBIO_CR0\r
-USBFS_1_USB__USBIO_CR1 EQU CYREG_USB_USBIO_CR1\r
-USBFS_1_USB__USB_CLK_EN EQU CYREG_USB_USB_CLK_EN\r
-\r
; scsiTarget\r
scsiTarget_StatusReg__0__MASK EQU 0x01\r
scsiTarget_StatusReg__0__POS EQU 0\r
SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB01_MSK\r
SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB01_MSK_ACTL\r
\r
-; USBFS_1_Dm\r
-USBFS_1_Dm__0__MASK EQU 0x80\r
-USBFS_1_Dm__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC1\r
-USBFS_1_Dm__0__PORT EQU 15\r
-USBFS_1_Dm__0__SHIFT EQU 7\r
-USBFS_1_Dm__AG EQU CYREG_PRT15_AG\r
-USBFS_1_Dm__AMUX EQU CYREG_PRT15_AMUX\r
-USBFS_1_Dm__BIE EQU CYREG_PRT15_BIE\r
-USBFS_1_Dm__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
-USBFS_1_Dm__BYP EQU CYREG_PRT15_BYP\r
-USBFS_1_Dm__CTL EQU CYREG_PRT15_CTL\r
-USBFS_1_Dm__DM0 EQU CYREG_PRT15_DM0\r
-USBFS_1_Dm__DM1 EQU CYREG_PRT15_DM1\r
-USBFS_1_Dm__DM2 EQU CYREG_PRT15_DM2\r
-USBFS_1_Dm__DR EQU CYREG_PRT15_DR\r
-USBFS_1_Dm__INP_DIS EQU CYREG_PRT15_INP_DIS\r
-USBFS_1_Dm__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
-USBFS_1_Dm__LCD_EN EQU CYREG_PRT15_LCD_EN\r
-USBFS_1_Dm__MASK EQU 0x80\r
-USBFS_1_Dm__PORT EQU 15\r
-USBFS_1_Dm__PRT EQU CYREG_PRT15_PRT\r
-USBFS_1_Dm__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
-USBFS_1_Dm__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
-USBFS_1_Dm__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
-USBFS_1_Dm__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
-USBFS_1_Dm__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
-USBFS_1_Dm__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
-USBFS_1_Dm__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
-USBFS_1_Dm__PS EQU CYREG_PRT15_PS\r
-USBFS_1_Dm__SHIFT EQU 7\r
-USBFS_1_Dm__SLW EQU CYREG_PRT15_SLW\r
+; USBFS_ep_0\r
+USBFS_ep_0__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_ep_0__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_ep_0__INTC_MASK EQU 0x1000000\r
+USBFS_ep_0__INTC_NUMBER EQU 24\r
+USBFS_ep_0__INTC_PRIOR_NUM EQU 7\r
+USBFS_ep_0__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_24\r
+USBFS_ep_0__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_ep_0__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+\r
+; USBFS_ep_1\r
+USBFS_ep_1__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_ep_1__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_ep_1__INTC_MASK EQU 0x01\r
+USBFS_ep_1__INTC_NUMBER EQU 0\r
+USBFS_ep_1__INTC_PRIOR_NUM EQU 7\r
+USBFS_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0\r
+USBFS_ep_1__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_ep_1__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
\r
-; USBFS_1_Dp\r
-USBFS_1_Dp__0__MASK EQU 0x40\r
-USBFS_1_Dp__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC0\r
-USBFS_1_Dp__0__PORT EQU 15\r
-USBFS_1_Dp__0__SHIFT EQU 6\r
-USBFS_1_Dp__AG EQU CYREG_PRT15_AG\r
-USBFS_1_Dp__AMUX EQU CYREG_PRT15_AMUX\r
-USBFS_1_Dp__BIE EQU CYREG_PRT15_BIE\r
-USBFS_1_Dp__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
-USBFS_1_Dp__BYP EQU CYREG_PRT15_BYP\r
-USBFS_1_Dp__CTL EQU CYREG_PRT15_CTL\r
-USBFS_1_Dp__DM0 EQU CYREG_PRT15_DM0\r
-USBFS_1_Dp__DM1 EQU CYREG_PRT15_DM1\r
-USBFS_1_Dp__DM2 EQU CYREG_PRT15_DM2\r
-USBFS_1_Dp__DR EQU CYREG_PRT15_DR\r
-USBFS_1_Dp__INP_DIS EQU CYREG_PRT15_INP_DIS\r
-USBFS_1_Dp__INTSTAT EQU CYREG_PICU15_INTSTAT\r
-USBFS_1_Dp__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
-USBFS_1_Dp__LCD_EN EQU CYREG_PRT15_LCD_EN\r
-USBFS_1_Dp__MASK EQU 0x40\r
-USBFS_1_Dp__PORT EQU 15\r
-USBFS_1_Dp__PRT EQU CYREG_PRT15_PRT\r
-USBFS_1_Dp__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
-USBFS_1_Dp__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
-USBFS_1_Dp__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
-USBFS_1_Dp__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
-USBFS_1_Dp__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
-USBFS_1_Dp__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
-USBFS_1_Dp__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
-USBFS_1_Dp__PS EQU CYREG_PRT15_PS\r
-USBFS_1_Dp__SHIFT EQU 6\r
-USBFS_1_Dp__SLW EQU CYREG_PRT15_SLW\r
-USBFS_1_Dp__SNAP EQU CYREG_PICU_15_SNAP_15\r
+; USBFS_ep_2\r
+USBFS_ep_2__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0\r
+USBFS_ep_2__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0\r
+USBFS_ep_2__INTC_MASK EQU 0x02\r
+USBFS_ep_2__INTC_NUMBER EQU 1\r
+USBFS_ep_2__INTC_PRIOR_NUM EQU 7\r
+USBFS_ep_2__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_1\r
+USBFS_ep_2__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0\r
+USBFS_ep_2__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0\r
+\r
+; USBFS_USB\r
+USBFS_USB__ARB_CFG EQU CYREG_USB_ARB_CFG\r
+USBFS_USB__ARB_EP1_CFG EQU CYREG_USB_ARB_EP1_CFG\r
+USBFS_USB__ARB_EP1_INT_EN EQU CYREG_USB_ARB_EP1_INT_EN\r
+USBFS_USB__ARB_EP1_SR EQU CYREG_USB_ARB_EP1_SR\r
+USBFS_USB__ARB_EP2_CFG EQU CYREG_USB_ARB_EP2_CFG\r
+USBFS_USB__ARB_EP2_INT_EN EQU CYREG_USB_ARB_EP2_INT_EN\r
+USBFS_USB__ARB_EP2_SR EQU CYREG_USB_ARB_EP2_SR\r
+USBFS_USB__ARB_EP3_CFG EQU CYREG_USB_ARB_EP3_CFG\r
+USBFS_USB__ARB_EP3_INT_EN EQU CYREG_USB_ARB_EP3_INT_EN\r
+USBFS_USB__ARB_EP3_SR EQU CYREG_USB_ARB_EP3_SR\r
+USBFS_USB__ARB_EP4_CFG EQU CYREG_USB_ARB_EP4_CFG\r
+USBFS_USB__ARB_EP4_INT_EN EQU CYREG_USB_ARB_EP4_INT_EN\r
+USBFS_USB__ARB_EP4_SR EQU CYREG_USB_ARB_EP4_SR\r
+USBFS_USB__ARB_EP5_CFG EQU CYREG_USB_ARB_EP5_CFG\r
+USBFS_USB__ARB_EP5_INT_EN EQU CYREG_USB_ARB_EP5_INT_EN\r
+USBFS_USB__ARB_EP5_SR EQU CYREG_USB_ARB_EP5_SR\r
+USBFS_USB__ARB_EP6_CFG EQU CYREG_USB_ARB_EP6_CFG\r
+USBFS_USB__ARB_EP6_INT_EN EQU CYREG_USB_ARB_EP6_INT_EN\r
+USBFS_USB__ARB_EP6_SR EQU CYREG_USB_ARB_EP6_SR\r
+USBFS_USB__ARB_EP7_CFG EQU CYREG_USB_ARB_EP7_CFG\r
+USBFS_USB__ARB_EP7_INT_EN EQU CYREG_USB_ARB_EP7_INT_EN\r
+USBFS_USB__ARB_EP7_SR EQU CYREG_USB_ARB_EP7_SR\r
+USBFS_USB__ARB_EP8_CFG EQU CYREG_USB_ARB_EP8_CFG\r
+USBFS_USB__ARB_EP8_INT_EN EQU CYREG_USB_ARB_EP8_INT_EN\r
+USBFS_USB__ARB_EP8_SR EQU CYREG_USB_ARB_EP8_SR\r
+USBFS_USB__ARB_INT_EN EQU CYREG_USB_ARB_INT_EN\r
+USBFS_USB__ARB_INT_SR EQU CYREG_USB_ARB_INT_SR\r
+USBFS_USB__ARB_RW1_DR EQU CYREG_USB_ARB_RW1_DR\r
+USBFS_USB__ARB_RW1_RA EQU CYREG_USB_ARB_RW1_RA\r
+USBFS_USB__ARB_RW1_RA_MSB EQU CYREG_USB_ARB_RW1_RA_MSB\r
+USBFS_USB__ARB_RW1_WA EQU CYREG_USB_ARB_RW1_WA\r
+USBFS_USB__ARB_RW1_WA_MSB EQU CYREG_USB_ARB_RW1_WA_MSB\r
+USBFS_USB__ARB_RW2_DR EQU CYREG_USB_ARB_RW2_DR\r
+USBFS_USB__ARB_RW2_RA EQU CYREG_USB_ARB_RW2_RA\r
+USBFS_USB__ARB_RW2_RA_MSB EQU CYREG_USB_ARB_RW2_RA_MSB\r
+USBFS_USB__ARB_RW2_WA EQU CYREG_USB_ARB_RW2_WA\r
+USBFS_USB__ARB_RW2_WA_MSB EQU CYREG_USB_ARB_RW2_WA_MSB\r
+USBFS_USB__ARB_RW3_DR EQU CYREG_USB_ARB_RW3_DR\r
+USBFS_USB__ARB_RW3_RA EQU CYREG_USB_ARB_RW3_RA\r
+USBFS_USB__ARB_RW3_RA_MSB EQU CYREG_USB_ARB_RW3_RA_MSB\r
+USBFS_USB__ARB_RW3_WA EQU CYREG_USB_ARB_RW3_WA\r
+USBFS_USB__ARB_RW3_WA_MSB EQU CYREG_USB_ARB_RW3_WA_MSB\r
+USBFS_USB__ARB_RW4_DR EQU CYREG_USB_ARB_RW4_DR\r
+USBFS_USB__ARB_RW4_RA EQU CYREG_USB_ARB_RW4_RA\r
+USBFS_USB__ARB_RW4_RA_MSB EQU CYREG_USB_ARB_RW4_RA_MSB\r
+USBFS_USB__ARB_RW4_WA EQU CYREG_USB_ARB_RW4_WA\r
+USBFS_USB__ARB_RW4_WA_MSB EQU CYREG_USB_ARB_RW4_WA_MSB\r
+USBFS_USB__ARB_RW5_DR EQU CYREG_USB_ARB_RW5_DR\r
+USBFS_USB__ARB_RW5_RA EQU CYREG_USB_ARB_RW5_RA\r
+USBFS_USB__ARB_RW5_RA_MSB EQU CYREG_USB_ARB_RW5_RA_MSB\r
+USBFS_USB__ARB_RW5_WA EQU CYREG_USB_ARB_RW5_WA\r
+USBFS_USB__ARB_RW5_WA_MSB EQU CYREG_USB_ARB_RW5_WA_MSB\r
+USBFS_USB__ARB_RW6_DR EQU CYREG_USB_ARB_RW6_DR\r
+USBFS_USB__ARB_RW6_RA EQU CYREG_USB_ARB_RW6_RA\r
+USBFS_USB__ARB_RW6_RA_MSB EQU CYREG_USB_ARB_RW6_RA_MSB\r
+USBFS_USB__ARB_RW6_WA EQU CYREG_USB_ARB_RW6_WA\r
+USBFS_USB__ARB_RW6_WA_MSB EQU CYREG_USB_ARB_RW6_WA_MSB\r
+USBFS_USB__ARB_RW7_DR EQU CYREG_USB_ARB_RW7_DR\r
+USBFS_USB__ARB_RW7_RA EQU CYREG_USB_ARB_RW7_RA\r
+USBFS_USB__ARB_RW7_RA_MSB EQU CYREG_USB_ARB_RW7_RA_MSB\r
+USBFS_USB__ARB_RW7_WA EQU CYREG_USB_ARB_RW7_WA\r
+USBFS_USB__ARB_RW7_WA_MSB EQU CYREG_USB_ARB_RW7_WA_MSB\r
+USBFS_USB__ARB_RW8_DR EQU CYREG_USB_ARB_RW8_DR\r
+USBFS_USB__ARB_RW8_RA EQU CYREG_USB_ARB_RW8_RA\r
+USBFS_USB__ARB_RW8_RA_MSB EQU CYREG_USB_ARB_RW8_RA_MSB\r
+USBFS_USB__ARB_RW8_WA EQU CYREG_USB_ARB_RW8_WA\r
+USBFS_USB__ARB_RW8_WA_MSB EQU CYREG_USB_ARB_RW8_WA_MSB\r
+USBFS_USB__BUF_SIZE EQU CYREG_USB_BUF_SIZE\r
+USBFS_USB__BUS_RST_CNT EQU CYREG_USB_BUS_RST_CNT\r
+USBFS_USB__CR0 EQU CYREG_USB_CR0\r
+USBFS_USB__CR1 EQU CYREG_USB_CR1\r
+USBFS_USB__CWA EQU CYREG_USB_CWA\r
+USBFS_USB__CWA_MSB EQU CYREG_USB_CWA_MSB\r
+USBFS_USB__DMA_THRES EQU CYREG_USB_DMA_THRES\r
+USBFS_USB__DMA_THRES_MSB EQU CYREG_USB_DMA_THRES_MSB\r
+USBFS_USB__DYN_RECONFIG EQU CYREG_USB_DYN_RECONFIG\r
+USBFS_USB__EP0_CNT EQU CYREG_USB_EP0_CNT\r
+USBFS_USB__EP0_CR EQU CYREG_USB_EP0_CR\r
+USBFS_USB__EP0_DR0 EQU CYREG_USB_EP0_DR0\r
+USBFS_USB__EP0_DR1 EQU CYREG_USB_EP0_DR1\r
+USBFS_USB__EP0_DR2 EQU CYREG_USB_EP0_DR2\r
+USBFS_USB__EP0_DR3 EQU CYREG_USB_EP0_DR3\r
+USBFS_USB__EP0_DR4 EQU CYREG_USB_EP0_DR4\r
+USBFS_USB__EP0_DR5 EQU CYREG_USB_EP0_DR5\r
+USBFS_USB__EP0_DR6 EQU CYREG_USB_EP0_DR6\r
+USBFS_USB__EP0_DR7 EQU CYREG_USB_EP0_DR7\r
+USBFS_USB__EP_ACTIVE EQU CYREG_USB_EP_ACTIVE\r
+USBFS_USB__EP_TYPE EQU CYREG_USB_EP_TYPE\r
+USBFS_USB__MEM_DATA EQU CYREG_USB_MEM_DATA_MBASE\r
+USBFS_USB__PM_ACT_CFG EQU CYREG_PM_ACT_CFG5\r
+USBFS_USB__PM_ACT_MSK EQU 0x01\r
+USBFS_USB__PM_STBY_CFG EQU CYREG_PM_STBY_CFG5\r
+USBFS_USB__PM_STBY_MSK EQU 0x01\r
+USBFS_USB__SIE_EP1_CNT0 EQU CYREG_USB_SIE_EP1_CNT0\r
+USBFS_USB__SIE_EP1_CNT1 EQU CYREG_USB_SIE_EP1_CNT1\r
+USBFS_USB__SIE_EP1_CR0 EQU CYREG_USB_SIE_EP1_CR0\r
+USBFS_USB__SIE_EP2_CNT0 EQU CYREG_USB_SIE_EP2_CNT0\r
+USBFS_USB__SIE_EP2_CNT1 EQU CYREG_USB_SIE_EP2_CNT1\r
+USBFS_USB__SIE_EP2_CR0 EQU CYREG_USB_SIE_EP2_CR0\r
+USBFS_USB__SIE_EP3_CNT0 EQU CYREG_USB_SIE_EP3_CNT0\r
+USBFS_USB__SIE_EP3_CNT1 EQU CYREG_USB_SIE_EP3_CNT1\r
+USBFS_USB__SIE_EP3_CR0 EQU CYREG_USB_SIE_EP3_CR0\r
+USBFS_USB__SIE_EP4_CNT0 EQU CYREG_USB_SIE_EP4_CNT0\r
+USBFS_USB__SIE_EP4_CNT1 EQU CYREG_USB_SIE_EP4_CNT1\r
+USBFS_USB__SIE_EP4_CR0 EQU CYREG_USB_SIE_EP4_CR0\r
+USBFS_USB__SIE_EP5_CNT0 EQU CYREG_USB_SIE_EP5_CNT0\r
+USBFS_USB__SIE_EP5_CNT1 EQU CYREG_USB_SIE_EP5_CNT1\r
+USBFS_USB__SIE_EP5_CR0 EQU CYREG_USB_SIE_EP5_CR0\r
+USBFS_USB__SIE_EP6_CNT0 EQU CYREG_USB_SIE_EP6_CNT0\r
+USBFS_USB__SIE_EP6_CNT1 EQU CYREG_USB_SIE_EP6_CNT1\r
+USBFS_USB__SIE_EP6_CR0 EQU CYREG_USB_SIE_EP6_CR0\r
+USBFS_USB__SIE_EP7_CNT0 EQU CYREG_USB_SIE_EP7_CNT0\r
+USBFS_USB__SIE_EP7_CNT1 EQU CYREG_USB_SIE_EP7_CNT1\r
+USBFS_USB__SIE_EP7_CR0 EQU CYREG_USB_SIE_EP7_CR0\r
+USBFS_USB__SIE_EP8_CNT0 EQU CYREG_USB_SIE_EP8_CNT0\r
+USBFS_USB__SIE_EP8_CNT1 EQU CYREG_USB_SIE_EP8_CNT1\r
+USBFS_USB__SIE_EP8_CR0 EQU CYREG_USB_SIE_EP8_CR0\r
+USBFS_USB__SIE_EP_INT_EN EQU CYREG_USB_SIE_EP_INT_EN\r
+USBFS_USB__SIE_EP_INT_SR EQU CYREG_USB_SIE_EP_INT_SR\r
+USBFS_USB__SOF0 EQU CYREG_USB_SOF0\r
+USBFS_USB__SOF1 EQU CYREG_USB_SOF1\r
+USBFS_USB__USBIO_CR0 EQU CYREG_USB_USBIO_CR0\r
+USBFS_USB__USBIO_CR1 EQU CYREG_USB_USBIO_CR1\r
+USBFS_USB__USB_CLK_EN EQU CYREG_USB_USB_CLK_EN\r
\r
; SCSI_ATN\r
SCSI_ATN__0__MASK EQU 0x20\r
SCSI_RST__SLW EQU CYREG_PRT6_SLW\r
SCSI_RST__SNAP EQU CYREG_PICU6_SNAP\r
\r
+; USBFS_Dm\r
+USBFS_Dm__0__MASK EQU 0x80\r
+USBFS_Dm__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC1\r
+USBFS_Dm__0__PORT EQU 15\r
+USBFS_Dm__0__SHIFT EQU 7\r
+USBFS_Dm__AG EQU CYREG_PRT15_AG\r
+USBFS_Dm__AMUX EQU CYREG_PRT15_AMUX\r
+USBFS_Dm__BIE EQU CYREG_PRT15_BIE\r
+USBFS_Dm__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
+USBFS_Dm__BYP EQU CYREG_PRT15_BYP\r
+USBFS_Dm__CTL EQU CYREG_PRT15_CTL\r
+USBFS_Dm__DM0 EQU CYREG_PRT15_DM0\r
+USBFS_Dm__DM1 EQU CYREG_PRT15_DM1\r
+USBFS_Dm__DM2 EQU CYREG_PRT15_DM2\r
+USBFS_Dm__DR EQU CYREG_PRT15_DR\r
+USBFS_Dm__INP_DIS EQU CYREG_PRT15_INP_DIS\r
+USBFS_Dm__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
+USBFS_Dm__LCD_EN EQU CYREG_PRT15_LCD_EN\r
+USBFS_Dm__MASK EQU 0x80\r
+USBFS_Dm__PORT EQU 15\r
+USBFS_Dm__PRT EQU CYREG_PRT15_PRT\r
+USBFS_Dm__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
+USBFS_Dm__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
+USBFS_Dm__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
+USBFS_Dm__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
+USBFS_Dm__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
+USBFS_Dm__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
+USBFS_Dm__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
+USBFS_Dm__PS EQU CYREG_PRT15_PS\r
+USBFS_Dm__SHIFT EQU 7\r
+USBFS_Dm__SLW EQU CYREG_PRT15_SLW\r
+\r
+; USBFS_Dp\r
+USBFS_Dp__0__MASK EQU 0x40\r
+USBFS_Dp__0__PC EQU CYREG_IO_PC_PRT15_7_6_PC0\r
+USBFS_Dp__0__PORT EQU 15\r
+USBFS_Dp__0__SHIFT EQU 6\r
+USBFS_Dp__AG EQU CYREG_PRT15_AG\r
+USBFS_Dp__AMUX EQU CYREG_PRT15_AMUX\r
+USBFS_Dp__BIE EQU CYREG_PRT15_BIE\r
+USBFS_Dp__BIT_MASK EQU CYREG_PRT15_BIT_MASK\r
+USBFS_Dp__BYP EQU CYREG_PRT15_BYP\r
+USBFS_Dp__CTL EQU CYREG_PRT15_CTL\r
+USBFS_Dp__DM0 EQU CYREG_PRT15_DM0\r
+USBFS_Dp__DM1 EQU CYREG_PRT15_DM1\r
+USBFS_Dp__DM2 EQU CYREG_PRT15_DM2\r
+USBFS_Dp__DR EQU CYREG_PRT15_DR\r
+USBFS_Dp__INP_DIS EQU CYREG_PRT15_INP_DIS\r
+USBFS_Dp__INTSTAT EQU CYREG_PICU15_INTSTAT\r
+USBFS_Dp__LCD_COM_SEG EQU CYREG_PRT15_LCD_COM_SEG\r
+USBFS_Dp__LCD_EN EQU CYREG_PRT15_LCD_EN\r
+USBFS_Dp__MASK EQU 0x40\r
+USBFS_Dp__PORT EQU 15\r
+USBFS_Dp__PRT EQU CYREG_PRT15_PRT\r
+USBFS_Dp__PRTDSI__CAPS_SEL EQU CYREG_PRT15_CAPS_SEL\r
+USBFS_Dp__PRTDSI__DBL_SYNC_IN EQU CYREG_PRT15_DBL_SYNC_IN\r
+USBFS_Dp__PRTDSI__OE_SEL0 EQU CYREG_PRT15_OE_SEL0\r
+USBFS_Dp__PRTDSI__OE_SEL1 EQU CYREG_PRT15_OE_SEL1\r
+USBFS_Dp__PRTDSI__OUT_SEL0 EQU CYREG_PRT15_OUT_SEL0\r
+USBFS_Dp__PRTDSI__OUT_SEL1 EQU CYREG_PRT15_OUT_SEL1\r
+USBFS_Dp__PRTDSI__SYNC_OUT EQU CYREG_PRT15_SYNC_OUT\r
+USBFS_Dp__PS EQU CYREG_PRT15_PS\r
+USBFS_Dp__SHIFT EQU 6\r
+USBFS_Dp__SLW EQU CYREG_PRT15_SLW\r
+USBFS_Dp__SNAP EQU CYREG_PICU_15_SNAP_15\r
+\r
; SCSI_In\r
SCSI_In__0__AG EQU CYREG_PRT2_AG\r
SCSI_In__0__AMUX EQU CYREG_PRT2_AMUX\r
#include <SDCard_PVT.h>\r
#include <SD_MISO_aliases.h>\r
#include <SD_MISO.h>\r
-#include <USBFS_1.h>\r
-#include <USBFS_1_audio.h>\r
-#include <USBFS_1_cdc.h>\r
-#include <USBFS_1_hid.h>\r
-#include <USBFS_1_midi.h>\r
-#include <USBFS_1_pvt.h>\r
+#include <USBFS.h>\r
+#include <USBFS_audio.h>\r
+#include <USBFS_cdc.h>\r
+#include <USBFS_hid.h>\r
+#include <USBFS_midi.h>\r
+#include <USBFS_pvt.h>\r
#include <Bootloadable_1.h>\r
-#include <USBFS_1_Dm_aliases.h>\r
-#include <USBFS_1_Dm.h>\r
-#include <USBFS_1_Dp_aliases.h>\r
-#include <USBFS_1_Dp.h>\r
+#include <USBFS_Dm_aliases.h>\r
+#include <USBFS_Dm.h>\r
+#include <USBFS_Dp_aliases.h>\r
+#include <USBFS_Dp.h>\r
#include <core_cm3_psoc5.h>\r
#include <core_cm3.h>\r
#include <CyDmac.h>\r
<block name="SD_SCK" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="SD_MOSI" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="SD_MISO" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
- <block name="USBFS_1" BASE="0x0" SIZE="0x0" desc="USBFS" visible="true">\r
+ <block name="USBFS" BASE="0x0" SIZE="0x0" desc="USBFS" visible="true">\r
<block name="bus_reset" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="ep_0" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="arb_int" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="USB" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="sof_int" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
+ <block name="ep_1" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="dp_int" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="Clock_vbus" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="Dp" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
- <block name="ep_1" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
+ <block name="ep_2" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="Dm" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
- <register name="USBFS_1_PM_USB_CR0" address="0x40004394" bitWidth="8" desc="USB Power Mode Control Register 0">\r
+ <register name="USBFS_PM_USB_CR0" address="0x40004394" bitWidth="8" desc="USB Power Mode Control Register 0">\r
<field name="fsusbio_ref_en" from="0" to="0" access="RW" resetVal="" desc="" />\r
<field name="fsusbio_pd_n" from="1" to="1" access="RW" resetVal="" desc="" />\r
<field name="fsusbio_pd_pullup_n" from="2" to="2" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_PM_ACT_CFG" address="0x400043A5" bitWidth="8" desc="Active Power Mode Configuration Register" />\r
- <register name="USBFS_1_PM_STBY_CFG" address="0x400043B5" bitWidth="8" desc="Standby Power Mode Configuration Register" />\r
- <register name="USBFS_1_PRT.PS" address="0x400051F1" bitWidth="8" desc="Port Pin State Register">\r
+ <register name="USBFS_PM_ACT_CFG" address="0x400043A5" bitWidth="8" desc="Active Power Mode Configuration Register" />\r
+ <register name="USBFS_PM_STBY_CFG" address="0x400043B5" bitWidth="8" desc="Standby Power Mode Configuration Register" />\r
+ <register name="USBFS_PRT.PS" address="0x400051F1" bitWidth="8" desc="Port Pin State Register">\r
<field name="PinState_DP" from="6" to="6" access="R" resetVal="" desc="" />\r
<field name="PinState_DM" from="7" to="7" access="R" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_PRT_DM0" address="0x400051F2" bitWidth="8" desc="Port Drive Mode Register">\r
+ <register name="USBFS_PRT_DM0" address="0x400051F2" bitWidth="8" desc="Port Drive Mode Register">\r
<field name="DriveMode_DP" from="6" to="6" access="RW" resetVal="" desc="" />\r
<field name="DriveMode_DM" from="7" to="7" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_PRT_DM1" address="0x400051F3" bitWidth="8" desc="Port Drive Mode Register">\r
+ <register name="USBFS_PRT_DM1" address="0x400051F3" bitWidth="8" desc="Port Drive Mode Register">\r
<field name="PullUp_en_DP" from="6" to="6" access="RW" resetVal="" desc="" />\r
<field name="PullUp_en_DM" from="7" to="7" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_PRT.INP_DIS" address="0x400051F8" bitWidth="8" desc="Input buffer disable override">\r
+ <register name="USBFS_PRT.INP_DIS" address="0x400051F8" bitWidth="8" desc="Input buffer disable override">\r
<field name="seinput_dis_dp" from="6" to="6" access="RW" resetVal="" desc="" />\r
<field name="seinput_dis_dm" from="7" to="7" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_EP0_DR0" address="0x40006000" bitWidth="8" desc="bmRequestType" />\r
- <register name="USBFS_1_EP0_DR1" address="0x40006001" bitWidth="8" desc="bRequest" />\r
- <register name="USBFS_1_EP0_DR2" address="0x40006002" bitWidth="8" desc="wValueLo" />\r
- <register name="USBFS_1_EP0_DR3" address="0x40006003" bitWidth="8" desc="wValueHi" />\r
- <register name="USBFS_1_EP0_DR4" address="0x40006004" bitWidth="8" desc="wIndexLo" />\r
- <register name="USBFS_1_EP0_DR5" address="0x40006005" bitWidth="8" desc="wIndexHi" />\r
- <register name="USBFS_1_EP0_DR6" address="0x40006006" bitWidth="8" desc="lengthLo" />\r
- <register name="USBFS_1_EP0_DR7" address="0x40006007" bitWidth="8" desc="lengthHi" />\r
- <register name="USBFS_1_CR0" address="0x40006008" bitWidth="8" desc="USB Control Register 0">\r
+ <register name="USBFS_EP0_DR0" address="0x40006000" bitWidth="8" desc="bmRequestType" />\r
+ <register name="USBFS_EP0_DR1" address="0x40006001" bitWidth="8" desc="bRequest" />\r
+ <register name="USBFS_EP0_DR2" address="0x40006002" bitWidth="8" desc="wValueLo" />\r
+ <register name="USBFS_EP0_DR3" address="0x40006003" bitWidth="8" desc="wValueHi" />\r
+ <register name="USBFS_EP0_DR4" address="0x40006004" bitWidth="8" desc="wIndexLo" />\r
+ <register name="USBFS_EP0_DR5" address="0x40006005" bitWidth="8" desc="wIndexHi" />\r
+ <register name="USBFS_EP0_DR6" address="0x40006006" bitWidth="8" desc="lengthLo" />\r
+ <register name="USBFS_EP0_DR7" address="0x40006007" bitWidth="8" desc="lengthHi" />\r
+ <register name="USBFS_CR0" address="0x40006008" bitWidth="8" desc="USB Control Register 0">\r
<field name="device_address" from="0" to="6" access="R" resetVal="" desc="" />\r
<field name="usb_enable" from="7" to="7" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_CR1" address="0x40006009" bitWidth="8" desc="USB Control Register 1">\r
+ <register name="USBFS_CR1" address="0x40006009" bitWidth="8" desc="USB Control Register 1">\r
<field name="reg_enable" from="0" to="0" access="RW" resetVal="" desc="" />\r
<field name="enable_lock" from="1" to="1" access="RW" resetVal="" desc="" />\r
<field name="bus_activity" from="2" to="2" access="RW" resetVal="" desc="" />\r
<field name="trim_offset_msb" from="3" to="3" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_SIE_EP1_CR0" address="0x4000600E" bitWidth="8" desc="The Endpoint1 Control Register" />\r
- <register name="USBFS_1_USBIO_CR0" address="0x40006010" bitWidth="8" desc="USBIO Control Register 0">\r
+ <register name="USBFS_SIE_EP1_CR0" address="0x4000600E" bitWidth="8" desc="The Endpoint1 Control Register" />\r
+ <register name="USBFS_USBIO_CR0" address="0x40006010" bitWidth="8" desc="USBIO Control Register 0">\r
<field name="rd" from="0" to="0" access="R" resetVal="" desc="" />\r
<field name="td" from="5" to="5" access="RW" resetVal="" desc="" />\r
<field name="tse0" from="6" to="6" access="RW" resetVal="" desc="" />\r
<field name="ten" from="7" to="7" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_USBIO_CR1" address="0x40006012" bitWidth="8" desc="USBIO Control Register 1">\r
+ <register name="USBFS_USBIO_CR1" address="0x40006012" bitWidth="8" desc="USBIO Control Register 1">\r
<field name="dmo" from="0" to="0" access="R" resetVal="" desc="" />\r
<field name="dpo" from="1" to="1" access="R" resetVal="" desc="" />\r
<field name="usbpuen" from="2" to="2" access="RW" resetVal="" desc="" />\r
<field name="iomode" from="5" to="5" access="RW" resetVal="" desc="" />\r
</register>\r
- <register name="USBFS_1_SIE_EP2_CR0" address="0x4000601E" bitWidth="8" desc="The Endpoint2 Control Register" />\r
- <register name="USBFS_1_SIE_EP3_CR0" address="0x4000602E" bitWidth="8" desc="The Endpoint3 Control Register" />\r
- <register name="USBFS_1_SIE_EP4_CR0" address="0x4000603E" bitWidth="8" desc="The Endpoint4 Control Register" />\r
- <register name="USBFS_1_SIE_EP5_CR0" address="0x4000604E" bitWidth="8" desc="The Endpoint5 Control Register" />\r
- <register name="USBFS_1_SIE_EP6_CR0" address="0x4000605E" bitWidth="8" desc="The Endpoint6 Control Register" />\r
- <register name="USBFS_1_SIE_EP7_CR0" address="0x4000606E" bitWidth="8" desc="The Endpoint7 Control Register" />\r
- <register name="USBFS_1_SIE_EP8_CR0" address="0x4000607E" bitWidth="8" desc="The Endpoint8 Control Register" />\r
- <register name="USBFS_1_BUF_SIZE" address="0x4000608C" bitWidth="8" desc="Dedicated Endpoint Buffer Size Register" />\r
- <register name="USBFS_1_EP_ACTIVE" address="0x4000608E" bitWidth="8" desc="Endpoint Active Indication Register" />\r
- <register name="USBFS_1_EP_TYPE" address="0x4000608F" bitWidth="8" desc="Endpoint Type (IN/OUT) Indication" />\r
- <register name="USBFS_1_USB_CLK_EN" address="0x4000609D" bitWidth="8" desc="USB Block Clock Enable Register" />\r
+ <register name="USBFS_SIE_EP2_CR0" address="0x4000601E" bitWidth="8" desc="The Endpoint2 Control Register" />\r
+ <register name="USBFS_SIE_EP3_CR0" address="0x4000602E" bitWidth="8" desc="The Endpoint3 Control Register" />\r
+ <register name="USBFS_SIE_EP4_CR0" address="0x4000603E" bitWidth="8" desc="The Endpoint4 Control Register" />\r
+ <register name="USBFS_SIE_EP5_CR0" address="0x4000604E" bitWidth="8" desc="The Endpoint5 Control Register" />\r
+ <register name="USBFS_SIE_EP6_CR0" address="0x4000605E" bitWidth="8" desc="The Endpoint6 Control Register" />\r
+ <register name="USBFS_SIE_EP7_CR0" address="0x4000606E" bitWidth="8" desc="The Endpoint7 Control Register" />\r
+ <register name="USBFS_SIE_EP8_CR0" address="0x4000607E" bitWidth="8" desc="The Endpoint8 Control Register" />\r
+ <register name="USBFS_BUF_SIZE" address="0x4000608C" bitWidth="8" desc="Dedicated Endpoint Buffer Size Register" />\r
+ <register name="USBFS_EP_ACTIVE" address="0x4000608E" bitWidth="8" desc="Endpoint Active Indication Register" />\r
+ <register name="USBFS_EP_TYPE" address="0x4000608F" bitWidth="8" desc="Endpoint Type (IN/OUT) Indication" />\r
+ <register name="USBFS_USB_CLK_EN" address="0x4000609D" bitWidth="8" desc="USB Block Clock Enable Register" />\r
</block>\r
<block name="Bootloadable_1" BASE="0x0" SIZE="0x0" desc="" visible="true" />\r
<block name="SDCard" BASE="0x0" SIZE="0x0" desc="" visible="true">\r
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolder" version="2">\r
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainer" version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1" persistent="">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemList" version="2">\r
<dependencies>\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1.c" persistent=".\Generated_Source\PSoC5\USBFS_1.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1.h" persistent=".\Generated_Source\PSoC5\USBFS_1.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_audio.c" persistent=".\Generated_Source\PSoC5\USBFS_1_audio.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_audio.h" persistent=".\Generated_Source\PSoC5\USBFS_1_audio.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_boot.c" persistent=".\Generated_Source\PSoC5\USBFS_1_boot.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_cdc.c" persistent=".\Generated_Source\PSoC5\USBFS_1_cdc.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_cdc.h" persistent=".\Generated_Source\PSoC5\USBFS_1_cdc.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_cls.c" persistent=".\Generated_Source\PSoC5\USBFS_1_cls.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_descr.c" persistent=".\Generated_Source\PSoC5\USBFS_1_descr.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_drv.c" persistent=".\Generated_Source\PSoC5\USBFS_1_drv.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_episr.c" persistent=".\Generated_Source\PSoC5\USBFS_1_episr.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_hid.c" persistent=".\Generated_Source\PSoC5\USBFS_1_hid.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_hid.h" persistent=".\Generated_Source\PSoC5\USBFS_1_hid.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_pm.c" persistent=".\Generated_Source\PSoC5\USBFS_1_pm.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_std.c" persistent=".\Generated_Source\PSoC5\USBFS_1_std.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_vnd.c" persistent=".\Generated_Source\PSoC5\USBFS_1_vnd.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_cdc.inf" persistent=".\Generated_Source\PSoC5\USBFS_1_cdc.inf">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_midi.c" persistent=".\Generated_Source\PSoC5\USBFS_1_midi.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_midi.h" persistent=".\Generated_Source\PSoC5\USBFS_1_midi.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_pvt.h" persistent=".\Generated_Source\PSoC5\USBFS_1_pvt.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolder" version="2">\r
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainer" version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dm" persistent="">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemList" version="2">\r
<dependencies>\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dm_aliases.h" persistent=".\Generated_Source\PSoC5\USBFS_1_Dm_aliases.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dm.c" persistent=".\Generated_Source\PSoC5\USBFS_1_Dm.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dm.h" persistent=".\Generated_Source\PSoC5\USBFS_1_Dm.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolder" version="2">\r
<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainer" version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dp" persistent="">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemList" version="2">\r
<dependencies>\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dp_aliases.h" persistent=".\Generated_Source\PSoC5\USBFS_1_Dp_aliases.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dp.c" persistent=".\Generated_Source\PSoC5\USBFS_1_Dp.c">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="ARM_C_FILE" />\r
<PropertyDeltas />\r
<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_1_Dp.h" persistent=".\Generated_Source\PSoC5\USBFS_1_Dp.h">\r
-<Hidden v="False" />\r
+<Hidden v="True" />\r
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
<build_action v="NONE" />\r
<PropertyDeltas />\r
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>\r
<filters />\r
</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>\r
+<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolder" version="2">\r
+<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainer" version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS" persistent="">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemList" version="2">\r
+<dependencies>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS.c" persistent=".\Generated_Source\PSoC5\USBFS.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS.h" persistent=".\Generated_Source\PSoC5\USBFS.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_audio.c" persistent=".\Generated_Source\PSoC5\USBFS_audio.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_audio.h" persistent=".\Generated_Source\PSoC5\USBFS_audio.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_boot.c" persistent=".\Generated_Source\PSoC5\USBFS_boot.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_cdc.c" persistent=".\Generated_Source\PSoC5\USBFS_cdc.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_cdc.h" persistent=".\Generated_Source\PSoC5\USBFS_cdc.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_cls.c" persistent=".\Generated_Source\PSoC5\USBFS_cls.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_descr.c" persistent=".\Generated_Source\PSoC5\USBFS_descr.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_drv.c" persistent=".\Generated_Source\PSoC5\USBFS_drv.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_episr.c" persistent=".\Generated_Source\PSoC5\USBFS_episr.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_hid.c" persistent=".\Generated_Source\PSoC5\USBFS_hid.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_hid.h" persistent=".\Generated_Source\PSoC5\USBFS_hid.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_pm.c" persistent=".\Generated_Source\PSoC5\USBFS_pm.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_std.c" persistent=".\Generated_Source\PSoC5\USBFS_std.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_vnd.c" persistent=".\Generated_Source\PSoC5\USBFS_vnd.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_cdc.inf" persistent=".\Generated_Source\PSoC5\USBFS_cdc.inf">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_midi.c" persistent=".\Generated_Source\PSoC5\USBFS_midi.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_midi.h" persistent=".\Generated_Source\PSoC5\USBFS_midi.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_pvt.h" persistent=".\Generated_Source\PSoC5\USBFS_pvt.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+</dependencies>\r
+</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>\r
+</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>\r
+<filters />\r
+</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>\r
+<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolder" version="2">\r
+<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainer" version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dm" persistent="">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemList" version="2">\r
+<dependencies>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dm_aliases.h" persistent=".\Generated_Source\PSoC5\USBFS_Dm_aliases.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dm.c" persistent=".\Generated_Source\PSoC5\USBFS_Dm.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dm.h" persistent=".\Generated_Source\PSoC5\USBFS_Dm.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+</dependencies>\r
+</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>\r
+</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>\r
+<filters />\r
+</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>\r
+<CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFolder" version="2">\r
+<CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtBaseContainer" version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dp" persistent="">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<CyGuid_0820c2e7-528d-4137-9a08-97257b946089 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItemList" version="2">\r
+<dependencies>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dp_aliases.h" persistent=".\Generated_Source\PSoC5\USBFS_Dp_aliases.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dp.c" persistent=".\Generated_Source\PSoC5\USBFS_Dp.c">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="ARM_C_FILE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+<CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFileGenerated" version="1">\r
+<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">\r
+<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="USBFS_Dp.h" persistent=".\Generated_Source\PSoC5\USBFS_Dp.h">\r
+<Hidden v="False" />\r
+</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>\r
+<build_action v="NONE" />\r
+<PropertyDeltas />\r
+</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>\r
+</CyGuid_405e30c3-81d4-4133-98d6-c3ecf21fec0d>\r
+</dependencies>\r
+</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>\r
+</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>\r
+<filters />\r
+</CyGuid_ebc4f06d-207f-49c2-a540-72acf4adabc0>\r
</dependencies>\r
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>\r
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>\r
<width>32</width>\r
<peripherals>\r
<peripheral>\r
- <name>USBFS_1</name>\r
+ <name>USBFS</name>\r
<description>USBFS</description>\r
<baseAddress>0x40004394</baseAddress>\r
<addressBlock>\r
</addressBlock>\r
<registers>\r
<register>\r
- <name>USBFS_1_PM_USB_CR0</name>\r
+ <name>USBFS_PM_USB_CR0</name>\r
<description>USB Power Mode Control Register 0</description>\r
<addressOffset>0x0</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_PM_ACT_CFG</name>\r
+ <name>USBFS_PM_ACT_CFG</name>\r
<description>Active Power Mode Configuration Register</description>\r
<addressOffset>0x11</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_PM_STBY_CFG</name>\r
+ <name>USBFS_PM_STBY_CFG</name>\r
<description>Standby Power Mode Configuration Register</description>\r
<addressOffset>0x21</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_PRT_PS</name>\r
+ <name>USBFS_PRT_PS</name>\r
<description>Port Pin State Register</description>\r
<addressOffset>0xE5D</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_PRT_DM0</name>\r
+ <name>USBFS_PRT_DM0</name>\r
<description>Port Drive Mode Register</description>\r
<addressOffset>0xE5E</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_PRT_DM1</name>\r
+ <name>USBFS_PRT_DM1</name>\r
<description>Port Drive Mode Register</description>\r
<addressOffset>0xE5F</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_PRT_INP_DIS</name>\r
+ <name>USBFS_PRT_INP_DIS</name>\r
<description>Input buffer disable override</description>\r
<addressOffset>0xE64</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR0</name>\r
+ <name>USBFS_EP0_DR0</name>\r
<description>bmRequestType</description>\r
<addressOffset>0x1C6C</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR1</name>\r
+ <name>USBFS_EP0_DR1</name>\r
<description>bRequest</description>\r
<addressOffset>0x1C6D</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR2</name>\r
+ <name>USBFS_EP0_DR2</name>\r
<description>wValueLo</description>\r
<addressOffset>0x1C6E</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR3</name>\r
+ <name>USBFS_EP0_DR3</name>\r
<description>wValueHi</description>\r
<addressOffset>0x1C6F</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR4</name>\r
+ <name>USBFS_EP0_DR4</name>\r
<description>wIndexLo</description>\r
<addressOffset>0x1C70</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR5</name>\r
+ <name>USBFS_EP0_DR5</name>\r
<description>wIndexHi</description>\r
<addressOffset>0x1C71</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR6</name>\r
+ <name>USBFS_EP0_DR6</name>\r
<description>lengthLo</description>\r
<addressOffset>0x1C72</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP0_DR7</name>\r
+ <name>USBFS_EP0_DR7</name>\r
<description>lengthHi</description>\r
<addressOffset>0x1C73</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_CR0</name>\r
+ <name>USBFS_CR0</name>\r
<description>USB Control Register 0</description>\r
<addressOffset>0x1C74</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_CR1</name>\r
+ <name>USBFS_CR1</name>\r
<description>USB Control Register 1</description>\r
<addressOffset>0x1C75</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP1_CR0</name>\r
+ <name>USBFS_SIE_EP1_CR0</name>\r
<description>The Endpoint1 Control Register</description>\r
<addressOffset>0x1C7A</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_USBIO_CR0</name>\r
+ <name>USBFS_USBIO_CR0</name>\r
<description>USBIO Control Register 0</description>\r
<addressOffset>0x1C7C</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_USBIO_CR1</name>\r
+ <name>USBFS_USBIO_CR1</name>\r
<description>USBIO Control Register 1</description>\r
<addressOffset>0x1C7E</addressOffset>\r
<size>8</size>\r
</fields>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP2_CR0</name>\r
+ <name>USBFS_SIE_EP2_CR0</name>\r
<description>The Endpoint2 Control Register</description>\r
<addressOffset>0x1C8A</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP3_CR0</name>\r
+ <name>USBFS_SIE_EP3_CR0</name>\r
<description>The Endpoint3 Control Register</description>\r
<addressOffset>0x1C9A</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP4_CR0</name>\r
+ <name>USBFS_SIE_EP4_CR0</name>\r
<description>The Endpoint4 Control Register</description>\r
<addressOffset>0x1CAA</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP5_CR0</name>\r
+ <name>USBFS_SIE_EP5_CR0</name>\r
<description>The Endpoint5 Control Register</description>\r
<addressOffset>0x1CBA</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP6_CR0</name>\r
+ <name>USBFS_SIE_EP6_CR0</name>\r
<description>The Endpoint6 Control Register</description>\r
<addressOffset>0x1CCA</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP7_CR0</name>\r
+ <name>USBFS_SIE_EP7_CR0</name>\r
<description>The Endpoint7 Control Register</description>\r
<addressOffset>0x1CDA</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_SIE_EP8_CR0</name>\r
+ <name>USBFS_SIE_EP8_CR0</name>\r
<description>The Endpoint8 Control Register</description>\r
<addressOffset>0x1CEA</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_BUF_SIZE</name>\r
+ <name>USBFS_BUF_SIZE</name>\r
<description>Dedicated Endpoint Buffer Size Register</description>\r
<addressOffset>0x1CF8</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP_ACTIVE</name>\r
+ <name>USBFS_EP_ACTIVE</name>\r
<description>Endpoint Active Indication Register</description>\r
<addressOffset>0x1CFA</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_EP_TYPE</name>\r
+ <name>USBFS_EP_TYPE</name>\r
<description>Endpoint Type (IN/OUT) Indication</description>\r
<addressOffset>0x1CFB</addressOffset>\r
<size>8</size>\r
<resetMask>0</resetMask>\r
</register>\r
<register>\r
- <name>USBFS_1_USB_CLK_EN</name>\r
+ <name>USBFS_USB_CLK_EN</name>\r
<description>USB Block Clock Enable Register</description>\r
<addressOffset>0x1D09</addressOffset>\r
<size>8</size>\r
\r
#include "device.h"\r
#include "config.h"\r
+#include "USBFS.h"\r
+#include "led.h"\r
\r
#include <string.h>\r
\r
"2.0a", // revision (68k Apple Drive Setup: Set to "1.0 ")\r
1, // enable parity\r
0, // disable unit attention,\r
- 0, // Max blocks (0 == disabled)\r
- "" // reserved\r
+ 0 // Max blocks (0 == disabled)\r
+ // reserved bytes will be initialised to 0.\r
};\r
\r
+enum USB_ENDPOINTS\r
+{\r
+ USB_EP_OUT = 1,\r
+ USB_EP_IN = 2\r
+};\r
+enum USB_STATE\r
+{\r
+ USB_IDLE,\r
+ USB_DATA_SENT\r
+};\r
+int usbInEpState;\r
+\r
+int usbReady;\r
+\r
// Global\r
Config* config = NULL;\r
\r
+// The PSoC 5LP compile to little-endian format.\r
+static uint32_t ntohl(uint32_t val)\r
+{\r
+ return\r
+ ((val & 0xFF) << 24) |\r
+ ((val & 0xFF00) << 8) |\r
+ ((val >> 8) & 0xFF00) |\r
+ ((val >> 24) & 0xFF);\r
+}\r
+static uint32_t htonl(uint32_t val)\r
+{\r
+ return\r
+ ((val & 0xFF) << 24) |\r
+ ((val & 0xFF00) << 8) |\r
+ ((val >> 8) & 0xFF00) |\r
+ ((val >> 24) & 0xFF);\r
+}\r
+\r
+static void saveConfig()\r
+{\r
+ int shadowRows = (sizeof(shadow) / CYDEV_EEPROM_ROW_SIZE) + 1;\r
+ int row;\r
+ int status = CYRET_SUCCESS;\r
+\r
+ CySetTemp();\r
+ for (row = 0; (row < shadowRows) && (status == CYRET_SUCCESS); ++row)\r
+ {\r
+ CFG_EEPROM_Write(((uint8*)&shadow) + (row * CYDEV_EEPROM_ROW_SIZE), row);\r
+ }\r
+ if (status == CYRET_SUCCESS)\r
+ {\r
+ CFG_EEPROM_Write((uint8*)magic, row);\r
+ }\r
+}\r
+\r
void configInit()\r
{\r
// We could map cfgPtr directly into the EEPROM memory,\r
// but that would waste power. Copy it to RAM then turn off\r
- // the EEPROM. \r
+ // the EEPROM.\r
CFG_EEPROM_Start();\r
CyDelayUs(5); // 5us to start per datasheet.\r
- \r
+\r
// Check magic\r
int shadowRows = (sizeof(shadow) / CYDEV_EEPROM_ROW_SIZE) + 1;\r
int shadowBytes = CYDEV_EEPROM_ROW_SIZE * shadowRows;\r
- uint8* eeprom = (uint8*)CYDEV_EE_BASE; \r
- if (memcmp(eeprom + shadowBytes, magic, sizeof(magic))) \r
+ uint8* eeprom = (uint8*)CYDEV_EE_BASE;\r
+ if (memcmp(eeprom + shadowBytes, magic, sizeof(magic)))\r
{\r
- CySetTemp();\r
- int row;\r
- int status = CYRET_SUCCESS;\r
- for (row = 0; (row < shadowRows) && (status == CYRET_SUCCESS); ++row)\r
- {\r
- CFG_EEPROM_Write(((uint8*)&shadow) + (row * CYDEV_EEPROM_ROW_SIZE), row);\r
- }\r
- if (status == CYRET_SUCCESS)\r
- {\r
- CFG_EEPROM_Write((uint8*)magic, row);\r
- }\r
+ saveConfig();\r
}\r
else\r
{\r
}\r
config = &shadow;\r
CFG_EEPROM_Stop();\r
-}
\ No newline at end of file
+\r
+ // The USB block will be powered by an internal 3.3V regulator.\r
+ // The PSoC must be operating between 4.6V and 5V for the regulator\r
+ // to work.\r
+ USBFS_Start(0, USBFS_5V_OPERATION);\r
+ usbInEpState = USB_IDLE;\r
+ usbReady = 0; // We don't know if host is connected yet.\r
+}\r
+\r
+void configPoll()\r
+{\r
+ int reset = 0;\r
+ if (!usbReady || USBFS_IsConfigurationChanged())\r
+ {\r
+ reset = 1;\r
+ }\r
+ usbReady = USBFS_bGetConfiguration();\r
+\r
+ if (!usbReady)\r
+ {\r
+ return;\r
+ }\r
+ \r
+ if (reset)\r
+ {\r
+ USBFS_EnableOutEP(USB_EP_OUT);\r
+ usbInEpState = USB_IDLE;\r
+ } \r
+\r
+ if(USBFS_GetEPState(USB_EP_OUT) == USBFS_OUT_BUFFER_FULL)\r
+ {\r
+ ledOn(); \r
+ // The host sent us some data!\r
+ int byteCount = USBFS_GetEPCount(USB_EP_OUT);\r
+\r
+ // Assume that byteCount <= sizeof(shadow).\r
+ // shadow should be padded out to 64bytes, which is the largest\r
+ // possible HID transfer.\r
+ USBFS_ReadOutEP(USB_EP_OUT, (uint8 *)&shadow, byteCount);\r
+ shadow.maxBlocks = htonl(shadow.maxBlocks);\r
+\r
+ CFG_EEPROM_Start();\r
+ saveConfig(); // write to eeprom\r
+ CFG_EEPROM_Stop();\r
+ \r
+ // Send the updated data.\r
+ usbInEpState = USB_IDLE;\r
+\r
+ // Allow the host to send us another updated config.\r
+ USBFS_EnableOutEP(USB_EP_OUT);\r
+\r
+ ledOff(); \r
+ }\r
+\r
+ switch (usbInEpState)\r
+ {\r
+ case USB_IDLE:\r
+ shadow.maxBlocks = htonl(shadow.maxBlocks);\r
+ USBFS_LoadInEP(USB_EP_IN, (uint8 *)&shadow, sizeof(shadow));\r
+ shadow.maxBlocks = ntohl(shadow.maxBlocks);\r
+ usbInEpState = USB_DATA_SENT;\r
+ break;\r
+\r
+ case USB_DATA_SENT:\r
+ if (USBFS_bGetEPAckState(USB_EP_IN))\r
+ {\r
+ // Data accepted.\r
+ usbInEpState = USB_IDLE;\r
+ }\r
+ break;\r
+ }\r
+}\r
+\r
char revision[4];\r
uint8 enableParity;\r
uint8 enableUnitAttention;\r
+ uint8 reserved1; // Unused. Ensures maxBlocks is aligned.\r
uint32 maxBlocks;\r
\r
// Pad to 64 bytes, which is what we can fit into a USB HID packet.\r
extern Config* config;\r
\r
void configInit();\r
+void configPoll();\r
\r
#endif\r
{\r
scsiPoll();\r
scsiDiskPoll();\r
+ configPoll();\r
}\r
return 0;\r
}\r
// We must be ready again within the "Reset to selection time" of\r
// 250ms.\r
// There is no guarantee that the RST line will be negated by then.\r
- int reset;\r
- do\r
- {\r
- CyDelay(10); // 10ms.\r
- reset = SCSI_ReadPin(SCSI_RST_INT);\r
- } while (reset);\r
-\r
- scsiDev.resetFlag = 0;\r
+ // NOTE: We could be connected and powered by USB for configuration,\r
+ // in which case TERMPWR cannot be supplied, and reset will ALWAYS\r
+ // be true.\r
+ CyDelay(10); // 10ms.\r
+ scsiDev.resetFlag = SCSI_ReadPin(SCSI_RST_INT);\r
scsiDev.atnFlag = 0;\r
}\r
\r
<v>Cypress Component Catalog\System\ILO Trim [v1.0]</v>\r
<v>Cypress Component Catalog\System\Interrupt [v1.70]</v>\r
<v>Cypress Component Catalog\System\RTC [v2.0]</v>\r
+<v>Cypress Component Catalog\System\SleepTimer [v3.20]</v>\r
+<v>Cypress Component Catalog\Thermal Management</v>\r
</VisibleNodeIds>\r
</CyGuid_2a325b3b-c96a-4e9f-b7a0-2c44ecb5f237>\r
<CyGuid_2a325b3b-c96a-4e9f-b7a0-2c44ecb5f237 type_name="CyDesigner.Common.Base.Controls.CyTreeViewState" version="1" SelectedNodeId="">\r
-all: bootloaderhost
+all: build/bootloaderhost
CYAPI = \
cybootloaderutils/cybtldr_api2.c \
endif
-bootloaderhost: main.c $(HID_C) $(CYAPI)
+build/bootloaderhost: main.c $(HID_C) $(CYAPI)
+ mkdir -p $(dir $@)
$(CC) $(CFLAGS) -I cybootloaderutils -I hidapi/hidapi $^ $(LDFLAGS) -o $@
clean:
- rm bootloaderhost
+ rm build/bootloaderhost
--- /dev/null
+all: build/scsi2sd-config
+
+CFLAGS += -Wall
+
+UNAME_S := $(shell uname -s)
+ifeq ($(UNAME_S),Linux)
+ HID_C = ../bootloaderhost/hidapi/linux/hid.c
+ LDFLAGS += -ludev
+endif
+ifeq ($(UNAME_S),Darwin)
+ # Should match OSX
+ HID_C = ../bootloaderost/hidapi/mac/hid.c
+ LDFLAGS += -framework IOKit -framework CoreFoundation
+endif
+
+
+build/scsi2sd-config: main.c $(HID_C) $(CYAPI)
+ mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -I ../bootloaderhost/hidapi/hidapi $^ $(LDFLAGS) -o $@
+
+clean:
+ rm build/scsi2sd-config
--- /dev/null
+all: build/windows/32bit/scsi2sd-config.exe build/windows/64bit/scsi2sd-config.exe
+
+CFLAGS += -Wall
+LDFLAGS=-mconsole -mwindows -lsetupapi -lws2_32
+
+HID_C = ../bootloaderhost/hidapi/windows/hid.c
+
+
+build/windows/32bit/scsi2sd-config.exe: main.c $(HID_C)
+ mkdir -p $(dir $@)
+ i686-w64-mingw32-gcc $(CFLAGS) -I ../bootloaderhost/hidapi/hidapi $^ $(LDFLAGS) -o $@
+
+build/windows/64bit/scsi2sd-config.exe: main.c $(HID_C)
+ mkdir -p $(dir $@)
+ x86_64-w64-mingw32-gcc $(CFLAGS) -I ../bootloaderhost/hidapi/hidapi $^ $(LDFLAGS) -o $@
+
+clean:
+ rm -r build/windows
+
--- /dev/null
+// Copyright (C) 2013 Michael McMaster <michael@codesrc.com>
+//
+// This file is part of SCSI2SD.
+//
+// SCSI2SD is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// SCSI2SD is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with SCSI2SD. If not, see <http://www.gnu.org/licenses/>.
+
+#include <getopt.h>
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+// htonl/ntohl includes.
+#ifdef WIN32
+#include <winsock2.h>
+#else
+#include <arpa/inet.h>
+#endif
+
+#include "hidapi.h"
+
+#define MIN(a,b) (a < b ? a : b)
+
+enum
+{
+ PARAM_ID,
+ PARAM_PARITY,
+ PARAM_NOPARITY,
+ PARAM_UNITATT,
+ PARAM_NOUNITATT,
+ PARAM_MAXBLOCKS,
+ PARAM_APPLE,
+ PARAM_VENDOR,
+ PARAM_PRODID,
+ PARAM_REV
+};
+
+// Must be consistent with the structure defined in the SCSI2SD config.h header.
+// We always transfer data in network byte order.
+typedef struct __attribute((packed))
+{
+ uint8_t scsiId;
+ char vendor[8];
+ char prodId[16];
+ char revision[4];
+ uint8_t enableParity;
+ uint8_t enableUnitAttention;
+ uint8_t reserved1; // Unused. Ensures maxBlocks is aligned.
+ uint32_t maxBlocks;
+
+ // Pad to 64 bytes, which is what we can fit into a USB HID packet.
+ char reserved[28];
+} ConfigPacket;
+
+static void printConfig(ConfigPacket* packet)
+{
+ printf("SCSI ID:\t\t\t%d\n", packet->scsiId);
+ printf("Vendor:\t\t\t\t\"%.*s\"\n", 8, packet->vendor);
+ printf("Product ID:\t\t\t\"%.*s\"\n", 16, packet->prodId);
+ printf("Revision:\t\t\t\"%.*s\"\n", 4, packet->revision);
+ printf("\n");
+ printf("Parity Checking:\t\t%s\n", packet->enableParity ? "enabled" : "disabled");
+ printf("Unit Attention Condition:\t%s\n", packet->enableUnitAttention ? "enabled" : "disabled");
+ if (packet->maxBlocks)
+ {
+ char sizeBuf[64];
+ uint64_t maxBytes = packet->maxBlocks * (uint64_t) 512;
+ if (maxBytes > (1024*1024*1024))
+ {
+ sprintf(sizeBuf, "%.02fGB", maxBytes / (1024.0*1024.0*1024.0));
+ }
+ else if (maxBytes > (1024*1024))
+ {
+ sprintf(sizeBuf, "%.02fMB", maxBytes / (1024.0*1024.0));
+ }
+ else if (maxBytes > (1024))
+ {
+ sprintf(sizeBuf, "%.02fKB", maxBytes / (1024.0));
+ }
+ else
+ {
+ sprintf(sizeBuf, "%" PRIu64 " bytes", maxBytes);
+ }
+
+ printf("Maximum Size:\t\t\t%s (%d blocks)\n", sizeBuf, packet->maxBlocks);
+ }
+ else
+ {
+ printf("Maximum Size:\t\t\tUnlimited\n");
+ }
+}
+
+static int readConfig(hid_device* handle, ConfigPacket* packet)
+{
+ // First byte is the report ID (0)
+ unsigned char buf[1 + sizeof(ConfigPacket)];
+ memset(buf, 0, sizeof(buf));
+ memset(packet, 0, sizeof(ConfigPacket));
+ int result = hid_read(handle, buf, sizeof(buf));
+
+ if (result < 0)
+ {
+ fprintf(stderr, "USB HID Read Failure: %ls\n", hid_error(handle));
+ }
+
+ memcpy(packet, buf, result);
+ packet->maxBlocks = ntohl(packet->maxBlocks);
+
+ return result;
+}
+
+static int writeConfig(hid_device* handle, ConfigPacket* packet)
+{
+ unsigned char buf[1 + sizeof(ConfigPacket)];
+ buf[0] = 0; // report ID
+
+ packet->maxBlocks = htonl(packet->maxBlocks);
+ memcpy(buf + 1, packet, sizeof(ConfigPacket));
+ packet->maxBlocks = ntohl(packet->maxBlocks);
+
+ int result = hid_write(handle, buf, sizeof(buf));
+
+ if (result < 0)
+ {
+ fprintf(stderr, "USB HID Write Failure: %ls\n", hid_error(handle));
+ }
+
+ return result;
+}
+
+static void usage()
+{
+ printf("Usage: scsi2sd-config [options...]\n");
+ printf("\n");
+ printf("--id={0-7}\tSCSI device ID.\n\n");
+ printf("--parity\tCheck the SCSI parity signal, and reject data where\n");
+ printf("\t\tthe parity is bad.\n\n");
+ printf("--no-parity\tDon't check the SCSI parity signal.\n");
+ printf("\t\tThis is required for SCSI host controllers that do not provide\n");
+ printf("\t\tparity.\n\n");
+ printf("--attention\tRespond with a Unit Attention status on device reset.\n");
+ printf("\t\tSome systems will fail on this response, even though it is\n");
+ printf("\t\trequired by the SCSI-2 standard.\n\n");
+ printf("--no-attention\tDisable Unit Attention responses.\n\n");
+ printf("--blocks={0-4294967295}\n\t\tSet a limit to the reported device size.\n");
+ printf("\t\tEach block is 512 bytes. The maximum possible size is 2TB.\n");
+ printf("\t\tThe reported size will be the lower of this value and the SD\n");
+ printf("\t\tcard size. 0 disables the limit.\n\n");
+ printf("--apple\t\tSet the vendor, product ID and revision fields to simulate an \n");
+ printf("\t\tapple-suppled disk. Provides support for the Apple Drive Setup\n");
+ printf("\t\tutility.\n\n");
+ printf("--vendor={vendor}\tSets the reported device vendor. Up to 8 characters.\n\n");
+ printf("--prod-id={prod-id}\tSets the reported product ID. Up to 16 characters.\n\n");
+ printf("--rev={revision}\tSets the reported device revision. Up to 4 characters.\n\n");
+ printf("\n");
+ printf("\nThe current configuration settings are displayed if no options are supplied");
+ printf("\n\n");
+ exit(1);
+}
+
+int main(int argc, char* argv[])
+{
+ printf("SCSI2SD Configuration Utility.\n");
+ printf("Copyright (C) 2013 Michael McMaster <michael@codesrc.com>\n\n");
+
+ uint16_t vendorId = 0x04B4; // Cypress
+ uint16_t productId = 0x1337; // SCSI2SD
+
+ printf(
+ "USB device parameters\n\tVendor ID:\t0x%04X\n\tProduct ID:\t0x%04X\n",
+ vendorId,
+ productId);
+
+ // Enumerate and print the HID devices on the system
+ struct hid_device_info *dev = hid_enumerate(vendorId, productId);
+ if (!dev)
+ {
+ fprintf(stderr, "ERROR: SCSI2SD USB device not found.\n");
+ exit(1);
+ }
+
+ printf("USB Device Found\n type: %04hx %04hx\n path: %s\n serial_number: %ls",
+ dev->vendor_id, dev->product_id, dev->path, dev->serial_number);
+ printf("\n");
+ printf(" Manufacturer: %ls\n", dev->manufacturer_string);
+ printf(" Product: %ls\n", dev->product_string);
+ printf("\n");
+
+ // Open the device using the VID, PID,
+ // and optionally the Serial number.
+ hid_device* handle = hid_open(vendorId, productId, NULL);
+ if (!handle)
+ {
+ fprintf(
+ stderr,
+ "ERROR: Could not open device %s. Check permissions.\n", dev->path
+ );
+ exit(1);
+ }
+
+ ConfigPacket packet;
+ if (readConfig(handle, &packet) <= 0)
+ {
+ fprintf(stderr, "ERROR: Invalid data received from device.\n");
+ exit(1);
+ }
+
+ struct option options[] =
+ {
+ {
+ "id", required_argument, NULL, PARAM_ID
+ },
+ {
+ "parity", no_argument, NULL, PARAM_PARITY
+ },
+ {
+ "no-parity", no_argument, NULL, PARAM_NOPARITY
+ },
+ {
+ "attention", no_argument, NULL, PARAM_UNITATT
+ },
+ {
+ "no-attention", no_argument, NULL, PARAM_NOUNITATT
+ },
+ {
+ "blocks", required_argument, NULL, PARAM_MAXBLOCKS
+ },
+ {
+ "apple", no_argument, NULL, PARAM_APPLE
+ },
+ {
+ "vendor", required_argument, NULL, PARAM_VENDOR
+ },
+ {
+ "prod-id", required_argument, NULL, PARAM_PRODID
+ },
+ {
+ "rev", required_argument, NULL, PARAM_REV
+ },
+ {
+ NULL, 0, NULL, 0
+ }
+ };
+
+ int doWrite = 0;
+ int optIdx = 0;
+ int c;
+ while ((c = getopt_long(argc, argv, "", options, &optIdx)) != -1)
+ {
+ doWrite = 1;
+ switch (c)
+ {
+ case PARAM_ID:
+ {
+ int id = -1;
+ if (sscanf(optarg, "%d", &id) == 1 && id >= 0 && id <= 7)
+ {
+ packet.scsiId = id;
+ }
+ else
+ {
+ usage();
+ }
+ break;
+ }
+
+ case PARAM_PARITY:
+ packet.enableParity = 1;
+ break;
+
+ case PARAM_NOPARITY:
+ packet.enableParity = 0;
+ break;
+
+ case PARAM_UNITATT:
+ packet.enableUnitAttention = 1;
+ break;
+
+ case PARAM_NOUNITATT:
+ packet.enableUnitAttention = 0;
+ break;
+
+ case PARAM_MAXBLOCKS:
+ {
+ int64_t maxBlocks = -1;
+ if (sscanf(optarg, "%" PRId64, &maxBlocks) == 1 &&
+ maxBlocks >= 0 && maxBlocks <= UINT32_MAX)
+ {
+ packet.maxBlocks = maxBlocks;
+ }
+ else
+ {
+ usage();
+ }
+ break;
+ }
+
+ case PARAM_APPLE:
+ memcpy(packet.vendor, " SEAGATE", 8);
+ memcpy(packet.prodId, " ST225N", 16);
+ memcpy(packet.revision, "1.0 ", 4);
+ break;
+
+ case PARAM_VENDOR:
+ memset(packet.vendor, ' ', 8);
+ memcpy(packet.vendor, optarg, MIN(strlen(optarg), 8));
+ break;
+
+ case PARAM_PRODID:
+ memset(packet.prodId, ' ', 16);
+ memcpy(packet.prodId, optarg, MIN(strlen(optarg), 16));
+ break;
+
+ case PARAM_REV:
+ memset(packet.revision, ' ', 4);
+ memcpy(packet.revision, optarg, MIN(strlen(optarg), 4));
+ break;
+
+ case '?':
+ usage();
+ }
+ }
+
+ if (doWrite)
+ {
+ printf("Saving configuration...");
+ if (writeConfig(handle, &packet) <= 0)
+ {
+ printf(" Fail.\n");
+ fprintf(stderr, "ERROR: Failed to save config.\n");
+ exit(1);
+ }
+ printf(" Done.\n");
+
+ // Clear outstanding stale data
+ readConfig(handle, &packet);
+
+ // Proper update
+ if (readConfig(handle, &packet) <= 0)
+ {
+ fprintf(stderr, "ERROR: Invalid data received from device.\n");
+ exit(1);
+ }
+ }
+
+ printf("\nCurrent Device Settings:\n");
+ printConfig(&packet);
+
+ return 0;
+}
+