diff options
author | Andrew SH Cheng <andrew-sh.cheng@mediatek.com> | 2021-06-22 14:50:17 +0800 |
---|---|---|
committer | Hung-Te Lin <hungte@chromium.org> | 2021-06-23 05:50:12 +0000 |
commit | 0865b4fc099e61a4dc98cef25832d78e44b93d9e (patch) | |
tree | a7885a49b1b4374a055766bbf1bdba8edc9a1a3a /src/soc/mediatek/mt8195/include/soc | |
parent | 0a5837e9f192cde66d6e7d1e2818d6526c766d0a (diff) | |
download | coreboot-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.h | 49 |
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 |