soc/mediatek/mt8195: add HDMI low power setting

Add HDMI low power setting to reduce power consumption.

Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com>
Change-Id: Ica91645789e5de3401131e7050d2b1ee06c535dd
Reviewed-on: https://review.coreboot.org/c/coreboot/+/57042
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Rex-BC Chen 2021-08-13 16:34:26 +08:00 committed by Hung-Te Lin
parent a3ce81d28b
commit 8316db207d
4 changed files with 61 additions and 0 deletions

View File

@ -58,6 +58,7 @@ ramstage-y += dp_intf.c dptx.c dptx_hal.c
ramstage-y += emi.c
ramstage-y += ../common/flash_controller.c
ramstage-y += ../common/gpio.c gpio.c
ramstage-y += hdmi.c
ramstage-y += ../common/i2c.c i2c.c
ramstage-y += ../common/mcu.c
ramstage-y += ../common/mcupm.c

View File

@ -0,0 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <console/console.h>
#include <device/mmio.h>
#include <soc/hdmi.h>
void hdmi_low_power_setting(void)
{
printk(BIOS_INFO, "%s: Enable HDMI low power setting\n", __func__);
setbits32((void *)HDMI_PROTECT_REG, BIT(0) | BIT(1));
/* HDMI-RX powerdown */
write32((void *)HDMI_RX_PDN_0_REG, HDMI_RX_PDN_0_VAL);
write32((void *)HDMI_RX_PDN_1_REG, HDMI_RX_PDN_1_VAL);
write32((void *)HDMI_RX_PDN_2_REG, HDMI_RX_PDN_2_VAL);
write32((void *)HDMI_RX_PDN_3_REG, HDMI_RX_PDN_3_VAL);
write32((void *)HDMI_RX_PDN_4_REG, HDMI_RX_PDN_4_VAL);
write32((void *)HDMI_RX_PDN_5_REG, HDMI_RX_PDN_5_VAL);
write32((void *)HDMI_RX_PDN_6_REG, HDMI_RX_PDN_6_VAL);
write32((void *)HDMI_RX_PDN_7_REG, HDMI_RX_PDN_7_VAL);
/* HDMI-TX powerdown */
write32((void *)HDMI_TX_PDN_REG, HDMI_TX_PDN_VAL);
}

View File

@ -0,0 +1,33 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef SOC_MEDIATEK_MT8195_HDMI_H
#define SOC_MEDIATEK_MT8195_HDMI_H
#define HDMI_TX_BASE_REG 0x11D5F000
#define HDMI_RX_BASE_REG 0x11D60000
#define HDMI_PROTECT_REG (HDMI_TX_BASE_REG + 0xD0)
#define HDMI_RX_PDN_0_REG (HDMI_RX_BASE_REG + 0x464)
#define HDMI_RX_PDN_1_REG (HDMI_RX_BASE_REG + 0x564)
#define HDMI_RX_PDN_2_REG (HDMI_RX_BASE_REG + 0x468)
#define HDMI_RX_PDN_3_REG (HDMI_RX_BASE_REG + 0x568)
#define HDMI_RX_PDN_4_REG (HDMI_RX_BASE_REG + 0x46c)
#define HDMI_RX_PDN_5_REG (HDMI_RX_BASE_REG + 0x56c)
#define HDMI_RX_PDN_6_REG (HDMI_RX_BASE_REG + 0x2000)
#define HDMI_RX_PDN_7_REG (HDMI_RX_BASE_REG + 0x2080)
#define HDMI_TX_PDN_REG (HDMI_TX_BASE_REG + 0x40)
#define HDMI_RX_PDN_0_VAL 0xFFFFFC00
#define HDMI_RX_PDN_1_VAL 0xFFFFFC00
#define HDMI_RX_PDN_2_VAL 0xFFFFFFFF
#define HDMI_RX_PDN_3_VAL 0xFFFFFFFF
#define HDMI_RX_PDN_4_VAL 0xFFFF000F
#define HDMI_RX_PDN_5_VAL 0xFFFF000F
#define HDMI_RX_PDN_6_VAL 0xFFFF0006
#define HDMI_RX_PDN_7_VAL 0xFFFF0007
#define HDMI_TX_PDN_VAL 0x0012C561
void hdmi_low_power_setting(void);
#endif

View File

@ -3,6 +3,7 @@
#include <device/device.h>
#include <soc/devapc.h>
#include <soc/emi.h>
#include <soc/hdmi.h>
#include <soc/mcupm.h>
#include <soc/mmu_operations.h>
#include <soc/sspm.h>
@ -21,6 +22,7 @@ static void soc_init(struct device *dev)
mcupm_init();
sspm_init();
ufs_disable_refclk();
hdmi_low_power_setting();
}
static struct device_operations soc_ops = {