|
@@ -127,7 +127,7 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
|
|
|
struct exynos_tmu_data *data = platform_get_drvdata(pdev);
|
|
|
struct exynos_tmu_platform_data *pdata = data->pdata;
|
|
|
const struct exynos_tmu_registers *reg = pdata->registers;
|
|
|
- unsigned int status, trim_info = 0, con;
|
|
|
+ unsigned int status, trim_info = 0, con, ctrl;
|
|
|
unsigned int rising_threshold = 0, falling_threshold = 0;
|
|
|
int ret = 0, threshold_code, i;
|
|
|
|
|
@@ -144,8 +144,17 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (TMU_SUPPORTS(pdata, TRIM_RELOAD))
|
|
|
- __raw_writel(1, data->base + reg->triminfo_ctrl);
|
|
|
+ if (TMU_SUPPORTS(pdata, TRIM_RELOAD)) {
|
|
|
+ for (i = 0; i < reg->triminfo_ctrl_count; i++) {
|
|
|
+ if (pdata->triminfo_reload[i]) {
|
|
|
+ ctrl = readl(data->base +
|
|
|
+ reg->triminfo_ctrl[i]);
|
|
|
+ ctrl |= pdata->triminfo_reload[i];
|
|
|
+ writel(ctrl, data->base +
|
|
|
+ reg->triminfo_ctrl[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/* Save trimming info in order to perform calibration */
|
|
|
if (data->soc == SOC_ARCH_EXYNOS5440) {
|