summaryrefslogtreecommitdiff
path: root/src/soc/mediatek/mt8173/mt6391.c
diff options
context:
space:
mode:
authorKoro Chen <koro.chen@mediatek.com>2015-07-31 17:11:04 +0800
committerPatrick Georgi <pgeorgi@google.com>2016-01-22 19:37:33 +0100
commit64a6b9229a73a0577d7c738763d2d77d91bc0c49 (patch)
treea0f3f90c96a2d0819f5985281a1d395ea3716308 /src/soc/mediatek/mt8173/mt6391.c
parent5d7c38ffa93b9713796bbccbf9c29cbacc1732d6 (diff)
downloadcoreboot-64a6b9229a73a0577d7c738763d2d77d91bc0c49.tar.xz
mediatek/mt8173: configure audio
BRANCH=none BUG=none TEST=build and verified pass on oak board Change-Id: I2680f6b87614362dffb27490bdeedf7125006c3f Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: bc2bb9f5b461ec848df8aba07940b895401004f8 Original-Change-Id: I848468cec04a36659fbb4b898dff9368305d72ac Original-Signed-off-by: Koro Chen <koro.chen@mediatek.com> Original-Reviewed-on: https://chromium-review.googlesource.com/292683 Original-Commit-Ready: Yidi Lin <yidi.lin@mediatek.com> Original-Tested-by: Yidi Lin <yidi.lin@mediatek.com> Original-Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/13091 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src/soc/mediatek/mt8173/mt6391.c')
-rw-r--r--src/soc/mediatek/mt8173/mt6391.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/soc/mediatek/mt8173/mt6391.c b/src/soc/mediatek/mt8173/mt6391.c
index 09f14a1597..21ce7ea6fe 100644
--- a/src/soc/mediatek/mt8173/mt6391.c
+++ b/src/soc/mediatek/mt8173/mt6391.c
@@ -59,6 +59,19 @@ void mt6391_write(u16 reg, u16 val, u32 mask, u32 shift)
return;
}
+static void mt6391_configure_vcama(enum ldo_voltage vsel)
+{
+ /* 2'b00: 1.5V
+ * 2'b01: 1.8V
+ * 2'b10: 2.5V
+ * 2'b11: 2.8V
+ */
+ mt6391_write(PMIC_RG_ANALDO_CON6, vsel - 2, PMIC_RG_VCAMA_VOSEL_MASK,
+ PMIC_RG_VCAMA_VOSEL_SHIFT);
+ mt6391_write(PMIC_RG_ANALDO_CON2, 1, PMIC_RG_VCAMA_EN_MASK,
+ PMIC_RG_VCAMA_EN_SHIFT);
+}
+
void mt6391_configure_ldo(enum ldo_power ldo, enum ldo_voltage vsel)
{
u16 addr;
@@ -78,6 +91,10 @@ void mt6391_configure_ldo(enum ldo_power ldo, enum ldo_voltage vsel)
if (vsel == LDO_2P0)
vsel = 7;
break;
+ case LDO_VCAMA:
+ assert(vsel > LDO_1P3 && vsel < LDO_3P0);
+ mt6391_configure_vcama(vsel);
+ return;
default:
break;
}