xref: /rk3399_ARM-atf/plat/mediatek/mt8192/drivers/gpio/mtgpio.c (revision a92b02566e23ca73f9874555335dc6b19f0f242c)
1054af8f2SPo Xu /*
2054af8f2SPo Xu  * Copyright (c) 2020, MediaTek Inc. All rights reserved.
3054af8f2SPo Xu  *
4054af8f2SPo Xu  * SPDX-License-Identifier: BSD-3-Clause
5054af8f2SPo Xu  */
6054af8f2SPo Xu 
7054af8f2SPo Xu #include <assert.h>
8054af8f2SPo Xu #include <mtgpio.h>
9054af8f2SPo Xu #include <platform_def.h>
10054af8f2SPo Xu 
mt_gpio_find_reg_addr(uint32_t pin)11*aebd4dc8Smtk20895 uintptr_t mt_gpio_find_reg_addr(uint32_t pin)
12054af8f2SPo Xu {
13054af8f2SPo Xu 	uintptr_t reg_addr = 0U;
14054af8f2SPo Xu 	struct mt_pin_info gpio_info;
15054af8f2SPo Xu 
16*aebd4dc8Smtk20895 	assert(pin < MAX_GPIO_PIN);
17*aebd4dc8Smtk20895 
18*aebd4dc8Smtk20895 	gpio_info = mt_pin_infos[pin];
19054af8f2SPo Xu 
20054af8f2SPo Xu 	switch (gpio_info.base & 0x0f) {
21054af8f2SPo Xu 	case 0:
22054af8f2SPo Xu 		reg_addr = IOCFG_RM_BASE;
23054af8f2SPo Xu 		break;
24054af8f2SPo Xu 	case 1:
25054af8f2SPo Xu 		reg_addr = IOCFG_BM_BASE;
26054af8f2SPo Xu 		break;
27054af8f2SPo Xu 	case 2:
28054af8f2SPo Xu 		reg_addr = IOCFG_BL_BASE;
29054af8f2SPo Xu 		break;
30054af8f2SPo Xu 	case 3:
31054af8f2SPo Xu 		reg_addr = IOCFG_BR_BASE;
32054af8f2SPo Xu 		break;
33054af8f2SPo Xu 	case 4:
34054af8f2SPo Xu 		reg_addr = IOCFG_LM_BASE;
35054af8f2SPo Xu 		break;
36054af8f2SPo Xu 	case 5:
37054af8f2SPo Xu 		reg_addr = IOCFG_LB_BASE;
38054af8f2SPo Xu 		break;
39054af8f2SPo Xu 	case 6:
40054af8f2SPo Xu 		reg_addr = IOCFG_RT_BASE;
41054af8f2SPo Xu 		break;
42054af8f2SPo Xu 	case 7:
43054af8f2SPo Xu 		reg_addr = IOCFG_LT_BASE;
44054af8f2SPo Xu 		break;
45054af8f2SPo Xu 	case 8:
46054af8f2SPo Xu 		reg_addr = IOCFG_TL_BASE;
47054af8f2SPo Xu 		break;
48054af8f2SPo Xu 	default:
49054af8f2SPo Xu 		break;
50054af8f2SPo Xu 	}
51054af8f2SPo Xu 
52054af8f2SPo Xu 	return reg_addr;
53054af8f2SPo Xu }
54