Commit 56adb9ef authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz Committed by Eduardo Valentin

thermal: exynos: remove TMU_SUPPORT_ADDRESS_MULTIPLE flag

Replace TMU_SUPPORT_ADDRESS_MULTIPLE flag check in exynos_map_dt_data()
by an explicit check for a SoC type (only Exynos5420 with TRIMINFO
quirk and Exynos5440 have TMU_SUPPORT_ADDRESS_MULTIPLE flag set in
their struct exynos_tmu_init_data instances).

Please note that this requires moving SoC type assignment and verification
from exynos_tmu_probe() to exynos_map_dt_data() so it happens earlier
(which is a good thing in itself).

There should be no functional changes caused by this patch.

Cc: Amit Daniel Kachhap <amit.daniel@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Eduardo Valentin <edubezval@gmail.com>
Cc: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Acked-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Tested-by: default avatarLukasz Majewski <l.majewski@samsung.com>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
parent ef3f80fc
...@@ -473,7 +473,6 @@ static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data, ...@@ -473,7 +473,6 @@ static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data,
static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp) static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp)
{ {
struct exynos_tmu_data *data = drv_data; struct exynos_tmu_data *data = drv_data;
struct exynos_tmu_platform_data *pdata = data->pdata;
int ret = -EINVAL; int ret = -EINVAL;
if (data->soc == SOC_ARCH_EXYNOS4210) if (data->soc == SOC_ARCH_EXYNOS4210)
...@@ -696,12 +695,47 @@ static int exynos_map_dt_data(struct platform_device *pdev) ...@@ -696,12 +695,47 @@ static int exynos_map_dt_data(struct platform_device *pdev)
dev_err(&pdev->dev, "No platform init data supplied.\n"); dev_err(&pdev->dev, "No platform init data supplied.\n");
return -ENODEV; return -ENODEV;
} }
data->pdata = pdata; data->pdata = pdata;
data->soc = pdata->type;
switch (data->soc) {
case SOC_ARCH_EXYNOS4210:
data->tmu_initialize = exynos4210_tmu_initialize;
data->tmu_control = exynos4210_tmu_control;
data->tmu_read = exynos4210_tmu_read;
data->tmu_clear_irqs = exynos4210_tmu_clear_irqs;
break;
case SOC_ARCH_EXYNOS3250:
case SOC_ARCH_EXYNOS4412:
case SOC_ARCH_EXYNOS5250:
case SOC_ARCH_EXYNOS5260:
case SOC_ARCH_EXYNOS5420:
case SOC_ARCH_EXYNOS5420_TRIMINFO:
data->tmu_initialize = exynos4412_tmu_initialize;
data->tmu_control = exynos4210_tmu_control;
data->tmu_read = exynos4412_tmu_read;
data->tmu_set_emulation = exynos4412_tmu_set_emulation;
data->tmu_clear_irqs = exynos4210_tmu_clear_irqs;
break;
case SOC_ARCH_EXYNOS5440:
data->tmu_initialize = exynos5440_tmu_initialize;
data->tmu_control = exynos5440_tmu_control;
data->tmu_read = exynos5440_tmu_read;
data->tmu_set_emulation = exynos5440_tmu_set_emulation;
data->tmu_clear_irqs = exynos5440_tmu_clear_irqs;
break;
default:
dev_err(&pdev->dev, "Platform not supported\n");
return -EINVAL;
}
/* /*
* Check if the TMU shares some registers and then try to map the * Check if the TMU shares some registers and then try to map the
* memory of common registers. * memory of common registers.
*/ */
if (!TMU_SUPPORTS(pdata, ADDRESS_MULTIPLE)) if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO &&
data->soc != SOC_ARCH_EXYNOS5440)
return 0; return 0;
if (of_address_to_resource(pdev->dev.of_node, 1, &res)) { if (of_address_to_resource(pdev->dev.of_node, 1, &res)) {
...@@ -768,40 +802,6 @@ static int exynos_tmu_probe(struct platform_device *pdev) ...@@ -768,40 +802,6 @@ static int exynos_tmu_probe(struct platform_device *pdev)
goto err_clk_sec; goto err_clk_sec;
} }
data->soc = pdata->type;
switch (data->soc) {
case SOC_ARCH_EXYNOS4210:
data->tmu_initialize = exynos4210_tmu_initialize;
data->tmu_control = exynos4210_tmu_control;
data->tmu_read = exynos4210_tmu_read;
data->tmu_clear_irqs = exynos4210_tmu_clear_irqs;
break;
case SOC_ARCH_EXYNOS3250:
case SOC_ARCH_EXYNOS4412:
case SOC_ARCH_EXYNOS5250:
case SOC_ARCH_EXYNOS5260:
case SOC_ARCH_EXYNOS5420:
case SOC_ARCH_EXYNOS5420_TRIMINFO:
data->tmu_initialize = exynos4412_tmu_initialize;
data->tmu_control = exynos4210_tmu_control;
data->tmu_read = exynos4412_tmu_read;
data->tmu_set_emulation = exynos4412_tmu_set_emulation;
data->tmu_clear_irqs = exynos4210_tmu_clear_irqs;
break;
case SOC_ARCH_EXYNOS5440:
data->tmu_initialize = exynos5440_tmu_initialize;
data->tmu_control = exynos5440_tmu_control;
data->tmu_read = exynos5440_tmu_read;
data->tmu_set_emulation = exynos5440_tmu_set_emulation;
data->tmu_clear_irqs = exynos5440_tmu_clear_irqs;
break;
default:
ret = -EINVAL;
dev_err(&pdev->dev, "Platform not supported\n");
goto err_clk;
}
ret = exynos_tmu_initialize(pdev); ret = exynos_tmu_initialize(pdev);
if (ret) { if (ret) {
dev_err(&pdev->dev, "Failed to initialize TMU\n"); dev_err(&pdev->dev, "Failed to initialize TMU\n");
......
...@@ -49,12 +49,9 @@ enum soc_type { ...@@ -49,12 +49,9 @@ enum soc_type {
* EXYNOS TMU supported features. * EXYNOS TMU supported features.
* TMU_SUPPORT_MULTI_INST - This features denotes that the soc * TMU_SUPPORT_MULTI_INST - This features denotes that the soc
* has many instances of TMU. * has many instances of TMU.
* TMU_SUPPORT_ADDRESS_MULTIPLE - This feature tells that the different TMU
* sensors shares some common registers.
* TMU_SUPPORT - macro to compare the above features with the supplied. * TMU_SUPPORT - macro to compare the above features with the supplied.
*/ */
#define TMU_SUPPORT_MULTI_INST BIT(0) #define TMU_SUPPORT_MULTI_INST BIT(0)
#define TMU_SUPPORT_ADDRESS_MULTIPLE BIT(1)
#define TMU_SUPPORTS(a, b) (a->features & TMU_SUPPORT_ ## b) #define TMU_SUPPORTS(a, b) (a->features & TMU_SUPPORT_ ## b)
......
...@@ -275,8 +275,7 @@ struct exynos_tmu_init_data const exynos5260_default_tmu_data = { ...@@ -275,8 +275,7 @@ struct exynos_tmu_init_data const exynos5260_default_tmu_data = {
#define EXYNOS5420_TMU_DATA_SHARED \ #define EXYNOS5420_TMU_DATA_SHARED \
__EXYNOS5420_TMU_DATA \ __EXYNOS5420_TMU_DATA \
.type = SOC_ARCH_EXYNOS5420_TRIMINFO, \ .type = SOC_ARCH_EXYNOS5420_TRIMINFO
.features = TMU_SUPPORT_ADDRESS_MULTIPLE
struct exynos_tmu_init_data const exynos5420_default_tmu_data = { struct exynos_tmu_init_data const exynos5420_default_tmu_data = {
.tmu_data = { .tmu_data = {
...@@ -310,7 +309,7 @@ struct exynos_tmu_init_data const exynos5420_default_tmu_data = { ...@@ -310,7 +309,7 @@ struct exynos_tmu_init_data const exynos5420_default_tmu_data = {
.second_point_trim = 70, \ .second_point_trim = 70, \
.default_temp_offset = 25, \ .default_temp_offset = 25, \
.type = SOC_ARCH_EXYNOS5440, \ .type = SOC_ARCH_EXYNOS5440, \
.features = (TMU_SUPPORT_MULTI_INST | TMU_SUPPORT_ADDRESS_MULTIPLE), .features = TMU_SUPPORT_MULTI_INST,
struct exynos_tmu_init_data const exynos5440_default_tmu_data = { struct exynos_tmu_init_data const exynos5440_default_tmu_data = {
.tmu_data = { .tmu_data = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment