|
|
|
[PATCH 4/4] RFC Thermal: Platform layer changes to provide thermal data | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
This patch shows how can we add platform specific thermal data
required by the enhanced thermal framework.
This is just an example patch, and _not_ for merge.
Signed-off-by: Durgadoss R <durgadoss.r@xxxxxxxxx>
---
arch/x86/platform/mrst/mrst.c | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c
index e31bcd8..eeb3cd0 100644
--- a/arch/x86/platform/mrst/mrst.c
+++ b/arch/x86/platform/mrst/mrst.c
@@ -30,6 +30,7 @@
#include <linux/mfd/intel_msic.h>
#include <linux/gpio.h>
#include <linux/i2c/tc35876x.h>
+#include <linux/thermal.h>
#include <asm/setup.h>
#include <asm/mpspec_def.h>
@@ -78,6 +79,27 @@ struct sfi_rtc_table_entry sfi_mrtc_array[SFI_MRTC_MAX];
EXPORT_SYMBOL_GPL(sfi_mrtc_array);
int sfi_mrtc_num;
+#define MRST_THERMAL_ZONES 3
+struct thermal_zone_params tzp[MRST_THERMAL_ZONES] = {
+ { .thermal_zone_name = "CPU",
+ .throttle_policy = THERMAL_FAIR_SHARE,
+ .num_cdevs = 2,
+ .cdevs_name = {"CPU", "Battery"},
+ .weights = {80, 20}, },
+
+ { .thermal_zone_name = "Battery",
+ .throttle_policy = THERMAL_FAIR_SHARE,
+ .num_cdevs = 1,
+ .cdevs_name = {"Battery"},
+ .weights = {100}, },
+
+ { .thermal_zone_name = "Skin",
+ .throttle_policy = THERMAL_FAIR_SHARE,
+ .num_cdevs = 2,
+ .cdevs_name = {"Display", "Battery"},
+ .weights = {50, 50}, }
+};
+
static void mrst_power_off(void)
{
}
@@ -983,10 +1005,27 @@ static int __init sfi_parse_devs(struct sfi_table_header *table)
return 0;
}
+static int mrst_get_thermal_params(struct thermal_zone_device *tz)
+{
+ int i;
+
+ for (i = 0; i < MRST_THERMAL_ZONES; i++) {
+ if (!strcmp(tzp[i].thermal_zone_name, tz->type)) {
+ tz->tzp = &tzp[i];
+ return 0;
+ }
+ }
+ return -ENODEV;
+}
+
static int __init mrst_platform_init(void)
{
sfi_table_parse(SFI_SIG_GPIO, NULL, NULL, sfi_parse_gpio);
sfi_table_parse(SFI_SIG_DEVS, NULL, NULL, sfi_parse_devs);
+
+ /* Set platform thermal data pointer */
+ get_platform_thermal_params = mrst_get_thermal_params;
+
return 0;
}
arch_initcall(mrst_platform_init);
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Site Home] [Linux IBM ACPI] [Linux Power Management] [Linux Kernel] [Linux Laptop] [Kernel Newbies] [Share Photos] [Security] [Netfilter] [Bugtraq] [Rubini] [Photo] [Yosemite Photos] [Yosemite News] [MIPS Linux] [ARM Linux] [Linux Security] [Linux RAID] [Samba] [Video 4 Linux] [Device Mapper] [Linux Resources]
![]() |