1 /*
2  * Copyright 2023-2024 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef _S32Z270_FEATURES_H_
8 #define _S32Z270_FEATURES_H_
9 
10 /* SOC module features */
11 
12 /* @brief PIT availability on the SoC. */
13 #define FSL_FEATURE_SOC_PIT_COUNT (2)
14 
15 /* PIT module features */
16 
17 /* @brief Number of channels (related to number of registers LDVALn, CVALn, TCTRLn, TFLGn). */
18 #define FSL_FEATURE_PIT_TIMER_COUNT (6)
19 /* @brief Has lifetime timer (related to existence of registers LTMR64L and LTMR64H). */
20 #define FSL_FEATURE_PIT_HAS_LIFETIME_TIMER (1)
21 /* @brief Has chain mode (related to existence of register bit field TCTRLn[CHN]). */
22 #define FSL_FEATURE_PIT_HAS_CHAIN_MODE (1)
23 /* @brief Has shared interrupt handler (has not individual interrupt handler for each channel). */
24 #define FSL_FEATURE_PIT_HAS_SHARED_IRQ_HANDLER (1)
25 /* @brief Has timer enable control. */
26 #define FSL_FEATURE_PIT_HAS_MDIS (1)
27 
28 
29 /* I3C module features */
30 
31 /* @brief Has TERM bitfile in MERRWARN register. */
32 #define FSL_FEATURE_I3C_HAS_NO_MERRWARN_TERM (0)
33 /* @brief SOC has no reset driver. */
34 #define FSL_FEATURE_I3C_HAS_NO_RESET (1)
35 /* @brief Use fixed BAMATCH count, do not provide editable BAMATCH. */
36 #define FSL_FEATURE_I3C_HAS_NO_SCONFIG_BAMATCH (0)
37 /* @brief Register SCONFIG do not have IDRAND bitfield. */
38 #define FSL_FEATURE_I3C_HAS_NO_SCONFIG_IDRAND (1)
39 /* @brief Register SCONFIG has HDROK bitfield. */
40 #define FSL_FEATURE_I3C_HAS_HDROK (1)
41 /* @brief Has ERRATA_051617. */
42 #define FSL_FEATURE_I3C_HAS_ERRATA_051617 (1)
43 
44 /* FLEXCAN module features */
45 
46 /* @brief Message buffer size */
47 #define FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(x) (128)
48 /* @brief Has doze mode support (register bit field MCR[DOZE]). */
49 #define FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT (0)
50 /* @brief Instance has doze mode support (register bit field MCR[DOZE]). */
51 #define FSL_FEATURE_FLEXCAN_INSTANCE_HAS_DOZE_MODE_SUPPORTn(x) (0)
52 /* @brief Has a glitch filter on the receive pin (register bit field MCR[WAKSRC]). */
53 #define FSL_FEATURE_FLEXCAN_HAS_GLITCH_FILTER (0)
54 /* @brief Has extended interrupt mask and flag register (register IMASK2, IFLAG2). */
55 #define FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER (1)
56 /* @brief Instance has extended bit timing register (register CBT). */
57 #define FSL_FEATURE_FLEXCAN_INSTANCE_HAS_EXTENDED_TIMING_REGISTERn(x) (1)
58 /* @brief Has a receive FIFO DMA feature (register bit field MCR[DMA]). */
59 #define FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA (1)
60 /* @brief Instance has a receive FIFO DMA feature (register bit field MCR[DMA]). */
61 #define FSL_FEATURE_FLEXCAN_INSTANCE_HAS_RX_FIFO_DMAn(x) (1)
62 /* @brief Remove CAN Engine Clock Source Selection from unsupported part. */
63 #define FSL_FEATURE_FLEXCAN_SUPPORT_ENGINE_CLK_SEL_REMOVE (0)
64 /* @brief Instance remove CAN Engine Clock Source Selection from unsupported part. */
65 #define FSL_FEATURE_FLEXCAN_INSTANCE_SUPPORT_ENGINE_CLK_SEL_REMOVEn(x) (0)
66 /* @brief Is affected by errata with ID 5641 (Module does not transmit a message that is enabled
67  * to be transmitted at a specific moment during the arbitration process). */
68 #define FSL_FEATURE_FLEXCAN_HAS_ERRATA_5641 (0)
69 /* @brief Is affected by errata with ID 5829 (FlexCAN: FlexCAN does not transmit a message that
70  * is enabled to be transmitted in a specific moment during the arbitration process). */
71 #define FSL_FEATURE_FLEXCAN_HAS_ERRATA_5829 (0)
72 /* @brief Is affected by errata with ID 6032 (FlexCAN: A frame with wrong ID or payload is
73  * transmitted into the CAN bus when the Message Buffer under transmission is either aborted
74  * or deactivated while the CAN bus is in the Bus Idle state). */
75 #define FSL_FEATURE_FLEXCAN_HAS_ERRATA_6032 (0)
76 /* @brief Is affected by errata with ID 9595 (FlexCAN: Corrupt frame possible if the Freeze Mode
77  * or the Low-Power Mode are entered during a Bus-Off state). */
78 #define FSL_FEATURE_FLEXCAN_HAS_ERRATA_9595 (0)
79 /* @brief Has CAN with Flexible Data rate (CAN FD) protocol. */
80 #define FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE (1)
81 /* @brief CAN instance support Flexible Data rate (CAN FD) protocol. */
82 #define FSL_FEATURE_FLEXCAN_INSTANCE_HAS_FLEXIBLE_DATA_RATEn(x) (1)
83 /* @brief Has memory error control (register MECR). */
84 #define FSL_FEATURE_FLEXCAN_HAS_MEMORY_ERROR_CONTROL (1)
85 /* @brief Init memory base 1 */
86 #define FSL_FEATURE_FLEXCAN_INIT_MEMORY_BASE_1 (0x80)
87 /* @brief Init memory size 1 */
88 #define FSL_FEATURE_FLEXCAN_INIT_MEMORY_SIZE_1 (0xA60)
89 /* @brief Init memory base 2 */
90 #define FSL_FEATURE_FLEXCAN_INIT_MEMORY_BASE_2 (0xC20)
91 /* @brief Init memory size 2 */
92 #define FSL_FEATURE_FLEXCAN_INIT_MEMORY_SIZE_2 (0x25E0)
93 /* @brief Has enhanced bit timing register (register EPRS, ENCBT, EDCBT and ETDC). */
94 #define FSL_FEATURE_FLEXCAN_HAS_ENHANCED_BIT_TIMING_REG (0)
95 /* @brief Has Pretended Networking mode support. */
96 #define FSL_FEATURE_FLEXCAN_HAS_PN_MODE (0)
97 /* @brief Has Enhanced Rx FIFO. */
98 #define FSL_FEATURE_FLEXCAN_HAS_ENHANCED_RX_FIFO (0)
99 /* @brief Does not support Supervisor Mode (bitfield MCR[SUPV]. */
100 #define FSL_FEATURE_FLEXCAN_HAS_NO_SUPV_SUPPORT (1)
101 /* @brief Does not support Memory Error Control (bitfield MECR[HANCEI]. */
102 #define FSL_FEATURE_FLEXCAN_HAS_NO_HANCEI_SUPPORT (1)
103 /* @brief Does not support Memory Error Control (bitfield MECR[FANCEI]. */
104 #define FSL_FEATURE_FLEXCAN_HAS_NO_FANCEI_SUPPORT (1)
105 /* @brief Does not support Memory Error Control (bitfield MECR[CEI]. */
106 #define FSL_FEATURE_FLEXCAN_HAS_NO_CEI_SUPPORT (1)
107 /* @brief Does not support Wake Up interrupt (bitfield MCR[WAKMSK]. */
108 #define FSL_FEATURE_FLEXCAN_HAS_NO_WAKMSK_SUPPORT (1)
109 /* @brief Does not support Self Wake Up (bitfield MCR[SLFWAK]. */
110 #define FSL_FEATURE_FLEXCAN_HAS_NO_SLFWAK_SUPPORT (1)
111 /* @brief Does not support Wake Up Source (bitfield MCR[WAKSRC]. */
112 #define FSL_FEATURE_FLEXCAN_HAS_NO_WAKSRC_SUPPORT (1)
113 /* @brief EDMA availability on the SoC. */
114 #define FSL_FEATURE_SOC_EDMA_COUNT (4)
115 
116 /* EDMA module features */
117 
118 /* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.) */
119 #define FSL_FEATURE_EDMA_MODULE_CHANNEL (32)
120 /* @brief If 8 bytes transfer supported. */
121 #define FSL_FEATURE_EDMA_SUPPORT_8_BYTES_TRANSFER (1)
122 /* @brief Number of channel for each EDMA instance, (only defined for soc with different channel numbers for difference instance) */
123 #define FSL_FEATURE_EDMA_INSTANCE_CHANNELn(x)  \
124     (((x) == DMA0) ? (32) : \
125     (((x) == DMA1) ? (16) : \
126     (((x) == DMA4) ? (16) : \
127     (((x) == DMA5) ? (16) : (0)))))
128 /* @brief Has register CH_CSR. */
129 /* @brief If 16 bytes transfer supported. */
130 #define FSL_FEATURE_EDMA_SUPPORT_16_BYTES_TRANSFER (1)
131 /* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.) */
132 #define FSL_FEATURE_EDMA_CHANNEL_GROUP_COUNT (0)
133 /* @brief Has register bit fields MP_CSR[GMRC]. */
134 #define FSL_FEATURE_EDMA_HAS_GLOBAL_MASTER_ID_REPLICATION (1)
135 /* @brief If 64 bytes transfer supported. */
136 #define FSL_FEATURE_EDMA_SUPPORT_64_BYTES_TRANSFER (1)
137 /* @brief Has DMA_Error interrupt vector. */
138 #define FSL_FEATURE_EDMA_HAS_ERROR_IRQ (1)
139 /* @brief Has register bit fields CR[CLM]. */
140 #define FSL_FEATURE_EDMA_HAS_CONTINUOUS_LINK_MODE (0)
141 /* @brief If 128 bytes transfer supported. */
142 #define FSL_FEATURE_EDMA_SUPPORT_128_BYTES_TRANSFER (0)
143 /* @brief Has register access permission. */
144 #define FSL_FEATURE_HAVE_DMA_CONTROL_REGISTER_ACCESS_PERMISSION (1)
145 /* @brief NBYTES must be multiple of 8 when using scatter gather. */
146 #define FSL_FEATURE_EDMA_HAS_ERRATA_51327 (0)
147 /* @brief If 128 bytes transfer supported. */
148 #define FSL_FEATURE_EDMA_INSTANCE_SUPPORT_128_BYTES_TRANSFERn(x) (0)
149 /* @brief If channel clock controlled independently */
150 #define FSL_FEATURE_EDMA_CHANNEL_HAS_OWN_CLOCK_GATE (1)
151 /* @brief NBYTES must be multiple of 8 when using scatter gather. */
152 #define FSL_FEATURE_EDMA_INSTANCE_HAS_ERRATA_51327n(x) (0)
153 /* @brief Has register CH_CSR. */
154 #define FSL_FEATURE_EDMA_HAS_CHANNEL_CONFIG (1)
155 /* @brief Has channel mux */
156 #define FSL_FEATURE_EDMA_HAS_CHANNEL_MUX (0)
157 /* @brief Has no register bit fields MP_CSR[EBW]. */
158 #define FSL_FEATURE_EDMA_HAS_NO_MP_CSR_EBW (0)
159 /* @brief Instance has channel mux */
160 #define FSL_FEATURE_EDMA_INSTANCE_HAS_CHANNEL_MUXn(x) (0)
161 /* @brief If dma has common clock gate */
162 #define FSL_FEATURE_EDMA_HAS_COMMON_CLOCK_GATE (0)
163 /* @brief Has register CH_SBR. */
164 #define FSL_FEATURE_EDMA_HAS_SBR (1)
165 /* @brief If dma channel IRQ support parameter */
166 #define FSL_FEATURE_EDMA_MODULE_CHANNEL_IRQ_ENTRY_SUPPORT_PARAMETER (0)
167 /* @brief Has no register bit fields CH_SBR[ATTR]. */
168 #define FSL_FEATURE_EDMA_HAS_NO_CH_SBR_ATTR (1)
169 /* @brief Has register bit field CH_CSR[SWAP]. */
170 #define FSL_FEATURE_EDMA_HAS_CHANNEL_SWAP_SIZE (0)
171 /* @brief Instance has register bit field CH_CSR[SWAP]. */
172 #define FSL_FEATURE_EDMA_INSTANCE_HAS_CHANNEL_SWAP_SIZEn(x) (0)
173 /* @brief Has register bit field CH_SBR[INSTR]. */
174 #define FSL_FEATURE_EDMA_HAS_CHANNEL_ACCESS_TYPE (0)
175 /* @brief Whether has prot register. */
176 #define FSL_FEATURE_EDMA_INSTANCE_HAS_PROT_REGISTERn(x) (0)
177 /* @brief Instance has register bit field CH_SBR[INSTR]. */
178 #define FSL_FEATURE_EDMA_INSTANCE_HAS_CHANNEL_ACCESS_TYPEn(x) (0)
179 /* @brief Whether has MP channel mux. */
180 #define FSL_FEATURE_EDMA_INSTANCE_HAS_MP_CHANNEL_MUXn(x) (0)
181 /* @brief Has register bit fields CH_MATTR[WCACHE], CH_MATTR[RCACHE]. */
182 #define FSL_FEATURE_EDMA_HAS_CHANNEL_MEMORY_ATTRIBUTE (0)
183 /* @brief Instance has register CH_MATTR. */
184 #define FSL_FEATURE_EDMA_INSTANCE_HAS_CHANNEL_MEMORY_ATTRIBUTEn(x) (0)
185 /* @brief Has register bit field CH_CSR[SIGNEXT]. */
186 #define FSL_FEATURE_EDMA_HAS_CHANNEL_SIGN_EXTENSION (0)
187 /* @brief Instance Has register bit field CH_CSR[SIGNEXT]. */
188 #define FSL_FEATURE_EDMA_INSTANCE_HAS_CHANNEL_SIGN_EXTENSIONn(x) (0)
189 /* @brief Has register bit field TCD_CSR[BWC]. */
190 #define FSL_FEATURE_EDMA_HAS_BANDWIDTH (1)
191 /* @brief Instance has register bit field TCD_CSR[BWC]. */
192 #define FSL_FEATURE_EDMA_INSTANCE_HAS_BANDWIDTHn(x) (1)
193 /* @brief Has register bit fields TCD_CSR[TMC]. */
194 #define FSL_FEATURE_EDMA_HAS_TRANSFER_MODE (0)
195 /* @brief Instance has register bit fields TCD_CSR[TMC]. */
196 #define FSL_FEATURE_EDMA_INSTANCE_HAS_TRANSFER_MODEn(x) (0)
197 
198 /* @brief edma5 has different tcd type. */
199 #define FSL_FEATURE_EDMA_TCD_TYPEn(x) (0)
200 /* @brief Has no register bit fields CH_SBR[SEC]. */
201 #define FSL_FEATURE_EDMA_HAS_NO_CH_SBR_SEC (1)
202 
203 /* DMAMUX module features */
204 
205 /* @brief Total number of DMA channels on all modules. Note: this is including channels used as offset. */
206 #define FSL_FEATURE_EDMA_DMAMUX_CHANNELS (80)
207 /* @brief DMAMUX availability on the SoC. */
208 #define FSL_FEATURE_SOC_DMAMUX_COUNT (5)
209 /* @brief Number of DMA channels (related to number of register CHCFGn). */
210 #define FSL_FEATURE_DMAMUX_MODULE_CHANNEL (16)
211 /* @brief Has the periodic trigger capability for the triggered DMA channel (register bit CHCFG0[TRIG]). */
212 #define FSL_FEATURE_DMAMUX_HAS_TRIG (1)
213 /* @brief Register CHCFGn width. */
214 #define FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH (8)
215 
216 /* I2C module features */
217 
218 /* @brief LPI2C availability on the SoC. */
219 #define FSL_FEATURE_SOC_LPI2C_COUNT (2)
220 /* @brief Has separate DMA RX and TX requests. */
221 #define FSL_FEATURE_LPI2C_HAS_SEPARATE_DMA_RX_TX_REQn(x) (1)
222 /* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available). */
223 #define FSL_FEATURE_LPI2C_FIFO_SIZEn(x) (8)
224 
225 /* DSPI module features */
226 
227 /* @brief DSPI availability on the SoC. */
228 #define FSL_FEATURE_SOC_DSPI_COUNT (1)
229 /* @brief Receive/transmit FIFO size in number of items. */
230 #define FSL_FEATURE_DSPI_FIFO_SIZEn(x) (16)
231 /* @brief Maximum transfer data width in bits. */
232 #define FSL_FEATURE_DSPI_MAX_DATA_WIDTH (16)
233 /* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS].) */
234 #define FSL_FEATURE_DSPI_MAX_CHIP_SELECT_COUNT (3)
235 /* @brief Number of chip select pins. */
236 #define FSL_FEATURE_DSPI_CHIP_SELECT_COUNT (3)
237 /* @brief Number of CTAR registers. */
238 #define FSL_FEATURE_DSPI_CTAR_COUNT (6)
239 /* @brief Has chip select strobe capability on the PCS5 pin. */
240 #define FSL_FEATURE_DSPI_HAS_CHIP_SELECT_STROBE (0)
241 /* @brief Has separated TXDATA and CMD FIFOs (register SREX). */
242 #define FSL_FEATURE_DSPI_HAS_SEPARATE_TXDATA_CMD_FIFO (0)
243 /* @brief Has 16-bit data transfer support. */
244 #define FSL_FEATURE_DSPI_16BIT_TRANSFERS (1)
245 /* @brief Has separate DMA RX and TX requests. */
246 #define FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(x) (1)
247 /* @brief Does not support Transmit FIFO Fill Flag (bitfield SR[TFUF]. */
248 #define FSL_FEATURE_DSPI_HAS_NO_SR_TFUF_SUPPORT (1)
249 /* @brief Does not support Transmit FIFO Underflow Request Enable (bitfield RSER[TFUF_RE]. */
250 #define FSL_FEATURE_DSPI_HAS_NO_RSER_TFUF_RE_SUPPORT (1)
251 /* @brief  Does not support Slave mode . */
252 #define FSL_FEATURE_DSPI_HAS_NO_SLAVE_SUPPORT (1)
253 
254 #endif /* _S32Z270_FEATURES_H_ */
255