On Fri, 2013-04-26 at 16:07 +0530, Amit Daniel Kachhap wrote: > This code splits the exynos tmu driver code into SOC specific data parts. > This will simplify adding new SOC specific data to the same TMU controller. > > Acked-by: Kukjin Kim <kgene.kim@xxxxxxxxxxx> > Signed-off-by: Amit Daniel Kachhap <amit.daniel@xxxxxxxxxxx> I'm okay with all the rest patches in this patch series. thanks, rui > --- > drivers/thermal/samsung/Makefile | 1 + > drivers/thermal/samsung/exynos_thermal_common.h | 2 +- > drivers/thermal/samsung/exynos_tmu.c | 67 +------------------ > drivers/thermal/samsung/exynos_tmu_data.c | 78 +++++++++++++++++++++++ > drivers/thermal/samsung/exynos_tmu_data.h | 40 ++++++++++++ > 5 files changed, 124 insertions(+), 64 deletions(-) > create mode 100644 drivers/thermal/samsung/exynos_tmu_data.c > create mode 100644 drivers/thermal/samsung/exynos_tmu_data.h > > diff --git a/drivers/thermal/samsung/Makefile b/drivers/thermal/samsung/Makefile > index 75e1f97..b133255 100644 > --- a/drivers/thermal/samsung/Makefile > +++ b/drivers/thermal/samsung/Makefile > @@ -3,4 +3,5 @@ > # > obj-$(CONFIG_EXYNOS_SOC_THERMAL) += exynos_soc_thermal.o > exynos_soc_thermal-y := exynos_tmu.o > +exynos_soc_thermal-y += exynos_tmu_data.o > exynos_soc_thermal-$(CONFIG_EXYNOS_COMMON) += exynos_thermal_common.o > diff --git a/drivers/thermal/samsung/exynos_thermal_common.h b/drivers/thermal/samsung/exynos_thermal_common.h > index 985b848..6ed9bd9 100644 > --- a/drivers/thermal/samsung/exynos_thermal_common.h > +++ b/drivers/thermal/samsung/exynos_thermal_common.h > @@ -62,7 +62,7 @@ struct freq_clip_table { > struct thermal_trip_point_conf { > int trip_val[MAX_TRIP_COUNT]; > int trip_count; > - u8 trigger_falling; > + unsigned char trigger_falling; > }; > > struct thermal_cooling_conf { > diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c > index a02f2c9..05b5068 100644 > --- a/drivers/thermal/samsung/exynos_tmu.c > +++ b/drivers/thermal/samsung/exynos_tmu.c > @@ -34,6 +34,7 @@ > #include <linux/workqueue.h> > #include "exynos_thermal_common.h" > #include "exynos_tmu.h" > +#include "exynos_tmu_data.h" > > /* Exynos generic registers */ > #define EXYNOS_TMU_REG_TRIMINFO 0x0 > @@ -385,66 +386,6 @@ static struct thermal_sensor_conf exynos_sensor_conf = { > .write_emul_temp = exynos_tmu_set_emulation, > }; > > -#if defined(CONFIG_CPU_EXYNOS4210) > -static struct exynos_tmu_platform_data const exynos4210_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_EXYNOS4210, > -}; > -#define EXYNOS4210_TMU_DRV_DATA (&exynos4210_default_tmu_data) > -#else > -#define EXYNOS4210_TMU_DRV_DATA (NULL) > -#endif > - > -#if defined(CONFIG_SOC_EXYNOS5250) || defined(CONFIG_SOC_EXYNOS4412) > -static struct exynos_tmu_platform_data const exynos_default_tmu_data = { > - .threshold_falling = 10, > - .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_EXYNOS, > -}; > -#define EXYNOS_TMU_DRV_DATA (&exynos_default_tmu_data) > -#else > -#define EXYNOS_TMU_DRV_DATA (NULL) > -#endif > - > #ifdef CONFIG_OF > static const struct of_device_id exynos_tmu_match[] = { > { > @@ -453,11 +394,11 @@ static const struct of_device_id exynos_tmu_match[] = { > }, > { > .compatible = "samsung,exynos4412-tmu", > - .data = (void *)EXYNOS_TMU_DRV_DATA, > + .data = (void *)EXYNOS5250_TMU_DRV_DATA, > }, > { > .compatible = "samsung,exynos5250-tmu", > - .data = (void *)EXYNOS_TMU_DRV_DATA, > + .data = (void *)EXYNOS5250_TMU_DRV_DATA, > }, > {}, > }; > @@ -471,7 +412,7 @@ static struct platform_device_id exynos_tmu_driver_ids[] = { > }, > { > .name = "exynos5250-tmu", > - .driver_data = (kernel_ulong_t)EXYNOS_TMU_DRV_DATA, > + .driver_data = (kernel_ulong_t)EXYNOS5250_TMU_DRV_DATA, > }, > { }, > }; > diff --git a/drivers/thermal/samsung/exynos_tmu_data.c b/drivers/thermal/samsung/exynos_tmu_data.c > new file mode 100644 > index 0000000..13a60ca > --- /dev/null > +++ b/drivers/thermal/samsung/exynos_tmu_data.c > @@ -0,0 +1,78 @@ > +/* > + * exynos_tmu_data.c - Samsung EXYNOS tmu data file > + * > + * Copyright (C) 2013 Samsung Electronics > + * Amit Daniel Kachhap <amit.daniel@xxxxxxxxxxx> > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#include "exynos_thermal_common.h" > +#include "exynos_tmu.h" > + > +#if defined(CONFIG_CPU_EXYNOS4210) > +struct exynos_tmu_platform_data const exynos4210_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_EXYNOS4210, > +}; > +#endif > + > +#if defined(CONFIG_SOC_EXYNOS5250) || defined(CONFIG_SOC_EXYNOS4412) > +struct exynos_tmu_platform_data const exynos5250_default_tmu_data = { > + .threshold_falling = 10, > + .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_EXYNOS, > +}; > +#endif > diff --git a/drivers/thermal/samsung/exynos_tmu_data.h b/drivers/thermal/samsung/exynos_tmu_data.h > new file mode 100644 > index 0000000..c8b0501 > --- /dev/null > +++ b/drivers/thermal/samsung/exynos_tmu_data.h > @@ -0,0 +1,40 @@ > +/* > + * exynos_tmu_data.h - Samsung EXYNOS tmu data header file > + * > + * Copyright (C) 2013 Samsung Electronics > + * Amit Daniel Kachhap <amit.daniel@xxxxxxxxxxx> > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#ifndef _LINUX_EXYNOS_TMU_DATA_H > +#define _LINUX_EXYNOS_TMU_DATA_H > + > +#if defined(CONFIG_CPU_EXYNOS4210) > +extern struct exynos_tmu_platform_data const exynos4210_default_tmu_data; > +#define EXYNOS4210_TMU_DRV_DATA (&exynos4210_default_tmu_data) > +#else > +#define EXYNOS4210_TMU_DRV_DATA (NULL) > +#endif > + > +#if defined(CONFIG_SOC_EXYNOS5250) || defined(CONFIG_SOC_EXYNOS4412) > +extern struct exynos_tmu_platform_data const exynos5250_default_tmu_data; > +#define EXYNOS5250_TMU_DRV_DATA (&exynos5250_default_tmu_data) > +#else > +#define EXYNOS5250_TMU_DRV_DATA (NULL) > +#endif > + > +#endif /*_LINUX_EXYNOS_TMU_DATA_H*/ -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html