Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux

Pull thermal management updates from Zhang Rui:

- Add Daniel Lezcano as the reviewer of thermal framework and SoC
driver changes (Daniel Lezcano).

- Fix a bug in intel_dts_soc_thermal driver, which does not translate
IO-APIC GSI (Global System Interrupt) into Linux irq number (Hans de
Goede).

- For device tree bindings, allow cooling devices sharing same trip
point with same contribution value to share cooling map (Viresh
Kumar).

* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
dt-bindings: thermal: Allow multiple devices to share cooling map
MAINTAINERS: Add Daniel Lezcano as designated reviewer for thermal
Thermal: Intel SoC DTS: Translate IO-APIC GSI number to linux irq number

+28 -12
+3 -8
Documentation/devicetree/bindings/thermal/thermal.txt
··· 97 97 to be loaded in the target system. 98 98 99 99 Required properties: 100 - - cooling-device: A phandle of a cooling device with its specifier, 101 - Type: phandle + referring to which cooling device is used in this 100 + - cooling-device: A list of phandles of cooling devices with their specifiers, 101 + Type: phandle + referring to which cooling devices are used in this 102 102 cooling specifier binding. In the cooling specifier, the first cell 103 103 is the minimum cooling state and the second cell 104 104 is the maximum cooling state used in this map. ··· 276 276 }; 277 277 map1 { 278 278 trip = <&cpu_alert1>; 279 - cooling-device = <&fan0 5 THERMAL_NO_LIMIT>; 280 - }; 281 - map2 { 282 - trip = <&cpu_alert1>; 283 - cooling-device = 284 - <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 279 + cooling-device = <&fan0 5 THERMAL_NO_LIMIT>, <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 285 280 }; 286 281 }; 287 282 };
+1
MAINTAINERS
··· 14410 14410 THERMAL 14411 14411 M: Zhang Rui <rui.zhang@intel.com> 14412 14412 M: Eduardo Valentin <edubezval@gmail.com> 14413 + R: Daniel Lezcano <daniel.lezcano@linaro.org> 14413 14414 L: linux-pm@vger.kernel.org 14414 14415 T: git git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux.git 14415 14416 T: git git://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal.git
+1 -1
drivers/thermal/Kconfig
··· 360 360 361 361 config INTEL_SOC_DTS_THERMAL 362 362 tristate "Intel SoCs DTS thermal driver" 363 - depends on X86 && PCI 363 + depends on X86 && PCI && ACPI 364 364 select INTEL_SOC_DTS_IOSF_CORE 365 365 select THERMAL_WRITABLE_TRIPS 366 366 help
+23 -3
drivers/thermal/intel_soc_dts_thermal.c
··· 15 15 16 16 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 17 17 18 + #include <linux/acpi.h> 18 19 #include <linux/module.h> 19 20 #include <linux/interrupt.h> 20 21 #include <asm/cpu_device_id.h> ··· 32 31 /* IRQ 86 is a fixed APIC interrupt for BYT DTS Aux threshold notifications */ 33 32 #define BYT_SOC_DTS_APIC_IRQ 86 34 33 34 + static int soc_dts_thres_gsi; 35 35 static int soc_dts_thres_irq; 36 36 static struct intel_soc_dts_sensors *soc_dts; 37 37 ··· 67 65 return err; 68 66 } 69 67 70 - soc_dts_thres_irq = (int)match_cpu->driver_data; 68 + soc_dts_thres_gsi = (int)match_cpu->driver_data; 69 + if (soc_dts_thres_gsi) { 70 + /* 71 + * Note the flags here MUST match the firmware defaults, rather 72 + * then the request_irq flags, otherwise we get an EBUSY error. 73 + */ 74 + soc_dts_thres_irq = acpi_register_gsi(NULL, soc_dts_thres_gsi, 75 + ACPI_LEVEL_SENSITIVE, 76 + ACPI_ACTIVE_LOW); 77 + if (soc_dts_thres_irq < 0) { 78 + pr_warn("intel_soc_dts: Could not get IRQ for GSI %d, err %d\n", 79 + soc_dts_thres_gsi, soc_dts_thres_irq); 80 + soc_dts_thres_irq = 0; 81 + } 82 + } 71 83 72 84 if (soc_dts_thres_irq) { 73 85 err = request_threaded_irq(soc_dts_thres_irq, NULL, ··· 106 90 return 0; 107 91 108 92 error_trips: 109 - if (soc_dts_thres_irq) 93 + if (soc_dts_thres_irq) { 110 94 free_irq(soc_dts_thres_irq, soc_dts); 95 + acpi_unregister_gsi(soc_dts_thres_gsi); 96 + } 111 97 intel_soc_dts_iosf_exit(soc_dts); 112 98 113 99 return err; ··· 117 99 118 100 static void __exit intel_soc_thermal_exit(void) 119 101 { 120 - if (soc_dts_thres_irq) 102 + if (soc_dts_thres_irq) { 121 103 free_irq(soc_dts_thres_irq, soc_dts); 104 + acpi_unregister_gsi(soc_dts_thres_gsi); 105 + } 122 106 intel_soc_dts_iosf_exit(soc_dts); 123 107 } 124 108