On Tue, 8 May 2012 21:48:18 +0530 Amit Daniel Kachhap amit.kachhap@linaro.org wrote:
This patch adds necessary default platform data support needed for TMU driver. This dt/non-dt values are tested for origen exynos4210 and smdk exynos5250 platforms.
...
--- a/drivers/thermal/exynos_thermal.c +++ b/drivers/thermal/exynos_thermal.c @@ -646,14 +646,117 @@ static irqreturn_t exynos_tmu_irq(int irq, void *id) static struct thermal_sensor_conf exynos_sensor_conf = { .name = "exynos-therm", .read_temperature = (int (*)(void *))exynos_tmu_read, +};
+#if defined(CONFIG_CPU_EXYNOS4210) +static struct exynos_tmu_platform_data exynos4_default_tmu_data = {
Again, make it const if possible.
- .threshold = 80,
- .trigger_levels[0] = 5,
- .trigger_levels[1] = 20,
- .trigger_levels[2] = 30,
- .trigger_level0_en = 1,
- .trigger_level1_en = 1,
- .trigger_level2_en = 1,
- .trigger_level3_en = 0,
- .gain = 15,
- .reference_voltage = 7,
- .cal_type = TYPE_ONE_POINT_TRIMMING,
- .freq_tab[0] = {
.freq_clip_max = 800 * 1000,
- },
- .freq_tab[1] = {
.freq_clip_max = 200 * 1000,
- },
- .freq_tab_count = 2,
- .type = SOC_ARCH_EXYNOS4,
+}; +#define EXYNOS4_TMU_DRV_DATA ((kernel_ulong_t)&exynos4_default_tmu_data) +#else +#define EXYNOS4_TMU_DRV_DATA ((kernel_ulong_t)NULL) +#endif
See below.
+#if defined(CONFIG_SOC_EXYNOS5250) +static struct exynos_tmu_platform_data exynos5_default_tmu_data = {
- .trigger_levels[0] = 85,
- .trigger_levels[1] = 103,
- .trigger_levels[2] = 110,
- .trigger_level0_en = 1,
- .trigger_level1_en = 1,
- .trigger_level2_en = 1,
- .trigger_level3_en = 0,
- .gain = 8,
- .reference_voltage = 16,
- .noise_cancel_mode = 4,
- .cal_type = TYPE_ONE_POINT_TRIMMING,
- .efuse_value = 55,
- .freq_tab[0] = {
.freq_clip_max = 800 * 1000,
- },
- .freq_tab[1] = {
.freq_clip_max = 200 * 1000,
- },
- .freq_tab_count = 2,
- .type = SOC_ARCH_EXYNOS5,
+}; +#define EXYNOS5_TMU_DRV_DATA ((kernel_ulong_t)&exynos5_default_tmu_data)
The use of kernel_ulong_t is unexpected.
I suspect you could remove this cast altogether. Or make it void*.
+#else +#define EXYNOS5_TMU_DRV_DATA ((kernel_ulong_t)NULL)
And remove this cast too. Rely upon void* magic.
+#endif
+#ifdef CONFIG_OF +static const struct of_device_id exynos_tmu_match[] = {
- {
.compatible = "samsung,exynos4-tmu",
.data = (void *)EXYNOS4_TMU_DRV_DATA,
No cast is needed if EXYNOS4_TMU_DRV_DATA has a pointer type.
- },
- {
.compatible = "samsung,exynos5-tmu",
.data = (void *)EXYNOS5_TMU_DRV_DATA,
No cast is needed if EXYNOS4_TMU_DRV_DATA has a pointer type.
- },
- {},
+}; +MODULE_DEVICE_TABLE(of, exynos_tmu_match); +#else +#define exynos_tmu_match NULL +#endif
...