1 // Copyright (C) 2022 Beken Corporation 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 #include <stdio.h> 21 #include <driver/hal/hal_gpio_types.h> 22 #include <soc/soc.h> 23 24 #define BIT_64(i) ((1L) << (i)) 25 #define GPIO_DEV_MAP \ 26 {\ 27 {GPIO_0, {GPIO_DEV_UART2_TXD, GPIO_DEV_I2C0_SCL, GPIO_DEV_JTAG_TCK, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_INVALID}},\ 28 {GPIO_1, {GPIO_DEV_UART2_RXD, GPIO_DEV_I2C0_SDA, GPIO_DEV_JTAG_TMS, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_INVALID}},\ 29 \ 30 {GPIO_8, {GPIO_DEV_BT_ACTIVE, GPIO_DEV_PWM0, GPIO_DEV_I2S1_DIN, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_DEBUG6}},\ 31 {GPIO_9, {GPIO_DEV_BT_PRIORITY, GPIO_DEV_PWM1, GPIO_DEV_I2S1_DOUT, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_DEBUG7}},\ 32 {GPIO_10,{GPIO_DEV_UART1_RXD, GPIO_DEV_SDIO_HOST_DATA2, GPIO_DEV_CLK_AUXS, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_INVALID}},\ 33 {GPIO_11, {GPIO_DEV_UART1_TXD, GPIO_DEV_SDIO_HOST_DATA3, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_INVALID}},\ 34 \ 35 {GPIO_24, {GPIO_DEV_LPO_CLK, GPIO_DEV_PWM2, GPIO_DEV_ADC2, GPIO_DEV_QSPI_IO0, GPIO_DEV_LCD_RGB10, GPIO_DEV_DEBUG14}},\ 36 {GPIO_25, {GPIO_DEV_IRDA, GPIO_DEV_PWM3, GPIO_DEV_ADC1, GPIO_DEV_QSPI_IO1, GPIO_DEV_LCD_RGB9, GPIO_DEV_DEBUG15}},\ 37 {GPIO_26, {GPIO_DEV_TXEN, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_QSPI_IO2, GPIO_DEV_LCD_RGB8, GPIO_DEV_DEBUG16}},\ 38 {GPIO_27, {GPIO_DEV_JPEG_MCLK, GPIO_DEV_CLK_AUXS, GPIO_DEV_INVALID, GPIO_DEV_QSPI_IO3, GPIO_DEV_INVALID, GPIO_DEV_DEBUG17}},\ 39 {GPIO_28, {GPIO_DEV_RXEN, GPIO_DEV_I2S1_MCLK, GPIO_DEV_ADC4, GPIO_DEV_TOUCH2, GPIO_DEV_INVALID, GPIO_DEV_DEBUG18}},\ 40 {GPIO_29, {GPIO_DEV_JPEG_PCLK, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_TOUCH3, GPIO_DEV_INVALID, GPIO_DEV_DEBUG19}},\ 41 {GPIO_30, {GPIO_DEV_JPEG_HSYNC, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_TOUCH4, GPIO_DEV_INVALID, GPIO_DEV_DEBUG20}},\ 42 {GPIO_31, {GPIO_DEV_JPEG_VSYNC, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_TOUCH5, GPIO_DEV_INVALID, GPIO_DEV_DEBUG21}},\ 43 {GPIO_32, {GPIO_DEV_JPEG_PXDATA0, GPIO_DEV_PWM4, GPIO_DEV_INVALID, GPIO_DEV_TOUCH6, GPIO_DEV_INVALID, GPIO_DEV_DEBUG22}},\ 44 {GPIO_33, {GPIO_DEV_JPEG_PXDATA1, GPIO_DEV_PWM5, GPIO_DEV_INVALID, GPIO_DEV_TOUCH7, GPIO_DEV_INVALID, GPIO_DEV_DEBUG23}},\ 45 {GPIO_34, {GPIO_DEV_JPEG_PXDATA2, GPIO_DEV_PWM6, GPIO_DEV_INVALID, GPIO_DEV_TOUCH8, GPIO_DEV_INVALID, GPIO_DEV_DEBUG24}},\ 46 {GPIO_35, {GPIO_DEV_JPEG_PXDATA3, GPIO_DEV_PWM7, GPIO_DEV_INVALID, GPIO_DEV_TOUCH9, GPIO_DEV_INVALID, GPIO_DEV_DEBUG25}},\ 47 {GPIO_36, {GPIO_DEV_JPEG_PXDATA4, GPIO_DEV_PWM8, GPIO_DEV_INVALID, GPIO_DEV_TOUCH10, GPIO_DEV_INVALID, GPIO_DEV_DEBUG26}},\ 48 {GPIO_37, {GPIO_DEV_JPEG_PXDATA5, GPIO_DEV_PWM9, GPIO_DEV_INVALID, GPIO_DEV_TOUCH11, GPIO_DEV_INVALID, GPIO_DEV_DEBUG27}},\ 49 {GPIO_38, {GPIO_DEV_JPEG_PXDATA6, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_TOUCH12, GPIO_DEV_INVALID, GPIO_DEV_DEBUG28}},\ 50 {GPIO_39, {GPIO_DEV_JPEG_PXDATA7, GPIO_DEV_INVALID, GPIO_DEV_INVALID, GPIO_DEV_TOUCH13, GPIO_DEV_INVALID, GPIO_DEV_DEBUG29}},\ 51 \ 52 {GPIO_44, {GPIO_DEV_CAN_TX, GPIO_DEV_SPI0_SCK, GPIO_DEV_ADC10, GPIO_DEV_INVALID, GPIO_DEV_LCD_RGB3, GPIO_DEV_INVALID}},\ 53 {GPIO_45, {GPIO_DEV_CAN_RX, GPIO_DEV_SPI0_CSN, GPIO_DEV_ADC11, GPIO_DEV_INVALID, GPIO_DEV_LCD_RGB2, GPIO_DEV_INVALID}},\ 54 {GPIO_46, {GPIO_DEV_CAN_STANDBY, GPIO_DEV_SPI0_MOSI, GPIO_DEV_INVALID, GPIO_DEV_TOUCH14, GPIO_DEV_LCD_RGB1, GPIO_DEV_INVALID}},\ 55 {GPIO_47, {GPIO_DEV_INVALID, GPIO_DEV_SPI0_MISO, GPIO_DEV_INVALID, GPIO_DEV_TOUCH15, GPIO_DEV_LCD_RGB0, GPIO_DEV_INVALID}},\ 56 } 57 58 #define GPIO_MAP_TABLE(DEV_NUM, MODE_NUM, table) \ 59 struct {\ 60 uint64_t gpio_bits;\ 61 gpio_dev_t devs[DEV_NUM];\ 62 } table[MODE_NUM] 63 64 #define GPIO_SPI0_MAP_TABLE \ 65 {\ 66 {BIT64(44)|BIT64(45)|BIT64(46)|BIT64(47), {GPIO_DEV_SPI0_CSN, GPIO_DEV_SPI0_SCK, GPIO_DEV_SPI0_MOSI, GPIO_DEV_SPI0_MISO}},\ 67 } 68 #define GPIO_SPI0_USED_GPIO_NUM 4 69 70 #define GPIO_I2C1_MAP_TABLE \ 71 {\ 72 {BIT64(0)|BIT64(1), {GPIO_DEV_I2C1_SCL, GPIO_DEV_I2C1_SDA}},\ 73 } 74 #define GPIO_I2C1_USED_GPIO_NUM 2 75 76 #if CONFIG_CHANGE_JTAG_GPIO 77 #define GPIO_JTAG_MAP_TABLE \ 78 {\ 79 {BIT64(20)|BIT64(21), {GPIO_DEV_JTAG_TCK, GPIO_DEV_JTAG_TMS}},\ 80 {BIT64(0)|BIT64(1), {GPIO_DEV_JTAG_TCK, GPIO_DEV_JTAG_TMS}},\ 81 } 82 #define GPIO_JTAG_USED_GPIO_NUM 2 83 #endif 84 85 86 #if CONFIG_GPIO_WAKEUP_SUPPORT 87 #define GPIO_STATIC_WAKEUP_SOURCE_MAP \ 88 {\ 89 /* {GPIO_1, GPIO_INT_TYPE_LOW_LEVEL}, */ \ 90 {GPIO_10, GPIO_INT_TYPE_LOW_LEVEL},\ 91 /* {GPIO_40, GPIO_INT_LEVEL_LOW}, */ \ 92 } 93 #endif 94 95 #define GPIO_CTRL_LDO_OUTPUT_HIGH_MAP \ 96 {\ 97 /* GPIO_2, */\ 98 /* GPIO_28, */\ 99 } 100 101 #define GPIO_CTRL_LDO_OUTPUT_LOW_MAP \ 102 {\ 103 /* GPIO_4, */\ 104 /* GPIO_26, */\ 105 } 106 /* 107 * Camera DVP GPIO MAP 108 */ 109 #define CAMERA_DVP_MCLK_PIN (GPIO_27) 110 #define CAMERA_DVP_PCLK_PIN (GPIO_29) 111 #define CAMERA_DVP_HSYNC_PIN (GPIO_30) 112 #define CAMERA_DVP_VSYNC_PIN (GPIO_31) 113 #define CAMERA_DVP_PXDATA0_PIN (GPIO_32) 114 #define CAMERA_DVP_PXDATA1_PIN (GPIO_33) 115 #define CAMERA_DVP_PXDATA2_PIN (GPIO_34) 116 #define CAMERA_DVP_PXDATA3_PIN (GPIO_35) 117 #define CAMERA_DVP_PXDATA4_PIN (GPIO_36) 118 #define CAMERA_DVP_PXDATA5_PIN (GPIO_37) 119 #define CAMERA_DVP_PXDATA6_PIN (GPIO_38) 120 #define CAMERA_DVP_PXDATA7_PIN (GPIO_39) 121 122 #define CAMERA_DVP_MCLK_FUNC (GPIO_DEV_JPEG_MCLK) 123 #define CAMERA_DVP_AUXS_FUNC (GPIO_DEV_CLK_AUXS) 124 #define CAMERA_DVP_PCLK_FUNC (GPIO_DEV_JPEG_PCLK) 125 #define CAMERA_DVP_HSYNC_FUNC (GPIO_DEV_JPEG_HSYNC) 126 #define CAMERA_DVP_VSYNC_FUNC (GPIO_DEV_JPEG_VSYNC) 127 #define CAMERA_DVP_PXDATA0_FUNC (GPIO_DEV_JPEG_PXDATA0) 128 #define CAMERA_DVP_PXDATA1_FUNC (GPIO_DEV_JPEG_PXDATA1) 129 #define CAMERA_DVP_PXDATA2_FUNC (GPIO_DEV_JPEG_PXDATA2) 130 #define CAMERA_DVP_PXDATA3_FUNC (GPIO_DEV_JPEG_PXDATA3) 131 #define CAMERA_DVP_PXDATA4_FUNC (GPIO_DEV_JPEG_PXDATA4) 132 #define CAMERA_DVP_PXDATA5_FUNC (GPIO_DEV_JPEG_PXDATA5) 133 #define CAMERA_DVP_PXDATA6_FUNC (GPIO_DEV_JPEG_PXDATA6) 134 #define CAMERA_DVP_PXDATA7_FUNC (GPIO_DEV_JPEG_PXDATA7) 135 136 #define CAMERA_DVP_I2C_ID (CONFIG_CAMERA_I2C_ID) 137 #define CAMERA_DVP_I2C_BAUD_RATE (I2C_BAUD_RATE_100KHZ) 138 #define CAMERA_DVP_I2C_MODE (I2C_ADDR_MODE_7BIT) 139 140 141 /* 142 * LCD RGB GPIO MAP 143 */ 144 #define LCD_RGB_R0_PIN (GPIO_23) 145 #define LCD_RGB_R1_PIN (GPIO_22) 146 #define LCD_RGB_R2_PIN (GPIO_21) 147 #define LCD_RGB_R3_PIN (GPIO_20) 148 #define LCD_RGB_R4_PIN (GPIO_19) 149 #define LCD_RGB_G0_PIN (GPIO_42) 150 #define LCD_RGB_G1_PIN (GPIO_41) 151 #define LCD_RGB_G2_PIN (GPIO_40) 152 #define LCD_RGB_G3_PIN (GPIO_26) 153 #define LCD_RGB_G4_PIN (GPIO_25) 154 #define LCD_RGB_G5_PIN (GPIO_24) 155 #define LCD_RGB_B0_PIN (GPIO_47) 156 #define LCD_RGB_B1_PIN (GPIO_46) 157 #define LCD_RGB_B2_PIN (GPIO_45) 158 #define LCD_RGB_B3_PIN (GPIO_44) 159 #define LCD_RGB_B4_PIN (GPIO_43) 160 #define LCD_RGB_CLK_PIN (GPIO_14) 161 #define LCD_RGB_DISP_PIN (GPIO_15) 162 #define LCD_RGB_HSYNC_PIN (GPIO_17) 163 #define LCD_RGB_VSYNC_PIN (GPIO_18) 164 #define LCD_RGB_DE_PIN (GPIO_16) 165 166 #define LCD_RGB_R0_FUNC (GPIO_DEV_LCD_RGB11) 167 #define LCD_RGB_R1_FUNC (GPIO_DEV_LCD_RGB12) 168 #define LCD_RGB_R2_FUNC (GPIO_DEV_LCD_RGB13) 169 #define LCD_RGB_R3_FUNC (GPIO_DEV_LCD_RGB14) 170 #define LCD_RGB_R4_FUNC (GPIO_DEV_LCD_RGB15) 171 #define LCD_RGB_G0_FUNC (GPIO_DEV_LCD_RGB5) 172 #define LCD_RGB_G1_FUNC (GPIO_DEV_LCD_RGB6) 173 #define LCD_RGB_G2_FUNC (GPIO_DEV_LCD_RGB7) 174 #define LCD_RGB_G3_FUNC (GPIO_DEV_LCD_RGB8) 175 #define LCD_RGB_G4_FUNC (GPIO_DEV_LCD_RGB9) 176 #define LCD_RGB_G5_FUNC (GPIO_DEV_LCD_RGB10) 177 #define LCD_RGB_B0_FUNC (GPIO_DEV_LCD_RGB0) 178 #define LCD_RGB_B1_FUNC (GPIO_DEV_LCD_RGB1) 179 #define LCD_RGB_B2_FUNC (GPIO_DEV_LCD_RGB2) 180 #define LCD_RGB_B3_FUNC (GPIO_DEV_LCD_RGB3) 181 #define LCD_RGB_B4_FUNC (GPIO_DEV_LCD_RGB4) 182 #define LCD_RGB_CLK_FUNC (GPIO_DEV_LCD_RGB20) 183 #define LCD_RGB_DISP_FUNC (GPIO_DEV_LCD_RGB19) 184 #define LCD_RGB_HSYNC_FUNC (GPIO_DEV_LCD_RGB17) 185 #define LCD_RGB_VSYNC_FUNC (GPIO_DEV_LCD_RGB16) 186 #define LCD_RGB_DE_FUNC (GPIO_DEV_LCD_RGB18) 187 188 #define LCD_PWM_BACKLIGHT (PWM_ID_1) 189 190 /* 191 * LCD MCU GPIO MAP 192 */ 193 #define LCD_MCU_D0_PIN (GPIO_47) 194 #define LCD_MCU_D1_PIN (GPIO_46) 195 #define LCD_MCU_D2_PIN (GPIO_45) 196 #define LCD_MCU_D3_PIN (GPIO_44) 197 #define LCD_MCU_D4_PIN (GPIO_43) 198 #define LCD_MCU_D5_PIN (GPIO_42) 199 #define LCD_MCU_D6_PIN (GPIO_41) 200 #define LCD_MCU_D7_PIN (GPIO_40) 201 #define LCD_MCU_RDX_PIN (GPIO_23) 202 #define LCD_MCU_WRX_PIN (GPIO_22) 203 #define LCD_MCU_RSX_PIN (GPIO_21) 204 #define LCD_MCU_RESET_PIN (GPIO_20) 205 #define LCD_MCU_CSX_PIN (GPIO_19) 206 207 #define LCD_MCU_D0_FUNC (GPIO_DEV_LCD_RGB0) 208 #define LCD_MCU_D1_FUNC (GPIO_DEV_LCD_RGB1) 209 #define LCD_MCU_D2_FUNC (GPIO_DEV_LCD_RGB2) 210 #define LCD_MCU_D3_FUNC (GPIO_DEV_LCD_RGB3) 211 #define LCD_MCU_D4_FUNC (GPIO_DEV_LCD_RGB4) 212 #define LCD_MCU_D5_FUNC (GPIO_DEV_LCD_RGB5) 213 #define LCD_MCU_D6_FUNC (GPIO_DEV_LCD_RGB6) 214 #define LCD_MCU_D7_FUNC (GPIO_DEV_LCD_RGB7) 215 #define LCD_MCU_RDX_FUNC (GPIO_DEV_LCD_RGB11) 216 #define LCD_MCU_WRX_FUNC (GPIO_DEV_LCD_RGB12) 217 #define LCD_MCU_RSX_FUNC (GPIO_DEV_LCD_RGB13) 218 #define LCD_MCU_RESET_FUNC (GPIO_DEV_LCD_RGB14) 219 #define LCD_MCU_CSX_FUNC (GPIO_DEV_LCD_RGB15) 220 221 #ifdef __cplusplus 222 } 223 #endif 224