summaryrefslogtreecommitdiffstats
path: root/src/soc/mediatek/mt8195/include/soc
diff options
context:
space:
mode:
authorAndrew SH Cheng <andrew-sh.cheng@mediatek.com>2021-06-22 14:50:17 +0800
committerHung-Te Lin <hungte@chromium.org>2021-06-23 05:50:12 +0000
commit0865b4fc099e61a4dc98cef25832d78e44b93d9e (patch)
treea7885a49b1b4374a055766bbf1bdba8edc9a1a3a /src/soc/mediatek/mt8195/include/soc
parent0a5837e9f192cde66d6e7d1e2818d6526c766d0a (diff)
downloadcoreboot-0865b4fc099e61a4dc98cef25832d78e44b93d9e.tar.gz
coreboot-0865b4fc099e61a4dc98cef25832d78e44b93d9e.tar.bz2
coreboot-0865b4fc099e61a4dc98cef25832d78e44b93d9e.zip
soc/mediatek/mt8195: Add mt6360 driver for PMIC access
Signed-off-by: Andrew SH Cheng <andrew-sh.cheng@mediatek.com> Change-Id: Ieaf234f35f2b7d440bdf1e6ec4c455af7b311623 Reviewed-on: https://review.coreboot.org/c/coreboot/+/55710 Reviewed-by: Yu-Ping Wu <yupingso@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/mediatek/mt8195/include/soc')
-rw-r--r--src/soc/mediatek/mt8195/include/soc/mt6360.h49
1 files changed, 47 insertions, 2 deletions
diff --git a/src/soc/mediatek/mt8195/include/soc/mt6360.h b/src/soc/mediatek/mt8195/include/soc/mt6360.h
index 3ac66faad3f8..77ae47dee14b 100644
--- a/src/soc/mediatek/mt8195/include/soc/mt6360.h
+++ b/src/soc/mediatek/mt8195/include/soc/mt6360.h
@@ -5,6 +5,25 @@
#include <stdint.h>
+#define MT6360_LDO_I2C_ADDR 0x64
+#define MT6360_PMIC_I2C_ADDR 0x1a
+
+#define MT6360_DATA(_enreg, _enmask, _vreg, _vmask, _table) \
+{ \
+ .enable_reg = _enreg, \
+ .enable_mask = _enmask, \
+ .vsel_reg = _vreg, \
+ .vsel_mask = _vmask, \
+ .vsel_table = _table, \
+ .vsel_table_len = ARRAY_SIZE(_table), \
+}
+
+enum {
+ MT6360_INDEX_LDO = 0,
+ MT6360_INDEX_PMIC,
+ MT6360_INDEX_COUNT,
+};
+
enum mt6360_ldo_id {
MT6360_LDO1 = 0,
MT6360_LDO2,
@@ -13,12 +32,38 @@ enum mt6360_ldo_id {
MT6360_LDO_COUNT,
};
-#define MT6360_LDO_I2C_ADDR 0x64
-#define MT6360_PMIC_I2C_ADDR 0x1A
+enum mt6360_pmic_id {
+ MT6360_PMIC_BUCK1 = 0,
+ MT6360_PMIC_BUCK2,
+ MT6360_PMIC_LDO6,
+ MT6360_PMIC_LDO7,
+ MT6360_PMIC_COUNT,
+};
+
+struct mt6360_i2c_data {
+ u8 bus;
+ u8 addr;
+};
+
+struct mt6360_data {
+ uint8_t enable_reg;
+ uint8_t enable_mask;
+ uint8_t vsel_reg;
+ uint8_t vsel_mask;
+ const uint32_t *vsel_table;
+ uint32_t vsel_table_len;
+};
void mt6360_init(uint8_t bus);
+
void mt6360_ldo_enable(enum mt6360_ldo_id ldo_id, uint8_t enable);
uint8_t mt6360_ldo_is_enabled(enum mt6360_ldo_id ldo_id);
void mt6360_ldo_set_voltage(enum mt6360_ldo_id ldo_id, u32 voltage_uv);
u32 mt6360_ldo_get_voltage(enum mt6360_ldo_id ldo_id);
+
+void mt6360_pmic_enable(enum mt6360_pmic_id pmic_id, uint8_t enable);
+uint8_t mt6360_pmic_is_enabled(enum mt6360_pmic_id pmic_id);
+void mt6360_pmic_set_voltage(enum mt6360_pmic_id pmic_id, u32 voltage_uv);
+u32 mt6360_pmic_get_voltage(enum mt6360_pmic_id pmic_id);
+
#endif