From 5bcd0c3a18f859e837ef0f9d4236e2bf3a16f77c Mon Sep 17 00:00:00 2001 From: Michael McMaster Date: Fri, 30 May 2014 11:09:55 +1000 Subject: [PATCH] Use DMA for SCSI and SD card transfers for a massive performance boost. --- CHANGELOG | 5 + readme.txt | 2 +- .../PSoC5/SCSI_RX_DMA_COMPLETE.c | 356 +++ .../PSoC5/SCSI_RX_DMA_COMPLETE.h | 70 + .../Generated_Source/PSoC5/SCSI_RX_DMA_dma.c | 141 ++ .../Generated_Source/PSoC5/SCSI_RX_DMA_dma.h | 35 + .../Generated_Source/PSoC5/SCSI_TX_COMPLETE.c | 356 +++ .../Generated_Source/PSoC5/SCSI_TX_COMPLETE.h | 70 + .../PSoC5/SCSI_TX_DMA_COMPLETE.c | 356 +++ .../PSoC5/SCSI_TX_DMA_COMPLETE.h | 70 + .../Generated_Source/PSoC5/SCSI_TX_DMA_dma.c | 141 ++ .../Generated_Source/PSoC5/SCSI_TX_DMA_dma.h | 35 + .../Generated_Source/PSoC5/SDCard.h | 4 +- .../Generated_Source/PSoC5/SD_Clk_Ctl.c | 63 - .../Generated_Source/PSoC5/SD_Clk_Ctl.h | 42 - .../Generated_Source/PSoC5/SD_Init_Clk.c | 521 ---- .../Generated_Source/PSoC5/SD_Init_Clk.h | 124 - .../PSoC5/SD_RX_DMA_COMPLETE.c | 356 +++ .../PSoC5/SD_RX_DMA_COMPLETE.h | 70 + .../Generated_Source/PSoC5/SD_RX_DMA_dma.c | 141 ++ .../Generated_Source/PSoC5/SD_RX_DMA_dma.h | 35 + .../PSoC5/SD_TX_DMA_COMPLETE.c | 356 +++ .../PSoC5/SD_TX_DMA_COMPLETE.h | 70 + .../Generated_Source/PSoC5/SD_TX_DMA_dma.c | 141 ++ .../Generated_Source/PSoC5/SD_TX_DMA_dma.h | 35 + .../Generated_Source/PSoC5/cyfitter.h | 413 ++-- .../Generated_Source/PSoC5/cyfitter_cfg.c | 2129 +++++++++-------- .../Generated_Source/PSoC5/cyfittergnu.inc | 413 ++-- .../Generated_Source/PSoC5/cyfitteriar.inc | 413 ++-- .../Generated_Source/PSoC5/cyfitterrv.inc | 413 ++-- .../Generated_Source/PSoC5/project.h | 8 + software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cycdx | 172 +- software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cydwr | Bin 137188 -> 139014 bytes software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyfit | Bin 237960 -> 244148 bytes software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyprj | 270 +++ software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.svd | 1003 ++++---- .../SCSI2SD.cydsn/TopDesign/TopDesign.cysch | Bin 188561 -> 203382 bytes .../SCSI2SD.cydsn/scsiTarget/scsiTarget.cysym | Bin 77821 -> 79008 bytes .../SCSI2SD.cydsn/scsiTarget/scsiTarget.v | 115 +- .../Generated_Source/PSoCCreatorExportIDE.xml | 36 +- .../USB_Bootloader.cydsn/USB_Bootloader.cycdx | 0 .../USB_Bootloader.cydsn/USB_Bootloader.cyfit | Bin 159439 -> 159471 bytes .../USB_Bootloader.cyprj.Micha_000 | 7 +- .../USB_Bootloader.cydsn/USB_Bootloader.rpt | 78 +- .../USB_Bootloader.cydsn/USB_Bootloader.svd | 0 .../USB_Bootloader_timing.html | 2 +- software/SCSI2SD/src/diagnostic.c | 25 + software/SCSI2SD/src/diagnostic.h | 1 + software/SCSI2SD/src/disk.c | 113 +- software/SCSI2SD/src/scsi.c | 4 + software/SCSI2SD/src/scsiPhy.c | 337 ++- software/SCSI2SD/src/scsiPhy.h | 38 +- software/SCSI2SD/src/sd.c | 464 ++-- software/SCSI2SD/src/sd.h | 13 +- 54 files changed, 6583 insertions(+), 3479 deletions(-) create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.h mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SDCard.h delete mode 100755 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.c delete mode 100755 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.h delete mode 100755 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.c delete mode 100755 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.h create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.c create mode 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.h mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter.h mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter_cfg.c mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfittergnu.inc mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitteriar.inc mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitterrv.inc mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/project.h mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cycdx mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyfit mode change 100755 => 100644 software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.svd mode change 100755 => 100644 software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.cycdx mode change 100755 => 100644 software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.cyfit mode change 100755 => 100644 software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.rpt mode change 100755 => 100644 software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.svd mode change 100755 => 100644 software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader_timing.html diff --git a/CHANGELOG b/CHANGELOG index 9f3b3f0..978feca 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +201404xx 3.5 + - Fixed several performance issues. Transfer rates up to 2.5MB/s are now + possible. + - Implemented the READ BUFFER scsi command for performance testing purposes. + 20140418 3.4 - Critical fix for writes when using non-standard block sizes. - Fix to ensure SCSI phase bits are set atomically. diff --git a/readme.txt b/readme.txt index b93b087..a57e451 100644 --- a/readme.txt +++ b/readme.txt @@ -45,7 +45,7 @@ Performance As currently implemented: -Sequential read: 930kb/sec Sequential write: 900kb/sec +Sequential read: 2.5MB/s Sequential write: 900kb/sec Tested with a 16GB class 10 SD card, via the commands: diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.c new file mode 100644 index 0000000..f3a7008 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.c @@ -0,0 +1,356 @@ +/******************************************************************************* +* File Name: SCSI_RX_DMA_COMPLETE.c +* Version 1.70 +* +* Description: +* API for controlling the state of an interrupt. +* +* +* Note: +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ + + +#include +#include +#include + +#if !defined(SCSI_RX_DMA_COMPLETE__REMOVED) /* Check for removal by optimization */ + +/******************************************************************************* +* Place your includes, defines and code here +********************************************************************************/ +/* `#START SCSI_RX_DMA_COMPLETE_intc` */ + +/* `#END` */ + +#ifndef CYINT_IRQ_BASE +#define CYINT_IRQ_BASE 16 +#endif /* CYINT_IRQ_BASE */ +#ifndef CYINT_VECT_TABLE +#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET) +#endif /* CYINT_VECT_TABLE */ + +/* Declared in startup, used to set unused interrupts to. */ +CY_ISR_PROTO(IntDefaultHandler); + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_Start +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_Start(void) +{ + /* For all we know the interrupt is active. */ + SCSI_RX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SCSI_RX_DMA_COMPLETE Interrupt. */ + SCSI_RX_DMA_COMPLETE_SetVector(&SCSI_RX_DMA_COMPLETE_Interrupt); + + /* Set the priority. */ + SCSI_RX_DMA_COMPLETE_SetPriority((uint8)SCSI_RX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_RX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_StartEx +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_StartEx(cyisraddress address) +{ + /* For all we know the interrupt is active. */ + SCSI_RX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SCSI_RX_DMA_COMPLETE Interrupt. */ + SCSI_RX_DMA_COMPLETE_SetVector(address); + + /* Set the priority. */ + SCSI_RX_DMA_COMPLETE_SetPriority((uint8)SCSI_RX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_RX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_Stop +******************************************************************************** +* +* Summary: +* Disables and removes the interrupt. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_Stop(void) +{ + /* Disable this interrupt. */ + SCSI_RX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the passive one. */ + SCSI_RX_DMA_COMPLETE_SetVector(&IntDefaultHandler); +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_Interrupt +******************************************************************************** +* +* Summary: +* The default Interrupt Service Routine for SCSI_RX_DMA_COMPLETE. +* +* Add custom code between the coments to keep the next version of this file +* from over writting your code. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +CY_ISR(SCSI_RX_DMA_COMPLETE_Interrupt) +{ + /* Place your Interrupt code here. */ + /* `#START SCSI_RX_DMA_COMPLETE_Interrupt` */ + + /* `#END` */ +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_SetVector +******************************************************************************** +* +* Summary: +* Change the ISR vector for the Interrupt. Note calling SCSI_RX_DMA_COMPLETE_Start +* will override any effect this method would have had. To set the vector +* before the component has been started use SCSI_RX_DMA_COMPLETE_StartEx instead. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_SetVector(cyisraddress address) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_RX_DMA_COMPLETE__INTC_NUMBER] = address; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_GetVector +******************************************************************************** +* +* Summary: +* Gets the "address" of the current ISR vector for the Interrupt. +* +* Parameters: +* None +* +* Return: +* Address of the ISR in the interrupt vector table. +* +*******************************************************************************/ +cyisraddress SCSI_RX_DMA_COMPLETE_GetVector(void) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_RX_DMA_COMPLETE__INTC_NUMBER]; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_SetPriority +******************************************************************************** +* +* Summary: +* Sets the Priority of the Interrupt. Note calling SCSI_RX_DMA_COMPLETE_Start +* or SCSI_RX_DMA_COMPLETE_StartEx will override any effect this method +* would have had. This method should only be called after +* SCSI_RX_DMA_COMPLETE_Start or SCSI_RX_DMA_COMPLETE_StartEx has been called. To set +* the initial priority for the component use the cydwr file in the tool. +* +* Parameters: +* priority: Priority of the interrupt. 0 - 7, 0 being the highest. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_SetPriority(uint8 priority) +{ + *SCSI_RX_DMA_COMPLETE_INTC_PRIOR = priority << 5; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_GetPriority +******************************************************************************** +* +* Summary: +* Gets the Priority of the Interrupt. +* +* Parameters: +* None +* +* Return: +* Priority of the interrupt. 0 - 7, 0 being the highest. +* +*******************************************************************************/ +uint8 SCSI_RX_DMA_COMPLETE_GetPriority(void) +{ + uint8 priority; + + + priority = *SCSI_RX_DMA_COMPLETE_INTC_PRIOR >> 5; + + return priority; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_Enable +******************************************************************************** +* +* Summary: +* Enables the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_Enable(void) +{ + /* Enable the general interrupt. */ + *SCSI_RX_DMA_COMPLETE_INTC_SET_EN = SCSI_RX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_GetState +******************************************************************************** +* +* Summary: +* Gets the state (enabled, disabled) of the Interrupt. +* +* Parameters: +* None +* +* Return: +* 1 if enabled, 0 if disabled. +* +*******************************************************************************/ +uint8 SCSI_RX_DMA_COMPLETE_GetState(void) +{ + /* Get the state of the general interrupt. */ + return ((*SCSI_RX_DMA_COMPLETE_INTC_SET_EN & (uint32)SCSI_RX_DMA_COMPLETE__INTC_MASK) != 0u) ? 1u:0u; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_Disable +******************************************************************************** +* +* Summary: +* Disables the Interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_Disable(void) +{ + /* Disable the general interrupt. */ + *SCSI_RX_DMA_COMPLETE_INTC_CLR_EN = SCSI_RX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_SetPending +******************************************************************************** +* +* Summary: +* Causes the Interrupt to enter the pending state, a software method of +* generating the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_SetPending(void) +{ + *SCSI_RX_DMA_COMPLETE_INTC_SET_PD = SCSI_RX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_RX_DMA_COMPLETE_ClearPending +******************************************************************************** +* +* Summary: +* Clears a pending interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_RX_DMA_COMPLETE_ClearPending(void) +{ + *SCSI_RX_DMA_COMPLETE_INTC_CLR_PD = SCSI_RX_DMA_COMPLETE__INTC_MASK; +} + +#endif /* End check for removal by optimization */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.h new file mode 100644 index 0000000..1d9e146 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_COMPLETE.h @@ -0,0 +1,70 @@ +/******************************************************************************* +* File Name: SCSI_RX_DMA_COMPLETE.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the Interrupt Controller. +* +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ +#if !defined(CY_ISR_SCSI_RX_DMA_COMPLETE_H) +#define CY_ISR_SCSI_RX_DMA_COMPLETE_H + + +#include +#include + +/* Interrupt Controller API. */ +void SCSI_RX_DMA_COMPLETE_Start(void); +void SCSI_RX_DMA_COMPLETE_StartEx(cyisraddress address); +void SCSI_RX_DMA_COMPLETE_Stop(void); + +CY_ISR_PROTO(SCSI_RX_DMA_COMPLETE_Interrupt); + +void SCSI_RX_DMA_COMPLETE_SetVector(cyisraddress address); +cyisraddress SCSI_RX_DMA_COMPLETE_GetVector(void); + +void SCSI_RX_DMA_COMPLETE_SetPriority(uint8 priority); +uint8 SCSI_RX_DMA_COMPLETE_GetPriority(void); + +void SCSI_RX_DMA_COMPLETE_Enable(void); +uint8 SCSI_RX_DMA_COMPLETE_GetState(void); +void SCSI_RX_DMA_COMPLETE_Disable(void); + +void SCSI_RX_DMA_COMPLETE_SetPending(void); +void SCSI_RX_DMA_COMPLETE_ClearPending(void); + + +/* Interrupt Controller Constants */ + +/* Address of the INTC.VECT[x] register that contains the Address of the SCSI_RX_DMA_COMPLETE ISR. */ +#define SCSI_RX_DMA_COMPLETE_INTC_VECTOR ((reg32 *) SCSI_RX_DMA_COMPLETE__INTC_VECT) + +/* Address of the SCSI_RX_DMA_COMPLETE ISR priority. */ +#define SCSI_RX_DMA_COMPLETE_INTC_PRIOR ((reg8 *) SCSI_RX_DMA_COMPLETE__INTC_PRIOR_REG) + +/* Priority of the SCSI_RX_DMA_COMPLETE interrupt. */ +#define SCSI_RX_DMA_COMPLETE_INTC_PRIOR_NUMBER SCSI_RX_DMA_COMPLETE__INTC_PRIOR_NUM + +/* Address of the INTC.SET_EN[x] byte to bit enable SCSI_RX_DMA_COMPLETE interrupt. */ +#define SCSI_RX_DMA_COMPLETE_INTC_SET_EN ((reg32 *) SCSI_RX_DMA_COMPLETE__INTC_SET_EN_REG) + +/* Address of the INTC.CLR_EN[x] register to bit clear the SCSI_RX_DMA_COMPLETE interrupt. */ +#define SCSI_RX_DMA_COMPLETE_INTC_CLR_EN ((reg32 *) SCSI_RX_DMA_COMPLETE__INTC_CLR_EN_REG) + +/* Address of the INTC.SET_PD[x] register to set the SCSI_RX_DMA_COMPLETE interrupt state to pending. */ +#define SCSI_RX_DMA_COMPLETE_INTC_SET_PD ((reg32 *) SCSI_RX_DMA_COMPLETE__INTC_SET_PD_REG) + +/* Address of the INTC.CLR_PD[x] register to clear the SCSI_RX_DMA_COMPLETE interrupt. */ +#define SCSI_RX_DMA_COMPLETE_INTC_CLR_PD ((reg32 *) SCSI_RX_DMA_COMPLETE__INTC_CLR_PD_REG) + + +#endif /* CY_ISR_SCSI_RX_DMA_COMPLETE_H */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.c new file mode 100644 index 0000000..6bdb2ea --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.c @@ -0,0 +1,141 @@ +/*************************************************************************** +* File Name: SCSI_RX_DMA_dma.c +* Version 1.70 +* +* Description: +* Provides an API for the DMAC component. The API includes functions +* for the DMA controller, DMA channels and Transfer Descriptors. +* +* +* Note: +* This module requires the developer to finish or fill in the auto +* generated funcions and setup the dma channel and TD's. +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#include +#include +#include + + + +/**************************************************************************** +* +* The following defines are available in Cyfitter.h +* +* +* +* SCSI_RX_DMA__DRQ_CTL_REG +* +* +* SCSI_RX_DMA__DRQ_NUMBER +* +* Number of TD's used by this channel. +* SCSI_RX_DMA__NUMBEROF_TDS +* +* Priority of this channel. +* SCSI_RX_DMA__PRIORITY +* +* True if SCSI_RX_DMA_TERMIN_SEL is used. +* SCSI_RX_DMA__TERMIN_EN +* +* TERMIN interrupt line to signal terminate. +* SCSI_RX_DMA__TERMIN_SEL +* +* +* True if SCSI_RX_DMA_TERMOUT0_SEL is used. +* SCSI_RX_DMA__TERMOUT0_EN +* +* +* TERMOUT0 interrupt line to signal completion. +* SCSI_RX_DMA__TERMOUT0_SEL +* +* +* True if SCSI_RX_DMA_TERMOUT1_SEL is used. +* SCSI_RX_DMA__TERMOUT1_EN +* +* +* TERMOUT1 interrupt line to signal completion. +* SCSI_RX_DMA__TERMOUT1_SEL +* +****************************************************************************/ + + +/* Zero based index of SCSI_RX_DMA dma channel */ +uint8 SCSI_RX_DMA_DmaHandle = DMA_INVALID_CHANNEL; + +/********************************************************************* +* Function Name: uint8 SCSI_RX_DMA_DmaInitalize +********************************************************************** +* Summary: +* Allocates and initialises a channel of the DMAC to be used by the +* caller. +* +* Parameters: +* BurstCount. +* +* +* ReqestPerBurst. +* +* +* UpperSrcAddress. +* +* +* UpperDestAddress. +* +* +* Return: +* The channel that can be used by the caller for DMA activity. +* DMA_INVALID_CHANNEL (0xFF) if there are no channels left. +* +* +*******************************************************************/ +uint8 SCSI_RX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) +{ + + /* Allocate a DMA channel. */ + SCSI_RX_DMA_DmaHandle = (uint8)SCSI_RX_DMA__DRQ_NUMBER; + + /* Configure the channel. */ + (void)CyDmaChSetConfiguration(SCSI_RX_DMA_DmaHandle, + BurstCount, + ReqestPerBurst, + (uint8)SCSI_RX_DMA__TERMOUT0_SEL, + (uint8)SCSI_RX_DMA__TERMOUT1_SEL, + (uint8)SCSI_RX_DMA__TERMIN_SEL); + + /* Set the extended address for the transfers */ + (void)CyDmaChSetExtendedAddress(SCSI_RX_DMA_DmaHandle, UpperSrcAddress, UpperDestAddress); + + /* Set the priority for this channel */ + (void)CyDmaChPriority(SCSI_RX_DMA_DmaHandle, (uint8)SCSI_RX_DMA__PRIORITY); + + return SCSI_RX_DMA_DmaHandle; +} + +/********************************************************************* +* Function Name: void SCSI_RX_DMA_DmaRelease +********************************************************************** +* Summary: +* Frees the channel associated with SCSI_RX_DMA. +* +* +* Parameters: +* void. +* +* +* +* Return: +* void. +* +*******************************************************************/ +void SCSI_RX_DMA_DmaRelease(void) +{ + /* Disable the channel */ + (void)CyDmaChDisable(SCSI_RX_DMA_DmaHandle); +} + diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.h new file mode 100644 index 0000000..4030614 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_RX_DMA_dma.h @@ -0,0 +1,35 @@ +/****************************************************************************** +* File Name: SCSI_RX_DMA_dma.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the DMA Controller. +* +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#if !defined(CY_DMA_SCSI_RX_DMA_DMA_H__) +#define CY_DMA_SCSI_RX_DMA_DMA_H__ + + + +#include +#include + +#define SCSI_RX_DMA__TD_TERMOUT_EN (((0 != SCSI_RX_DMA__TERMOUT0_EN) ? TD_TERMOUT0_EN : 0) | \ + (SCSI_RX_DMA__TERMOUT1_EN ? TD_TERMOUT1_EN : 0)) + +/* Zero based index of SCSI_RX_DMA dma channel */ +extern uint8 SCSI_RX_DMA_DmaHandle; + + +uint8 SCSI_RX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) ; +void SCSI_RX_DMA_DmaRelease(void) ; + + +/* CY_DMA_SCSI_RX_DMA_DMA_H__ */ +#endif diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.c new file mode 100644 index 0000000..401086b --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.c @@ -0,0 +1,356 @@ +/******************************************************************************* +* File Name: SCSI_TX_COMPLETE.c +* Version 1.70 +* +* Description: +* API for controlling the state of an interrupt. +* +* +* Note: +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ + + +#include +#include +#include + +#if !defined(SCSI_TX_COMPLETE__REMOVED) /* Check for removal by optimization */ + +/******************************************************************************* +* Place your includes, defines and code here +********************************************************************************/ +/* `#START SCSI_TX_COMPLETE_intc` */ + +/* `#END` */ + +#ifndef CYINT_IRQ_BASE +#define CYINT_IRQ_BASE 16 +#endif /* CYINT_IRQ_BASE */ +#ifndef CYINT_VECT_TABLE +#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET) +#endif /* CYINT_VECT_TABLE */ + +/* Declared in startup, used to set unused interrupts to. */ +CY_ISR_PROTO(IntDefaultHandler); + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_Start +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_Start(void) +{ + /* For all we know the interrupt is active. */ + SCSI_TX_COMPLETE_Disable(); + + /* Set the ISR to point to the SCSI_TX_COMPLETE Interrupt. */ + SCSI_TX_COMPLETE_SetVector(&SCSI_TX_COMPLETE_Interrupt); + + /* Set the priority. */ + SCSI_TX_COMPLETE_SetPriority((uint8)SCSI_TX_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_TX_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_StartEx +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_StartEx(cyisraddress address) +{ + /* For all we know the interrupt is active. */ + SCSI_TX_COMPLETE_Disable(); + + /* Set the ISR to point to the SCSI_TX_COMPLETE Interrupt. */ + SCSI_TX_COMPLETE_SetVector(address); + + /* Set the priority. */ + SCSI_TX_COMPLETE_SetPriority((uint8)SCSI_TX_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_TX_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_Stop +******************************************************************************** +* +* Summary: +* Disables and removes the interrupt. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_Stop(void) +{ + /* Disable this interrupt. */ + SCSI_TX_COMPLETE_Disable(); + + /* Set the ISR to point to the passive one. */ + SCSI_TX_COMPLETE_SetVector(&IntDefaultHandler); +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_Interrupt +******************************************************************************** +* +* Summary: +* The default Interrupt Service Routine for SCSI_TX_COMPLETE. +* +* Add custom code between the coments to keep the next version of this file +* from over writting your code. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +CY_ISR(SCSI_TX_COMPLETE_Interrupt) +{ + /* Place your Interrupt code here. */ + /* `#START SCSI_TX_COMPLETE_Interrupt` */ + + /* `#END` */ +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_SetVector +******************************************************************************** +* +* Summary: +* Change the ISR vector for the Interrupt. Note calling SCSI_TX_COMPLETE_Start +* will override any effect this method would have had. To set the vector +* before the component has been started use SCSI_TX_COMPLETE_StartEx instead. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_SetVector(cyisraddress address) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_TX_COMPLETE__INTC_NUMBER] = address; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_GetVector +******************************************************************************** +* +* Summary: +* Gets the "address" of the current ISR vector for the Interrupt. +* +* Parameters: +* None +* +* Return: +* Address of the ISR in the interrupt vector table. +* +*******************************************************************************/ +cyisraddress SCSI_TX_COMPLETE_GetVector(void) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_TX_COMPLETE__INTC_NUMBER]; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_SetPriority +******************************************************************************** +* +* Summary: +* Sets the Priority of the Interrupt. Note calling SCSI_TX_COMPLETE_Start +* or SCSI_TX_COMPLETE_StartEx will override any effect this method +* would have had. This method should only be called after +* SCSI_TX_COMPLETE_Start or SCSI_TX_COMPLETE_StartEx has been called. To set +* the initial priority for the component use the cydwr file in the tool. +* +* Parameters: +* priority: Priority of the interrupt. 0 - 7, 0 being the highest. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_SetPriority(uint8 priority) +{ + *SCSI_TX_COMPLETE_INTC_PRIOR = priority << 5; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_GetPriority +******************************************************************************** +* +* Summary: +* Gets the Priority of the Interrupt. +* +* Parameters: +* None +* +* Return: +* Priority of the interrupt. 0 - 7, 0 being the highest. +* +*******************************************************************************/ +uint8 SCSI_TX_COMPLETE_GetPriority(void) +{ + uint8 priority; + + + priority = *SCSI_TX_COMPLETE_INTC_PRIOR >> 5; + + return priority; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_Enable +******************************************************************************** +* +* Summary: +* Enables the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_Enable(void) +{ + /* Enable the general interrupt. */ + *SCSI_TX_COMPLETE_INTC_SET_EN = SCSI_TX_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_GetState +******************************************************************************** +* +* Summary: +* Gets the state (enabled, disabled) of the Interrupt. +* +* Parameters: +* None +* +* Return: +* 1 if enabled, 0 if disabled. +* +*******************************************************************************/ +uint8 SCSI_TX_COMPLETE_GetState(void) +{ + /* Get the state of the general interrupt. */ + return ((*SCSI_TX_COMPLETE_INTC_SET_EN & (uint32)SCSI_TX_COMPLETE__INTC_MASK) != 0u) ? 1u:0u; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_Disable +******************************************************************************** +* +* Summary: +* Disables the Interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_Disable(void) +{ + /* Disable the general interrupt. */ + *SCSI_TX_COMPLETE_INTC_CLR_EN = SCSI_TX_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_SetPending +******************************************************************************** +* +* Summary: +* Causes the Interrupt to enter the pending state, a software method of +* generating the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_SetPending(void) +{ + *SCSI_TX_COMPLETE_INTC_SET_PD = SCSI_TX_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_COMPLETE_ClearPending +******************************************************************************** +* +* Summary: +* Clears a pending interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_COMPLETE_ClearPending(void) +{ + *SCSI_TX_COMPLETE_INTC_CLR_PD = SCSI_TX_COMPLETE__INTC_MASK; +} + +#endif /* End check for removal by optimization */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.h new file mode 100644 index 0000000..ea4d934 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_COMPLETE.h @@ -0,0 +1,70 @@ +/******************************************************************************* +* File Name: SCSI_TX_COMPLETE.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the Interrupt Controller. +* +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ +#if !defined(CY_ISR_SCSI_TX_COMPLETE_H) +#define CY_ISR_SCSI_TX_COMPLETE_H + + +#include +#include + +/* Interrupt Controller API. */ +void SCSI_TX_COMPLETE_Start(void); +void SCSI_TX_COMPLETE_StartEx(cyisraddress address); +void SCSI_TX_COMPLETE_Stop(void); + +CY_ISR_PROTO(SCSI_TX_COMPLETE_Interrupt); + +void SCSI_TX_COMPLETE_SetVector(cyisraddress address); +cyisraddress SCSI_TX_COMPLETE_GetVector(void); + +void SCSI_TX_COMPLETE_SetPriority(uint8 priority); +uint8 SCSI_TX_COMPLETE_GetPriority(void); + +void SCSI_TX_COMPLETE_Enable(void); +uint8 SCSI_TX_COMPLETE_GetState(void); +void SCSI_TX_COMPLETE_Disable(void); + +void SCSI_TX_COMPLETE_SetPending(void); +void SCSI_TX_COMPLETE_ClearPending(void); + + +/* Interrupt Controller Constants */ + +/* Address of the INTC.VECT[x] register that contains the Address of the SCSI_TX_COMPLETE ISR. */ +#define SCSI_TX_COMPLETE_INTC_VECTOR ((reg32 *) SCSI_TX_COMPLETE__INTC_VECT) + +/* Address of the SCSI_TX_COMPLETE ISR priority. */ +#define SCSI_TX_COMPLETE_INTC_PRIOR ((reg8 *) SCSI_TX_COMPLETE__INTC_PRIOR_REG) + +/* Priority of the SCSI_TX_COMPLETE interrupt. */ +#define SCSI_TX_COMPLETE_INTC_PRIOR_NUMBER SCSI_TX_COMPLETE__INTC_PRIOR_NUM + +/* Address of the INTC.SET_EN[x] byte to bit enable SCSI_TX_COMPLETE interrupt. */ +#define SCSI_TX_COMPLETE_INTC_SET_EN ((reg32 *) SCSI_TX_COMPLETE__INTC_SET_EN_REG) + +/* Address of the INTC.CLR_EN[x] register to bit clear the SCSI_TX_COMPLETE interrupt. */ +#define SCSI_TX_COMPLETE_INTC_CLR_EN ((reg32 *) SCSI_TX_COMPLETE__INTC_CLR_EN_REG) + +/* Address of the INTC.SET_PD[x] register to set the SCSI_TX_COMPLETE interrupt state to pending. */ +#define SCSI_TX_COMPLETE_INTC_SET_PD ((reg32 *) SCSI_TX_COMPLETE__INTC_SET_PD_REG) + +/* Address of the INTC.CLR_PD[x] register to clear the SCSI_TX_COMPLETE interrupt. */ +#define SCSI_TX_COMPLETE_INTC_CLR_PD ((reg32 *) SCSI_TX_COMPLETE__INTC_CLR_PD_REG) + + +#endif /* CY_ISR_SCSI_TX_COMPLETE_H */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.c new file mode 100644 index 0000000..a9c001e --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.c @@ -0,0 +1,356 @@ +/******************************************************************************* +* File Name: SCSI_TX_DMA_COMPLETE.c +* Version 1.70 +* +* Description: +* API for controlling the state of an interrupt. +* +* +* Note: +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ + + +#include +#include +#include + +#if !defined(SCSI_TX_DMA_COMPLETE__REMOVED) /* Check for removal by optimization */ + +/******************************************************************************* +* Place your includes, defines and code here +********************************************************************************/ +/* `#START SCSI_TX_DMA_COMPLETE_intc` */ + +/* `#END` */ + +#ifndef CYINT_IRQ_BASE +#define CYINT_IRQ_BASE 16 +#endif /* CYINT_IRQ_BASE */ +#ifndef CYINT_VECT_TABLE +#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET) +#endif /* CYINT_VECT_TABLE */ + +/* Declared in startup, used to set unused interrupts to. */ +CY_ISR_PROTO(IntDefaultHandler); + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_Start +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_Start(void) +{ + /* For all we know the interrupt is active. */ + SCSI_TX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SCSI_TX_DMA_COMPLETE Interrupt. */ + SCSI_TX_DMA_COMPLETE_SetVector(&SCSI_TX_DMA_COMPLETE_Interrupt); + + /* Set the priority. */ + SCSI_TX_DMA_COMPLETE_SetPriority((uint8)SCSI_TX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_TX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_StartEx +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_StartEx(cyisraddress address) +{ + /* For all we know the interrupt is active. */ + SCSI_TX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SCSI_TX_DMA_COMPLETE Interrupt. */ + SCSI_TX_DMA_COMPLETE_SetVector(address); + + /* Set the priority. */ + SCSI_TX_DMA_COMPLETE_SetPriority((uint8)SCSI_TX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_TX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_Stop +******************************************************************************** +* +* Summary: +* Disables and removes the interrupt. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_Stop(void) +{ + /* Disable this interrupt. */ + SCSI_TX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the passive one. */ + SCSI_TX_DMA_COMPLETE_SetVector(&IntDefaultHandler); +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_Interrupt +******************************************************************************** +* +* Summary: +* The default Interrupt Service Routine for SCSI_TX_DMA_COMPLETE. +* +* Add custom code between the coments to keep the next version of this file +* from over writting your code. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +CY_ISR(SCSI_TX_DMA_COMPLETE_Interrupt) +{ + /* Place your Interrupt code here. */ + /* `#START SCSI_TX_DMA_COMPLETE_Interrupt` */ + + /* `#END` */ +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_SetVector +******************************************************************************** +* +* Summary: +* Change the ISR vector for the Interrupt. Note calling SCSI_TX_DMA_COMPLETE_Start +* will override any effect this method would have had. To set the vector +* before the component has been started use SCSI_TX_DMA_COMPLETE_StartEx instead. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_SetVector(cyisraddress address) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_TX_DMA_COMPLETE__INTC_NUMBER] = address; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_GetVector +******************************************************************************** +* +* Summary: +* Gets the "address" of the current ISR vector for the Interrupt. +* +* Parameters: +* None +* +* Return: +* Address of the ISR in the interrupt vector table. +* +*******************************************************************************/ +cyisraddress SCSI_TX_DMA_COMPLETE_GetVector(void) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_TX_DMA_COMPLETE__INTC_NUMBER]; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_SetPriority +******************************************************************************** +* +* Summary: +* Sets the Priority of the Interrupt. Note calling SCSI_TX_DMA_COMPLETE_Start +* or SCSI_TX_DMA_COMPLETE_StartEx will override any effect this method +* would have had. This method should only be called after +* SCSI_TX_DMA_COMPLETE_Start or SCSI_TX_DMA_COMPLETE_StartEx has been called. To set +* the initial priority for the component use the cydwr file in the tool. +* +* Parameters: +* priority: Priority of the interrupt. 0 - 7, 0 being the highest. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_SetPriority(uint8 priority) +{ + *SCSI_TX_DMA_COMPLETE_INTC_PRIOR = priority << 5; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_GetPriority +******************************************************************************** +* +* Summary: +* Gets the Priority of the Interrupt. +* +* Parameters: +* None +* +* Return: +* Priority of the interrupt. 0 - 7, 0 being the highest. +* +*******************************************************************************/ +uint8 SCSI_TX_DMA_COMPLETE_GetPriority(void) +{ + uint8 priority; + + + priority = *SCSI_TX_DMA_COMPLETE_INTC_PRIOR >> 5; + + return priority; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_Enable +******************************************************************************** +* +* Summary: +* Enables the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_Enable(void) +{ + /* Enable the general interrupt. */ + *SCSI_TX_DMA_COMPLETE_INTC_SET_EN = SCSI_TX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_GetState +******************************************************************************** +* +* Summary: +* Gets the state (enabled, disabled) of the Interrupt. +* +* Parameters: +* None +* +* Return: +* 1 if enabled, 0 if disabled. +* +*******************************************************************************/ +uint8 SCSI_TX_DMA_COMPLETE_GetState(void) +{ + /* Get the state of the general interrupt. */ + return ((*SCSI_TX_DMA_COMPLETE_INTC_SET_EN & (uint32)SCSI_TX_DMA_COMPLETE__INTC_MASK) != 0u) ? 1u:0u; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_Disable +******************************************************************************** +* +* Summary: +* Disables the Interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_Disable(void) +{ + /* Disable the general interrupt. */ + *SCSI_TX_DMA_COMPLETE_INTC_CLR_EN = SCSI_TX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_SetPending +******************************************************************************** +* +* Summary: +* Causes the Interrupt to enter the pending state, a software method of +* generating the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_SetPending(void) +{ + *SCSI_TX_DMA_COMPLETE_INTC_SET_PD = SCSI_TX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_TX_DMA_COMPLETE_ClearPending +******************************************************************************** +* +* Summary: +* Clears a pending interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_TX_DMA_COMPLETE_ClearPending(void) +{ + *SCSI_TX_DMA_COMPLETE_INTC_CLR_PD = SCSI_TX_DMA_COMPLETE__INTC_MASK; +} + +#endif /* End check for removal by optimization */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.h new file mode 100644 index 0000000..5efbf9b --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_COMPLETE.h @@ -0,0 +1,70 @@ +/******************************************************************************* +* File Name: SCSI_TX_DMA_COMPLETE.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the Interrupt Controller. +* +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ +#if !defined(CY_ISR_SCSI_TX_DMA_COMPLETE_H) +#define CY_ISR_SCSI_TX_DMA_COMPLETE_H + + +#include +#include + +/* Interrupt Controller API. */ +void SCSI_TX_DMA_COMPLETE_Start(void); +void SCSI_TX_DMA_COMPLETE_StartEx(cyisraddress address); +void SCSI_TX_DMA_COMPLETE_Stop(void); + +CY_ISR_PROTO(SCSI_TX_DMA_COMPLETE_Interrupt); + +void SCSI_TX_DMA_COMPLETE_SetVector(cyisraddress address); +cyisraddress SCSI_TX_DMA_COMPLETE_GetVector(void); + +void SCSI_TX_DMA_COMPLETE_SetPriority(uint8 priority); +uint8 SCSI_TX_DMA_COMPLETE_GetPriority(void); + +void SCSI_TX_DMA_COMPLETE_Enable(void); +uint8 SCSI_TX_DMA_COMPLETE_GetState(void); +void SCSI_TX_DMA_COMPLETE_Disable(void); + +void SCSI_TX_DMA_COMPLETE_SetPending(void); +void SCSI_TX_DMA_COMPLETE_ClearPending(void); + + +/* Interrupt Controller Constants */ + +/* Address of the INTC.VECT[x] register that contains the Address of the SCSI_TX_DMA_COMPLETE ISR. */ +#define SCSI_TX_DMA_COMPLETE_INTC_VECTOR ((reg32 *) SCSI_TX_DMA_COMPLETE__INTC_VECT) + +/* Address of the SCSI_TX_DMA_COMPLETE ISR priority. */ +#define SCSI_TX_DMA_COMPLETE_INTC_PRIOR ((reg8 *) SCSI_TX_DMA_COMPLETE__INTC_PRIOR_REG) + +/* Priority of the SCSI_TX_DMA_COMPLETE interrupt. */ +#define SCSI_TX_DMA_COMPLETE_INTC_PRIOR_NUMBER SCSI_TX_DMA_COMPLETE__INTC_PRIOR_NUM + +/* Address of the INTC.SET_EN[x] byte to bit enable SCSI_TX_DMA_COMPLETE interrupt. */ +#define SCSI_TX_DMA_COMPLETE_INTC_SET_EN ((reg32 *) SCSI_TX_DMA_COMPLETE__INTC_SET_EN_REG) + +/* Address of the INTC.CLR_EN[x] register to bit clear the SCSI_TX_DMA_COMPLETE interrupt. */ +#define SCSI_TX_DMA_COMPLETE_INTC_CLR_EN ((reg32 *) SCSI_TX_DMA_COMPLETE__INTC_CLR_EN_REG) + +/* Address of the INTC.SET_PD[x] register to set the SCSI_TX_DMA_COMPLETE interrupt state to pending. */ +#define SCSI_TX_DMA_COMPLETE_INTC_SET_PD ((reg32 *) SCSI_TX_DMA_COMPLETE__INTC_SET_PD_REG) + +/* Address of the INTC.CLR_PD[x] register to clear the SCSI_TX_DMA_COMPLETE interrupt. */ +#define SCSI_TX_DMA_COMPLETE_INTC_CLR_PD ((reg32 *) SCSI_TX_DMA_COMPLETE__INTC_CLR_PD_REG) + + +#endif /* CY_ISR_SCSI_TX_DMA_COMPLETE_H */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.c new file mode 100644 index 0000000..83419f7 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.c @@ -0,0 +1,141 @@ +/*************************************************************************** +* File Name: SCSI_TX_DMA_dma.c +* Version 1.70 +* +* Description: +* Provides an API for the DMAC component. The API includes functions +* for the DMA controller, DMA channels and Transfer Descriptors. +* +* +* Note: +* This module requires the developer to finish or fill in the auto +* generated funcions and setup the dma channel and TD's. +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#include +#include +#include + + + +/**************************************************************************** +* +* The following defines are available in Cyfitter.h +* +* +* +* SCSI_TX_DMA__DRQ_CTL_REG +* +* +* SCSI_TX_DMA__DRQ_NUMBER +* +* Number of TD's used by this channel. +* SCSI_TX_DMA__NUMBEROF_TDS +* +* Priority of this channel. +* SCSI_TX_DMA__PRIORITY +* +* True if SCSI_TX_DMA_TERMIN_SEL is used. +* SCSI_TX_DMA__TERMIN_EN +* +* TERMIN interrupt line to signal terminate. +* SCSI_TX_DMA__TERMIN_SEL +* +* +* True if SCSI_TX_DMA_TERMOUT0_SEL is used. +* SCSI_TX_DMA__TERMOUT0_EN +* +* +* TERMOUT0 interrupt line to signal completion. +* SCSI_TX_DMA__TERMOUT0_SEL +* +* +* True if SCSI_TX_DMA_TERMOUT1_SEL is used. +* SCSI_TX_DMA__TERMOUT1_EN +* +* +* TERMOUT1 interrupt line to signal completion. +* SCSI_TX_DMA__TERMOUT1_SEL +* +****************************************************************************/ + + +/* Zero based index of SCSI_TX_DMA dma channel */ +uint8 SCSI_TX_DMA_DmaHandle = DMA_INVALID_CHANNEL; + +/********************************************************************* +* Function Name: uint8 SCSI_TX_DMA_DmaInitalize +********************************************************************** +* Summary: +* Allocates and initialises a channel of the DMAC to be used by the +* caller. +* +* Parameters: +* BurstCount. +* +* +* ReqestPerBurst. +* +* +* UpperSrcAddress. +* +* +* UpperDestAddress. +* +* +* Return: +* The channel that can be used by the caller for DMA activity. +* DMA_INVALID_CHANNEL (0xFF) if there are no channels left. +* +* +*******************************************************************/ +uint8 SCSI_TX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) +{ + + /* Allocate a DMA channel. */ + SCSI_TX_DMA_DmaHandle = (uint8)SCSI_TX_DMA__DRQ_NUMBER; + + /* Configure the channel. */ + (void)CyDmaChSetConfiguration(SCSI_TX_DMA_DmaHandle, + BurstCount, + ReqestPerBurst, + (uint8)SCSI_TX_DMA__TERMOUT0_SEL, + (uint8)SCSI_TX_DMA__TERMOUT1_SEL, + (uint8)SCSI_TX_DMA__TERMIN_SEL); + + /* Set the extended address for the transfers */ + (void)CyDmaChSetExtendedAddress(SCSI_TX_DMA_DmaHandle, UpperSrcAddress, UpperDestAddress); + + /* Set the priority for this channel */ + (void)CyDmaChPriority(SCSI_TX_DMA_DmaHandle, (uint8)SCSI_TX_DMA__PRIORITY); + + return SCSI_TX_DMA_DmaHandle; +} + +/********************************************************************* +* Function Name: void SCSI_TX_DMA_DmaRelease +********************************************************************** +* Summary: +* Frees the channel associated with SCSI_TX_DMA. +* +* +* Parameters: +* void. +* +* +* +* Return: +* void. +* +*******************************************************************/ +void SCSI_TX_DMA_DmaRelease(void) +{ + /* Disable the channel */ + (void)CyDmaChDisable(SCSI_TX_DMA_DmaHandle); +} + diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.h new file mode 100644 index 0000000..c0a1b00 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_TX_DMA_dma.h @@ -0,0 +1,35 @@ +/****************************************************************************** +* File Name: SCSI_TX_DMA_dma.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the DMA Controller. +* +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#if !defined(CY_DMA_SCSI_TX_DMA_DMA_H__) +#define CY_DMA_SCSI_TX_DMA_DMA_H__ + + + +#include +#include + +#define SCSI_TX_DMA__TD_TERMOUT_EN (((0 != SCSI_TX_DMA__TERMOUT0_EN) ? TD_TERMOUT0_EN : 0) | \ + (SCSI_TX_DMA__TERMOUT1_EN ? TD_TERMOUT1_EN : 0)) + +/* Zero based index of SCSI_TX_DMA dma channel */ +extern uint8 SCSI_TX_DMA_DmaHandle; + + +uint8 SCSI_TX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) ; +void SCSI_TX_DMA_DmaRelease(void) ; + + +/* CY_DMA_SCSI_TX_DMA_DMA_H__ */ +#endif diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SDCard.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SDCard.h old mode 100755 new mode 100644 index bb19eba..124adc7 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SDCard.h +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SDCard.h @@ -147,7 +147,7 @@ extern uint8 SDCard_initVar; #define SDCard_INT_ON_SPI_DONE ((uint8) (0u << SDCard_STS_SPI_DONE_SHIFT)) #define SDCard_INT_ON_TX_EMPTY ((uint8) (0u << SDCard_STS_TX_FIFO_EMPTY_SHIFT)) -#define SDCard_INT_ON_TX_NOT_FULL ((uint8) (0u << \ +#define SDCard_INT_ON_TX_NOT_FULL ((uint8) (1u << \ SDCard_STS_TX_FIFO_NOT_FULL_SHIFT)) #define SDCard_INT_ON_BYTE_COMP ((uint8) (0u << SDCard_STS_BYTE_COMPLETE_SHIFT)) #define SDCard_INT_ON_SPI_IDLE ((uint8) (0u << SDCard_STS_SPI_IDLE_SHIFT)) @@ -165,7 +165,7 @@ extern uint8 SDCard_initVar; #define SDCard_INT_ON_RX_FULL ((uint8) (0u << \ SDCard_STS_RX_FIFO_FULL_SHIFT)) -#define SDCard_INT_ON_RX_NOT_EMPTY ((uint8) (0u << \ +#define SDCard_INT_ON_RX_NOT_EMPTY ((uint8) (1u << \ SDCard_STS_RX_FIFO_NOT_EMPTY_SHIFT)) #define SDCard_INT_ON_RX_OVER ((uint8) (0u << \ SDCard_STS_RX_FIFO_OVERRUN_SHIFT)) diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.c deleted file mode 100755 index 6553ced..0000000 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.c +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* -* File Name: SD_Clk_Ctl.c -* Version 1.70 -* -* Description: -* This file contains API to enable firmware control of a Control Register. -* -* Note: -* -******************************************************************************** -* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. -* You may use this file only in accordance with the license, terms, conditions, -* disclaimers, and limitations in the end user license agreement accompanying -* the software package with which this file was provided. -*******************************************************************************/ - -#include "SD_Clk_Ctl.h" - -#if !defined(SD_Clk_Ctl_Sync_ctrl_reg__REMOVED) /* Check for removal by optimization */ - -/******************************************************************************* -* Function Name: SD_Clk_Ctl_Write -******************************************************************************** -* -* Summary: -* Write a byte to the Control Register. -* -* Parameters: -* control: The value to be assigned to the Control Register. -* -* Return: -* None. -* -*******************************************************************************/ -void SD_Clk_Ctl_Write(uint8 control) -{ - SD_Clk_Ctl_Control = control; -} - - -/******************************************************************************* -* Function Name: SD_Clk_Ctl_Read -******************************************************************************** -* -* Summary: -* Reads the current value assigned to the Control Register. -* -* Parameters: -* None. -* -* Return: -* Returns the current value in the Control Register. -* -*******************************************************************************/ -uint8 SD_Clk_Ctl_Read(void) -{ - return SD_Clk_Ctl_Control; -} - -#endif /* End check for removal by optimization */ - - -/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.h deleted file mode 100755 index 7c6d263..0000000 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Clk_Ctl.h +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* -* File Name: SD_Clk_Ctl.h -* Version 1.70 -* -* Description: -* This file containts Control Register function prototypes and register defines -* -* Note: -* -******************************************************************************** -* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. -* You may use this file only in accordance with the license, terms, conditions, -* disclaimers, and limitations in the end user license agreement accompanying -* the software package with which this file was provided. -*******************************************************************************/ - -#if !defined(CY_CONTROL_REG_SD_Clk_Ctl_H) /* CY_CONTROL_REG_SD_Clk_Ctl_H */ -#define CY_CONTROL_REG_SD_Clk_Ctl_H - -#include "cytypes.h" - - -/*************************************** -* Function Prototypes -***************************************/ - -void SD_Clk_Ctl_Write(uint8 control) ; -uint8 SD_Clk_Ctl_Read(void) ; - - -/*************************************** -* Registers -***************************************/ - -/* Control Register */ -#define SD_Clk_Ctl_Control (* (reg8 *) SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_REG ) -#define SD_Clk_Ctl_Control_PTR ( (reg8 *) SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_REG ) - -#endif /* End CY_CONTROL_REG_SD_Clk_Ctl_H */ - - -/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.c deleted file mode 100755 index c6cd4e2..0000000 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.c +++ /dev/null @@ -1,521 +0,0 @@ -/******************************************************************************* -* File Name: SD_Init_Clk.c -* Version 2.10 -* -* Description: -* This file provides the source code to the API for the clock component. -* -* Note: -* -******************************************************************************** -* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. -* You may use this file only in accordance with the license, terms, conditions, -* disclaimers, and limitations in the end user license agreement accompanying -* the software package with which this file was provided. -*******************************************************************************/ - -#include -#include "SD_Init_Clk.h" - -/* Clock Distribution registers. */ -#define CLK_DIST_LD (* (reg8 *) CYREG_CLKDIST_LD) -#define CLK_DIST_BCFG2 (* (reg8 *) CYREG_CLKDIST_BCFG2) -#define BCFG2_MASK (0x80u) -#define CLK_DIST_DMASK (* (reg8 *) CYREG_CLKDIST_DMASK) -#define CLK_DIST_AMASK (* (reg8 *) CYREG_CLKDIST_AMASK) - -#define HAS_CLKDIST_LD_DISABLE (CY_PSOC3 || CY_PSOC5LP) - - -/******************************************************************************* -* Function Name: SD_Init_Clk_Start -******************************************************************************** -* -* Summary: -* Starts the clock. Note that on startup, clocks may be already running if the -* "Start on Reset" option is enabled in the DWR. -* -* Parameters: -* None -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_Start(void) -{ - /* Set the bit to enable the clock. */ - SD_Init_Clk_CLKEN |= SD_Init_Clk_CLKEN_MASK; - SD_Init_Clk_CLKSTBY |= SD_Init_Clk_CLKSTBY_MASK; -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_Stop -******************************************************************************** -* -* Summary: -* Stops the clock and returns immediately. This API does not require the -* source clock to be running but may return before the hardware is actually -* disabled. If the settings of the clock are changed after calling this -* function, the clock may glitch when it is started. To avoid the clock -* glitch, use the StopBlock function. -* -* Parameters: -* None -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_Stop(void) -{ - /* Clear the bit to disable the clock. */ - SD_Init_Clk_CLKEN &= (uint8)(~SD_Init_Clk_CLKEN_MASK); - SD_Init_Clk_CLKSTBY &= (uint8)(~SD_Init_Clk_CLKSTBY_MASK); -} - - -#if(CY_PSOC3 || CY_PSOC5LP) - - -/******************************************************************************* -* Function Name: SD_Init_Clk_StopBlock -******************************************************************************** -* -* Summary: -* Stops the clock and waits for the hardware to actually be disabled before -* returning. This ensures that the clock is never truncated (high part of the -* cycle will terminate before the clock is disabled and the API returns). -* Note that the source clock must be running or this API will never return as -* a stopped clock cannot be disabled. -* -* Parameters: -* None -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_StopBlock(void) -{ - if ((SD_Init_Clk_CLKEN & SD_Init_Clk_CLKEN_MASK) != 0u) - { -#if HAS_CLKDIST_LD_DISABLE - uint16 oldDivider; - - CLK_DIST_LD = 0u; - - /* Clear all the mask bits except ours. */ -#if defined(SD_Init_Clk__CFG3) - CLK_DIST_AMASK = SD_Init_Clk_CLKEN_MASK; - CLK_DIST_DMASK = 0x00u; -#else - CLK_DIST_DMASK = SD_Init_Clk_CLKEN_MASK; - CLK_DIST_AMASK = 0x00u; -#endif /* SD_Init_Clk__CFG3 */ - - /* Clear mask of bus clock. */ - CLK_DIST_BCFG2 &= (uint8)(~BCFG2_MASK); - - oldDivider = CY_GET_REG16(SD_Init_Clk_DIV_PTR); - CY_SET_REG16(CYREG_CLKDIST_WRK0, oldDivider); - CLK_DIST_LD = CYCLK_LD_DISABLE | CYCLK_LD_SYNC_EN | CYCLK_LD_LOAD; - - /* Wait for clock to be disabled */ - while ((CLK_DIST_LD & CYCLK_LD_LOAD) != 0u) { } -#endif /* HAS_CLKDIST_LD_DISABLE */ - - /* Clear the bit to disable the clock. */ - SD_Init_Clk_CLKEN &= (uint8)(~SD_Init_Clk_CLKEN_MASK); - SD_Init_Clk_CLKSTBY &= (uint8)(~SD_Init_Clk_CLKSTBY_MASK); - -#if HAS_CLKDIST_LD_DISABLE - /* Clear the disable bit */ - CLK_DIST_LD = 0x00u; - CY_SET_REG16(SD_Init_Clk_DIV_PTR, oldDivider); -#endif /* HAS_CLKDIST_LD_DISABLE */ - } -} -#endif /* (CY_PSOC3 || CY_PSOC5LP) */ - - -/******************************************************************************* -* Function Name: SD_Init_Clk_StandbyPower -******************************************************************************** -* -* Summary: -* Sets whether the clock is active in standby mode. -* -* Parameters: -* state: 0 to disable clock during standby, nonzero to enable. -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_StandbyPower(uint8 state) -{ - if(state == 0u) - { - SD_Init_Clk_CLKSTBY &= (uint8)(~SD_Init_Clk_CLKSTBY_MASK); - } - else - { - SD_Init_Clk_CLKSTBY |= SD_Init_Clk_CLKSTBY_MASK; - } -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_SetDividerRegister -******************************************************************************** -* -* Summary: -* Modifies the clock divider and, thus, the frequency. When the clock divider -* register is set to zero or changed from zero, the clock will be temporarily -* disabled in order to change the SSS mode bit. If the clock is enabled when -* SetDividerRegister is called, then the source clock must be running. -* -* Parameters: -* clkDivider: Divider register value (0-65,535). This value is NOT the -* divider; the clock hardware divides by clkDivider plus one. For example, -* to divide the clock by 2, this parameter should be set to 1. -* restart: If nonzero, restarts the clock divider: the current clock cycle -* will be truncated and the new divide value will take effect immediately. If -* zero, the new divide value will take effect at the end of the current clock -* cycle. -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_SetDividerRegister(uint16 clkDivider, uint8 restart) - -{ - uint8 enabled; - - uint8 currSrc = SD_Init_Clk_GetSourceRegister(); - uint16 oldDivider = SD_Init_Clk_GetDividerRegister(); - - if (clkDivider != oldDivider) - { - enabled = SD_Init_Clk_CLKEN & SD_Init_Clk_CLKEN_MASK; - - if ((currSrc == (uint8)CYCLK_SRC_SEL_CLK_SYNC_D) && ((oldDivider == 0u) || (clkDivider == 0u))) - { - /* Moving to/from SSS requires correct ordering to prevent halting the clock */ - if (oldDivider == 0u) - { - /* Moving away from SSS, set the divider first so when SSS is cleared we */ - /* don't halt the clock. Using the shadow load isn't required as the */ - /* divider is ignored while SSS is set. */ - CY_SET_REG16(SD_Init_Clk_DIV_PTR, clkDivider); - SD_Init_Clk_MOD_SRC &= (uint8)(~CYCLK_SSS); - } - else - { - /* Moving to SSS, set SSS which then ignores the divider and we can set */ - /* it without bothering with the shadow load. */ - SD_Init_Clk_MOD_SRC |= CYCLK_SSS; - CY_SET_REG16(SD_Init_Clk_DIV_PTR, clkDivider); - } - } - else - { - - if (enabled != 0u) - { - CLK_DIST_LD = 0x00u; - - /* Clear all the mask bits except ours. */ -#if defined(SD_Init_Clk__CFG3) - CLK_DIST_AMASK = SD_Init_Clk_CLKEN_MASK; - CLK_DIST_DMASK = 0x00u; -#else - CLK_DIST_DMASK = SD_Init_Clk_CLKEN_MASK; - CLK_DIST_AMASK = 0x00u; -#endif /* SD_Init_Clk__CFG3 */ - /* Clear mask of bus clock. */ - CLK_DIST_BCFG2 &= (uint8)(~BCFG2_MASK); - - /* If clock is currently enabled, disable it if async or going from N-to-1*/ - if (((SD_Init_Clk_MOD_SRC & CYCLK_SYNC) == 0u) || (clkDivider == 0u)) - { -#if HAS_CLKDIST_LD_DISABLE - CY_SET_REG16(CYREG_CLKDIST_WRK0, oldDivider); - CLK_DIST_LD = CYCLK_LD_DISABLE|CYCLK_LD_SYNC_EN|CYCLK_LD_LOAD; - - /* Wait for clock to be disabled */ - while ((CLK_DIST_LD & CYCLK_LD_LOAD) != 0u) { } -#endif /* HAS_CLKDIST_LD_DISABLE */ - - SD_Init_Clk_CLKEN &= (uint8)(~SD_Init_Clk_CLKEN_MASK); - -#if HAS_CLKDIST_LD_DISABLE - /* Clear the disable bit */ - CLK_DIST_LD = 0x00u; -#endif /* HAS_CLKDIST_LD_DISABLE */ - } - } - - /* Load divide value. */ - if ((SD_Init_Clk_CLKEN & SD_Init_Clk_CLKEN_MASK) != 0u) - { - /* If the clock is still enabled, use the shadow registers */ - CY_SET_REG16(CYREG_CLKDIST_WRK0, clkDivider); - - CLK_DIST_LD = (CYCLK_LD_LOAD | ((restart != 0u) ? CYCLK_LD_SYNC_EN : 0x00u)); - while ((CLK_DIST_LD & CYCLK_LD_LOAD) != 0u) { } - } - else - { - /* If the clock is disabled, set the divider directly */ - CY_SET_REG16(SD_Init_Clk_DIV_PTR, clkDivider); - SD_Init_Clk_CLKEN |= enabled; - } - } - } -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_GetDividerRegister -******************************************************************************** -* -* Summary: -* Gets the clock divider register value. -* -* Parameters: -* None -* -* Returns: -* Divide value of the clock minus 1. For example, if the clock is set to -* divide by 2, the return value will be 1. -* -*******************************************************************************/ -uint16 SD_Init_Clk_GetDividerRegister(void) -{ - return CY_GET_REG16(SD_Init_Clk_DIV_PTR); -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_SetModeRegister -******************************************************************************** -* -* Summary: -* Sets flags that control the operating mode of the clock. This function only -* changes flags from 0 to 1; flags that are already 1 will remain unchanged. -* To clear flags, use the ClearModeRegister function. The clock must be -* disabled before changing the mode. -* -* Parameters: -* clkMode: Bit mask containing the bits to set. For PSoC 3 and PSoC 5, -* clkMode should be a set of the following optional bits or'ed together. -* - CYCLK_EARLY Enable early phase mode. Rising edge of output clock will -* occur when the divider count reaches half of the divide -* value. -* - CYCLK_DUTY Enable 50% duty cycle output. When enabled, the output clock -* is asserted for approximately half of its period. When -* disabled, the output clock is asserted for one period of the -* source clock. -* - CYCLK_SYNC Enable output synchronization to master clock. This should -* be enabled for all synchronous clocks. -* See the Technical Reference Manual for details about setting the mode of -* the clock. Specifically, see the CLKDIST.DCFG.CFG2 register. -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_SetModeRegister(uint8 modeBitMask) -{ - SD_Init_Clk_MOD_SRC |= modeBitMask & (uint8)SD_Init_Clk_MODE_MASK; -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_ClearModeRegister -******************************************************************************** -* -* Summary: -* Clears flags that control the operating mode of the clock. This function -* only changes flags from 1 to 0; flags that are already 0 will remain -* unchanged. To set flags, use the SetModeRegister function. The clock must be -* disabled before changing the mode. -* -* Parameters: -* clkMode: Bit mask containing the bits to clear. For PSoC 3 and PSoC 5, -* clkMode should be a set of the following optional bits or'ed together. -* - CYCLK_EARLY Enable early phase mode. Rising edge of output clock will -* occur when the divider count reaches half of the divide -* value. -* - CYCLK_DUTY Enable 50% duty cycle output. When enabled, the output clock -* is asserted for approximately half of its period. When -* disabled, the output clock is asserted for one period of the -* source clock. -* - CYCLK_SYNC Enable output synchronization to master clock. This should -* be enabled for all synchronous clocks. -* See the Technical Reference Manual for details about setting the mode of -* the clock. Specifically, see the CLKDIST.DCFG.CFG2 register. -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_ClearModeRegister(uint8 modeBitMask) -{ - SD_Init_Clk_MOD_SRC &= (uint8)(~modeBitMask) | (uint8)(~(uint8)(SD_Init_Clk_MODE_MASK)); -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_GetModeRegister -******************************************************************************** -* -* Summary: -* Gets the clock mode register value. -* -* Parameters: -* None -* -* Returns: -* Bit mask representing the enabled mode bits. See the SetModeRegister and -* ClearModeRegister descriptions for details about the mode bits. -* -*******************************************************************************/ -uint8 SD_Init_Clk_GetModeRegister(void) -{ - return SD_Init_Clk_MOD_SRC & (uint8)(SD_Init_Clk_MODE_MASK); -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_SetSourceRegister -******************************************************************************** -* -* Summary: -* Sets the input source of the clock. The clock must be disabled before -* changing the source. The old and new clock sources must be running. -* -* Parameters: -* clkSource: For PSoC 3 and PSoC 5 devices, clkSource should be one of the -* following input sources: -* - CYCLK_SRC_SEL_SYNC_DIG -* - CYCLK_SRC_SEL_IMO -* - CYCLK_SRC_SEL_XTALM -* - CYCLK_SRC_SEL_ILO -* - CYCLK_SRC_SEL_PLL -* - CYCLK_SRC_SEL_XTALK -* - CYCLK_SRC_SEL_DSI_G -* - CYCLK_SRC_SEL_DSI_D/CYCLK_SRC_SEL_DSI_A -* See the Technical Reference Manual for details on clock sources. -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_SetSourceRegister(uint8 clkSource) -{ - uint16 currDiv = SD_Init_Clk_GetDividerRegister(); - uint8 oldSrc = SD_Init_Clk_GetSourceRegister(); - - if (((oldSrc != ((uint8)CYCLK_SRC_SEL_CLK_SYNC_D)) && - (clkSource == ((uint8)CYCLK_SRC_SEL_CLK_SYNC_D))) && (currDiv == 0u)) - { - /* Switching to Master and divider is 1, set SSS, which will output master, */ - /* then set the source so we are consistent. */ - SD_Init_Clk_MOD_SRC |= CYCLK_SSS; - SD_Init_Clk_MOD_SRC = - (SD_Init_Clk_MOD_SRC & (uint8)(~SD_Init_Clk_SRC_SEL_MSK)) | clkSource; - } - else if (((oldSrc == ((uint8)CYCLK_SRC_SEL_CLK_SYNC_D)) && - (clkSource != ((uint8)CYCLK_SRC_SEL_CLK_SYNC_D))) && (currDiv == 0u)) - { - /* Switching from Master to not and divider is 1, set source, so we don't */ - /* lock when we clear SSS. */ - SD_Init_Clk_MOD_SRC = - (SD_Init_Clk_MOD_SRC & (uint8)(~SD_Init_Clk_SRC_SEL_MSK)) | clkSource; - SD_Init_Clk_MOD_SRC &= (uint8)(~CYCLK_SSS); - } - else - { - SD_Init_Clk_MOD_SRC = - (SD_Init_Clk_MOD_SRC & (uint8)(~SD_Init_Clk_SRC_SEL_MSK)) | clkSource; - } -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_GetSourceRegister -******************************************************************************** -* -* Summary: -* Gets the input source of the clock. -* -* Parameters: -* None -* -* Returns: -* The input source of the clock. See SetSourceRegister for details. -* -*******************************************************************************/ -uint8 SD_Init_Clk_GetSourceRegister(void) -{ - return SD_Init_Clk_MOD_SRC & SD_Init_Clk_SRC_SEL_MSK; -} - - -#if defined(SD_Init_Clk__CFG3) - - -/******************************************************************************* -* Function Name: SD_Init_Clk_SetPhaseRegister -******************************************************************************** -* -* Summary: -* Sets the phase delay of the analog clock. This function is only available -* for analog clocks. The clock must be disabled before changing the phase -* delay to avoid glitches. -* -* Parameters: -* clkPhase: Amount to delay the phase of the clock, in 1.0ns increments. -* clkPhase must be from 1 to 11 inclusive. Other values, including 0, -* disable the clock. clkPhase = 1 produces a 0ns delay and clkPhase = 11 -* produces a 10ns delay. -* -* Returns: -* None -* -*******************************************************************************/ -void SD_Init_Clk_SetPhaseRegister(uint8 clkPhase) -{ - SD_Init_Clk_PHASE = clkPhase & SD_Init_Clk_PHASE_MASK; -} - - -/******************************************************************************* -* Function Name: SD_Init_Clk_GetPhase -******************************************************************************** -* -* Summary: -* Gets the phase delay of the analog clock. This function is only available -* for analog clocks. -* -* Parameters: -* None -* -* Returns: -* Phase of the analog clock. See SetPhaseRegister for details. -* -*******************************************************************************/ -uint8 SD_Init_Clk_GetPhaseRegister(void) -{ - return SD_Init_Clk_PHASE & SD_Init_Clk_PHASE_MASK; -} - -#endif /* SD_Init_Clk__CFG3 */ - - -/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.h deleted file mode 100755 index df7e48b..0000000 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_Init_Clk.h +++ /dev/null @@ -1,124 +0,0 @@ -/******************************************************************************* -* File Name: SD_Init_Clk.h -* Version 2.10 -* -* Description: -* Provides the function and constant definitions for the clock component. -* -* Note: -* -******************************************************************************** -* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. -* You may use this file only in accordance with the license, terms, conditions, -* disclaimers, and limitations in the end user license agreement accompanying -* the software package with which this file was provided. -*******************************************************************************/ - -#if !defined(CY_CLOCK_SD_Init_Clk_H) -#define CY_CLOCK_SD_Init_Clk_H - -#include -#include - - -/*************************************** -* Conditional Compilation Parameters -***************************************/ - -/* Check to see if required defines such as CY_PSOC5LP are available */ -/* They are defined starting with cy_boot v3.0 */ -#if !defined (CY_PSOC5LP) - #error Component cy_clock_v2_10 requires cy_boot v3.0 or later -#endif /* (CY_PSOC5LP) */ - - -/*************************************** -* Function Prototypes -***************************************/ - -void SD_Init_Clk_Start(void) ; -void SD_Init_Clk_Stop(void) ; - -#if(CY_PSOC3 || CY_PSOC5LP) -void SD_Init_Clk_StopBlock(void) ; -#endif /* (CY_PSOC3 || CY_PSOC5LP) */ - -void SD_Init_Clk_StandbyPower(uint8 state) ; -void SD_Init_Clk_SetDividerRegister(uint16 clkDivider, uint8 restart) - ; -uint16 SD_Init_Clk_GetDividerRegister(void) ; -void SD_Init_Clk_SetModeRegister(uint8 modeBitMask) ; -void SD_Init_Clk_ClearModeRegister(uint8 modeBitMask) ; -uint8 SD_Init_Clk_GetModeRegister(void) ; -void SD_Init_Clk_SetSourceRegister(uint8 clkSource) ; -uint8 SD_Init_Clk_GetSourceRegister(void) ; -#if defined(SD_Init_Clk__CFG3) -void SD_Init_Clk_SetPhaseRegister(uint8 clkPhase) ; -uint8 SD_Init_Clk_GetPhaseRegister(void) ; -#endif /* defined(SD_Init_Clk__CFG3) */ - -#define SD_Init_Clk_Enable() SD_Init_Clk_Start() -#define SD_Init_Clk_Disable() SD_Init_Clk_Stop() -#define SD_Init_Clk_SetDivider(clkDivider) SD_Init_Clk_SetDividerRegister(clkDivider, 1u) -#define SD_Init_Clk_SetDividerValue(clkDivider) SD_Init_Clk_SetDividerRegister((clkDivider) - 1u, 1u) -#define SD_Init_Clk_SetMode(clkMode) SD_Init_Clk_SetModeRegister(clkMode) -#define SD_Init_Clk_SetSource(clkSource) SD_Init_Clk_SetSourceRegister(clkSource) -#if defined(SD_Init_Clk__CFG3) -#define SD_Init_Clk_SetPhase(clkPhase) SD_Init_Clk_SetPhaseRegister(clkPhase) -#define SD_Init_Clk_SetPhaseValue(clkPhase) SD_Init_Clk_SetPhaseRegister((clkPhase) + 1u) -#endif /* defined(SD_Init_Clk__CFG3) */ - - -/*************************************** -* Registers -***************************************/ - -/* Register to enable or disable the clock */ -#define SD_Init_Clk_CLKEN (* (reg8 *) SD_Init_Clk__PM_ACT_CFG) -#define SD_Init_Clk_CLKEN_PTR ((reg8 *) SD_Init_Clk__PM_ACT_CFG) - -/* Register to enable or disable the clock */ -#define SD_Init_Clk_CLKSTBY (* (reg8 *) SD_Init_Clk__PM_STBY_CFG) -#define SD_Init_Clk_CLKSTBY_PTR ((reg8 *) SD_Init_Clk__PM_STBY_CFG) - -/* Clock LSB divider configuration register. */ -#define SD_Init_Clk_DIV_LSB (* (reg8 *) SD_Init_Clk__CFG0) -#define SD_Init_Clk_DIV_LSB_PTR ((reg8 *) SD_Init_Clk__CFG0) -#define SD_Init_Clk_DIV_PTR ((reg16 *) SD_Init_Clk__CFG0) - -/* Clock MSB divider configuration register. */ -#define SD_Init_Clk_DIV_MSB (* (reg8 *) SD_Init_Clk__CFG1) -#define SD_Init_Clk_DIV_MSB_PTR ((reg8 *) SD_Init_Clk__CFG1) - -/* Mode and source configuration register */ -#define SD_Init_Clk_MOD_SRC (* (reg8 *) SD_Init_Clk__CFG2) -#define SD_Init_Clk_MOD_SRC_PTR ((reg8 *) SD_Init_Clk__CFG2) - -#if defined(SD_Init_Clk__CFG3) -/* Analog clock phase configuration register */ -#define SD_Init_Clk_PHASE (* (reg8 *) SD_Init_Clk__CFG3) -#define SD_Init_Clk_PHASE_PTR ((reg8 *) SD_Init_Clk__CFG3) -#endif /* defined(SD_Init_Clk__CFG3) */ - - -/************************************** -* Register Constants -**************************************/ - -/* Power manager register masks */ -#define SD_Init_Clk_CLKEN_MASK SD_Init_Clk__PM_ACT_MSK -#define SD_Init_Clk_CLKSTBY_MASK SD_Init_Clk__PM_STBY_MSK - -/* CFG2 field masks */ -#define SD_Init_Clk_SRC_SEL_MSK SD_Init_Clk__CFG2_SRC_SEL_MASK -#define SD_Init_Clk_MODE_MASK (~(SD_Init_Clk_SRC_SEL_MSK)) - -#if defined(SD_Init_Clk__CFG3) -/* CFG3 phase mask */ -#define SD_Init_Clk_PHASE_MASK SD_Init_Clk__CFG3_PHASE_DLY_MASK -#endif /* defined(SD_Init_Clk__CFG3) */ - -#endif /* CY_CLOCK_SD_Init_Clk_H */ - - -/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.c new file mode 100644 index 0000000..2671e74 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.c @@ -0,0 +1,356 @@ +/******************************************************************************* +* File Name: SD_RX_DMA_COMPLETE.c +* Version 1.70 +* +* Description: +* API for controlling the state of an interrupt. +* +* +* Note: +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ + + +#include +#include +#include + +#if !defined(SD_RX_DMA_COMPLETE__REMOVED) /* Check for removal by optimization */ + +/******************************************************************************* +* Place your includes, defines and code here +********************************************************************************/ +/* `#START SD_RX_DMA_COMPLETE_intc` */ + +/* `#END` */ + +#ifndef CYINT_IRQ_BASE +#define CYINT_IRQ_BASE 16 +#endif /* CYINT_IRQ_BASE */ +#ifndef CYINT_VECT_TABLE +#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET) +#endif /* CYINT_VECT_TABLE */ + +/* Declared in startup, used to set unused interrupts to. */ +CY_ISR_PROTO(IntDefaultHandler); + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_Start +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_Start(void) +{ + /* For all we know the interrupt is active. */ + SD_RX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SD_RX_DMA_COMPLETE Interrupt. */ + SD_RX_DMA_COMPLETE_SetVector(&SD_RX_DMA_COMPLETE_Interrupt); + + /* Set the priority. */ + SD_RX_DMA_COMPLETE_SetPriority((uint8)SD_RX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SD_RX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_StartEx +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_StartEx(cyisraddress address) +{ + /* For all we know the interrupt is active. */ + SD_RX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SD_RX_DMA_COMPLETE Interrupt. */ + SD_RX_DMA_COMPLETE_SetVector(address); + + /* Set the priority. */ + SD_RX_DMA_COMPLETE_SetPriority((uint8)SD_RX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SD_RX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_Stop +******************************************************************************** +* +* Summary: +* Disables and removes the interrupt. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_Stop(void) +{ + /* Disable this interrupt. */ + SD_RX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the passive one. */ + SD_RX_DMA_COMPLETE_SetVector(&IntDefaultHandler); +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_Interrupt +******************************************************************************** +* +* Summary: +* The default Interrupt Service Routine for SD_RX_DMA_COMPLETE. +* +* Add custom code between the coments to keep the next version of this file +* from over writting your code. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +CY_ISR(SD_RX_DMA_COMPLETE_Interrupt) +{ + /* Place your Interrupt code here. */ + /* `#START SD_RX_DMA_COMPLETE_Interrupt` */ + + /* `#END` */ +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_SetVector +******************************************************************************** +* +* Summary: +* Change the ISR vector for the Interrupt. Note calling SD_RX_DMA_COMPLETE_Start +* will override any effect this method would have had. To set the vector +* before the component has been started use SD_RX_DMA_COMPLETE_StartEx instead. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_SetVector(cyisraddress address) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + ramVectorTable[CYINT_IRQ_BASE + (uint32)SD_RX_DMA_COMPLETE__INTC_NUMBER] = address; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_GetVector +******************************************************************************** +* +* Summary: +* Gets the "address" of the current ISR vector for the Interrupt. +* +* Parameters: +* None +* +* Return: +* Address of the ISR in the interrupt vector table. +* +*******************************************************************************/ +cyisraddress SD_RX_DMA_COMPLETE_GetVector(void) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + return ramVectorTable[CYINT_IRQ_BASE + (uint32)SD_RX_DMA_COMPLETE__INTC_NUMBER]; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_SetPriority +******************************************************************************** +* +* Summary: +* Sets the Priority of the Interrupt. Note calling SD_RX_DMA_COMPLETE_Start +* or SD_RX_DMA_COMPLETE_StartEx will override any effect this method +* would have had. This method should only be called after +* SD_RX_DMA_COMPLETE_Start or SD_RX_DMA_COMPLETE_StartEx has been called. To set +* the initial priority for the component use the cydwr file in the tool. +* +* Parameters: +* priority: Priority of the interrupt. 0 - 7, 0 being the highest. +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_SetPriority(uint8 priority) +{ + *SD_RX_DMA_COMPLETE_INTC_PRIOR = priority << 5; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_GetPriority +******************************************************************************** +* +* Summary: +* Gets the Priority of the Interrupt. +* +* Parameters: +* None +* +* Return: +* Priority of the interrupt. 0 - 7, 0 being the highest. +* +*******************************************************************************/ +uint8 SD_RX_DMA_COMPLETE_GetPriority(void) +{ + uint8 priority; + + + priority = *SD_RX_DMA_COMPLETE_INTC_PRIOR >> 5; + + return priority; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_Enable +******************************************************************************** +* +* Summary: +* Enables the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_Enable(void) +{ + /* Enable the general interrupt. */ + *SD_RX_DMA_COMPLETE_INTC_SET_EN = SD_RX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_GetState +******************************************************************************** +* +* Summary: +* Gets the state (enabled, disabled) of the Interrupt. +* +* Parameters: +* None +* +* Return: +* 1 if enabled, 0 if disabled. +* +*******************************************************************************/ +uint8 SD_RX_DMA_COMPLETE_GetState(void) +{ + /* Get the state of the general interrupt. */ + return ((*SD_RX_DMA_COMPLETE_INTC_SET_EN & (uint32)SD_RX_DMA_COMPLETE__INTC_MASK) != 0u) ? 1u:0u; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_Disable +******************************************************************************** +* +* Summary: +* Disables the Interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_Disable(void) +{ + /* Disable the general interrupt. */ + *SD_RX_DMA_COMPLETE_INTC_CLR_EN = SD_RX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_SetPending +******************************************************************************** +* +* Summary: +* Causes the Interrupt to enter the pending state, a software method of +* generating the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_SetPending(void) +{ + *SD_RX_DMA_COMPLETE_INTC_SET_PD = SD_RX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SD_RX_DMA_COMPLETE_ClearPending +******************************************************************************** +* +* Summary: +* Clears a pending interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_RX_DMA_COMPLETE_ClearPending(void) +{ + *SD_RX_DMA_COMPLETE_INTC_CLR_PD = SD_RX_DMA_COMPLETE__INTC_MASK; +} + +#endif /* End check for removal by optimization */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.h new file mode 100644 index 0000000..d1751d1 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_COMPLETE.h @@ -0,0 +1,70 @@ +/******************************************************************************* +* File Name: SD_RX_DMA_COMPLETE.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the Interrupt Controller. +* +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ +#if !defined(CY_ISR_SD_RX_DMA_COMPLETE_H) +#define CY_ISR_SD_RX_DMA_COMPLETE_H + + +#include +#include + +/* Interrupt Controller API. */ +void SD_RX_DMA_COMPLETE_Start(void); +void SD_RX_DMA_COMPLETE_StartEx(cyisraddress address); +void SD_RX_DMA_COMPLETE_Stop(void); + +CY_ISR_PROTO(SD_RX_DMA_COMPLETE_Interrupt); + +void SD_RX_DMA_COMPLETE_SetVector(cyisraddress address); +cyisraddress SD_RX_DMA_COMPLETE_GetVector(void); + +void SD_RX_DMA_COMPLETE_SetPriority(uint8 priority); +uint8 SD_RX_DMA_COMPLETE_GetPriority(void); + +void SD_RX_DMA_COMPLETE_Enable(void); +uint8 SD_RX_DMA_COMPLETE_GetState(void); +void SD_RX_DMA_COMPLETE_Disable(void); + +void SD_RX_DMA_COMPLETE_SetPending(void); +void SD_RX_DMA_COMPLETE_ClearPending(void); + + +/* Interrupt Controller Constants */ + +/* Address of the INTC.VECT[x] register that contains the Address of the SD_RX_DMA_COMPLETE ISR. */ +#define SD_RX_DMA_COMPLETE_INTC_VECTOR ((reg32 *) SD_RX_DMA_COMPLETE__INTC_VECT) + +/* Address of the SD_RX_DMA_COMPLETE ISR priority. */ +#define SD_RX_DMA_COMPLETE_INTC_PRIOR ((reg8 *) SD_RX_DMA_COMPLETE__INTC_PRIOR_REG) + +/* Priority of the SD_RX_DMA_COMPLETE interrupt. */ +#define SD_RX_DMA_COMPLETE_INTC_PRIOR_NUMBER SD_RX_DMA_COMPLETE__INTC_PRIOR_NUM + +/* Address of the INTC.SET_EN[x] byte to bit enable SD_RX_DMA_COMPLETE interrupt. */ +#define SD_RX_DMA_COMPLETE_INTC_SET_EN ((reg32 *) SD_RX_DMA_COMPLETE__INTC_SET_EN_REG) + +/* Address of the INTC.CLR_EN[x] register to bit clear the SD_RX_DMA_COMPLETE interrupt. */ +#define SD_RX_DMA_COMPLETE_INTC_CLR_EN ((reg32 *) SD_RX_DMA_COMPLETE__INTC_CLR_EN_REG) + +/* Address of the INTC.SET_PD[x] register to set the SD_RX_DMA_COMPLETE interrupt state to pending. */ +#define SD_RX_DMA_COMPLETE_INTC_SET_PD ((reg32 *) SD_RX_DMA_COMPLETE__INTC_SET_PD_REG) + +/* Address of the INTC.CLR_PD[x] register to clear the SD_RX_DMA_COMPLETE interrupt. */ +#define SD_RX_DMA_COMPLETE_INTC_CLR_PD ((reg32 *) SD_RX_DMA_COMPLETE__INTC_CLR_PD_REG) + + +#endif /* CY_ISR_SD_RX_DMA_COMPLETE_H */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.c new file mode 100644 index 0000000..b2b9bf1 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.c @@ -0,0 +1,141 @@ +/*************************************************************************** +* File Name: SD_RX_DMA_dma.c +* Version 1.70 +* +* Description: +* Provides an API for the DMAC component. The API includes functions +* for the DMA controller, DMA channels and Transfer Descriptors. +* +* +* Note: +* This module requires the developer to finish or fill in the auto +* generated funcions and setup the dma channel and TD's. +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#include +#include +#include + + + +/**************************************************************************** +* +* The following defines are available in Cyfitter.h +* +* +* +* SD_RX_DMA__DRQ_CTL_REG +* +* +* SD_RX_DMA__DRQ_NUMBER +* +* Number of TD's used by this channel. +* SD_RX_DMA__NUMBEROF_TDS +* +* Priority of this channel. +* SD_RX_DMA__PRIORITY +* +* True if SD_RX_DMA_TERMIN_SEL is used. +* SD_RX_DMA__TERMIN_EN +* +* TERMIN interrupt line to signal terminate. +* SD_RX_DMA__TERMIN_SEL +* +* +* True if SD_RX_DMA_TERMOUT0_SEL is used. +* SD_RX_DMA__TERMOUT0_EN +* +* +* TERMOUT0 interrupt line to signal completion. +* SD_RX_DMA__TERMOUT0_SEL +* +* +* True if SD_RX_DMA_TERMOUT1_SEL is used. +* SD_RX_DMA__TERMOUT1_EN +* +* +* TERMOUT1 interrupt line to signal completion. +* SD_RX_DMA__TERMOUT1_SEL +* +****************************************************************************/ + + +/* Zero based index of SD_RX_DMA dma channel */ +uint8 SD_RX_DMA_DmaHandle = DMA_INVALID_CHANNEL; + +/********************************************************************* +* Function Name: uint8 SD_RX_DMA_DmaInitalize +********************************************************************** +* Summary: +* Allocates and initialises a channel of the DMAC to be used by the +* caller. +* +* Parameters: +* BurstCount. +* +* +* ReqestPerBurst. +* +* +* UpperSrcAddress. +* +* +* UpperDestAddress. +* +* +* Return: +* The channel that can be used by the caller for DMA activity. +* DMA_INVALID_CHANNEL (0xFF) if there are no channels left. +* +* +*******************************************************************/ +uint8 SD_RX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) +{ + + /* Allocate a DMA channel. */ + SD_RX_DMA_DmaHandle = (uint8)SD_RX_DMA__DRQ_NUMBER; + + /* Configure the channel. */ + (void)CyDmaChSetConfiguration(SD_RX_DMA_DmaHandle, + BurstCount, + ReqestPerBurst, + (uint8)SD_RX_DMA__TERMOUT0_SEL, + (uint8)SD_RX_DMA__TERMOUT1_SEL, + (uint8)SD_RX_DMA__TERMIN_SEL); + + /* Set the extended address for the transfers */ + (void)CyDmaChSetExtendedAddress(SD_RX_DMA_DmaHandle, UpperSrcAddress, UpperDestAddress); + + /* Set the priority for this channel */ + (void)CyDmaChPriority(SD_RX_DMA_DmaHandle, (uint8)SD_RX_DMA__PRIORITY); + + return SD_RX_DMA_DmaHandle; +} + +/********************************************************************* +* Function Name: void SD_RX_DMA_DmaRelease +********************************************************************** +* Summary: +* Frees the channel associated with SD_RX_DMA. +* +* +* Parameters: +* void. +* +* +* +* Return: +* void. +* +*******************************************************************/ +void SD_RX_DMA_DmaRelease(void) +{ + /* Disable the channel */ + (void)CyDmaChDisable(SD_RX_DMA_DmaHandle); +} + diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.h new file mode 100644 index 0000000..c38d0da --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_RX_DMA_dma.h @@ -0,0 +1,35 @@ +/****************************************************************************** +* File Name: SD_RX_DMA_dma.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the DMA Controller. +* +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#if !defined(CY_DMA_SD_RX_DMA_DMA_H__) +#define CY_DMA_SD_RX_DMA_DMA_H__ + + + +#include +#include + +#define SD_RX_DMA__TD_TERMOUT_EN (((0 != SD_RX_DMA__TERMOUT0_EN) ? TD_TERMOUT0_EN : 0) | \ + (SD_RX_DMA__TERMOUT1_EN ? TD_TERMOUT1_EN : 0)) + +/* Zero based index of SD_RX_DMA dma channel */ +extern uint8 SD_RX_DMA_DmaHandle; + + +uint8 SD_RX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) ; +void SD_RX_DMA_DmaRelease(void) ; + + +/* CY_DMA_SD_RX_DMA_DMA_H__ */ +#endif diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.c new file mode 100644 index 0000000..7998256 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.c @@ -0,0 +1,356 @@ +/******************************************************************************* +* File Name: SD_TX_DMA_COMPLETE.c +* Version 1.70 +* +* Description: +* API for controlling the state of an interrupt. +* +* +* Note: +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ + + +#include +#include +#include + +#if !defined(SD_TX_DMA_COMPLETE__REMOVED) /* Check for removal by optimization */ + +/******************************************************************************* +* Place your includes, defines and code here +********************************************************************************/ +/* `#START SD_TX_DMA_COMPLETE_intc` */ + +/* `#END` */ + +#ifndef CYINT_IRQ_BASE +#define CYINT_IRQ_BASE 16 +#endif /* CYINT_IRQ_BASE */ +#ifndef CYINT_VECT_TABLE +#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET) +#endif /* CYINT_VECT_TABLE */ + +/* Declared in startup, used to set unused interrupts to. */ +CY_ISR_PROTO(IntDefaultHandler); + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_Start +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_Start(void) +{ + /* For all we know the interrupt is active. */ + SD_TX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SD_TX_DMA_COMPLETE Interrupt. */ + SD_TX_DMA_COMPLETE_SetVector(&SD_TX_DMA_COMPLETE_Interrupt); + + /* Set the priority. */ + SD_TX_DMA_COMPLETE_SetPriority((uint8)SD_TX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SD_TX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_StartEx +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_StartEx(cyisraddress address) +{ + /* For all we know the interrupt is active. */ + SD_TX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the SD_TX_DMA_COMPLETE Interrupt. */ + SD_TX_DMA_COMPLETE_SetVector(address); + + /* Set the priority. */ + SD_TX_DMA_COMPLETE_SetPriority((uint8)SD_TX_DMA_COMPLETE_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SD_TX_DMA_COMPLETE_Enable(); +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_Stop +******************************************************************************** +* +* Summary: +* Disables and removes the interrupt. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_Stop(void) +{ + /* Disable this interrupt. */ + SD_TX_DMA_COMPLETE_Disable(); + + /* Set the ISR to point to the passive one. */ + SD_TX_DMA_COMPLETE_SetVector(&IntDefaultHandler); +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_Interrupt +******************************************************************************** +* +* Summary: +* The default Interrupt Service Routine for SD_TX_DMA_COMPLETE. +* +* Add custom code between the coments to keep the next version of this file +* from over writting your code. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +CY_ISR(SD_TX_DMA_COMPLETE_Interrupt) +{ + /* Place your Interrupt code here. */ + /* `#START SD_TX_DMA_COMPLETE_Interrupt` */ + + /* `#END` */ +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_SetVector +******************************************************************************** +* +* Summary: +* Change the ISR vector for the Interrupt. Note calling SD_TX_DMA_COMPLETE_Start +* will override any effect this method would have had. To set the vector +* before the component has been started use SD_TX_DMA_COMPLETE_StartEx instead. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_SetVector(cyisraddress address) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + ramVectorTable[CYINT_IRQ_BASE + (uint32)SD_TX_DMA_COMPLETE__INTC_NUMBER] = address; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_GetVector +******************************************************************************** +* +* Summary: +* Gets the "address" of the current ISR vector for the Interrupt. +* +* Parameters: +* None +* +* Return: +* Address of the ISR in the interrupt vector table. +* +*******************************************************************************/ +cyisraddress SD_TX_DMA_COMPLETE_GetVector(void) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + return ramVectorTable[CYINT_IRQ_BASE + (uint32)SD_TX_DMA_COMPLETE__INTC_NUMBER]; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_SetPriority +******************************************************************************** +* +* Summary: +* Sets the Priority of the Interrupt. Note calling SD_TX_DMA_COMPLETE_Start +* or SD_TX_DMA_COMPLETE_StartEx will override any effect this method +* would have had. This method should only be called after +* SD_TX_DMA_COMPLETE_Start or SD_TX_DMA_COMPLETE_StartEx has been called. To set +* the initial priority for the component use the cydwr file in the tool. +* +* Parameters: +* priority: Priority of the interrupt. 0 - 7, 0 being the highest. +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_SetPriority(uint8 priority) +{ + *SD_TX_DMA_COMPLETE_INTC_PRIOR = priority << 5; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_GetPriority +******************************************************************************** +* +* Summary: +* Gets the Priority of the Interrupt. +* +* Parameters: +* None +* +* Return: +* Priority of the interrupt. 0 - 7, 0 being the highest. +* +*******************************************************************************/ +uint8 SD_TX_DMA_COMPLETE_GetPriority(void) +{ + uint8 priority; + + + priority = *SD_TX_DMA_COMPLETE_INTC_PRIOR >> 5; + + return priority; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_Enable +******************************************************************************** +* +* Summary: +* Enables the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_Enable(void) +{ + /* Enable the general interrupt. */ + *SD_TX_DMA_COMPLETE_INTC_SET_EN = SD_TX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_GetState +******************************************************************************** +* +* Summary: +* Gets the state (enabled, disabled) of the Interrupt. +* +* Parameters: +* None +* +* Return: +* 1 if enabled, 0 if disabled. +* +*******************************************************************************/ +uint8 SD_TX_DMA_COMPLETE_GetState(void) +{ + /* Get the state of the general interrupt. */ + return ((*SD_TX_DMA_COMPLETE_INTC_SET_EN & (uint32)SD_TX_DMA_COMPLETE__INTC_MASK) != 0u) ? 1u:0u; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_Disable +******************************************************************************** +* +* Summary: +* Disables the Interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_Disable(void) +{ + /* Disable the general interrupt. */ + *SD_TX_DMA_COMPLETE_INTC_CLR_EN = SD_TX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_SetPending +******************************************************************************** +* +* Summary: +* Causes the Interrupt to enter the pending state, a software method of +* generating the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_SetPending(void) +{ + *SD_TX_DMA_COMPLETE_INTC_SET_PD = SD_TX_DMA_COMPLETE__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SD_TX_DMA_COMPLETE_ClearPending +******************************************************************************** +* +* Summary: +* Clears a pending interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SD_TX_DMA_COMPLETE_ClearPending(void) +{ + *SD_TX_DMA_COMPLETE_INTC_CLR_PD = SD_TX_DMA_COMPLETE__INTC_MASK; +} + +#endif /* End check for removal by optimization */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.h new file mode 100644 index 0000000..bbacac6 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_COMPLETE.h @@ -0,0 +1,70 @@ +/******************************************************************************* +* File Name: SD_TX_DMA_COMPLETE.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the Interrupt Controller. +* +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ +#if !defined(CY_ISR_SD_TX_DMA_COMPLETE_H) +#define CY_ISR_SD_TX_DMA_COMPLETE_H + + +#include +#include + +/* Interrupt Controller API. */ +void SD_TX_DMA_COMPLETE_Start(void); +void SD_TX_DMA_COMPLETE_StartEx(cyisraddress address); +void SD_TX_DMA_COMPLETE_Stop(void); + +CY_ISR_PROTO(SD_TX_DMA_COMPLETE_Interrupt); + +void SD_TX_DMA_COMPLETE_SetVector(cyisraddress address); +cyisraddress SD_TX_DMA_COMPLETE_GetVector(void); + +void SD_TX_DMA_COMPLETE_SetPriority(uint8 priority); +uint8 SD_TX_DMA_COMPLETE_GetPriority(void); + +void SD_TX_DMA_COMPLETE_Enable(void); +uint8 SD_TX_DMA_COMPLETE_GetState(void); +void SD_TX_DMA_COMPLETE_Disable(void); + +void SD_TX_DMA_COMPLETE_SetPending(void); +void SD_TX_DMA_COMPLETE_ClearPending(void); + + +/* Interrupt Controller Constants */ + +/* Address of the INTC.VECT[x] register that contains the Address of the SD_TX_DMA_COMPLETE ISR. */ +#define SD_TX_DMA_COMPLETE_INTC_VECTOR ((reg32 *) SD_TX_DMA_COMPLETE__INTC_VECT) + +/* Address of the SD_TX_DMA_COMPLETE ISR priority. */ +#define SD_TX_DMA_COMPLETE_INTC_PRIOR ((reg8 *) SD_TX_DMA_COMPLETE__INTC_PRIOR_REG) + +/* Priority of the SD_TX_DMA_COMPLETE interrupt. */ +#define SD_TX_DMA_COMPLETE_INTC_PRIOR_NUMBER SD_TX_DMA_COMPLETE__INTC_PRIOR_NUM + +/* Address of the INTC.SET_EN[x] byte to bit enable SD_TX_DMA_COMPLETE interrupt. */ +#define SD_TX_DMA_COMPLETE_INTC_SET_EN ((reg32 *) SD_TX_DMA_COMPLETE__INTC_SET_EN_REG) + +/* Address of the INTC.CLR_EN[x] register to bit clear the SD_TX_DMA_COMPLETE interrupt. */ +#define SD_TX_DMA_COMPLETE_INTC_CLR_EN ((reg32 *) SD_TX_DMA_COMPLETE__INTC_CLR_EN_REG) + +/* Address of the INTC.SET_PD[x] register to set the SD_TX_DMA_COMPLETE interrupt state to pending. */ +#define SD_TX_DMA_COMPLETE_INTC_SET_PD ((reg32 *) SD_TX_DMA_COMPLETE__INTC_SET_PD_REG) + +/* Address of the INTC.CLR_PD[x] register to clear the SD_TX_DMA_COMPLETE interrupt. */ +#define SD_TX_DMA_COMPLETE_INTC_CLR_PD ((reg32 *) SD_TX_DMA_COMPLETE__INTC_CLR_PD_REG) + + +#endif /* CY_ISR_SD_TX_DMA_COMPLETE_H */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.c new file mode 100644 index 0000000..4f605c2 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.c @@ -0,0 +1,141 @@ +/*************************************************************************** +* File Name: SD_TX_DMA_dma.c +* Version 1.70 +* +* Description: +* Provides an API for the DMAC component. The API includes functions +* for the DMA controller, DMA channels and Transfer Descriptors. +* +* +* Note: +* This module requires the developer to finish or fill in the auto +* generated funcions and setup the dma channel and TD's. +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#include +#include +#include + + + +/**************************************************************************** +* +* The following defines are available in Cyfitter.h +* +* +* +* SD_TX_DMA__DRQ_CTL_REG +* +* +* SD_TX_DMA__DRQ_NUMBER +* +* Number of TD's used by this channel. +* SD_TX_DMA__NUMBEROF_TDS +* +* Priority of this channel. +* SD_TX_DMA__PRIORITY +* +* True if SD_TX_DMA_TERMIN_SEL is used. +* SD_TX_DMA__TERMIN_EN +* +* TERMIN interrupt line to signal terminate. +* SD_TX_DMA__TERMIN_SEL +* +* +* True if SD_TX_DMA_TERMOUT0_SEL is used. +* SD_TX_DMA__TERMOUT0_EN +* +* +* TERMOUT0 interrupt line to signal completion. +* SD_TX_DMA__TERMOUT0_SEL +* +* +* True if SD_TX_DMA_TERMOUT1_SEL is used. +* SD_TX_DMA__TERMOUT1_EN +* +* +* TERMOUT1 interrupt line to signal completion. +* SD_TX_DMA__TERMOUT1_SEL +* +****************************************************************************/ + + +/* Zero based index of SD_TX_DMA dma channel */ +uint8 SD_TX_DMA_DmaHandle = DMA_INVALID_CHANNEL; + +/********************************************************************* +* Function Name: uint8 SD_TX_DMA_DmaInitalize +********************************************************************** +* Summary: +* Allocates and initialises a channel of the DMAC to be used by the +* caller. +* +* Parameters: +* BurstCount. +* +* +* ReqestPerBurst. +* +* +* UpperSrcAddress. +* +* +* UpperDestAddress. +* +* +* Return: +* The channel that can be used by the caller for DMA activity. +* DMA_INVALID_CHANNEL (0xFF) if there are no channels left. +* +* +*******************************************************************/ +uint8 SD_TX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) +{ + + /* Allocate a DMA channel. */ + SD_TX_DMA_DmaHandle = (uint8)SD_TX_DMA__DRQ_NUMBER; + + /* Configure the channel. */ + (void)CyDmaChSetConfiguration(SD_TX_DMA_DmaHandle, + BurstCount, + ReqestPerBurst, + (uint8)SD_TX_DMA__TERMOUT0_SEL, + (uint8)SD_TX_DMA__TERMOUT1_SEL, + (uint8)SD_TX_DMA__TERMIN_SEL); + + /* Set the extended address for the transfers */ + (void)CyDmaChSetExtendedAddress(SD_TX_DMA_DmaHandle, UpperSrcAddress, UpperDestAddress); + + /* Set the priority for this channel */ + (void)CyDmaChPriority(SD_TX_DMA_DmaHandle, (uint8)SD_TX_DMA__PRIORITY); + + return SD_TX_DMA_DmaHandle; +} + +/********************************************************************* +* Function Name: void SD_TX_DMA_DmaRelease +********************************************************************** +* Summary: +* Frees the channel associated with SD_TX_DMA. +* +* +* Parameters: +* void. +* +* +* +* Return: +* void. +* +*******************************************************************/ +void SD_TX_DMA_DmaRelease(void) +{ + /* Disable the channel */ + (void)CyDmaChDisable(SD_TX_DMA_DmaHandle); +} + diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.h new file mode 100644 index 0000000..64a7645 --- /dev/null +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/SD_TX_DMA_dma.h @@ -0,0 +1,35 @@ +/****************************************************************************** +* File Name: SD_TX_DMA_dma.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the DMA Controller. +* +* +******************************************************************************** +* Copyright 2008-2010, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +********************************************************************************/ +#if !defined(CY_DMA_SD_TX_DMA_DMA_H__) +#define CY_DMA_SD_TX_DMA_DMA_H__ + + + +#include +#include + +#define SD_TX_DMA__TD_TERMOUT_EN (((0 != SD_TX_DMA__TERMOUT0_EN) ? TD_TERMOUT0_EN : 0) | \ + (SD_TX_DMA__TERMOUT1_EN ? TD_TERMOUT1_EN : 0)) + +/* Zero based index of SD_TX_DMA dma channel */ +extern uint8 SD_TX_DMA_DmaHandle; + + +uint8 SD_TX_DMA_DmaInitialize(uint8 BurstCount, uint8 ReqestPerBurst, uint16 UpperSrcAddress, uint16 UpperDestAddress) ; +void SD_TX_DMA_DmaRelease(void) ; + + +/* CY_DMA_SD_TX_DMA_DMA_H__ */ +#endif diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter.h old mode 100755 new mode 100644 index 8fdbe98..bd7996b --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter.h +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter.h @@ -6,13 +6,33 @@ /* Debug_Timer_Interrupt */ #define Debug_Timer_Interrupt__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 #define Debug_Timer_Interrupt__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 -#define Debug_Timer_Interrupt__INTC_MASK 0x01u -#define Debug_Timer_Interrupt__INTC_NUMBER 0u +#define Debug_Timer_Interrupt__INTC_MASK 0x02u +#define Debug_Timer_Interrupt__INTC_NUMBER 1u #define Debug_Timer_Interrupt__INTC_PRIOR_NUM 7u -#define Debug_Timer_Interrupt__INTC_PRIOR_REG CYREG_NVIC_PRI_0 +#define Debug_Timer_Interrupt__INTC_PRIOR_REG CYREG_NVIC_PRI_1 #define Debug_Timer_Interrupt__INTC_SET_EN_REG CYREG_NVIC_SETENA0 #define Debug_Timer_Interrupt__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 +/* SCSI_RX_DMA_COMPLETE */ +#define SCSI_RX_DMA_COMPLETE__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 +#define SCSI_RX_DMA_COMPLETE__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 +#define SCSI_RX_DMA_COMPLETE__INTC_MASK 0x01u +#define SCSI_RX_DMA_COMPLETE__INTC_NUMBER 0u +#define SCSI_RX_DMA_COMPLETE__INTC_PRIOR_NUM 7u +#define SCSI_RX_DMA_COMPLETE__INTC_PRIOR_REG CYREG_NVIC_PRI_0 +#define SCSI_RX_DMA_COMPLETE__INTC_SET_EN_REG CYREG_NVIC_SETENA0 +#define SCSI_RX_DMA_COMPLETE__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 + +/* SCSI_TX_DMA_COMPLETE */ +#define SCSI_TX_DMA_COMPLETE__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 +#define SCSI_TX_DMA_COMPLETE__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 +#define SCSI_TX_DMA_COMPLETE__INTC_MASK 0x04u +#define SCSI_TX_DMA_COMPLETE__INTC_NUMBER 2u +#define SCSI_TX_DMA_COMPLETE__INTC_PRIOR_NUM 7u +#define SCSI_TX_DMA_COMPLETE__INTC_PRIOR_REG CYREG_NVIC_PRI_2 +#define SCSI_TX_DMA_COMPLETE__INTC_SET_EN_REG CYREG_NVIC_SETENA0 +#define SCSI_TX_DMA_COMPLETE__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 + /* Debug_Timer_TimerHW */ #define Debug_Timer_TimerHW__CAP0 CYREG_TMR0_CAP0 #define Debug_Timer_TimerHW__CAP1 CYREG_TMR0_CAP1 @@ -31,6 +51,26 @@ #define Debug_Timer_TimerHW__RT1 CYREG_TMR0_RT1 #define Debug_Timer_TimerHW__SR0 CYREG_TMR0_SR0 +/* SD_RX_DMA_COMPLETE */ +#define SD_RX_DMA_COMPLETE__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 +#define SD_RX_DMA_COMPLETE__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 +#define SD_RX_DMA_COMPLETE__INTC_MASK 0x08u +#define SD_RX_DMA_COMPLETE__INTC_NUMBER 3u +#define SD_RX_DMA_COMPLETE__INTC_PRIOR_NUM 7u +#define SD_RX_DMA_COMPLETE__INTC_PRIOR_REG CYREG_NVIC_PRI_3 +#define SD_RX_DMA_COMPLETE__INTC_SET_EN_REG CYREG_NVIC_SETENA0 +#define SD_RX_DMA_COMPLETE__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 + +/* SD_TX_DMA_COMPLETE */ +#define SD_TX_DMA_COMPLETE__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 +#define SD_TX_DMA_COMPLETE__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 +#define SD_TX_DMA_COMPLETE__INTC_MASK 0x10u +#define SD_TX_DMA_COMPLETE__INTC_NUMBER 4u +#define SD_TX_DMA_COMPLETE__INTC_PRIOR_NUM 7u +#define SD_TX_DMA_COMPLETE__INTC_PRIOR_REG CYREG_NVIC_PRI_4 +#define SD_TX_DMA_COMPLETE__INTC_SET_EN_REG CYREG_NVIC_SETENA0 +#define SD_TX_DMA_COMPLETE__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 + /* USBFS_bus_reset */ #define USBFS_bus_reset__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 #define USBFS_bus_reset__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 @@ -44,41 +84,41 @@ /* SCSI_CTL_PHASE */ #define SCSI_CTL_PHASE_Sync_ctrl_reg__0__MASK 0x01u #define SCSI_CTL_PHASE_Sync_ctrl_reg__0__POS 0 -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB05_06_ACTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB05_06_CTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB05_06_CTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB05_06_CTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG CYREG_B0_UDB05_06_CTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG CYREG_B0_UDB05_06_MSK -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG CYREG_B0_UDB05_06_MSK -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG CYREG_B0_UDB05_06_MSK -#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB05_06_MSK +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB02_03_ACTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB02_03_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB02_03_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB02_03_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG CYREG_B0_UDB02_03_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG CYREG_B0_UDB02_03_MSK +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG CYREG_B0_UDB02_03_MSK +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG CYREG_B0_UDB02_03_MSK +#define SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB02_03_MSK #define SCSI_CTL_PHASE_Sync_ctrl_reg__1__MASK 0x02u #define SCSI_CTL_PHASE_Sync_ctrl_reg__1__POS 1 #define SCSI_CTL_PHASE_Sync_ctrl_reg__2__MASK 0x04u #define SCSI_CTL_PHASE_Sync_ctrl_reg__2__POS 2 -#define SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG CYREG_B0_UDB05_ACTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG CYREG_B0_UDB05_CTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG CYREG_B0_UDB05_ST_CTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG CYREG_B0_UDB05_CTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG CYREG_B0_UDB05_ST_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG CYREG_B0_UDB02_ACTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG CYREG_B0_UDB02_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG CYREG_B0_UDB02_ST_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG CYREG_B0_UDB02_CTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG CYREG_B0_UDB02_ST_CTL #define SCSI_CTL_PHASE_Sync_ctrl_reg__MASK 0x07u -#define SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB05_MSK_ACTL -#define SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG CYREG_B0_UDB05_MSK -#define SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B0_UDB05_MSK_ACTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB02_MSK_ACTL +#define SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG CYREG_B0_UDB02_MSK +#define SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B0_UDB02_MSK_ACTL /* SCSI_Out_Bits */ #define SCSI_Out_Bits_Sync_ctrl_reg__0__MASK 0x01u #define SCSI_Out_Bits_Sync_ctrl_reg__0__POS 0 -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB00_01_ACTL -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB00_01_CTL -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB00_01_CTL -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB00_01_CTL -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG CYREG_B0_UDB00_01_CTL -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG CYREG_B0_UDB00_01_MSK -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG CYREG_B0_UDB00_01_MSK -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG CYREG_B0_UDB00_01_MSK -#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB00_01_MSK +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB12_13_ACTL +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB12_13_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB12_13_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB12_13_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG CYREG_B0_UDB12_13_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG CYREG_B0_UDB12_13_MSK +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG CYREG_B0_UDB12_13_MSK +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG CYREG_B0_UDB12_13_MSK +#define SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB12_13_MSK #define SCSI_Out_Bits_Sync_ctrl_reg__1__MASK 0x02u #define SCSI_Out_Bits_Sync_ctrl_reg__1__POS 1 #define SCSI_Out_Bits_Sync_ctrl_reg__2__MASK 0x04u @@ -93,15 +133,15 @@ #define SCSI_Out_Bits_Sync_ctrl_reg__6__POS 6 #define SCSI_Out_Bits_Sync_ctrl_reg__7__MASK 0x80u #define SCSI_Out_Bits_Sync_ctrl_reg__7__POS 7 -#define SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG CYREG_B0_UDB00_ACTL -#define SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG CYREG_B0_UDB00_CTL -#define SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG CYREG_B0_UDB00_ST_CTL -#define SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG CYREG_B0_UDB00_CTL -#define SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG CYREG_B0_UDB00_ST_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG CYREG_B0_UDB12_ACTL +#define SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG CYREG_B0_UDB12_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG CYREG_B0_UDB12_ST_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG CYREG_B0_UDB12_CTL +#define SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG CYREG_B0_UDB12_ST_CTL #define SCSI_Out_Bits_Sync_ctrl_reg__MASK 0xFFu -#define SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB00_MSK_ACTL -#define SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG CYREG_B0_UDB00_MSK -#define SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B0_UDB00_MSK_ACTL +#define SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL +#define SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG CYREG_B0_UDB12_MSK +#define SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL /* USBFS_arb_int */ #define USBFS_arb_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 @@ -126,24 +166,24 @@ /* SCSI_Out_Ctl */ #define SCSI_Out_Ctl_Sync_ctrl_reg__0__MASK 0x01u #define SCSI_Out_Ctl_Sync_ctrl_reg__0__POS 0 -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB03_04_ACTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB03_04_CTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB03_04_CTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB03_04_CTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG CYREG_B0_UDB03_04_CTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG CYREG_B0_UDB03_04_MSK -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG CYREG_B0_UDB03_04_MSK -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG CYREG_B0_UDB03_04_MSK -#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB03_04_MSK -#define SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG CYREG_B0_UDB03_ACTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG CYREG_B0_UDB03_CTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG CYREG_B0_UDB03_ST_CTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG CYREG_B0_UDB03_CTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG CYREG_B0_UDB03_ST_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG CYREG_B1_UDB07_08_ACTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG CYREG_B1_UDB07_08_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG CYREG_B1_UDB07_08_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG CYREG_B1_UDB07_08_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG CYREG_B1_UDB07_08_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG CYREG_B1_UDB07_08_MSK +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG CYREG_B1_UDB07_08_MSK +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG CYREG_B1_UDB07_08_MSK +#define SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG CYREG_B1_UDB07_08_MSK +#define SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG CYREG_B1_UDB07_ACTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG CYREG_B1_UDB07_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG CYREG_B1_UDB07_ST_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG CYREG_B1_UDB07_CTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG CYREG_B1_UDB07_ST_CTL #define SCSI_Out_Ctl_Sync_ctrl_reg__MASK 0x01u -#define SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL -#define SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG CYREG_B0_UDB03_MSK -#define SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG CYREG_B1_UDB07_MSK_ACTL +#define SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG CYREG_B1_UDB07_MSK +#define SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B1_UDB07_MSK_ACTL /* SCSI_Out_DBx */ #define SCSI_Out_DBx__0__AG CYREG_PRT6_AG @@ -616,8 +656,8 @@ #define SDCard_BSPIM_BitCounter__MASK_CTL_AUX_CTL_REG CYREG_B1_UDB06_MSK_ACTL #define SDCard_BSPIM_BitCounter__PERIOD_REG CYREG_B1_UDB06_MSK #define SDCard_BSPIM_BitCounter__PER_CTL_AUX_CTL_REG CYREG_B1_UDB06_MSK_ACTL -#define SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG CYREG_B0_UDB06_07_ACTL -#define SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG CYREG_B0_UDB06_07_ST +#define SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG CYREG_B0_UDB07_08_ACTL +#define SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG CYREG_B0_UDB07_08_ST #define SDCard_BSPIM_RxStsReg__4__MASK 0x10u #define SDCard_BSPIM_RxStsReg__4__POS 4 #define SDCard_BSPIM_RxStsReg__5__MASK 0x20u @@ -625,13 +665,13 @@ #define SDCard_BSPIM_RxStsReg__6__MASK 0x40u #define SDCard_BSPIM_RxStsReg__6__POS 6 #define SDCard_BSPIM_RxStsReg__MASK 0x70u -#define SDCard_BSPIM_RxStsReg__MASK_REG CYREG_B0_UDB06_MSK -#define SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG CYREG_B0_UDB06_ACTL -#define SDCard_BSPIM_RxStsReg__STATUS_REG CYREG_B0_UDB06_ST +#define SDCard_BSPIM_RxStsReg__MASK_REG CYREG_B0_UDB07_MSK +#define SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG CYREG_B0_UDB07_ACTL +#define SDCard_BSPIM_RxStsReg__STATUS_REG CYREG_B0_UDB07_ST #define SDCard_BSPIM_TxStsReg__0__MASK 0x01u #define SDCard_BSPIM_TxStsReg__0__POS 0 -#define SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG CYREG_B0_UDB04_05_ACTL -#define SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG CYREG_B0_UDB04_05_ST +#define SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG CYREG_B1_UDB07_08_ACTL +#define SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG CYREG_B1_UDB07_08_ST #define SDCard_BSPIM_TxStsReg__1__MASK 0x02u #define SDCard_BSPIM_TxStsReg__1__POS 1 #define SDCard_BSPIM_TxStsReg__2__MASK 0x04u @@ -641,26 +681,30 @@ #define SDCard_BSPIM_TxStsReg__4__MASK 0x10u #define SDCard_BSPIM_TxStsReg__4__POS 4 #define SDCard_BSPIM_TxStsReg__MASK 0x1Fu -#define SDCard_BSPIM_TxStsReg__MASK_REG CYREG_B0_UDB04_MSK -#define SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG CYREG_B0_UDB04_ACTL -#define SDCard_BSPIM_TxStsReg__STATUS_REG CYREG_B0_UDB04_ST -#define SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG CYREG_B0_UDB06_07_A0 -#define SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG CYREG_B0_UDB06_07_A1 -#define SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG CYREG_B0_UDB06_07_D0 -#define SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG CYREG_B0_UDB06_07_D1 -#define SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG CYREG_B0_UDB06_07_ACTL -#define SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG CYREG_B0_UDB06_07_F0 -#define SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG CYREG_B0_UDB06_07_F1 -#define SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG CYREG_B0_UDB06_A0_A1 -#define SDCard_BSPIM_sR8_Dp_u0__A0_REG CYREG_B0_UDB06_A0 -#define SDCard_BSPIM_sR8_Dp_u0__A1_REG CYREG_B0_UDB06_A1 -#define SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG CYREG_B0_UDB06_D0_D1 -#define SDCard_BSPIM_sR8_Dp_u0__D0_REG CYREG_B0_UDB06_D0 -#define SDCard_BSPIM_sR8_Dp_u0__D1_REG CYREG_B0_UDB06_D1 -#define SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG CYREG_B0_UDB06_ACTL -#define SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG CYREG_B0_UDB06_F0_F1 -#define SDCard_BSPIM_sR8_Dp_u0__F0_REG CYREG_B0_UDB06_F0 -#define SDCard_BSPIM_sR8_Dp_u0__F1_REG CYREG_B0_UDB06_F1 +#define SDCard_BSPIM_TxStsReg__MASK_REG CYREG_B1_UDB07_MSK +#define SDCard_BSPIM_TxStsReg__MASK_ST_AUX_CTL_REG CYREG_B1_UDB07_MSK_ACTL +#define SDCard_BSPIM_TxStsReg__PER_ST_AUX_CTL_REG CYREG_B1_UDB07_MSK_ACTL +#define SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG CYREG_B1_UDB07_ACTL +#define SDCard_BSPIM_TxStsReg__STATUS_CNT_REG CYREG_B1_UDB07_ST_CTL +#define SDCard_BSPIM_TxStsReg__STATUS_CONTROL_REG CYREG_B1_UDB07_ST_CTL +#define SDCard_BSPIM_TxStsReg__STATUS_REG CYREG_B1_UDB07_ST +#define SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG CYREG_B0_UDB04_05_A0 +#define SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG CYREG_B0_UDB04_05_A1 +#define SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG CYREG_B0_UDB04_05_D0 +#define SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG CYREG_B0_UDB04_05_D1 +#define SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG CYREG_B0_UDB04_05_ACTL +#define SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG CYREG_B0_UDB04_05_F0 +#define SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG CYREG_B0_UDB04_05_F1 +#define SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG CYREG_B0_UDB04_A0_A1 +#define SDCard_BSPIM_sR8_Dp_u0__A0_REG CYREG_B0_UDB04_A0 +#define SDCard_BSPIM_sR8_Dp_u0__A1_REG CYREG_B0_UDB04_A1 +#define SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG CYREG_B0_UDB04_D0_D1 +#define SDCard_BSPIM_sR8_Dp_u0__D0_REG CYREG_B0_UDB04_D0 +#define SDCard_BSPIM_sR8_Dp_u0__D1_REG CYREG_B0_UDB04_D1 +#define SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG CYREG_B0_UDB04_ACTL +#define SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG CYREG_B0_UDB04_F0_F1 +#define SDCard_BSPIM_sR8_Dp_u0__F0_REG CYREG_B0_UDB04_F0 +#define SDCard_BSPIM_sR8_Dp_u0__F1_REG CYREG_B0_UDB04_F1 /* USBFS_dp_int */ #define USBFS_dp_int__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 @@ -1104,6 +1148,30 @@ #define SCSI_In_DBx__DB7__SHIFT 1 #define SCSI_In_DBx__DB7__SLW CYREG_PRT2_SLW +/* SCSI_RX_DMA */ +#define SCSI_RX_DMA__DRQ_CTL CYREG_IDMUX_DRQ_CTL0 +#define SCSI_RX_DMA__DRQ_NUMBER 0u +#define SCSI_RX_DMA__NUMBEROF_TDS 0u +#define SCSI_RX_DMA__PRIORITY 2u +#define SCSI_RX_DMA__TERMIN_EN 0u +#define SCSI_RX_DMA__TERMIN_SEL 0u +#define SCSI_RX_DMA__TERMOUT0_EN 1u +#define SCSI_RX_DMA__TERMOUT0_SEL 0u +#define SCSI_RX_DMA__TERMOUT1_EN 0u +#define SCSI_RX_DMA__TERMOUT1_SEL 0u + +/* SCSI_TX_DMA */ +#define SCSI_TX_DMA__DRQ_CTL CYREG_IDMUX_DRQ_CTL0 +#define SCSI_TX_DMA__DRQ_NUMBER 1u +#define SCSI_TX_DMA__NUMBEROF_TDS 0u +#define SCSI_TX_DMA__PRIORITY 2u +#define SCSI_TX_DMA__TERMIN_EN 0u +#define SCSI_TX_DMA__TERMIN_SEL 0u +#define SCSI_TX_DMA__TERMOUT0_EN 1u +#define SCSI_TX_DMA__TERMOUT0_SEL 1u +#define SCSI_TX_DMA__TERMOUT1_EN 0u +#define SCSI_TX_DMA__TERMOUT1_SEL 0u + /* SD_Data_Clk */ #define SD_Data_Clk__CFG0 CYREG_CLKDIST_DCFG0_CFG0 #define SD_Data_Clk__CFG1 CYREG_CLKDIST_DCFG0_CFG1 @@ -1140,85 +1208,68 @@ /* scsiTarget */ #define scsiTarget_StatusReg__0__MASK 0x01u #define scsiTarget_StatusReg__0__POS 0 -#define scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG CYREG_B0_UDB13_14_ACTL -#define scsiTarget_StatusReg__16BIT_STATUS_REG CYREG_B0_UDB13_14_ST +#define scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG CYREG_B0_UDB04_05_ACTL +#define scsiTarget_StatusReg__16BIT_STATUS_REG CYREG_B0_UDB04_05_ST #define scsiTarget_StatusReg__1__MASK 0x02u #define scsiTarget_StatusReg__1__POS 1 #define scsiTarget_StatusReg__2__MASK 0x04u #define scsiTarget_StatusReg__2__POS 2 #define scsiTarget_StatusReg__3__MASK 0x08u #define scsiTarget_StatusReg__3__POS 3 -#define scsiTarget_StatusReg__MASK 0x0Fu -#define scsiTarget_StatusReg__MASK_REG CYREG_B0_UDB13_MSK -#define scsiTarget_StatusReg__STATUS_AUX_CTL_REG CYREG_B0_UDB13_ACTL -#define scsiTarget_StatusReg__STATUS_REG CYREG_B0_UDB13_ST -#define scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG CYREG_B0_UDB12_13_ACTL -#define scsiTarget_datapath_PI__16BIT_STATUS_REG CYREG_B0_UDB12_13_ST -#define scsiTarget_datapath_PI__MASK_REG CYREG_B0_UDB12_MSK -#define scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL -#define scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL -#define scsiTarget_datapath_PI__STATUS_AUX_CTL_REG CYREG_B0_UDB12_ACTL -#define scsiTarget_datapath_PI__STATUS_CNT_REG CYREG_B0_UDB12_ST_CTL -#define scsiTarget_datapath_PI__STATUS_CONTROL_REG CYREG_B0_UDB12_ST_CTL -#define scsiTarget_datapath_PI__STATUS_REG CYREG_B0_UDB12_ST -#define scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB12_13_ACTL -#define scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB12_13_CTL -#define scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB12_13_CTL -#define scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB12_13_CTL -#define scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG CYREG_B0_UDB12_13_CTL -#define scsiTarget_datapath_PO__16BIT_MASK_MASK_REG CYREG_B0_UDB12_13_MSK -#define scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG CYREG_B0_UDB12_13_MSK -#define scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG CYREG_B0_UDB12_13_MSK -#define scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB12_13_MSK -#define scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG CYREG_B0_UDB12_ACTL -#define scsiTarget_datapath_PO__CONTROL_REG CYREG_B0_UDB12_CTL -#define scsiTarget_datapath_PO__CONTROL_ST_REG CYREG_B0_UDB12_ST_CTL -#define scsiTarget_datapath_PO__COUNT_REG CYREG_B0_UDB12_CTL -#define scsiTarget_datapath_PO__COUNT_ST_REG CYREG_B0_UDB12_ST_CTL -#define scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL -#define scsiTarget_datapath_PO__PERIOD_REG CYREG_B0_UDB12_MSK -#define scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL -#define scsiTarget_datapath__16BIT_A0_REG CYREG_B0_UDB12_13_A0 -#define scsiTarget_datapath__16BIT_A1_REG CYREG_B0_UDB12_13_A1 -#define scsiTarget_datapath__16BIT_D0_REG CYREG_B0_UDB12_13_D0 -#define scsiTarget_datapath__16BIT_D1_REG CYREG_B0_UDB12_13_D1 -#define scsiTarget_datapath__16BIT_DP_AUX_CTL_REG CYREG_B0_UDB12_13_ACTL -#define scsiTarget_datapath__16BIT_F0_REG CYREG_B0_UDB12_13_F0 -#define scsiTarget_datapath__16BIT_F1_REG CYREG_B0_UDB12_13_F1 -#define scsiTarget_datapath__A0_A1_REG CYREG_B0_UDB12_A0_A1 -#define scsiTarget_datapath__A0_REG CYREG_B0_UDB12_A0 -#define scsiTarget_datapath__A1_REG CYREG_B0_UDB12_A1 -#define scsiTarget_datapath__D0_D1_REG CYREG_B0_UDB12_D0_D1 -#define scsiTarget_datapath__D0_REG CYREG_B0_UDB12_D0 -#define scsiTarget_datapath__D1_REG CYREG_B0_UDB12_D1 -#define scsiTarget_datapath__DP_AUX_CTL_REG CYREG_B0_UDB12_ACTL -#define scsiTarget_datapath__F0_F1_REG CYREG_B0_UDB12_F0_F1 -#define scsiTarget_datapath__F0_REG CYREG_B0_UDB12_F0 -#define scsiTarget_datapath__F1_REG CYREG_B0_UDB12_F1 -#define scsiTarget_datapath__MSK_DP_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL -#define scsiTarget_datapath__PER_DP_AUX_CTL_REG CYREG_B0_UDB12_MSK_ACTL +#define scsiTarget_StatusReg__4__MASK 0x10u +#define scsiTarget_StatusReg__4__POS 4 +#define scsiTarget_StatusReg__MASK 0x1Fu +#define scsiTarget_StatusReg__MASK_REG CYREG_B0_UDB04_MSK +#define scsiTarget_StatusReg__STATUS_AUX_CTL_REG CYREG_B0_UDB04_ACTL +#define scsiTarget_StatusReg__STATUS_REG CYREG_B0_UDB04_ST +#define scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG CYREG_B0_UDB03_04_ACTL +#define scsiTarget_datapath_PI__16BIT_STATUS_REG CYREG_B0_UDB03_04_ST +#define scsiTarget_datapath_PI__MASK_REG CYREG_B0_UDB03_MSK +#define scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL +#define scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL +#define scsiTarget_datapath_PI__STATUS_AUX_CTL_REG CYREG_B0_UDB03_ACTL +#define scsiTarget_datapath_PI__STATUS_CNT_REG CYREG_B0_UDB03_ST_CTL +#define scsiTarget_datapath_PI__STATUS_CONTROL_REG CYREG_B0_UDB03_ST_CTL +#define scsiTarget_datapath_PI__STATUS_REG CYREG_B0_UDB03_ST +#define scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB03_04_ACTL +#define scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB03_04_CTL +#define scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB03_04_CTL +#define scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB03_04_CTL +#define scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG CYREG_B0_UDB03_04_CTL +#define scsiTarget_datapath_PO__16BIT_MASK_MASK_REG CYREG_B0_UDB03_04_MSK +#define scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG CYREG_B0_UDB03_04_MSK +#define scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG CYREG_B0_UDB03_04_MSK +#define scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB03_04_MSK +#define scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG CYREG_B0_UDB03_ACTL +#define scsiTarget_datapath_PO__CONTROL_REG CYREG_B0_UDB03_CTL +#define scsiTarget_datapath_PO__CONTROL_ST_REG CYREG_B0_UDB03_ST_CTL +#define scsiTarget_datapath_PO__COUNT_REG CYREG_B0_UDB03_CTL +#define scsiTarget_datapath_PO__COUNT_ST_REG CYREG_B0_UDB03_ST_CTL +#define scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL +#define scsiTarget_datapath_PO__PERIOD_REG CYREG_B0_UDB03_MSK +#define scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL +#define scsiTarget_datapath__16BIT_A0_REG CYREG_B0_UDB03_04_A0 +#define scsiTarget_datapath__16BIT_A1_REG CYREG_B0_UDB03_04_A1 +#define scsiTarget_datapath__16BIT_D0_REG CYREG_B0_UDB03_04_D0 +#define scsiTarget_datapath__16BIT_D1_REG CYREG_B0_UDB03_04_D1 +#define scsiTarget_datapath__16BIT_DP_AUX_CTL_REG CYREG_B0_UDB03_04_ACTL +#define scsiTarget_datapath__16BIT_F0_REG CYREG_B0_UDB03_04_F0 +#define scsiTarget_datapath__16BIT_F1_REG CYREG_B0_UDB03_04_F1 +#define scsiTarget_datapath__A0_A1_REG CYREG_B0_UDB03_A0_A1 +#define scsiTarget_datapath__A0_REG CYREG_B0_UDB03_A0 +#define scsiTarget_datapath__A1_REG CYREG_B0_UDB03_A1 +#define scsiTarget_datapath__D0_D1_REG CYREG_B0_UDB03_D0_D1 +#define scsiTarget_datapath__D0_REG CYREG_B0_UDB03_D0 +#define scsiTarget_datapath__D1_REG CYREG_B0_UDB03_D1 +#define scsiTarget_datapath__DP_AUX_CTL_REG CYREG_B0_UDB03_ACTL +#define scsiTarget_datapath__F0_F1_REG CYREG_B0_UDB03_F0_F1 +#define scsiTarget_datapath__F0_REG CYREG_B0_UDB03_F0 +#define scsiTarget_datapath__F1_REG CYREG_B0_UDB03_F1 +#define scsiTarget_datapath__MSK_DP_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL +#define scsiTarget_datapath__PER_DP_AUX_CTL_REG CYREG_B0_UDB03_MSK_ACTL /* SD_Clk_Ctl */ -#define SD_Clk_Ctl_Sync_ctrl_reg__0__MASK 0x01u -#define SD_Clk_Ctl_Sync_ctrl_reg__0__POS 0 -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG CYREG_B0_UDB02_03_ACTL -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG CYREG_B0_UDB02_03_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG CYREG_B0_UDB02_03_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG CYREG_B0_UDB02_03_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG CYREG_B0_UDB02_03_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG CYREG_B0_UDB02_03_MSK -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG CYREG_B0_UDB02_03_MSK -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG CYREG_B0_UDB02_03_MSK -#define SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG CYREG_B0_UDB02_03_MSK -#define SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG CYREG_B0_UDB02_ACTL -#define SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_REG CYREG_B0_UDB02_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_ST_REG CYREG_B0_UDB02_ST_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__COUNT_REG CYREG_B0_UDB02_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__COUNT_ST_REG CYREG_B0_UDB02_ST_CTL -#define SD_Clk_Ctl_Sync_ctrl_reg__MASK 0x01u -#define SD_Clk_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG CYREG_B0_UDB02_MSK_ACTL -#define SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG CYREG_B0_UDB02_MSK -#define SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG CYREG_B0_UDB02_MSK_ACTL +#define SD_Clk_Ctl_Sync_ctrl_reg__REMOVED 1u /* USBFS_ep_0 */ #define USBFS_ep_0__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 @@ -1233,43 +1284,67 @@ /* USBFS_ep_1 */ #define USBFS_ep_1__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 #define USBFS_ep_1__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 -#define USBFS_ep_1__INTC_MASK 0x02u -#define USBFS_ep_1__INTC_NUMBER 1u +#define USBFS_ep_1__INTC_MASK 0x20u +#define USBFS_ep_1__INTC_NUMBER 5u #define USBFS_ep_1__INTC_PRIOR_NUM 7u -#define USBFS_ep_1__INTC_PRIOR_REG CYREG_NVIC_PRI_1 +#define USBFS_ep_1__INTC_PRIOR_REG CYREG_NVIC_PRI_5 #define USBFS_ep_1__INTC_SET_EN_REG CYREG_NVIC_SETENA0 #define USBFS_ep_1__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 /* USBFS_ep_2 */ #define USBFS_ep_2__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 #define USBFS_ep_2__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 -#define USBFS_ep_2__INTC_MASK 0x04u -#define USBFS_ep_2__INTC_NUMBER 2u +#define USBFS_ep_2__INTC_MASK 0x40u +#define USBFS_ep_2__INTC_NUMBER 6u #define USBFS_ep_2__INTC_PRIOR_NUM 7u -#define USBFS_ep_2__INTC_PRIOR_REG CYREG_NVIC_PRI_2 +#define USBFS_ep_2__INTC_PRIOR_REG CYREG_NVIC_PRI_6 #define USBFS_ep_2__INTC_SET_EN_REG CYREG_NVIC_SETENA0 #define USBFS_ep_2__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 /* USBFS_ep_3 */ #define USBFS_ep_3__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 #define USBFS_ep_3__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 -#define USBFS_ep_3__INTC_MASK 0x08u -#define USBFS_ep_3__INTC_NUMBER 3u +#define USBFS_ep_3__INTC_MASK 0x80u +#define USBFS_ep_3__INTC_NUMBER 7u #define USBFS_ep_3__INTC_PRIOR_NUM 7u -#define USBFS_ep_3__INTC_PRIOR_REG CYREG_NVIC_PRI_3 +#define USBFS_ep_3__INTC_PRIOR_REG CYREG_NVIC_PRI_7 #define USBFS_ep_3__INTC_SET_EN_REG CYREG_NVIC_SETENA0 #define USBFS_ep_3__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 /* USBFS_ep_4 */ #define USBFS_ep_4__INTC_CLR_EN_REG CYREG_NVIC_CLRENA0 #define USBFS_ep_4__INTC_CLR_PD_REG CYREG_NVIC_CLRPEND0 -#define USBFS_ep_4__INTC_MASK 0x10u -#define USBFS_ep_4__INTC_NUMBER 4u +#define USBFS_ep_4__INTC_MASK 0x100u +#define USBFS_ep_4__INTC_NUMBER 8u #define USBFS_ep_4__INTC_PRIOR_NUM 7u -#define USBFS_ep_4__INTC_PRIOR_REG CYREG_NVIC_PRI_4 +#define USBFS_ep_4__INTC_PRIOR_REG CYREG_NVIC_PRI_8 #define USBFS_ep_4__INTC_SET_EN_REG CYREG_NVIC_SETENA0 #define USBFS_ep_4__INTC_SET_PD_REG CYREG_NVIC_SETPEND0 +/* SD_RX_DMA */ +#define SD_RX_DMA__DRQ_CTL CYREG_IDMUX_DRQ_CTL0 +#define SD_RX_DMA__DRQ_NUMBER 2u +#define SD_RX_DMA__NUMBEROF_TDS 0u +#define SD_RX_DMA__PRIORITY 1u +#define SD_RX_DMA__TERMIN_EN 0u +#define SD_RX_DMA__TERMIN_SEL 0u +#define SD_RX_DMA__TERMOUT0_EN 1u +#define SD_RX_DMA__TERMOUT0_SEL 2u +#define SD_RX_DMA__TERMOUT1_EN 0u +#define SD_RX_DMA__TERMOUT1_SEL 0u + +/* SD_TX_DMA */ +#define SD_TX_DMA__DRQ_CTL CYREG_IDMUX_DRQ_CTL0 +#define SD_TX_DMA__DRQ_NUMBER 3u +#define SD_TX_DMA__NUMBEROF_TDS 0u +#define SD_TX_DMA__PRIORITY 2u +#define SD_TX_DMA__TERMIN_EN 0u +#define SD_TX_DMA__TERMIN_SEL 0u +#define SD_TX_DMA__TERMOUT0_EN 1u +#define SD_TX_DMA__TERMOUT0_SEL 3u +#define SD_TX_DMA__TERMOUT1_EN 0u +#define SD_TX_DMA__TERMOUT1_SEL 0u + /* USBFS_USB */ #define USBFS_USB__ARB_CFG CYREG_USB_ARB_CFG #define USBFS_USB__ARB_EP1_CFG CYREG_USB_ARB_EP1_CFG @@ -2789,9 +2864,9 @@ #define CYDEV_CHIP_FAMILY_PSOC5 3u #define CYDEV_CHIP_DIE_PSOC5LP 4u #define CYDEV_CHIP_DIE_EXPECT CYDEV_CHIP_DIE_PSOC5LP -#define BCLK__BUS_CLK__HZ 60000000U -#define BCLK__BUS_CLK__KHZ 60000U -#define BCLK__BUS_CLK__MHZ 60U +#define BCLK__BUS_CLK__HZ 50000000U +#define BCLK__BUS_CLK__KHZ 50000U +#define BCLK__BUS_CLK__MHZ 50U #define CYDEV_CHIP_DIE_ACTUAL CYDEV_CHIP_DIE_EXPECT #define CYDEV_CHIP_DIE_LEOPARD 1u #define CYDEV_CHIP_DIE_PANTHER 3u @@ -2852,7 +2927,7 @@ #define CYDEV_ECC_ENABLE 0 #define CYDEV_HEAP_SIZE 0x0400 #define CYDEV_INSTRUCT_CACHE_ENABLED 1 -#define CYDEV_INTR_RISING 0x00000001u +#define CYDEV_INTR_RISING 0x0000001Eu #define CYDEV_PROJ_TYPE 2 #define CYDEV_PROJ_TYPE_BOOTLOADER 1 #define CYDEV_PROJ_TYPE_LOADABLE 2 @@ -2883,7 +2958,7 @@ #define CYDEV_VIO2_MV 5000 #define CYDEV_VIO3 3.3 #define CYDEV_VIO3_MV 3300 -#define DMA_CHANNELS_USED__MASK0 0x00000000u +#define DMA_CHANNELS_USED__MASK0 0x0000000Fu #define CYDEV_BOOTLOADER_ENABLE 0 #endif /* INCLUDED_CYFITTER_H */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter_cfg.c b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter_cfg.c old mode 100755 new mode 100644 index 46963dc..f2497a0 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter_cfg.c +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitter_cfg.c @@ -121,7 +121,7 @@ static void CyClockStartupError(uint8 errorCode) } #endif -#define CY_CFG_BASE_ADDR_COUNT 35u +#define CY_CFG_BASE_ADDR_COUNT 37u CYPACKED typedef struct { uint8 offset; @@ -187,10 +187,10 @@ static void ClockSetup(void) /* Configure Digital Clocks based on settings from Clock DWR */ - CY_SET_XTND_REG16((void CYFAR *)(CYREG_CLKDIST_DCFG0_CFG0), 0x0001u); - CY_SET_XTND_REG8((void CYFAR *)(CYREG_CLKDIST_DCFG0_CFG0 + 0x2u), 0x10u); - CY_SET_XTND_REG16((void CYFAR *)(CYREG_CLKDIST_DCFG1_CFG0), 0x0001u); - CY_SET_XTND_REG8((void CYFAR *)(CYREG_CLKDIST_DCFG1_CFG0 + 0x2u), 0x18u); + CY_SET_XTND_REG16((void CYFAR *)(CYREG_CLKDIST_DCFG0_CFG0), 0x0000u); + CY_SET_XTND_REG8((void CYFAR *)(CYREG_CLKDIST_DCFG0_CFG0 + 0x2u), 0x58u); + CY_SET_XTND_REG16((void CYFAR *)(CYREG_CLKDIST_DCFG1_CFG0), 0x0000u); + CY_SET_XTND_REG8((void CYFAR *)(CYREG_CLKDIST_DCFG1_CFG0 + 0x2u), 0x58u); CY_SET_XTND_REG16((void CYFAR *)(CYREG_CLKDIST_DCFG2_CFG0), 0x0017u); CY_SET_XTND_REG8((void CYFAR *)(CYREG_CLKDIST_DCFG2_CFG0 + 0x2u), 0x19u); CY_SET_XTND_REG16((void CYFAR *)(CYREG_CLKDIST_DCFG3_CFG0), 0x001Du); @@ -204,7 +204,7 @@ static void ClockSetup(void) CY_SET_XTND_REG8((void CYFAR *)(CYREG_IMO_TR1), (CY_GET_XTND_REG8((void CYFAR *)CYREG_FLSHID_CUST_TABLES_IMO_USB))); /* Configure PLL based on settings from Clock DWR */ - CY_SET_XTND_REG16((void CYFAR *)(CYREG_FASTCLK_PLL_P), 0x0919u); + CY_SET_XTND_REG16((void CYFAR *)(CYREG_FASTCLK_PLL_P), 0x0B19u); CY_SET_XTND_REG16((void CYFAR *)(CYREG_FASTCLK_PLL_CFG0), 0x1251u); /* Wait up to 250us for the PLL to lock */ pllLock = 0u; @@ -230,7 +230,7 @@ static void ClockSetup(void) CY_SET_XTND_REG8((void CYFAR *)(CYREG_CLKDIST_UCFG), 0x00u); CY_SET_XTND_REG8((void CYFAR *)(CYREG_CLKDIST_LD), 0x02u); - CY_SET_XTND_REG8((void CYFAR *)(CYREG_PM_ACT_CFG2), ((CY_GET_XTND_REG8((void CYFAR *)CYREG_PM_ACT_CFG2) | 0x0Eu))); + CY_SET_XTND_REG8((void CYFAR *)(CYREG_PM_ACT_CFG2), ((CY_GET_XTND_REG8((void CYFAR *)CYREG_PM_ACT_CFG2) | 0x0Fu))); } @@ -351,6 +351,18 @@ void cyfitter_cfg(void) static const uint8 CYCODE BS_IOPINS0_6_VAL[] = { 0xF0u, 0x0Fu, 0x0Fu, 0x00u, 0x0Fu, 0x00u, 0x00u, 0x01u}; + /* PHUB_CFGMEM1 Address: CYREG_PHUB_CFGMEM1_CFG0 Size (bytes): 4 */ + static const uint8 CYCODE BS_PHUB_CFGMEM1_VAL[] = { + 0x00u, 0x01u, 0x00u, 0x00u}; + + /* PHUB_CFGMEM2 Address: CYREG_PHUB_CFGMEM2_CFG0 Size (bytes): 4 */ + static const uint8 CYCODE BS_PHUB_CFGMEM2_VAL[] = { + 0x00u, 0x02u, 0x00u, 0x00u}; + + /* PHUB_CFGMEM3 Address: CYREG_PHUB_CFGMEM3_CFG0 Size (bytes): 4 */ + static const uint8 CYCODE BS_PHUB_CFGMEM3_VAL[] = { + 0x00u, 0x03u, 0x00u, 0x00u}; + #ifdef CYGlobalIntDisable /* Disable interrupts by default. Let user enable if/when they want. */ CYGlobalIntDisable @@ -361,6 +373,8 @@ void cyfitter_cfg(void) CY_SET_XTND_REG8((void CYFAR *)(CYREG_CACHE_CC_CTL), (((CYDEV_INSTRUCT_CACHE_ENABLED) != 0) ? 0x01u : 0x00u)); /* Setup clocks based on selections from Clock DWR */ ClockSetup(); + /* Set Flash Cycles based on newly configured 50.00MHz Bus Clock. */ + CY_SET_XTND_REG8((void CYFAR *)(CYREG_CACHE_CC_CTL), (((CYDEV_INSTRUCT_CACHE_ENABLED) != 0) ? 0xC1u : 0xC0u)); /* Enable/Disable Debug functionality based on settings from System DWR */ CY_SET_XTND_REG8((void CYFAR *)CYREG_MLOGIC_DEBUG, (CY_GET_XTND_REG8((void CYFAR *)CYREG_MLOGIC_DEBUG) | 0x04u)); @@ -368,1092 +382,1153 @@ void cyfitter_cfg(void) static const uint32 CYCODE cy_cfg_addr_table[] = { 0x40004502u, /* Base address: 0x40004500 Count: 2 */ 0x40004F02u, /* Base address: 0x40004F00 Count: 2 */ - 0x40005209u, /* Base address: 0x40005200 Count: 9 */ + 0x4000520Au, /* Base address: 0x40005200 Count: 10 */ 0x40006401u, /* Base address: 0x40006400 Count: 1 */ 0x40006501u, /* Base address: 0x40006500 Count: 1 */ - 0x4001004Au, /* Base address: 0x40010000 Count: 74 */ - 0x40010134u, /* Base address: 0x40010100 Count: 52 */ - 0x40010252u, /* Base address: 0x40010200 Count: 82 */ - 0x40010355u, /* Base address: 0x40010300 Count: 85 */ - 0x40010449u, /* Base address: 0x40010400 Count: 73 */ - 0x40010555u, /* Base address: 0x40010500 Count: 85 */ - 0x4001060Eu, /* Base address: 0x40010600 Count: 14 */ - 0x40010747u, /* Base address: 0x40010700 Count: 71 */ - 0x40010903u, /* Base address: 0x40010900 Count: 3 */ - 0x40010B0Cu, /* Base address: 0x40010B00 Count: 12 */ - 0x40010C45u, /* Base address: 0x40010C00 Count: 69 */ - 0x40010D4Du, /* Base address: 0x40010D00 Count: 77 */ - 0x40010F04u, /* Base address: 0x40010F00 Count: 4 */ - 0x40011501u, /* Base address: 0x40011500 Count: 1 */ - 0x40011657u, /* Base address: 0x40011600 Count: 87 */ - 0x40011753u, /* Base address: 0x40011700 Count: 83 */ - 0x40011903u, /* Base address: 0x40011900 Count: 3 */ - 0x40011B02u, /* Base address: 0x40011B00 Count: 2 */ - 0x40014012u, /* Base address: 0x40014000 Count: 18 */ - 0x40014110u, /* Base address: 0x40014100 Count: 16 */ - 0x40014215u, /* Base address: 0x40014200 Count: 21 */ - 0x4001430Bu, /* Base address: 0x40014300 Count: 11 */ - 0x40014410u, /* Base address: 0x40014400 Count: 16 */ - 0x40014517u, /* Base address: 0x40014500 Count: 23 */ - 0x40014607u, /* Base address: 0x40014600 Count: 7 */ - 0x4001470Au, /* Base address: 0x40014700 Count: 10 */ - 0x4001480Cu, /* Base address: 0x40014800 Count: 12 */ - 0x4001490Bu, /* Base address: 0x40014900 Count: 11 */ - 0x4001500Bu, /* Base address: 0x40015000 Count: 11 */ - 0x40015102u, /* Base address: 0x40015100 Count: 2 */ + 0x40010052u, /* Base address: 0x40010000 Count: 82 */ + 0x40010139u, /* Base address: 0x40010100 Count: 57 */ + 0x40010241u, /* Base address: 0x40010200 Count: 65 */ + 0x4001035Cu, /* Base address: 0x40010300 Count: 92 */ + 0x40010417u, /* Base address: 0x40010400 Count: 23 */ + 0x40010560u, /* Base address: 0x40010500 Count: 96 */ + 0x4001065Du, /* Base address: 0x40010600 Count: 93 */ + 0x40010754u, /* Base address: 0x40010700 Count: 84 */ + 0x40010804u, /* Base address: 0x40010800 Count: 4 */ + 0x4001090Eu, /* Base address: 0x40010900 Count: 14 */ + 0x40010B12u, /* Base address: 0x40010B00 Count: 18 */ + 0x40010C47u, /* Base address: 0x40010C00 Count: 71 */ + 0x40010D45u, /* Base address: 0x40010D00 Count: 69 */ + 0x40010F05u, /* Base address: 0x40010F00 Count: 5 */ + 0x40011505u, /* Base address: 0x40011500 Count: 5 */ + 0x4001164Cu, /* Base address: 0x40011600 Count: 76 */ + 0x4001174Bu, /* Base address: 0x40011700 Count: 75 */ + 0x4001190Au, /* Base address: 0x40011900 Count: 10 */ + 0x40011B03u, /* Base address: 0x40011B00 Count: 3 */ + 0x40014019u, /* Base address: 0x40014000 Count: 25 */ + 0x40014117u, /* Base address: 0x40014100 Count: 23 */ + 0x4001420Fu, /* Base address: 0x40014200 Count: 15 */ + 0x4001430Du, /* Base address: 0x40014300 Count: 13 */ + 0x4001440Du, /* Base address: 0x40014400 Count: 13 */ + 0x40014516u, /* Base address: 0x40014500 Count: 22 */ + 0x40014608u, /* Base address: 0x40014600 Count: 8 */ + 0x40014705u, /* Base address: 0x40014700 Count: 5 */ + 0x40014807u, /* Base address: 0x40014800 Count: 7 */ + 0x4001490Au, /* Base address: 0x40014900 Count: 10 */ + 0x40014C01u, /* Base address: 0x40014C00 Count: 1 */ + 0x40015005u, /* Base address: 0x40015000 Count: 5 */ + 0x40015104u, /* Base address: 0x40015100 Count: 4 */ }; static const cy_cfg_addrvalue_t CYCODE cy_cfg_data_table[] = { {0x36u, 0x02u}, {0x7Eu, 0x02u}, {0x01u, 0x20u}, - {0x0Au, 0x36u}, - {0x00u, 0x13u}, - {0x01u, 0x05u}, - {0x19u, 0x04u}, + {0x0Au, 0x1Bu}, + {0x00u, 0x14u}, + {0x01u, 0x01u}, + {0x18u, 0x0Cu}, + {0x19u, 0x08u}, {0x1Cu, 0x61u}, - {0x20u, 0xA8u}, - {0x21u, 0x60u}, - {0x30u, 0x09u}, - {0x31u, 0x0Au}, + {0x20u, 0x60u}, + {0x21u, 0xC0u}, + {0x30u, 0x06u}, + {0x31u, 0x0Cu}, {0x7Cu, 0x40u}, - {0x3Cu, 0x01u}, + {0x23u, 0x02u}, {0x86u, 0x0Fu}, - {0x05u, 0x08u}, - {0x06u, 0x40u}, - {0x07u, 0x44u}, - {0x0Au, 0x10u}, - {0x0Cu, 0x55u}, - {0x0Du, 0x04u}, - {0x0Eu, 0xAAu}, - {0x0Fu, 0x09u}, - {0x11u, 0x4Du}, - {0x12u, 0x04u}, - {0x13u, 0xB2u}, - {0x16u, 0x20u}, - {0x1Au, 0x02u}, - {0x1Du, 0x20u}, - {0x1Fu, 0x90u}, - {0x22u, 0x01u}, - {0x2Au, 0x80u}, - {0x2Du, 0x10u}, - {0x2Eu, 0x08u}, - {0x2Fu, 0x22u}, - {0x30u, 0xC0u}, - {0x31u, 0xC0u}, - {0x32u, 0x0Cu}, - {0x33u, 0x03u}, - {0x34u, 0x30u}, - {0x35u, 0x3Cu}, - {0x36u, 0x03u}, - {0x3Eu, 0x55u}, - {0x3Fu, 0x15u}, + {0x00u, 0x03u}, + {0x01u, 0x09u}, + {0x02u, 0x0Cu}, + {0x03u, 0x24u}, + {0x04u, 0x09u}, + {0x06u, 0x06u}, + {0x07u, 0x09u}, + {0x08u, 0xFFu}, + {0x09u, 0x40u}, + {0x0Cu, 0x90u}, + {0x0Eu, 0x60u}, + {0x0Fu, 0x30u}, + {0x10u, 0xFFu}, + {0x11u, 0x09u}, + {0x13u, 0x12u}, + {0x14u, 0x05u}, + {0x15u, 0x40u}, + {0x16u, 0x0Au}, + {0x1Bu, 0x01u}, + {0x1Cu, 0x0Fu}, + {0x1Eu, 0xF0u}, + {0x1Fu, 0x06u}, + {0x20u, 0x50u}, + {0x22u, 0xA0u}, + {0x23u, 0x08u}, + {0x25u, 0x80u}, + {0x26u, 0xFFu}, + {0x29u, 0x40u}, + {0x2Cu, 0x30u}, + {0x2Du, 0x40u}, + {0x2Eu, 0xC0u}, + {0x31u, 0x38u}, + {0x32u, 0xFFu}, + {0x33u, 0x40u}, + {0x35u, 0x80u}, + {0x37u, 0x07u}, + {0x39u, 0x08u}, + {0x3Eu, 0x04u}, + {0x3Fu, 0x14u}, {0x58u, 0x04u}, {0x59u, 0x04u}, - {0x5Bu, 0x04u}, + {0x5Cu, 0x10u}, {0x5Fu, 0x01u}, - {0x80u, 0x03u}, - {0x81u, 0x06u}, - {0x82u, 0x0Cu}, - {0x83u, 0x09u}, - {0x84u, 0x05u}, - {0x86u, 0x0Au}, - {0x87u, 0xFFu}, - {0x89u, 0x30u}, - {0x8Au, 0xFFu}, - {0x8Bu, 0xC0u}, - {0x8Cu, 0x0Fu}, - {0x8Du, 0x60u}, - {0x8Eu, 0xF0u}, - {0x8Fu, 0x90u}, - {0x90u, 0x90u}, - {0x91u, 0x0Fu}, - {0x92u, 0x60u}, - {0x93u, 0xF0u}, - {0x94u, 0xFFu}, - {0x95u, 0x50u}, - {0x97u, 0xA0u}, - {0x98u, 0xFFu}, - {0x99u, 0xFFu}, - {0xA1u, 0x03u}, - {0xA3u, 0x0Cu}, - {0xA4u, 0x50u}, - {0xA6u, 0xA0u}, - {0xA7u, 0xFFu}, - {0xA8u, 0x30u}, - {0xA9u, 0x05u}, - {0xAAu, 0xC0u}, - {0xABu, 0x0Au}, - {0xACu, 0x09u}, - {0xAEu, 0x06u}, - {0xB2u, 0xFFu}, - {0xB5u, 0xFFu}, - {0xBEu, 0x04u}, - {0xBFu, 0x10u}, + {0x81u, 0x10u}, + {0x83u, 0x20u}, + {0x85u, 0x43u}, + {0x86u, 0xC1u}, + {0x87u, 0x04u}, + {0x89u, 0x45u}, + {0x8Au, 0x04u}, + {0x8Bu, 0x02u}, + {0x8Du, 0x08u}, + {0x8Eu, 0x02u}, + {0x90u, 0x24u}, + {0x91u, 0x41u}, + {0x92u, 0x90u}, + {0x93u, 0x06u}, + {0x95u, 0x04u}, + {0x96u, 0x24u}, + {0x97u, 0x03u}, + {0x9Au, 0x18u}, + {0x9Fu, 0x10u}, + {0xA0u, 0x01u}, + {0xA2u, 0x02u}, + {0xA6u, 0x20u}, + {0xA8u, 0x24u}, + {0xAAu, 0x48u}, + {0xABu, 0x20u}, + {0xB1u, 0x08u}, + {0xB2u, 0xE0u}, + {0xB3u, 0x07u}, + {0xB4u, 0x1Cu}, + {0xB5u, 0x30u}, + {0xB6u, 0x03u}, + {0xB7u, 0x40u}, + {0xBBu, 0x08u}, + {0xBEu, 0x40u}, + {0xBFu, 0x51u}, {0xD8u, 0x04u}, {0xD9u, 0x04u}, + {0xDCu, 0x01u}, {0xDFu, 0x01u}, - {0x00u, 0x08u}, - {0x01u, 0x10u}, - {0x03u, 0x01u}, - {0x05u, 0x02u}, - {0x06u, 0x28u}, - {0x07u, 0x03u}, - {0x08u, 0x01u}, - {0x0Au, 0x14u}, - {0x0Eu, 0x60u}, - {0x0Fu, 0x04u}, - {0x10u, 0x08u}, - {0x11u, 0x41u}, - {0x14u, 0x01u}, - {0x16u, 0x02u}, - {0x17u, 0x24u}, - {0x19u, 0x18u}, - {0x1Au, 0x80u}, - {0x1Bu, 0x80u}, - {0x1Du, 0x04u}, - {0x20u, 0x80u}, - {0x23u, 0x14u}, - {0x26u, 0x20u}, - {0x29u, 0x40u}, - {0x2Cu, 0x20u}, - {0x2Du, 0x13u}, - {0x2Eu, 0x20u}, - {0x33u, 0x41u}, - {0x34u, 0x10u}, - {0x36u, 0x10u}, - {0x37u, 0x06u}, - {0x39u, 0x88u}, - {0x3Cu, 0x20u}, - {0x3Eu, 0x42u}, - {0x3Fu, 0x04u}, - {0x41u, 0xC0u}, - {0x68u, 0x10u}, - {0x69u, 0x40u}, - {0x6Au, 0x54u}, - {0x6Bu, 0x64u}, - {0x70u, 0x18u}, - {0x71u, 0x41u}, - {0x80u, 0x08u}, - {0x8Bu, 0x80u}, - {0x8Eu, 0x40u}, - {0xC0u, 0xF7u}, - {0xC2u, 0x7Eu}, - {0xC4u, 0xEBu}, - {0xCAu, 0xE8u}, - {0xCCu, 0xE9u}, - {0xCEu, 0xFAu}, - {0xE2u, 0x10u}, - {0xE6u, 0x05u}, - {0x01u, 0x03u}, - {0x03u, 0x0Cu}, - {0x04u, 0x30u}, - {0x06u, 0xC0u}, - {0x07u, 0xFFu}, - {0x0Au, 0xFFu}, - {0x0Bu, 0xFFu}, - {0x0Cu, 0x06u}, - {0x0Du, 0x90u}, - {0x0Eu, 0x09u}, - {0x0Fu, 0x60u}, - {0x10u, 0x60u}, - {0x11u, 0x0Fu}, - {0x12u, 0x90u}, - {0x13u, 0xF0u}, - {0x15u, 0x50u}, - {0x16u, 0xFFu}, - {0x17u, 0xA0u}, - {0x18u, 0xFFu}, - {0x19u, 0x30u}, - {0x1Bu, 0xC0u}, - {0x1Cu, 0x03u}, - {0x1Eu, 0x0Cu}, - {0x20u, 0x0Fu}, - {0x21u, 0x09u}, - {0x22u, 0xF0u}, - {0x23u, 0x06u}, - {0x24u, 0x50u}, - {0x26u, 0xA0u}, - {0x27u, 0xFFu}, - {0x28u, 0x05u}, - {0x29u, 0x05u}, - {0x2Au, 0x0Au}, - {0x2Bu, 0x0Au}, - {0x34u, 0xFFu}, - {0x35u, 0xFFu}, - {0x3Eu, 0x10u}, + {0x00u, 0x80u}, + {0x02u, 0xA0u}, + {0x03u, 0x08u}, + {0x05u, 0x14u}, + {0x07u, 0x01u}, + {0x08u, 0x40u}, + {0x09u, 0x05u}, + {0x0Au, 0x01u}, + {0x0Du, 0x25u}, + {0x0Fu, 0x08u}, + {0x11u, 0x84u}, + {0x12u, 0x04u}, + {0x13u, 0x22u}, + {0x14u, 0x40u}, + {0x15u, 0x20u}, + {0x16u, 0x20u}, + {0x18u, 0x10u}, + {0x1Du, 0x24u}, + {0x1Eu, 0x20u}, + {0x1Fu, 0x80u}, + {0x20u, 0x20u}, + {0x22u, 0xD0u}, + {0x23u, 0xC0u}, + {0x24u, 0x40u}, + {0x25u, 0x80u}, + {0x26u, 0x04u}, + {0x27u, 0x28u}, + {0x28u, 0x08u}, + {0x2Au, 0x02u}, + {0x2Bu, 0x22u}, + {0x2Cu, 0x04u}, + {0x31u, 0x01u}, + {0x32u, 0x44u}, + {0x33u, 0x10u}, + {0x36u, 0x06u}, + {0x37u, 0x80u}, + {0x38u, 0x10u}, + {0x39u, 0x0Au}, + {0x3Bu, 0x40u}, + {0x3Eu, 0x05u}, + {0x3Fu, 0x90u}, + {0x46u, 0x40u}, + {0x47u, 0x01u}, + {0x86u, 0x20u}, + {0x87u, 0x02u}, + {0x88u, 0x08u}, + {0x8Cu, 0x40u}, + {0x8Du, 0x01u}, + {0x8Fu, 0x08u}, + {0xC0u, 0xEFu}, + {0xC2u, 0x7Du}, + {0xC4u, 0x7Du}, + {0xCAu, 0x2Fu}, + {0xCCu, 0xDFu}, + {0xCEu, 0xFFu}, + {0xE2u, 0x08u}, + {0xE6u, 0x72u}, + {0x21u, 0x01u}, + {0x35u, 0x01u}, {0x3Fu, 0x10u}, - {0x56u, 0x08u}, - {0x58u, 0x04u}, {0x59u, 0x04u}, {0x5Bu, 0x04u}, - {0x5Du, 0x90u}, {0x5Fu, 0x01u}, - {0x84u, 0x0Du}, - {0x87u, 0x06u}, - {0x88u, 0x0Du}, - {0x8Bu, 0x08u}, - {0x8Cu, 0x0Du}, - {0x92u, 0x10u}, - {0x94u, 0x80u}, - {0x95u, 0x09u}, - {0x97u, 0x52u}, - {0x98u, 0x02u}, - {0x9Au, 0x54u}, - {0x9Cu, 0x02u}, - {0x9Eu, 0x0Du}, - {0x9Fu, 0x30u}, - {0xA0u, 0x0Du}, - {0xA1u, 0x09u}, - {0xA3u, 0x24u}, - {0xA4u, 0x01u}, - {0xA6u, 0x32u}, - {0xA7u, 0x01u}, - {0xA8u, 0x62u}, - {0xAAu, 0x08u}, - {0xABu, 0x49u}, - {0xACu, 0x0Du}, - {0xB0u, 0x70u}, - {0xB3u, 0x07u}, + {0x80u, 0x80u}, + {0x81u, 0x40u}, + {0x84u, 0x02u}, + {0x85u, 0x01u}, + {0x8Au, 0x1Fu}, + {0x8Bu, 0x20u}, + {0x8Cu, 0x5Bu}, + {0x8Du, 0x80u}, + {0x8Eu, 0x24u}, + {0x94u, 0x03u}, + {0x95u, 0x08u}, + {0x96u, 0x0Cu}, + {0x97u, 0x12u}, + {0x98u, 0x58u}, + {0x99u, 0x0Bu}, + {0x9Au, 0x24u}, + {0x9Bu, 0x24u}, + {0xA0u, 0x0Cu}, + {0xA1u, 0x34u}, + {0xA2u, 0x40u}, + {0xA3u, 0x0Bu}, + {0xA6u, 0x01u}, + {0xA8u, 0x40u}, + {0xAAu, 0x37u}, + {0xABu, 0x3Fu}, + {0xB0u, 0x1Fu}, + {0xB1u, 0x80u}, + {0xB2u, 0x20u}, + {0xB3u, 0x38u}, {0xB4u, 0x80u}, - {0xB5u, 0x40u}, - {0xB6u, 0x0Fu}, - {0xB7u, 0x38u}, - {0xBAu, 0x80u}, - {0xBEu, 0x10u}, - {0xBFu, 0x10u}, - {0xD8u, 0x0Bu}, + {0xB5u, 0x07u}, + {0xB6u, 0x40u}, + {0xB7u, 0x40u}, + {0xBEu, 0x54u}, + {0xBFu, 0x41u}, + {0xC0u, 0x64u}, + {0xC1u, 0x02u}, + {0xC2u, 0x30u}, + {0xC5u, 0xCDu}, + {0xC6u, 0x2Eu}, + {0xC7u, 0x0Fu}, + {0xC8u, 0x1Fu}, + {0xC9u, 0xFFu}, + {0xCAu, 0xFFu}, + {0xCBu, 0xFFu}, + {0xCFu, 0x2Cu}, + {0xD6u, 0x01u}, + {0xD8u, 0x04u}, {0xD9u, 0x04u}, + {0xDAu, 0x04u}, {0xDBu, 0x04u}, - {0xDCu, 0x19u}, + {0xDCu, 0x11u}, + {0xDDu, 0x01u}, {0xDFu, 0x01u}, - {0x03u, 0x19u}, - {0x06u, 0x0Au}, - {0x07u, 0x20u}, - {0x08u, 0x04u}, + {0xE2u, 0xC0u}, + {0xE6u, 0x80u}, + {0xE8u, 0x40u}, + {0xE9u, 0x40u}, + {0xEEu, 0x08u}, + {0x00u, 0x02u}, + {0x01u, 0x08u}, + {0x03u, 0x0Au}, {0x09u, 0x20u}, - {0x0Au, 0x81u}, - {0x0Eu, 0x50u}, - {0x0Fu, 0x05u}, + {0x0Bu, 0x20u}, {0x10u, 0x80u}, - {0x11u, 0x40u}, - {0x13u, 0x18u}, - {0x14u, 0x40u}, - {0x15u, 0x10u}, - {0x17u, 0x06u}, - {0x19u, 0x20u}, - {0x1Au, 0x81u}, - {0x1Eu, 0x04u}, - {0x20u, 0x04u}, - {0x21u, 0x84u}, - {0x25u, 0x10u}, - {0x28u, 0x80u}, - {0x2Au, 0x10u}, - {0x2Bu, 0x10u}, - {0x2Cu, 0x20u}, - {0x2Du, 0x10u}, - {0x2Eu, 0x0Au}, - {0x31u, 0x80u}, - {0x32u, 0x04u}, - {0x37u, 0xE6u}, - {0x39u, 0x08u}, - {0x3Au, 0x20u}, - {0x3Du, 0x03u}, - {0x3Eu, 0x50u}, - {0x3Fu, 0x05u}, - {0x58u, 0x10u}, - {0x5Au, 0x10u}, - {0x5Fu, 0x80u}, - {0x61u, 0x01u}, - {0x62u, 0x02u}, - {0x64u, 0x02u}, - {0x6Bu, 0x02u}, - {0x6Cu, 0x02u}, - {0x78u, 0x02u}, - {0x82u, 0x02u}, - {0x83u, 0x10u}, - {0x84u, 0x80u}, - {0x86u, 0xA0u}, - {0x88u, 0x04u}, - {0x89u, 0x10u}, - {0x8Bu, 0x40u}, - {0x8Cu, 0x04u}, + {0x11u, 0x04u}, + {0x12u, 0x08u}, + {0x18u, 0x04u}, + {0x19u, 0x42u}, + {0x1Au, 0x10u}, + {0x1Bu, 0x02u}, + {0x21u, 0x34u}, + {0x22u, 0x09u}, + {0x23u, 0x05u}, + {0x27u, 0x04u}, + {0x29u, 0x02u}, + {0x2Bu, 0x08u}, + {0x2Cu, 0x08u}, + {0x2Du, 0x20u}, + {0x2Fu, 0x80u}, + {0x31u, 0x20u}, + {0x32u, 0x08u}, + {0x38u, 0x20u}, + {0x39u, 0x85u}, + {0x41u, 0x11u}, + {0x42u, 0x10u}, + {0x43u, 0x02u}, + {0x48u, 0x90u}, + {0x49u, 0x08u}, + {0x4Au, 0x08u}, + {0x50u, 0x58u}, + {0x5Au, 0xA2u}, + {0x5Bu, 0x04u}, + {0x60u, 0x44u}, + {0x61u, 0x08u}, + {0x63u, 0x01u}, + {0x69u, 0x10u}, + {0x6Au, 0x40u}, + {0x6Bu, 0x50u}, + {0x6Du, 0x64u}, + {0x71u, 0x10u}, + {0x72u, 0x22u}, + {0x73u, 0x40u}, + {0x81u, 0x40u}, + {0x82u, 0x40u}, + {0x87u, 0x80u}, + {0x89u, 0x05u}, + {0x8Au, 0x80u}, + {0x8Bu, 0x80u}, + {0x8Cu, 0x08u}, {0x8Du, 0x40u}, - {0x90u, 0x20u}, + {0x8Fu, 0x08u}, + {0x90u, 0x40u}, + {0x92u, 0x20u}, + {0x93u, 0x20u}, + {0x94u, 0x80u}, + {0x95u, 0x2Eu}, + {0x96u, 0x0Du}, + {0x97u, 0x10u}, + {0x9Au, 0x44u}, + {0x9Bu, 0x80u}, + {0x9Cu, 0x08u}, + {0x9Du, 0x11u}, + {0x9Eu, 0x22u}, + {0x9Fu, 0x12u}, + {0xA1u, 0x80u}, + {0xA2u, 0x90u}, + {0xA3u, 0x04u}, + {0xA4u, 0x48u}, + {0xA5u, 0x44u}, + {0xA6u, 0x02u}, + {0xA7u, 0x20u}, + {0xABu, 0x40u}, + {0xACu, 0x10u}, + {0xAFu, 0x91u}, + {0xB0u, 0x04u}, + {0xB7u, 0x08u}, + {0xC0u, 0x0Fu}, + {0xC2u, 0x06u}, + {0xC4u, 0x0Eu}, + {0xCAu, 0x85u}, + {0xCCu, 0x06u}, + {0xCEu, 0x0Fu}, + {0xD0u, 0x07u}, + {0xD2u, 0x04u}, + {0xD6u, 0x0Fu}, + {0xD8u, 0x0Fu}, + {0xE2u, 0x20u}, + {0xE6u, 0x09u}, + {0xEAu, 0x06u}, + {0xEEu, 0x02u}, + {0x85u, 0x02u}, + {0x87u, 0x05u}, + {0x8Fu, 0x02u}, + {0x97u, 0x03u}, + {0x9Au, 0x01u}, + {0x9Fu, 0x0Cu}, + {0xA1u, 0x02u}, + {0xA2u, 0x04u}, + {0xA3u, 0x08u}, + {0xA4u, 0x05u}, + {0xA6u, 0x0Au}, + {0xAAu, 0x02u}, + {0xAEu, 0x08u}, + {0xB1u, 0x0Eu}, + {0xB4u, 0x0Cu}, + {0xB5u, 0x01u}, + {0xB6u, 0x03u}, + {0xBEu, 0x50u}, + {0xBFu, 0x10u}, + {0xD8u, 0x04u}, + {0xD9u, 0x04u}, + {0xDCu, 0x10u}, + {0xDFu, 0x01u}, + {0x01u, 0x41u}, + {0x03u, 0x18u}, + {0x04u, 0x80u}, + {0x05u, 0x80u}, + {0x08u, 0x48u}, + {0x0Au, 0x86u}, + {0x0Du, 0x80u}, + {0x0Fu, 0x0Au}, + {0x10u, 0x80u}, + {0x12u, 0x02u}, + {0x13u, 0x10u}, + {0x14u, 0x01u}, + {0x15u, 0x02u}, + {0x17u, 0x28u}, + {0x1Au, 0x82u}, + {0x1Bu, 0x10u}, + {0x1Fu, 0x90u}, + {0x20u, 0x40u}, + {0x22u, 0x10u}, + {0x27u, 0x84u}, + {0x29u, 0x02u}, + {0x2Du, 0x02u}, + {0x32u, 0x18u}, + {0x33u, 0x40u}, + {0x36u, 0x08u}, + {0x37u, 0x80u}, + {0x38u, 0x40u}, + {0x39u, 0x10u}, + {0x3Bu, 0x04u}, + {0x3Fu, 0x44u}, + {0x40u, 0x20u}, + {0x42u, 0x04u}, + {0x43u, 0x02u}, + {0x49u, 0x04u}, + {0x4Au, 0x02u}, + {0x4Bu, 0x11u}, + {0x50u, 0x08u}, + {0x51u, 0x60u}, + {0x53u, 0x01u}, + {0x58u, 0x04u}, + {0x59u, 0xA0u}, + {0x5Au, 0x01u}, + {0x61u, 0x40u}, + {0x64u, 0x02u}, + {0x67u, 0x02u}, + {0x79u, 0x02u}, + {0x7Au, 0x80u}, + {0x7Du, 0x08u}, + {0x7Eu, 0x10u}, + {0x80u, 0x08u}, + {0x83u, 0x05u}, + {0x85u, 0x40u}, + {0x88u, 0x20u}, + {0x8Bu, 0x10u}, + {0x8Fu, 0x80u}, + {0x90u, 0x80u}, + {0x91u, 0x14u}, {0x92u, 0x40u}, - {0x93u, 0x04u}, - {0x95u, 0x19u}, - {0x98u, 0x08u}, - {0x99u, 0x05u}, - {0x9Bu, 0x24u}, - {0x9Cu, 0x10u}, - {0x9Eu, 0x0Au}, - {0x9Fu, 0x02u}, - {0xA0u, 0x08u}, - {0xA2u, 0x20u}, - {0xA4u, 0x24u}, - {0xA5u, 0x80u}, - {0xACu, 0x40u}, - {0xADu, 0x08u}, - {0xB3u, 0x10u}, + {0x93u, 0x44u}, + {0x96u, 0x0Cu}, + {0x97u, 0x10u}, + {0x98u, 0x04u}, + {0x99u, 0x62u}, + {0x9Au, 0x44u}, + {0x9Bu, 0x68u}, + {0xA0u, 0x10u}, + {0xA1u, 0x80u}, + {0xA2u, 0x98u}, + {0xA3u, 0x04u}, + {0xA4u, 0x40u}, + {0xA5u, 0x04u}, + {0xA6u, 0x02u}, + {0xA7u, 0x40u}, + {0xA9u, 0x29u}, + {0xABu, 0x20u}, + {0xACu, 0x84u}, + {0xADu, 0x40u}, + {0xB0u, 0x01u}, + {0xB2u, 0x01u}, + {0xB3u, 0x28u}, {0xB5u, 0x10u}, - {0xC0u, 0xE7u}, - {0xC2u, 0xFFu}, - {0xC4u, 0x7Fu}, - {0xCAu, 0xE7u}, - {0xCCu, 0xEAu}, - {0xCEu, 0xF6u}, - {0xD6u, 0x10u}, - {0xD8u, 0x10u}, - {0xDEu, 0x01u}, - {0xE2u, 0x0Au}, - {0xE6u, 0x47u}, - {0xE8u, 0x02u}, - {0xEAu, 0x08u}, - {0xECu, 0x08u}, - {0xEEu, 0x80u}, - {0x01u, 0x44u}, - {0x05u, 0xE1u}, - {0x06u, 0x46u}, - {0x07u, 0x12u}, - {0x08u, 0x09u}, - {0x09u, 0x80u}, - {0x0Au, 0x12u}, - {0x0Bu, 0x5Fu}, - {0x0Du, 0x4Cu}, - {0x0Eu, 0x80u}, - {0x11u, 0x4Cu}, - {0x12u, 0x30u}, + {0xB7u, 0x42u}, + {0xC0u, 0x0Fu}, + {0xC2u, 0x4Fu}, + {0xC4u, 0xFBu}, + {0xCAu, 0x81u}, + {0xCCu, 0x5Eu}, + {0xCEu, 0x5Eu}, + {0xD0u, 0x07u}, + {0xD2u, 0x0Cu}, + {0xD6u, 0x0Fu}, + {0xD8u, 0x08u}, + {0xE0u, 0x80u}, + {0xE2u, 0x40u}, + {0xEAu, 0x03u}, + {0xEEu, 0x54u}, + {0x00u, 0x01u}, + {0x03u, 0x9Fu}, + {0x04u, 0x01u}, + {0x07u, 0xFFu}, + {0x08u, 0x04u}, + {0x09u, 0x7Fu}, + {0x0Bu, 0x80u}, + {0x0Cu, 0x01u}, + {0x0Du, 0x90u}, + {0x0Fu, 0x40u}, + {0x11u, 0x1Fu}, + {0x12u, 0x40u}, + {0x13u, 0x20u}, + {0x14u, 0xA2u}, + {0x15u, 0x80u}, {0x16u, 0x08u}, - {0x17u, 0x4Cu}, - {0x19u, 0xB1u}, - {0x1Au, 0x09u}, - {0x1Bu, 0x0Eu}, - {0x1Cu, 0x09u}, - {0x1Du, 0x4Cu}, - {0x1Eu, 0x24u}, - {0x20u, 0x40u}, - {0x21u, 0x08u}, - {0x22u, 0x80u}, - {0x23u, 0x20u}, - {0x25u, 0x44u}, - {0x26u, 0x01u}, - {0x27u, 0x08u}, - {0x30u, 0x38u}, - {0x31u, 0x10u}, - {0x33u, 0x61u}, - {0x34u, 0x07u}, - {0x35u, 0x0Fu}, - {0x36u, 0xC0u}, - {0x37u, 0x80u}, - {0x3Bu, 0x0Cu}, + {0x18u, 0x08u}, + {0x1Au, 0x61u}, + {0x1Bu, 0x60u}, + {0x1Cu, 0x01u}, + {0x1Du, 0xC0u}, + {0x1Fu, 0x02u}, + {0x20u, 0x07u}, + {0x21u, 0xC0u}, + {0x22u, 0xD8u}, + {0x23u, 0x01u}, + {0x25u, 0xC0u}, + {0x27u, 0x04u}, + {0x28u, 0x01u}, + {0x29u, 0xC0u}, + {0x2Bu, 0x08u}, + {0x2Cu, 0x10u}, + {0x30u, 0xE0u}, + {0x36u, 0x3Fu}, + {0x37u, 0xFFu}, + {0x38u, 0x80u}, {0x3Eu, 0x40u}, - {0x3Fu, 0x41u}, - {0x54u, 0x09u}, + {0x3Fu, 0x40u}, {0x58u, 0x04u}, - {0x59u, 0x0Bu}, - {0x5Bu, 0x0Bu}, - {0x5Cu, 0x91u}, - {0x5Du, 0x90u}, + {0x59u, 0x04u}, {0x5Fu, 0x01u}, - {0x82u, 0x38u}, - {0x85u, 0x04u}, - {0x88u, 0x01u}, - {0x89u, 0x04u}, - {0x8Au, 0x14u}, - {0x90u, 0x3Eu}, - {0x94u, 0x22u}, - {0x95u, 0x04u}, - {0x96u, 0x01u}, - {0x99u, 0x04u}, - {0x9Fu, 0x01u}, - {0xA4u, 0x09u}, - {0xA6u, 0x02u}, - {0xABu, 0x02u}, - {0xADu, 0x01u}, - {0xAFu, 0x02u}, - {0xB0u, 0x07u}, - {0xB1u, 0x03u}, - {0xB4u, 0x38u}, - {0xB7u, 0x04u}, - {0xB8u, 0x02u}, - {0xB9u, 0x80u}, - {0xBEu, 0x10u}, - {0xBFu, 0x41u}, - {0xD8u, 0x0Bu}, + {0x80u, 0x56u}, + {0x81u, 0x64u}, + {0x84u, 0x52u}, + {0x85u, 0x83u}, + {0x86u, 0x04u}, + {0x87u, 0x70u}, + {0x88u, 0x50u}, + {0x8Au, 0x06u}, + {0x8Bu, 0xF5u}, + {0x8Cu, 0x17u}, + {0x8Du, 0x64u}, + {0x8Eu, 0x28u}, + {0x91u, 0x07u}, + {0x93u, 0x90u}, + {0x94u, 0x31u}, + {0x95u, 0x40u}, + {0x96u, 0x0Eu}, + {0x97u, 0x02u}, + {0x98u, 0x29u}, + {0x99u, 0x24u}, + {0x9Au, 0x16u}, + {0x9Bu, 0x40u}, + {0x9Du, 0x08u}, + {0xA0u, 0x56u}, + {0xA1u, 0x64u}, + {0xA4u, 0x22u}, + {0xA5u, 0x24u}, + {0xA6u, 0x10u}, + {0xA8u, 0x04u}, + {0xABu, 0x64u}, + {0xACu, 0x06u}, + {0xADu, 0x08u}, + {0xAEu, 0x50u}, + {0xB0u, 0x40u}, + {0xB1u, 0x71u}, + {0xB2u, 0x30u}, + {0xB3u, 0x07u}, + {0xB4u, 0x0Fu}, + {0xB5u, 0x08u}, + {0xB7u, 0x80u}, + {0xB8u, 0x20u}, + {0xB9u, 0x20u}, + {0xBAu, 0x08u}, + {0xBBu, 0x0Cu}, + {0xBEu, 0x01u}, + {0xBFu, 0x40u}, + {0xD4u, 0x40u}, + {0xD6u, 0x04u}, + {0xD8u, 0x04u}, {0xD9u, 0x04u}, {0xDBu, 0x04u}, - {0xDCu, 0x09u}, {0xDFu, 0x01u}, - {0x00u, 0x20u}, + {0x01u, 0x01u}, {0x02u, 0x02u}, - {0x03u, 0x20u}, - {0x04u, 0x02u}, - {0x05u, 0x10u}, - {0x08u, 0x80u}, - {0x09u, 0x01u}, - {0x0Au, 0xA0u}, - {0x0Bu, 0x04u}, - {0x0Eu, 0x80u}, + {0x03u, 0x18u}, + {0x05u, 0x08u}, + {0x07u, 0x49u}, + {0x0Au, 0x04u}, + {0x0Bu, 0x10u}, + {0x0Cu, 0x80u}, + {0x0Eu, 0x84u}, {0x0Fu, 0x10u}, - {0x10u, 0x40u}, - {0x11u, 0x08u}, - {0x17u, 0x08u}, - {0x19u, 0x20u}, - {0x1Au, 0x82u}, - {0x1Bu, 0x20u}, + {0x10u, 0x98u}, + {0x11u, 0x40u}, + {0x15u, 0x82u}, + {0x17u, 0x10u}, + {0x18u, 0x08u}, + {0x19u, 0x09u}, + {0x1Au, 0x04u}, + {0x1Bu, 0x02u}, + {0x1Du, 0x40u}, {0x1Eu, 0x80u}, - {0x1Fu, 0x10u}, - {0x20u, 0x04u}, - {0x21u, 0x84u}, - {0x23u, 0x98u}, - {0x25u, 0x40u}, - {0x27u, 0x40u}, - {0x2Au, 0x0Bu}, - {0x2Cu, 0x02u}, - {0x2Fu, 0x04u}, - {0x30u, 0x80u}, - {0x31u, 0x10u}, - {0x33u, 0x09u}, - {0x35u, 0x04u}, - {0x36u, 0xA0u}, - {0x38u, 0x04u}, - {0x39u, 0x41u}, + {0x21u, 0x01u}, + {0x22u, 0x62u}, + {0x23u, 0x18u}, + {0x25u, 0x80u}, + {0x28u, 0x10u}, + {0x29u, 0x48u}, + {0x2Bu, 0x88u}, + {0x2Cu, 0xA0u}, + {0x2Fu, 0x08u}, + {0x30u, 0x28u}, + {0x31u, 0x80u}, + {0x32u, 0x02u}, + {0x35u, 0x08u}, + {0x36u, 0x22u}, + {0x37u, 0x40u}, + {0x38u, 0x08u}, + {0x39u, 0x40u}, + {0x3Au, 0x02u}, {0x3Bu, 0x10u}, - {0x3Du, 0x20u}, + {0x3Du, 0x40u}, {0x3Eu, 0x04u}, - {0x58u, 0x20u}, - {0x59u, 0x09u}, - {0x5Bu, 0x80u}, - {0x61u, 0x80u}, - {0x65u, 0x08u}, - {0x66u, 0x14u}, - {0x67u, 0x04u}, - {0x6Cu, 0x20u}, - {0x6Fu, 0x06u}, - {0x78u, 0x02u}, - {0x7Cu, 0x02u}, - {0x82u, 0x80u}, - {0x85u, 0x40u}, - {0x86u, 0x01u}, - {0x87u, 0x02u}, - {0x90u, 0x20u}, - {0x91u, 0x80u}, - {0x92u, 0x24u}, - {0x93u, 0x40u}, - {0x95u, 0x40u}, - {0x96u, 0x18u}, - {0x97u, 0x10u}, - {0x98u, 0xCAu}, - {0x99u, 0x04u}, - {0x9Au, 0x80u}, - {0x9Eu, 0x10u}, - {0x9Fu, 0x59u}, - {0xA0u, 0x0Au}, - {0xA1u, 0x14u}, - {0xA2u, 0x22u}, - {0xA4u, 0xA4u}, - {0xA5u, 0x21u}, - {0xA7u, 0x08u}, - {0xA8u, 0x20u}, - {0xB1u, 0x20u}, - {0xB5u, 0x04u}, - {0xB6u, 0x50u}, - {0xC0u, 0x57u}, - {0xC2u, 0x3Fu}, - {0xC4u, 0x2Cu}, - {0xCAu, 0x33u}, - {0xCCu, 0x7Fu}, - {0xCEu, 0x6Fu}, - {0xD6u, 0x0Fu}, - {0xD8u, 0x08u}, - {0xDEu, 0x81u}, - {0xE2u, 0x01u}, - {0xEAu, 0x10u}, - {0x87u, 0x11u}, - {0x8Bu, 0x06u}, - {0x8Fu, 0x01u}, - {0x95u, 0x19u}, - {0x97u, 0x22u}, - {0x99u, 0x08u}, - {0xA1u, 0x21u}, - {0xA3u, 0x1Cu}, - {0xABu, 0x38u}, - {0xB3u, 0x38u}, - {0xB5u, 0x07u}, - {0xD9u, 0x04u}, - {0xDCu, 0x10u}, - {0xDFu, 0x01u}, - {0x04u, 0x04u}, - {0x05u, 0x10u}, - {0x07u, 0x42u}, - {0x0Eu, 0xA2u}, - {0x0Fu, 0x08u}, - {0x15u, 0x48u}, - {0x16u, 0x08u}, - {0x17u, 0x11u}, - {0x1Eu, 0xA0u}, - {0x20u, 0x28u}, - {0x21u, 0x10u}, - {0x22u, 0x04u}, - {0x27u, 0x02u}, - {0x28u, 0x88u}, - {0x2Fu, 0x1Au}, - {0x30u, 0x20u}, - {0x32u, 0x04u}, - {0x36u, 0x10u}, - {0x37u, 0x49u}, - {0x39u, 0x20u}, - {0x3Bu, 0x44u}, - {0x3Du, 0x41u}, - {0x3Eu, 0x01u}, - {0x3Fu, 0x18u}, - {0x45u, 0x22u}, - {0x46u, 0x20u}, - {0x47u, 0x08u}, - {0x4Du, 0x80u}, - {0x4Eu, 0x20u}, - {0x4Fu, 0x18u}, - {0x56u, 0x55u}, - {0x57u, 0x40u}, - {0x65u, 0x04u}, - {0x66u, 0x50u}, - {0x7Cu, 0x02u}, - {0x87u, 0x04u}, - {0x90u, 0x24u}, - {0x91u, 0x88u}, - {0x93u, 0x50u}, - {0x94u, 0x02u}, + {0x3Fu, 0x11u}, + {0x48u, 0x08u}, + {0x49u, 0x20u}, + {0x60u, 0x02u}, + {0x61u, 0x20u}, + {0x63u, 0xA0u}, + {0x86u, 0x40u}, + {0x88u, 0x01u}, + {0x91u, 0x84u}, + {0x92u, 0x60u}, + {0x93u, 0x05u}, {0x95u, 0x41u}, - {0x96u, 0x18u}, - {0x97u, 0x0Cu}, - {0x98u, 0xCAu}, - {0x99u, 0x20u}, - {0x9Au, 0x80u}, - {0x9Bu, 0x08u}, - {0x9Du, 0x11u}, - {0x9Eu, 0x0Du}, - {0x9Fu, 0x11u}, - {0xA0u, 0x28u}, - {0xA2u, 0x02u}, - {0xA4u, 0x94u}, - {0xA5u, 0x20u}, - {0xA7u, 0x08u}, - {0xA8u, 0x20u}, - {0xAAu, 0x02u}, - {0xAFu, 0x10u}, - {0xB7u, 0x04u}, - {0xC0u, 0xF0u}, - {0xC2u, 0xF0u}, - {0xC4u, 0xF0u}, - {0xCAu, 0x75u}, - {0xCCu, 0xF6u}, - {0xCEu, 0xFEu}, - {0xD0u, 0xE0u}, - {0xD2u, 0x30u}, - {0xD8u, 0x70u}, - {0xDEu, 0x80u}, - {0xEAu, 0x08u}, - {0xEEu, 0x10u}, - {0x9Eu, 0x40u}, - {0x9Fu, 0x08u}, - {0xEAu, 0x08u}, - {0x9Eu, 0x40u}, - {0x9Fu, 0x08u}, - {0xABu, 0x01u}, - {0xAFu, 0x40u}, - {0xB0u, 0x04u}, - {0xB3u, 0x40u}, - {0xB5u, 0x01u}, - {0xB6u, 0x04u}, - {0xE2u, 0x01u}, - {0xE8u, 0x20u}, - {0xEAu, 0x49u}, - {0xEEu, 0x40u}, - {0x00u, 0x12u}, - {0x02u, 0x24u}, - {0x05u, 0x02u}, - {0x06u, 0x12u}, - {0x0Au, 0x0Cu}, - {0x0Eu, 0x02u}, - {0x11u, 0x06u}, - {0x13u, 0x08u}, - {0x16u, 0x60u}, - {0x17u, 0x0Du}, - {0x1Bu, 0x07u}, - {0x1Cu, 0x12u}, - {0x1Du, 0x07u}, - {0x1Eu, 0x48u}, - {0x1Fu, 0x08u}, - {0x20u, 0x01u}, - {0x21u, 0x02u}, - {0x25u, 0x01u}, - {0x26u, 0x10u}, - {0x27u, 0x02u}, - {0x29u, 0x10u}, - {0x30u, 0x01u}, - {0x32u, 0x70u}, - {0x33u, 0x08u}, - {0x34u, 0x0Eu}, - {0x35u, 0x10u}, - {0x37u, 0x07u}, - {0x3Eu, 0x01u}, - {0x3Fu, 0x14u}, - {0x40u, 0x31u}, - {0x41u, 0x04u}, - {0x42u, 0x60u}, - {0x45u, 0xEFu}, - {0x46u, 0x20u}, - {0x47u, 0xDCu}, - {0x48u, 0x3Bu}, - {0x49u, 0xFFu}, - {0x4Au, 0xFFu}, - {0x4Bu, 0xFFu}, - {0x4Fu, 0x2Cu}, - {0x56u, 0x01u}, + {0x96u, 0x0Cu}, + {0x97u, 0x10u}, + {0x98u, 0x42u}, + {0x99u, 0x06u}, + {0x9Au, 0xC4u}, + {0x9Bu, 0xA0u}, + {0x9Cu, 0x01u}, + {0x9Fu, 0x10u}, + {0xA0u, 0x08u}, + {0xA1u, 0x20u}, + {0xA2u, 0x98u}, + {0xA3u, 0x15u}, + {0xA4u, 0x80u}, + {0xA5u, 0x40u}, + {0xA6u, 0x02u}, + {0xA7u, 0x4Au}, + {0xAAu, 0x10u}, + {0xACu, 0x50u}, + {0xAEu, 0x81u}, + {0xB4u, 0x40u}, + {0xC0u, 0xFFu}, + {0xC2u, 0xF6u}, + {0xC4u, 0xDFu}, + {0xCAu, 0xEFu}, + {0xCCu, 0xFFu}, + {0xCEu, 0xFFu}, + {0xD8u, 0x0Fu}, + {0xE2u, 0x09u}, + {0xE6u, 0x08u}, + {0xEAu, 0x02u}, + {0xECu, 0x04u}, + {0x38u, 0x80u}, + {0x3Eu, 0x40u}, + {0x58u, 0x04u}, + {0x5Fu, 0x01u}, + {0x1Fu, 0x80u}, + {0x8Au, 0x04u}, + {0x92u, 0x0Cu}, + {0x97u, 0x01u}, + {0x9Bu, 0x80u}, + {0x9Cu, 0x02u}, + {0x9Du, 0x20u}, + {0xA3u, 0x08u}, + {0xAAu, 0x04u}, + {0xADu, 0x40u}, + {0xB5u, 0x08u}, + {0xE2u, 0x09u}, + {0xE6u, 0x28u}, + {0xE8u, 0x40u}, + {0x92u, 0x0Cu}, + {0x97u, 0x01u}, + {0x9Bu, 0x80u}, + {0x9Cu, 0x02u}, + {0x9Du, 0x28u}, + {0xA1u, 0x40u}, + {0xA3u, 0x08u}, + {0xA6u, 0x04u}, + {0xA8u, 0x40u}, + {0xA9u, 0x04u}, + {0xAEu, 0x04u}, + {0xB0u, 0x20u}, + {0xB1u, 0x01u}, + {0xB6u, 0x08u}, + {0xB7u, 0x08u}, + {0xE0u, 0x20u}, + {0xEAu, 0x94u}, + {0xEEu, 0xA4u}, + {0x01u, 0x0Fu}, + {0x03u, 0xF0u}, + {0x04u, 0x50u}, + {0x05u, 0x30u}, + {0x06u, 0xA0u}, + {0x07u, 0xC0u}, + {0x08u, 0x06u}, + {0x09u, 0x50u}, + {0x0Au, 0x09u}, + {0x0Bu, 0xA0u}, + {0x0Cu, 0x03u}, + {0x0Du, 0x60u}, + {0x0Eu, 0x0Cu}, + {0x0Fu, 0x90u}, + {0x11u, 0xFFu}, + {0x12u, 0xFFu}, + {0x14u, 0xFFu}, + {0x15u, 0x05u}, + {0x17u, 0x0Au}, + {0x18u, 0x05u}, + {0x19u, 0x06u}, + {0x1Au, 0x0Au}, + {0x1Bu, 0x09u}, + {0x1Cu, 0x0Fu}, + {0x1Eu, 0xF0u}, + {0x1Fu, 0xFFu}, + {0x21u, 0x03u}, + {0x22u, 0xFFu}, + {0x23u, 0x0Cu}, + {0x24u, 0x30u}, + {0x26u, 0xC0u}, + {0x27u, 0xFFu}, + {0x2Cu, 0x60u}, + {0x2Eu, 0x90u}, + {0x35u, 0xFFu}, + {0x36u, 0xFFu}, + {0x3Eu, 0x40u}, + {0x3Fu, 0x10u}, {0x58u, 0x04u}, {0x59u, 0x04u}, - {0x5Au, 0x04u}, {0x5Bu, 0x04u}, - {0x5Cu, 0x11u}, - {0x5Du, 0x01u}, {0x5Fu, 0x01u}, - {0x62u, 0xC0u}, - {0x66u, 0x80u}, - {0x68u, 0x40u}, - {0x69u, 0x40u}, - {0x6Eu, 0x08u}, - {0x81u, 0x02u}, - {0x84u, 0x02u}, - {0x89u, 0x01u}, - {0x8Du, 0x04u}, - {0xACu, 0x01u}, - {0xB3u, 0x01u}, - {0xB4u, 0x02u}, - {0xB5u, 0x02u}, - {0xB6u, 0x01u}, - {0xB7u, 0x04u}, - {0xBEu, 0x50u}, - {0xBFu, 0x54u}, + {0x84u, 0x10u}, + {0x86u, 0x09u}, + {0x87u, 0x10u}, + {0x8Bu, 0x08u}, + {0x8Du, 0x0Au}, + {0x8Fu, 0x14u}, + {0x90u, 0x08u}, + {0x92u, 0x10u}, + {0x93u, 0x04u}, + {0x94u, 0x04u}, + {0x95u, 0x01u}, + {0x9Cu, 0x19u}, + {0x9Eu, 0x62u}, + {0xA0u, 0x40u}, + {0xA2u, 0x22u}, + {0xABu, 0x02u}, + {0xACu, 0x20u}, + {0xAEu, 0x40u}, + {0xB0u, 0x04u}, + {0xB1u, 0x06u}, + {0xB2u, 0x03u}, + {0xB3u, 0x18u}, + {0xB4u, 0x78u}, + {0xB5u, 0x01u}, + {0xBEu, 0x15u}, + {0xBFu, 0x15u}, {0xD8u, 0x04u}, {0xD9u, 0x04u}, - {0xDBu, 0x04u}, {0xDFu, 0x01u}, {0x01u, 0x08u}, - {0x05u, 0x10u}, - {0x06u, 0x60u}, - {0x07u, 0x01u}, - {0x08u, 0x08u}, - {0x09u, 0x08u}, - {0x0Du, 0x80u}, - {0x0Eu, 0x20u}, - {0x10u, 0x10u}, - {0x12u, 0x22u}, + {0x04u, 0x08u}, + {0x05u, 0x20u}, + {0x06u, 0x02u}, + {0x09u, 0x06u}, + {0x0Bu, 0x01u}, + {0x0Cu, 0x01u}, + {0x0Du, 0x50u}, + {0x0Eu, 0x08u}, + {0x0Fu, 0x21u}, + {0x11u, 0x02u}, + {0x12u, 0x01u}, {0x14u, 0x80u}, - {0x17u, 0x04u}, - {0x19u, 0xA0u}, - {0x1Cu, 0x40u}, - {0x1Du, 0x10u}, - {0x1Eu, 0x20u}, - {0x20u, 0x01u}, - {0x21u, 0x08u}, - {0x23u, 0x04u}, - {0x25u, 0x80u}, - {0x26u, 0xA8u}, - {0x2Cu, 0x04u}, - {0x2Du, 0x02u}, + {0x15u, 0x44u}, + {0x18u, 0xA0u}, + {0x1Au, 0x08u}, + {0x1Bu, 0x30u}, + {0x1Fu, 0x80u}, + {0x22u, 0x2Au}, + {0x27u, 0x08u}, + {0x29u, 0x20u}, {0x2Eu, 0x02u}, - {0x2Fu, 0x10u}, - {0x34u, 0x20u}, - {0x36u, 0x80u}, - {0x37u, 0x0Au}, - {0x39u, 0x20u}, - {0x3Bu, 0x81u}, + {0x2Fu, 0x20u}, + {0x31u, 0x08u}, + {0x33u, 0x02u}, + {0x34u, 0x83u}, + {0x35u, 0x20u}, + {0x36u, 0x04u}, + {0x38u, 0x08u}, + {0x39u, 0xA0u}, + {0x3Du, 0x91u}, {0x3Eu, 0x04u}, - {0x3Fu, 0x08u}, - {0x45u, 0x80u}, - {0x46u, 0x60u}, - {0x47u, 0x0Au}, - {0x4Eu, 0x58u}, - {0x55u, 0x10u}, - {0x56u, 0x02u}, - {0x57u, 0x04u}, - {0x59u, 0x02u}, - {0x5Au, 0xA4u}, - {0x5Cu, 0x49u}, - {0x5Du, 0x20u}, - {0x64u, 0x10u}, - {0x65u, 0x80u}, - {0x67u, 0x44u}, - {0x6Eu, 0x08u}, - {0x6Fu, 0x45u}, - {0x74u, 0xA4u}, - {0x75u, 0x01u}, - {0x81u, 0x10u}, - {0x82u, 0x02u}, - {0x83u, 0x40u}, - {0x84u, 0xA0u}, - {0x85u, 0x80u}, - {0x88u, 0x04u}, - {0x89u, 0x10u}, - {0x8Au, 0x10u}, - {0x8Du, 0x18u}, - {0x93u, 0x20u}, - {0x98u, 0xA0u}, - {0xB0u, 0x80u}, - {0xC0u, 0xF4u}, - {0xC2u, 0xA0u}, - {0xC4u, 0x31u}, - {0xCAu, 0xE0u}, - {0xCCu, 0xF0u}, - {0xCEu, 0x4Du}, - {0xD0u, 0xD0u}, - {0xD2u, 0x20u}, - {0xD6u, 0xFFu}, - {0xD8u, 0xF0u}, - {0xE2u, 0xA1u}, - {0xE6u, 0x90u}, - {0xE8u, 0x42u}, - {0xEAu, 0x08u}, - {0xECu, 0x08u}, - {0x80u, 0x20u}, - {0x87u, 0x10u}, - {0xE0u, 0x80u}, - {0xE6u, 0x07u}, - {0xB4u, 0x04u}, - {0x00u, 0xD6u}, - {0x04u, 0xD2u}, - {0x05u, 0x40u}, - {0x06u, 0x04u}, - {0x07u, 0x30u}, - {0x08u, 0x29u}, - {0x09u, 0x58u}, - {0x0Au, 0x16u}, - {0x0Bu, 0x23u}, - {0x0Cu, 0x04u}, - {0x0Fu, 0x0Cu}, - {0x12u, 0x80u}, - {0x14u, 0x31u}, - {0x16u, 0x0Eu}, - {0x17u, 0x01u}, - {0x1Bu, 0x82u}, - {0x1Cu, 0x22u}, - {0x1Eu, 0x10u}, - {0x20u, 0xD6u}, - {0x24u, 0x17u}, - {0x25u, 0x34u}, - {0x26u, 0x28u}, - {0x27u, 0x43u}, - {0x28u, 0xD0u}, - {0x29u, 0x11u}, - {0x2Au, 0x06u}, - {0x2Bu, 0x62u}, - {0x2Cu, 0x06u}, - {0x2Eu, 0xD0u}, - {0x30u, 0x40u}, - {0x32u, 0x80u}, - {0x33u, 0x80u}, - {0x34u, 0x0Fu}, - {0x35u, 0x70u}, - {0x36u, 0x30u}, - {0x37u, 0x0Fu}, - {0x38u, 0x20u}, - {0x39u, 0x02u}, - {0x3Au, 0x80u}, - {0x3Bu, 0x20u}, - {0x3Eu, 0x05u}, {0x3Fu, 0x01u}, + {0x6Cu, 0x04u}, + {0x6Du, 0xD6u}, + {0x6Eu, 0x04u}, + {0x6Fu, 0x0Au}, + {0x74u, 0x20u}, + {0x75u, 0x80u}, + {0x76u, 0x11u}, + {0x77u, 0x80u}, + {0x82u, 0x20u}, + {0x86u, 0x02u}, + {0x88u, 0x80u}, + {0x89u, 0x02u}, + {0x8Au, 0x02u}, + {0x8Cu, 0x10u}, + {0x8Fu, 0x80u}, + {0x9Cu, 0x02u}, + {0x9Du, 0xA0u}, + {0x9Eu, 0x10u}, + {0x9Fu, 0x08u}, + {0xA1u, 0x08u}, + {0xA7u, 0x10u}, + {0xAEu, 0x10u}, + {0xB1u, 0x80u}, + {0xB7u, 0x10u}, + {0xC0u, 0xE4u}, + {0xC2u, 0xFDu}, + {0xC4u, 0xB9u}, + {0xCAu, 0xC4u}, + {0xCCu, 0xF3u}, + {0xCEu, 0xFEu}, + {0xE0u, 0xA2u}, + {0xE2u, 0x50u}, + {0xE4u, 0x20u}, + {0xE6u, 0x98u}, + {0xEAu, 0x14u}, + {0xEEu, 0x82u}, + {0x85u, 0x20u}, + {0x87u, 0x08u}, + {0x8Cu, 0x02u}, + {0x8Du, 0x08u}, + {0xE2u, 0x10u}, + {0xAFu, 0x10u}, + {0xB2u, 0x20u}, + {0xB4u, 0x40u}, + {0xEAu, 0x40u}, + {0xECu, 0x02u}, + {0x00u, 0x03u}, + {0x02u, 0x0Cu}, + {0x04u, 0x60u}, + {0x05u, 0x01u}, + {0x06u, 0x90u}, + {0x07u, 0x02u}, + {0x0Bu, 0x10u}, + {0x0Cu, 0x0Fu}, + {0x0Eu, 0xF0u}, + {0x11u, 0x08u}, + {0x13u, 0x10u}, + {0x14u, 0x05u}, + {0x16u, 0x0Au}, + {0x17u, 0x01u}, + {0x18u, 0x06u}, + {0x1Au, 0x09u}, + {0x1Bu, 0x06u}, + {0x1Fu, 0x08u}, + {0x20u, 0x50u}, + {0x21u, 0x01u}, + {0x22u, 0xA0u}, + {0x23u, 0x04u}, + {0x24u, 0x30u}, + {0x26u, 0xC0u}, + {0x2Fu, 0x01u}, + {0x34u, 0xFFu}, + {0x35u, 0x07u}, + {0x37u, 0x18u}, + {0x3Eu, 0x10u}, + {0x3Fu, 0x40u}, {0x56u, 0x02u}, {0x57u, 0x28u}, - {0x58u, 0x0Bu}, - {0x59u, 0x0Bu}, - {0x5Bu, 0x0Bu}, - {0x5Cu, 0x99u}, - {0x5Du, 0x90u}, + {0x58u, 0x04u}, + {0x59u, 0x04u}, + {0x5Bu, 0x04u}, + {0x5Cu, 0x10u}, {0x5Fu, 0x01u}, - {0x84u, 0x05u}, - {0x86u, 0x0Au}, - {0x87u, 0x70u}, - {0x88u, 0x03u}, - {0x8Au, 0x0Cu}, - {0x8Bu, 0x80u}, - {0x8Cu, 0x30u}, - {0x8Eu, 0xC0u}, - {0x8Fu, 0x04u}, - {0x95u, 0x09u}, - {0x97u, 0x14u}, - {0x98u, 0x06u}, - {0x99u, 0x01u}, - {0x9Au, 0x09u}, + {0x86u, 0xECu}, + {0x87u, 0xFFu}, + {0x8Bu, 0xFFu}, + {0x8Du, 0x0Fu}, + {0x8Eu, 0x01u}, + {0x8Fu, 0xF0u}, + {0x91u, 0x30u}, + {0x93u, 0xC0u}, + {0x98u, 0x04u}, + {0x99u, 0x05u}, + {0x9Au, 0x43u}, {0x9Bu, 0x0Au}, - {0x9Du, 0x40u}, - {0x9Fu, 0x80u}, - {0xA0u, 0x0Fu}, - {0xA1u, 0x0Eu}, - {0xA2u, 0xF0u}, - {0xA3u, 0x21u}, - {0xA4u, 0x60u}, - {0xA6u, 0x90u}, - {0xA8u, 0x50u}, - {0xAAu, 0xA0u}, - {0xABu, 0x07u}, - {0xAFu, 0x08u}, - {0xB1u, 0xC0u}, - {0xB2u, 0xFFu}, - {0xB3u, 0x38u}, - {0xB5u, 0x07u}, - {0xBEu, 0x04u}, - {0xBFu, 0x01u}, + {0x9Du, 0x03u}, + {0x9Eu, 0x12u}, + {0x9Fu, 0x0Cu}, + {0xA0u, 0xE0u}, + {0xA1u, 0x50u}, + {0xA3u, 0xA0u}, + {0xA7u, 0xFFu}, + {0xA8u, 0x88u}, + {0xA9u, 0x09u}, + {0xAAu, 0x03u}, + {0xABu, 0x06u}, + {0xACu, 0x21u}, + {0xADu, 0x90u}, + {0xAEu, 0x02u}, + {0xAFu, 0x60u}, + {0xB0u, 0xE0u}, + {0xB3u, 0xFFu}, + {0xB4u, 0x0Fu}, + {0xB6u, 0x10u}, + {0xBEu, 0x01u}, + {0xBFu, 0x04u}, + {0xD4u, 0x09u}, + {0xD6u, 0x04u}, {0xD8u, 0x04u}, {0xD9u, 0x04u}, - {0xDCu, 0x10u}, + {0xDBu, 0x04u}, {0xDFu, 0x01u}, - {0x00u, 0x08u}, - {0x01u, 0x20u}, - {0x02u, 0x02u}, - {0x05u, 0x10u}, - {0x06u, 0x01u}, - {0x07u, 0x50u}, - {0x0Bu, 0x08u}, - {0x0Eu, 0x02u}, - {0x0Fu, 0x90u}, - {0x10u, 0x48u}, - {0x12u, 0x10u}, - {0x15u, 0x50u}, - {0x17u, 0x09u}, - {0x1Au, 0x10u}, - {0x1Du, 0x37u}, - {0x1Eu, 0x03u}, + {0x00u, 0x04u}, + {0x01u, 0x80u}, + {0x07u, 0xA2u}, + {0x0Au, 0x04u}, + {0x0Bu, 0x01u}, + {0x0Eu, 0x20u}, + {0x0Fu, 0x08u}, + {0x10u, 0x40u}, + {0x12u, 0x02u}, + {0x13u, 0x10u}, + {0x16u, 0x60u}, + {0x18u, 0x44u}, + {0x19u, 0x80u}, {0x1Fu, 0x10u}, - {0x20u, 0x04u}, - {0x21u, 0x05u}, - {0x22u, 0x10u}, - {0x23u, 0x04u}, - {0x24u, 0x02u}, - {0x25u, 0x51u}, - {0x26u, 0x08u}, - {0x28u, 0x88u}, + {0x22u, 0x04u}, + {0x25u, 0x40u}, + {0x26u, 0x20u}, + {0x28u, 0xA0u}, + {0x29u, 0x10u}, {0x2Au, 0x80u}, - {0x2Eu, 0x20u}, - {0x2Fu, 0x10u}, - {0x30u, 0x40u}, - {0x32u, 0x14u}, + {0x2Du, 0x02u}, + {0x2Eu, 0x40u}, + {0x30u, 0x01u}, + {0x32u, 0x90u}, + {0x35u, 0x10u}, {0x36u, 0x28u}, - {0x38u, 0x20u}, - {0x39u, 0x88u}, - {0x3Au, 0x10u}, - {0x3Bu, 0x08u}, - {0x3Du, 0x80u}, - {0x3Eu, 0x08u}, - {0x3Fu, 0x10u}, - {0x45u, 0x10u}, - {0x46u, 0x08u}, - {0x66u, 0x08u}, - {0x6Cu, 0x80u}, - {0x6Du, 0x50u}, - {0x6Fu, 0x58u}, - {0x77u, 0x01u}, - {0x7Cu, 0x02u}, - {0x83u, 0x12u}, - {0x8Du, 0x01u}, - {0x90u, 0x20u}, - {0x91u, 0x80u}, - {0x92u, 0x08u}, - {0x93u, 0x10u}, - {0x94u, 0x02u}, - {0x95u, 0x42u}, - {0x96u, 0x11u}, - {0x97u, 0x24u}, - {0x98u, 0xCAu}, - {0x99u, 0x20u}, - {0x9Au, 0xA1u}, - {0x9Bu, 0x08u}, - {0x9Du, 0x15u}, + {0x37u, 0x82u}, + {0x39u, 0x84u}, + {0x3Bu, 0x20u}, + {0x3Du, 0x20u}, + {0x3Eu, 0x20u}, + {0x3Fu, 0x04u}, + {0x59u, 0x25u}, + {0x5Au, 0x80u}, + {0x63u, 0x82u}, + {0x66u, 0x04u}, + {0x69u, 0x80u}, + {0x6Bu, 0x02u}, + {0x6Cu, 0x20u}, + {0x6Du, 0x41u}, + {0x6Fu, 0xD9u}, + {0x74u, 0x80u}, + {0x76u, 0x02u}, + {0x81u, 0x40u}, + {0x8Fu, 0x40u}, + {0x91u, 0x04u}, + {0x92u, 0xE4u}, + {0x93u, 0x15u}, + {0x95u, 0x41u}, + {0x96u, 0x08u}, + {0x98u, 0xE1u}, + {0x99u, 0x27u}, + {0x9Au, 0xC4u}, + {0x9Bu, 0xA0u}, + {0x9Eu, 0x02u}, {0x9Fu, 0x51u}, - {0xA0u, 0x0Cu}, - {0xA2u, 0x22u}, - {0xA3u, 0x40u}, - {0xA4u, 0x80u}, - {0xA5u, 0x22u}, - {0xA6u, 0x01u}, - {0xA7u, 0x0Au}, - {0xB0u, 0x10u}, - {0xB1u, 0x01u}, - {0xB5u, 0x80u}, - {0xC0u, 0xF7u}, - {0xC2u, 0xB2u}, - {0xC4u, 0xFEu}, - {0xCAu, 0x6Du}, - {0xCCu, 0x6Eu}, - {0xCEu, 0x7Eu}, - {0xD8u, 0x40u}, - {0xDEu, 0x80u}, - {0xE2u, 0x10u}, - {0xEAu, 0x20u}, - {0xECu, 0x40u}, - {0x9Fu, 0x08u}, - {0xB2u, 0x40u}, - {0xECu, 0x80u}, - {0xB7u, 0x08u}, - {0xECu, 0x40u}, - {0x30u, 0x20u}, - {0x33u, 0x02u}, - {0x34u, 0x04u}, - {0x35u, 0x20u}, - {0x38u, 0x80u}, - {0x56u, 0x80u}, - {0x5Bu, 0x02u}, - {0x5Eu, 0x01u}, - {0x63u, 0x40u}, - {0x65u, 0x04u}, - {0x81u, 0x20u}, - {0x8Du, 0x04u}, - {0xCCu, 0xF0u}, - {0xCEu, 0x10u}, - {0xD4u, 0x40u}, + {0xA1u, 0x10u}, + {0xA2u, 0x9Au}, + {0xA3u, 0x05u}, + {0xA4u, 0xA0u}, + {0xA5u, 0x40u}, + {0xA7u, 0x88u}, + {0xB0u, 0xA0u}, + {0xB5u, 0x10u}, + {0xC0u, 0xB5u}, + {0xC2u, 0x63u}, + {0xC4u, 0x3Bu}, + {0xCAu, 0x9Fu}, + {0xCCu, 0xFDu}, + {0xCEu, 0x6Eu}, + {0xD6u, 0x0Fu}, + {0xD8u, 0x49u}, + {0xE0u, 0x01u}, + {0xE6u, 0x40u}, + {0xEEu, 0x06u}, + {0x83u, 0x01u}, + {0x97u, 0x01u}, + {0x9Cu, 0x02u}, + {0x9Du, 0x20u}, + {0xABu, 0x80u}, + {0xB2u, 0x04u}, + {0xB3u, 0x08u}, + {0xB7u, 0x80u}, + {0xEAu, 0xA0u}, + {0xEEu, 0x12u}, + {0xACu, 0x02u}, + {0xB1u, 0x20u}, + {0xE8u, 0x20u}, + {0x12u, 0x08u}, + {0x15u, 0x80u}, + {0x17u, 0x01u}, + {0x33u, 0x01u}, + {0x36u, 0x88u}, + {0x38u, 0x01u}, + {0x39u, 0x80u}, + {0x3Cu, 0x04u}, + {0x3Du, 0x80u}, + {0x43u, 0x10u}, + {0x50u, 0x80u}, + {0x5Au, 0x04u}, + {0x5Du, 0x02u}, + {0x61u, 0x20u}, + {0x64u, 0x08u}, + {0x89u, 0x40u}, + {0x8Cu, 0x01u}, + {0x8Du, 0x20u}, + {0xC4u, 0xE0u}, + {0xCCu, 0xE0u}, + {0xCEu, 0xF0u}, + {0xD0u, 0x10u}, + {0xD4u, 0x20u}, {0xD6u, 0xC0u}, {0xD8u, 0xC0u}, - {0xE6u, 0x80u}, - {0x51u, 0x02u}, - {0x56u, 0x20u}, - {0x5Eu, 0x01u}, - {0x5Fu, 0x20u}, - {0x8Eu, 0x20u}, - {0x94u, 0x80u}, - {0x97u, 0x40u}, - {0x9Cu, 0x04u}, - {0x9Eu, 0x80u}, - {0x9Fu, 0x02u}, - {0xA4u, 0x20u}, - {0xAFu, 0x02u}, - {0xB2u, 0x01u}, - {0xD4u, 0xC0u}, - {0xD6u, 0xA0u}, + {0x31u, 0x20u}, + {0x32u, 0x04u}, + {0x36u, 0x40u}, + {0x37u, 0x04u}, + {0x50u, 0x08u}, + {0x51u, 0x01u}, + {0x55u, 0x08u}, + {0x5Du, 0x02u}, + {0x81u, 0x02u}, + {0x89u, 0x01u}, + {0x94u, 0x04u}, + {0x96u, 0x04u}, + {0x9Cu, 0x08u}, + {0x9Fu, 0x10u}, + {0xA6u, 0x80u}, + {0xACu, 0x80u}, + {0xADu, 0x02u}, + {0xCCu, 0xF0u}, + {0xD4u, 0xE0u}, + {0xD6u, 0x80u}, + {0xE6u, 0x20u}, {0xEAu, 0x10u}, - {0x10u, 0x20u}, - {0x80u, 0x40u}, - {0x83u, 0x80u}, - {0x86u, 0x81u}, - {0x87u, 0x02u}, - {0x94u, 0x80u}, - {0x96u, 0x01u}, - {0x97u, 0x40u}, - {0x9Bu, 0x40u}, - {0x9Cu, 0x04u}, - {0x9Eu, 0x80u}, - {0x9Fu, 0x02u}, - {0xA4u, 0x20u}, - {0xA5u, 0x02u}, - {0xABu, 0x20u}, - {0xB7u, 0x40u}, + {0xEEu, 0x10u}, + {0x12u, 0x80u}, + {0x80u, 0x08u}, + {0x86u, 0x04u}, + {0x89u, 0x02u}, + {0x8Cu, 0x08u}, + {0x96u, 0x0Cu}, + {0x9Cu, 0x08u}, + {0x9Fu, 0x14u}, + {0xA4u, 0x08u}, + {0xA5u, 0x20u}, + {0xA6u, 0xC0u}, + {0xB4u, 0x04u}, + {0xB5u, 0x08u}, {0xC4u, 0x10u}, - {0xE2u, 0xD0u}, - {0xE4u, 0x20u}, - {0xE6u, 0x40u}, - {0xEAu, 0x80u}, - {0x86u, 0x80u}, - {0x97u, 0x40u}, - {0x9Bu, 0x40u}, - {0xA1u, 0x80u}, - {0xA7u, 0x80u}, - {0xACu, 0x04u}, - {0xADu, 0x80u}, - {0xB5u, 0x02u}, - {0xE4u, 0x10u}, - {0xEAu, 0x10u}, - {0xEEu, 0x40u}, - {0x0Bu, 0x02u}, - {0x0Fu, 0x40u}, - {0x10u, 0x10u}, - {0x52u, 0x80u}, - {0x54u, 0x40u}, - {0x58u, 0x20u}, - {0x5Eu, 0x20u}, - {0x80u, 0x02u}, - {0x83u, 0x01u}, - {0x87u, 0x40u}, - {0x88u, 0x20u}, + {0xE2u, 0xC0u}, + {0x63u, 0x08u}, + {0x83u, 0x04u}, + {0x85u, 0x20u}, + {0x86u, 0x04u}, + {0x87u, 0x08u}, + {0x96u, 0x08u}, + {0x9Du, 0x02u}, + {0x9Fu, 0x14u}, + {0xA5u, 0x20u}, + {0xA6u, 0x40u}, + {0xD8u, 0x40u}, + {0xE2u, 0x90u}, + {0xE6u, 0x50u}, + {0x09u, 0x80u}, + {0x0Eu, 0x80u}, + {0x13u, 0x01u}, + {0x50u, 0x80u}, + {0x51u, 0x02u}, + {0x54u, 0x04u}, + {0x56u, 0x01u}, + {0x8Fu, 0x01u}, {0xC2u, 0x06u}, {0xC4u, 0x08u}, {0xD4u, 0x07u}, {0xD6u, 0x04u}, - {0xE0u, 0x01u}, - {0x00u, 0x20u}, - {0x06u, 0x40u}, - {0x07u, 0x04u}, - {0x09u, 0x02u}, - {0x0Bu, 0x04u}, + {0xE6u, 0x08u}, + {0x02u, 0x08u}, + {0x05u, 0x40u}, + {0x06u, 0x20u}, + {0x08u, 0x24u}, + {0x0Du, 0x08u}, {0x0Eu, 0x08u}, - {0x0Fu, 0x10u}, - {0x81u, 0x02u}, - {0x8Au, 0x40u}, - {0x8Bu, 0x04u}, - {0x8Eu, 0x04u}, - {0x9Cu, 0x02u}, - {0xA4u, 0x02u}, - {0xACu, 0x42u}, - {0xAEu, 0x10u}, - {0xB0u, 0x10u}, - {0xB6u, 0x80u}, + {0x84u, 0x20u}, + {0x85u, 0x02u}, + {0x88u, 0x04u}, + {0x8Cu, 0x80u}, + {0x8Du, 0x88u}, + {0x9Eu, 0x21u}, + {0xA1u, 0x80u}, + {0xA4u, 0x84u}, + {0xA5u, 0x02u}, + {0xAAu, 0x20u}, + {0xAEu, 0x40u}, {0xC0u, 0x07u}, {0xC2u, 0x0Fu}, - {0xE2u, 0x02u}, - {0xE6u, 0x05u}, - {0xE8u, 0x02u}, - {0xEAu, 0x04u}, - {0x81u, 0x40u}, - {0x9Cu, 0x02u}, - {0xA4u, 0x02u}, - {0xABu, 0x04u}, - {0xAFu, 0x10u}, - {0xB0u, 0x10u}, - {0xEEu, 0x01u}, - {0x08u, 0x02u}, - {0x0Au, 0x01u}, - {0x0Cu, 0x02u}, - {0x0Du, 0x40u}, - {0x95u, 0x80u}, - {0x96u, 0x01u}, - {0x9Cu, 0x02u}, - {0xA4u, 0x02u}, - {0xAEu, 0x01u}, + {0xE2u, 0x08u}, + {0xE4u, 0x02u}, + {0xE6u, 0x09u}, + {0x88u, 0x04u}, + {0xA4u, 0x04u}, + {0xAAu, 0x0Cu}, + {0xB1u, 0x40u}, + {0xB6u, 0x01u}, + {0xE0u, 0x04u}, + {0xEAu, 0x01u}, + {0xECu, 0x02u}, + {0x0Bu, 0x88u}, + {0x0Fu, 0x41u}, + {0x83u, 0x01u}, + {0x87u, 0x44u}, {0xC2u, 0x0Fu}, - {0x26u, 0x80u}, - {0x65u, 0x04u}, - {0x8Du, 0x04u}, - {0x9Bu, 0x40u}, + {0x8Fu, 0x10u}, + {0x9Du, 0x02u}, {0x9Fu, 0x10u}, - {0xA1u, 0x80u}, - {0xA6u, 0x80u}, - {0xA7u, 0x80u}, - {0xB3u, 0x40u}, - {0xB7u, 0x10u}, - {0xC8u, 0x20u}, - {0xD8u, 0x80u}, - {0x07u, 0x10u}, - {0x1Bu, 0x80u}, - {0x51u, 0x80u}, - {0x5Bu, 0x40u}, - {0x9Bu, 0x40u}, - {0x9Fu, 0x10u}, - {0xA1u, 0x80u}, - {0xA7u, 0x80u}, + {0xA3u, 0x08u}, + {0xABu, 0x04u}, + {0xAEu, 0x40u}, + {0xEEu, 0x60u}, + {0x05u, 0x02u}, + {0x57u, 0x08u}, + {0x5Du, 0x40u}, + {0x91u, 0x40u}, + {0x9Du, 0x02u}, + {0xA3u, 0x08u}, + {0xB5u, 0x40u}, {0xC0u, 0x20u}, - {0xC6u, 0x40u}, - {0xD4u, 0xA0u}, - {0x00u, 0x02u}, - {0x01u, 0x01u}, - {0x08u, 0x02u}, - {0x09u, 0x01u}, - {0x0Au, 0x02u}, - {0x0Bu, 0x01u}, - {0x0Eu, 0x02u}, - {0x10u, 0x02u}, - {0x11u, 0x01u}, - {0x1Au, 0x02u}, - {0x1Bu, 0x01u}, - {0x00u, 0xABu}, - {0x01u, 0x02u}, + {0xD4u, 0x40u}, + {0xD6u, 0x20u}, + {0xAFu, 0x40u}, + {0x00u, 0x03u}, + {0x08u, 0x03u}, + {0x0Au, 0x03u}, + {0x10u, 0x03u}, + {0x1Au, 0x03u}, + {0x00u, 0xFDu}, + {0x01u, 0xABu}, + {0x02u, 0x02u}, + {0x10u, 0x55u}, }; @@ -1474,28 +1549,28 @@ void cyfitter_cfg(void) /* address, size */ {(void CYFAR *)(CYREG_TMR0_CFG0), 12u}, {(void CYFAR *)(CYREG_PRT1_DR), 16u}, - {(void CYFAR *)(CYDEV_UCFG_B0_P0_U0_BASE), 1536u}, - {(void CYFAR *)(CYDEV_UCFG_B0_P3_U1_BASE), 2432u}, + {(void CYFAR *)(CYDEV_UCFG_B0_P0_U0_BASE), 1024u}, + {(void CYFAR *)(CYDEV_UCFG_B0_P2_U1_BASE), 2944u}, {(void CYFAR *)(CYDEV_UCFG_B1_P2_U0_BASE), 2048u}, {(void CYFAR *)(CYDEV_UCFG_DSI0_BASE), 2560u}, {(void CYFAR *)(CYDEV_UCFG_DSI12_BASE), 512u}, {(void CYFAR *)(CYREG_BCTL0_MDCLK_EN), 32u}, }; - /* UDB_1_2_1_CONFIG Address: CYDEV_UCFG_B0_P3_U0_BASE Size (bytes): 128 */ - static const uint8 CYCODE BS_UDB_1_2_1_CONFIG_VAL[] = { - 0x01u, 0x80u, 0x00u, 0x00u, 0x07u, 0x00u, 0x18u, 0x9Fu, 0x08u, 0x7Fu, 0x21u, 0x80u, 0x40u, 0x90u, 0x00u, 0x40u, - 0x40u, 0xC0u, 0x00u, 0x01u, 0x04u, 0x1Fu, 0x00u, 0x20u, 0x10u, 0x00u, 0x00u, 0x60u, 0x01u, 0xC0u, 0x00u, 0x02u, - 0x01u, 0x00u, 0x00u, 0x00u, 0x22u, 0x00u, 0x08u, 0xFFu, 0x01u, 0xC0u, 0x00u, 0x08u, 0x01u, 0xC0u, 0x00u, 0x04u, - 0x3Fu, 0x00u, 0x40u, 0x00u, 0x00u, 0x00u, 0x00u, 0xFFu, 0x0Au, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x01u, 0x40u, - 0x26u, 0x03u, 0x40u, 0x00u, 0x05u, 0x0Bu, 0xFDu, 0xCEu, 0x3Du, 0xFFu, 0xFFu, 0xFFu, 0x22u, 0x00u, 0xF0u, 0x08u, - 0x04u, 0x00u, 0x00u, 0x00u, 0x40u, 0x00u, 0x00u, 0x00u, 0x0Bu, 0x04u, 0x0Bu, 0x0Bu, 0x09u, 0x99u, 0x00u, 0x01u, + /* UDB_1_3_0_CONFIG Address: CYDEV_UCFG_B0_P2_U0_BASE Size (bytes): 128 */ + static const uint8 CYCODE BS_UDB_1_3_0_CONFIG_VAL[] = { + 0x8Du, 0x00u, 0x00u, 0x00u, 0x8Du, 0x09u, 0x00u, 0x12u, 0x8Du, 0x00u, 0x00u, 0x01u, 0x0Du, 0x00u, 0x80u, 0x30u, + 0x02u, 0x00u, 0x0Du, 0x00u, 0x00u, 0x00u, 0x80u, 0x09u, 0x12u, 0x00u, 0x44u, 0x06u, 0x60u, 0x00u, 0x00u, 0x08u, + 0x8Du, 0x09u, 0x00u, 0x24u, 0x00u, 0x00u, 0x00u, 0x00u, 0x22u, 0x00u, 0x18u, 0x00u, 0x11u, 0x00u, 0x22u, 0x00u, + 0x0Fu, 0x38u, 0x00u, 0x00u, 0x80u, 0x07u, 0x70u, 0x00u, 0x80u, 0x00u, 0x02u, 0x00u, 0x00u, 0x00u, 0x10u, 0x00u, + 0x26u, 0x05u, 0x40u, 0x00u, 0x03u, 0xBEu, 0xFBu, 0xDCu, 0x3Fu, 0xFFu, 0xFFu, 0xFFu, 0x22u, 0x00u, 0xF0u, 0x08u, + 0x04u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x04u, 0x04u, 0x04u, 0x04u, 0x10u, 0x00u, 0x00u, 0x01u, 0x00u, 0x00u, 0xC0u, 0x00u, 0x40u, 0x01u, 0x10u, 0x11u, 0xC0u, 0x01u, 0x00u, 0x11u, 0x40u, 0x01u, 0x40u, 0x01u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u}; static const cfg_memcpy_t CYCODE cfg_memcpy_list [] = { /* dest, src, size */ - {(void CYFAR *)(CYDEV_UCFG_B0_P3_U0_BASE), BS_UDB_1_2_1_CONFIG_VAL, 128u}, + {(void CYFAR *)(CYDEV_UCFG_B0_P2_U0_BASE), BS_UDB_1_3_0_CONFIG_VAL, 128u}, }; uint8 CYDATA i; @@ -1519,6 +1594,12 @@ void cyfitter_cfg(void) cfg_write_bytes32(cy_cfg_addr_table, cy_cfg_data_table); + /* Perform normal device configuration. Order is not critical for these items. */ + CYMEMZERO((void CYFAR *)(CYREG_PHUB_CFGMEM0_CFG0), 4u); + CYCONFIGCPYCODE((void CYFAR *)(CYREG_PHUB_CFGMEM1_CFG0), (const void CYCODE *)(BS_PHUB_CFGMEM1_VAL), 4u); + CYCONFIGCPYCODE((void CYFAR *)(CYREG_PHUB_CFGMEM2_CFG0), (const void CYCODE *)(BS_PHUB_CFGMEM2_VAL), 4u); + CYCONFIGCPYCODE((void CYFAR *)(CYREG_PHUB_CFGMEM3_CFG0), (const void CYCODE *)(BS_PHUB_CFGMEM3_VAL), 4u); + /* Enable digital routing */ CY_SET_XTND_REG8((void CYFAR *)CYREG_BCTL0_BANK_CTL, CY_GET_XTND_REG8((void CYFAR *)CYREG_BCTL0_BANK_CTL) | 0x02u); CY_SET_XTND_REG8((void CYFAR *)CYREG_BCTL1_BANK_CTL, CY_GET_XTND_REG8((void CYFAR *)CYREG_BCTL1_BANK_CTL) | 0x02u); diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfittergnu.inc b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfittergnu.inc old mode 100755 new mode 100644 index e2cddad..b4c3cb6 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfittergnu.inc +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfittergnu.inc @@ -6,13 +6,33 @@ /* Debug_Timer_Interrupt */ .set Debug_Timer_Interrupt__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 .set Debug_Timer_Interrupt__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 -.set Debug_Timer_Interrupt__INTC_MASK, 0x01 -.set Debug_Timer_Interrupt__INTC_NUMBER, 0 +.set Debug_Timer_Interrupt__INTC_MASK, 0x02 +.set Debug_Timer_Interrupt__INTC_NUMBER, 1 .set Debug_Timer_Interrupt__INTC_PRIOR_NUM, 7 -.set Debug_Timer_Interrupt__INTC_PRIOR_REG, CYREG_NVIC_PRI_0 +.set Debug_Timer_Interrupt__INTC_PRIOR_REG, CYREG_NVIC_PRI_1 .set Debug_Timer_Interrupt__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 .set Debug_Timer_Interrupt__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 +/* SCSI_RX_DMA_COMPLETE */ +.set SCSI_RX_DMA_COMPLETE__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 +.set SCSI_RX_DMA_COMPLETE__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 +.set SCSI_RX_DMA_COMPLETE__INTC_MASK, 0x01 +.set SCSI_RX_DMA_COMPLETE__INTC_NUMBER, 0 +.set SCSI_RX_DMA_COMPLETE__INTC_PRIOR_NUM, 7 +.set SCSI_RX_DMA_COMPLETE__INTC_PRIOR_REG, CYREG_NVIC_PRI_0 +.set SCSI_RX_DMA_COMPLETE__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 +.set SCSI_RX_DMA_COMPLETE__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 + +/* SCSI_TX_DMA_COMPLETE */ +.set SCSI_TX_DMA_COMPLETE__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 +.set SCSI_TX_DMA_COMPLETE__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 +.set SCSI_TX_DMA_COMPLETE__INTC_MASK, 0x04 +.set SCSI_TX_DMA_COMPLETE__INTC_NUMBER, 2 +.set SCSI_TX_DMA_COMPLETE__INTC_PRIOR_NUM, 7 +.set SCSI_TX_DMA_COMPLETE__INTC_PRIOR_REG, CYREG_NVIC_PRI_2 +.set SCSI_TX_DMA_COMPLETE__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 +.set SCSI_TX_DMA_COMPLETE__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 + /* Debug_Timer_TimerHW */ .set Debug_Timer_TimerHW__CAP0, CYREG_TMR0_CAP0 .set Debug_Timer_TimerHW__CAP1, CYREG_TMR0_CAP1 @@ -31,6 +51,26 @@ .set Debug_Timer_TimerHW__RT1, CYREG_TMR0_RT1 .set Debug_Timer_TimerHW__SR0, CYREG_TMR0_SR0 +/* SD_RX_DMA_COMPLETE */ +.set SD_RX_DMA_COMPLETE__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 +.set SD_RX_DMA_COMPLETE__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 +.set SD_RX_DMA_COMPLETE__INTC_MASK, 0x08 +.set SD_RX_DMA_COMPLETE__INTC_NUMBER, 3 +.set SD_RX_DMA_COMPLETE__INTC_PRIOR_NUM, 7 +.set SD_RX_DMA_COMPLETE__INTC_PRIOR_REG, CYREG_NVIC_PRI_3 +.set SD_RX_DMA_COMPLETE__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 +.set SD_RX_DMA_COMPLETE__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 + +/* SD_TX_DMA_COMPLETE */ +.set SD_TX_DMA_COMPLETE__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 +.set SD_TX_DMA_COMPLETE__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 +.set SD_TX_DMA_COMPLETE__INTC_MASK, 0x10 +.set SD_TX_DMA_COMPLETE__INTC_NUMBER, 4 +.set SD_TX_DMA_COMPLETE__INTC_PRIOR_NUM, 7 +.set SD_TX_DMA_COMPLETE__INTC_PRIOR_REG, CYREG_NVIC_PRI_4 +.set SD_TX_DMA_COMPLETE__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 +.set SD_TX_DMA_COMPLETE__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 + /* USBFS_bus_reset */ .set USBFS_bus_reset__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 .set USBFS_bus_reset__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 @@ -44,41 +84,41 @@ /* SCSI_CTL_PHASE */ .set SCSI_CTL_PHASE_Sync_ctrl_reg__0__MASK, 0x01 .set SCSI_CTL_PHASE_Sync_ctrl_reg__0__POS, 0 -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB05_06_ACTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB05_06_CTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB05_06_CTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB05_06_CTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB05_06_CTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG, CYREG_B0_UDB05_06_MSK -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB05_06_MSK -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB05_06_MSK -.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB05_06_MSK +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB02_03_ACTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB02_03_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB02_03_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB02_03_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB02_03_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG, CYREG_B0_UDB02_03_MSK +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB02_03_MSK +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB02_03_MSK +.set SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB02_03_MSK .set SCSI_CTL_PHASE_Sync_ctrl_reg__1__MASK, 0x02 .set SCSI_CTL_PHASE_Sync_ctrl_reg__1__POS, 1 .set SCSI_CTL_PHASE_Sync_ctrl_reg__2__MASK, 0x04 .set SCSI_CTL_PHASE_Sync_ctrl_reg__2__POS, 2 -.set SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG, CYREG_B0_UDB05_ACTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG, CYREG_B0_UDB05_CTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG, CYREG_B0_UDB05_ST_CTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG, CYREG_B0_UDB05_CTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG, CYREG_B0_UDB05_ST_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG, CYREG_B0_UDB02_ACTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG, CYREG_B0_UDB02_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG, CYREG_B0_UDB02_ST_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG, CYREG_B0_UDB02_CTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG, CYREG_B0_UDB02_ST_CTL .set SCSI_CTL_PHASE_Sync_ctrl_reg__MASK, 0x07 -.set SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB05_MSK_ACTL -.set SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG, CYREG_B0_UDB05_MSK -.set SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB05_MSK_ACTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB02_MSK_ACTL +.set SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG, CYREG_B0_UDB02_MSK +.set SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB02_MSK_ACTL /* SCSI_Out_Bits */ .set SCSI_Out_Bits_Sync_ctrl_reg__0__MASK, 0x01 .set SCSI_Out_Bits_Sync_ctrl_reg__0__POS, 0 -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB00_01_ACTL -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB00_01_CTL -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB00_01_CTL -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB00_01_CTL -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB00_01_CTL -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG, CYREG_B0_UDB00_01_MSK -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB00_01_MSK -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB00_01_MSK -.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB00_01_MSK +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB12_13_ACTL +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB12_13_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB12_13_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB12_13_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB12_13_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG, CYREG_B0_UDB12_13_MSK +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB12_13_MSK +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB12_13_MSK +.set SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB12_13_MSK .set SCSI_Out_Bits_Sync_ctrl_reg__1__MASK, 0x02 .set SCSI_Out_Bits_Sync_ctrl_reg__1__POS, 1 .set SCSI_Out_Bits_Sync_ctrl_reg__2__MASK, 0x04 @@ -93,15 +133,15 @@ .set SCSI_Out_Bits_Sync_ctrl_reg__6__POS, 6 .set SCSI_Out_Bits_Sync_ctrl_reg__7__MASK, 0x80 .set SCSI_Out_Bits_Sync_ctrl_reg__7__POS, 7 -.set SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG, CYREG_B0_UDB00_ACTL -.set SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG, CYREG_B0_UDB00_CTL -.set SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG, CYREG_B0_UDB00_ST_CTL -.set SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG, CYREG_B0_UDB00_CTL -.set SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG, CYREG_B0_UDB00_ST_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG, CYREG_B0_UDB12_ACTL +.set SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG, CYREG_B0_UDB12_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG, CYREG_B0_UDB12_ST_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG, CYREG_B0_UDB12_CTL +.set SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG, CYREG_B0_UDB12_ST_CTL .set SCSI_Out_Bits_Sync_ctrl_reg__MASK, 0xFF -.set SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB00_MSK_ACTL -.set SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG, CYREG_B0_UDB00_MSK -.set SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB00_MSK_ACTL +.set SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL +.set SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG, CYREG_B0_UDB12_MSK +.set SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL /* USBFS_arb_int */ .set USBFS_arb_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 @@ -126,24 +166,24 @@ /* SCSI_Out_Ctl */ .set SCSI_Out_Ctl_Sync_ctrl_reg__0__MASK, 0x01 .set SCSI_Out_Ctl_Sync_ctrl_reg__0__POS, 0 -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB03_04_ACTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB03_04_CTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB03_04_CTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB03_04_CTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB03_04_CTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG, CYREG_B0_UDB03_04_MSK -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB03_04_MSK -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB03_04_MSK -.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB03_04_MSK -.set SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG, CYREG_B0_UDB03_ACTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG, CYREG_B0_UDB03_CTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG, CYREG_B0_UDB03_ST_CTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG, CYREG_B0_UDB03_CTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG, CYREG_B0_UDB03_ST_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG, CYREG_B1_UDB07_08_ACTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG, CYREG_B1_UDB07_08_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG, CYREG_B1_UDB07_08_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG, CYREG_B1_UDB07_08_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG, CYREG_B1_UDB07_08_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG, CYREG_B1_UDB07_08_MSK +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG, CYREG_B1_UDB07_08_MSK +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG, CYREG_B1_UDB07_08_MSK +.set SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG, CYREG_B1_UDB07_08_MSK +.set SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG, CYREG_B1_UDB07_ACTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG, CYREG_B1_UDB07_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG, CYREG_B1_UDB07_ST_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG, CYREG_B1_UDB07_CTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG, CYREG_B1_UDB07_ST_CTL .set SCSI_Out_Ctl_Sync_ctrl_reg__MASK, 0x01 -.set SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL -.set SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG, CYREG_B0_UDB03_MSK -.set SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG, CYREG_B1_UDB07_MSK_ACTL +.set SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG, CYREG_B1_UDB07_MSK +.set SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B1_UDB07_MSK_ACTL /* SCSI_Out_DBx */ .set SCSI_Out_DBx__0__AG, CYREG_PRT6_AG @@ -616,8 +656,8 @@ .set SDCard_BSPIM_BitCounter__MASK_CTL_AUX_CTL_REG, CYREG_B1_UDB06_MSK_ACTL .set SDCard_BSPIM_BitCounter__PERIOD_REG, CYREG_B1_UDB06_MSK .set SDCard_BSPIM_BitCounter__PER_CTL_AUX_CTL_REG, CYREG_B1_UDB06_MSK_ACTL -.set SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG, CYREG_B0_UDB06_07_ACTL -.set SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG, CYREG_B0_UDB06_07_ST +.set SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG, CYREG_B0_UDB07_08_ACTL +.set SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG, CYREG_B0_UDB07_08_ST .set SDCard_BSPIM_RxStsReg__4__MASK, 0x10 .set SDCard_BSPIM_RxStsReg__4__POS, 4 .set SDCard_BSPIM_RxStsReg__5__MASK, 0x20 @@ -625,13 +665,13 @@ .set SDCard_BSPIM_RxStsReg__6__MASK, 0x40 .set SDCard_BSPIM_RxStsReg__6__POS, 6 .set SDCard_BSPIM_RxStsReg__MASK, 0x70 -.set SDCard_BSPIM_RxStsReg__MASK_REG, CYREG_B0_UDB06_MSK -.set SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG, CYREG_B0_UDB06_ACTL -.set SDCard_BSPIM_RxStsReg__STATUS_REG, CYREG_B0_UDB06_ST +.set SDCard_BSPIM_RxStsReg__MASK_REG, CYREG_B0_UDB07_MSK +.set SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG, CYREG_B0_UDB07_ACTL +.set SDCard_BSPIM_RxStsReg__STATUS_REG, CYREG_B0_UDB07_ST .set SDCard_BSPIM_TxStsReg__0__MASK, 0x01 .set SDCard_BSPIM_TxStsReg__0__POS, 0 -.set SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG, CYREG_B0_UDB04_05_ACTL -.set SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG, CYREG_B0_UDB04_05_ST +.set SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG, CYREG_B1_UDB07_08_ACTL +.set SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG, CYREG_B1_UDB07_08_ST .set SDCard_BSPIM_TxStsReg__1__MASK, 0x02 .set SDCard_BSPIM_TxStsReg__1__POS, 1 .set SDCard_BSPIM_TxStsReg__2__MASK, 0x04 @@ -641,26 +681,30 @@ .set SDCard_BSPIM_TxStsReg__4__MASK, 0x10 .set SDCard_BSPIM_TxStsReg__4__POS, 4 .set SDCard_BSPIM_TxStsReg__MASK, 0x1F -.set SDCard_BSPIM_TxStsReg__MASK_REG, CYREG_B0_UDB04_MSK -.set SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG, CYREG_B0_UDB04_ACTL -.set SDCard_BSPIM_TxStsReg__STATUS_REG, CYREG_B0_UDB04_ST -.set SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG, CYREG_B0_UDB06_07_A0 -.set SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG, CYREG_B0_UDB06_07_A1 -.set SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG, CYREG_B0_UDB06_07_D0 -.set SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG, CYREG_B0_UDB06_07_D1 -.set SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG, CYREG_B0_UDB06_07_ACTL -.set SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG, CYREG_B0_UDB06_07_F0 -.set SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG, CYREG_B0_UDB06_07_F1 -.set SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG, CYREG_B0_UDB06_A0_A1 -.set SDCard_BSPIM_sR8_Dp_u0__A0_REG, CYREG_B0_UDB06_A0 -.set SDCard_BSPIM_sR8_Dp_u0__A1_REG, CYREG_B0_UDB06_A1 -.set SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG, CYREG_B0_UDB06_D0_D1 -.set SDCard_BSPIM_sR8_Dp_u0__D0_REG, CYREG_B0_UDB06_D0 -.set SDCard_BSPIM_sR8_Dp_u0__D1_REG, CYREG_B0_UDB06_D1 -.set SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG, CYREG_B0_UDB06_ACTL -.set SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG, CYREG_B0_UDB06_F0_F1 -.set SDCard_BSPIM_sR8_Dp_u0__F0_REG, CYREG_B0_UDB06_F0 -.set SDCard_BSPIM_sR8_Dp_u0__F1_REG, CYREG_B0_UDB06_F1 +.set SDCard_BSPIM_TxStsReg__MASK_REG, CYREG_B1_UDB07_MSK +.set SDCard_BSPIM_TxStsReg__MASK_ST_AUX_CTL_REG, CYREG_B1_UDB07_MSK_ACTL +.set SDCard_BSPIM_TxStsReg__PER_ST_AUX_CTL_REG, CYREG_B1_UDB07_MSK_ACTL +.set SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG, CYREG_B1_UDB07_ACTL +.set SDCard_BSPIM_TxStsReg__STATUS_CNT_REG, CYREG_B1_UDB07_ST_CTL +.set SDCard_BSPIM_TxStsReg__STATUS_CONTROL_REG, CYREG_B1_UDB07_ST_CTL +.set SDCard_BSPIM_TxStsReg__STATUS_REG, CYREG_B1_UDB07_ST +.set SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG, CYREG_B0_UDB04_05_A0 +.set SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG, CYREG_B0_UDB04_05_A1 +.set SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG, CYREG_B0_UDB04_05_D0 +.set SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG, CYREG_B0_UDB04_05_D1 +.set SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG, CYREG_B0_UDB04_05_ACTL +.set SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG, CYREG_B0_UDB04_05_F0 +.set SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG, CYREG_B0_UDB04_05_F1 +.set SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG, CYREG_B0_UDB04_A0_A1 +.set SDCard_BSPIM_sR8_Dp_u0__A0_REG, CYREG_B0_UDB04_A0 +.set SDCard_BSPIM_sR8_Dp_u0__A1_REG, CYREG_B0_UDB04_A1 +.set SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG, CYREG_B0_UDB04_D0_D1 +.set SDCard_BSPIM_sR8_Dp_u0__D0_REG, CYREG_B0_UDB04_D0 +.set SDCard_BSPIM_sR8_Dp_u0__D1_REG, CYREG_B0_UDB04_D1 +.set SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG, CYREG_B0_UDB04_ACTL +.set SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG, CYREG_B0_UDB04_F0_F1 +.set SDCard_BSPIM_sR8_Dp_u0__F0_REG, CYREG_B0_UDB04_F0 +.set SDCard_BSPIM_sR8_Dp_u0__F1_REG, CYREG_B0_UDB04_F1 /* USBFS_dp_int */ .set USBFS_dp_int__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 @@ -1104,6 +1148,30 @@ .set SCSI_In_DBx__DB7__SHIFT, 1 .set SCSI_In_DBx__DB7__SLW, CYREG_PRT2_SLW +/* SCSI_RX_DMA */ +.set SCSI_RX_DMA__DRQ_CTL, CYREG_IDMUX_DRQ_CTL0 +.set SCSI_RX_DMA__DRQ_NUMBER, 0 +.set SCSI_RX_DMA__NUMBEROF_TDS, 0 +.set SCSI_RX_DMA__PRIORITY, 2 +.set SCSI_RX_DMA__TERMIN_EN, 0 +.set SCSI_RX_DMA__TERMIN_SEL, 0 +.set SCSI_RX_DMA__TERMOUT0_EN, 1 +.set SCSI_RX_DMA__TERMOUT0_SEL, 0 +.set SCSI_RX_DMA__TERMOUT1_EN, 0 +.set SCSI_RX_DMA__TERMOUT1_SEL, 0 + +/* SCSI_TX_DMA */ +.set SCSI_TX_DMA__DRQ_CTL, CYREG_IDMUX_DRQ_CTL0 +.set SCSI_TX_DMA__DRQ_NUMBER, 1 +.set SCSI_TX_DMA__NUMBEROF_TDS, 0 +.set SCSI_TX_DMA__PRIORITY, 2 +.set SCSI_TX_DMA__TERMIN_EN, 0 +.set SCSI_TX_DMA__TERMIN_SEL, 0 +.set SCSI_TX_DMA__TERMOUT0_EN, 1 +.set SCSI_TX_DMA__TERMOUT0_SEL, 1 +.set SCSI_TX_DMA__TERMOUT1_EN, 0 +.set SCSI_TX_DMA__TERMOUT1_SEL, 0 + /* SD_Data_Clk */ .set SD_Data_Clk__CFG0, CYREG_CLKDIST_DCFG0_CFG0 .set SD_Data_Clk__CFG1, CYREG_CLKDIST_DCFG0_CFG1 @@ -1140,85 +1208,68 @@ /* scsiTarget */ .set scsiTarget_StatusReg__0__MASK, 0x01 .set scsiTarget_StatusReg__0__POS, 0 -.set scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG, CYREG_B0_UDB13_14_ACTL -.set scsiTarget_StatusReg__16BIT_STATUS_REG, CYREG_B0_UDB13_14_ST +.set scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG, CYREG_B0_UDB04_05_ACTL +.set scsiTarget_StatusReg__16BIT_STATUS_REG, CYREG_B0_UDB04_05_ST .set scsiTarget_StatusReg__1__MASK, 0x02 .set scsiTarget_StatusReg__1__POS, 1 .set scsiTarget_StatusReg__2__MASK, 0x04 .set scsiTarget_StatusReg__2__POS, 2 .set scsiTarget_StatusReg__3__MASK, 0x08 .set scsiTarget_StatusReg__3__POS, 3 -.set scsiTarget_StatusReg__MASK, 0x0F -.set scsiTarget_StatusReg__MASK_REG, CYREG_B0_UDB13_MSK -.set scsiTarget_StatusReg__STATUS_AUX_CTL_REG, CYREG_B0_UDB13_ACTL -.set scsiTarget_StatusReg__STATUS_REG, CYREG_B0_UDB13_ST -.set scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG, CYREG_B0_UDB12_13_ACTL -.set scsiTarget_datapath_PI__16BIT_STATUS_REG, CYREG_B0_UDB12_13_ST -.set scsiTarget_datapath_PI__MASK_REG, CYREG_B0_UDB12_MSK -.set scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL -.set scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL -.set scsiTarget_datapath_PI__STATUS_AUX_CTL_REG, CYREG_B0_UDB12_ACTL -.set scsiTarget_datapath_PI__STATUS_CNT_REG, CYREG_B0_UDB12_ST_CTL -.set scsiTarget_datapath_PI__STATUS_CONTROL_REG, CYREG_B0_UDB12_ST_CTL -.set scsiTarget_datapath_PI__STATUS_REG, CYREG_B0_UDB12_ST -.set scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB12_13_ACTL -.set scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB12_13_CTL -.set scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB12_13_CTL -.set scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB12_13_CTL -.set scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB12_13_CTL -.set scsiTarget_datapath_PO__16BIT_MASK_MASK_REG, CYREG_B0_UDB12_13_MSK -.set scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB12_13_MSK -.set scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB12_13_MSK -.set scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB12_13_MSK -.set scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG, CYREG_B0_UDB12_ACTL -.set scsiTarget_datapath_PO__CONTROL_REG, CYREG_B0_UDB12_CTL -.set scsiTarget_datapath_PO__CONTROL_ST_REG, CYREG_B0_UDB12_ST_CTL -.set scsiTarget_datapath_PO__COUNT_REG, CYREG_B0_UDB12_CTL -.set scsiTarget_datapath_PO__COUNT_ST_REG, CYREG_B0_UDB12_ST_CTL -.set scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL -.set scsiTarget_datapath_PO__PERIOD_REG, CYREG_B0_UDB12_MSK -.set scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL -.set scsiTarget_datapath__16BIT_A0_REG, CYREG_B0_UDB12_13_A0 -.set scsiTarget_datapath__16BIT_A1_REG, CYREG_B0_UDB12_13_A1 -.set scsiTarget_datapath__16BIT_D0_REG, CYREG_B0_UDB12_13_D0 -.set scsiTarget_datapath__16BIT_D1_REG, CYREG_B0_UDB12_13_D1 -.set scsiTarget_datapath__16BIT_DP_AUX_CTL_REG, CYREG_B0_UDB12_13_ACTL -.set scsiTarget_datapath__16BIT_F0_REG, CYREG_B0_UDB12_13_F0 -.set scsiTarget_datapath__16BIT_F1_REG, CYREG_B0_UDB12_13_F1 -.set scsiTarget_datapath__A0_A1_REG, CYREG_B0_UDB12_A0_A1 -.set scsiTarget_datapath__A0_REG, CYREG_B0_UDB12_A0 -.set scsiTarget_datapath__A1_REG, CYREG_B0_UDB12_A1 -.set scsiTarget_datapath__D0_D1_REG, CYREG_B0_UDB12_D0_D1 -.set scsiTarget_datapath__D0_REG, CYREG_B0_UDB12_D0 -.set scsiTarget_datapath__D1_REG, CYREG_B0_UDB12_D1 -.set scsiTarget_datapath__DP_AUX_CTL_REG, CYREG_B0_UDB12_ACTL -.set scsiTarget_datapath__F0_F1_REG, CYREG_B0_UDB12_F0_F1 -.set scsiTarget_datapath__F0_REG, CYREG_B0_UDB12_F0 -.set scsiTarget_datapath__F1_REG, CYREG_B0_UDB12_F1 -.set scsiTarget_datapath__MSK_DP_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL -.set scsiTarget_datapath__PER_DP_AUX_CTL_REG, CYREG_B0_UDB12_MSK_ACTL +.set scsiTarget_StatusReg__4__MASK, 0x10 +.set scsiTarget_StatusReg__4__POS, 4 +.set scsiTarget_StatusReg__MASK, 0x1F +.set scsiTarget_StatusReg__MASK_REG, CYREG_B0_UDB04_MSK +.set scsiTarget_StatusReg__STATUS_AUX_CTL_REG, CYREG_B0_UDB04_ACTL +.set scsiTarget_StatusReg__STATUS_REG, CYREG_B0_UDB04_ST +.set scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG, CYREG_B0_UDB03_04_ACTL +.set scsiTarget_datapath_PI__16BIT_STATUS_REG, CYREG_B0_UDB03_04_ST +.set scsiTarget_datapath_PI__MASK_REG, CYREG_B0_UDB03_MSK +.set scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL +.set scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL +.set scsiTarget_datapath_PI__STATUS_AUX_CTL_REG, CYREG_B0_UDB03_ACTL +.set scsiTarget_datapath_PI__STATUS_CNT_REG, CYREG_B0_UDB03_ST_CTL +.set scsiTarget_datapath_PI__STATUS_CONTROL_REG, CYREG_B0_UDB03_ST_CTL +.set scsiTarget_datapath_PI__STATUS_REG, CYREG_B0_UDB03_ST +.set scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB03_04_ACTL +.set scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB03_04_CTL +.set scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB03_04_CTL +.set scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB03_04_CTL +.set scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB03_04_CTL +.set scsiTarget_datapath_PO__16BIT_MASK_MASK_REG, CYREG_B0_UDB03_04_MSK +.set scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB03_04_MSK +.set scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB03_04_MSK +.set scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB03_04_MSK +.set scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG, CYREG_B0_UDB03_ACTL +.set scsiTarget_datapath_PO__CONTROL_REG, CYREG_B0_UDB03_CTL +.set scsiTarget_datapath_PO__CONTROL_ST_REG, CYREG_B0_UDB03_ST_CTL +.set scsiTarget_datapath_PO__COUNT_REG, CYREG_B0_UDB03_CTL +.set scsiTarget_datapath_PO__COUNT_ST_REG, CYREG_B0_UDB03_ST_CTL +.set scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL +.set scsiTarget_datapath_PO__PERIOD_REG, CYREG_B0_UDB03_MSK +.set scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL +.set scsiTarget_datapath__16BIT_A0_REG, CYREG_B0_UDB03_04_A0 +.set scsiTarget_datapath__16BIT_A1_REG, CYREG_B0_UDB03_04_A1 +.set scsiTarget_datapath__16BIT_D0_REG, CYREG_B0_UDB03_04_D0 +.set scsiTarget_datapath__16BIT_D1_REG, CYREG_B0_UDB03_04_D1 +.set scsiTarget_datapath__16BIT_DP_AUX_CTL_REG, CYREG_B0_UDB03_04_ACTL +.set scsiTarget_datapath__16BIT_F0_REG, CYREG_B0_UDB03_04_F0 +.set scsiTarget_datapath__16BIT_F1_REG, CYREG_B0_UDB03_04_F1 +.set scsiTarget_datapath__A0_A1_REG, CYREG_B0_UDB03_A0_A1 +.set scsiTarget_datapath__A0_REG, CYREG_B0_UDB03_A0 +.set scsiTarget_datapath__A1_REG, CYREG_B0_UDB03_A1 +.set scsiTarget_datapath__D0_D1_REG, CYREG_B0_UDB03_D0_D1 +.set scsiTarget_datapath__D0_REG, CYREG_B0_UDB03_D0 +.set scsiTarget_datapath__D1_REG, CYREG_B0_UDB03_D1 +.set scsiTarget_datapath__DP_AUX_CTL_REG, CYREG_B0_UDB03_ACTL +.set scsiTarget_datapath__F0_F1_REG, CYREG_B0_UDB03_F0_F1 +.set scsiTarget_datapath__F0_REG, CYREG_B0_UDB03_F0 +.set scsiTarget_datapath__F1_REG, CYREG_B0_UDB03_F1 +.set scsiTarget_datapath__MSK_DP_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL +.set scsiTarget_datapath__PER_DP_AUX_CTL_REG, CYREG_B0_UDB03_MSK_ACTL /* SD_Clk_Ctl */ -.set SD_Clk_Ctl_Sync_ctrl_reg__0__MASK, 0x01 -.set SD_Clk_Ctl_Sync_ctrl_reg__0__POS, 0 -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG, CYREG_B0_UDB02_03_ACTL -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG, CYREG_B0_UDB02_03_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG, CYREG_B0_UDB02_03_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG, CYREG_B0_UDB02_03_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG, CYREG_B0_UDB02_03_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG, CYREG_B0_UDB02_03_MSK -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG, CYREG_B0_UDB02_03_MSK -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG, CYREG_B0_UDB02_03_MSK -.set SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG, CYREG_B0_UDB02_03_MSK -.set SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG, CYREG_B0_UDB02_ACTL -.set SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_REG, CYREG_B0_UDB02_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_ST_REG, CYREG_B0_UDB02_ST_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__COUNT_REG, CYREG_B0_UDB02_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__COUNT_ST_REG, CYREG_B0_UDB02_ST_CTL -.set SD_Clk_Ctl_Sync_ctrl_reg__MASK, 0x01 -.set SD_Clk_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG, CYREG_B0_UDB02_MSK_ACTL -.set SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG, CYREG_B0_UDB02_MSK -.set SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG, CYREG_B0_UDB02_MSK_ACTL +.set SD_Clk_Ctl_Sync_ctrl_reg__REMOVED, 1 /* USBFS_ep_0 */ .set USBFS_ep_0__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 @@ -1233,43 +1284,67 @@ /* USBFS_ep_1 */ .set USBFS_ep_1__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 .set USBFS_ep_1__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 -.set USBFS_ep_1__INTC_MASK, 0x02 -.set USBFS_ep_1__INTC_NUMBER, 1 +.set USBFS_ep_1__INTC_MASK, 0x20 +.set USBFS_ep_1__INTC_NUMBER, 5 .set USBFS_ep_1__INTC_PRIOR_NUM, 7 -.set USBFS_ep_1__INTC_PRIOR_REG, CYREG_NVIC_PRI_1 +.set USBFS_ep_1__INTC_PRIOR_REG, CYREG_NVIC_PRI_5 .set USBFS_ep_1__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 .set USBFS_ep_1__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 /* USBFS_ep_2 */ .set USBFS_ep_2__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 .set USBFS_ep_2__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 -.set USBFS_ep_2__INTC_MASK, 0x04 -.set USBFS_ep_2__INTC_NUMBER, 2 +.set USBFS_ep_2__INTC_MASK, 0x40 +.set USBFS_ep_2__INTC_NUMBER, 6 .set USBFS_ep_2__INTC_PRIOR_NUM, 7 -.set USBFS_ep_2__INTC_PRIOR_REG, CYREG_NVIC_PRI_2 +.set USBFS_ep_2__INTC_PRIOR_REG, CYREG_NVIC_PRI_6 .set USBFS_ep_2__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 .set USBFS_ep_2__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 /* USBFS_ep_3 */ .set USBFS_ep_3__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 .set USBFS_ep_3__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 -.set USBFS_ep_3__INTC_MASK, 0x08 -.set USBFS_ep_3__INTC_NUMBER, 3 +.set USBFS_ep_3__INTC_MASK, 0x80 +.set USBFS_ep_3__INTC_NUMBER, 7 .set USBFS_ep_3__INTC_PRIOR_NUM, 7 -.set USBFS_ep_3__INTC_PRIOR_REG, CYREG_NVIC_PRI_3 +.set USBFS_ep_3__INTC_PRIOR_REG, CYREG_NVIC_PRI_7 .set USBFS_ep_3__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 .set USBFS_ep_3__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 /* USBFS_ep_4 */ .set USBFS_ep_4__INTC_CLR_EN_REG, CYREG_NVIC_CLRENA0 .set USBFS_ep_4__INTC_CLR_PD_REG, CYREG_NVIC_CLRPEND0 -.set USBFS_ep_4__INTC_MASK, 0x10 -.set USBFS_ep_4__INTC_NUMBER, 4 +.set USBFS_ep_4__INTC_MASK, 0x100 +.set USBFS_ep_4__INTC_NUMBER, 8 .set USBFS_ep_4__INTC_PRIOR_NUM, 7 -.set USBFS_ep_4__INTC_PRIOR_REG, CYREG_NVIC_PRI_4 +.set USBFS_ep_4__INTC_PRIOR_REG, CYREG_NVIC_PRI_8 .set USBFS_ep_4__INTC_SET_EN_REG, CYREG_NVIC_SETENA0 .set USBFS_ep_4__INTC_SET_PD_REG, CYREG_NVIC_SETPEND0 +/* SD_RX_DMA */ +.set SD_RX_DMA__DRQ_CTL, CYREG_IDMUX_DRQ_CTL0 +.set SD_RX_DMA__DRQ_NUMBER, 2 +.set SD_RX_DMA__NUMBEROF_TDS, 0 +.set SD_RX_DMA__PRIORITY, 1 +.set SD_RX_DMA__TERMIN_EN, 0 +.set SD_RX_DMA__TERMIN_SEL, 0 +.set SD_RX_DMA__TERMOUT0_EN, 1 +.set SD_RX_DMA__TERMOUT0_SEL, 2 +.set SD_RX_DMA__TERMOUT1_EN, 0 +.set SD_RX_DMA__TERMOUT1_SEL, 0 + +/* SD_TX_DMA */ +.set SD_TX_DMA__DRQ_CTL, CYREG_IDMUX_DRQ_CTL0 +.set SD_TX_DMA__DRQ_NUMBER, 3 +.set SD_TX_DMA__NUMBEROF_TDS, 0 +.set SD_TX_DMA__PRIORITY, 2 +.set SD_TX_DMA__TERMIN_EN, 0 +.set SD_TX_DMA__TERMIN_SEL, 0 +.set SD_TX_DMA__TERMOUT0_EN, 1 +.set SD_TX_DMA__TERMOUT0_SEL, 3 +.set SD_TX_DMA__TERMOUT1_EN, 0 +.set SD_TX_DMA__TERMOUT1_SEL, 0 + /* USBFS_USB */ .set USBFS_USB__ARB_CFG, CYREG_USB_ARB_CFG .set USBFS_USB__ARB_EP1_CFG, CYREG_USB_ARB_EP1_CFG @@ -2789,9 +2864,9 @@ .set CYDEV_CHIP_FAMILY_PSOC5, 3 .set CYDEV_CHIP_DIE_PSOC5LP, 4 .set CYDEV_CHIP_DIE_EXPECT, CYDEV_CHIP_DIE_PSOC5LP -.set BCLK__BUS_CLK__HZ, 60000000 -.set BCLK__BUS_CLK__KHZ, 60000 -.set BCLK__BUS_CLK__MHZ, 60 +.set BCLK__BUS_CLK__HZ, 50000000 +.set BCLK__BUS_CLK__KHZ, 50000 +.set BCLK__BUS_CLK__MHZ, 50 .set CYDEV_CHIP_DIE_ACTUAL, CYDEV_CHIP_DIE_EXPECT .set CYDEV_CHIP_DIE_LEOPARD, 1 .set CYDEV_CHIP_DIE_PANTHER, 3 @@ -2852,7 +2927,7 @@ .set CYDEV_ECC_ENABLE, 0 .set CYDEV_HEAP_SIZE, 0x0400 .set CYDEV_INSTRUCT_CACHE_ENABLED, 1 -.set CYDEV_INTR_RISING, 0x00000001 +.set CYDEV_INTR_RISING, 0x0000001E .set CYDEV_PROJ_TYPE, 2 .set CYDEV_PROJ_TYPE_BOOTLOADER, 1 .set CYDEV_PROJ_TYPE_LOADABLE, 2 @@ -2876,6 +2951,6 @@ .set CYDEV_VIO2, 5 .set CYDEV_VIO2_MV, 5000 .set CYDEV_VIO3_MV, 3300 -.set DMA_CHANNELS_USED__MASK0, 0x00000000 +.set DMA_CHANNELS_USED__MASK0, 0x0000000F .set CYDEV_BOOTLOADER_ENABLE, 0 .endif diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitteriar.inc b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitteriar.inc old mode 100755 new mode 100644 index 93e3430..b9e9e28 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitteriar.inc +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitteriar.inc @@ -6,13 +6,33 @@ /* Debug_Timer_Interrupt */ Debug_Timer_Interrupt__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 Debug_Timer_Interrupt__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -Debug_Timer_Interrupt__INTC_MASK EQU 0x01 -Debug_Timer_Interrupt__INTC_NUMBER EQU 0 +Debug_Timer_Interrupt__INTC_MASK EQU 0x02 +Debug_Timer_Interrupt__INTC_NUMBER EQU 1 Debug_Timer_Interrupt__INTC_PRIOR_NUM EQU 7 -Debug_Timer_Interrupt__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0 +Debug_Timer_Interrupt__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_1 Debug_Timer_Interrupt__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 Debug_Timer_Interrupt__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 +/* SCSI_RX_DMA_COMPLETE */ +SCSI_RX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SCSI_RX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SCSI_RX_DMA_COMPLETE__INTC_MASK EQU 0x01 +SCSI_RX_DMA_COMPLETE__INTC_NUMBER EQU 0 +SCSI_RX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SCSI_RX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0 +SCSI_RX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SCSI_RX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + +/* SCSI_TX_DMA_COMPLETE */ +SCSI_TX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SCSI_TX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SCSI_TX_DMA_COMPLETE__INTC_MASK EQU 0x04 +SCSI_TX_DMA_COMPLETE__INTC_NUMBER EQU 2 +SCSI_TX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SCSI_TX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_2 +SCSI_TX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SCSI_TX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + /* Debug_Timer_TimerHW */ Debug_Timer_TimerHW__CAP0 EQU CYREG_TMR0_CAP0 Debug_Timer_TimerHW__CAP1 EQU CYREG_TMR0_CAP1 @@ -31,6 +51,26 @@ Debug_Timer_TimerHW__RT0 EQU CYREG_TMR0_RT0 Debug_Timer_TimerHW__RT1 EQU CYREG_TMR0_RT1 Debug_Timer_TimerHW__SR0 EQU CYREG_TMR0_SR0 +/* SD_RX_DMA_COMPLETE */ +SD_RX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SD_RX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SD_RX_DMA_COMPLETE__INTC_MASK EQU 0x08 +SD_RX_DMA_COMPLETE__INTC_NUMBER EQU 3 +SD_RX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SD_RX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_3 +SD_RX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SD_RX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + +/* SD_TX_DMA_COMPLETE */ +SD_TX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SD_TX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SD_TX_DMA_COMPLETE__INTC_MASK EQU 0x10 +SD_TX_DMA_COMPLETE__INTC_NUMBER EQU 4 +SD_TX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SD_TX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_4 +SD_TX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SD_TX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + /* USBFS_bus_reset */ USBFS_bus_reset__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_bus_reset__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 @@ -44,41 +84,41 @@ USBFS_bus_reset__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 /* SCSI_CTL_PHASE */ SCSI_CTL_PHASE_Sync_ctrl_reg__0__MASK EQU 0x01 SCSI_CTL_PHASE_Sync_ctrl_reg__0__POS EQU 0 -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB05_06_ACTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB05_06_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB05_06_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB05_06_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB05_06_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_03_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB02_03_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB02_03_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK SCSI_CTL_PHASE_Sync_ctrl_reg__1__MASK EQU 0x02 SCSI_CTL_PHASE_Sync_ctrl_reg__1__POS EQU 1 SCSI_CTL_PHASE_Sync_ctrl_reg__2__MASK EQU 0x04 SCSI_CTL_PHASE_Sync_ctrl_reg__2__POS EQU 2 -SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB05_ACTL -SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB05_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB05_ST_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB05_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB05_ST_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB02_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB02_ST_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB02_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB02_ST_CTL SCSI_CTL_PHASE_Sync_ctrl_reg__MASK EQU 0x07 -SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB05_MSK_ACTL -SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB05_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB05_MSK_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB02_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL /* SCSI_Out_Bits */ SCSI_Out_Bits_Sync_ctrl_reg__0__MASK EQU 0x01 SCSI_Out_Bits_Sync_ctrl_reg__0__POS EQU 0 -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB00_01_ACTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB00_01_MSK -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB00_01_MSK -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB00_01_MSK -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB00_01_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB12_13_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB12_13_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK SCSI_Out_Bits_Sync_ctrl_reg__1__MASK EQU 0x02 SCSI_Out_Bits_Sync_ctrl_reg__1__POS EQU 1 SCSI_Out_Bits_Sync_ctrl_reg__2__MASK EQU 0x04 @@ -93,15 +133,15 @@ SCSI_Out_Bits_Sync_ctrl_reg__6__MASK EQU 0x40 SCSI_Out_Bits_Sync_ctrl_reg__6__POS EQU 6 SCSI_Out_Bits_Sync_ctrl_reg__7__MASK EQU 0x80 SCSI_Out_Bits_Sync_ctrl_reg__7__POS EQU 7 -SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB00_ACTL -SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB00_CTL -SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB00_ST_CTL -SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB00_CTL -SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB00_ST_CTL +SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB12_CTL +SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB12_ST_CTL +SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB12_CTL +SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB12_ST_CTL SCSI_Out_Bits_Sync_ctrl_reg__MASK EQU 0xFF -SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB00_MSK_ACTL -SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB00_MSK -SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB00_MSK_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB12_MSK +SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL /* USBFS_arb_int */ USBFS_arb_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 @@ -126,24 +166,24 @@ USBFS_sof_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 /* SCSI_Out_Ctl */ SCSI_Out_Ctl_Sync_ctrl_reg__0__MASK EQU 0x01 SCSI_Out_Ctl_Sync_ctrl_reg__0__POS EQU 0 -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL -SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB03_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB03_ST_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB03_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB03_ST_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B1_UDB07_08_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B1_UDB07_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B1_UDB07_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B1_UDB07_ST_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG EQU CYREG_B1_UDB07_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B1_UDB07_ST_CTL SCSI_Out_Ctl_Sync_ctrl_reg__MASK EQU 0x01 -SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL -SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB03_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B1_UDB07_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL /* SCSI_Out_DBx */ SCSI_Out_DBx__0__AG EQU CYREG_PRT6_AG @@ -616,8 +656,8 @@ SDCard_BSPIM_BitCounter__COUNT_ST_REG EQU CYREG_B1_UDB06_ST_CTL SDCard_BSPIM_BitCounter__MASK_CTL_AUX_CTL_REG EQU CYREG_B1_UDB06_MSK_ACTL SDCard_BSPIM_BitCounter__PERIOD_REG EQU CYREG_B1_UDB06_MSK SDCard_BSPIM_BitCounter__PER_CTL_AUX_CTL_REG EQU CYREG_B1_UDB06_MSK_ACTL -SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB06_07_ACTL -SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG EQU CYREG_B0_UDB06_07_ST +SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB07_08_ACTL +SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG EQU CYREG_B0_UDB07_08_ST SDCard_BSPIM_RxStsReg__4__MASK EQU 0x10 SDCard_BSPIM_RxStsReg__4__POS EQU 4 SDCard_BSPIM_RxStsReg__5__MASK EQU 0x20 @@ -625,13 +665,13 @@ SDCard_BSPIM_RxStsReg__5__POS EQU 5 SDCard_BSPIM_RxStsReg__6__MASK EQU 0x40 SDCard_BSPIM_RxStsReg__6__POS EQU 6 SDCard_BSPIM_RxStsReg__MASK EQU 0x70 -SDCard_BSPIM_RxStsReg__MASK_REG EQU CYREG_B0_UDB06_MSK -SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB06_ACTL -SDCard_BSPIM_RxStsReg__STATUS_REG EQU CYREG_B0_UDB06_ST +SDCard_BSPIM_RxStsReg__MASK_REG EQU CYREG_B0_UDB07_MSK +SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB07_ACTL +SDCard_BSPIM_RxStsReg__STATUS_REG EQU CYREG_B0_UDB07_ST SDCard_BSPIM_TxStsReg__0__MASK EQU 0x01 SDCard_BSPIM_TxStsReg__0__POS EQU 0 -SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_05_ACTL -SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG EQU CYREG_B0_UDB04_05_ST +SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B1_UDB07_08_ACTL +SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG EQU CYREG_B1_UDB07_08_ST SDCard_BSPIM_TxStsReg__1__MASK EQU 0x02 SDCard_BSPIM_TxStsReg__1__POS EQU 1 SDCard_BSPIM_TxStsReg__2__MASK EQU 0x04 @@ -641,26 +681,30 @@ SDCard_BSPIM_TxStsReg__3__POS EQU 3 SDCard_BSPIM_TxStsReg__4__MASK EQU 0x10 SDCard_BSPIM_TxStsReg__4__POS EQU 4 SDCard_BSPIM_TxStsReg__MASK EQU 0x1F -SDCard_BSPIM_TxStsReg__MASK_REG EQU CYREG_B0_UDB04_MSK -SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_ACTL -SDCard_BSPIM_TxStsReg__STATUS_REG EQU CYREG_B0_UDB04_ST -SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG EQU CYREG_B0_UDB06_07_A0 -SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG EQU CYREG_B0_UDB06_07_A1 -SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG EQU CYREG_B0_UDB06_07_D0 -SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG EQU CYREG_B0_UDB06_07_D1 -SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB06_07_ACTL -SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG EQU CYREG_B0_UDB06_07_F0 -SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG EQU CYREG_B0_UDB06_07_F1 -SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG EQU CYREG_B0_UDB06_A0_A1 -SDCard_BSPIM_sR8_Dp_u0__A0_REG EQU CYREG_B0_UDB06_A0 -SDCard_BSPIM_sR8_Dp_u0__A1_REG EQU CYREG_B0_UDB06_A1 -SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG EQU CYREG_B0_UDB06_D0_D1 -SDCard_BSPIM_sR8_Dp_u0__D0_REG EQU CYREG_B0_UDB06_D0 -SDCard_BSPIM_sR8_Dp_u0__D1_REG EQU CYREG_B0_UDB06_D1 -SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG EQU CYREG_B0_UDB06_ACTL -SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG EQU CYREG_B0_UDB06_F0_F1 -SDCard_BSPIM_sR8_Dp_u0__F0_REG EQU CYREG_B0_UDB06_F0 -SDCard_BSPIM_sR8_Dp_u0__F1_REG EQU CYREG_B0_UDB06_F1 +SDCard_BSPIM_TxStsReg__MASK_REG EQU CYREG_B1_UDB07_MSK +SDCard_BSPIM_TxStsReg__MASK_ST_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL +SDCard_BSPIM_TxStsReg__PER_ST_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL +SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B1_UDB07_ACTL +SDCard_BSPIM_TxStsReg__STATUS_CNT_REG EQU CYREG_B1_UDB07_ST_CTL +SDCard_BSPIM_TxStsReg__STATUS_CONTROL_REG EQU CYREG_B1_UDB07_ST_CTL +SDCard_BSPIM_TxStsReg__STATUS_REG EQU CYREG_B1_UDB07_ST +SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG EQU CYREG_B0_UDB04_05_A0 +SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG EQU CYREG_B0_UDB04_05_A1 +SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG EQU CYREG_B0_UDB04_05_D0 +SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG EQU CYREG_B0_UDB04_05_D1 +SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB04_05_ACTL +SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG EQU CYREG_B0_UDB04_05_F0 +SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG EQU CYREG_B0_UDB04_05_F1 +SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG EQU CYREG_B0_UDB04_A0_A1 +SDCard_BSPIM_sR8_Dp_u0__A0_REG EQU CYREG_B0_UDB04_A0 +SDCard_BSPIM_sR8_Dp_u0__A1_REG EQU CYREG_B0_UDB04_A1 +SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG EQU CYREG_B0_UDB04_D0_D1 +SDCard_BSPIM_sR8_Dp_u0__D0_REG EQU CYREG_B0_UDB04_D0 +SDCard_BSPIM_sR8_Dp_u0__D1_REG EQU CYREG_B0_UDB04_D1 +SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG EQU CYREG_B0_UDB04_ACTL +SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG EQU CYREG_B0_UDB04_F0_F1 +SDCard_BSPIM_sR8_Dp_u0__F0_REG EQU CYREG_B0_UDB04_F0 +SDCard_BSPIM_sR8_Dp_u0__F1_REG EQU CYREG_B0_UDB04_F1 /* USBFS_dp_int */ USBFS_dp_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 @@ -1104,6 +1148,30 @@ SCSI_In_DBx__DB7__PS EQU CYREG_PRT2_PS SCSI_In_DBx__DB7__SHIFT EQU 1 SCSI_In_DBx__DB7__SLW EQU CYREG_PRT2_SLW +/* SCSI_RX_DMA */ +SCSI_RX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SCSI_RX_DMA__DRQ_NUMBER EQU 0 +SCSI_RX_DMA__NUMBEROF_TDS EQU 0 +SCSI_RX_DMA__PRIORITY EQU 2 +SCSI_RX_DMA__TERMIN_EN EQU 0 +SCSI_RX_DMA__TERMIN_SEL EQU 0 +SCSI_RX_DMA__TERMOUT0_EN EQU 1 +SCSI_RX_DMA__TERMOUT0_SEL EQU 0 +SCSI_RX_DMA__TERMOUT1_EN EQU 0 +SCSI_RX_DMA__TERMOUT1_SEL EQU 0 + +/* SCSI_TX_DMA */ +SCSI_TX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SCSI_TX_DMA__DRQ_NUMBER EQU 1 +SCSI_TX_DMA__NUMBEROF_TDS EQU 0 +SCSI_TX_DMA__PRIORITY EQU 2 +SCSI_TX_DMA__TERMIN_EN EQU 0 +SCSI_TX_DMA__TERMIN_SEL EQU 0 +SCSI_TX_DMA__TERMOUT0_EN EQU 1 +SCSI_TX_DMA__TERMOUT0_SEL EQU 1 +SCSI_TX_DMA__TERMOUT1_EN EQU 0 +SCSI_TX_DMA__TERMOUT1_SEL EQU 0 + /* SD_Data_Clk */ SD_Data_Clk__CFG0 EQU CYREG_CLKDIST_DCFG0_CFG0 SD_Data_Clk__CFG1 EQU CYREG_CLKDIST_DCFG0_CFG1 @@ -1140,85 +1208,68 @@ timer_clock__PM_STBY_MSK EQU 0x04 /* scsiTarget */ scsiTarget_StatusReg__0__MASK EQU 0x01 scsiTarget_StatusReg__0__POS EQU 0 -scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB13_14_ACTL -scsiTarget_StatusReg__16BIT_STATUS_REG EQU CYREG_B0_UDB13_14_ST +scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_05_ACTL +scsiTarget_StatusReg__16BIT_STATUS_REG EQU CYREG_B0_UDB04_05_ST scsiTarget_StatusReg__1__MASK EQU 0x02 scsiTarget_StatusReg__1__POS EQU 1 scsiTarget_StatusReg__2__MASK EQU 0x04 scsiTarget_StatusReg__2__POS EQU 2 scsiTarget_StatusReg__3__MASK EQU 0x08 scsiTarget_StatusReg__3__POS EQU 3 -scsiTarget_StatusReg__MASK EQU 0x0F -scsiTarget_StatusReg__MASK_REG EQU CYREG_B0_UDB13_MSK -scsiTarget_StatusReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB13_ACTL -scsiTarget_StatusReg__STATUS_REG EQU CYREG_B0_UDB13_ST -scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL -scsiTarget_datapath_PI__16BIT_STATUS_REG EQU CYREG_B0_UDB12_13_ST -scsiTarget_datapath_PI__MASK_REG EQU CYREG_B0_UDB12_MSK -scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath_PI__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL -scsiTarget_datapath_PI__STATUS_CNT_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PI__STATUS_CONTROL_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PI__STATUS_REG EQU CYREG_B0_UDB12_ST -scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL -scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL -scsiTarget_datapath_PO__CONTROL_REG EQU CYREG_B0_UDB12_CTL -scsiTarget_datapath_PO__CONTROL_ST_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PO__COUNT_REG EQU CYREG_B0_UDB12_CTL -scsiTarget_datapath_PO__COUNT_ST_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath_PO__PERIOD_REG EQU CYREG_B0_UDB12_MSK -scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath__16BIT_A0_REG EQU CYREG_B0_UDB12_13_A0 -scsiTarget_datapath__16BIT_A1_REG EQU CYREG_B0_UDB12_13_A1 -scsiTarget_datapath__16BIT_D0_REG EQU CYREG_B0_UDB12_13_D0 -scsiTarget_datapath__16BIT_D1_REG EQU CYREG_B0_UDB12_13_D1 -scsiTarget_datapath__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL -scsiTarget_datapath__16BIT_F0_REG EQU CYREG_B0_UDB12_13_F0 -scsiTarget_datapath__16BIT_F1_REG EQU CYREG_B0_UDB12_13_F1 -scsiTarget_datapath__A0_A1_REG EQU CYREG_B0_UDB12_A0_A1 -scsiTarget_datapath__A0_REG EQU CYREG_B0_UDB12_A0 -scsiTarget_datapath__A1_REG EQU CYREG_B0_UDB12_A1 -scsiTarget_datapath__D0_D1_REG EQU CYREG_B0_UDB12_D0_D1 -scsiTarget_datapath__D0_REG EQU CYREG_B0_UDB12_D0 -scsiTarget_datapath__D1_REG EQU CYREG_B0_UDB12_D1 -scsiTarget_datapath__DP_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL -scsiTarget_datapath__F0_F1_REG EQU CYREG_B0_UDB12_F0_F1 -scsiTarget_datapath__F0_REG EQU CYREG_B0_UDB12_F0 -scsiTarget_datapath__F1_REG EQU CYREG_B0_UDB12_F1 -scsiTarget_datapath__MSK_DP_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath__PER_DP_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL +scsiTarget_StatusReg__4__MASK EQU 0x10 +scsiTarget_StatusReg__4__POS EQU 4 +scsiTarget_StatusReg__MASK EQU 0x1F +scsiTarget_StatusReg__MASK_REG EQU CYREG_B0_UDB04_MSK +scsiTarget_StatusReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_ACTL +scsiTarget_StatusReg__STATUS_REG EQU CYREG_B0_UDB04_ST +scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL +scsiTarget_datapath_PI__16BIT_STATUS_REG EQU CYREG_B0_UDB03_04_ST +scsiTarget_datapath_PI__MASK_REG EQU CYREG_B0_UDB03_MSK +scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath_PI__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL +scsiTarget_datapath_PI__STATUS_CNT_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PI__STATUS_CONTROL_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PI__STATUS_REG EQU CYREG_B0_UDB03_ST +scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL +scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL +scsiTarget_datapath_PO__CONTROL_REG EQU CYREG_B0_UDB03_CTL +scsiTarget_datapath_PO__CONTROL_ST_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PO__COUNT_REG EQU CYREG_B0_UDB03_CTL +scsiTarget_datapath_PO__COUNT_ST_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath_PO__PERIOD_REG EQU CYREG_B0_UDB03_MSK +scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath__16BIT_A0_REG EQU CYREG_B0_UDB03_04_A0 +scsiTarget_datapath__16BIT_A1_REG EQU CYREG_B0_UDB03_04_A1 +scsiTarget_datapath__16BIT_D0_REG EQU CYREG_B0_UDB03_04_D0 +scsiTarget_datapath__16BIT_D1_REG EQU CYREG_B0_UDB03_04_D1 +scsiTarget_datapath__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL +scsiTarget_datapath__16BIT_F0_REG EQU CYREG_B0_UDB03_04_F0 +scsiTarget_datapath__16BIT_F1_REG EQU CYREG_B0_UDB03_04_F1 +scsiTarget_datapath__A0_A1_REG EQU CYREG_B0_UDB03_A0_A1 +scsiTarget_datapath__A0_REG EQU CYREG_B0_UDB03_A0 +scsiTarget_datapath__A1_REG EQU CYREG_B0_UDB03_A1 +scsiTarget_datapath__D0_D1_REG EQU CYREG_B0_UDB03_D0_D1 +scsiTarget_datapath__D0_REG EQU CYREG_B0_UDB03_D0 +scsiTarget_datapath__D1_REG EQU CYREG_B0_UDB03_D1 +scsiTarget_datapath__DP_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL +scsiTarget_datapath__F0_F1_REG EQU CYREG_B0_UDB03_F0_F1 +scsiTarget_datapath__F0_REG EQU CYREG_B0_UDB03_F0 +scsiTarget_datapath__F1_REG EQU CYREG_B0_UDB03_F1 +scsiTarget_datapath__MSK_DP_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath__PER_DP_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL /* SD_Clk_Ctl */ -SD_Clk_Ctl_Sync_ctrl_reg__0__MASK EQU 0x01 -SD_Clk_Ctl_Sync_ctrl_reg__0__POS EQU 0 -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_03_ACTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_ACTL -SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB02_CTL -SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB02_ST_CTL -SD_Clk_Ctl_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB02_CTL -SD_Clk_Ctl_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB02_ST_CTL -SD_Clk_Ctl_Sync_ctrl_reg__MASK EQU 0x01 -SD_Clk_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL -SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB02_MSK -SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL +SD_Clk_Ctl_Sync_ctrl_reg__REMOVED EQU 1 /* USBFS_ep_0 */ USBFS_ep_0__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 @@ -1233,43 +1284,67 @@ USBFS_ep_0__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 /* USBFS_ep_1 */ USBFS_ep_1__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_1__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_1__INTC_MASK EQU 0x02 -USBFS_ep_1__INTC_NUMBER EQU 1 +USBFS_ep_1__INTC_MASK EQU 0x20 +USBFS_ep_1__INTC_NUMBER EQU 5 USBFS_ep_1__INTC_PRIOR_NUM EQU 7 -USBFS_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_1 +USBFS_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_5 USBFS_ep_1__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_1__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 /* USBFS_ep_2 */ USBFS_ep_2__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_2__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_2__INTC_MASK EQU 0x04 -USBFS_ep_2__INTC_NUMBER EQU 2 +USBFS_ep_2__INTC_MASK EQU 0x40 +USBFS_ep_2__INTC_NUMBER EQU 6 USBFS_ep_2__INTC_PRIOR_NUM EQU 7 -USBFS_ep_2__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_2 +USBFS_ep_2__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_6 USBFS_ep_2__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_2__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 /* USBFS_ep_3 */ USBFS_ep_3__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_3__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_3__INTC_MASK EQU 0x08 -USBFS_ep_3__INTC_NUMBER EQU 3 +USBFS_ep_3__INTC_MASK EQU 0x80 +USBFS_ep_3__INTC_NUMBER EQU 7 USBFS_ep_3__INTC_PRIOR_NUM EQU 7 -USBFS_ep_3__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_3 +USBFS_ep_3__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_7 USBFS_ep_3__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_3__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 /* USBFS_ep_4 */ USBFS_ep_4__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_4__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_4__INTC_MASK EQU 0x10 -USBFS_ep_4__INTC_NUMBER EQU 4 +USBFS_ep_4__INTC_MASK EQU 0x100 +USBFS_ep_4__INTC_NUMBER EQU 8 USBFS_ep_4__INTC_PRIOR_NUM EQU 7 -USBFS_ep_4__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_4 +USBFS_ep_4__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_8 USBFS_ep_4__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_4__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 +/* SD_RX_DMA */ +SD_RX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SD_RX_DMA__DRQ_NUMBER EQU 2 +SD_RX_DMA__NUMBEROF_TDS EQU 0 +SD_RX_DMA__PRIORITY EQU 1 +SD_RX_DMA__TERMIN_EN EQU 0 +SD_RX_DMA__TERMIN_SEL EQU 0 +SD_RX_DMA__TERMOUT0_EN EQU 1 +SD_RX_DMA__TERMOUT0_SEL EQU 2 +SD_RX_DMA__TERMOUT1_EN EQU 0 +SD_RX_DMA__TERMOUT1_SEL EQU 0 + +/* SD_TX_DMA */ +SD_TX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SD_TX_DMA__DRQ_NUMBER EQU 3 +SD_TX_DMA__NUMBEROF_TDS EQU 0 +SD_TX_DMA__PRIORITY EQU 2 +SD_TX_DMA__TERMIN_EN EQU 0 +SD_TX_DMA__TERMIN_SEL EQU 0 +SD_TX_DMA__TERMOUT0_EN EQU 1 +SD_TX_DMA__TERMOUT0_SEL EQU 3 +SD_TX_DMA__TERMOUT1_EN EQU 0 +SD_TX_DMA__TERMOUT1_SEL EQU 0 + /* USBFS_USB */ USBFS_USB__ARB_CFG EQU CYREG_USB_ARB_CFG USBFS_USB__ARB_EP1_CFG EQU CYREG_USB_ARB_EP1_CFG @@ -2789,9 +2864,9 @@ CYDEV_CHIP_MEMBER_5B EQU 4 CYDEV_CHIP_FAMILY_PSOC5 EQU 3 CYDEV_CHIP_DIE_PSOC5LP EQU 4 CYDEV_CHIP_DIE_EXPECT EQU CYDEV_CHIP_DIE_PSOC5LP -BCLK__BUS_CLK__HZ EQU 60000000 -BCLK__BUS_CLK__KHZ EQU 60000 -BCLK__BUS_CLK__MHZ EQU 60 +BCLK__BUS_CLK__HZ EQU 50000000 +BCLK__BUS_CLK__KHZ EQU 50000 +BCLK__BUS_CLK__MHZ EQU 50 CYDEV_CHIP_DIE_ACTUAL EQU CYDEV_CHIP_DIE_EXPECT CYDEV_CHIP_DIE_LEOPARD EQU 1 CYDEV_CHIP_DIE_PANTHER EQU 3 @@ -2852,7 +2927,7 @@ CYDEV_DMA_CHANNELS_AVAILABLE EQU 24 CYDEV_ECC_ENABLE EQU 0 CYDEV_HEAP_SIZE EQU 0x0400 CYDEV_INSTRUCT_CACHE_ENABLED EQU 1 -CYDEV_INTR_RISING EQU 0x00000001 +CYDEV_INTR_RISING EQU 0x0000001E CYDEV_PROJ_TYPE EQU 2 CYDEV_PROJ_TYPE_BOOTLOADER EQU 1 CYDEV_PROJ_TYPE_LOADABLE EQU 2 @@ -2876,7 +2951,7 @@ CYDEV_VIO1_MV EQU 5000 CYDEV_VIO2 EQU 5 CYDEV_VIO2_MV EQU 5000 CYDEV_VIO3_MV EQU 3300 -DMA_CHANNELS_USED__MASK0 EQU 0x00000000 +DMA_CHANNELS_USED__MASK0 EQU 0x0000000F CYDEV_BOOTLOADER_ENABLE EQU 0 #endif /* INCLUDED_CYFITTERIAR_INC */ diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitterrv.inc b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitterrv.inc old mode 100755 new mode 100644 index 3768761..79c7a64 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitterrv.inc +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/cyfitterrv.inc @@ -6,13 +6,33 @@ INCLUDED_CYFITTERRV_INC EQU 1 ; Debug_Timer_Interrupt Debug_Timer_Interrupt__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 Debug_Timer_Interrupt__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -Debug_Timer_Interrupt__INTC_MASK EQU 0x01 -Debug_Timer_Interrupt__INTC_NUMBER EQU 0 +Debug_Timer_Interrupt__INTC_MASK EQU 0x02 +Debug_Timer_Interrupt__INTC_NUMBER EQU 1 Debug_Timer_Interrupt__INTC_PRIOR_NUM EQU 7 -Debug_Timer_Interrupt__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0 +Debug_Timer_Interrupt__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_1 Debug_Timer_Interrupt__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 Debug_Timer_Interrupt__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 +; SCSI_RX_DMA_COMPLETE +SCSI_RX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SCSI_RX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SCSI_RX_DMA_COMPLETE__INTC_MASK EQU 0x01 +SCSI_RX_DMA_COMPLETE__INTC_NUMBER EQU 0 +SCSI_RX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SCSI_RX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_0 +SCSI_RX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SCSI_RX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + +; SCSI_TX_DMA_COMPLETE +SCSI_TX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SCSI_TX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SCSI_TX_DMA_COMPLETE__INTC_MASK EQU 0x04 +SCSI_TX_DMA_COMPLETE__INTC_NUMBER EQU 2 +SCSI_TX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SCSI_TX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_2 +SCSI_TX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SCSI_TX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + ; Debug_Timer_TimerHW Debug_Timer_TimerHW__CAP0 EQU CYREG_TMR0_CAP0 Debug_Timer_TimerHW__CAP1 EQU CYREG_TMR0_CAP1 @@ -31,6 +51,26 @@ Debug_Timer_TimerHW__RT0 EQU CYREG_TMR0_RT0 Debug_Timer_TimerHW__RT1 EQU CYREG_TMR0_RT1 Debug_Timer_TimerHW__SR0 EQU CYREG_TMR0_SR0 +; SD_RX_DMA_COMPLETE +SD_RX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SD_RX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SD_RX_DMA_COMPLETE__INTC_MASK EQU 0x08 +SD_RX_DMA_COMPLETE__INTC_NUMBER EQU 3 +SD_RX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SD_RX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_3 +SD_RX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SD_RX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + +; SD_TX_DMA_COMPLETE +SD_TX_DMA_COMPLETE__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 +SD_TX_DMA_COMPLETE__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 +SD_TX_DMA_COMPLETE__INTC_MASK EQU 0x10 +SD_TX_DMA_COMPLETE__INTC_NUMBER EQU 4 +SD_TX_DMA_COMPLETE__INTC_PRIOR_NUM EQU 7 +SD_TX_DMA_COMPLETE__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_4 +SD_TX_DMA_COMPLETE__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 +SD_TX_DMA_COMPLETE__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 + ; USBFS_bus_reset USBFS_bus_reset__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_bus_reset__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 @@ -44,41 +84,41 @@ USBFS_bus_reset__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 ; SCSI_CTL_PHASE SCSI_CTL_PHASE_Sync_ctrl_reg__0__MASK EQU 0x01 SCSI_CTL_PHASE_Sync_ctrl_reg__0__POS EQU 0 -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB05_06_ACTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB05_06_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB05_06_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB05_06_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB05_06_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB05_06_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_03_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB02_03_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB02_03_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB02_03_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK SCSI_CTL_PHASE_Sync_ctrl_reg__1__MASK EQU 0x02 SCSI_CTL_PHASE_Sync_ctrl_reg__1__POS EQU 1 SCSI_CTL_PHASE_Sync_ctrl_reg__2__MASK EQU 0x04 SCSI_CTL_PHASE_Sync_ctrl_reg__2__POS EQU 2 -SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB05_ACTL -SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB05_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB05_ST_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB05_CTL -SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB05_ST_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB02_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB02_ST_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB02_CTL +SCSI_CTL_PHASE_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB02_ST_CTL SCSI_CTL_PHASE_Sync_ctrl_reg__MASK EQU 0x07 -SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB05_MSK_ACTL -SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB05_MSK -SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB05_MSK_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL +SCSI_CTL_PHASE_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB02_MSK +SCSI_CTL_PHASE_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL ; SCSI_Out_Bits SCSI_Out_Bits_Sync_ctrl_reg__0__MASK EQU 0x01 SCSI_Out_Bits_Sync_ctrl_reg__0__POS EQU 0 -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB00_01_ACTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB00_01_CTL -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB00_01_MSK -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB00_01_MSK -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB00_01_MSK -SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB00_01_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB12_13_CTL +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB12_13_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB12_13_MSK +SCSI_Out_Bits_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK SCSI_Out_Bits_Sync_ctrl_reg__1__MASK EQU 0x02 SCSI_Out_Bits_Sync_ctrl_reg__1__POS EQU 1 SCSI_Out_Bits_Sync_ctrl_reg__2__MASK EQU 0x04 @@ -93,15 +133,15 @@ SCSI_Out_Bits_Sync_ctrl_reg__6__MASK EQU 0x40 SCSI_Out_Bits_Sync_ctrl_reg__6__POS EQU 6 SCSI_Out_Bits_Sync_ctrl_reg__7__MASK EQU 0x80 SCSI_Out_Bits_Sync_ctrl_reg__7__POS EQU 7 -SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB00_ACTL -SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB00_CTL -SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB00_ST_CTL -SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB00_CTL -SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB00_ST_CTL +SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB12_CTL +SCSI_Out_Bits_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB12_ST_CTL +SCSI_Out_Bits_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB12_CTL +SCSI_Out_Bits_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB12_ST_CTL SCSI_Out_Bits_Sync_ctrl_reg__MASK EQU 0xFF -SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB00_MSK_ACTL -SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB00_MSK -SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB00_MSK_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL +SCSI_Out_Bits_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB12_MSK +SCSI_Out_Bits_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL ; USBFS_arb_int USBFS_arb_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 @@ -126,24 +166,24 @@ USBFS_sof_int__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 ; SCSI_Out_Ctl SCSI_Out_Ctl_Sync_ctrl_reg__0__MASK EQU 0x01 SCSI_Out_Ctl_Sync_ctrl_reg__0__POS EQU 0 -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB03_04_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL -SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB03_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB03_ST_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB03_CTL -SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB03_ST_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B1_UDB07_08_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B1_UDB07_08_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B1_UDB07_08_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B1_UDB07_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B1_UDB07_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B1_UDB07_ST_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_REG EQU CYREG_B1_UDB07_CTL +SCSI_Out_Ctl_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B1_UDB07_ST_CTL SCSI_Out_Ctl_Sync_ctrl_reg__MASK EQU 0x01 -SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL -SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB03_MSK -SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL +SCSI_Out_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B1_UDB07_MSK +SCSI_Out_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL ; SCSI_Out_DBx SCSI_Out_DBx__0__AG EQU CYREG_PRT6_AG @@ -616,8 +656,8 @@ SDCard_BSPIM_BitCounter__COUNT_ST_REG EQU CYREG_B1_UDB06_ST_CTL SDCard_BSPIM_BitCounter__MASK_CTL_AUX_CTL_REG EQU CYREG_B1_UDB06_MSK_ACTL SDCard_BSPIM_BitCounter__PERIOD_REG EQU CYREG_B1_UDB06_MSK SDCard_BSPIM_BitCounter__PER_CTL_AUX_CTL_REG EQU CYREG_B1_UDB06_MSK_ACTL -SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB06_07_ACTL -SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG EQU CYREG_B0_UDB06_07_ST +SDCard_BSPIM_RxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB07_08_ACTL +SDCard_BSPIM_RxStsReg__16BIT_STATUS_REG EQU CYREG_B0_UDB07_08_ST SDCard_BSPIM_RxStsReg__4__MASK EQU 0x10 SDCard_BSPIM_RxStsReg__4__POS EQU 4 SDCard_BSPIM_RxStsReg__5__MASK EQU 0x20 @@ -625,13 +665,13 @@ SDCard_BSPIM_RxStsReg__5__POS EQU 5 SDCard_BSPIM_RxStsReg__6__MASK EQU 0x40 SDCard_BSPIM_RxStsReg__6__POS EQU 6 SDCard_BSPIM_RxStsReg__MASK EQU 0x70 -SDCard_BSPIM_RxStsReg__MASK_REG EQU CYREG_B0_UDB06_MSK -SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB06_ACTL -SDCard_BSPIM_RxStsReg__STATUS_REG EQU CYREG_B0_UDB06_ST +SDCard_BSPIM_RxStsReg__MASK_REG EQU CYREG_B0_UDB07_MSK +SDCard_BSPIM_RxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB07_ACTL +SDCard_BSPIM_RxStsReg__STATUS_REG EQU CYREG_B0_UDB07_ST SDCard_BSPIM_TxStsReg__0__MASK EQU 0x01 SDCard_BSPIM_TxStsReg__0__POS EQU 0 -SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_05_ACTL -SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG EQU CYREG_B0_UDB04_05_ST +SDCard_BSPIM_TxStsReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B1_UDB07_08_ACTL +SDCard_BSPIM_TxStsReg__16BIT_STATUS_REG EQU CYREG_B1_UDB07_08_ST SDCard_BSPIM_TxStsReg__1__MASK EQU 0x02 SDCard_BSPIM_TxStsReg__1__POS EQU 1 SDCard_BSPIM_TxStsReg__2__MASK EQU 0x04 @@ -641,26 +681,30 @@ SDCard_BSPIM_TxStsReg__3__POS EQU 3 SDCard_BSPIM_TxStsReg__4__MASK EQU 0x10 SDCard_BSPIM_TxStsReg__4__POS EQU 4 SDCard_BSPIM_TxStsReg__MASK EQU 0x1F -SDCard_BSPIM_TxStsReg__MASK_REG EQU CYREG_B0_UDB04_MSK -SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_ACTL -SDCard_BSPIM_TxStsReg__STATUS_REG EQU CYREG_B0_UDB04_ST -SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG EQU CYREG_B0_UDB06_07_A0 -SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG EQU CYREG_B0_UDB06_07_A1 -SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG EQU CYREG_B0_UDB06_07_D0 -SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG EQU CYREG_B0_UDB06_07_D1 -SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB06_07_ACTL -SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG EQU CYREG_B0_UDB06_07_F0 -SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG EQU CYREG_B0_UDB06_07_F1 -SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG EQU CYREG_B0_UDB06_A0_A1 -SDCard_BSPIM_sR8_Dp_u0__A0_REG EQU CYREG_B0_UDB06_A0 -SDCard_BSPIM_sR8_Dp_u0__A1_REG EQU CYREG_B0_UDB06_A1 -SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG EQU CYREG_B0_UDB06_D0_D1 -SDCard_BSPIM_sR8_Dp_u0__D0_REG EQU CYREG_B0_UDB06_D0 -SDCard_BSPIM_sR8_Dp_u0__D1_REG EQU CYREG_B0_UDB06_D1 -SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG EQU CYREG_B0_UDB06_ACTL -SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG EQU CYREG_B0_UDB06_F0_F1 -SDCard_BSPIM_sR8_Dp_u0__F0_REG EQU CYREG_B0_UDB06_F0 -SDCard_BSPIM_sR8_Dp_u0__F1_REG EQU CYREG_B0_UDB06_F1 +SDCard_BSPIM_TxStsReg__MASK_REG EQU CYREG_B1_UDB07_MSK +SDCard_BSPIM_TxStsReg__MASK_ST_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL +SDCard_BSPIM_TxStsReg__PER_ST_AUX_CTL_REG EQU CYREG_B1_UDB07_MSK_ACTL +SDCard_BSPIM_TxStsReg__STATUS_AUX_CTL_REG EQU CYREG_B1_UDB07_ACTL +SDCard_BSPIM_TxStsReg__STATUS_CNT_REG EQU CYREG_B1_UDB07_ST_CTL +SDCard_BSPIM_TxStsReg__STATUS_CONTROL_REG EQU CYREG_B1_UDB07_ST_CTL +SDCard_BSPIM_TxStsReg__STATUS_REG EQU CYREG_B1_UDB07_ST +SDCard_BSPIM_sR8_Dp_u0__16BIT_A0_REG EQU CYREG_B0_UDB04_05_A0 +SDCard_BSPIM_sR8_Dp_u0__16BIT_A1_REG EQU CYREG_B0_UDB04_05_A1 +SDCard_BSPIM_sR8_Dp_u0__16BIT_D0_REG EQU CYREG_B0_UDB04_05_D0 +SDCard_BSPIM_sR8_Dp_u0__16BIT_D1_REG EQU CYREG_B0_UDB04_05_D1 +SDCard_BSPIM_sR8_Dp_u0__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB04_05_ACTL +SDCard_BSPIM_sR8_Dp_u0__16BIT_F0_REG EQU CYREG_B0_UDB04_05_F0 +SDCard_BSPIM_sR8_Dp_u0__16BIT_F1_REG EQU CYREG_B0_UDB04_05_F1 +SDCard_BSPIM_sR8_Dp_u0__A0_A1_REG EQU CYREG_B0_UDB04_A0_A1 +SDCard_BSPIM_sR8_Dp_u0__A0_REG EQU CYREG_B0_UDB04_A0 +SDCard_BSPIM_sR8_Dp_u0__A1_REG EQU CYREG_B0_UDB04_A1 +SDCard_BSPIM_sR8_Dp_u0__D0_D1_REG EQU CYREG_B0_UDB04_D0_D1 +SDCard_BSPIM_sR8_Dp_u0__D0_REG EQU CYREG_B0_UDB04_D0 +SDCard_BSPIM_sR8_Dp_u0__D1_REG EQU CYREG_B0_UDB04_D1 +SDCard_BSPIM_sR8_Dp_u0__DP_AUX_CTL_REG EQU CYREG_B0_UDB04_ACTL +SDCard_BSPIM_sR8_Dp_u0__F0_F1_REG EQU CYREG_B0_UDB04_F0_F1 +SDCard_BSPIM_sR8_Dp_u0__F0_REG EQU CYREG_B0_UDB04_F0 +SDCard_BSPIM_sR8_Dp_u0__F1_REG EQU CYREG_B0_UDB04_F1 ; USBFS_dp_int USBFS_dp_int__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 @@ -1104,6 +1148,30 @@ SCSI_In_DBx__DB7__PS EQU CYREG_PRT2_PS SCSI_In_DBx__DB7__SHIFT EQU 1 SCSI_In_DBx__DB7__SLW EQU CYREG_PRT2_SLW +; SCSI_RX_DMA +SCSI_RX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SCSI_RX_DMA__DRQ_NUMBER EQU 0 +SCSI_RX_DMA__NUMBEROF_TDS EQU 0 +SCSI_RX_DMA__PRIORITY EQU 2 +SCSI_RX_DMA__TERMIN_EN EQU 0 +SCSI_RX_DMA__TERMIN_SEL EQU 0 +SCSI_RX_DMA__TERMOUT0_EN EQU 1 +SCSI_RX_DMA__TERMOUT0_SEL EQU 0 +SCSI_RX_DMA__TERMOUT1_EN EQU 0 +SCSI_RX_DMA__TERMOUT1_SEL EQU 0 + +; SCSI_TX_DMA +SCSI_TX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SCSI_TX_DMA__DRQ_NUMBER EQU 1 +SCSI_TX_DMA__NUMBEROF_TDS EQU 0 +SCSI_TX_DMA__PRIORITY EQU 2 +SCSI_TX_DMA__TERMIN_EN EQU 0 +SCSI_TX_DMA__TERMIN_SEL EQU 0 +SCSI_TX_DMA__TERMOUT0_EN EQU 1 +SCSI_TX_DMA__TERMOUT0_SEL EQU 1 +SCSI_TX_DMA__TERMOUT1_EN EQU 0 +SCSI_TX_DMA__TERMOUT1_SEL EQU 0 + ; SD_Data_Clk SD_Data_Clk__CFG0 EQU CYREG_CLKDIST_DCFG0_CFG0 SD_Data_Clk__CFG1 EQU CYREG_CLKDIST_DCFG0_CFG1 @@ -1140,85 +1208,68 @@ timer_clock__PM_STBY_MSK EQU 0x04 ; scsiTarget scsiTarget_StatusReg__0__MASK EQU 0x01 scsiTarget_StatusReg__0__POS EQU 0 -scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB13_14_ACTL -scsiTarget_StatusReg__16BIT_STATUS_REG EQU CYREG_B0_UDB13_14_ST +scsiTarget_StatusReg__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_05_ACTL +scsiTarget_StatusReg__16BIT_STATUS_REG EQU CYREG_B0_UDB04_05_ST scsiTarget_StatusReg__1__MASK EQU 0x02 scsiTarget_StatusReg__1__POS EQU 1 scsiTarget_StatusReg__2__MASK EQU 0x04 scsiTarget_StatusReg__2__POS EQU 2 scsiTarget_StatusReg__3__MASK EQU 0x08 scsiTarget_StatusReg__3__POS EQU 3 -scsiTarget_StatusReg__MASK EQU 0x0F -scsiTarget_StatusReg__MASK_REG EQU CYREG_B0_UDB13_MSK -scsiTarget_StatusReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB13_ACTL -scsiTarget_StatusReg__STATUS_REG EQU CYREG_B0_UDB13_ST -scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL -scsiTarget_datapath_PI__16BIT_STATUS_REG EQU CYREG_B0_UDB12_13_ST -scsiTarget_datapath_PI__MASK_REG EQU CYREG_B0_UDB12_MSK -scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath_PI__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL -scsiTarget_datapath_PI__STATUS_CNT_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PI__STATUS_CONTROL_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PI__STATUS_REG EQU CYREG_B0_UDB12_ST -scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL -scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB12_13_CTL -scsiTarget_datapath_PO__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB12_13_MSK -scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL -scsiTarget_datapath_PO__CONTROL_REG EQU CYREG_B0_UDB12_CTL -scsiTarget_datapath_PO__CONTROL_ST_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PO__COUNT_REG EQU CYREG_B0_UDB12_CTL -scsiTarget_datapath_PO__COUNT_ST_REG EQU CYREG_B0_UDB12_ST_CTL -scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath_PO__PERIOD_REG EQU CYREG_B0_UDB12_MSK -scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath__16BIT_A0_REG EQU CYREG_B0_UDB12_13_A0 -scsiTarget_datapath__16BIT_A1_REG EQU CYREG_B0_UDB12_13_A1 -scsiTarget_datapath__16BIT_D0_REG EQU CYREG_B0_UDB12_13_D0 -scsiTarget_datapath__16BIT_D1_REG EQU CYREG_B0_UDB12_13_D1 -scsiTarget_datapath__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB12_13_ACTL -scsiTarget_datapath__16BIT_F0_REG EQU CYREG_B0_UDB12_13_F0 -scsiTarget_datapath__16BIT_F1_REG EQU CYREG_B0_UDB12_13_F1 -scsiTarget_datapath__A0_A1_REG EQU CYREG_B0_UDB12_A0_A1 -scsiTarget_datapath__A0_REG EQU CYREG_B0_UDB12_A0 -scsiTarget_datapath__A1_REG EQU CYREG_B0_UDB12_A1 -scsiTarget_datapath__D0_D1_REG EQU CYREG_B0_UDB12_D0_D1 -scsiTarget_datapath__D0_REG EQU CYREG_B0_UDB12_D0 -scsiTarget_datapath__D1_REG EQU CYREG_B0_UDB12_D1 -scsiTarget_datapath__DP_AUX_CTL_REG EQU CYREG_B0_UDB12_ACTL -scsiTarget_datapath__F0_F1_REG EQU CYREG_B0_UDB12_F0_F1 -scsiTarget_datapath__F0_REG EQU CYREG_B0_UDB12_F0 -scsiTarget_datapath__F1_REG EQU CYREG_B0_UDB12_F1 -scsiTarget_datapath__MSK_DP_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL -scsiTarget_datapath__PER_DP_AUX_CTL_REG EQU CYREG_B0_UDB12_MSK_ACTL +scsiTarget_StatusReg__4__MASK EQU 0x10 +scsiTarget_StatusReg__4__POS EQU 4 +scsiTarget_StatusReg__MASK EQU 0x1F +scsiTarget_StatusReg__MASK_REG EQU CYREG_B0_UDB04_MSK +scsiTarget_StatusReg__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB04_ACTL +scsiTarget_StatusReg__STATUS_REG EQU CYREG_B0_UDB04_ST +scsiTarget_datapath_PI__16BIT_STATUS_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL +scsiTarget_datapath_PI__16BIT_STATUS_REG EQU CYREG_B0_UDB03_04_ST +scsiTarget_datapath_PI__MASK_REG EQU CYREG_B0_UDB03_MSK +scsiTarget_datapath_PI__MASK_ST_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath_PI__PER_ST_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath_PI__STATUS_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL +scsiTarget_datapath_PI__STATUS_CNT_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PI__STATUS_CONTROL_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PI__STATUS_REG EQU CYREG_B0_UDB03_ST +scsiTarget_datapath_PO__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL +scsiTarget_datapath_PO__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB03_04_CTL +scsiTarget_datapath_PO__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB03_04_MSK +scsiTarget_datapath_PO__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL +scsiTarget_datapath_PO__CONTROL_REG EQU CYREG_B0_UDB03_CTL +scsiTarget_datapath_PO__CONTROL_ST_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PO__COUNT_REG EQU CYREG_B0_UDB03_CTL +scsiTarget_datapath_PO__COUNT_ST_REG EQU CYREG_B0_UDB03_ST_CTL +scsiTarget_datapath_PO__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath_PO__PERIOD_REG EQU CYREG_B0_UDB03_MSK +scsiTarget_datapath_PO__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath__16BIT_A0_REG EQU CYREG_B0_UDB03_04_A0 +scsiTarget_datapath__16BIT_A1_REG EQU CYREG_B0_UDB03_04_A1 +scsiTarget_datapath__16BIT_D0_REG EQU CYREG_B0_UDB03_04_D0 +scsiTarget_datapath__16BIT_D1_REG EQU CYREG_B0_UDB03_04_D1 +scsiTarget_datapath__16BIT_DP_AUX_CTL_REG EQU CYREG_B0_UDB03_04_ACTL +scsiTarget_datapath__16BIT_F0_REG EQU CYREG_B0_UDB03_04_F0 +scsiTarget_datapath__16BIT_F1_REG EQU CYREG_B0_UDB03_04_F1 +scsiTarget_datapath__A0_A1_REG EQU CYREG_B0_UDB03_A0_A1 +scsiTarget_datapath__A0_REG EQU CYREG_B0_UDB03_A0 +scsiTarget_datapath__A1_REG EQU CYREG_B0_UDB03_A1 +scsiTarget_datapath__D0_D1_REG EQU CYREG_B0_UDB03_D0_D1 +scsiTarget_datapath__D0_REG EQU CYREG_B0_UDB03_D0 +scsiTarget_datapath__D1_REG EQU CYREG_B0_UDB03_D1 +scsiTarget_datapath__DP_AUX_CTL_REG EQU CYREG_B0_UDB03_ACTL +scsiTarget_datapath__F0_F1_REG EQU CYREG_B0_UDB03_F0_F1 +scsiTarget_datapath__F0_REG EQU CYREG_B0_UDB03_F0 +scsiTarget_datapath__F1_REG EQU CYREG_B0_UDB03_F1 +scsiTarget_datapath__MSK_DP_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL +scsiTarget_datapath__PER_DP_AUX_CTL_REG EQU CYREG_B0_UDB03_MSK_ACTL ; SD_Clk_Ctl -SD_Clk_Ctl_Sync_ctrl_reg__0__MASK EQU 0x01 -SD_Clk_Ctl_Sync_ctrl_reg__0__POS EQU 0 -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_03_ACTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_CONTROL_COUNT_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_CONTROL_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_COUNT_COUNT_REG EQU CYREG_B0_UDB02_03_CTL -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_MASK_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_MASK_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_MASK_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__16BIT_PERIOD_PERIOD_REG EQU CYREG_B0_UDB02_03_MSK -SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_AUX_CTL_REG EQU CYREG_B0_UDB02_ACTL -SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_REG EQU CYREG_B0_UDB02_CTL -SD_Clk_Ctl_Sync_ctrl_reg__CONTROL_ST_REG EQU CYREG_B0_UDB02_ST_CTL -SD_Clk_Ctl_Sync_ctrl_reg__COUNT_REG EQU CYREG_B0_UDB02_CTL -SD_Clk_Ctl_Sync_ctrl_reg__COUNT_ST_REG EQU CYREG_B0_UDB02_ST_CTL -SD_Clk_Ctl_Sync_ctrl_reg__MASK EQU 0x01 -SD_Clk_Ctl_Sync_ctrl_reg__MASK_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL -SD_Clk_Ctl_Sync_ctrl_reg__PERIOD_REG EQU CYREG_B0_UDB02_MSK -SD_Clk_Ctl_Sync_ctrl_reg__PER_CTL_AUX_CTL_REG EQU CYREG_B0_UDB02_MSK_ACTL +SD_Clk_Ctl_Sync_ctrl_reg__REMOVED EQU 1 ; USBFS_ep_0 USBFS_ep_0__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 @@ -1233,43 +1284,67 @@ USBFS_ep_0__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 ; USBFS_ep_1 USBFS_ep_1__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_1__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_1__INTC_MASK EQU 0x02 -USBFS_ep_1__INTC_NUMBER EQU 1 +USBFS_ep_1__INTC_MASK EQU 0x20 +USBFS_ep_1__INTC_NUMBER EQU 5 USBFS_ep_1__INTC_PRIOR_NUM EQU 7 -USBFS_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_1 +USBFS_ep_1__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_5 USBFS_ep_1__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_1__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 ; USBFS_ep_2 USBFS_ep_2__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_2__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_2__INTC_MASK EQU 0x04 -USBFS_ep_2__INTC_NUMBER EQU 2 +USBFS_ep_2__INTC_MASK EQU 0x40 +USBFS_ep_2__INTC_NUMBER EQU 6 USBFS_ep_2__INTC_PRIOR_NUM EQU 7 -USBFS_ep_2__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_2 +USBFS_ep_2__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_6 USBFS_ep_2__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_2__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 ; USBFS_ep_3 USBFS_ep_3__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_3__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_3__INTC_MASK EQU 0x08 -USBFS_ep_3__INTC_NUMBER EQU 3 +USBFS_ep_3__INTC_MASK EQU 0x80 +USBFS_ep_3__INTC_NUMBER EQU 7 USBFS_ep_3__INTC_PRIOR_NUM EQU 7 -USBFS_ep_3__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_3 +USBFS_ep_3__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_7 USBFS_ep_3__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_3__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 ; USBFS_ep_4 USBFS_ep_4__INTC_CLR_EN_REG EQU CYREG_NVIC_CLRENA0 USBFS_ep_4__INTC_CLR_PD_REG EQU CYREG_NVIC_CLRPEND0 -USBFS_ep_4__INTC_MASK EQU 0x10 -USBFS_ep_4__INTC_NUMBER EQU 4 +USBFS_ep_4__INTC_MASK EQU 0x100 +USBFS_ep_4__INTC_NUMBER EQU 8 USBFS_ep_4__INTC_PRIOR_NUM EQU 7 -USBFS_ep_4__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_4 +USBFS_ep_4__INTC_PRIOR_REG EQU CYREG_NVIC_PRI_8 USBFS_ep_4__INTC_SET_EN_REG EQU CYREG_NVIC_SETENA0 USBFS_ep_4__INTC_SET_PD_REG EQU CYREG_NVIC_SETPEND0 +; SD_RX_DMA +SD_RX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SD_RX_DMA__DRQ_NUMBER EQU 2 +SD_RX_DMA__NUMBEROF_TDS EQU 0 +SD_RX_DMA__PRIORITY EQU 1 +SD_RX_DMA__TERMIN_EN EQU 0 +SD_RX_DMA__TERMIN_SEL EQU 0 +SD_RX_DMA__TERMOUT0_EN EQU 1 +SD_RX_DMA__TERMOUT0_SEL EQU 2 +SD_RX_DMA__TERMOUT1_EN EQU 0 +SD_RX_DMA__TERMOUT1_SEL EQU 0 + +; SD_TX_DMA +SD_TX_DMA__DRQ_CTL EQU CYREG_IDMUX_DRQ_CTL0 +SD_TX_DMA__DRQ_NUMBER EQU 3 +SD_TX_DMA__NUMBEROF_TDS EQU 0 +SD_TX_DMA__PRIORITY EQU 2 +SD_TX_DMA__TERMIN_EN EQU 0 +SD_TX_DMA__TERMIN_SEL EQU 0 +SD_TX_DMA__TERMOUT0_EN EQU 1 +SD_TX_DMA__TERMOUT0_SEL EQU 3 +SD_TX_DMA__TERMOUT1_EN EQU 0 +SD_TX_DMA__TERMOUT1_SEL EQU 0 + ; USBFS_USB USBFS_USB__ARB_CFG EQU CYREG_USB_ARB_CFG USBFS_USB__ARB_EP1_CFG EQU CYREG_USB_ARB_EP1_CFG @@ -2789,9 +2864,9 @@ CYDEV_CHIP_MEMBER_5B EQU 4 CYDEV_CHIP_FAMILY_PSOC5 EQU 3 CYDEV_CHIP_DIE_PSOC5LP EQU 4 CYDEV_CHIP_DIE_EXPECT EQU CYDEV_CHIP_DIE_PSOC5LP -BCLK__BUS_CLK__HZ EQU 60000000 -BCLK__BUS_CLK__KHZ EQU 60000 -BCLK__BUS_CLK__MHZ EQU 60 +BCLK__BUS_CLK__HZ EQU 50000000 +BCLK__BUS_CLK__KHZ EQU 50000 +BCLK__BUS_CLK__MHZ EQU 50 CYDEV_CHIP_DIE_ACTUAL EQU CYDEV_CHIP_DIE_EXPECT CYDEV_CHIP_DIE_LEOPARD EQU 1 CYDEV_CHIP_DIE_PANTHER EQU 3 @@ -2852,7 +2927,7 @@ CYDEV_DMA_CHANNELS_AVAILABLE EQU 24 CYDEV_ECC_ENABLE EQU 0 CYDEV_HEAP_SIZE EQU 0x0400 CYDEV_INSTRUCT_CACHE_ENABLED EQU 1 -CYDEV_INTR_RISING EQU 0x00000001 +CYDEV_INTR_RISING EQU 0x0000001E CYDEV_PROJ_TYPE EQU 2 CYDEV_PROJ_TYPE_BOOTLOADER EQU 1 CYDEV_PROJ_TYPE_LOADABLE EQU 2 @@ -2876,7 +2951,7 @@ CYDEV_VIO1_MV EQU 5000 CYDEV_VIO2 EQU 5 CYDEV_VIO2_MV EQU 5000 CYDEV_VIO3_MV EQU 3300 -DMA_CHANNELS_USED__MASK0 EQU 0x00000000 +DMA_CHANNELS_USED__MASK0 EQU 0x0000000F CYDEV_BOOTLOADER_ENABLE EQU 0 ENDIF END diff --git a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/project.h b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/project.h old mode 100755 new mode 100644 index 01afa7d..b47a204 --- a/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/project.h +++ b/software/SCSI2SD/SCSI2SD.cydsn/Generated_Source/PSoC5/project.h @@ -64,6 +64,14 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cycdx b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cycdx old mode 100755 new mode 100644 index 265ed9e..4acdeea --- a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cycdx +++ b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cycdx @@ -1,8 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -10,10 +74,6 @@ - - - - @@ -94,93 +154,39 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - + + + + - - + + + + + + - - - - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cydwr b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cydwr index 96ace5183d2151954943f78b692a481ac34748c6..21c2248099b8ff9fc9bae6d00e3840ac259a5a3b 100755 GIT binary patch literal 139014 zcmeI5f2>_scGs_yW;*RmrgVn>m=fAI1?R(BT-@W(xuD$l&-*fJted60j`QJBpmA^jm)yLl9 zk8k@uen0jOMyGYu>!TZ^-Sgb?;@6qoo`v0olT~XQ5(J{T-Qpq(Pdq8I#)&HCNo1;GTjWO^~e6^}&UVl-g z@}4S1#dO_s`eTtQol`Y$3H}*X`nAzrRc(EAX>@*E#dyE2Yv0vNRjca9nyY+JzsI#Z zB+SQzZ=Zfvb<`f=zN){kG_^ZCI;{Ha(Gf@WKV=+wRjgRxts_JiVOzRh> zKdk>=8*S*rxcIJb?ryKIj~`KO7pY&r%huJoo2tw8rb92Q?r)C%gj)G!{an!dJNj%( zm))zs?&{O)>f%>M&x}@7c1LI4QrQiaUTMl+)Umf4hrvC5Tz2-V1b=jhCw??0D+F(oXDOnpg?+sn`mFDj^)%(!kR)cy|?@tN~nBQy=Z|eW6 z$qs!@O(t98K-&^~h5L|jA8U?#w{3D$xNhj@XY@06!D|9^Ma_RiO>|j5dvv)&x@frI z{>I60!A+GN)~C1}O?y-{+pnKZy>QA8ePh>S??9u+-_E}F8I>&JYtf?bwvESiI;JLu z90UkDVUG}Qs@uVTQ131aJ$1UKlFg=0hgG9PI-0Y#R37yUTJ65KOO=?68{eg}h!|D< zX!9P{wNmSW@M zkH4KhC7j-tF9yl0`a?Ra1;BBG^8AmA*ZF!&-hWH;{*c^;0rj$cosbB#36wFg5-MTF z6)^?26BV|^qJ8>%Q>-B%9ni6dE2<5b;WR$Hu8;1Bpie#ZW%&Dx55&B4V?)bPm5k|IlU*-sWMxEWq~DZ#kb4rR z-;Ytg3||Z?D{npZ<(4k;(Eq71ZIN-gp93yE^!H8PcUkU9TD)H`CQ5sncVs{0NMu8d z1VsD&iuA<)!%fV;qTgF8y{iBBYXn(1{*y$J6GfWT5Act@!;~)vc)92Y9w>;CfHNsP zt5AMJBwV`ex4z4^fvc)3`H6gkRR<=(hZSI%9+A`U(O)bS9Be$8%w@mc9aC--UcIT~ z4(ZcFDnF|KxAZql2@890n=q7-|Jr!mzbhM&zX%#hJ!t_^pII*p9TU0v_RN2h4zW@Y zbBx^$HCFUHwF7@v^(UI&3+FrJR=e+ETR5N4e`W5_pMS<&dJ@tHnrmUAOn9hif;2gs zDQhd=sl#@C^T{W_vilx3bZLz2>yUsyuOJ-IM;uv_!QJ<|5$qAr6G~Rbuif|B8m+2m zZS<3>)k)2$H}wAO=+mQ9T3&iq3r^=p$CYlLZpt>aW^=YVuEq2Ro0HG#gL69cqySye z@AVEP7tGdA>aR6j<)p50T+3U}>s@P&I-inH-e}yQMYwmu#yo^!KP*=DkLk?T%+U!m zrv>4HDtBJhT+{zl{kUGw2~r;*^%-{p%TO1UwvvXomVb1@at64e8Xa%0b3%=Gwz*EO ze6d~CYZ>e_b4|V==r4?$dZX!`79h#|akU_c;2UaS7Jn|OO>c`*E#M!Vuuheas|z<| z^YrMaa-T5ptd73WaDG+4TN^7AHfTzk?^E-v?3aa}mC3%1T5Sk8bzE=!W4-B`GYz&2 ze6;ta=^8L1Ilc4ZzdJgC6$dG$+s>3lu z%D#U|Mm7ZIMb&D$gH3qsWUcU3ns}CfPMkhjjcJVnX@6q$(wMxZ8a-E>tj07mlLmUk ziy+ZOm>1RN{Ios`w+=OncWoC;Kj(Pc`!{q-d+=mCy{J|?uYNB9WtxGer9}NYkU7hGflT0@slucL8i`h)(P$>1cC^&)*+sZ%G0fu7)no4 zhtrCxKRLEN;q{Zjc)Gz$LUOtZ#sup#`Z?ajo6>zf1{_?d=AB7m#2MjiTb7=R(AT!+ zVm%eLrO6nSTYFtlo(QLteMC?{r*K1)=Yf2h-Kzdeg4qI`r2Q;Yr&}gZ7?>PnCS5B9 z0N5UbOw_0RZozzVq6dh@_%6Ocy+~A2dqdDwRe43J?26LXL!%#2>a<_~tL&}TDrs?S zIGxt$$X3j=8ZWOa^*o~y^L72ic1*PU+{B8R7_XFA(dp+J3k#gjQXQ{!{&V`1b$7Nh zSYzL(l!L9h$ita$9&1+I$<~=&#(E>W5nK9Uvi)lcENq%xmL=x7*JP`#a~_dpu6tQWT+_RKLc<(lRb{c}c|cb^++CL* z>8^XWNlT_)nLQLX>-Ot6J1nfQvhzUg4mKEAb&dH6^KUR65mII*%um>xIHY%Njbof= zls}{TUJ#Mm{->tQgm4Vn_(*fT1C7JP^_UN_eML{2vx&(}jWq<;8QSX+3ofV+$zlk*y{oa1 zhTmXgwdpC=p;u)g{3mvIj;Rcit{m4o*t`P~ZAeSfrtCJw)^zmW)vjh;&oOjgl+oVxR#k9BXK(6fzuFS?>{zkx zf;Y0o%UVo$6Fvh1{E8VYwF`f3>o$2k#^&+38lHl8$KDt|#DBxLyV+9VP&*5(S&zI9U=p*2~WA^v91?C zs4Fr%U)PDfE5R}1-ZlNeVaB8qCu5x`xKF=D1dF{ddBRk!GFejL@W4C zi=AAFS@H>`z!&7}`}A7Z+L;MI5)eEFPeoQlB%(he>fr_SF+GE}fwsq^LJa}ihz~^L z``~{)=Vb)OwPpolQ=9p5=G^QH833=8J<*H!8?DN!JyAbK?-JP9(6^%NDc6_kX6xR^cT?&b`d4%SuBN0g4Q4c!0L#gcte>Tws{z%HaXbcUUgHf zB+e3V88OLi@ca-lab02}SYiYP3)~9n7MzE7_-x`@#Vg9*@95yvdW^307cr8tA);K2 z>lOk2f@;; z!6#}FSwC|k#%o3*_(IFC3htGz7X4XIjBGIef^wC%{f6}gxP$*PZp2;=`CDY%)b4D?Sv4Wb5#wN9WHa~* zUe5fG-iX;Lenf9Xb|0BS>ra!lU_tzfyB7EZK0^Kx*ohRB;7{c4)U2DKu%}E;UF4Ur znz-85f+dyQ7s130)dl_Jmajj^t3Vzz5=Kq3IeI6eBe^a$iEM>Y3jV-tvP%AEWIWQ< zWHO7{5_LCplF6TtHZw94fy#`DcojVXV_-Xd#C)6h#Ie+mV_-O$WLnRdjz49}!}5Xb zp6Ek7A~&Rk!5{M%vXWqR$qmR|h-S=PSOK68Bdw)h#@awNLi z@ONTNU`(ZVS#7~bBM%{}(Ry4t<_U~P%ydF|z-Yv3C-I*nVPv}U56kGfJ|gzLqL^_p zWeL-gft00yh4m+5S7g(SEm32}_n6<16UF=-wviRmX2dT>RqE2V!d_vC)v)tgLH)Ew z#=Dv^b6dt;iD*i0-%m~wo>*~-*)W+b;}|TBybYx_nN+N((o->;AO@3hfR{Y)T8HPE z7SF{N&ndMN+rjrm6SEaYf3k1lIT?4v!;%+)hFLKT;2k+6V|C09g57QFJl&uv>p&N^ z%g9WXotAF%i4_JG^IN~iXYjem!Wna7UK0!gQ>=EwHt;b55u@=QA~d-Ragx~4B4MGw z^wYv9@OmOB^GEp1oG)4&6x5h&lZ(VE3#-EP4NN1;ja)osgB^+;v<2SD9D}$RtN|Cf z11Pw9%)jtVd<0L8Y@Qhy82CS}T=je9{M=qixi_{vzipWKRVT)de>ycqV>Zgs24njEpbiO8Hjt-mbi!SL?%eQp|`<2^_ny5 z$;=eQ*urlarDELWnz3`lHJNS2r^I{aiOhBB9b(SR_RYSs@>cSVSn%y`W-58cTpw9c z8}cf1u&O@X{59UFB0(uK@oUY5%-IrMOhg=-DLFK5r!aYMPeT0 z@>_aGiV>sViatXrx6<5WwWVViYyL>vNH4b+={M5P&M3b;qx@ADDYE^MJ|d zPfl9A@0aq4%*sya0B+>mR9{?>5pLmRoh$D9E2sUr_OyO~{P|R#+xIV|@?UA*2ku`@ z<=v)zRsZD~<$rZX`LCt&UvJ)r{ohFCe_ihj*Q@&fwx7%;_lI>DuR?A$FN7lK5y%fW z`wE2L6KZnA9Rw&gW(bcb^!ag>vW#_7<@q3^gjq&duDYeftHi$vk=h4!>P^*=HLZ3C z17jr8Bt^YNLUL^G-@Gf#*BiIwZkv35RdbhJJMLhM+c?QrZs=WEf1RiTqh{2Q+HR@# zWUJgO*F%MV?z9l0W=Y#4Tx5DX?bRnO7S{0N2G-7SRsY8fm->MN-VoWY3dyzR-RC+a zq!Q#gt>I~B{hTVzT6T*ctt_*3+*zH*U~)&6H+6;5dB{B4<8e-Ob*FT#1A2E#PKf(4 z|B0Cj840uP6Z%aaLhf=(KWNNw={1d`Cv-Mz9OJ8kbn>eG{u4A@47E^_CE#Lr)FU?= zyu|&xqgREztoB3=0{cYQ!a42`C-^WKYb!{vt?NR_A<=0*-*S3PP1Z%$n)=e(YpNgn zhwLXpO>)l2GnqH7s|CRarNrrlkF!vb&98i1xJp1+U3d_QRfa-{bYk7#;psZRs(&bzZ|ir~kk{oH42dvxkKVBf z3|Hw_qW+$yZx1vKMaywYuM^Et>+&0XWL@194bkg&_<~RnW%60^=3;x;PJ4VDPxk5B zM}+N^{5;~xKH&&W4qnRL^2~`q&O2s2tcNrA!%vC4oDp5SQ`cdr$5~h)isx&@hQ;d| z=-KitW!u8B&TDJld64S#gg#hrEE0|*CBM-8jSZf{G3j1YPeP>?kNe0cW#7yB?;^1$ z`_lbm&rW@>s$WPx*||)=Jo`w-KPxJXeFQx{K24k=G2El~{7>q~+8{9tkB)I^Pvgz_ zHt`O>Vl6J@Oho;;KElArD~&k-{ld5}xgVK(tMAA+HkByET$V1{Q15Q)liSVzEb8@r zCO4?6#q_f?`kMNhr$=CR?Sai!b@_ei9dc`hR%+*0?0~C2auCvN*pstEx$yhRzS0d#}y<;CG_U2fPKCVxg=bq4!>>V6$VkzSc zGmq$yxe*fO6R#2>)fi9c&+F=XIy-!bziz10p;+l=9mshsI&i1lzTUt#VTBKI6h`C8 z)sD_tbP}s`<r|S<1W*SwE`tV(n@}RX(bPgD$mHTd>X;OQOu&dAeH=wa`7U zUG=*)*F1M?E`RU3wW|Mn>WM{q)G=q$(-0aI_w7-hf55BsXuoM6PgTiHo6GOtwCY_3 z-s8@ob1b~3$-zujO;weD9QroWT&$7_Q9JuVGv8YQWSo%j0LYPgVc()NWl9 zRP~oqdA2iI$2PtrEN4S5T#1=6g9+=)w0Jw1&~u+}rcXh;ZbeT|JDm}AbNPcu-Ku6P zUm{g6umXxT_wr#5tFw~T`;W0z?G3B)QyRS+!wI2z!K`g`QWPGK+)cyB#K`0L^t1Ii zZM9Cfi`9jbxt`2&E3e|oZU?ODf1e!o>&^S^4wi@Sob%=K2X`>FDUO6_tvFKWWmWyl z2~>8lhk4w7L=`H77Jg9b^?`}<&Og3yu>d|9>8kqQrv6)NJSX~Zk$(O7)WD(ssATA; zo89lYOY}$6XxH7r_0w&=?%(-i((%wPo@~Mmb;t=`)GMAUQ<^Ami|4JW>=L;=yTq&o zh{#={U2(r`{8omGu7qvAiq?8e{briYT0FGj#aoc zYJDDdKl`UsHDtefc*nAb(XYPi{qU>rPX3dJs9e5?Up<$ib@r=FwPh%ZP?~ev+&()G zMSo~9m)V{jEi%ge;Tf)x%NKEtZhACjQ6i-F(Jt9Pay(ijq&y6(4zuPq@BL6!@*`yr zOfALnE;n~#xqagBp|r3z%Vlzc zoJZAM{%%}mk;Q=QG8yM0E|ZUc7+fa1QXUQR#KrG2-IDDNU1oIwm+AIO`cWpAzZ;i{ zb>HoCxx8b$beU+M;i62pnm^ZNwkK$L0D7r$pMaL5$;+ucyG9Q9c>u~R$^+25*)?4x znq)lxKSYz<&UxjE@{*ZVb+@52*EP21GCPw!_IIIwKDkVGrC&(pOIHf2&6=ilxs1|l zcC^?o-z(WGV%D-8mq)3*;`(kzsm1)N+Yp@VS5FE!uP#U4sbBqC<1?}K^Xtifej}A< z>i>-y<$p7k=cf8wGs^#VD$j|^Z>92l-M^E{JE>(=|NR-||1gzjJO4P9=j-NB{oBnk z+e39OU-D~FepU6qOzoK|)vYXwgG{VC-EEP~W+gH5k9ejTb6C{dlRK6&^Hk5w{ZAjW zpBoj+!f3F68zgQW<(byVia*nApUxIJcOEA*+{xJ0tZ$~>ZPUt|HaL0qUbL$}#B|z% zxgiGhyt)wcwU$Dv97#_nIi(5v_fvemJviUbt2Lxl-nEu)0Gv^t`T4ueG28i>%QHVS z&mV?VD&zV6pGwI|;AzN!i+gt&l|IJzdAdiJR(1N8xxP6+uX>Bu;Z(V|&K^!wq~~Q7)Iox2#@g@vSr;?V@IY}*^b&a>@KAFeE_@VL6t+d??SgGFOIi7YGPP2MAMe1 zc<7V^FOS{z*!7HMJdnzRci^#X%wry_<-zOW8xQdD;2oH6x(HfR&* z!Gfkyf`_*a3U%zYJh<9p*TXWts9;dMRsHj($pg=F85C;UWdjqewd)zsy6-p~C}F7T zUo^37!N=_^o;Hq~mam9(xB_1~GpOCF{j*QY^bT*nLg;aH(Ly?BXC_s5x|4E|^^$pMoh~Log+CEE75}v%}TNC;^5%Al{PEjCRmTx zIRq@Fon0I}WaHrAGM2UndC01#2OWBr=s|~~rC4@xFuo;-s|+3M_=+!A54v(uzMR&D z*)?~;m|Yxn2w@6l*Er}9!vtoB9Hv-yje`zJOu_6L2OYAQg4s0= zI;1fLvnv;M$YToTfycqB{*`8Gg85-5C~P=-$cJUm0ElG|`LOI60I}>LAC^4>AeKGk z!?I@p#PY!88!yJNf$mw1!Lo~kE`bb~T^w`?WWem=pi3YFW)}xt0vRy7I0(NTQ+Y%z zE)Kc`GT3!-&?S%ovx|d{hp~`xf!W1D#{*dkW)}xt0vWv7#X*-q2FxxFx&$&{c5%=p zkO8xcgD!y#m|Yxn31o=-E)Kc`GGKOb&?S%ovx|c+fee^k9CQg}!0h6nOCUpr-9 zAOmI>2VDXgFuOSD63Bqr#X*-q2FxxFx&$)JC0rbI31qxs^*G zLu4cGplOCSSg*Z!bOAOmLCIOr0{a6_VN96V;@pi3Y_Yq-Wimp}&0 zu5r*MkO8x69CQg}!0Z_Z<4YGEV+xi%;~S!-d&34w8*}Ff+!wEW0@9(#fEbadFV4lL4`dgD#y6m|Yxn>14p{ z;-E_>gU`7*=+eo6*~LMZP6o^_4!U$QV0LlPrIP`(i-Rtm4AI%eL6=Sj%q|YPbTVLe zanPlc0keyPE}aaRT^w}jWXNM&9CYbq!0h6nOD6+n7YAKB88Evz=+eo6*~LMZPKJ!% z#X*-&2FxxFx^yyNc5%?9lL51fgD#y6m|Yxn>13E2yEy35$$;6#L6=Sj%q|YPbTVLe zanPlc0keyPE}aakNG=Y#bTVLeanPlc0keyPE}aaRT^w}jWWem!4r1A}KZs=y2eItgAH=eUgIM~_02 z=+eo6*~LNjcs;(s&Xvoui-W8(x-h#q$c)f~nLO8J*~LNPs0*`;gD#y6c3m8F>14p{ z;-E_>17;ToT{;;&!^J_DP6o^_4!U$QV0LlPrIP`(i-Rtm447RUbm?S>p)L-(bTVLe zanPlc0keyPE}aaRT^w}jWWem=pi3u1w&CKSOD6+n7YAKB88Evz=+eo6*~LMZP6o^_ z4!U$Q14p{;-E_>!wlBNL6=Sj%q|YPbTVLe zanPlc0keyPE}aaRJsf03#{%DZvWJ6M_Uuhy*~39Bd-f)15bHaB14p{;-E_>17;ToT{;14p{;-E_>17;Toxo_2>g#fdQgWO}}!tCOp zODDsgw2Ol-oeY>=9CYbq!0h56dtx4cW~JX{*~LLtWjvUfYq~7EI7nXL!tCOpODBU$ z#>GLGP6os-4!U$QV0LlPrIVrmTpV=iWWem=pi3tMW)}xtIvFs#IOx*JfZ4@CmrjOA z=i;DCCj({|2VFWDFuOSD(#e3?#X*-&2FxxFx^yz+1TGG`bTVLeanPlc0keyPE}aaR zT^w}jWWem=pi3u1_Uz)IOD6+n7YAKB88Evz=+eo6*~LMZP6o^#4l*0`tjS>6!$B;2 z)?~2k;UJbhIvFf`IEZD>x+s=C9K^C`T@=eM4!U$QtjM@H=+eo6*~LMZP6o^_4!U$Q zV0LlPrIP`(i-Rtm3~QGz4!U$QV0LlPrIP`(i-Rtm447RUbm?Tk?BbwHC&Mbgi-Rtm z447RUbm?Tk?BbwHCj({|2VFWDFuOSD(#fzN=Hj4BCj({|2VFWDFuOSD(#e3?#X;`# zbLcm~?BbwHC&SLMi-Rtm447RUbm?Tk?BXE%(jI?ix6NhQ#X(j^J(yYVaane8klfsb z*~LNPs0*`;gD#y6c3m8F>14p{;-E_>Lo2&D=+eo6*~LMZP6o^_4!U$QV0LlPrIP`( zi-Rtm4DratL6=Sj%q|YPbTVLeanPlc0keyPE}aaRT^w}jWEi*p_HYo(o;4XP zyEy35$uJvqanPlc0keyPE}aaRT^w}jWWem=pi3tMW)}xtIvLhYTpV=iWWem=pi3tM zW)}xtIvFs#IOx*JfZ4@CmrjNiMi&QNIvFs#IOx*JfZ4@Cmre%EE)KeMGGKOb(4~`M zE#AdJmre%EE)KeMGGKOb(4~_Bvx|c+oeY>=9CYbq*tK$T(4~_Bvx|c+oeY>=9CYbq z!0h56_u4wN5MXw3(4~`Mf7iu9mre%EE)KeMGGKOb(4~_Bvx|f5<9Rs9?u5rOYpyQK zE)Ft3c42mLkX*)v*~LM);==6Wpi3u%vd6_imrjPZaB14p{ z;-E_>17;ToT{;<}hKqwPoeY>=9CYbq!0h6nOD6+n7YAKB888pb!K(h{M@N=KgMrmU zJ}i5ZP%L}Mhh=>_yEy0)$bi|! zL6<-V%q|YP1TtWDanL1@0keyPE`bb_H5Uh60vRy7IOr0{fZ4@Cmp}&0E)Kc`GGKOb z&?S&zS;NIamp}&0E)Kc`GGKOb&?S%ovx|c+fee^k9CQg}SO9c!&?S%ovx|c+fee^k z9CQg}!0h6nOCSSg7YAJe8J5aj9CQg}!0h6nOCSSg7YAJe88Evz=n}|)*~LMZK!!~v z7YAJe88Evz=n}|)*~LMZKnBb%4!Q&~V0LlPC6HnJ)x|-VKnBb%4!Q&~V0LlPC6EEL zi-T;UJ48KTc5#q>4-aNmb6u8Q`-9B9U6@__gJelA%&z@GJlciX#X*-q2D>f}x&$&{ zc5%=pkO8xcgD!y#m|Yxn31q4+pXA$we8fTpV=iWWem=pi3tMW)}xtIvFs#IOx*JfZ4@CmrjPP&c#8O zP6o^_4!U$QV0LlPrIP`(i-Rtm447RUbm?T6|F}5l(#e3?#X*-&2FxxFx^yyNc5%?9 zlL51fgD#y6D+MkNx^yyNc5%?9lL51fgD#y6m|Yxn>14p{;-E_>!14p{;-E_>17;ToT{;;syEy35$*}tD;-E_>17;ToT{;;syEy35$$;6#L6=Sj%q|YP zbTaJIxH#z2$$;6#L6=Sj%q|YPbTVLeanPlc0keyPE}aZJnl28ybTVLeanPlc0keyP zE}aaRT^w}jWWem=Ap8FgZ4Z0@E)KF+Cn}5xCa|A zSKeBAYxlj!l=w&|jQw+?>!X{C&8k19!+Gt#7Z$4ex0=6rB-rkIkLWkH^>jY{|J0XN z!ew^p#dUafCqAL0A0Pu2=I@oAbE8|M+oQXqmC>o@-D{)E`YY^>t3?QYMicK++p2#0 z+aKtXRsGIW<;1bH8q52VD??=Y9PcU*^^M@zi!cBFmlM{oTcE55|!x4S84&n>&BF>S8%N>~LL# z=*iN$t94@9% z;lMUf|Ki~QMIUr6^$#8nP!O;K^-mrSP{f-K)W3N+Ktaw9)IWPTKoR9SQ2*%R0L4Jm zf%;bu2dF$`E6e*qp?X1S@$u0e{ahctqW4>)tD}{1x_oCwzSq@EMt)#y+=Ik6uu zmBn&S>{s9YOth-cKOKt?tT>I;{TrB6-7=W*ljVN)`=1x1uPX^) zc_-E+`}yyGeScxG3VIe!IpL3)0qqCzkGt%(h;xp^g zyh;WoD<9FH>&=?+<#>!i}tyQOYg8C-pzqDI$cBBD~+f=hgd=+5^n9U;A{#@@Lrs%NAI+z_JCF zEwF5XWeY4@VA%r87Ff2xvIUkcuxx>43oKh;*#gTJShm2j1(q$aY=LD9EL&jN0?QUy zw!pFlmM!r9w?KP;-1kc-a9Yye=cEz%f;P3Uk8bE)Rt!}2kLj2qP^ju3l78fYZUy^^ h_Qa}2;n|tI-hMLo9y=X1ac|O{_Qa}28-+Oe{{frj790Qo literal 137188 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 Vlz!yCZhku5ome+gA+#Fl{|78LXT$&i diff --git a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyfit b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyfit old mode 100755 new mode 100644 index 02f02b0384b80ef7b74c8e37b6daa4ad5b5f4627..1850b93d9acd788cde192030cb71af50af11b118 GIT binary patch literal 244148 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

)u_Z@o{f)I28g8s05QlslNBvcu2+hSFV8q~ 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%0AG|Zv<7At=w?`03GSD`2)>J~7 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≈rBNKBiJ=nL|AcoUfsi|ItGV9{{9pN`3 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 literal 237960 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 diff --git a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyprj b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyprj index b2cb899..df39035 100755 --- a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyprj +++ b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.cyprj @@ -2666,6 +2666,276 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.svd b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.svd old mode 100755 new mode 100644 index 66a63b4..f326a56 --- a/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.svd +++ b/software/SCSI2SD/SCSI2SD.cydsn/SCSI2SD.svd @@ -7,18 +7,39 @@ 32 - USBFS - USBFS - 0x40004394 + SCSI_Out_Bits + No description available + 0x4000647C 0 - 0x1D0A + 0x1 registers - USBFS_PM_USB_CR0 - USB Power Mode Control Register 0 + SCSI_Out_Bits_CONTROL_REG + No description available + 0x0 + 8 + read-write + 0 + 0 + + + + + Debug_Timer + No description available + 0x400043A3 + + 0 + 0xB64 + registers + + + + Debug_Timer_GLOBAL_ENABLE + PM.ACT.CFG 0x0 8 read-write @@ -26,115 +47,157 @@ 0 - fsusbio_ref_en - No description available + en_timer + Enable timer/counters. + 0 + 3 + read-write + + + + + Debug_Timer_CONTROL + TMRx.CFG0 + 0xB5D + 8 + read-write + 0 + 0 + + + EN + Enables timer/comparator. 0 0 read-write - fsusbio_pd_n - No description available + MODE + Mode. (0 = Timer; 1 = Comparator) 1 1 read-write + + + Timer + Timer mode. CNT/CMP register holds timer count value. + 0 + + + Comparator + Comparator mode. CNT/CMP register holds comparator threshold value. + 1 + + - fsusbio_pd_pullup_n - No description available + ONESHOT + Timer stops upon reaching stop condition defined by TMR_CFG bits. Can be restarted by asserting TIMER RESET or disabling and re-enabling block. 2 2 read-write - - - - USBFS_PM_ACT_CFG - Active Power Mode Configuration Register - 0x11 - 8 - read-write - 0 - 0 - - - USBFS_PM_STBY_CFG - Standby Power Mode Configuration Register - 0x21 - 8 - read-write - 0 - 0 - - - USBFS_PRT_PS - Port Pin State Register - 0xE5D - 8 - read-write - 0 - 0 - - PinState_DP - No description available - 6 - 6 - read-only + CMP_BUFF + Buffer compare register. Compare register updates only on timer terminal count. + 3 + 3 + read-write - PinState_DM - No description available - 7 - 7 - read-only + INV + Invert sense of TIMEREN signal + 4 + 4 + read-write - - - - USBFS_PRT_DM0 - Port Drive Mode Register - 0xE5E - 8 - read-write - 0 - 0 - - DriveMode_DP - No description available - 6 - 6 + DB + Deadband mode--Deadband phases phi1 and phi2 are outputted on CMP and TC output pins respectively. + 5 + 5 read-write + + + Timer + CMP and TC are output. + 0 + + + Deadband + PHI1 (instead of CMP) and PHI2 (instead of TC) are output. + 1 + + - DriveMode_DM - No description available - 7 + DEADBAND_PERIOD + Deadband Period + 6 7 read-write - USBFS_PRT_DM1 - Port Drive Mode Register - 0xE5F + Debug_Timer_CONTROL2 + TMRx.CFG1 + 0xB5E 8 read-write 0 0 - PullUp_en_DP - No description available - 6 + IRQ_SEL + Irq selection. (0 = raw interrupts; 1 = status register interrupts) + 0 + 0 + read-write + + + FTC + First Terminal Count (FTC). Setting this bit forces a single pulse on the TC pin when first enabled. + 1 + 1 + read-write + + + Disable_FTC + Disable the single cycle pulse, which signifies the timer is starting. + 0 + + + Enable_FTC + Enable the single cycle pulse, which signifies the timer is starting. + 1 + + + + + DCOR + Disable Clear on Read (DCOR) of Status Register SR0. + 2 + 2 + read-write + + + DBMODE + Deadband mode (asynchronous/synchronous). CMP output pin is also affected when not in deadband mode (CFG0.DEADBAND). + 3 + 3 + read-write + + + CLK_BUS_EN_SEL + Digital Global Clock selection. + 4 6 read-write - PullUp_en_DM - No description available + BUS_CLK_SEL + Bus Clock selection. 7 7 read-write @@ -142,24 +205,94 @@ - USBFS_PRT_INP_DIS - Input buffer disable override - 0xE64 + Debug_Timer_CONTROL3_ + TMRx.CFG2 + 0xB5F 8 read-write 0 0 - seinput_dis_dp - No description available - 6 + TMR_CFG + Timer configuration (MODE = 0): 000 = Continuous; 001 = Pulsewidth; 010 = Period; 011 = Stop on IRQ + 0 + 1 + read-write + + + Continuous + Timer runs while EN bit of CFG0 register is set to '1'. + 0 + + + Pulsewidth + Timer runs from positive to negative edge of TIMEREN. + 1 + + + Period + Timer runs from positive to positive edge of TIMEREN. + 2 + + + Irq + Timer runs until IRQ. + 3 + + + + + COD + Clear On Disable (COD). Clears or gates outputs to zero. + 2 + 2 + read-write + + + ROD + Reset On Disable (ROD). Resets internal state of output logic + 3 + 3 + read-write + + + CMP_CFG + Comparator configurations + 4 6 read-write + + + Equal + Compare Equal + 0 + + + Less_than + Compare Less Than + 1 + + + Less_than_or_equal + Compare Less Than or Equal . + 2 + + + Greater + Compare Greater Than . + 3 + + + Greater_than_or_equal + Compare Greater Than or Equal + 4 + + - seinput_dis_dm - No description available + HW_EN + When set Timer Enable controls counting. 7 7 read-write @@ -167,182 +300,174 @@ - USBFS_EP0_DR0 - bmRequestType - 0x1C6C - 8 - read-write - 0 - 0 - - - USBFS_EP0_DR1 - bRequest - 0x1C6D - 8 - read-write - 0 - 0 - - - USBFS_EP0_DR2 - wValueLo - 0x1C6E - 8 + Debug_Timer_PERIOD + TMRx.PER0 - Assigned Period + 0xB61 + 16 read-write 0 0 - USBFS_EP0_DR3 - wValueHi - 0x1C6F - 8 + Debug_Timer_COUNTER + TMRx.CNT_CMP0 - Current Down Counter Value + 0xB63 + 16 read-write 0 0 + + + + SCSI_Out_Ctl + No description available + 0x40006577 + + 0 + 0x1 + registers + + - USBFS_EP0_DR4 - wIndexLo - 0x1C70 + SCSI_Out_Ctl_CONTROL_REG + No description available + 0x0 8 read-write 0 0 + + + + USBFS + USBFS + 0x40004394 + + 0 + 0x1D0A + registers + + - USBFS_EP0_DR5 - wIndexHi - 0x1C71 + USBFS_PM_USB_CR0 + USB Power Mode Control Register 0 + 0x0 8 read-write 0 0 + + + fsusbio_ref_en + No description available + 0 + 0 + read-write + + + fsusbio_pd_n + No description available + 1 + 1 + read-write + + + fsusbio_pd_pullup_n + No description available + 2 + 2 + read-write + + - USBFS_EP0_DR6 - lengthLo - 0x1C72 + USBFS_PM_ACT_CFG + Active Power Mode Configuration Register + 0x11 8 read-write 0 0 - USBFS_EP0_DR7 - lengthHi - 0x1C73 + USBFS_PM_STBY_CFG + Standby Power Mode Configuration Register + 0x21 8 read-write 0 0 - USBFS_CR0 - USB Control Register 0 - 0x1C74 + USBFS_PRT_PS + Port Pin State Register + 0xE5D 8 read-write 0 0 - device_address + PinState_DP No description available 6 - 0 + 6 read-only - usb_enable + PinState_DM No description available 7 7 - read-write + read-only - USBFS_CR1 - USB Control Register 1 - 0x1C75 + USBFS_PRT_DM0 + Port Drive Mode Register + 0xE5E 8 read-write 0 0 - reg_enable - No description available - 0 - 0 - read-write - - - enable_lock - No description available - 1 - 1 - read-write - - - bus_activity + DriveMode_DP No description available - 2 - 2 + 6 + 6 read-write - trim_offset_msb + DriveMode_DM No description available - 3 - 3 + 7 + 7 read-write - - USBFS_SIE_EP1_CR0 - The Endpoint1 Control Register - 0x1C7A - 8 - read-write - 0 - 0 - - - USBFS_USBIO_CR0 - USBIO Control Register 0 - 0x1C7C - 8 - read-write - 0 - 0 - - - rd - No description available - 0 - 0 - read-only - - - td - No description available - 5 - 5 - read-write - + + USBFS_PRT_DM1 + Port Drive Mode Register + 0xE5F + 8 + read-write + 0 + 0 + - tse0 + PullUp_en_DP No description available 6 6 read-write - ten + PullUp_en_DM No description available 7 7 @@ -351,316 +476,208 @@ - USBFS_USBIO_CR1 - USBIO Control Register 1 - 0x1C7E + USBFS_PRT_INP_DIS + Input buffer disable override + 0xE64 8 read-write 0 0 - dmo - No description available - 0 - 0 - read-only - - - dpo - No description available - 1 - 1 - read-only - - - usbpuen + seinput_dis_dp No description available - 2 - 2 + 6 + 6 read-write - iomode + seinput_dis_dm No description available - 5 - 5 + 7 + 7 read-write - USBFS_SIE_EP2_CR0 - The Endpoint2 Control Register - 0x1C8A - 8 - read-write - 0 - 0 - - - USBFS_SIE_EP3_CR0 - The Endpoint3 Control Register - 0x1C9A - 8 - read-write - 0 - 0 - - - USBFS_SIE_EP4_CR0 - The Endpoint4 Control Register - 0x1CAA - 8 - read-write - 0 - 0 - - - USBFS_SIE_EP5_CR0 - The Endpoint5 Control Register - 0x1CBA + USBFS_EP0_DR0 + bmRequestType + 0x1C6C 8 read-write 0 0 - USBFS_SIE_EP6_CR0 - The Endpoint6 Control Register - 0x1CCA + USBFS_EP0_DR1 + bRequest + 0x1C6D 8 read-write 0 0 - USBFS_SIE_EP7_CR0 - The Endpoint7 Control Register - 0x1CDA + USBFS_EP0_DR2 + wValueLo + 0x1C6E 8 read-write 0 0 - USBFS_SIE_EP8_CR0 - The Endpoint8 Control Register - 0x1CEA + USBFS_EP0_DR3 + wValueHi + 0x1C6F 8 read-write 0 0 - USBFS_BUF_SIZE - Dedicated Endpoint Buffer Size Register - 0x1CF8 + USBFS_EP0_DR4 + wIndexLo + 0x1C70 8 read-write 0 0 - USBFS_EP_ACTIVE - Endpoint Active Indication Register - 0x1CFA + USBFS_EP0_DR5 + wIndexHi + 0x1C71 8 read-write 0 0 - USBFS_EP_TYPE - Endpoint Type (IN/OUT) Indication - 0x1CFB + USBFS_EP0_DR6 + lengthLo + 0x1C72 8 read-write 0 0 - USBFS_USB_CLK_EN - USB Block Clock Enable Register - 0x1D09 + USBFS_EP0_DR7 + lengthHi + 0x1C73 8 read-write 0 0 - - - - Debug_Timer - No description available - 0x400043A3 - - 0 - 0xB64 - registers - - - Debug_Timer_GLOBAL_ENABLE - PM.ACT.CFG - 0x0 + USBFS_CR0 + USB Control Register 0 + 0x1C74 8 read-write 0 0 - en_timer - Enable timer/counters. - 0 - 3 + device_address + No description available + 6 + 0 + read-only + + + usb_enable + No description available + 7 + 7 read-write - Debug_Timer_CONTROL - TMRx.CFG0 - 0xB5D + USBFS_CR1 + USB Control Register 1 + 0x1C75 8 read-write 0 0 - EN - Enables timer/comparator. + reg_enable + No description available 0 0 read-write - MODE - Mode. (0 = Timer; 1 = Comparator) + enable_lock + No description available 1 1 read-write - - - Timer - Timer mode. CNT/CMP register holds timer count value. - 0 - - - Comparator - Comparator mode. CNT/CMP register holds comparator threshold value. - 1 - - - ONESHOT - Timer stops upon reaching stop condition defined by TMR_CFG bits. Can be restarted by asserting TIMER RESET or disabling and re-enabling block. + bus_activity + No description available 2 2 read-write - CMP_BUFF - Buffer compare register. Compare register updates only on timer terminal count. + trim_offset_msb + No description available 3 3 read-write - - INV - Invert sense of TIMEREN signal - 4 - 4 - read-write - - - DB - Deadband mode--Deadband phases phi1 and phi2 are outputted on CMP and TC output pins respectively. - 5 - 5 - read-write - - - Timer - CMP and TC are output. - 0 - - - Deadband - PHI1 (instead of CMP) and PHI2 (instead of TC) are output. - 1 - - - - - DEADBAND_PERIOD - Deadband Period - 6 - 7 - read-write - - Debug_Timer_CONTROL2 - TMRx.CFG1 - 0xB5E + USBFS_SIE_EP1_CR0 + The Endpoint1 Control Register + 0x1C7A 8 - read-write - 0 - 0 - - - IRQ_SEL - Irq selection. (0 = raw interrupts; 1 = status register interrupts) - 0 - 0 - read-write - - - FTC - First Terminal Count (FTC). Setting this bit forces a single pulse on the TC pin when first enabled. - 1 - 1 - read-write - - - Disable_FTC - Disable the single cycle pulse, which signifies the timer is starting. - 0 - - - Enable_FTC - Enable the single cycle pulse, which signifies the timer is starting. - 1 - - - + read-write + 0 + 0 + + + USBFS_USBIO_CR0 + USBIO Control Register 0 + 0x1C7C + 8 + read-write + 0 + 0 + - DCOR - Disable Clear on Read (DCOR) of Status Register SR0. - 2 - 2 - read-write + rd + No description available + 0 + 0 + read-only - DBMODE - Deadband mode (asynchronous/synchronous). CMP output pin is also affected when not in deadband mode (CFG0.DEADBAND). - 3 - 3 + td + No description available + 5 + 5 read-write - CLK_BUS_EN_SEL - Digital Global Clock selection. - 4 + tse0 + No description available + 6 6 read-write - BUS_CLK_SEL - Bus Clock selection. + ten + No description available 7 7 read-write @@ -668,176 +685,138 @@ - Debug_Timer_CONTROL3_ - TMRx.CFG2 - 0xB5F + USBFS_USBIO_CR1 + USBIO Control Register 1 + 0x1C7E 8 read-write 0 0 - TMR_CFG - Timer configuration (MODE = 0): 000 = Continuous; 001 = Pulsewidth; 010 = Period; 011 = Stop on IRQ + dmo + No description available 0 + 0 + read-only + + + dpo + No description available + 1 1 - read-write - - - Continuous - Timer runs while EN bit of CFG0 register is set to '1'. - 0 - - - Pulsewidth - Timer runs from positive to negative edge of TIMEREN. - 1 - - - Period - Timer runs from positive to positive edge of TIMEREN. - 2 - - - Irq - Timer runs until IRQ. - 3 - - + read-only - COD - Clear On Disable (COD). Clears or gates outputs to zero. + usbpuen + No description available 2 2 read-write - ROD - Reset On Disable (ROD). Resets internal state of output logic - 3 - 3 - read-write - - - CMP_CFG - Comparator configurations - 4 - 6 - read-write - - - Equal - Compare Equal - 0 - - - Less_than - Compare Less Than - 1 - - - Less_than_or_equal - Compare Less Than or Equal . - 2 - - - Greater - Compare Greater Than . - 3 - - - Greater_than_or_equal - Compare Greater Than or Equal - 4 - - - - - HW_EN - When set Timer Enable controls counting. - 7 - 7 + iomode + No description available + 5 + 5 read-write - Debug_Timer_PERIOD - TMRx.PER0 - Assigned Period - 0xB61 - 16 + USBFS_SIE_EP2_CR0 + The Endpoint2 Control Register + 0x1C8A + 8 read-write 0 0 - Debug_Timer_COUNTER - TMRx.CNT_CMP0 - Current Down Counter Value - 0xB63 - 16 + USBFS_SIE_EP3_CR0 + The Endpoint3 Control Register + 0x1C9A + 8 read-write 0 0 - - - - SCSI_Out_Ctl - No description available - 0x40006473 - - 0 - 0x1 - registers - - - SCSI_Out_Ctl_CONTROL_REG - No description available - 0x0 + USBFS_SIE_EP4_CR0 + The Endpoint4 Control Register + 0x1CAA 8 read-write 0 0 - - - - SCSI_Out_Bits - No description available - 0x40006470 - - 0 - 0x1 - registers - - - SCSI_Out_Bits_CONTROL_REG - No description available - 0x0 + USBFS_SIE_EP5_CR0 + The Endpoint5 Control Register + 0x1CBA 8 read-write 0 0 - - - - SD_Clk_Ctl - No description available - 0x40006472 - - 0 - 0x1 - registers - - - SD_Clk_Ctl_CONTROL_REG - No description available - 0x0 + USBFS_SIE_EP6_CR0 + The Endpoint6 Control Register + 0x1CCA + 8 + read-write + 0 + 0 + + + USBFS_SIE_EP7_CR0 + The Endpoint7 Control Register + 0x1CDA + 8 + read-write + 0 + 0 + + + USBFS_SIE_EP8_CR0 + The Endpoint8 Control Register + 0x1CEA + 8 + read-write + 0 + 0 + + + USBFS_BUF_SIZE + Dedicated Endpoint Buffer Size Register + 0x1CF8 + 8 + read-write + 0 + 0 + + + USBFS_EP_ACTIVE + Endpoint Active Indication Register + 0x1CFA + 8 + read-write + 0 + 0 + + + USBFS_EP_TYPE + Endpoint Type (IN/OUT) Indication + 0x1CFB + 8 + read-write + 0 + 0 + + + USBFS_USB_CLK_EN + USB Block Clock Enable Register + 0x1D09 8 read-write 0 @@ -848,7 +827,7 @@ SCSI_CTL_PHASE No description available - 0x40006475 + 0x40006472 0 0x1 diff --git a/software/SCSI2SD/SCSI2SD.cydsn/TopDesign/TopDesign.cysch b/software/SCSI2SD/SCSI2SD.cydsn/TopDesign/TopDesign.cysch index afb8fbddbb17670a052816846dc1abbe7b62273f..3602a0d79d14014cf3a09bae7a2db303212a9a57 100755 GIT binary patch literal 203382 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 diff --git a/software/SCSI2SD/SCSI2SD.cydsn/scsiTarget/scsiTarget.cysym b/software/SCSI2SD/SCSI2SD.cydsn/scsiTarget/scsiTarget.cysym index 2671f59329d771b20843194fa2dbaefb8d06de57..1eeb6a0efc1e2469eb706258ec6ed1e67399f702 100755 GIT binary patch delta 1968 zcma)7ZA@EL7(Va4t+z1wD5W2ljndH$TUtu#su@fdJ_cxva}GC9)K1;Rk8HpO$%soP z#yPhiGv)2a$C`(r5sH4*h8j4MX^GsLWnMwh}K1kRUlg4w5%WCut$CkOor2zGsM^*`3PO zP$&SoxM#$t%_M|mDyK&N%@r!E@Z@wAYm}ks9>DYConXKhX0|fq{>gg1itHfAnD9H~ zFzX$`fl0UdqiRB&)!>L^iG(;JQru$uL_TIs8Ni9(Py5k3Qvov z2&Pr>BPqq3RB@Th8sj!0E;Uu##vPGaW!LYI3)(cMm`2;|U{t=GT>-%^qA$D|TW7QJ z=RX_Gg`8|-)*fYrY8l!Qv5ELy3&$vj=04Y&JjrR*bwo-~p6}6@CZ|e8tZLY-^KnF( zNJlq905=uvLffTzyq%GUo;&GyV&UQ{0xN?StozHUuSgcE5b?9%eIdoy-3I8p^9Un< zg1*s@d zh{sk|jTbAA-TOf_AL7Z?6;fSCcn@HG*nRh{sUT5t)%alUs6ahk7#zfWdN~vJ>MOO!)@qQ}i}MIKwvBxbVD6$Zo1)VD4})_^GfKu9U9s#c|i~V E1FoYorvLx| delta 1492 zcmb7EU1$_n6y9%U!X)k*vYXwVopiIBxW*)1v)wcpgZL9AiO_1*VpA2X&|2TL)uhFO z)?lf|fPXi5G=XA4)FA#&an!b0#RrS1i`b%Up~-`yl18vtQZ~`vxw9J_l7hb6bG~!G z@0>Gt&b@~oDZ_s%r;n&mjic&`FlIAdjTjrFtyMhoXvy^&>HHPr-1ZrTs=T>t+9gV| z!LAi*?U{d53lApQ^6ocrn0?!wFjC!JHSn=7l5epeKJgnDlYjZ8g1M~cemyrv|NTxF zD<4mha#WYgr5f%1g%aHKwHu}Ev;G2hYoJ*hC%atHR4!j9{lT3aPP8Dqytc&R80((w z&k6dS+ZK$b0<7p+r&n`sX)>#Sza%##7`kk%-?9&E=HGkR>f^;DQ8s5)h&2tCdrO_- zQkm^tRib9ZbXq~&_^55Jm0%a^{jihGNS7nbo)1;C{b^suO9^ivy+ExMMeY5Tp>66s zfoHLSbfs~2_*Xgjjx8>C}y)Z}K1u~Qu(8gj#&G2^ ztDRA-!(uiz3I8i<(-6$+Os>m^y2B>Z2SHTB$*?nD4Pv^wQ?NQn*04t3XG_Ft=iep# zvD80li1EIXAq44#hDG|pQR15OIT6Ok`i1||jdfZN z!zfej4mv1MjAi;Suckg+jJl9D5HF2cWbV{qmUUGE9>28%?M{yLLzPaoZ`sEoR-4AHqGetrG3PU2@0JnA<1#?GlSO1ZZ6h z>_=I*!Q#eXt - + USB_Bootloader.svd @@ -27,13 +27,13 @@ .\Generated_Source\PSoC5\Cm3Iar.icf - - + + .\main.c - - + + .\Generated_Source\PSoC5\cyfitter_cfg.h .\Generated_Source\PSoC5\cyfitter_cfg.c .\Generated_Source\PSoC5\cymetadata.c @@ -111,41 +111,41 @@ .\Generated_Source\PSoC5\libelf.dll - - + + .\Generated_Source\PSoC5\ARM_GCC\CyComponentLibrary.a - - + + .\Generated_Source\PSoC5\ARM_Keil_MDK\CyComponentLibrary.a - - + + .\Generated_Source\PSoC5\IAR\CyComponentLibrary.a - + - + - + - + - + - + - + diff --git a/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.cycdx b/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.cycdx old mode 100755 new mode 100644 diff --git a/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.cyfit b/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.cyfit old mode 100755 new mode 100644 index 08bc6f0bee66dcac1b9b07e9db743e1d77b89353..e12d65d6043ed0ae93d925e2aad1b1ae65fdb96b GIT binary patch delta 32853 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 delta 32846 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 + @@ -1110,7 +1111,7 @@ - + @@ -1663,14 +1664,14 @@ C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_genv.vif C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\rtlpkg.vif - + - + diff --git a/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.rpt b/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.rpt old mode 100755 new mode 100644 index 3b14907..5aae516 --- a/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.rpt +++ b/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.rpt @@ -1,13 +1,13 @@ -Loading plugins phase: Elapsed time ==> 0s.481ms -Initializing data phase: Elapsed time ==> 3s.796ms +Loading plugins phase: Elapsed time ==> 1s.508ms +Initializing data phase: Elapsed time ==> 9s.403ms -cydsfit arguments: -.fdsnotice -.fdswarpdepfile=warp_dependencies.txt -.fdselabdepfile=elab_dependencies.txt -.fdsbldfile=generated_files.txt -p W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -d CY8C5267AXI-LP051 -s W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\Generated_Source\PSoC5 -- -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE +cydsfit arguments: -.fdsnotice -.fdswarpdepfile=warp_dependencies.txt -.fdselabdepfile=elab_dependencies.txt -.fdsbldfile=generated_files.txt -p Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -d CY8C5267AXI-LP051 -s Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\Generated_Source\PSoC5 -- -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -Elaboration phase: Elapsed time ==> 7s.874ms +Elaboration phase: Elapsed time ==> 9s.079ms -HDL generation phase: Elapsed time ==> 0s.173ms +HDL generation phase: Elapsed time ==> 0s.906ms | | | | | | | @@ -25,23 +25,23 @@ HDL generation phase: Elapsed time ==> 0s.173ms ====================================================================== Compiling: USB_Bootloader.v Program : C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\bin/warp.exe -Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 USB_Bootloader.v -verilog +Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 USB_Bootloader.v -verilog ====================================================================== ====================================================================== Compiling: USB_Bootloader.v Program : C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\bin/warp.exe -Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 USB_Bootloader.v -verilog +Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 USB_Bootloader.v -verilog ====================================================================== ====================================================================== Compiling: USB_Bootloader.v Program : vlogfe -Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 -verilog USB_Bootloader.v +Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 -verilog USB_Bootloader.v ====================================================================== vlogfe V6.3 IR 41: Verilog parser -Wed Apr 16 21:15:58 2014 +Tue May 20 21:24:38 2014 ====================================================================== @@ -51,7 +51,7 @@ Options : -yv2 -q10 USB_Bootloader.v ====================================================================== vpp V6.3 IR 41: Verilog Pre-Processor -Wed Apr 16 21:15:59 2014 +Tue May 20 21:24:39 2014 vpp: No errors. @@ -76,11 +76,11 @@ vlogfe: No errors. ====================================================================== Compiling: USB_Bootloader.v Program : tovif -Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 -verilog USB_Bootloader.v +Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 -verilog USB_Bootloader.v ====================================================================== tovif V6.3 IR 41: High-level synthesis -Wed Apr 16 21:15:59 2014 +Tue May 20 21:24:41 2014 Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\std.vhd'. Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\cypress.vhd'. @@ -91,8 +91,8 @@ Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\c Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_cnst.vif'. Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_mthv.vif'. Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_genv.vif'. -Linking 'W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.ctl'. -Linking 'W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.v'. +Linking 'Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.ctl'. +Linking 'Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.v'. tovif: No errors. @@ -100,11 +100,11 @@ tovif: No errors. ====================================================================== Compiling: USB_Bootloader.v Program : topld -Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 -verilog USB_Bootloader.v +Options : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 -verilog USB_Bootloader.v ====================================================================== topld V6.3 IR 41: Synthesis and optimization -Wed Apr 16 21:16:00 2014 +Tue May 20 21:24:44 2014 Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\std.vhd'. Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\cypress.vhd'. @@ -115,8 +115,8 @@ Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\c Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_cnst.vif'. Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_mthv.vif'. Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_genv.vif'. -Linking 'W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.ctl'. -Linking 'W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.v'. +Linking 'Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.ctl'. +Linking 'Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\codegentemp\USB_Bootloader.v'. Linking 'C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\lcpsoc3\stdlogic\cpsoc3.vif'. ---------------------------------------------------------- @@ -202,13 +202,13 @@ topld: No errors. CYPRESS_DIR : C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp Warp Program : C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\bin/warp.exe -Warp Arguments : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 USB_Bootloader.v -verilog +Warp Arguments : -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -dcpsoc3 USB_Bootloader.v -verilog -Warp synthesis phase: Elapsed time ==> 2s.967ms +Warp synthesis phase: Elapsed time ==> 9s.267ms -cyp3fit: V3.0.0.1539, Family: PSoC3, Started at: Wednesday, 16 April 2014 21:16:01 -Options: -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -d CY8C5267AXI-LP051 USB_Bootloader.v -verilog +cyp3fit: V3.0.0.1539, Family: PSoC3, Started at: Tuesday, 20 May 2014 21:24:47 +Options: -yv2 -v3 -ygs -q10 -o2 -.fftcfgtype=LE -ya -.fftprj=Z:\projects\SCSI2SD\git-3.4_debug\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\USB_Bootloader.cyprj -d CY8C5267AXI-LP051 USB_Bootloader.v -verilog Design parsing phase: Elapsed time ==> 0s.046ms @@ -1314,8 +1314,8 @@ EMIF Fixed Blocks : 0 : 1 : 1 : 0.00% LPF Fixed Blocks : 0 : 2 : 2 : 0.00% SAR Fixed Blocks : 0 : 1 : 1 : 0.00% -Technology Mapping: Elapsed time ==> 0s.015ms -Tech mapping phase: Elapsed time ==> 0s.281ms +Technology Mapping: Elapsed time ==> 0s.437ms +Tech mapping phase: Elapsed time ==> 0s.672ms Initial Analog Placement Results: @@ -1345,7 +1345,7 @@ IO_5@[IOP=(3)][IoId=(5)] : SD_PULLUP(4) (fixed) IO_7@[IOP=(15)][IoId=(7)] : \USBFS:Dm(0)\ (fixed) IO_6@[IOP=(15)][IoId=(6)] : \USBFS:Dp(0)\ (fixed) USB[0]@[FFB(USB,0)] : \USBFS:USB\ -Analog Placement phase: Elapsed time ==> 0s.109ms +Analog Placement phase: Elapsed time ==> 0s.078ms Analog Routing phase: Elapsed time ==> 0s.000ms @@ -1363,12 +1363,12 @@ Dump of CyP35AnalogRoutingResultsDB IsVddaHalfUsedForComp = False IsVddaHalfUsedForSar0 = False IsVddaHalfUsedForSar1 = False -Analog Code Generation phase: Elapsed time ==> 1s.031ms +Analog Code Generation phase: Elapsed time ==> 1s.828ms I2659: No Constrained paths were found. The placer will run in non-timing driven mode. -I2076: Total run-time: 1.6 sec. +I2076: Total run-time: 3.9 sec. @@ -2664,32 +2664,32 @@ Port | Pin | Fixed | Type | Drive Mode | Name | Connection -Digital component placer commit/Report: Elapsed time ==> 0s.017ms -Digital Placement phase: Elapsed time ==> 2s.641ms +Digital component placer commit/Report: Elapsed time ==> 0s.375ms +Digital Placement phase: Elapsed time ==> 8s.689ms Routing successful. -Digital Routing phase: Elapsed time ==> 3s.404ms +Digital Routing phase: Elapsed time ==> 6s.563ms -Bitstream and API generation phase: Elapsed time ==> 0s.796ms +Bitstream and API generation phase: Elapsed time ==> 26s.707ms -Bitstream verification phase: Elapsed time ==> 0s.171ms +Bitstream verification phase: Elapsed time ==> 0s.140ms Timing report is in USB_Bootloader_timing.html. -Static timing analysis phase: Elapsed time ==> 0s.812ms +Static timing analysis phase: Elapsed time ==> 7s.016ms Data reporting phase: Elapsed time ==> 0s.000ms -Design database save phase: Elapsed time ==> 0s.406ms +Design database save phase: Elapsed time ==> 0s.577ms -cydsfit: Elapsed time ==> 9s.781ms +cydsfit: Elapsed time ==> 52s.696ms -Fitter phase: Elapsed time ==> 9s.859ms -API generation phase: Elapsed time ==> 4s.706ms -Dependency generation phase: Elapsed time ==> 0s.028ms -Cleanup phase: Elapsed time ==> 0s.063ms +Fitter phase: Elapsed time ==> 52s.775ms +API generation phase: Elapsed time ==> 25s.205ms +Dependency generation phase: Elapsed time ==> 0s.796ms +Cleanup phase: Elapsed time ==> 0s.750ms diff --git a/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.svd b/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader.svd old mode 100755 new mode 100644 diff --git a/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader_timing.html b/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader_timing.html old mode 100755 new mode 100644 index 20322ae..4e0da6e --- a/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader_timing.html +++ b/software/SCSI2SD/USB_Bootloader.cydsn/USB_Bootloader_timing.html @@ -539,7 +539,7 @@ function getElementsByClass(rootNode, elemName, className) Project : USB_Bootloader Build Time : - 04/16/14 21:16:10 + 05/20/14 21:25:38 Device : CY8C5267AXI-LP051 Temperature : diff --git a/software/SCSI2SD/src/diagnostic.c b/software/SCSI2SD/src/diagnostic.c index f6899cd..17721c2 100755 --- a/software/SCSI2SD/src/diagnostic.c +++ b/software/SCSI2SD/src/diagnostic.c @@ -132,3 +132,28 @@ void scsiReceiveDiagnostic() } } +void scsiReadBuffer() +{ + // READ BUFFER + // Used for testing the speed of the SCSI interface. + uint8 mode = scsiDev.data[1] & 7; + + int allocLength = + (((uint32) scsiDev.cdb[6]) << 16) + + (((uint32) scsiDev.cdb[7]) << 8) + + scsiDev.cdb[8]; + + if (mode == 0) + { + uint32_t maxSize = MAX_SECTOR_SIZE - 4; + // 4 byte header + scsiDev.data[0] = 0; + scsiDev.data[1] = (maxSize >> 16) & 0xff; + scsiDev.data[2] = (maxSize >> 8) & 0xff; + scsiDev.data[3] = maxSize & 0xff; + + scsiDev.dataLen = + (allocLength > MAX_SECTOR_SIZE) ? MAX_SECTOR_SIZE : allocLength; + scsiDev.phase = DATA_IN; + } +} diff --git a/software/SCSI2SD/src/diagnostic.h b/software/SCSI2SD/src/diagnostic.h index e3f09be..4cba50c 100755 --- a/software/SCSI2SD/src/diagnostic.h +++ b/software/SCSI2SD/src/diagnostic.h @@ -19,5 +19,6 @@ void scsiSendDiagnostic(void); void scsiReceiveDiagnostic(void); +void scsiReadBuffer(void); #endif diff --git a/software/SCSI2SD/src/disk.c b/software/SCSI2SD/src/disk.c index 6ae4d85..3974ccf 100755 --- a/software/SCSI2SD/src/disk.c +++ b/software/SCSI2SD/src/disk.c @@ -66,7 +66,7 @@ static void doFormatUnitPatternHeader(void) int defectLength = ((((uint16_t)scsiDev.data[2])) << 8) + scsiDev.data[3]; - + int patternLength = ((((uint16_t)scsiDev.data[4 + 2])) << 8) + scsiDev.data[4 + 3]; @@ -181,7 +181,7 @@ static void doWrite(uint32 lba, uint32 blocks) transfer.multiBlock = 1; if (blocks > 1) scsiDev.needReconnect = 1; - sdPrepareWrite(); + sdWriteMultiSectorPrep(); } } @@ -217,7 +217,7 @@ static void doRead(uint32 lba, uint32 blocks) { transfer.multiBlock = 1; scsiDev.needReconnect = 1; - sdPrepareRead(); + sdReadMultiSectorPrep(); } } } @@ -463,43 +463,106 @@ void scsiDiskPoll() if (scsiDev.phase == DATA_IN && transfer.currentBlock != transfer.blocks) { - if (scsiDev.dataLen == 0) + int totalSDSectors = transfer.blocks * SDSectorsPerSCSISector(); + uint32_t sdLBA = SCSISector2SD(transfer.lba); + int buffers = sizeof(scsiDev.data) / SD_SECTOR_SIZE; + int prep = 0; + int i = 0; + int scsiActive = 0; + int sdActive = 0; + while ((i < totalSDSectors) && + (scsiDev.phase == DATA_IN) && + !scsiDev.resetFlag) { - if (transfer.multiBlock) + if ((sdActive == 1) && sdReadSectorDMAPoll()) { - sdReadSectorMulti(); + sdActive = 0; + prep++; } - else + else if ((sdActive == 0) && (prep - i < buffers) && (prep < totalSDSectors)) { - sdReadSectorSingle(); + // Start an SD transfer if we have space. + if (transfer.multiBlock) + { + sdReadMultiSectorDMA(&scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)]); + } + else + { + sdReadSingleSectorDMA(sdLBA + prep, &scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)]); + } + sdActive = 1; } - } - else if (scsiDev.dataPtr == scsiDev.dataLen) - { - scsiDev.dataLen = 0; - scsiDev.dataPtr = 0; - transfer.currentBlock++; - if (transfer.currentBlock >= transfer.blocks) + + if ((scsiActive == 1) && scsiWriteDMAPoll()) { - scsiDev.phase = STATUS; - scsiDiskReset(); + scsiActive = 0; + ++i; + } + else if ((scsiActive == 0) && ((prep - i) > 0)) + { + int dmaBytes = SD_SECTOR_SIZE; + if (i % SDSectorsPerSCSISector() == SDSectorsPerSCSISector() - 1) + { + dmaBytes = config->bytesPerSector % SD_SECTOR_SIZE; + if (dmaBytes == 0) dmaBytes = SD_SECTOR_SIZE; + } + scsiWriteDMA(&scsiDev.data[SD_SECTOR_SIZE * (i % buffers)], dmaBytes); + scsiActive = 1; } } + if (scsiDev.phase == DATA_IN) + { + scsiDev.phase = STATUS; + } + scsiDiskReset(); } else if (scsiDev.phase == DATA_OUT && transfer.currentBlock != transfer.blocks) { - sdWriteSector(); - // TODO FIX scsiDiskPoll() scsiDev.dataPtr = 0; - transfer.currentBlock++; - if (transfer.currentBlock >= transfer.blocks) + int totalSDSectors = transfer.blocks * SDSectorsPerSCSISector(); + int buffers = sizeof(scsiDev.data) / SD_SECTOR_SIZE; + int prep = 0; + int i = 0; + int scsiActive = 0; + int sdActive = 0; + while ((i < totalSDSectors) && + (scsiDev.phase == DATA_OUT) && + !scsiDev.resetFlag) { - scsiDev.dataLen = 0; - scsiDev.dataPtr = 0; - scsiDev.phase = STATUS; + if ((sdActive == 1) && sdWriteSectorDMAPoll()) + { + sdActive = 0; + i++; + } + else if ((sdActive == 0) && ((prep - i) > 0)) + { + // Start an SD transfer if we have space. + sdWriteMultiSectorDMA(&scsiDev.data[SD_SECTOR_SIZE * (i % buffers)]); + sdActive = 1; + } - scsiDiskReset(); + if ((scsiActive == 1) && scsiReadDMAPoll()) + { + scsiActive = 0; + ++prep; + } + else if ((scsiActive == 0) && ((prep - i) < buffers) && (prep < totalSDSectors)) + { + int dmaBytes = SD_SECTOR_SIZE; + if (prep % SDSectorsPerSCSISector() == SDSectorsPerSCSISector() - 1) + { + dmaBytes = config->bytesPerSector % SD_SECTOR_SIZE; + if (dmaBytes == 0) dmaBytes = SD_SECTOR_SIZE; + } + scsiReadDMA(&scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)], dmaBytes); + scsiActive = 1; + } + } + if (scsiDev.phase == DATA_OUT) + { + scsiDev.phase = STATUS; } + scsiDiskReset(); } } diff --git a/software/SCSI2SD/src/scsi.c b/software/SCSI2SD/src/scsi.c index fb91c1d..bbf4f67 100755 --- a/software/SCSI2SD/src/scsi.c +++ b/software/SCSI2SD/src/scsi.c @@ -423,6 +423,10 @@ static void process_Command() { scsiSendDiagnostic(); } + else if (command == 0x3C) + { + scsiReadBuffer(); + } else if ( !scsiModeCommand() && !scsiDiskCommand()) diff --git a/software/SCSI2SD/src/scsiPhy.c b/software/SCSI2SD/src/scsiPhy.c index fc42b4f..45362a7 100755 --- a/software/SCSI2SD/src/scsiPhy.c +++ b/software/SCSI2SD/src/scsiPhy.c @@ -22,6 +22,41 @@ #define scsiTarget_AUX_CTL (* (reg8 *) scsiTarget_datapath__DP_AUX_CTL_REG) +// DMA controller can't handle any more bytes. +#define MAX_DMA_BYTES 4095 + +// Private DMA variables. +static int dmaInProgress = 0; +// used when transferring > MAX_DMA_BYTES. +static uint8_t* dmaBuffer = NULL; +static uint32_t dmaSentCount = 0; +static uint32_t dmaTotalCount = 0; + +static uint8 scsiDmaRxChan = CY_DMA_INVALID_CHANNEL; +static uint8 scsiDmaTxChan = CY_DMA_INVALID_CHANNEL; + +// DMA descriptors +static uint8 scsiDmaRxTd[1] = { CY_DMA_INVALID_TD }; +static uint8 scsiDmaTxTd[1] = { CY_DMA_INVALID_TD }; + +// Source of dummy bytes for DMA reads +static uint8 dummyBuffer = 0xFF; + +volatile static uint8 rxDMAComplete; +volatile static uint8 txDMAComplete; + +CY_ISR_PROTO(scsiRxCompleteISR); +CY_ISR(scsiRxCompleteISR) +{ + rxDMAComplete = 1; +} + +CY_ISR_PROTO(scsiTxCompleteISR); +CY_ISR(scsiTxCompleteISR) +{ + txDMAComplete = 1; +} + CY_ISR_PROTO(scsiResetISR); CY_ISR(scsiResetISR) { @@ -29,7 +64,8 @@ CY_ISR(scsiResetISR) SCSI_RST_ClearInterrupt(); } -uint8 scsiReadDBxPins() +uint8_t +scsiReadDBxPins() { return (SCSI_ReadPin(SCSI_In_DBx_DB7) << 7) | @@ -39,79 +75,259 @@ uint8 scsiReadDBxPins() (SCSI_ReadPin(SCSI_In_DBx_DB3) << 3) | (SCSI_ReadPin(SCSI_In_DBx_DB2) << 2) | (SCSI_ReadPin(SCSI_In_DBx_DB1) << 1) | - SCSI_ReadPin(SCSI_In_DBx_DB0); + SCSI_ReadPin(SCSI_In_DBx_DB0); } -uint8 scsiReadByte(void) +uint8_t +scsiReadByte(void) { - while (!(CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 1) && - !scsiDev.resetFlag) {} - CY_SET_REG8(scsiTarget_datapath__F0_REG, 0); - while (!(CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 2) && - !scsiDev.resetFlag) {} - + while (scsiPhyTxFifoFull() && !scsiDev.resetFlag) {} + scsiPhyTx(0); + + while (scsiPhyRxFifoEmpty() && !scsiDev.resetFlag) {} + uint8_t val = scsiPhyRx(); + while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} - - return CY_GET_REG8(scsiTarget_datapath__F1_REG); + + return val; } -void scsiRead(uint8* data, uint32 count) +static void +scsiReadPIO(uint8* data, uint32 count) { int prep = 0; int i = 0; while (i < count && !scsiDev.resetFlag) { - if (prep < count && (CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 1)) + uint8_t status = scsiPhyStatus(); + + if (prep < count && (status & SCSI_PHY_TX_FIFO_NOT_FULL)) { - CY_SET_REG8(scsiTarget_datapath__F0_REG, 0); + scsiPhyTx(0); ++prep; } - if ((CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 2)) + if (status & SCSI_PHY_RX_FIFO_NOT_EMPTY) { - data[i] = CY_GET_REG8(scsiTarget_datapath__F1_REG); + data[i] = scsiPhyRx(); ++i; } } while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} - } -void scsiWriteByte(uint8 value) +static void +doRxSingleDMA(uint8* data, uint32 count) { - while (!(CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 1) && - !scsiDev.resetFlag) {} - CY_SET_REG8(scsiTarget_datapath__F0_REG, value); + // Prepare DMA transfer + dmaInProgress = 1; - // TODO maybe move this TX EMPTY check to scsiEnterPhase ? - //while (!(CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 4)) {} - while (!(CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 2) && - !scsiDev.resetFlag) {} - value = CY_GET_REG8(scsiTarget_datapath__F1_REG); + CyDmaTdSetConfiguration( + scsiDmaTxTd[0], + count, + CY_DMA_DISABLE_TD, // Disable the DMA channel when TD completes count bytes + SCSI_TX_DMA__TD_TERMOUT_EN // Trigger interrupt when complete + ); + CyDmaTdSetConfiguration( + scsiDmaRxTd[0], + count, + CY_DMA_DISABLE_TD, // Disable the DMA channel when TD completes count bytes + TD_INC_DST_ADR | + SCSI_RX_DMA__TD_TERMOUT_EN // Trigger interrupt when complete + ); + CyDmaTdSetAddress( + scsiDmaTxTd[0], + LO16((uint32)&dummyBuffer), + LO16((uint32)scsiTarget_datapath__F0_REG)); + CyDmaTdSetAddress( + scsiDmaRxTd[0], + LO16((uint32)scsiTarget_datapath__F1_REG), + LO16((uint32)data) + ); + + CyDmaChSetInitialTd(scsiDmaTxChan, scsiDmaTxTd[0]); + CyDmaChSetInitialTd(scsiDmaRxChan, scsiDmaRxTd[0]); + + // The DMA controller is a bit trigger-happy. It will retain + // a drq request that was triggered while the channel was + // disabled. + CyDmaClearPendingDrq(scsiDmaTxChan); + CyDmaClearPendingDrq(scsiDmaRxChan); + + txDMAComplete = 0; + rxDMAComplete = 0; + + CyDmaChEnable(scsiDmaRxChan, 1); + CyDmaChEnable(scsiDmaTxChan, 1); +} + +void +scsiReadDMA(uint8* data, uint32 count) +{ + dmaSentCount = 0; + dmaTotalCount = count; + dmaBuffer = data; + + uint32_t singleCount = (count > MAX_DMA_BYTES) ? MAX_DMA_BYTES : count; + doRxSingleDMA(data, singleCount); + dmaSentCount += count; +} + +int +scsiReadDMAPoll() +{ + if (txDMAComplete && rxDMAComplete && (scsiPhyStatus() & SCSI_PHY_TX_COMPLETE)) + { + if (dmaSentCount == dmaTotalCount) + { + dmaInProgress = 0; + while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} + return 1; + } + else + { + // Transfer was too large for a single DMA transfer. Continue + // to send remaining bytes. + uint32_t count = dmaTotalCount - dmaSentCount; + if (count > MAX_DMA_BYTES) count = MAX_DMA_BYTES; + doRxSingleDMA(dmaBuffer + dmaSentCount, count); + dmaSentCount += count; + return 0; + } + } + else + { + return 0; + } +} + +void +scsiRead(uint8_t* data, uint32_t count) +{ + if (count < 8) + { + scsiReadPIO(data, count); + } + else + { + scsiReadDMA(data, count); + while (!scsiReadDMAPoll() && !scsiDev.resetFlag) {}; + } +} + +void +scsiWriteByte(uint8 value) +{ + while (scsiPhyTxFifoFull() && !scsiDev.resetFlag) {} + scsiPhyTx(value); + + while (!(scsiPhyStatus() & SCSI_PHY_TX_COMPLETE) && !scsiDev.resetFlag) {} + scsiPhyRxFifoClear(); + while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} } -void scsiWrite(uint8* data, uint32 count) +static void +scsiWritePIO(uint8_t* data, uint32_t count) { - int prep = 0; int i = 0; while (i < count && !scsiDev.resetFlag) { - if (prep < count && (CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 1)) + if (!scsiPhyTxFifoFull()) { - CY_SET_REG8(scsiTarget_datapath__F0_REG, data[prep]); - ++prep; + scsiPhyTx(data[i]); + ++i; } - if ((CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) & 2)) + } + + while (!(scsiPhyStatus() & SCSI_PHY_TX_COMPLETE) && !scsiDev.resetFlag) {} + scsiPhyRxFifoClear(); +} + +static void +doTxSingleDMA(uint8* data, uint32 count) +{ + // Prepare DMA transfer + dmaInProgress = 1; + + CyDmaTdSetConfiguration( + scsiDmaTxTd[0], + count, + CY_DMA_DISABLE_TD, // Disable the DMA channel when TD completes count bytes + TD_INC_SRC_ADR | + SCSI_TX_DMA__TD_TERMOUT_EN // Trigger interrupt when complete + ); + CyDmaTdSetAddress( + scsiDmaTxTd[0], + LO16((uint32)data), + LO16((uint32)scsiTarget_datapath__F0_REG)); + CyDmaChSetInitialTd(scsiDmaTxChan, scsiDmaTxTd[0]); + + // The DMA controller is a bit trigger-happy. It will retain + // a drq request that was triggered while the channel was + // disabled. + CyDmaClearPendingDrq(scsiDmaTxChan); + + txDMAComplete = 0; + + CyDmaChEnable(scsiDmaTxChan, 1); +} + +void +scsiWriteDMA(uint8* data, uint32 count) +{ + dmaSentCount = 0; + dmaTotalCount = count; + dmaBuffer = data; + + uint32_t singleCount = (count > MAX_DMA_BYTES) ? MAX_DMA_BYTES : count; + doTxSingleDMA(data, singleCount); + dmaSentCount += count; +} + +int +scsiWriteDMAPoll() +{ + if (txDMAComplete && (scsiPhyStatus() & SCSI_PHY_TX_COMPLETE)) + { + if (dmaSentCount == dmaTotalCount) { - CY_GET_REG8(scsiTarget_datapath__F1_REG); - ++i; + scsiPhyRxFifoClear(); + dmaInProgress = 0; + while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} + return 1; + } + else + { + // Transfer was too large for a single DMA transfer. Continue + // to send remaining bytes. + uint32_t count = dmaTotalCount - dmaSentCount; + if (count > MAX_DMA_BYTES) count = MAX_DMA_BYTES; + doTxSingleDMA(dmaBuffer + dmaSentCount, count); + dmaSentCount += count; + return 0; } } - - while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} + else + { + return 0; + } +} + +void +scsiWrite(uint8_t* data, uint32_t count) +{ + if (count < 8) + { + scsiWritePIO(data, count); + } + else + { + scsiWriteDMA(data, count); + while (!scsiWriteDMAPoll() && !scsiDev.resetFlag) {}; + } } static void busSettleDelay(void) @@ -133,6 +349,20 @@ void scsiEnterPhase(int phase) void scsiPhyReset() { + if (dmaInProgress) + { + dmaInProgress = 0; + dmaBuffer = NULL; + dmaSentCount = 0; + dmaTotalCount = 0; + CyDmaChSetRequest(scsiDmaTxChan, CY_DMA_CPU_TERM_CHAIN); + CyDmaChSetRequest(scsiDmaRxChan, CY_DMA_CPU_TERM_CHAIN); + while (!(txDMAComplete && rxDMAComplete)) {} + + CyDmaChDisable(scsiDmaTxChan); + CyDmaChDisable(scsiDmaRxChan); + } + // Set the Clear bits for both SCSI device FIFOs scsiTarget_AUX_CTL = scsiTarget_AUX_CTL | 0x03; @@ -155,8 +385,43 @@ void scsiPhyReset() scsiTarget_AUX_CTL = scsiTarget_AUX_CTL & ~(0x03); } +static void scsiPhyInitDMA() +{ + // One-time init only. + if (scsiDmaTxChan == CY_DMA_INVALID_CHANNEL) + { + scsiDmaRxChan = + SCSI_RX_DMA_DmaInitialize( + 1, // Bytes per burst + 1, // request per burst + HI16(CYDEV_PERIPH_BASE), + HI16(CYDEV_SRAM_BASE) + ); + + scsiDmaTxChan = + SCSI_TX_DMA_DmaInitialize( + 1, // Bytes per burst + 1, // request per burst + HI16(CYDEV_SRAM_BASE), + HI16(CYDEV_PERIPH_BASE) + ); + + CyDmaChDisable(scsiDmaRxChan); + CyDmaChDisable(scsiDmaTxChan); + + scsiDmaRxTd[0] = CyDmaTdAllocate(); + scsiDmaTxTd[0] = CyDmaTdAllocate(); + + SCSI_RX_DMA_COMPLETE_StartEx(scsiRxCompleteISR); + SCSI_TX_DMA_COMPLETE_StartEx(scsiTxCompleteISR); + } +} + + void scsiPhyInit() { + scsiPhyInitDMA(); + SCSI_RST_ISR_StartEx(scsiResetISR); // Interrupts may have already been directed to the (empty) diff --git a/software/SCSI2SD/src/scsiPhy.h b/software/SCSI2SD/src/scsiPhy.h index 94c47e2..b6a1426 100755 --- a/software/SCSI2SD/src/scsiPhy.h +++ b/software/SCSI2SD/src/scsiPhy.h @@ -17,6 +17,26 @@ #ifndef SCSIPHY_H #define SCSIPHY_H +// Definitions to match the scsiTarget status register. +typedef enum +{ + SCSI_PHY_TX_FIFO_NOT_FULL = 0x01, + SCSI_PHY_RX_FIFO_NOT_EMPTY = 0x02, + + // The TX FIFO is empty and the state machine is in the idle state + SCSI_PHY_TX_COMPLETE = 0x10 +} SCSI_PHY_STATE; + +#define scsiPhyStatus() CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG) +#define scsiPhyTxFifoFull() ((scsiPhyStatus() & SCSI_PHY_TX_FIFO_NOT_FULL) == 0) +#define scsiPhyRxFifoEmpty() ((scsiPhyStatus() & SCSI_PHY_RX_FIFO_NOT_EMPTY) == 0) + +// Clear 4 byte fifo +#define scsiPhyRxFifoClear() scsiPhyRx(); scsiPhyRx(); scsiPhyRx(); scsiPhyRx(); + +#define scsiPhyTx(val) CY_SET_REG8(scsiTarget_datapath__F0_REG, (val)) +#define scsiPhyRx() CY_GET_REG8(scsiTarget_datapath__F1_REG) + #define SCSI_SetPin(pin) \ CyPins_SetPin((pin)); @@ -28,16 +48,22 @@ (CyPins_ReadPin((pin)) == 0) // Contains the odd-parity flag for a given 8-bit value. -extern const uint8 Lookup_OddParity[256]; +extern const uint8_t Lookup_OddParity[256]; void scsiPhyReset(void); void scsiPhyInit(void); -uint8 scsiReadByte(void); -void scsiRead(uint8* data, uint32 count); -void scsiWriteByte(uint8 value); -void scsiWrite(uint8* data, uint32 count); -uint8 scsiReadDBxPins(void); +uint8_t scsiReadByte(void); +void scsiRead(uint8_t* data, uint32_t count); +void scsiReadDMA(uint8_t* data, uint32_t count); +int scsiReadDMAPoll(); + +void scsiWriteByte(uint8_t value); +void scsiWrite(uint8_t* data, uint32_t count); +void scsiWriteDMA(uint8_t* data, uint32_t count); +int scsiWriteDMAPoll(); + +uint8_t scsiReadDBxPins(void); void scsiEnterPhase(int phase); diff --git a/software/SCSI2SD/src/sd.c b/software/SCSI2SD/src/sd.c index f11d2e0..19e02fd 100755 --- a/software/SCSI2SD/src/sd.c +++ b/software/SCSI2SD/src/sd.c @@ -29,6 +29,35 @@ // Global SdDevice sdDev; +// Private DMA variables. +static int dmaInProgress = 0; +static uint8 sdDMARxChan = CY_DMA_INVALID_CHANNEL; +static uint8 sdDMATxChan = CY_DMA_INVALID_CHANNEL; + +// DMA descriptors +static uint8 sdDMARxTd[1] = { CY_DMA_INVALID_TD }; +static uint8 sdDMATxTd[1] = { CY_DMA_INVALID_TD }; + +// Dummy location for DMA to send unchecked CRC bytes to +static uint8 discardBuffer; + +// Source of dummy SPI bytes for DMA +static uint8 dummyBuffer = 0xFF; + +volatile static uint8 rxDMAComplete; +volatile static uint8 txDMAComplete; + +CY_ISR_PROTO(sdRxISR); +CY_ISR(sdRxISR) +{ + rxDMAComplete = 1; +} +CY_ISR_PROTO(sdTxISR); +CY_ISR(sdTxISR) +{ + txDMAComplete = 1; +} + static uint8 sdCrc7(uint8* chr, uint8 cnt, uint8 crc) { uint8 a; @@ -126,12 +155,13 @@ static void sdClearStatus() } -void sdPrepareRead() +void +sdReadMultiSectorPrep() { uint8 v; uint32 scsiLBA = (transfer.lba + transfer.currentBlock); uint32 sdLBA = SCSISector2SD(scsiLBA); - + if (!sdDev.ccs) { sdLBA = sdLBA * SD_SECTOR_SIZE; @@ -153,10 +183,9 @@ void sdPrepareRead() } } -static void doReadSector(uint32_t numBytes) +static void +dmaReadSector(uint8_t* outputBuffer) { - int prep, i, guard; - // Wait for a start-block token. // Don't wait more than 100ms, which is the timeout recommended // in the standard. @@ -183,93 +212,60 @@ static void doReadSector(uint32_t numBytes) return; } - scsiEnterPhase(DATA_IN); + CyDmaTdSetConfiguration(sdDMARxTd[0], SD_SECTOR_SIZE, CY_DMA_DISABLE_TD, TD_INC_DST_ADR | SD_RX_DMA__TD_TERMOUT_EN); + CyDmaTdSetAddress(sdDMARxTd[0], LO16((uint32)SDCard_RXDATA_PTR), LO16((uint32)outputBuffer)); + CyDmaTdSetConfiguration(sdDMATxTd[0], SD_SECTOR_SIZE, CY_DMA_DISABLE_TD, SD_TX_DMA__TD_TERMOUT_EN); + CyDmaTdSetAddress(sdDMATxTd[0], LO16((uint32)&dummyBuffer), LO16((uint32)SDCard_TXDATA_PTR)); - // Quickly seed the FIFO - prep = 4; - CY_SET_REG8(SDCard_TXDATA_PTR, 0xFF); // Put a byte in the FIFO - CY_SET_REG8(SDCard_TXDATA_PTR, 0xFF); // Put a byte in the FIFO - CY_SET_REG8(SDCard_TXDATA_PTR, 0xFF); // Put a byte in the FIFO - CY_SET_REG8(SDCard_TXDATA_PTR, 0xFF); // Put a byte in the FIFO - - i = 0; - guard = 0; - - // This loop is critically important for performance. - // We stream data straight from the SDCard fifos into the SCSI component - // FIFO's. If the loop isn't fast enough, the transmit FIFO's will empty, - // and performance will suffer. Every clock cycle counts. - while (i < numBytes && !scsiDev.resetFlag) - { - uint8_t sdRxStatus = CY_GET_REG8(SDCard_RX_STATUS_PTR); - uint8_t scsiStatus = CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG); - - // Read from the SPIM fifo if there is room to stream the byte to the - // SCSI fifos - if((sdRxStatus & SDCard_STS_RX_FIFO_NOT_EMPTY) && - (scsiStatus & 1) // SCSI TX FIFO NOT FULL - ) - { - uint8_t val = CY_GET_REG8(SDCard_RXDATA_PTR); - CY_SET_REG8(scsiTarget_datapath__F0_REG, val); - guard++; + dmaInProgress = 1; + // The DMA controller is a bit trigger-happy. It will retain + // a drq request that was triggered while the channel was + // disabled. + CyDmaClearPendingDrq(sdDMATxChan); + CyDmaClearPendingDrq(sdDMARxChan); - // How many bytes are in a 4-byte FIFO ? 5. 4 FIFO bytes PLUS one byte - // being processed bit-by-bit. Artifically limit the number of bytes in the - // "combined" SPIM TX and RX FIFOS to the individual FIFO size. - // Unlike the SCSI component, SPIM doesn't check if there's room in - // the output FIFO before starting to transmit. + txDMAComplete = 0; + rxDMAComplete = 0; - if (prep < numBytes) - { - CY_SET_REG8(SDCard_TXDATA_PTR, 0xFF); // Put a byte in the FIFO - prep++; - } + // Re-loading the initial TD's here is very important, or else + // we'll be re-using the last-used TD, which would be the last + // in the chain (ie. CRC TD) + CyDmaChSetInitialTd(sdDMARxChan, sdDMARxTd[0]); + CyDmaChSetInitialTd(sdDMATxChan, sdDMATxTd[0]); - } - - // Byte has been sent out the SCSI interface. - if (scsiStatus & 2) // SCSI RX FIFO NOT EMPTY - { - CY_GET_REG8(scsiTarget_datapath__F1_REG); - ++i; - } - } + // There is no flow control, so we must ensure we can read the bytes + // before we start transmitting + CyDmaChEnable(sdDMARxChan, 1); + CyDmaChEnable(sdDMATxChan, 1); +} - // Read and discard remaining bytes. This applis for non-512 byte sectors, - // or if a SCSI reset was triggered. - while (guard < SD_SECTOR_SIZE) +int +sdReadSectorDMAPoll() +{ + if (rxDMAComplete && txDMAComplete) { - uint8_t sdRxStatus = CY_GET_REG8(SDCard_RX_STATUS_PTR); - if(sdRxStatus & SDCard_STS_RX_FIFO_NOT_EMPTY) - { - CY_GET_REG8(SDCard_RXDATA_PTR); - guard++; - } + // DMA transfer is complete + dmaInProgress = 0; - if ((prep - guard < 4) && (prep < SD_SECTOR_SIZE)) - { - CY_SET_REG8(SDCard_TXDATA_PTR, 0xFF); // Put a byte in the FIFO - prep++; - } - } + sdSpiByte(0xFF); // CRC + sdSpiByte(0xFF); // CRC - sdSpiByte(0xFF); // CRC - sdSpiByte(0xFF); // CRC - scsiDev.dataLen = numBytes; - scsiDev.dataPtr = numBytes; - - while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} + return 1; + } + else + { + return 0; + } } -static void doReadSectorSingle(uint32 sdBlock, int sdBytes) +void sdReadSingleSectorDMA(uint32_t lba, uint8_t* outputBuffer) { uint8 v; if (!sdDev.ccs) { - sdBlock = sdBlock * SD_SECTOR_SIZE; - } - v = sdCommandAndResponse(SD_READ_SINGLE_BLOCK, sdBlock); + lba = lba * SD_SECTOR_SIZE; + } + v = sdCommandAndResponse(SD_READ_SINGLE_BLOCK, lba); if (v) { scsiDiskReset(); @@ -282,52 +278,28 @@ static void doReadSectorSingle(uint32 sdBlock, int sdBytes) } else { - doReadSector(sdBytes); + dmaReadSector(outputBuffer); } } - -void sdReadSectorSingle() +void +sdReadMultiSectorDMA(uint8_t* outputBuffer) { - uint32 scsiLBA = (transfer.lba + transfer.currentBlock); - uint32 sdLBA = SCSISector2SD(scsiLBA); - - int sdSectors = SDSectorsPerSCSISector(); - int i; - for (i = 0; (i < sdSectors - 1) && (scsiDev.status != CHECK_CONDITION); ++i) - { - doReadSectorSingle(sdLBA + i, SD_SECTOR_SIZE); - } - - if (scsiDev.status != CHECK_CONDITION) - { - int remaining = config->bytesPerSector % SD_SECTOR_SIZE; - if (remaining == 0) remaining = SD_SECTOR_SIZE; // Full sector needed. - doReadSectorSingle(sdLBA + i, remaining); - } + // Pre: sdReadMultiSectorPrep called. + dmaReadSector(outputBuffer); } -void sdReadSectorMulti() -{ - // Pre: sdPrepareRead called. - int sdSectors = SDSectorsPerSCSISector(); - int i; - for (i = 0; (i < sdSectors - 1) && (scsiDev.status != CHECK_CONDITION); ++i) - { - doReadSector(SD_SECTOR_SIZE); - } - if (scsiDev.status != CHECK_CONDITION) +void sdCompleteRead() +{ + if (dmaInProgress) { - int remaining = config->bytesPerSector % SD_SECTOR_SIZE; - if (remaining == 0) remaining = SD_SECTOR_SIZE; // Full sector needed. - doReadSector(remaining); + // Not much choice but to wait until we've completed the transfer. + // Cancelling the transfer can't be done as we have no way to reset + // the SD card. + while (!sdReadSectorDMAPoll()) { /* spin */ } } -} - -void sdCompleteRead() -{ transfer.inProgress = 0; // We cannot send even a single "padding" byte, as we normally would when @@ -375,152 +347,110 @@ static void sdWaitWriteBusy() } while (val != 0xFF); } -static int doWriteSector(uint32_t numBytes) +void +sdWriteMultiSectorDMA(uint8_t* outputBuffer) { - int prep, i, guard; - int result, maxWait; - uint8 dataToken; - - scsiEnterPhase(DATA_OUT); - sdSpiByte(0xFC); // MULTIPLE byte start token - - prep = 0; - i = 0; - guard = 0; - - // This loop is critically important for performance. - // We stream data straight from the SCSI fifos into the SPIM component - // FIFO's. If the loop isn't fast enough, the transmit FIFO's will empty, - // and performance will suffer. Every clock cycle counts. - while (i < numBytes && !scsiDev.resetFlag) - { - uint8_t sdRxStatus = CY_GET_REG8(SDCard_RX_STATUS_PTR); - uint8_t scsiStatus = CY_GET_REG8(scsiTarget_StatusReg__STATUS_REG); - - // Read from the SCSI fifo if there is room to stream the byte to the - // SPIM fifos - // See sdReadSector for comment on guard (FIFO size is really 5) - if((guard - i < 4) && - (scsiDev.resetFlag || (scsiStatus & 2)) - ) // SCSI RX FIFO NOT EMPTY - { - uint8_t val = CY_GET_REG8(scsiTarget_datapath__F1_REG); - CY_SET_REG8(SDCard_TXDATA_PTR, val); - guard++; - } - - // Byte has been sent out the SPIM interface. - if (sdRxStatus & SDCard_STS_RX_FIFO_NOT_EMPTY) - { - CY_GET_REG8(SDCard_RXDATA_PTR); - ++i; - } - if (prep < numBytes && - (scsiDev.resetFlag || (scsiStatus & 1)) // SCSI TX FIFO NOT FULL - ) - { - // Trigger the SCSI component to read a byte - CY_SET_REG8(scsiTarget_datapath__F0_REG, 0xFF); - prep++; - } - } + CyDmaTdSetConfiguration(sdDMATxTd[0], SD_SECTOR_SIZE, CY_DMA_DISABLE_TD, TD_INC_SRC_ADR | SD_TX_DMA__TD_TERMOUT_EN); + CyDmaTdSetAddress(sdDMATxTd[0], LO16((uint32)outputBuffer), LO16((uint32)SDCard_TXDATA_PTR)); + CyDmaTdSetConfiguration(sdDMARxTd[0], SD_SECTOR_SIZE, CY_DMA_DISABLE_TD, SD_RX_DMA__TD_TERMOUT_EN); + CyDmaTdSetAddress(sdDMARxTd[0], LO16((uint32)SDCard_RXDATA_PTR), LO16((uint32)&discardBuffer)); - // Write remaining bytes as 0x00 - while (i < SD_SECTOR_SIZE) + dmaInProgress = 1; + // The DMA controller is a bit trigger-happy. It will retain + // a drq request that was triggered while the channel was + // disabled. + CyDmaClearPendingDrq(sdDMATxChan); + CyDmaClearPendingDrq(sdDMARxChan); + + txDMAComplete = 0; + rxDMAComplete = 0; + + // Re-loading the initial TD's here is very important, or else + // we'll be re-using the last-used TD, which would be the last + // in the chain (ie. CRC TD) + CyDmaChSetInitialTd(sdDMARxChan, sdDMARxTd[0]); + CyDmaChSetInitialTd(sdDMATxChan, sdDMATxTd[0]); + + // There is no flow control, so we must ensure we can read the bytes + // before we start transmitting + CyDmaChEnable(sdDMARxChan, 1); + CyDmaChEnable(sdDMATxChan, 1); +} + +int +sdWriteSectorDMAPoll() +{ + if (rxDMAComplete && txDMAComplete) { - uint8_t sdRxStatus = CY_GET_REG8(SDCard_RX_STATUS_PTR); + // DMA transfer is complete + dmaInProgress = 0; - if((guard - i < 4) && (guard < SD_SECTOR_SIZE)) - { - CY_SET_REG8(SDCard_TXDATA_PTR, 0x00); - guard++; - } + sdSpiByte(0x00); // CRC + sdSpiByte(0x00); // CRC - // Byte has been sent out the SPIM interface. - if (sdRxStatus & SDCard_STS_RX_FIFO_NOT_EMPTY) + // Don't wait more than 1s. + // My 2g Kingston micro-sd card doesn't respond immediately. + // My 16Gb card does. + int maxWait = 1000000; + uint8_t dataToken = sdSpiByte(0xFF); // Response + while (dataToken == 0xFF && maxWait-- > 0) { - CY_GET_REG8(SDCard_RXDATA_PTR); - ++i; + CyDelayUs(1); + dataToken = sdSpiByte(0xFF); } - } - - sdSpiByte(0x00); // CRC - sdSpiByte(0x00); // CRC - - // Don't wait more than 1s. - // My 2g Kingston micro-sd card doesn't respond immediately. - // My 16Gb card does. - maxWait = 1000000; - dataToken = sdSpiByte(0xFF); // Response - while (dataToken == 0xFF && maxWait-- > 0) - { - CyDelayUs(1); - dataToken = sdSpiByte(0xFF); - } - if (((dataToken & 0x1F) >> 1) != 0x2) // Accepted. - { - uint8 r1b, busy; + if (((dataToken & 0x1F) >> 1) != 0x2) // Accepted. + { + uint8 r1b, busy; - sdWaitWriteBusy(); + sdWaitWriteBusy(); - r1b = sdCommandAndResponse(SD_STOP_TRANSMISSION, 0); - (void) r1b; - sdSpiByte(0xFF); + r1b = sdCommandAndResponse(SD_STOP_TRANSMISSION, 0); + (void) r1b; + sdSpiByte(0xFF); - // R1b has an optional trailing "busy" signal. - do - { - busy = sdSpiByte(0xFF); - } while (busy == 0); + // R1b has an optional trailing "busy" signal. + do + { + busy = sdSpiByte(0xFF); + } while (busy == 0); - // Wait for the card to come out of busy. - sdWaitWriteBusy(); + // Wait for the card to come out of busy. + sdWaitWriteBusy(); - transfer.inProgress = 0; - scsiDiskReset(); - sdClearStatus(); + transfer.inProgress = 0; + scsiDiskReset(); + sdClearStatus(); - scsiDev.status = CHECK_CONDITION; - scsiDev.sense.code = HARDWARE_ERROR; - scsiDev.sense.asc = LOGICAL_UNIT_COMMUNICATION_FAILURE; - scsiDev.phase = STATUS; - result = 0; + scsiDev.status = CHECK_CONDITION; + scsiDev.sense.code = HARDWARE_ERROR; + scsiDev.sense.asc = LOGICAL_UNIT_COMMUNICATION_FAILURE; + scsiDev.phase = STATUS; + } + else + { + sdWaitWriteBusy(); + } + + return 1; } else { - sdWaitWriteBusy(); - result = 1; + return 0; } - - while (SCSI_ReadPin(SCSI_In_ACK) && !scsiDev.resetFlag) {} - - return result; } -int sdWriteSector() +void sdCompleteWrite() { - int result = 1; - // Pre: sdPrepareWrite called. - int sdSectors = SDSectorsPerSCSISector(); - int i; - for (i = 0; result && (i < sdSectors - 1) && (scsiDev.status != CHECK_CONDITION); ++i) - { - result = doWriteSector(SD_SECTOR_SIZE); - } - - if (result && scsiDev.status != CHECK_CONDITION) + if (dmaInProgress) { - int remaining = config->bytesPerSector % SD_SECTOR_SIZE; - if (remaining == 0) remaining = SD_SECTOR_SIZE; // Full sector needed. - result = doWriteSector(remaining); + // Not much choice but to wait until we've completed the transfer. + // Cancelling the transfer can't be done as we have no way to reset + // the SD card. + while (!sdWriteSectorDMAPoll()) { /* spin */ } } - return result; -} - -void sdCompleteWrite() -{ + transfer.inProgress = 0; uint8 r1, r2; @@ -669,6 +599,38 @@ bad: return 0; } +static void sdInitDMA() +{ + // One-time init only. + if (sdDMATxChan == CY_DMA_INVALID_CHANNEL) + { + sdDMATxChan = + SD_TX_DMA_DmaInitialize( + 1, // Bytes per burst + 1, // request per burst + HI16(CYDEV_SRAM_BASE), + HI16(CYDEV_PERIPH_BASE) + ); + + sdDMARxChan = + SD_RX_DMA_DmaInitialize( + 1, // Bytes per burst + 1, // request per burst + HI16(CYDEV_PERIPH_BASE), + HI16(CYDEV_SRAM_BASE) + ); + + CyDmaChDisable(sdDMATxChan); + CyDmaChDisable(sdDMARxChan); + + sdDMARxTd[0] = CyDmaTdAllocate(); + sdDMATxTd[0] = CyDmaTdAllocate(); + + SD_RX_DMA_COMPLETE_StartEx(sdRxISR); + SD_TX_DMA_COMPLETE_StartEx(sdTxISR); + } +} + int sdInit() { int result = 0; @@ -679,9 +641,17 @@ int sdInit() sdDev.ccs = 0; sdDev.capacity = 0; + sdInitDMA(); + SD_CS_Write(1); // Set CS inactive (active low) - SD_Init_Clk_Start(); // Turn on the slow 400KHz clock - SD_Clk_Ctl_Write(0); // Select the 400KHz clock source. + + // Set the SPI clock for 400kHz transfers + // 25MHz / 400kHz approx factor of 63. + uint16_t clkDiv25MHz = SD_Data_Clk_GetDividerRegister(); + SD_Data_Clk_SetDivider(clkDiv25MHz * 63); + // Wait for the clock to settle. + CyDelayUs(1); + SDCard_Start(); // Enable SPI hardware // Power on sequence. 74 clock cycles of a "1" while CS unasserted. @@ -708,24 +678,16 @@ int sdInit() v = sdCRCCommandAndResponse(SD_CRC_ON_OFF, 0); //crc off if(v){goto bad;} - // now set the sd card up for full speed + // now set the sd card back to full speed. // The SD Card spec says we can run SPI @ 25MHz - // But the PSoC 5LP SPIM datasheet says the most we can do is 18MHz. - // I've confirmed that no data is ever put into the RX FIFO when run at - // 20MHz or 25MHz. - // ... and then we get timing analysis failures if the BUS_CLK is over 62MHz. - // So we run the MASTER_CLK and BUS_CLK at 60MHz, and run the SPI clock at 30MHz - // (15MHz SPI transfer clock). SDCard_Stop(); - + // We can't run at full-speed with the pullup resistors enabled. SD_MISO_SetDriveMode(SD_MISO_DM_DIG_HIZ); SD_MOSI_SetDriveMode(SD_MOSI_DM_STRONG); SD_SCK_SetDriveMode(SD_SCK_DM_STRONG); - - SD_Data_Clk_Start(); // Turn on the fast clock - SD_Clk_Ctl_Write(1); // Select the fast clock source. - SD_Init_Clk_Stop(); // Stop the slow clock. + + SD_Data_Clk_SetDivider(clkDiv25MHz); CyDelayUs(1); SDCard_Start(); @@ -750,7 +712,7 @@ out: } -void sdPrepareWrite() +void sdWriteMultiSectorPrep() { uint8 v; diff --git a/software/SCSI2SD/src/sd.h b/software/SCSI2SD/src/sd.h index 4f1e9db..ffa4dd0 100755 --- a/software/SCSI2SD/src/sd.h +++ b/software/SCSI2SD/src/sd.h @@ -58,13 +58,16 @@ typedef struct extern SdDevice sdDev; int sdInit(void); -void sdPrepareWrite(void); -int sdWriteSector(void); + +void sdWriteMultiSectorPrep(void); +void sdWriteMultiSectorDMA(uint8_t* outputBuffer); +int sdWriteSectorDMAPoll(); void sdCompleteWrite(void); -void sdPrepareRead(void); -void sdReadSectorMulti(void); -void sdReadSectorSingle(void); +void sdReadMultiSectorPrep(void); +void sdReadMultiSectorDMA(uint8_t* outputBuffer); +void sdReadSingleSectorDMA(uint32_t lba, uint8_t* outputBuffer); +int sdReadSectorDMAPoll(); void sdCompleteRead(void); #endif -- 2.38.5