mb/google/corsola: Implement regulator interface

Use regulator interface to use regulator more easily.

TEST=build pass
BUG=b:202871018

Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com>
Change-Id: Ied43cba51036c62a120df2afffeb63b5d73f012b
Reviewed-on: https://review.coreboot.org/c/coreboot/+/59250
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
Rex-BC Chen 2021-11-10 14:00:36 +08:00 committed by Hung-Te Lin
parent fb06ca0aa7
commit ea0b13205a
3 changed files with 48 additions and 1 deletions

View File

@ -8,9 +8,11 @@ verstage-y += reset.c
romstage-y += memlayout.ld romstage-y += memlayout.ld
romstage-y += chromeos.c romstage-y += chromeos.c
romstage-y += regulator.c
romstage-y += romstage.c romstage-y += romstage.c
ramstage-y += memlayout.ld ramstage-y += memlayout.ld
ramstage-y += chromeos.c ramstage-y += chromeos.c
ramstage-y += mainboard.c ramstage-y += mainboard.c
ramstage-y += regulator.c
ramstage-y += reset.c ramstage-y += reset.c

View File

@ -0,0 +1,44 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <assert.h>
#include <console/console.h>
#include <soc/mt6366.h>
#include <soc/regulator.h>
#define REGULATOR_NOT_SUPPORT -1
static const int regulator_id[] = {
[MTK_REGULATOR_VDD1] = REGULATOR_NOT_SUPPORT,
[MTK_REGULATOR_VDD2] = REGULATOR_NOT_SUPPORT,
[MTK_REGULATOR_VDDQ] = MT6366_VDDQ,
[MTK_REGULATOR_VMDDR] = REGULATOR_NOT_SUPPORT,
[MTK_REGULATOR_VCORE] = MT6366_VCORE,
[MTK_REGULATOR_VCC] = REGULATOR_NOT_SUPPORT,
[MTK_REGULATOR_VCCQ] = REGULATOR_NOT_SUPPORT,
[MTK_REGULATOR_VDRAM1] = MT6366_VDRAM1,
};
_Static_assert(ARRAY_SIZE(regulator_id) == MTK_REGULATOR_NUM, "regulator_id size error");
void mainboard_set_regulator_vol(enum mtk_regulator regulator,
uint32_t voltage_uv)
{
assert(regulator < MTK_REGULATOR_NUM);
if (regulator_id[regulator] < 0) {
printk(BIOS_ERR, "Invalid regulator ID: %d\n", regulator);
return;
}
mt6366_set_voltage(regulator_id[regulator], voltage_uv);
}
uint32_t mainboard_get_regulator_vol(enum mtk_regulator regulator)
{
assert(regulator < MTK_REGULATOR_NUM);
if (regulator_id[regulator] < 0) {
printk(BIOS_ERR, "Invalid regulator ID: %d\n", regulator);
return 0;
}
return mt6366_get_voltage(regulator_id[regulator]);
}

View File

@ -13,12 +13,13 @@ enum mtk_regulator {
MTK_REGULATOR_VCORE, MTK_REGULATOR_VCORE,
MTK_REGULATOR_VCC, MTK_REGULATOR_VCC,
MTK_REGULATOR_VCCQ, MTK_REGULATOR_VCCQ,
MTK_REGULATOR_VDRAM1,
MTK_REGULATOR_NUM,
}; };
void mainboard_set_regulator_vol(enum mtk_regulator regulator, void mainboard_set_regulator_vol(enum mtk_regulator regulator,
uint32_t voltage_uv); uint32_t voltage_uv);
uint32_t mainboard_get_regulator_vol(enum mtk_regulator regulator); uint32_t mainboard_get_regulator_vol(enum mtk_regulator regulator);
int mainboard_enable_regulator(enum mtk_regulator regulator, uint8_t enable); int mainboard_enable_regulator(enum mtk_regulator regulator, uint8_t enable);
uint8_t mainboard_regulator_is_enabled(enum mtk_regulator regulator); uint8_t mainboard_regulator_is_enabled(enum mtk_regulator regulator);