| /* |
| * Copyright (c) 2021 Microchip Technology Inc. and its subsidiaries. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef _MEC172X_ECIA_H |
| #define _MEC172X_ECIA_H |
| |
| #include <stdint.h> |
| #include <stddef.h> |
| #include <devicetree.h> |
| |
| #define ECIA_BASE_ADDR DT_REG_ADDR(DT_NODELABEL(ecia)) |
| |
| #define MCHP_FIRST_GIRQ_NOS 8u |
| #define MCHP_LAST_GIRQ_NOS 26u |
| |
| /* |
| * GIRQ22 is not connected to the NVIC. GIRQ22 source wake the PLL from |
| * deep sleep to provide clocks for a data transfer. |
| */ |
| #define MCHP_ECIA_GIRQ_CLK_WAKE_ONLY 22u |
| |
| #define MCHP_ECIA_AGGR_BITMAP (BIT(8) | BIT(9) | BIT(10) | BIT(11) | \ |
| BIT(12) | BIT(22) | BIT(24) | BIT(25) | \ |
| BIT(26)) |
| |
| #define MCHP_ECIA_DIRECT_BITMAP (BIT(13) | BIT(14) | BIT(15) | BIT(16) | \ |
| BIT(17) | BIT(18) | BIT(19) | BIT(20) | \ |
| BIT(21) | BIT(23)) |
| |
| #define MCHP_ECIA_ALL_BITMAP GENMASK(26, 8) |
| |
| /* MEC172x implements 8 priority levels. ARM NVIC 0 = highest priority */ |
| #define MCHP_NVIC_NUM_PRI_BITS 3u |
| #define MCHP_NVIC_PRI_LO_VAL 7u |
| |
| /* |
| * ARM Cortex-M4 NVIC registers |
| * External sources are grouped by 32-bit registers. |
| * MEC172x has 181 external sources requiring 6 32-bit registers. |
| */ |
| #define MCHP_NUM_NVIC_REGS 6u |
| #define MCHP_NVIC_SET_EN_BASE 0xe000e100u |
| #define MCHP_NVIC_CLR_EN_BASE 0xe000e180u |
| #define MCHP_NVIC_SET_PEND_BASE 0xe000e200u |
| #define MCHP_NVIC_CLR_PEND_BASE 0xe000e280u |
| #define MCHP_NVIC_ACTIVE_BASE 0xe000e800u |
| #define MCHP_NVIC_PRI_BASE 0xe000e400u |
| |
| /* |
| * ECIA registers |
| * Implements 19 GIRQ's. GIRQ's aggregated interrupts source into one |
| * set of registers. |
| * For historical reason GIRQ's are numbered starting at 8 in the documentation. |
| * This numbering only affects the ECIA BLOCK_EN_SET, BLOCK_EN_CLR, and |
| * BLOCK_ACTIVE registers: GIRQ8 is bit[8], ..., GIRQ26 is bit[26]. |
| * |
| * Each GIRQ is composed of 5 32-bit registers. |
| * +00h = GIRQ08 Source containing RW/1C status bits |
| * +04h = Enable Set write 1 to bit(s) to enable the corresponding source(s) |
| * +08h = Read-Only Result = Source AND Enable-Set |
| * +0Ch = Enable Clear write 1 to bit(s) to disable the corresponding source(s) |
| * +14h = Reserved(unused). |
| * +18h = GIRQ09 Source |
| * ... |
| * There are three other registers at offset 0x200, 0x204, and 0x208 |
| * 0x200: BLOCK_EN_SET bit == 1 connects bit-wise OR of all GIRQn result |
| * to a NVIC GIRQn input. |
| * bit[8]=GIRQ8, bit[9]=GIRQ9, ..., bit[26]=GIRQ26 |
| * 0x204: BLOCK_EN_CLR bit == 1 disconnects bit-wise OR of GIRQn source |
| * bits from NVIC GIRQn input. |
| * 0x208: BLOCK_ACTIVE (read-only) |
| * bit[8]=GIRQ8 has at least one source bit enabled and active. |
| * ... |
| * bit[26]=GIRQ26 has at least one source bit enabled and active. |
| * The aggregated (bit-wise OR) of GIRQ08, ..., GIRQ26 are connected to NVIC |
| * external inputs except for GIRQ22. GIRQ22 is a special peripheral clock |
| * wake. If GIRQ22 sources are enabled activity on a source will re-enable the |
| * PLL long enough for a data transfer from the external device. If the data |
| * transfer requires the CPU to be notified the normal peripheral interrupt |
| * will then fire waking the CPU. If no CPU notification was enabled, HW will |
| * disable the PLL once the data transfer completes allowing the SoC to |
| * re-enter deep sleep. |
| * Aggregated GIRQ NVIC mapping: |
| * GIRQ08 -> NVIC 0 |
| * GIRQ09 -> NVIC 1 |
| * ... |
| * GIRQ21 -> NVIC 13 |
| * GIRQ22 No connection to NVIC |
| * GIRQ23 -> NVIC 14 |
| * ... |
| * GIRQ26 -> NVIC 17 |
| * NVIC 20 and above are direct mode(not aggregated) connections. |
| * Result bits in GIRQ's 13 - 21, and 23 can be directly connected to NVIC |
| * external inputs 20 and above. |
| */ |
| #define MCHP_ECIA_BLK_ENSET_OFS 0x200u |
| #define MCHP_ECIA_BLK_ENCLR_OFS 0x204u |
| #define MCHP_ECIA_BLK_ACTIVE_OFS 0x208u |
| |
| enum MCHP_GIRQ_IDS { |
| MCHP_GIRQ08_ID = 8, |
| MCHP_GIRQ09_ID, |
| MCHP_GIRQ10_ID, |
| MCHP_GIRQ11_ID, |
| MCHP_GIRQ12_ID, |
| MCHP_GIRQ13_ID, |
| MCHP_GIRQ14_ID, |
| MCHP_GIRQ15_ID, |
| MCHP_GIRQ16_ID, |
| MCHP_GIRQ17_ID, |
| MCHP_GIRQ18_ID, |
| MCHP_GIRQ19_ID, |
| MCHP_GIRQ20_ID, |
| MCHP_GIRQ21_ID, |
| MCHP_GIRQ22_ID, |
| MCHP_GIRQ23_ID, |
| MCHP_GIRQ24_ID, |
| MCHP_GIRQ25_ID, |
| MCHP_GIRQ26_ID, |
| MCHP_GIRQ_ID_MAX, |
| }; |
| |
| /* zero based index into ECIA_Type GIRQ[] */ |
| enum MCHP_GIRQ_INDEX { |
| GIRQ08_IDX = 0, |
| GIRQ09_IDX, |
| GIRQ10_IDX, |
| GIRQ11_IDX, |
| GIRQ12_IDX, |
| GIRQ13_IDX, |
| GIRQ14_IDX, |
| GIRQ15_IDX, |
| GIRQ16_IDX, |
| GIRQ17_IDX, |
| GIRQ18_IDX, |
| GIRQ19_IDX, |
| GIRQ20_IDX, |
| GIRQ21_IDX, |
| GIRQ22_IDX, |
| GIRQ23_IDX, |
| GIRQ24_IDX, |
| GIRQ25_IDX, |
| GIRQ26_IDX, |
| GIRQ_MAX_IDX |
| }; |
| |
| /* GIRQ08 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_GPIO_0140_GIRQ_POS 0 |
| #define MCHP_GPIO_0141_GIRQ_POS 1 |
| #define MCHP_GPIO_0142_GIRQ_POS 2 |
| #define MCHP_GPIO_0143_GIRQ_POS 3 |
| #define MCHP_GPIO_0144_GIRQ_POS 4 |
| #define MCHP_GPIO_0145_GIRQ_POS 5 |
| #define MCHP_GPIO_0146_GIRQ_POS 6 |
| #define MCHP_GPIO_0147_GIRQ_POS 7 |
| #define MCHP_GPIO_0150_GIRQ_POS 8 |
| #define MCHP_GPIO_0151_GIRQ_POS 9 |
| #define MCHP_GPIO_0152_GIRQ_POS 10 |
| #define MCHP_GPIO_0153_GIRQ_POS 11 |
| #define MCHP_GPIO_0154_GIRQ_POS 12 |
| #define MCHP_GPIO_0155_GIRQ_POS 13 |
| #define MCHP_GPIO_0156_GIRQ_POS 14 |
| #define MCHP_GPIO_0157_GIRQ_POS 15 |
| #define MCHP_GPIO_0160_GIRQ_POS 16 |
| #define MCHP_GPIO_0161_GIRQ_POS 17 |
| #define MCHP_GPIO_0162_GIRQ_POS 18 |
| #define MCHP_GPIO_0165_GIRQ_POS 21 |
| #define MCHP_GPIO_0166_GIRQ_POS 22 |
| #define MCHP_GPIO_0170_GIRQ_POS 24 |
| #define MCHP_GPIO_0171_GIRQ_POS 25 |
| #define MCHP_GPIO_0172_GIRQ_POS 26 |
| #define MCHP_GPIO_0173_GIRQ_POS 27 |
| #define MCHP_GPIO_0174_GIRQ_POS 28 |
| #define MCHP_GPIO_0175_GIRQ_POS 29 |
| |
| #define MCHP_GPIO_0140_GIRQ_BIT BIT(0) |
| #define MCHP_GPIO_0141_GIRQ_BIT BIT(1) |
| #define MCHP_GPIO_0142_GIRQ_BIT BIT(2) |
| #define MCHP_GPIO_0143_GIRQ_BIT BIT(3) |
| #define MCHP_GPIO_0144_GIRQ_BIT BIT(4) |
| #define MCHP_GPIO_0145_GIRQ_BIT BIT(5) |
| #define MCHP_GPIO_0146_GIRQ_BIT BIT(6) |
| #define MCHP_GPIO_0147_GIRQ_BIT BIT(7) |
| #define MCHP_GPIO_0150_GIRQ_BIT BIT(8) |
| #define MCHP_GPIO_0151_GIRQ_BIT BIT(9) |
| #define MCHP_GPIO_0152_GIRQ_BIT BIT(10) |
| #define MCHP_GPIO_0153_GIRQ_BIT BIT(11) |
| #define MCHP_GPIO_0154_GIRQ_BIT BIT(12) |
| #define MCHP_GPIO_0155_GIRQ_BIT BIT(13) |
| #define MCHP_GPIO_0156_GIRQ_BIT BIT(14) |
| #define MCHP_GPIO_0157_GIRQ_BIT BIT(15) |
| #define MCHP_GPIO_0160_GIRQ_BIT BIT(16) |
| #define MCHP_GPIO_0161_GIRQ_BIT BIT(17) |
| #define MCHP_GPIO_0162_GIRQ_BIT BIT(18) |
| #define MCHP_GPIO_0165_GIRQ_BIT BIT(21) |
| #define MCHP_GPIO_0166_GIRQ_BIT BIT(22) |
| #define MCHP_GPIO_0170_GIRQ_BIT BIT(24) |
| #define MCHP_GPIO_0171_GIRQ_BIT BIT(25) |
| #define MCHP_GPIO_0172_GIRQ_BIT BIT(26) |
| #define MCHP_GPIO_0173_GIRQ_BIT BIT(27) |
| #define MCHP_GPIO_0174_GIRQ_BIT BIT(28) |
| #define MCHP_GPIO_0175_GIRQ_BIT BIT(29) |
| #define MCHP_GPIO_0140_0176_GIRQ_MASK 0x3f67ffffu |
| |
| /* GIRQ09 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_GPIO_0100_GIRQ_POS 0 |
| #define MCHP_GPIO_0101_GIRQ_POS 1 |
| #define MCHP_GPIO_0102_GIRQ_POS 2 |
| #define MCHP_GPIO_0103_GIRQ_POS 3 |
| #define MCHP_GPIO_0104_GIRQ_POS 4 |
| #define MCHP_GPIO_0105_GIRQ_POS 5 |
| #define MCHP_GPIO_0106_GIRQ_POS 6 |
| #define MCHP_GPIO_0107_GIRQ_POS 7 |
| #define MCHP_GPIO_0110_GIRQ_POS 8 |
| #define MCHP_GPIO_0111_GIRQ_POS 9 |
| #define MCHP_GPIO_0112_GIRQ_POS 10 |
| #define MCHP_GPIO_0113_GIRQ_POS 11 |
| #define MCHP_GPIO_0114_GIRQ_POS 12 |
| #define MCHP_GPIO_0115_GIRQ_POS 13 |
| #define MCHP_GPIO_0116_GIRQ_POS 14 |
| #define MCHP_GPIO_0117_GIRQ_POS 15 |
| #define MCHP_GPIO_0120_GIRQ_POS 16 |
| #define MCHP_GPIO_0121_GIRQ_POS 17 |
| #define MCHP_GPIO_0122_GIRQ_POS 18 |
| #define MCHP_GPIO_0123_GIRQ_POS 19 |
| #define MCHP_GPIO_0124_GIRQ_POS 20 |
| #define MCHP_GPIO_0125_GIRQ_POS 21 |
| #define MCHP_GPIO_0126_GIRQ_POS 22 |
| #define MCHP_GPIO_0127_GIRQ_POS 23 |
| #define MCHP_GPIO_0130_GIRQ_POS 24 |
| #define MCHP_GPIO_0131_GIRQ_POS 25 |
| #define MCHP_GPIO_0132_GIRQ_POS 26 |
| #define MCHP_GPIO_0133_GIRQ_POS 27 |
| #define MCHP_GPIO_0134_GIRQ_POS 28 |
| #define MCHP_GPIO_0135_GIRQ_POS 29 |
| |
| #define MCHP_GPIO_0100_GIRQ_BIT BIT(0) |
| #define MCHP_GPIO_0101_GIRQ_BIT BIT(1) |
| #define MCHP_GPIO_0102_GIRQ_BIT BIT(2) |
| #define MCHP_GPIO_0103_GIRQ_BIT BIT(3) |
| #define MCHP_GPIO_0104_GIRQ_BIT BIT(4) |
| #define MCHP_GPIO_0105_GIRQ_BIT BIT(5) |
| #define MCHP_GPIO_0106_GIRQ_BIT BIT(6) |
| #define MCHP_GPIO_0107_GIRQ_BIT BIT(7) |
| #define MCHP_GPIO_0110_GIRQ_BIT BIT(8) |
| #define MCHP_GPIO_0111_GIRQ_BIT BIT(9) |
| #define MCHP_GPIO_0112_GIRQ_BIT BIT(10) |
| #define MCHP_GPIO_0113_GIRQ_BIT BIT(11) |
| #define MCHP_GPIO_0114_GIRQ_BIT BIT(12) |
| #define MCHP_GPIO_0115_GIRQ_BIT BIT(13) |
| #define MCHP_GPIO_0116_GIRQ_BIT BIT(14) |
| #define MCHP_GPIO_0117_GIRQ_BIT BIT(15) |
| #define MCHP_GPIO_0120_GIRQ_BIT BIT(16) |
| #define MCHP_GPIO_0121_GIRQ_BIT BIT(17) |
| #define MCHP_GPIO_0122_GIRQ_BIT BIT(18) |
| #define MCHP_GPIO_0123_GIRQ_BIT BIT(19) |
| #define MCHP_GPIO_0124_GIRQ_BIT BIT(20) |
| #define MCHP_GPIO_0125_GIRQ_BIT BIT(21) |
| #define MCHP_GPIO_0126_GIRQ_BIT BIT(22) |
| #define MCHP_GPIO_0127_GIRQ_BIT BIT(23) |
| #define MCHP_GPIO_0130_GIRQ_BIT BIT(24) |
| #define MCHP_GPIO_0131_GIRQ_BIT BIT(25) |
| #define MCHP_GPIO_0132_GIRQ_BIT BIT(26) |
| #define MCHP_GPIO_0133_GIRQ_BIT BIT(27) |
| #define MCHP_GPIO_0134_GIRQ_BIT BIT(28) |
| #define MCHP_GPIO_0135_GIRQ_BIT BIT(29) |
| #define MCHP_GPIO_0100_0136_GIRQ_MASK 0x3fffffffu |
| |
| /* GIRQ10 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_GPIO_0040_GIRQ_POS 0 |
| #define MCHP_GPIO_0041_GIRQ_POS 1 |
| #define MCHP_GPIO_0042_GIRQ_POS 2 |
| #define MCHP_GPIO_0043_GIRQ_POS 3 |
| #define MCHP_GPIO_0044_GIRQ_POS 4 |
| #define MCHP_GPIO_0045_GIRQ_POS 5 |
| #define MCHP_GPIO_0046_GIRQ_POS 6 |
| #define MCHP_GPIO_0047_GIRQ_POS 7 |
| #define MCHP_GPIO_0050_GIRQ_POS 8 |
| #define MCHP_GPIO_0051_GIRQ_POS 9 |
| #define MCHP_GPIO_0052_GIRQ_POS 10 |
| #define MCHP_GPIO_0053_GIRQ_POS 11 |
| #define MCHP_GPIO_0054_GIRQ_POS 12 |
| #define MCHP_GPIO_0055_GIRQ_POS 13 |
| #define MCHP_GPIO_0056_GIRQ_POS 14 |
| #define MCHP_GPIO_0057_GIRQ_POS 15 |
| #define MCHP_GPIO_0060_GIRQ_POS 16 |
| #define MCHP_GPIO_0061_GIRQ_POS 17 |
| #define MCHP_GPIO_0062_GIRQ_POS 18 |
| #define MCHP_GPIO_0063_GIRQ_POS 19 |
| #define MCHP_GPIO_0064_GIRQ_POS 20 |
| #define MCHP_GPIO_0065_GIRQ_POS 21 |
| #define MCHP_GPIO_0066_GIRQ_POS 22 |
| #define MCHP_GPIO_0067_GIRQ_POS 23 |
| #define MCHP_GPIO_0070_GIRQ_POS 24 |
| #define MCHP_GPIO_0071_GIRQ_POS 25 |
| #define MCHP_GPIO_0072_GIRQ_POS 26 |
| #define MCHP_GPIO_0073_GIRQ_POS 27 |
| #define MCHP_GPIO_0074_GIRQ_POS 28 |
| #define MCHP_GPIO_0075_GIRQ_POS 29 |
| #define MCHP_GPIO_0076_GIRQ_POS 30 |
| |
| #define MCHP_GPIO_0040_GIRQ_BIT BIT(0) |
| #define MCHP_GPIO_0041_GIRQ_BIT BIT(1) |
| #define MCHP_GPIO_0042_GIRQ_BIT BIT(2) |
| #define MCHP_GPIO_0043_GIRQ_BIT BIT(3) |
| #define MCHP_GPIO_0044_GIRQ_BIT BIT(4) |
| #define MCHP_GPIO_0045_GIRQ_BIT BIT(5) |
| #define MCHP_GPIO_0046_GIRQ_BIT BIT(6) |
| #define MCHP_GPIO_0047_GIRQ_BIT BIT(7) |
| #define MCHP_GPIO_0050_GIRQ_BIT BIT(8) |
| #define MCHP_GPIO_0051_GIRQ_BIT BIT(9) |
| #define MCHP_GPIO_0052_GIRQ_BIT BIT(10) |
| #define MCHP_GPIO_0053_GIRQ_BIT BIT(11) |
| #define MCHP_GPIO_0054_GIRQ_BIT BIT(12) |
| #define MCHP_GPIO_0055_GIRQ_BIT BIT(13) |
| #define MCHP_GPIO_0056_GIRQ_BIT BIT(14) |
| #define MCHP_GPIO_0057_GIRQ_BIT BIT(15) |
| #define MCHP_GPIO_0060_GIRQ_BIT BIT(16) |
| #define MCHP_GPIO_0061_GIRQ_BIT BIT(17) |
| #define MCHP_GPIO_0062_GIRQ_BIT BIT(18) |
| #define MCHP_GPIO_0063_GIRQ_BIT BIT(19) |
| #define MCHP_GPIO_0064_GIRQ_BIT BIT(20) |
| #define MCHP_GPIO_0065_GIRQ_BIT BIT(21) |
| #define MCHP_GPIO_0066_GIRQ_BIT BIT(22) |
| #define MCHP_GPIO_0067_GIRQ_BIT BIT(23) |
| #define MCHP_GPIO_0070_GIRQ_BIT BIT(24) |
| #define MCHP_GPIO_0071_GIRQ_BIT BIT(25) |
| #define MCHP_GPIO_0072_GIRQ_BIT BIT(26) |
| #define MCHP_GPIO_0073_GIRQ_BIT BIT(27) |
| #define MCHP_GPIO_0074_GIRQ_BIT BIT(28) |
| #define MCHP_GPIO_0075_GIRQ_BIT BIT(29) |
| #define MCHP_GPIO_0076_GIRQ_BIT BIT(30) |
| #define MCHP_GPIO_0040_0076_GIRQ_MASK 0x7fffffffu |
| |
| /* GIRQ11 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_GPIO_0000_GIRQ_POS 0 |
| #define MCHP_GPIO_0001_GIRQ_POS 1 |
| #define MCHP_GPIO_0002_GIRQ_POS 2 |
| #define MCHP_GPIO_0003_GIRQ_POS 3 |
| #define MCHP_GPIO_0004_GIRQ_POS 4 |
| #define MCHP_GPIO_0005_GIRQ_POS 5 |
| #define MCHP_GPIO_0006_GIRQ_POS 6 |
| #define MCHP_GPIO_0007_GIRQ_POS 7 |
| #define MCHP_GPIO_0010_GIRQ_POS 8 |
| #define MCHP_GPIO_0011_GIRQ_POS 9 |
| #define MCHP_GPIO_0012_GIRQ_POS 10 |
| #define MCHP_GPIO_0013_GIRQ_POS 11 |
| #define MCHP_GPIO_0014_GIRQ_POS 12 |
| #define MCHP_GPIO_0015_GIRQ_POS 13 |
| #define MCHP_GPIO_0016_GIRQ_POS 14 |
| #define MCHP_GPIO_0017_GIRQ_POS 15 |
| #define MCHP_GPIO_0020_GIRQ_POS 16 |
| #define MCHP_GPIO_0021_GIRQ_POS 17 |
| #define MCHP_GPIO_0022_GIRQ_POS 18 |
| #define MCHP_GPIO_0023_GIRQ_POS 19 |
| #define MCHP_GPIO_0024_GIRQ_POS 20 |
| #define MCHP_GPIO_0025_GIRQ_POS 21 |
| #define MCHP_GPIO_0026_GIRQ_POS 22 |
| #define MCHP_GPIO_0027_GIRQ_POS 23 |
| #define MCHP_GPIO_0030_GIRQ_POS 24 |
| #define MCHP_GPIO_0031_GIRQ_POS 25 |
| #define MCHP_GPIO_0032_GIRQ_POS 26 |
| #define MCHP_GPIO_0033_GIRQ_POS 27 |
| #define MCHP_GPIO_0034_GIRQ_POS 28 |
| #define MCHP_GPIO_0035_GIRQ_POS 29 |
| #define MCHP_GPIO_0036_GIRQ_POS 30 |
| |
| #define MCHP_GPIO_0000_GIRQ_BIT BIT(0) |
| #define MCHP_GPIO_0001_GIRQ_BIT BIT(1) |
| #define MCHP_GPIO_0002_GIRQ_BIT BIT(2) |
| #define MCHP_GPIO_0003_GIRQ_BIT BIT(3) |
| #define MCHP_GPIO_0004_GIRQ_BIT BIT(4) |
| #define MCHP_GPIO_0005_GIRQ_BIT BIT(5) |
| #define MCHP_GPIO_0006_GIRQ_BIT BIT(6) |
| #define MCHP_GPIO_0007_GIRQ_BIT BIT(7) |
| #define MCHP_GPIO_0010_GIRQ_BIT BIT(8) |
| #define MCHP_GPIO_0011_GIRQ_BIT BIT(9) |
| #define MCHP_GPIO_0012_GIRQ_BIT BIT(10) |
| #define MCHP_GPIO_0013_GIRQ_BIT BIT(11) |
| #define MCHP_GPIO_0014_GIRQ_BIT BIT(12) |
| #define MCHP_GPIO_0015_GIRQ_BIT BIT(13) |
| #define MCHP_GPIO_0016_GIRQ_BIT BIT(14) |
| #define MCHP_GPIO_0017_GIRQ_BIT BIT(15) |
| #define MCHP_GPIO_0020_GIRQ_BIT BIT(16) |
| #define MCHP_GPIO_0021_GIRQ_BIT BIT(17) |
| #define MCHP_GPIO_0022_GIRQ_BIT BIT(18) |
| #define MCHP_GPIO_0023_GIRQ_BIT BIT(19) |
| #define MCHP_GPIO_0024_GIRQ_BIT BIT(20) |
| #define MCHP_GPIO_0025_GIRQ_BIT BIT(21) |
| #define MCHP_GPIO_0026_GIRQ_BIT BIT(22) |
| #define MCHP_GPIO_0027_GIRQ_BIT BIT(23) |
| #define MCHP_GPIO_0030_GIRQ_BIT BIT(24) |
| #define MCHP_GPIO_0031_GIRQ_BIT BIT(25) |
| #define MCHP_GPIO_0032_GIRQ_BIT BIT(26) |
| #define MCHP_GPIO_0033_GIRQ_BIT BIT(27) |
| #define MCHP_GPIO_0034_GIRQ_BIT BIT(28) |
| #define MCHP_GPIO_0035_GIRQ_BIT BIT(29) |
| #define MCHP_GPIO_0036_GIRQ_BIT BIT(30) |
| #define MCHP_GPIO_0000_0036_GIRQ_MASK 0x7fffffffu |
| |
| /* GIRQ12 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_GPIO_0200_GIRQ_POS 0 |
| #define MCHP_GPIO_0201_GIRQ_POS 1 |
| #define MCHP_GPIO_0202_GIRQ_POS 2 |
| #define MCHP_GPIO_0203_GIRQ_POS 3 |
| #define MCHP_GPIO_0204_GIRQ_POS 4 |
| #define MCHP_GPIO_0205_GIRQ_POS 5 |
| #define MCHP_GPIO_0206_GIRQ_POS 6 |
| #define MCHP_GPIO_0207_GIRQ_POS 7 |
| #define MCHP_GPIO_0210_GIRQ_POS 8 |
| #define MCHP_GPIO_0211_GIRQ_POS 9 |
| #define MCHP_GPIO_0212_GIRQ_POS 10 |
| #define MCHP_GPIO_0213_GIRQ_POS 11 |
| #define MCHP_GPIO_0214_GIRQ_POS 12 |
| #define MCHP_GPIO_0215_GIRQ_POS 13 |
| #define MCHP_GPIO_0216_GIRQ_POS 14 |
| #define MCHP_GPIO_0217_GIRQ_POS 15 |
| #define MCHP_GPIO_0220_GIRQ_POS 16 |
| #define MCHP_GPIO_0221_GIRQ_POS 17 |
| #define MCHP_GPIO_0222_GIRQ_POS 18 |
| #define MCHP_GPIO_0223_GIRQ_POS 19 |
| #define MCHP_GPIO_0224_GIRQ_POS 20 |
| #define MCHP_GPIO_0225_GIRQ_POS 21 |
| #define MCHP_GPIO_0226_GIRQ_POS 22 |
| #define MCHP_GPIO_0227_GIRQ_POS 23 |
| #define MCHP_GPIO_0230_GIRQ_POS 24 |
| #define MCHP_GPIO_0231_GIRQ_POS 25 |
| #define MCHP_GPIO_0232_GIRQ_POS 26 |
| #define MCHP_GPIO_0233_GIRQ_POS 27 |
| #define MCHP_GPIO_0234_GIRQ_POS 28 |
| #define MCHP_GPIO_0235_GIRQ_POS 29 |
| #define MCHP_GPIO_0236_GIRQ_POS 30 |
| |
| #define MCHP_GPIO_0200_GIRQ_BIT BIT(0) |
| #define MCHP_GPIO_0201_GIRQ_BIT BIT(1) |
| #define MCHP_GPIO_0202_GIRQ_BIT BIT(2) |
| #define MCHP_GPIO_0203_GIRQ_BIT BIT(3) |
| #define MCHP_GPIO_0204_GIRQ_BIT BIT(4) |
| #define MCHP_GPIO_0205_GIRQ_BIT BIT(5) |
| #define MCHP_GPIO_0206_GIRQ_BIT BIT(6) |
| #define MCHP_GPIO_0207_GIRQ_BIT BIT(7) |
| #define MCHP_GPIO_0210_GIRQ_BIT BIT(8) |
| #define MCHP_GPIO_0211_GIRQ_BIT BIT(9) |
| #define MCHP_GPIO_0212_GIRQ_BIT BIT(10) |
| #define MCHP_GPIO_0213_GIRQ_BIT BIT(11) |
| #define MCHP_GPIO_0214_GIRQ_BIT BIT(12) |
| #define MCHP_GPIO_0215_GIRQ_BIT BIT(13) |
| #define MCHP_GPIO_0216_GIRQ_BIT BIT(14) |
| #define MCHP_GPIO_0217_GIRQ_BIT BIT(15) |
| #define MCHP_GPIO_0220_GIRQ_BIT BIT(16) |
| #define MCHP_GPIO_0221_GIRQ_BIT BIT(17) |
| #define MCHP_GPIO_0222_GIRQ_BIT BIT(18) |
| #define MCHP_GPIO_0223_GIRQ_BIT BIT(19) |
| #define MCHP_GPIO_0224_GIRQ_BIT BIT(20) |
| #define MCHP_GPIO_0225_GIRQ_BIT BIT(21) |
| #define MCHP_GPIO_0226_GIRQ_BIT BIT(22) |
| #define MCHP_GPIO_0227_GIRQ_BIT BIT(23) |
| #define MCHP_GPIO_0230_GIRQ_BIT BIT(24) |
| #define MCHP_GPIO_0231_GIRQ_BIT BIT(25) |
| #define MCHP_GPIO_0232_GIRQ_BIT BIT(26) |
| #define MCHP_GPIO_0233_GIRQ_BIT BIT(27) |
| #define MCHP_GPIO_0234_GIRQ_BIT BIT(28) |
| #define MCHP_GPIO_0235_GIRQ_BIT BIT(29) |
| #define MCHP_GPIO_0236_GIRQ_BIT BIT(30) |
| #define MCHP_GPIO_0200_0236_GIRQ_MASK 0x7fffffffu |
| |
| /* GIRQ13 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_I2C_SMB_0_GIRQ_POS 0 |
| #define MCHP_I2C_SMB_1_GIRQ_POS 1 |
| #define MCHP_I2C_SMB_2_GIRQ_POS 2 |
| #define MCHP_I2C_SMB_3_GIRQ_POS 3 |
| #define MCHP_I2C_SMB_4_GIRQ_POS 4 |
| |
| #define MCHP_I2C_SMB_0_GIRQ_BIT BIT(0) |
| #define MCHP_I2C_SMB_1_GIRQ_BIT BIT(1) |
| #define MCHP_I2C_SMB_2_GIRQ_BIT BIT(2) |
| #define MCHP_I2C_SMB_3_GIRQ_BIT BIT(3) |
| #define MCHP_I2C_SMB_4_GIRQ_BIT BIT(4) |
| #define MCHP_SMB_I2C_GIRQ_MASK 0x1fu |
| |
| #define MCHP_GIRQ13_NVIC_AGGR 5u |
| #define MCHP_GIRQ13_NVIC_DIRECT(bitpos) (20u + (uint32_t)(bitpos)) |
| |
| /* GIRQ14 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_DMA_CH00_GIRQ_POS 0 |
| #define MCHP_DMA_CH01_GIRQ_POS 1 |
| #define MCHP_DMA_CH02_GIRQ_POS 2 |
| #define MCHP_DMA_CH03_GIRQ_POS 3 |
| #define MCHP_DMA_CH04_GIRQ_POS 4 |
| #define MCHP_DMA_CH05_GIRQ_POS 5 |
| #define MCHP_DMA_CH06_GIRQ_POS 6 |
| #define MCHP_DMA_CH07_GIRQ_POS 7 |
| #define MCHP_DMA_CH08_GIRQ_POS 8 |
| #define MCHP_DMA_CH09_GIRQ_POS 9 |
| #define MCHP_DMA_CH10_GIRQ_POS 10 |
| #define MCHP_DMA_CH11_GIRQ_POS 11 |
| #define MCHP_DMA_CH12_GIRQ_POS 12 |
| #define MCHP_DMA_CH13_GIRQ_POS 13 |
| #define MCHP_DMA_CH14_GIRQ_POS 14 |
| #define MCHP_DMA_CH15_GIRQ_POS 15 |
| |
| #define MCHP_DMA_CH00_GIRQ_BIT BIT(0) |
| #define MCHP_DMA_CH01_GIRQ_BIT BIT(1) |
| #define MCHP_DMA_CH02_GIRQ_BIT BIT(2) |
| #define MCHP_DMA_CH03_GIRQ_BIT BIT(3) |
| #define MCHP_DMA_CH04_GIRQ_BIT BIT(4) |
| #define MCHP_DMA_CH05_GIRQ_BIT BIT(5) |
| #define MCHP_DMA_CH06_GIRQ_BIT BIT(6) |
| #define MCHP_DMA_CH07_GIRQ_BIT BIT(7) |
| #define MCHP_DMA_CH08_GIRQ_BIT BIT(8) |
| #define MCHP_DMA_CH09_GIRQ_BIT BIT(9) |
| #define MCHP_DMA_CH10_GIRQ_BIT BIT(10) |
| #define MCHP_DMA_CH11_GIRQ_BIT BIT(11) |
| #define MCHP_DMA_CH12_GIRQ_BIT BIT(12) |
| #define MCHP_DMA_CH13_GIRQ_BIT BIT(13) |
| #define MCHP_DMA_CH14_GIRQ_BIT BIT(14) |
| #define MCHP_DMA_CH15_GIRQ_BIT BIT(15) |
| #define MCHP_DMA_GIRQ_MASK 0xffffu |
| |
| #define MCHP_GIRQ14_NVIC_AGGR 6u |
| #define MCHP_GIRQ14_NVIC_DIRECT(bitpos) (24u + (uint32_t)(bitpos)) |
| |
| /* GIRQ15 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_UART_0_GIRQ_POS 0 |
| #define MCHP_UART_1_GIRQ_POS 1 |
| #define MCHP_EMI_0_GIRQ_POS 2 |
| #define MCHP_EMI_1_GIRQ_POS 3 |
| #define MCHP_EMI_2_GIRQ_POS 4 |
| #define MCHP_ACPI_EC_0_IBF_GIRQ_POS 5 |
| #define MCHP_ACPI_EC_0_OBE_GIRQ_POS 6 |
| #define MCHP_ACPI_EC_1_IBF_GIRQ_POS 7 |
| #define MCHP_ACPI_EC_1_OBE_GIRQ_POS 8 |
| #define MCHP_ACPI_EC_2_IBF_GIRQ_POS 9 |
| #define MCHP_ACPI_EC_2_OBE_GIRQ_POS 10 |
| #define MCHP_ACPI_EC_3_IBF_GIRQ_POS 11 |
| #define MCHP_ACPI_EC_3_OBE_GIRQ_POS 12 |
| #define MCHP_ACPI_EC_4_IBF_GIRQ_POS 13 |
| #define MCHP_ACPI_EC_4_OBE_GIRQ_POS 14 |
| #define MCHP_ACPI_PM1_CTL_GIRQ_POS 15 |
| #define MCHP_ACPI_PM1_EN_GIRQ_POS 16 |
| #define MCHP_ACPI_PM1_STS_GIRQ_POS 17 |
| #define MCHP_KBC_OBE_GIRQ_POS 18 |
| #define MCHP_KBC_IBF_GIRQ_POS 19 |
| #define MCHP_MBOX_0_GIRQ_POS 20 |
| #define MCHP_P80BD_0_GIRQ_POS 22 |
| |
| #define MCHP_UART_0_GIRQ_BIT BIT(0) |
| #define MCHP_UART_1_GIRQ_BIT BIT(1) |
| #define MCHP_EMI_0_GIRQ_BIT BIT(2) |
| #define MCHP_EMI_1_GIRQ_BIT BIT(3) |
| #define MCHP_EMI_2_GIRQ_BIT BIT(4) |
| #define MCHP_ACPI_EC_0_IBF_GIRQ_BIT BIT(5) |
| #define MCHP_ACPI_EC_0_OBE_GIRQ_BIT BIT(6) |
| #define MCHP_ACPI_EC_1_IBF_GIRQ_BIT BIT(7) |
| #define MCHP_ACPI_EC_1_OBE_GIRQ_BIT BIT(8) |
| #define MCHP_ACPI_EC_2_IBF_GIRQ_BIT BIT(9) |
| #define MCHP_ACPI_EC_2_OBE_GIRQ_BIT BIT(10) |
| #define MCHP_ACPI_EC_3_IBF_GIRQ_BIT BIT(11) |
| #define MCHP_ACPI_EC_3_OBE_GIRQ_BIT BIT(12) |
| #define MCHP_ACPI_EC_4_IBF_GIRQ_BIT BIT(13) |
| #define MCHP_ACPI_EC_4_OBE_GIRQ_BIT BIT(14) |
| #define MCHP_ACPI_PM1_CTL_GIRQ_BIT BIT(15) |
| #define MCHP_ACPI_PM1_EN_GIRQ_BIT BIT(16) |
| #define MCHP_ACPI_PM1_STS_GIRQ_BIT BIT(17) |
| #define MCHP_KBC_OBE_GIRQ_BIT BIT(18) |
| #define MCHP_KBC_IBF_GIRQ_BIT BIT(19) |
| #define MCHP_MBOX_0_GIRQ_BIT BIT(20) |
| #define MCHP_P80BD_0_GIRQ_BIT BIT(22) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_UART_GIRQ_MASK 0x03u |
| #define MCHP_UART_EMI_GIRQ_MASK 0x1cu |
| #define MCHP_ACPI_EC_GIRQ_MASK 0x07fe0u |
| #define MCHP_ACPI_PM1_GIRQ_MASK 0x38000u |
| #define MCHP_KBC_GIRQ_MASK 0xc0000u |
| #define MCHP_HOST_PERIPH_GIRQ_MASK 0x5fffffu |
| |
| #define MCHP_GIRQ15_NVIC_AGGR 7u |
| /* |
| * bitpos = MCHP_XXX_POS define |
| * Example: MCHP_GIRQ15_NVIC_DIRECT(MCHP_KBC_IBF_GIRQ_POS) |
| */ |
| #define MCHP_GIRQ15_NVIC_DIRECT(bitpos) (40u + (uint32_t)(bitpos)) |
| |
| /* GIRQ16 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_PK_GIRQ_POS 0 |
| #define MCHP_RNG_GIRQ_POS 2 |
| #define MCHP_AESH_GIRQ_POS 3 |
| |
| #define MCHP_PK_GIRQ_BIT BIT(0) |
| #define MCHP_RNG_GIRQ_BIT BIT(2) |
| #define MCHP_AESH_GIRQ_BIT BIT(3) |
| #define MCHP_CRYPTO_GIRQ_MASK 0x0du |
| |
| #define MCHP_GIRQ16_NVIC_AGGR 8u |
| #define MCHP_GIRQ16_NVIC_DIRECT(bitpos) (65u + (uint32_t)(bitpos)) |
| |
| /* GIRQ17 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_PECI_GIRQ_POS 0 |
| #define MCHP_TACH_0_GIRQ_POS 1 |
| #define MCHP_TACH_1_GIRQ_POS 2 |
| #define MCHP_TACH_2_GIRQ_POS 3 |
| #define MCHP_TACH_3_GIRQ_POS 4 |
| #define MCHP_ADC_0_SGL_GIRQ_POS 8 |
| #define MCHP_ADC_0_RPT_GIRQ_POS 9 |
| #define MCHP_RCID_0_GIRQ_POS 10 |
| #define MCHP_RCID_1_GIRQ_POS 11 |
| #define MCHP_RCID_2_GIRQ_POS 12 |
| #define MCHP_LED_0_GIRQ_POS 13 |
| #define MCHP_LED_1_GIRQ_POS 14 |
| #define MCHP_LED_2_GIRQ_POS 15 |
| #define MCHP_LED_3_GIRQ_POS 16 |
| #define MCHP_PHOT_0_GIRQ_POS 17 |
| #define MCHP_RPMFAN_0_FAIL_GIRQ_POS 20 |
| #define MCHP_RPMFAN_0_STALL_GIRQ_POS 21 |
| #define MCHP_RPMFAN_1_FAIL_GIRQ_POS 22 |
| #define MCHP_RPMFAN_1_STALL_GIRQ_POS 23 |
| |
| #define MCHP_PECI_GIRQ_BIT BIT(0) |
| #define MCHP_TACH_0_GIRQ_BIT BIT(1) |
| #define MCHP_TACH_1_GIRQ_BIT BIT(2) |
| #define MCHP_TACH_2_GIRQ_BIT BIT(3) |
| #define MCHP_TACH_3_GIRQ_BIT BIT(4) |
| #define MCHP_ADC_0_SGL_GIRQ_BIT BIT(8) |
| #define MCHP_ADC_0_RPT_GIRQ_BIT BIT(9) |
| #define MCHP_RCID_0_GIRQ_BIT BIT(10) |
| #define MCHP_RCID_1_GIRQ_BIT BIT(11) |
| #define MCHP_RCID_2_GIRQ_BIT BIT(12) |
| #define MCHP_LED_0_GIRQ_BIT BIT(13) |
| #define MCHP_LED_1_GIRQ_BIT BIT(14) |
| #define MCHP_LED_2_GIRQ_BIT BIT(15) |
| #define MCHP_LED_3_GIRQ_BIT BIT(16) |
| #define MCHP_PHOT_0_GIRQ_BIT BIT(17) |
| #define MCHP_RPMFAN_0_FAIL_GIRQ_BIT BIT(20) |
| #define MCHP_RPMFAN_0_STALL_GIRQ_BIT BIT(21) |
| #define MCHP_RPMFAN_1_FAIL_GIRQ_BIT BIT(22) |
| #define MCHP_RPMFAN_1_STALL_GIRQ_BIT BIT(23) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_TACH_GIRQ_MASK 0x1eu |
| #define MCHP_ADC_GIRQ_MASK 0x300u |
| #define MCHP_RCID_GIRQ_MASK 0x1c00u |
| #define MCHP_LED_GIRQ_MASK 0x1e000u |
| #define MCHP_RPMFAN_0_GIRQ_MASK 0x300000u |
| #define MCHP_RPMFAN_1_GIRQ_MASK 0xc00000u |
| #define MCHP_PERIPH_GROUP_1_MASK 0xf3ff1fu |
| |
| #define MCHP_GIRQ17_NVIC_AGGR 9u |
| /* GIRQ17 direct mapping is not linear can't use parameterized macro ;<( */ |
| #define MCHP_PECI_GIRQ_NVIC_DIRECT 70u |
| #define MCHP_TACH_0_GIRQ_NVIC_DIRECT 71u |
| #define MCHP_TACH_1_GIRQ_NVIC_DIRECT 72u |
| #define MCHP_TACH_2_GIRQ_NVIC_DIRECT 73u |
| #define MCHP_TACH_3_GIRQ_NVIC_DIRECT 159u |
| #define MCHP_ADC_0_SGL_GIRQ_NVIC_DIRECT 78u |
| #define MCHP_ADC_0_RPT_GIRQ_NVIC_DIRECT 79u |
| #define MCHP_RCID_0_GIRQ_NVIC_DIRECT 80u |
| #define MCHP_RCID_1_GIRQ_NVIC_DIRECT 81u |
| #define MCHP_RCID_2_GIRQ_NVIC_DIRECT 82u |
| #define MCHP_LED_0_GIRQ_NVIC_DIRECT 83u |
| #define MCHP_LED_1_GIRQ_NVIC_DIRECT 84u |
| #define MCHP_LED_2_GIRQ_NVIC_DIRECT 85u |
| #define MCHP_LED_3_GIRQ_NVIC_DIRECT 86u |
| #define MCHP_PHOT_0_GIRQ_NVIC_DIRECT 87u |
| #define MCHP_RPMFAN_0_FAIL_GIRQ_NVIC_DIRECT 74u |
| #define MCHP_RPMFAN_0_STALL_GIRQ_NVIC_DIRECT 75u |
| #define MCHP_RPMFAN_1_FAIL_GIRQ_NVIC_DIRECT 76u |
| #define MCHP_RPMFAN_1_STALL_GIRQ_NVIC_DIRECT 77u |
| |
| /* GIRQ18 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_SPIEP_0_GIRQ_POS 0 |
| #define MCHP_QMSPI_0_GIRQ_POS 1 |
| #define MCHP_GPSPI_0_TXBE_GIRQ_POS 2 |
| #define MCHP_GPSPI_0_RXBF_GIRQ_POS 3 |
| #define MCHP_GPSPI_1_TXBE_GIRQ_POS 4 |
| #define MCHP_GPSPI_1_RXBF_GIRQ_POS 5 |
| #define MCHP_BCL_0_BCLR_GIRQ_POS 6 |
| #define MCHP_BCL_0_BERR_GIRQ_POS 7 |
| #define MCHP_PS2_0_ACT_GIRQ_POS 10 |
| #define MCHP_EERPROMC_0_GIRQ_POS 13 |
| #define MCHP_CCT_0_CNT_GIRQ_POS 20 |
| #define MCHP_CCT_0_CAP0_GIRQ_POS 21 |
| #define MCHP_CCT_0_CAP1_GIRQ_POS 22 |
| #define MCHP_CCT_0_CAP2_GIRQ_POS 23 |
| #define MCHP_CCT_0_CAP3_GIRQ_POS 24 |
| #define MCHP_CCT_0_CAP4_GIRQ_POS 25 |
| #define MCHP_CCT_0_CAP5_GIRQ_POS 26 |
| #define MCHP_CCT_0_CMP0_GIRQ_POS 27 |
| #define MCHP_CCT_0_CMP1_GIRQ_POS 28 |
| |
| #define MCHP_SPIEP_0_GIRQ_BIT BIT(0) |
| #define MCHP_QMSPI_0_GIRQ_BIT BIT(1) |
| #define MCHP_GPSPI_0_TXBE_GIRQ_BIT BIT(2) |
| #define MCHP_GPSPI_0_RXBF_GIRQ_BIT BIT(3) |
| #define MCHP_GPSPI_1_TXBE_GIRQ_BIT BIT(4) |
| #define MCHP_GPSPI_1_RXBF_GIRQ_BIT BIT(5) |
| #define MCHP_BCL_0_BCLR_GIRQ_BIT BIT(6) |
| #define MCHP_BCL_0_BERR_GIRQ_BIT BIT(7) |
| #define MCHP_PS2_0_ACT_GIRQ_BIT BIT(10) |
| #define MCHP_EERPROMC_0_GIRQ_BIT BIT(13) |
| #define MCHP_CCT_0_CNT_GIRQ_BIT BIT(20) |
| #define MCHP_CCT_0_CAP0_GIRQ_BIT BIT(21) |
| #define MCHP_CCT_0_CAP1_GIRQ_BIT BIT(22) |
| #define MCHP_CCT_0_CAP2_GIRQ_BIT BIT(23) |
| #define MCHP_CCT_0_CAP3_GIRQ_BIT BIT(24) |
| #define MCHP_CCT_0_CAP4_GIRQ_BIT BIT(25) |
| #define MCHP_CCT_0_CAP5_GIRQ_BIT BIT(26) |
| #define MCHP_CCT_0_CMP0_GIRQ_BIT BIT(27) |
| #define MCHP_CCT_0_CMP1_GIRQ_BIT BIT(28) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_GPSPI_0_GIRQ_MASK 0x0cu |
| #define MCHP_GPSPI_1_GIRQ_MASK 0x30u |
| #define MCHP_BCL_0_GIRQ_MASK 0xc0u |
| #define MCHP_CCT_0_GIRQ_MASK 0x1ff00000u |
| #define MCHP_PERIPH_GROUP_2_MASK 0x1ff024ffu |
| |
| #define MCHP_GIRQ18_NVIC_AGGR 10u |
| /* GIRQ18 direct mapping is not linear can't use parameterized macro ;<( */ |
| #define MCHP_SPIEP_0_GIRQ_NVIC_DIRECT 90u |
| #define MCHP_QMSPI_0_GIRQ_NVIC_DIRECT 91u |
| #define MCHP_GPSPI_0_TXBE_GIRQ_NVIC_DIRECT 92u |
| #define MCHP_GPSPI_0_RXBF_GIRQ_NVIC_DIRECT 93u |
| #define MCHP_GPSPI_1_TXBE_GIRQ_NVIC_DIRECT 94u |
| #define MCHP_GPSPI_1_RXBF_GIRQ_NVIC_DIRECT 95u |
| #define MCHP_BCL_0_BCLR_GIRQ_NVIC_DIRECT 97u |
| #define MCHP_BCL_0_BERR_GIRQ_NVIC_DIRECT 96u |
| #define MCHP_PS2_0_ACT_GIRQ_NVIC_DIRECT 100u |
| #define MCHP_EERPROMC_0_GIRQ_NVIC_DIRECT 155u |
| #define MCHP_CCT_0_CNT_GIRQ_NVIC_DIRECT 146u |
| #define MCHP_CCT_0_CAP0_GIRQ_NVIC_DIRECT 147u |
| #define MCHP_CCT_0_CAP1_GIRQ_NVIC_DIRECT 148u |
| #define MCHP_CCT_0_CAP2_GIRQ_NVIC_DIRECT 149u |
| #define MCHP_CCT_0_CAP3_GIRQ_NVIC_DIRECT 150u |
| #define MCHP_CCT_0_CAP4_GIRQ_NVIC_DIRECT 151u |
| #define MCHP_CCT_0_CAP5_GIRQ_NVIC_DIRECT 152u |
| #define MCHP_CCT_0_CMP0_GIRQ_NVIC_DIRECT 153u |
| #define MCHP_CCT_0_CMP1_GIRQ_NVIC_DIRECT 154u |
| |
| /* GIRQ19 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_ESPI_PC_GIRQ_POS 0 |
| #define MCHP_ESPI_BM1_GIRQ_POS 1 |
| #define MCHP_ESPI_BM2_GIRQ_POS 2 |
| #define MCHP_ESPI_LTR_GIRQ_POS 3 |
| #define MCHP_ESPI_OOB_UP_GIRQ_POS 4 |
| #define MCHP_ESPI_OOB_DN_GIRQ_POS 5 |
| #define MCHP_ESPI_FC_GIRQ_POS 6 |
| #define MCHP_ESPI_RESET_GIRQ_POS 7 |
| #define MCHP_ESPI_VW_EN_GIRQ_POS 8 |
| #define MCHP_ESPI_SAF_DONE_GIRQ_POS 9 |
| #define MCHP_ESPI_SAF_ERR_GIRQ_POS 10 |
| #define MCHP_ESPI_SAF_CACHE_GIRQ_POS 11 |
| |
| #define MCHP_ESPI_PC_GIRQ_BIT BIT(0) |
| #define MCHP_ESPI_BM1_GIRQ_BIT BIT(1) |
| #define MCHP_ESPI_BM2_GIRQ_BIT BIT(2) |
| #define MCHP_ESPI_LTR_GIRQ_BIT BIT(3) |
| #define MCHP_ESPI_OOB_UP_GIRQ_BIT BIT(4) |
| #define MCHP_ESPI_OOB_DN_GIRQ_BIT BIT(5) |
| #define MCHP_ESPI_FC_GIRQ_BIT BIT(6) |
| #define MCHP_ESPI_RESET_GIRQ_BIT BIT(7) |
| #define MCHP_ESPI_VWEN_GIRQ_BIT BIT(8) |
| #define MCHP_ESPI_SAF_DONE_GIRQ_BIT BIT(9) |
| #define MCHP_ESPI_SAF_ERR_GIRQ_BIT BIT(10) |
| #define MCHP_ESPI_SAF_CACHE_GIRQ_BIT BIT(11) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_ESPI_BM_GIRQ_MASK 0x006u |
| #define MCHP_ESPI_OOB_GIRQ_MASK 0x030u |
| #define MCHP_ESPI_SAF_GIRQ_MASK 0xe00u |
| #define MCHP_ESPI_GIRQ_MASK 0xfffu |
| |
| #define MCHP_GIRQ19_NVIC_AGGR 11u |
| #define MCHP_ESPI_PC_GIRQ_NVIC_DIRECT 103u |
| #define MCHP_ESPI_BM1_GIRQ_NVIC_DIRECT 104u |
| #define MCHP_ESPI_BM2_GIRQ_NVIC_DIRECT 105u |
| #define MCHP_ESPI_LTR_GIRQ_NVIC_DIRECT 106u |
| #define MCHP_ESPI_OOB_UP_GIRQ_NVIC_DIRECT 107u |
| #define MCHP_ESPI_OOB_DN_GIRQ_NVIC_DIRECT 108u |
| #define MCHP_ESPI_FC_GIRQ_NVIC_DIRECT 109u |
| #define MCHP_ESPI_RESET_GIRQ_NVIC_DIRECT 110u |
| #define MCHP_ESPI_VWEN_GIRQ_NVIC_DIRECT 156u |
| #define MCHP_ESPI_SAF_DONE_GIRQ_NVIC_DIRECT 166u |
| #define MCHP_ESPI_SAF_ERR_GIRQ_NVIC_DIRECT 167u |
| #define MCHP_ESPI_SAF_CACHE_GIRQ_NVIC_DIRECT 169u |
| |
| /* GIRQ20 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_STAP_OBF_GIRQ_POS 0 |
| #define MCHP_STAP_IBF_GIRQ_POS 1 |
| #define MCHP_STAP_WAKE_GIRQ_POS 2 |
| #define MCHP_OTP_READY_GIRQ_POS 3 |
| #define MCHP_ISPI_ERR_GIRQ_POS 8 |
| #define MCHP_CLK32_MON_GIRQ_POS 9 |
| |
| #define MCHP_STAP_OBF_GIRQ_BIT BIT(0) |
| #define MCHP_STAP_IBF_GIRQ_BIT BIT(1) |
| #define MCHP_STAP_WAKE_GIRQ_BIT BIT(2) |
| #define MCHP_OTP_READY_GIRQ_BIT BIT(3) |
| #define MCHP_ISPI_ERR_GIRQ_BIT BIT(8) |
| #define MCHP_CLK32_MON_GIRQ_BIT BIT(9) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_STAP_GIRQ_MASK 0x007u |
| #define MCHP_PERIPH_GROUP_3_MASK 0x30fu |
| |
| #define MCHP_GIRQ20_NVIC_AGGR 12u |
| /* |
| * Warning: STAP has no direct connections. If STAP and other source are |
| * enabled GIRQ20 must be used in aggregated mode. |
| */ |
| #define MCHP_OTP_READY_GIRQ_NVIC_DIRECT 173u |
| #define MCHP_CLK32_MON_GIRQ_NVIC_DIRECT 174u |
| |
| /* GIRQ21 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_WDT_GIRQ_POS 2 |
| #define MCHP_WTMR_ALARM_GIRQ_POS 3 |
| #define MCHP_WTMR_SUBWK_GIRQ_POS 4 |
| #define MCHP_WTMR_ONESEC_GIRQ_POS 5 |
| #define MCHP_WTMR_SUBSEC_GIRQ_POS 6 |
| #define MCHP_WTMR_SPP_GIRQ_POS 7 |
| #define MCHP_RTC_GIRQ_POS 8 |
| #define MCHP_RTC_ALARM_GIRQ_POS 9 |
| #define MCHP_VCI_OVRD_IN_GIRQ_POS 10 |
| #define MCHP_VCI_IN0_GIRQ_POS 11 |
| #define MCHP_VCI_IN1_GIRQ_POS 12 |
| #define MCHP_VCI_IN2_GIRQ_POS 13 |
| #define MCHP_VCI_IN3_GIRQ_POS 14 |
| #define MCHP_VCI_IN4_GIRQ_POS 15 |
| #define MCHP_PS2_0_PORT0A_WK_GIRQ_POS 18 |
| #define MCHP_PS2_0_PORT0B_WK_GIRQ_POS 19 |
| #define MCHP_KEYSCAN_GIRQ_POS 25 |
| #define MCHP_GLUE_GIRQ_POS 26 |
| |
| #define MCHP_WDT_GIRQ_BIT BIT(2) |
| #define MCHP_WTMR_ALARM_GIRQ_BIT BIT(3) |
| #define MCHP_WTMR_SUBWK_GIRQ_BIT BIT(4) |
| #define MCHP_WTMR_ONESEC_GIRQ_BIT BIT(5) |
| #define MCHP_WTMR_SUBSEC_GIRQ_BIT BIT(6) |
| #define MCHP_WTMR_SPP_GIRQ_BIT BIT(7) |
| #define MCHP_RTC_GIRQ_BIT BIT(8) |
| #define MCHP_RTC_ALARM_GIRQ_BIT BIT(9) |
| #define MCHP_VCI_OVRD_IN_GIRQ_BIT BIT(10) |
| #define MCHP_VCI_IN0_GIRQ_BIT BIT(11) |
| #define MCHP_VCI_IN1_GIRQ_BIT BIT(12) |
| #define MCHP_VCI_IN2_GIRQ_BIT BIT(13) |
| #define MCHP_VCI_IN3_GIRQ_BIT BIT(14) |
| #define MCHP_VCI_IN4_GIRQ_BIT BIT(15) |
| #define MCHP_PS2_0_PORT0A_WK_GIRQ_BIT BIT(18) |
| #define MCHP_PS2_0_PORT0B_WK_GIRQ_BIT BIT(19) |
| #define MCHP_KEYSCAN_GIRQ_BIT BIT(25) |
| #define MCHP_GLUE_GIRQ_BIT BIT(26) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_WTMR_GIRQ_MASK 0xf8u |
| #define MCHP_RTC_GIRQ_MASK 0x300u |
| #define MCHP_VCI_GIRQ_MASK 0xfc00u |
| #define MCHP_PS2_PORT_WK_GIRQ_MASK 0xc0000u |
| #define MCHP_PERIPH_GROUP_4_MASK 0x60cfffcu |
| |
| #define MCHP_GIRQ21_NVIC_AGGR 13u |
| #define MCHP_WDT_GIRQ_NVIC_DIRECT 171u |
| #define MCHP_WTMR_ALARM_GIRQ_NVIC_DIRECT 114u |
| #define MCHP_WTMR_SUBWK_GIRQ_NVIC_DIRECT 115u |
| #define MCHP_WTMR_ONESEC_GIRQ_NVIC_DIRECT 116u |
| #define MCHP_WTMR_SUBSEC_GIRQ_NVIC_DIRECT 117u |
| #define MCHP_WTMR_SPP_GIRQ_NVIC_DIRECT 118u |
| #define MCHP_RTC_GIRQ_NVIC_DIRECT 119u |
| #define MCHP_RTC_ALARM_GIRQ_NVIC_DIRECT 120u |
| #define MCHP_VCI_OVRD_IN_GIRQ_NVIC_DIRECT 121u |
| #define MCHP_VCI_IN0_GIRQ_NVIC_DIRECT 122u |
| #define MCHP_VCI_IN1_GIRQ_NVIC_DIRECT 123u |
| #define MCHP_VCI_IN2_GIRQ_NVIC_DIRECT 124u |
| #define MCHP_VCI_IN3_GIRQ_NVIC_DIRECT 125u |
| #define MCHP_VCI_IN4_GIRQ_NVIC_DIRECT 126u |
| #define MCHP_PS2_0_PORT0A_WK_GIRQ_NVIC_DIRECT 129u |
| #define MCHP_PS2_0_PORT0B_WK_GIRQ_NVIC_DIRECT 130u |
| #define MCHP_KEYSCAN_GIRQ_NVIC_DIRECT 135u |
| #define MCHP_GLUE_GIRQ_NVIC_DIRECT 172u |
| |
| /* |
| * GIRQ22 Source, Enable_Set/Clr, Result registers bit positions |
| * NOTE: These wake sources allow the peripheral to turn back on clocks |
| * long enough to facilitate the data transfer. No interrupt to the EC occurs |
| * unless the peripheral was configured to generate an EC interrupt for |
| * the specific data transfer. |
| */ |
| #define MCHP_SPIEP_WK_CLK_GIRQ_POS 0 |
| #define MCHP_I2C_SMB_0_WK_CLK_GIRQ_POS 1 |
| #define MCHP_I2C_SMB_1_WK_CLK_GIRQ_POS 2 |
| #define MCHP_I2C_SMB_2_WK_CLK_GIRQ_POS 3 |
| #define MCHP_I2C_SMB_3_WK_CLK_GIRQ_POS 4 |
| #define MCHP_I2C_SMB_4_WK_CLK_GIRQ_POS 5 |
| #define MCHP_ESPI_WK_CLK_GIRQ_POS 9 |
| #define MCHP_STAP_WK_CLK_GIRQ_POS 15 |
| |
| #define MCHP_SPIEP_WK_CLK_GIRQ_BIT BIT(0) |
| #define MCHP_I2C_SMB_0_WK_CLK_GIRQ_BIT BIT(1) |
| #define MCHP_I2C_SMB_1_WK_CLK_GIRQ_BIT BIT(2) |
| #define MCHP_I2C_SMB_2_WK_CLK_GIRQ_BIT BIT(3) |
| #define MCHP_I2C_SMB_3_WK_CLK_GIRQ_BIT BIT(4) |
| #define MCHP_I2C_SMB_4_WK_CLK_GIRQ_BIT BIT(5) |
| #define MCHP_ESPI_WK_CLK_GIRQ_BIT BIT(9) |
| #define MCHP_STAP_WK_CLK_GIRQ_BIT BIT(15) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_I2C_SMB_WK_CLK_GIRQ_MASK 0x3eu |
| #define MCHP_CLK_WK_CLK_GIRQ_MASK 0x823fu |
| |
| /* GIRQ23 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_BTMR16_0_GIRQ_POS 0 |
| #define MCHP_BTMR16_1_GIRQ_POS 1 |
| #define MCHP_BTMR16_2_GIRQ_POS 2 |
| #define MCHP_BTMR16_3_GIRQ_POS 3 |
| #define MCHP_BTMR32_0_GIRQ_POS 4 |
| #define MCHP_BTMR32_1_GIRQ_POS 5 |
| #define MCHP_CTMR_0_GIRQ_POS 6 |
| #define MCHP_CTMR_1_GIRQ_POS 7 |
| #define MCHP_CTMR_2_GIRQ_POS 8 |
| #define MCHP_CTMR_3_GIRQ_POS 9 |
| #define MCHP_RTMR_0_GIRQ_POS 10 |
| #define MCHP_RTMR_0_SWI0_GIRQ_POS 11 |
| #define MCHP_RTMR_0_SWI1_GIRQ_POS 12 |
| #define MCHP_RTMR_0_SWI2_GIRQ_POS 13 |
| #define MCHP_RTMR_0_SWI3_GIRQ_POS 14 |
| #define MCHP_HTMR_0_GIRQ_POS 16 |
| #define MCHP_HTMR_1_GIRQ_POS 17 |
| |
| #define MCHP_BTMR16_0_GIRQ_BIT BIT(0) |
| #define MCHP_BTMR16_1_GIRQ_BIT BIT(1) |
| #define MCHP_BTMR16_2_GIRQ_BIT BIT(2) |
| #define MCHP_BTMR16_3_GIRQ_BIT BIT(3) |
| #define MCHP_BTMR32_0_GIRQ_BIT BIT(4) |
| #define MCHP_BTMR32_1_GIRQ_BIT BIT(5) |
| #define MCHP_CTMR_0_GIRQ_BIT BIT(6) |
| #define MCHP_CTMR_1_GIRQ_BIT BIT(7) |
| #define MCHP_CTMR_2_GIRQ_BIT BIT(8) |
| #define MCHP_CTMR_3_GIRQ_BIT BIT(9) |
| #define MCHP_RTMR_0_GIRQ_BIT BIT(10) |
| #define MCHP_RTMR_0_SWI0_GIRQ_BIT BIT(11) |
| #define MCHP_RTMR_0_SWI1_GIRQ_BIT BIT(12) |
| #define MCHP_RTMR_0_SWI2_GIRQ_BIT BIT(13) |
| #define MCHP_RTMR_0_SWI3_GIRQ_BIT BIT(14) |
| #define MCHP_HTMR_0_GIRQ_BIT BIT(16) |
| #define MCHP_HTMR_1_GIRQ_BIT BIT(17) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_BTMR16_GIRQ_MASK 0x0fu |
| #define MCHP_BTMR32_GIRQ_MASK 0x30u |
| #define MCHP_CTMR_GIRQ_MASK 0x3c0u |
| #define MCHP_RMTR_GIRQ_MASK 0x7c00u |
| #define MCHP_HTMR_GIRQ_MASK 0x30000u |
| #define MCHP_PERIPH_GROUP_5_GIRQ_MASK 0x37fffu |
| |
| #define MCHP_GIRQ23_NVIC_AGGR 14u |
| /* |
| * Warning: RTMR SWI interrupts have no direct connection. |
| * If RTMR SWI will be used GIRQ23 must be aggregated. |
| */ |
| #define MCHP_BTMR16_0_GIRQ_NVIC_DIRECT 136u |
| #define MCHP_BTMR16_1_GIRQ_NVIC_DIRECT 137u |
| #define MCHP_BTMR16_2_GIRQ_NVIC_DIRECT 138u |
| #define MCHP_BTMR16_3_GIRQ_NVIC_DIRECT 139u |
| #define MCHP_BTMR32_0_GIRQ_NVIC_DIRECT 140u |
| #define MCHP_BTMR32_1_GIRQ_NVIC_DIRECT 141u |
| #define MCHP_CTMR_0_GIRQ_NVIC_DIRECT 142u |
| #define MCHP_CTMR_1_GIRQ_NVIC_DIRECT 143u |
| #define MCHP_CTMR_2_GIRQ_NVIC_DIRECT 144u |
| #define MCHP_CTMR_3_GIRQ_NVIC_DIRECT 145u |
| #define MCHP_RTMR_0_GIRQ_NVIC_DIRECT 111u |
| #define MCHP_HTMR_0_GIRQ_NVIC_DIRECT 112u |
| #define MCHP_HTMR_1_GIRQ_NVIC_DIRECT 113u |
| |
| /* GIRQ24 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_MSVW00_SRC0_GIRQ_POS 0 |
| #define MCHP_MSVW00_SRC1_GIRQ_POS 1 |
| #define MCHP_MSVW00_SRC2_GIRQ_POS 2 |
| #define MCHP_MSVW00_SRC3_GIRQ_POS 3 |
| #define MCHP_MSVW01_SRC0_GIRQ_POS 4 |
| #define MCHP_MSVW01_SRC1_GIRQ_POS 5 |
| #define MCHP_MSVW01_SRC2_GIRQ_POS 6 |
| #define MCHP_MSVW01_SRC3_GIRQ_POS 7 |
| #define MCHP_MSVW02_SRC0_GIRQ_POS 8 |
| #define MCHP_MSVW02_SRC1_GIRQ_POS 9 |
| #define MCHP_MSVW02_SRC2_GIRQ_POS 10 |
| #define MCHP_MSVW02_SRC3_GIRQ_POS 11 |
| #define MCHP_MSVW03_SRC0_GIRQ_POS 12 |
| #define MCHP_MSVW03_SRC1_GIRQ_POS 13 |
| #define MCHP_MSVW03_SRC2_GIRQ_POS 14 |
| #define MCHP_MSVW03_SRC3_GIRQ_POS 15 |
| #define MCHP_MSVW04_SRC0_GIRQ_POS 16 |
| #define MCHP_MSVW04_SRC1_GIRQ_POS 17 |
| #define MCHP_MSVW04_SRC2_GIRQ_POS 18 |
| #define MCHP_MSVW04_SRC3_GIRQ_POS 19 |
| #define MCHP_MSVW05_SRC0_GIRQ_POS 20 |
| #define MCHP_MSVW05_SRC1_GIRQ_POS 21 |
| #define MCHP_MSVW05_SRC2_GIRQ_POS 22 |
| #define MCHP_MSVW05_SRC3_GIRQ_POS 23 |
| #define MCHP_MSVW06_SRC0_GIRQ_POS 24 |
| #define MCHP_MSVW06_SRC1_GIRQ_POS 25 |
| #define MCHP_MSVW06_SRC2_GIRQ_POS 26 |
| #define MCHP_MSVW06_SRC3_GIRQ_POS 27 |
| |
| #define MCHP_MSVW00_SRC0_GIRQ_BIT BIT(0) |
| #define MCHP_MSVW00_SRC1_GIRQ_BIT BIT(1) |
| #define MCHP_MSVW00_SRC2_GIRQ_BIT BIT(2) |
| #define MCHP_MSVW00_SRC3_GIRQ_BIT BIT(3) |
| #define MCHP_MSVW01_SRC0_GIRQ_BIT BIT(4) |
| #define MCHP_MSVW01_SRC1_GIRQ_BIT BIT(5) |
| #define MCHP_MSVW01_SRC2_GIRQ_BIT BIT(6) |
| #define MCHP_MSVW01_SRC3_GIRQ_BIT BIT(7) |
| #define MCHP_MSVW02_SRC0_GIRQ_BIT BIT(8) |
| #define MCHP_MSVW02_SRC1_GIRQ_BIT BIT(9) |
| #define MCHP_MSVW02_SRC2_GIRQ_BIT BIT(10) |
| #define MCHP_MSVW02_SRC3_GIRQ_BIT BIT(11) |
| #define MCHP_MSVW03_SRC0_GIRQ_BIT BIT(12) |
| #define MCHP_MSVW03_SRC1_GIRQ_BIT BIT(13) |
| #define MCHP_MSVW03_SRC2_GIRQ_BIT BIT(14) |
| #define MCHP_MSVW03_SRC3_GIRQ_BIT BIT(15) |
| #define MCHP_MSVW04_SRC0_GIRQ_BIT BIT(16) |
| #define MCHP_MSVW04_SRC1_GIRQ_BIT BIT(17) |
| #define MCHP_MSVW04_SRC2_GIRQ_BIT BIT(18) |
| #define MCHP_MSVW04_SRC3_GIRQ_BIT BIT(19) |
| #define MCHP_MSVW05_SRC0_GIRQ_BIT BIT(20) |
| #define MCHP_MSVW05_SRC1_GIRQ_BIT BIT(21) |
| #define MCHP_MSVW05_SRC2_GIRQ_BIT BIT(22) |
| #define MCHP_MSVW05_SRC3_GIRQ_BIT BIT(23) |
| #define MCHP_MSVW06_SRC0_GIRQ_BIT BIT(24) |
| #define MCHP_MSVW06_SRC1_GIRQ_BIT BIT(25) |
| #define MCHP_MSVW06_SRC2_GIRQ_BIT BIT(26) |
| #define MCHP_MSVW06_SRC3_GIRQ_BIT BIT(27) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_MSVW00_GIRQ_MASK 0xfu |
| #define MCHP_MSVW01_GIRQ_MASK 0xf0u |
| #define MCHP_MSVW02_GIRQ_MASK 0xf00u |
| #define MCHP_MSVW03_GIRQ_MASK 0xf000u |
| #define MCHP_MSVW04_GIRQ_MASK 0xf0000u |
| #define MCHP_MSVW05_GIRQ_MASK 0xf00000u |
| #define MCHP_MSVW06_GIRQ_MASK 0xf000000u |
| #define MCHP_MSVW00_06_GIRQ_MASK 0x0fffffffu |
| |
| #define MCHP_GIRQ24_NVIC_AGGR 15u |
| |
| /* GIRQ25 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_MSVW07_SRC0_GIRQ_POS 0 |
| #define MCHP_MSVW07_SRC1_GIRQ_POS 1 |
| #define MCHP_MSVW07_SRC2_GIRQ_POS 2 |
| #define MCHP_MSVW07_SRC3_GIRQ_POS 3 |
| #define MCHP_MSVW08_SRC0_GIRQ_POS 4 |
| #define MCHP_MSVW08_SRC1_GIRQ_POS 5 |
| #define MCHP_MSVW08_SRC2_GIRQ_POS 6 |
| #define MCHP_MSVW08_SRC3_GIRQ_POS 7 |
| #define MCHP_MSVW09_SRC0_GIRQ_POS 8 |
| #define MCHP_MSVW09_SRC1_GIRQ_POS 9 |
| #define MCHP_MSVW09_SRC2_GIRQ_POS 10 |
| #define MCHP_MSVW09_SRC3_GIRQ_POS 11 |
| #define MCHP_MSVW10_SRC0_GIRQ_POS 12 |
| #define MCHP_MSVW10_SRC1_GIRQ_POS 13 |
| #define MCHP_MSVW10_SRC2_GIRQ_POS 14 |
| #define MCHP_MSVW10_SRC3_GIRQ_POS 15 |
| |
| #define MCHP_MSVW07_SRC0_GIRQ_BIT BIT(0) |
| #define MCHP_MSVW07_SRC1_GIRQ_BIT BIT(1) |
| #define MCHP_MSVW07_SRC2_GIRQ_BIT BIT(2) |
| #define MCHP_MSVW07_SRC3_GIRQ_BIT BIT(3) |
| #define MCHP_MSVW08_SRC0_GIRQ_BIT BIT(4) |
| #define MCHP_MSVW08_SRC1_GIRQ_BIT BIT(5) |
| #define MCHP_MSVW08_SRC2_GIRQ_BIT BIT(6) |
| #define MCHP_MSVW08_SRC3_GIRQ_BIT BIT(7) |
| #define MCHP_MSVW09_SRC0_GIRQ_BIT BIT(8) |
| #define MCHP_MSVW09_SRC1_GIRQ_BIT BIT(9) |
| #define MCHP_MSVW09_SRC2_GIRQ_BIT BIT(10) |
| #define MCHP_MSVW09_SRC3_GIRQ_BIT BIT(11) |
| #define MCHP_MSVW10_SRC0_GIRQ_BIT BIT(12) |
| #define MCHP_MSVW10_SRC1_GIRQ_BIT BIT(13) |
| #define MCHP_MSVW10_SRC2_GIRQ_BIT BIT(14) |
| #define MCHP_MSVW10_SRC3_GIRQ_BIT BIT(15) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_MSVW07_GIRQ_MASK 0xfu |
| #define MCHP_MSVW08_GIRQ_MASK 0xf0u |
| #define MCHP_MSVW09_GIRQ_MASK 0xf00u |
| #define MCHP_MSVW10_GIRQ_MASK 0xf000u |
| #define MCHP_MSVW07_10_GIRQ_MASK 0xffffu |
| |
| #define MCHP_GIRQ25_NVIC_AGGR 16u |
| |
| #define MCHP_MSVW00_GIRQ 24 |
| #define MCHP_MSVW01_GIRQ 24 |
| #define MCHP_MSVW02_GIRQ 24 |
| #define MCHP_MSVW03_GIRQ 24 |
| #define MCHP_MSVW04_GIRQ 24 |
| #define MCHP_MSVW05_GIRQ 24 |
| #define MCHP_MSVW06_GIRQ 24 |
| #define MCHP_MSVW07_GIRQ 25 |
| #define MCHP_MSVW08_GIRQ 25 |
| #define MCHP_MSVW09_GIRQ 25 |
| #define MCHP_MSVW10_GIRQ 25 |
| |
| /* GIRQ26 Source, Enable_Set/Clr, Result registers bit positions */ |
| #define MCHP_GPIO_0240_GIRQ_POS 0 |
| #define MCHP_GPIO_0241_GIRQ_POS 1 |
| #define MCHP_GPIO_0242_GIRQ_POS 2 |
| #define MCHP_GPIO_0243_GIRQ_POS 3 |
| #define MCHP_GPIO_0244_GIRQ_POS 4 |
| #define MCHP_GPIO_0245_GIRQ_POS 5 |
| #define MCHP_GPIO_0246_GIRQ_POS 6 |
| #define MCHP_GPIO_0254_GIRQ_POS 12 |
| #define MCHP_GPIO_0255_GIRQ_POS 13 |
| |
| #define MCHP_GPIO_0240_GIRQ_BIT BIT(0) |
| #define MCHP_GPIO_0241_GIRQ_BIT BIT(1) |
| #define MCHP_GPIO_0242_GIRQ_BIT BIT(2) |
| #define MCHP_GPIO_0243_GIRQ_BIT BIT(3) |
| #define MCHP_GPIO_0244_GIRQ_BIT BIT(4) |
| #define MCHP_GPIO_0245_GIRQ_BIT BIT(5) |
| #define MCHP_GPIO_0246_GIRQ_BIT BIT(6) |
| #define MCHP_GPIO_0254_GIRQ_BIT BIT(12) |
| #define MCHP_GPIO_0255_GIRQ_BIT BIT(13) |
| /* Masks for blocks with multiple instances or sources */ |
| #define MCHP_GPIO_0240_0276_GIRQ_MASK 0x307fu |
| |
| #define MCHP_GIRQ26_NVIC_AGGR 17u |
| |
| /* GIRQ numbering */ |
| #define MCHP_GIRQ_START_NUM 8u |
| #define MCHP_GIRQ_LAST_NUM 26u |
| #define MCHP_GIRQ_IDX(girq) ((uint32_t)(girq) - 8u) |
| #define MCHP_GIRQ_IDX_FIRST 0u |
| #define MCHP_GIRQ_IDX_MAX 19u |
| /* Number of NVIC Enable_Set/Clr, Pending_Set/Clr, Active 32-bit registers */ |
| #define MCHP_MAX_NVIC_IDX 6u |
| /* Number of external NVIC inputs */ |
| #define MCHP_MAX_NVIC_EXT_INPUTS 181u |
| |
| /** @brief GIRQ registers. Total size = 20(0x14) bytes */ |
| struct girq_regs { |
| volatile uint32_t SRC; |
| volatile uint32_t EN_SET; |
| volatile uint32_t RESULT; |
| volatile uint32_t EN_CLR; |
| uint32_t RSVD1[1]; |
| }; |
| |
| /** @brief ECIA registers with each GIRQ elucidated */ |
| struct ecia_named_regs { |
| struct girq_regs GIRQ08; |
| struct girq_regs GIRQ09; |
| struct girq_regs GIRQ10; |
| struct girq_regs GIRQ11; |
| struct girq_regs GIRQ12; |
| struct girq_regs GIRQ13; |
| struct girq_regs GIRQ14; |
| struct girq_regs GIRQ15; |
| struct girq_regs GIRQ16; |
| struct girq_regs GIRQ17; |
| struct girq_regs GIRQ18; |
| struct girq_regs GIRQ19; |
| struct girq_regs GIRQ20; |
| struct girq_regs GIRQ21; |
| struct girq_regs GIRQ22; |
| struct girq_regs GIRQ23; |
| struct girq_regs GIRQ24; |
| struct girq_regs GIRQ25; |
| struct girq_regs GIRQ26; |
| uint8_t RSVD2[(0x0200 - 0x017c)]; |
| volatile uint32_t BLK_EN_SET; |
| volatile uint32_t BLK_EN_CLR; |
| volatile uint32_t BLK_ACTIVE; |
| }; |
| |
| /** @brief ECIA registers with array of GIRQ's */ |
| struct ecia_regs { |
| struct girq_regs GIRQ[19]; |
| uint8_t RSVD2[(0x200 - 0x17c)]; |
| volatile uint32_t BLK_EN_SET; |
| volatile uint32_t BLK_EN_CLR; |
| volatile uint32_t BLK_ACTIVE; |
| }; |
| |
| /* Until XEC ECIA driver is available we define these locally */ |
| static inline void mchp_soc_ecia_girq_aggr_en(uint8_t girq, uint8_t en) |
| { |
| if ((girq < MCHP_FIRST_GIRQ_NOS) || (girq > MCHP_LAST_GIRQ_NOS)) { |
| return; |
| } |
| |
| struct ecia_regs *ecia = (struct ecia_regs *)(ECIA_BASE_ADDR); |
| |
| if (en) { |
| ecia->BLK_EN_SET = BIT(girq); |
| } else { |
| ecia->BLK_EN_CLR = BIT(girq); |
| } |
| } |
| |
| static inline void mchp_soc_ecia_girq_src_clr(uint8_t girq, uint8_t pin) |
| { |
| if ((girq < MCHP_FIRST_GIRQ_NOS) || (girq > MCHP_LAST_GIRQ_NOS) || |
| (pin > 31)) { |
| return; |
| } |
| |
| struct ecia_regs *ecia = (struct ecia_regs *)(ECIA_BASE_ADDR); |
| |
| ecia->GIRQ[girq - 8u].SRC = BIT(pin); |
| } |
| |
| static inline void mchp_soc_ecia_girq_src_clr_bitmap(uint8_t girq, |
| uint32_t bitmap) |
| { |
| if ((girq < MCHP_FIRST_GIRQ_NOS) || (girq > MCHP_LAST_GIRQ_NOS)) { |
| return; |
| } |
| |
| struct ecia_regs *ecia = (struct ecia_regs *)(ECIA_BASE_ADDR); |
| |
| ecia->GIRQ[girq - 8u].SRC = bitmap; |
| } |
| |
| static inline void mchp_soc_ecia_girq_src_dis(uint8_t girq, uint8_t pin) |
| { |
| if ((girq < MCHP_FIRST_GIRQ_NOS) || (girq > MCHP_LAST_GIRQ_NOS) || |
| (pin > 31)) { |
| return; |
| } |
| |
| struct ecia_regs *ecia = (struct ecia_regs *)(ECIA_BASE_ADDR); |
| |
| ecia->GIRQ[girq - 8u].EN_CLR = BIT(pin); |
| } |
| |
| static inline void mchp_soc_ecia_girq_src_en(uint8_t girq, uint8_t pin) |
| { |
| if ((girq < MCHP_FIRST_GIRQ_NOS) || (girq > MCHP_LAST_GIRQ_NOS) || |
| (pin > 31)) { |
| return; |
| } |
| |
| struct ecia_regs *ecia = (struct ecia_regs *)(ECIA_BASE_ADDR); |
| |
| ecia->GIRQ[girq - 8u].EN_SET = BIT(pin); |
| } |
| |
| static inline uint32_t mchp_soc_ecia_girq_result(uint8_t girq) |
| { |
| if ((girq < MCHP_FIRST_GIRQ_NOS) || (girq > MCHP_LAST_GIRQ_NOS)) { |
| return 0u; |
| } |
| |
| struct ecia_regs *ecia = (struct ecia_regs *)(ECIA_BASE_ADDR); |
| |
| return ecia->GIRQ[girq - 8u].RESULT; |
| } |
| |
| #endif /* #ifndef _MEC172X_ECIA_H */ |