1*cecbb93cSCathy Xu /* 2*cecbb93cSCathy Xu * Copyright (c) 2025, MediaTek Inc. All rights reserved. 3*cecbb93cSCathy Xu * 4*cecbb93cSCathy Xu * SPDX-License-Identifier: BSD-3-Clause 5*cecbb93cSCathy Xu */ 6*cecbb93cSCathy Xu 7*cecbb93cSCathy Xu #include <assert.h> 8*cecbb93cSCathy Xu 9*cecbb93cSCathy Xu #include <mtgpio.h> 10*cecbb93cSCathy Xu #include <platform_def.h> 11*cecbb93cSCathy Xu 12*cecbb93cSCathy Xu typedef enum { 13*cecbb93cSCathy Xu REG_0 = 0, 14*cecbb93cSCathy Xu REG_1, 15*cecbb93cSCathy Xu REG_2, 16*cecbb93cSCathy Xu REG_3, 17*cecbb93cSCathy Xu REG_4, 18*cecbb93cSCathy Xu REG_5, 19*cecbb93cSCathy Xu REG_6, 20*cecbb93cSCathy Xu REG_7, 21*cecbb93cSCathy Xu REG_8 22*cecbb93cSCathy Xu } RegEnum; 23*cecbb93cSCathy Xu mt_gpio_find_reg_addr(uint32_t pin)24*cecbb93cSCathy Xuuintptr_t mt_gpio_find_reg_addr(uint32_t pin) 25*cecbb93cSCathy Xu { 26*cecbb93cSCathy Xu uintptr_t reg_addr = 0U; 27*cecbb93cSCathy Xu struct mt_pin_info gpio_info; 28*cecbb93cSCathy Xu 29*cecbb93cSCathy Xu assert(pin < MAX_GPIO_PIN); 30*cecbb93cSCathy Xu 31*cecbb93cSCathy Xu gpio_info = mt_pin_infos[pin]; 32*cecbb93cSCathy Xu 33*cecbb93cSCathy Xu switch (gpio_info.base & 0xF) { 34*cecbb93cSCathy Xu case REG_0: 35*cecbb93cSCathy Xu reg_addr = IOCFG_LM_BASE; 36*cecbb93cSCathy Xu break; 37*cecbb93cSCathy Xu case REG_1: 38*cecbb93cSCathy Xu reg_addr = IOCFG_RB0_BASE; 39*cecbb93cSCathy Xu break; 40*cecbb93cSCathy Xu case REG_2: 41*cecbb93cSCathy Xu reg_addr = IOCFG_RB1_BASE; 42*cecbb93cSCathy Xu break; 43*cecbb93cSCathy Xu case REG_3: 44*cecbb93cSCathy Xu reg_addr = IOCFG_BM0_BASE; 45*cecbb93cSCathy Xu break; 46*cecbb93cSCathy Xu case REG_4: 47*cecbb93cSCathy Xu reg_addr = IOCFG_BM1_BASE; 48*cecbb93cSCathy Xu break; 49*cecbb93cSCathy Xu case REG_5: 50*cecbb93cSCathy Xu reg_addr = IOCFG_BM2_BASE; 51*cecbb93cSCathy Xu break; 52*cecbb93cSCathy Xu case REG_6: 53*cecbb93cSCathy Xu reg_addr = IOCFG_LT0_BASE; 54*cecbb93cSCathy Xu break; 55*cecbb93cSCathy Xu case REG_7: 56*cecbb93cSCathy Xu reg_addr = IOCFG_LT1_BASE; 57*cecbb93cSCathy Xu break; 58*cecbb93cSCathy Xu case REG_8: 59*cecbb93cSCathy Xu reg_addr = IOCFG_RT_BASE; 60*cecbb93cSCathy Xu break; 61*cecbb93cSCathy Xu default: 62*cecbb93cSCathy Xu break; 63*cecbb93cSCathy Xu } 64*cecbb93cSCathy Xu 65*cecbb93cSCathy Xu return reg_addr; 66*cecbb93cSCathy Xu } 67