diff options
Diffstat (limited to 'arch/arm/mach-exynos/sec_thermistor.c')
-rw-r--r-- | arch/arm/mach-exynos/sec_thermistor.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos/sec_thermistor.c b/arch/arm/mach-exynos/sec_thermistor.c index 2ae7ef3..a196abf 100644 --- a/arch/arm/mach-exynos/sec_thermistor.c +++ b/arch/arm/mach-exynos/sec_thermistor.c @@ -31,6 +31,13 @@ struct sec_therm_info { int curr_temp_adc; }; +#if defined(CONFIG_MACH_C1_KOR_SKT) || defined(CONFIG_MACH_C1_KOR_KT) || \ + defined(CONFIG_MACH_C1_KOR_LGT) +static void notify_change_of_temperature(struct sec_therm_info *info); +int siopLevellimit; +EXPORT_SYMBOL(siopLevellimit); +#endif + static ssize_t sec_therm_show_temperature(struct device *dev, struct device_attribute *attr, char *buf) @@ -49,12 +56,44 @@ static ssize_t sec_therm_show_temp_adc(struct device *dev, return sprintf(buf, "%d\n", info->curr_temp_adc); } +#if defined(CONFIG_MACH_C1_KOR_SKT) || defined(CONFIG_MACH_C1_KOR_KT) || \ + defined(CONFIG_MACH_C1_KOR_LGT) +static ssize_t sec_therm_show_sioplevel(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return sprintf(buf, "%d\n", siopLevellimit); +} + +static ssize_t sec_therm_store_sioplevel(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t n) +{ + unsigned int val; + struct sec_therm_info *info = dev_get_drvdata(dev); + + if (sscanf(buf, "%u", &val) == 1) + siopLevellimit = val; + + notify_change_of_temperature(info); + + return n; +} + +static DEVICE_ATTR(sioplevel, S_IWUSR | S_IRUGO, sec_therm_show_sioplevel, \ + sec_therm_store_sioplevel); +#endif + static DEVICE_ATTR(temperature, S_IRUGO, sec_therm_show_temperature, NULL); static DEVICE_ATTR(temp_adc, S_IRUGO, sec_therm_show_temp_adc, NULL); static struct attribute *sec_therm_attributes[] = { &dev_attr_temperature.attr, &dev_attr_temp_adc.attr, +#if defined(CONFIG_MACH_C1_KOR_SKT) || defined(CONFIG_MACH_C1_KOR_KT) || \ + defined(CONFIG_MACH_C1_KOR_LGT) + &dev_attr_sioplevel.attr, +#endif NULL }; @@ -141,6 +180,7 @@ static void notify_change_of_temperature(struct sec_therm_info *info) if (info->pdata->get_siop_level) siop_level = info->pdata->get_siop_level(info->curr_temperature); + if (siop_level >= 0) { snprintf(siop_buf, sizeof(siop_buf), "SIOP_LEVEL=%d", siop_level); |