diff options
Diffstat (limited to 'plat/mediatek/common/drivers/pmic_wrap/pmic_wrap_init_v2.c')
-rw-r--r-- | plat/mediatek/common/drivers/pmic_wrap/pmic_wrap_init_v2.c | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/plat/mediatek/common/drivers/pmic_wrap/pmic_wrap_init_v2.c b/plat/mediatek/common/drivers/pmic_wrap/pmic_wrap_init_v2.c deleted file mode 100644 index fca69130a4..0000000000 --- a/plat/mediatek/common/drivers/pmic_wrap/pmic_wrap_init_v2.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2020, MediaTek Inc. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include <common/debug.h> -#include <drivers/delay_timer.h> -#include <lib/mmio.h> - -#include "platform_def.h" -#include "pmic_wrap_init.h" - -/* pmic wrap module wait_idle and read polling interval (in microseconds) */ -enum pwrap_polling_interval { - WAIT_IDLE_POLLING_DELAY_US = 1, - READ_POLLING_DELAY_US = 2 -}; - -static uint32_t pwrap_check_idle(void *wacs_register, uint32_t timeout_us) -{ - uint32_t reg_rdata = 0U, retry; - - retry = (timeout_us + WAIT_IDLE_POLLING_DELAY_US) / - WAIT_IDLE_POLLING_DELAY_US; - while (retry != 0) { - udelay(WAIT_IDLE_POLLING_DELAY_US); - reg_rdata = mmio_read_32((uintptr_t)wacs_register); - if (GET_WACS_FSM(reg_rdata) == SWINF_FSM_IDLE) { - break; - } - retry--; - }; - - if (retry == 0) { - /* timeout */ - return E_PWR_WAIT_IDLE_TIMEOUT; - } - - return 0U; -} - -static uint32_t pwrap_check_vldclr(void *wacs_register, uint32_t timeout_us) -{ - uint32_t reg_rdata = 0U, retry; - - retry = (timeout_us + READ_POLLING_DELAY_US) / READ_POLLING_DELAY_US; - while (retry != 0) { - udelay(READ_POLLING_DELAY_US); - reg_rdata = mmio_read_32((uintptr_t)wacs_register); - if (GET_WACS_FSM(reg_rdata) == SWINF_FSM_WFVLDCLR) { - break; - } - retry--; - }; - - if (retry == 0) { - /* timeout */ - return E_PWR_WAIT_IDLE_TIMEOUT; - } - - return 0U; -} - -static int32_t pwrap_wacs2(uint32_t write, uint32_t adr, uint32_t wdata, - uint32_t *rdata, uint32_t init_check) -{ - uint32_t reg_rdata, return_value; - - if (init_check != 0) { - if ((mmio_read_32((uintptr_t)&mtk_pwrap->init_done) & 0x1) == 0) { - ERROR("initialization isn't finished\n"); - return E_PWR_NOT_INIT_DONE; - } - } - - /* Wait for Software Interface FSM state to be IDLE. */ - return_value = pwrap_check_idle(&mtk_pwrap->wacs2_sta, - PWRAP_WAIT_IDLE_US); - if (return_value != 0) { - return return_value; - } - - /* Set the write data */ - if (write == 1) { - /* Set the write data. */ - mmio_write_32((uintptr_t)&mtk_pwrap->wacs2_wdata, wdata); - } - - /* Send the command. */ - mmio_write_32((uintptr_t)&mtk_pwrap->wacs2_cmd, (write << 29) | adr); - - if (write == 0) { - /* - * Wait for Software Interface FSM state to be WFVLDCLR, - * read the data and clear the valid flag. - */ - return_value = pwrap_check_vldclr(&mtk_pwrap->wacs2_sta, - PWRAP_READ_US); - if (return_value != 0) { - return return_value; - } - - if (rdata == NULL) { - return E_PWR_INVALID_ARG; - } - - reg_rdata = mmio_read_32((uintptr_t)&mtk_pwrap->wacs2_rdata); - *rdata = reg_rdata; - mmio_write_32((uintptr_t)&mtk_pwrap->wacs2_vldclr, 0x1); - } - - return return_value; -} - -/* external API for pmic_wrap user */ -int32_t pwrap_read(uint32_t adr, uint32_t *rdata) -{ - return pwrap_wacs2(0, adr, 0, rdata, 1); -} - -int32_t pwrap_write(uint32_t adr, uint32_t wdata) -{ - return pwrap_wacs2(1, adr, wdata, 0, 1); -} |