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 21 #include <common/bk_err.h> 22 23 /** 24 * @brief GPIO defines 25 * @defgroup bk_api_gpio_defs macos 26 * @ingroup bk_api_gpio 27 * @{ 28 */ 29 30 /** 31 * @brief default GPIO pins number 32 */ 33 typedef enum { 34 GPIO_0 = 0, 35 GPIO_1, 36 GPIO_2, 37 GPIO_3, 38 GPIO_4, 39 GPIO_5, 40 GPIO_6, 41 GPIO_7, 42 GPIO_8, 43 GPIO_9, 44 GPIO_10, 45 GPIO_11, 46 GPIO_12, 47 GPIO_13, 48 GPIO_14, 49 GPIO_15, 50 GPIO_16, 51 GPIO_17, 52 GPIO_18, 53 GPIO_19, 54 GPIO_20, 55 GPIO_21, 56 GPIO_22, 57 GPIO_23, 58 GPIO_24, 59 GPIO_25, 60 GPIO_26, 61 GPIO_27, 62 GPIO_28, 63 GPIO_29, 64 GPIO_30, 65 GPIO_31, 66 GPIO_32, 67 GPIO_33, 68 GPIO_34, 69 GPIO_35, 70 GPIO_36, 71 GPIO_37, 72 GPIO_38, 73 GPIO_39, 74 GPIO_40, 75 GPIO_41, 76 GPIO_42, 77 GPIO_43, 78 GPIO_44, 79 GPIO_45, 80 GPIO_46, 81 GPIO_47, 82 GPIO_NUM, 83 } gpio_id_t; 84 85 86 /** 87 * @brief GPIO input/output enable 88 */ 89 typedef enum { 90 GPIO_IO_DISABLE = 0, /**<disable gpio output and input mode which is high impendence state */ 91 GPIO_OUTPUT_ENABLE = 1, /**<set gpio output mode */ 92 GPIO_INPUT_ENABLE = 2, /**<set gpio input mode */ 93 GPIO_IO_INVALID = 3, /**<gpio invalid mode */ 94 } gpio_io_mode_t; 95 96 97 /** 98 * @brief GPIO pull up/down set 99 */ 100 typedef enum { 101 GPIO_PULL_DISABLE = 0, /**<disbale gpio pull mode */ 102 GPIO_PULL_DOWN_EN = 1, /**<set gpio as pull down mode */ 103 GPIO_PULL_UP_EN = 2, /**<set gpio as pull up mode */ 104 GPIO_PULL_INVALID = 3, /**<gpio invalid pull mode */ 105 } gpio_pull_mode_t; 106 107 /** 108 * @brief GPIO second function disable/enable 109 */ 110 typedef enum { 111 GPIO_SECOND_FUNC_DISABLE = 0, /**< disbale gpio second function */ 112 GPIO_SECOND_FUNC_ENABLE, /**< enbale gpio second function */ 113 } gpio_func_mode_t; 114 115 /** 116 * @brief GPIO mode config 117 */ 118 typedef struct { 119 gpio_io_mode_t io_mode; /**< set gpio output or input mode */ 120 gpio_pull_mode_t pull_mode; /**< set gpio pull mode */ 121 gpio_func_mode_t func_mode; /**< set gpio func mode */ 122 } gpio_config_t; 123 124 /** 125 * @brief GPIO intterrupt type 126 */ 127 typedef enum { 128 GPIO_INT_TYPE_LOW_LEVEL = 0, /**<set gpio as low level intterrupt type */ 129 GPIO_INT_TYPE_HIGH_LEVEL, /**<set gpio as high level intterrupt type */ 130 GPIO_INT_TYPE_RISING_EDGE, /**<set gpio as rising edge intterrupt type */ 131 GPIO_INT_TYPE_FALLING_EDGE, /**<set gpio as falling edge intterrupt type */ 132 GPIO_INT_TYPE_MAX, /**< Invalid intterrupt type mode */ 133 } gpio_int_type_t; 134 135 136 /** 137 * @brief GPIOs device number 138 */ 139 typedef enum { 140 GPIO_DEV_NONE = 0, /**< The GPIO doesn't map to any device */ 141 GPIO_DEV_PWM0= 0x01, 142 GPIO_DEV_PWM1, 143 GPIO_DEV_PWM2, 144 GPIO_DEV_PWM3, 145 GPIO_DEV_PWM4, 146 GPIO_DEV_PWM5, 147 GPIO_DEV_PWM6, 148 GPIO_DEV_PWM7, 149 GPIO_DEV_PWM8, 150 GPIO_DEV_PWM9, 151 GPIO_DEV_PWM10, 152 GPIO_DEV_PWM11, 153 154 GPIO_DEV_ADC0 = 0x0F, 155 GPIO_DEV_ADC1, 156 GPIO_DEV_ADC2, 157 GPIO_DEV_ADC3, 158 GPIO_DEV_ADC4, 159 GPIO_DEV_ADC5, 160 GPIO_DEV_ADC6, 161 GPIO_DEV_ADC7, 162 GPIO_DEV_ADC8, 163 GPIO_DEV_ADC9, 164 GPIO_DEV_ADC10, 165 GPIO_DEV_ADC11, 166 GPIO_DEV_ADC12, 167 GPIO_DEV_ADC13, 168 169 GPIO_DEV_UART1_TXD= 0x1E, 170 GPIO_DEV_UART1_RXD, 171 GPIO_DEV_UART2_TXD, 172 GPIO_DEV_UART2_RXD, 173 GPIO_DEV_UART3_TXD, 174 GPIO_DEV_UART3_RXD, 175 176 GPIO_DEV_I2C0_SCL = 0x24, 177 GPIO_DEV_I2C0_SDA, 178 GPIO_DEV_I2C1_SCL, 179 GPIO_DEV_I2C1_SDA, 180 GPIO_DEV_I2C2_SCL, 181 GPIO_DEV_I2C2_SDA, 182 183 184 GPIO_DEV_SPI0_SCK = 0x2A, 185 GPIO_DEV_SPI0_CSN, 186 GPIO_DEV_SPI0_MOSI, 187 GPIO_DEV_SPI0_MISO, 188 GPIO_DEV_SPI1_SCK, 189 GPIO_DEV_SPI1_CSN, 190 GPIO_DEV_SPI1_MOSI, 191 GPIO_DEV_SPI1_MISO, 192 GPIO_DEV_SPI2_SCK, 193 GPIO_DEV_SPI2_CSN, 194 GPIO_DEV_SPI2_MOSI, 195 GPIO_DEV_SPI2_MISO, 196 197 GPIO_DEV_I2S1_CLK = 0x37, 198 GPIO_DEV_I2S1_SYNC, 199 GPIO_DEV_I2S1_DIN, 200 GPIO_DEV_I2S1_DOUT, 201 GPIO_DEV_I2S2_CLK, 202 GPIO_DEV_I2S2_SYNC, 203 GPIO_DEV_I2S2_DIN, 204 GPIO_DEV_I2S2_DOUT, 205 GPIO_DEV_I2S3_CLK, 206 GPIO_DEV_I2S3_SYNC, 207 GPIO_DEV_I2S3_DIN, 208 GPIO_DEV_I2S3_DOUT, 209 210 GPIO_DEV_JTAG_TCK, 211 GPIO_DEV_JTAG_TMS, 212 GPIO_DEV_JTAG_TDI, 213 GPIO_DEV_JTAG_TDO, 214 215 GPIO_DEV_SDIO_HOST_CLK = 0x48, 216 GPIO_DEV_SDIO_HOST_CMD, 217 GPIO_DEV_SDIO_HOST_DATA0, 218 GPIO_DEV_SDIO_HOST_DATA1, 219 GPIO_DEV_SDIO_HOST_DATA2, 220 GPIO_DEV_SDIO_HOST_DATA3, 221 222 GPIO_DEV_USB0_DP, 223 GPIO_DEV_USB0_DN, 224 225 GPIO_DEV_USB1_DP = 0x50, 226 GPIO_DEV_USB1_DN, 227 228 GPIO_DEV_UART1_CTS, 229 GPIO_DEV_UART1_RTS, 230 231 GPIO_DEV_JPEG_MCLK= 0x54, 232 GPIO_DEV_JPEG_PCLK, 233 GPIO_DEV_JPEG_HSYNC, 234 GPIO_DEV_JPEG_VSYNC, 235 GPIO_DEV_JPEG_PXDATA0, 236 GPIO_DEV_JPEG_PXDATA1, 237 GPIO_DEV_JPEG_PXDATA2, 238 GPIO_DEV_JPEG_PXDATA3, 239 GPIO_DEV_JPEG_PXDATA4, 240 GPIO_DEV_JPEG_PXDATA5, 241 GPIO_DEV_JPEG_PXDATA6, 242 GPIO_DEV_JPEG_PXDATA7, 243 244 GPIO_DEV_QSPI_RAM_CLK = 0x60, 245 GPIO_DEV_QSPI_RAM_CSN, 246 GPIO_DEV_QSPI_FLASH_CLK, 247 GPIO_DEV_QSPI_FLASH_CSN, 248 GPIO_DEV_QSPI_IO0, 249 GPIO_DEV_QSPI_IO1, 250 GPIO_DEV_QSPI_IO2, 251 GPIO_DEV_QSPI_IO3, 252 253 GPIO_DEV_IRDA, 254 GPIO_DEV_CLK13M, 255 GPIO_DEV_CLK26M, 256 GPIO_DEV_LPO_CLK, 257 GPIO_DEV_WIFI_ACTIVE, 258 GPIO_DEV_BT_ACTIVE, 259 GPIO_DEV_BT_PRIORITY, 260 261 GPIO_DEV_TXEN, 262 GPIO_DEV_RXEN = 0x70, 263 264 GPIO_DEV_PGA_INP, 265 GPIO_DEV_PGA_INN, 266 267 GPIO_DEV_SPDIF1, 268 GPIO_DEV_SPDIF2, 269 GPIO_DEV_SPDIF3, 270 GPIO_DEV_HDMI_CEC, 271 272 GPIO_DEV_I2S1_DOUT2, 273 GPIO_DEV_I2S1_DOUT3, 274 GPIO_DEV_I2S1_MCLK, 275 276 GPIO_DEV_DMIC1_CLK, 277 GPIO_DEV_DMIC1_DAT, 278 GPIO_DEV_DMIC2_CLK, 279 GPIO_DEV_DMIC2_DAT, 280 281 GPIO_DEV_DIG_CLKOUT1, 282 GPIO_DEV_DIG_CLKOUT2, 283 284 GPIO_DEV_TOUCH0 = 0x80, 285 GPIO_DEV_TOUCH1, 286 GPIO_DEV_TOUCH2, 287 GPIO_DEV_TOUCH3, 288 GPIO_DEV_TOUCH4, 289 GPIO_DEV_TOUCH5, 290 GPIO_DEV_TOUCH6, 291 GPIO_DEV_TOUCH7, 292 GPIO_DEV_TOUCH8, 293 GPIO_DEV_TOUCH9, 294 GPIO_DEV_TOUCH10, 295 GPIO_DEV_TOUCH11, 296 GPIO_DEV_TOUCH12, 297 GPIO_DEV_TOUCH13, 298 GPIO_DEV_TOUCH14, 299 GPIO_DEV_TOUCH15, 300 301 GPIO_DEV_LCD_RGB0 = 0x90, 302 GPIO_DEV_LCD_RGB1, 303 GPIO_DEV_LCD_RGB2, 304 GPIO_DEV_LCD_RGB3, 305 GPIO_DEV_LCD_RGB4, 306 GPIO_DEV_LCD_RGB5, 307 GPIO_DEV_LCD_RGB6, 308 GPIO_DEV_LCD_RGB7, 309 GPIO_DEV_LCD_RGB8, 310 GPIO_DEV_LCD_RGB9, 311 GPIO_DEV_LCD_RGB10, 312 GPIO_DEV_LCD_RGB11, 313 GPIO_DEV_LCD_RGB12, 314 GPIO_DEV_LCD_RGB13, 315 GPIO_DEV_LCD_RGB14, 316 GPIO_DEV_LCD_RGB15, 317 GPIO_DEV_LCD_RGB16, 318 GPIO_DEV_LCD_RGB17, 319 GPIO_DEV_LCD_RGB18, 320 GPIO_DEV_LCD_RGB19, 321 GPIO_DEV_LCD_RGB20 = 0xA4, 322 323 GPIO_DEV_QSPI_CLK = 0xA5, 324 GPIO_DEV_QSPI_CSN, 325 GPIO_DEV_BT_ANT0 = 0xA7, 326 GPIO_DEV_BT_ANT1, 327 GPIO_DEV_BT_ANT2, 328 GPIO_DEV_BT_ANT3, 329 GPIO_DEV_CAN_TX = 0xAB, 330 GPIO_DEV_CAN_RX, 331 GPIO_DEV_CAN_STANDBY, 332 GPIO_DEV_CLK_AUXS = 0xAE, 333 334 GPIO_DEV_DEBUG0 = 0xB0, 335 GPIO_DEV_DEBUG1, 336 GPIO_DEV_DEBUG2, 337 GPIO_DEV_DEBUG3, 338 GPIO_DEV_DEBUG4, 339 GPIO_DEV_DEBUG5, 340 GPIO_DEV_DEBUG6, 341 GPIO_DEV_DEBUG7, 342 GPIO_DEV_DEBUG8, 343 GPIO_DEV_DEBUG9, 344 GPIO_DEV_DEBUG10, 345 GPIO_DEV_DEBUG11, 346 GPIO_DEV_DEBUG12, 347 GPIO_DEV_DEBUG13, 348 GPIO_DEV_DEBUG14, 349 GPIO_DEV_DEBUG15, 350 GPIO_DEV_DEBUG16 = 0xC0, 351 GPIO_DEV_DEBUG17, 352 GPIO_DEV_DEBUG18, 353 GPIO_DEV_DEBUG19, 354 GPIO_DEV_DEBUG20, 355 GPIO_DEV_DEBUG21, 356 GPIO_DEV_DEBUG22, 357 GPIO_DEV_DEBUG23, 358 GPIO_DEV_DEBUG24, 359 GPIO_DEV_DEBUG25, 360 GPIO_DEV_DEBUG26, 361 GPIO_DEV_DEBUG27, 362 GPIO_DEV_DEBUG28, 363 GPIO_DEV_DEBUG29, 364 GPIO_DEV_DEBUG30, 365 GPIO_DEV_DEBUG31, 366 367 GPIO_DEV_INVALID = 0xFF, 368 } gpio_dev_t; 369 370 371 /** 372 * @} 373 */ 374 375 #ifdef __cplusplus 376 } 377 #endif 378