Added support for v4.2 boards
[SCSI2SD.git] / software / SCSI2SD / v4 / SCSI2SD.cydsn / Generated_Source / PSoC5 / CySpc.h
1 /*******************************************************************************
2 * File Name: CySpc.c
3 * Version 4.0
4 *
5 * Description:
6 *  Provides definitions for the System Performance Component API.
7 *  The SPC functions are not meant to be called directly by the user
8 *  application.
9 *
10 ********************************************************************************
11 * Copyright 2008-2013, Cypress Semiconductor Corporation.  All rights reserved.
12 * You may use this file only in accordance with the license, terms, conditions,
13 * disclaimers, and limitations in the end user license agreement accompanying
14 * the software package with which this file was provided.
15 *******************************************************************************/
16
17 #if !defined(CY_BOOT_CYSPC_H)
18 #define CY_BOOT_CYSPC_H
19
20 #include "cytypes.h"
21 #include "CyLib.h"
22 #include "cydevice_trm.h"
23
24
25 /***************************************
26 *    Global Variables
27 ***************************************/
28 extern uint8 SpcLockState;
29
30
31 /***************************************
32 *    Function Prototypes
33 ***************************************/
34 void     CySpcStart(void);
35 void     CySpcStop(void);
36 uint8    CySpcReadData(uint8 buffer[], uint8 size);
37 cystatus CySpcLoadMultiByte(uint8 array, uint16 address, const uint8 buffer[], uint8 size)\
38 ;
39 cystatus CySpcLoadRow(uint8 array, const uint8 buffer[], uint16 size);
40 cystatus CySpcWriteRow(uint8 array, uint16 address, uint8 tempPolarity, uint8 tempMagnitude)\
41 ;
42 cystatus CySpcEraseSector(uint8 array, uint8 sectorNumber);
43 cystatus CySpcGetTemp(uint8 numSamples);
44 cystatus CySpcLock(void);
45 void     CySpcUnlock(void);
46
47
48 /***************************************
49 *    API Constants
50 ***************************************/
51
52 #define CY_SPC_LOCKED                       (0x01u)
53 #define CY_SPC_UNLOCKED                     (0x00u)
54
55 /*******************************************************************************
56 * The Array ID indicates the unique ID of the SONOS array being accessed:
57 * - 0x00-0x3E : Flash Arrays
58 * - 0x3F      : Selects all Flash arrays simultaneously
59 * - 0x40-0x7F : Embedded EEPROM Arrays
60 *******************************************************************************/
61 #define CY_SPC_FIRST_FLASH_ARRAYID          (0x00u)
62 #define CY_SPC_LAST_FLASH_ARRAYID           (0x3Fu)
63 #define CY_SPC_FIRST_EE_ARRAYID             (0x40u)
64 #define CY_SPC_LAST_EE_ARRAYID              (0x7Fu)
65
66
67 #define CY_SPC_STATUS_DATA_READY_MASK       (0x01u)
68 #define CY_SPC_STATUS_IDLE_MASK             (0x02u)
69 #define CY_SPC_STATUS_CODE_MASK             (0xFCu)
70 #define CY_SPC_STATUS_CODE_SHIFT            (0x02u)
71
72 /* Status codes for the SPC. */
73 #define CY_SPC_STATUS_SUCCESS               (0x00u)   /* Operation Successful */
74 #define CY_SPC_STATUS_INVALID_ARRAY_ID      (0x01u)   /* Invalid Array ID for given command */
75 #define CY_SPC_STATUS_INVALID_2BYTEKEY      (0x02u)   /* Invalid 2-byte key */
76 #define CY_SPC_STATUS_ARRAY_ASLEEP          (0x03u)   /* Addressed Array is Asleep */
77 #define CY_SPC_STATUS_EXTERN_ACCESS         (0x04u)   /* External Access Failure (SPC is not in external access mode) */
78 #define CY_SPC_STATUS_INVALID_NUMBER        (0x05u)   /* Invalid 'N' Value for given command */
79 #define CY_SPC_STATUS_TEST_MODE             (0x06u)   /* Test Mode Failure (SPC is not in test mode) */
80 #define CY_SPC_STATUS_ALG_CSUM              (0x07u)   /* Smart Write Algorithm Checksum Failure */
81 #define CY_SPC_STATUS_PARAM_CSUM            (0x08u)   /* Smart Write Parameter Checksum Failure */
82 #define CY_SPC_STATUS_PROTECTION            (0x09u)   /* Protection Check Failure */
83 #define CY_SPC_STATUS_ADDRESS_PARAM         (0x0Au)   /* Invalid Address parameter for the given command */
84 #define CY_SPC_STATUS_COMMAND_CODE          (0x0Bu)   /* Invalid Command Code */
85 #define CY_SPC_STATUS_ROW_ID                (0x0Cu)   /* Invalid Row ID parameter for given command */
86 #define CY_SPC_STATUS_TADC_INPUT            (0x0Du)   /* Invalid input value for Get Temp & Get ADC commands */
87 #define CY_SPC_STATUS_BUSY                  (0xFFu)   /* SPC is busy */
88
89 #if(CY_PSOC5)
90
91     /* Wait-state pipeline */
92     #define CY_SPC_CPU_WAITPIPE_BYPASS      ((uint32)0x01u)
93
94 #endif  /* (CY_PSOC5) */
95
96
97 /***************************************
98 * Registers
99 ***************************************/
100
101 /* SPC CPU Data Register */
102 #define CY_SPC_CPU_DATA_REG         (* (reg8 *) CYREG_SPC_CPU_DATA )
103 #define CY_SPC_CPU_DATA_PTR         (  (reg8 *) CYREG_SPC_CPU_DATA )
104
105 /* SPC Status Register */
106 #define CY_SPC_STATUS_REG           (* (reg8 *) CYREG_SPC_SR )
107 #define CY_SPC_STATUS_PTR           (  (reg8 *) CYREG_SPC_SR )
108
109 /* Active Power Mode Configuration Register 0 */
110 #define CY_SPC_PM_ACT_REG           (* (reg8 *) CYREG_PM_ACT_CFG0 )
111 #define CY_SPC_PM_ACT_PTR           (  (reg8 *) CYREG_PM_ACT_CFG0 )
112
113 /* Standby Power Mode Configuration Register 0 */
114 #define CY_SPC_PM_STBY_REG          (* (reg8 *) CYREG_PM_STBY_CFG0 )
115 #define CY_SPC_PM_STBY_PTR          (  (reg8 *) CYREG_PM_STBY_CFG0 )
116
117 #if(CY_PSOC5)
118
119     /* Wait State Pipeline */
120     #define CY_SPC_CPU_WAITPIPE_REG     (* (reg32 *) CYREG_PANTHER_WAITPIPE )
121     #define CY_SPC_CPU_WAITPIPE_PTR     (  (reg32 *) CYREG_PANTHER_WAITPIPE )
122
123 #endif  /* (CY_PSOC5) */
124
125
126 /***************************************
127 * Macros
128 ***************************************/
129 #define CY_SPC_IDLE                 (0u != (CY_SPC_STATUS_REG & CY_SPC_STATUS_IDLE_MASK))
130 #define CY_SPC_BUSY                 (0u == (CY_SPC_STATUS_REG & CY_SPC_STATUS_IDLE_MASK))
131 #define CY_SPC_DATA_READY           (0u != (CY_SPC_STATUS_REG & CY_SPC_STATUS_DATA_READY_MASK))
132
133 /* SPC must be in idle state in order to obtain correct status */
134 #define CY_SPC_READ_STATUS          (CY_SPC_IDLE ? \
135                                      ((uint8)(CY_SPC_STATUS_REG >> CY_SPC_STATUS_CODE_SHIFT)) : \
136                                      ((uint8) CY_SPC_STATUS_BUSY))
137
138
139 /*******************************************************************************
140 * Following code are OBSOLETE and must not be used starting from cy_boot 3.0
141 *******************************************************************************/
142 #define FIRST_FLASH_ARRAYID         (CY_SPC_FIRST_FLASH_ARRAYID)
143 #define LAST_FLASH_ARRAYID          (CY_SPC_LAST_FLASH_ARRAYID)
144 #define FIRST_EE_ARRAYID            (CY_SPC_FIRST_EE_ARRAYID)
145 #define LAST_EE_ARRAYID             (CY_SPC_LAST_EE_ARRAYID)
146 #define SIZEOF_ECC_ROW              (CYDEV_ECC_ROW_SIZE)
147 #define SIZEOF_FLASH_ROW            (CYDEV_FLS_ROW_SIZE)
148 #define SIZEOF_EEPROM_ROW           (CYDEV_EEPROM_ROW_SIZE)
149
150
151 #endif /* (CY_BOOT_CYSPC_H) */
152
153
154 /* [] END OF FILE */