1 /* 2 * SPDX-FileCopyrightText: 2018-2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #include "soc/gpio_periph.h" 8 #include "esp_attr.h" 9 10 const uint32_t GPIO_PIN_MUX_REG[] = { 11 IO_MUX_GPIO0_REG, 12 IO_MUX_GPIO1_REG, 13 IO_MUX_GPIO2_REG, 14 IO_MUX_GPIO3_REG, 15 IO_MUX_GPIO4_REG, 16 IO_MUX_GPIO5_REG, 17 IO_MUX_GPIO6_REG, 18 IO_MUX_GPIO7_REG, 19 IO_MUX_GPIO8_REG, 20 IO_MUX_GPIO9_REG, 21 IO_MUX_GPIO10_REG, 22 IO_MUX_GPIO11_REG, 23 IO_MUX_GPIO12_REG, 24 IO_MUX_GPIO13_REG, 25 IO_MUX_GPIO14_REG, 26 IO_MUX_GPIO15_REG, 27 IO_MUX_GPIO16_REG, 28 IO_MUX_GPIO17_REG, 29 IO_MUX_GPIO18_REG, 30 IO_MUX_GPIO19_REG, 31 IO_MUX_GPIO20_REG, // This corresponding pin is only available on ESP32-PICO-V3 chip package 32 IO_MUX_GPIO21_REG, 33 IO_MUX_GPIO22_REG, 34 IO_MUX_GPIO23_REG, 35 0, 36 IO_MUX_GPIO25_REG, 37 IO_MUX_GPIO26_REG, 38 IO_MUX_GPIO27_REG, 39 0, 40 0, 41 0, 42 0, 43 IO_MUX_GPIO32_REG, 44 IO_MUX_GPIO33_REG, 45 IO_MUX_GPIO34_REG, 46 IO_MUX_GPIO35_REG, 47 IO_MUX_GPIO36_REG, 48 IO_MUX_GPIO37_REG, 49 IO_MUX_GPIO38_REG, 50 IO_MUX_GPIO39_REG, 51 }; 52 53 DRAM_ATTR const uint8_t GPIO_PIN_MUX_REG_OFFSET[] = { 54 0x44, 55 0x88, 56 0x40, 57 0x84, 58 0x48, 59 0x6c, 60 0x60, 61 0x64, 62 0x68, 63 0x54, 64 0x58, 65 0x5c, 66 0x34, 67 0x38, 68 0x30, 69 0x3c, 70 0x4c, 71 0x50, 72 0x70, 73 0x74, 74 0x78, 75 0x7c, 76 0x80, 77 0x8c, 78 0xFF, // 24 79 0x24, 80 0x28, 81 0x2c, 82 0xFF, // 28 83 0xFF, // 29 84 0xFF, // 30 85 0xFF, // 31 86 0x1c, 87 0x20, 88 0x14, 89 0x18, 90 0x04, 91 0x08, 92 0x0c, 93 0x10, 94 }; 95 96 _Static_assert(sizeof(GPIO_PIN_MUX_REG) == SOC_GPIO_PIN_COUNT * sizeof(uint32_t), "Invalid size of GPIO_PIN_MUX_REG"); 97 98 const uint32_t GPIO_HOLD_MASK[] = { 99 0, 100 BIT(1), 101 0, 102 BIT(0), 103 0, 104 BIT(8), 105 BIT(2), 106 BIT(3), 107 BIT(4), 108 BIT(5), 109 BIT(6), 110 BIT(7), 111 0, 112 0, 113 0, 114 0, 115 BIT(9), 116 BIT(10), 117 BIT(11), 118 BIT(12), 119 0, 120 BIT(14), 121 BIT(15), 122 BIT(16), 123 0, 124 0, 125 0, 126 0, 127 0, 128 0, 129 0, 130 0, 131 0, 132 0, 133 0, 134 0, 135 0, 136 0, 137 0, 138 0, 139 }; 140 141 _Static_assert(sizeof(GPIO_HOLD_MASK) == SOC_GPIO_PIN_COUNT * sizeof(uint32_t), "Invalid size of GPIO_HOLD_MASK"); 142