diff options
Diffstat (limited to 'src/soc/mediatek/mt8195/include/soc/mt6360.h')
-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 |