提交 86f5362e 编写于 作者: L Lukasz Majewski 提交者: Eduardo Valentin

thermal: exynos: Provide initial setting for TMU's test MUX address at Exynos4412

The commit d0a0ce3e ("thermal: exynos: Add
missing definations and code cleanup") has removed setting of test MUX address
value at TMU configuration setting.

This field is not present on Exynos4210 and Exynos5 SoCs. However on Exynos4412
SoC it is required to set this field after reset because without it TMU shows
maximal available temperature, which causes immediate platform shutdown.
Signed-off-by: NLukasz Majewski <l.majewski@samsung.com>
Reviewed-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Reviewed-by: NTomasz Figa <t.figa@samsung.com>
Signed-off-by: NEduardo Valentin <eduardo.valentin@ti.com>
上级 14ddfaec
...@@ -317,6 +317,9 @@ static void exynos_tmu_control(struct platform_device *pdev, bool on) ...@@ -317,6 +317,9 @@ static void exynos_tmu_control(struct platform_device *pdev, bool on)
con = readl(data->base + reg->tmu_ctrl); con = readl(data->base + reg->tmu_ctrl);
if (pdata->test_mux)
con |= (pdata->test_mux << reg->test_mux_addr_shift);
if (pdata->reference_voltage) { if (pdata->reference_voltage) {
con &= ~(reg->buf_vref_sel_mask << reg->buf_vref_sel_shift); con &= ~(reg->buf_vref_sel_mask << reg->buf_vref_sel_shift);
con |= pdata->reference_voltage << reg->buf_vref_sel_shift; con |= pdata->reference_voltage << reg->buf_vref_sel_shift;
......
...@@ -85,6 +85,7 @@ enum soc_type { ...@@ -85,6 +85,7 @@ enum soc_type {
* @triminfo_reload_shift: shift of triminfo reload enable bit in triminfo_ctrl * @triminfo_reload_shift: shift of triminfo reload enable bit in triminfo_ctrl
reg. reg.
* @tmu_ctrl: TMU main controller register. * @tmu_ctrl: TMU main controller register.
* @test_mux_addr_shift: shift bits of test mux address.
* @buf_vref_sel_shift: shift bits of reference voltage in tmu_ctrl register. * @buf_vref_sel_shift: shift bits of reference voltage in tmu_ctrl register.
* @buf_vref_sel_mask: mask bits of reference voltage in tmu_ctrl register. * @buf_vref_sel_mask: mask bits of reference voltage in tmu_ctrl register.
* @therm_trip_mode_shift: shift bits of tripping mode in tmu_ctrl register. * @therm_trip_mode_shift: shift bits of tripping mode in tmu_ctrl register.
...@@ -151,6 +152,7 @@ struct exynos_tmu_registers { ...@@ -151,6 +152,7 @@ struct exynos_tmu_registers {
u32 triminfo_reload_shift; u32 triminfo_reload_shift;
u32 tmu_ctrl; u32 tmu_ctrl;
u32 test_mux_addr_shift;
u32 buf_vref_sel_shift; u32 buf_vref_sel_shift;
u32 buf_vref_sel_mask; u32 buf_vref_sel_mask;
u32 therm_trip_mode_shift; u32 therm_trip_mode_shift;
...@@ -258,6 +260,7 @@ struct exynos_tmu_registers { ...@@ -258,6 +260,7 @@ struct exynos_tmu_registers {
* @first_point_trim: temp value of the first point trimming * @first_point_trim: temp value of the first point trimming
* @second_point_trim: temp value of the second point trimming * @second_point_trim: temp value of the second point trimming
* @default_temp_offset: default temperature offset in case of no trimming * @default_temp_offset: default temperature offset in case of no trimming
* @test_mux; information if SoC supports test MUX
* @cal_type: calibration type for temperature * @cal_type: calibration type for temperature
* @cal_mode: calibration mode for temperature * @cal_mode: calibration mode for temperature
* @freq_clip_table: Table representing frequency reduction percentage. * @freq_clip_table: Table representing frequency reduction percentage.
...@@ -287,6 +290,7 @@ struct exynos_tmu_platform_data { ...@@ -287,6 +290,7 @@ struct exynos_tmu_platform_data {
u8 first_point_trim; u8 first_point_trim;
u8 second_point_trim; u8 second_point_trim;
u8 default_temp_offset; u8 default_temp_offset;
u8 test_mux;
enum calibration_type cal_type; enum calibration_type cal_type;
enum calibration_mode cal_mode; enum calibration_mode cal_mode;
......
...@@ -98,6 +98,7 @@ static const struct exynos_tmu_registers exynos4412_tmu_registers = { ...@@ -98,6 +98,7 @@ static const struct exynos_tmu_registers exynos4412_tmu_registers = {
.triminfo_ctrl = EXYNOS_TMU_TRIMINFO_CON, .triminfo_ctrl = EXYNOS_TMU_TRIMINFO_CON,
.triminfo_reload_shift = EXYNOS_TRIMINFO_RELOAD_SHIFT, .triminfo_reload_shift = EXYNOS_TRIMINFO_RELOAD_SHIFT,
.tmu_ctrl = EXYNOS_TMU_REG_CONTROL, .tmu_ctrl = EXYNOS_TMU_REG_CONTROL,
.test_mux_addr_shift = EXYNOS4412_MUX_ADDR_SHIFT,
.buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT, .buf_vref_sel_shift = EXYNOS_TMU_REF_VOLTAGE_SHIFT,
.buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK, .buf_vref_sel_mask = EXYNOS_TMU_REF_VOLTAGE_MASK,
.therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT, .therm_trip_mode_shift = EXYNOS_TMU_TRIP_MODE_SHIFT,
...@@ -174,6 +175,7 @@ struct exynos_tmu_init_data const exynos4412_default_tmu_data = { ...@@ -174,6 +175,7 @@ struct exynos_tmu_init_data const exynos4412_default_tmu_data = {
{ {
EXYNOS4412_TMU_DATA, EXYNOS4412_TMU_DATA,
.type = SOC_ARCH_EXYNOS4412, .type = SOC_ARCH_EXYNOS4412,
.test_mux = EXYNOS4412_MUX_ADDR_VALUE,
}, },
}, },
.tmu_count = 1, .tmu_count = 1,
......
...@@ -95,6 +95,10 @@ ...@@ -95,6 +95,10 @@
#define EXYNOS_MAX_TRIGGER_PER_REG 4 #define EXYNOS_MAX_TRIGGER_PER_REG 4
/* Exynos4412 specific */
#define EXYNOS4412_MUX_ADDR_VALUE 6
#define EXYNOS4412_MUX_ADDR_SHIFT 20
/*exynos5440 specific registers*/ /*exynos5440 specific registers*/
#define EXYNOS5440_TMU_S0_7_TRIM 0x000 #define EXYNOS5440_TMU_S0_7_TRIM 0x000
#define EXYNOS5440_TMU_S0_7_CTRL 0x020 #define EXYNOS5440_TMU_S0_7_CTRL 0x020
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册