1 // Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #pragma once
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 // ESP32-S3 has 1 GPIO peripheral
22 #define SOC_GPIO_PORT           (1)
23 #define SOC_GPIO_PIN_COUNT      (49)
24 
25 // On ESP32-S3, Digital IOs have their own registers to control pullup/down/capability, independent with RTC registers.
26 #define SOC_GPIO_SUPPORT_RTC_INDEPENDENT (1)
27 // Force hold is a new function of ESP32-S3
28 #define SOC_GPIO_SUPPORT_FORCE_HOLD      (1)
29 
30 // 0~48 except from 22~25 are valid
31 #define SOC_GPIO_VALID_GPIO_MASK         (0x1FFFFFFFFFFFFULL & ~(0ULL | BIT22 | BIT23 | BIT24 | BIT25))
32 // No GPIO is input only
33 #define SOC_GPIO_VALID_OUTPUT_GPIO_MASK  (SOC_GPIO_VALID_GPIO_MASK)
34 
35 // Support to configure slept status
36 #define SOC_GPIO_SUPPORT_SLP_SWITCH  (1)
37 
38 #ifdef __cplusplus
39 }
40 #endif
41