lkml.org 
[lkml]   [2012]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v5 5/5] ARM: exynos: add thermal sensor driver platform data support
From
On Sat, Jul 14, 2012 at 7:03 AM, Kyungmin Park <kmpark@infradead.org> wrote:
> On Fri, Jul 13, 2012 at 8:10 PM, Amit Daniel Kachhap
> <amit.kachhap@linaro.org> wrote:
>> Add necessary default platform data support needed for TMU driver. This
>> dt/non-dt values are tested for origen exynos4210 and smdk exynos5250
>> platforms.
> Looks good to me.

Thanks.

> just nitpicks below.
>
> Thank you,
> Kyungmin Park
>>
>> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@linaro.org>
>> Cc: Donggeun Kim <dg77.kim@samsung.com>
>> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
>> Cc: SangWook Ju <sw.ju@samsung.com>
>> Cc: Durgadoss <durgadoss.r@intel.com>
>> Cc: Len Brown <lenb@kernel.org>
>> Cc: Jean Delvare <khali@linux-fr.org>
>> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
>> ---
>> drivers/thermal/exynos_thermal.c | 111 +++++++++++++++++++++++++++++++++++++-
>> 1 files changed, 110 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c
>> index 9ef8c37..07736ea 100644
>> --- a/drivers/thermal/exynos_thermal.c
>> +++ b/drivers/thermal/exynos_thermal.c
>> @@ -662,14 +662,121 @@ 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)
> BTW, doesn't it same as exynos4412? does it different from exynos4412?
Currently I only tested this only for origen and exynos5250 board.
Maybe somebody can add 4412 support also.
> If it's same, it's better to use CONFIG_SOC_EXYNOS4?
>> +static struct exynos_tmu_platform_data const exynos4_default_tmu_data = {
>> + .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,
>> + .temp_level = 85,
>> + },
>> + .freq_tab[1] = {
>> + .freq_clip_max = 200 * 1000,
>> + .temp_level = 100,
>> + },
>> + .freq_tab_count = 2,
>> + .type = SOC_ARCH_EXYNOS4,
>> +};
>> +#define EXYNOS4_TMU_DRV_DATA (&exynos4_default_tmu_data)
>> +#else
>> +#define EXYNOS4_TMU_DRV_DATA (NULL)
>> +#endif
>> +
>> +#if defined(CONFIG_SOC_EXYNOS5250)
> similar.
>> +static struct exynos_tmu_platform_data const 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,
>> + .temp_level = 85,
>> + },
>> + .freq_tab[1] = {
>> + .freq_clip_max = 200 * 1000,
>> + .temp_level = 103,
>> + },
>> + .freq_tab_count = 2,
>> + .type = SOC_ARCH_EXYNOS5,
>> +};
>> +#define EXYNOS5_TMU_DRV_DATA (&exynos5_default_tmu_data)
>> +#else
>> +#define EXYNOS5_TMU_DRV_DATA (NULL)
>> +#endif
>> +
>> +#ifdef CONFIG_OF
>> +static const struct of_device_id exynos_tmu_match[] = {
>> + {
>> + .compatible = "samsung,exynos4-tmu",
>> + .data = (void *)EXYNOS4_TMU_DRV_DATA,
>> + },
>> + {
>> + .compatible = "samsung,exynos5-tmu",
>> + .data = (void *)EXYNOS5_TMU_DRV_DATA,
>> + },
>> + {},
>> +};
>> +MODULE_DEVICE_TABLE(of, exynos_tmu_match);
>> +#else
>> +#define exynos_tmu_match NULL
>> +#endif
>> +
>> +static struct platform_device_id exynos_tmu_driver_ids[] = {
>> + {
>> + .name = "exynos4-tmu",
>> + .driver_data = (kernel_ulong_t)EXYNOS4_TMU_DRV_DATA,
>> + },
>> + {
>> + .name = "exynos5-tmu",
>> + .driver_data = (kernel_ulong_t)EXYNOS5_TMU_DRV_DATA,
>> + },
>> + { },
>> +};
>> +MODULE_DEVICE_TABLE(platform, exynos4_tmu_driver_ids);
>> +
>> +static inline struct exynos_tmu_platform_data *exynos_get_driver_data(
>> + struct platform_device *pdev)
>> +{
>> +#ifdef CONFIG_OF
>> + if (pdev->dev.of_node) {
>> + const struct of_device_id *match;
>> + match = of_match_node(exynos_tmu_match, pdev->dev.of_node);
>> + if (!match)
>> + return NULL;
>> + return (struct exynos_tmu_platform_data *) match->data;
>> + }
>> +#endif
>> + return (struct exynos_tmu_platform_data *)
>> + platform_get_device_id(pdev)->driver_data;
>> }
>> -;
>> static int __devinit exynos_tmu_probe(struct platform_device *pdev)
>> {
>> struct exynos_tmu_data *data;
>> struct exynos_tmu_platform_data *pdata = pdev->dev.platform_data;
>> int ret, i;
>>
>> + if (!pdata)
>> + pdata = exynos_get_driver_data(pdev);
>> +
>> if (!pdata) {
>> dev_err(&pdev->dev, "No platform init data supplied.\n");
>> return -ENODEV;
>> @@ -838,9 +945,11 @@ static struct platform_driver exynos_tmu_driver = {
>> .name = "exynos-tmu",
>> .owner = THIS_MODULE,
>> .pm = EXYNOS_TMU_PM,
>> + .of_match_table = exynos_tmu_match,
>> },
>> .probe = exynos_tmu_probe,
>> .remove = __devexit_p(exynos_tmu_remove),
>> + .id_table = exynos_tmu_driver_ids,
>> };
>>
>> module_platform_driver(exynos_tmu_driver);
>> --
>> 1.7.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at http://www.tux.org/lkml/
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html


\
 
 \ /
  Last update: 2012-07-14 10:01    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site