/*
 * Copyright (c) 2020, MediaTek Inc. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <assert.h>
#include <mtgpio.h>
#include <platform_def.h>

uintptr_t mt_gpio_find_reg_addr(uint32_t pin)
{
	uintptr_t reg_addr = 0U;
	struct mt_pin_info gpio_info;

	assert(pin < MAX_GPIO_PIN);

	gpio_info = mt_pin_infos[pin];

	switch (gpio_info.base & 0x0f) {
	case 0:
		reg_addr = IOCFG_RM_BASE;
		break;
	case 1:
		reg_addr = IOCFG_BM_BASE;
		break;
	case 2:
		reg_addr = IOCFG_BL_BASE;
		break;
	case 3:
		reg_addr = IOCFG_BR_BASE;
		break;
	case 4:
		reg_addr = IOCFG_LM_BASE;
		break;
	case 5:
		reg_addr = IOCFG_LB_BASE;
		break;
	case 6:
		reg_addr = IOCFG_RT_BASE;
		break;
	case 7:
		reg_addr = IOCFG_LT_BASE;
		break;
	case 8:
		reg_addr = IOCFG_TL_BASE;
		break;
	default:
		break;
	}

	return reg_addr;
}
