Commit 0ca4080a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull more thermal control updates from Rafael Wysocki:
 "These are mostly updates of thermal control drivers for ARM platforms,
  new thermal control support for Loongson-2 and a couple of core
  cleanups made possible by recent changes merged previously.

  Specifics:

   - Check if the Tegra BPMP supports the trip points in order to set
     the .set_trips callback (Mikko Perttunen)

   - Add new Loongson-2 thermal sensor along with the DT bindings (Yinbo
     Zhu)

   - Use IS_ERR_OR_NULL() helper to replace a double test on the TI
     bandgap sensor (Li Zetao)

   - Remove redundant platform_set_drvdata() calls, as there are no
     corresponding calls to platform_get_drvdata(), from a bunch of
     drivers (Andrei Coardos)

   - Switch the Mediatek LVTS mode to filtered in order to enable
     interrupts (Nícolas F. R. A. Prado)

   - Fix Wvoid-pointer-to-enum-cast warning on the Exynos TMU (Krzysztof
     Kozlowski)

   - Remove redundant dev_err_probe(), because the underlying function
     already called it, from the Mediatek sensor (Chen Jiahao)

   - Free calibration nvmem after reading it on sun8i (Mark Brown)

   - Remove useless comment from the sun8i driver (Yangtao Li)

   - Make tsens_xxxx_nvmem static to fix a sparse warning on QCom tsens
     (Min-Hua Chen)

   - Remove error message at probe deferral on imx8mm (Ahmad Fatoum)

   - Fix parameter check in lvts_debugfs_init() with IS_ERR() on
     Mediatek LVTS (Minjie Du)

   - Fix interrupt routine and configuratoin for Mediatek LVTS (Nícolas
     F. R. A. Prado)

   - Drop unused .get_trip_type(), .get_trip_temp() and .get_trip_hyst()
     thermal zone callbacks from the core and rework the .get_trend()
     one to take a trip point pointer as an argument (Rafael Wysocki)"

* tag 'thermal-6.6-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (29 commits)
  thermal: core: Rework .get_trend() thermal zone callback
  thermal: core: Drop unused .get_trip_*() callbacks
  thermal/drivers/tegra-bpmp: Check if BPMP supports trip points
  thermal: dt-bindings: add loongson-2 thermal
  thermal/drivers/loongson-2: Add thermal management support
  thermal/drivers/ti-soc-thermal: Use helper function IS_ERR_OR_NULL()
  thermal/drivers/generic-adc: Removed unneeded call to platform_set_drvdata()
  thermal/drivers/max77620_thermal: Removed unneeded call to platform_set_drvdata()
  thermal/drivers/mediatek/auxadc_thermal: Removed call to platform_set_drvdata()
  thermal/drivers/sun8i_thermal: Remove unneeded call to platform_set_drvdata()
  thermal/drivers/broadcom/brcstb_thermal: Removed unneeded platform_set_drvdata()
  thermal/drivers/mediatek/lvts_thermal: Make readings valid in filtered mode
  thermal/drivers/k3_bandgap: Remove unneeded call to platform_set_drvdata()
  thermal/drivers/k3_j72xx_bandgap: Removed unneeded call to platform_set_drvdata()
  thermal/drivers/broadcom/sr-thermal: Removed call to platform_set_drvdata()
  thermal/drivers/samsung: Fix Wvoid-pointer-to-enum-cast warning
  thermal/drivers/db8500: Remove redundant of_match_ptr()
  thermal/drivers/mediatek: Clean up redundant dev_err_probe()
  thermal/drivers/sun8i: Free calibration nvmem after reading it
  thermal/drivers/sun8i: Remove unneeded comments
  ...
parents 2a3a850e 8289d810
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/thermal/loongson,ls2k-thermal.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Thermal sensors on Loongson-2 SoCs

maintainers:
  - zhanghongchen <zhanghongchen@loongson.cn>
  - Yinbo Zhu <zhuyinbo@loongson.cn>

properties:
  compatible:
    oneOf:
      - enum:
          - loongson,ls2k1000-thermal
      - items:
          - enum:
              - loongson,ls2k2000-thermal
          - const: loongson,ls2k1000-thermal

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    thermal: thermal-sensor@1fe01500 {
        compatible = "loongson,ls2k1000-thermal";
        reg = <0x1fe01500 0x30>;
        interrupt-parent = <&liointc0>;
        interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
    };
+8 −0
Original line number Diff line number Diff line
@@ -12390,6 +12390,14 @@ S: Maintained
F:	Documentation/devicetree/bindings/pinctrl/loongson,ls2k-pinctrl.yaml
F:	drivers/pinctrl/pinctrl-loongson2.c
LOONGSON-2 SOC SERIES THERMAL DRIVER
M:	zhanghongchen <zhanghongchen@loongson.cn>
M:	Yinbo Zhu <zhuyinbo@loongson.cn>
L:	linux-pm@vger.kernel.org
S:	Maintained
F:	Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
F:	drivers/thermal/loongson2_thermal.c
LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
M:	Sathya Prakash <sathya.prakash@broadcom.com>
M:	Sreekanth Reddy <sreekanth.reddy@broadcom.com>
+18 −23
Original line number Diff line number Diff line
@@ -492,26 +492,22 @@ static int thermal_get_temp(struct thermal_zone_device *thermal, int *temp)
}

static int thermal_get_trend(struct thermal_zone_device *thermal,
			     int trip_index, enum thermal_trend *trend)
			     struct thermal_trip *trip,
			     enum thermal_trend *trend)
{
	struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
	struct acpi_thermal_trip *acpi_trip;
	int t, i;
	int t;

	if (!tz || trip_index < 0)
	if (!tz || !trip)
		return -EINVAL;

	if (tz->trips.critical.valid)
		trip_index--;

	if (tz->trips.hot.valid)
		trip_index--;

	if (trip_index < 0)
	acpi_trip = trip->priv;
	if (!acpi_trip || !acpi_trip->valid)
		return -EINVAL;

	acpi_trip = &tz->trips.passive.trip;
	if (acpi_trip->valid && !trip_index--) {
	switch (trip->type) {
	case THERMAL_TRIP_PASSIVE:
		t = tz->trips.passive.tc1 * (tz->temperature -
						tz->last_temperature) +
			tz->trips.passive.tc2 * (tz->temperature -
@@ -524,20 +520,19 @@ static int thermal_get_trend(struct thermal_zone_device *thermal,
			*trend = THERMAL_TREND_STABLE;

		return 0;
	}

	case THERMAL_TRIP_ACTIVE:
		t = acpi_thermal_temp(tz, tz->temperature);
		if (t <= trip->temperature)
			break;

	for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++) {
		acpi_trip = &tz->trips.active[i].trip;
		if (acpi_trip->valid && !trip_index--) {
			if (t > acpi_thermal_temp(tz, acpi_trip->temperature)) {
		*trend = THERMAL_TREND_RAISING;

		return 0;
			}

	default:
		break;
	}
	}

	return -EINVAL;
}
+12 −0
Original line number Diff line number Diff line
@@ -510,4 +510,16 @@ config KHADAS_MCU_FAN_THERMAL
	  If you say yes here you get support for the FAN controlled
	  by the Microcontroller found on the Khadas VIM boards.

config LOONGSON2_THERMAL
	tristate "Loongson-2 SoC series thermal driver"
	depends on LOONGARCH || COMPILE_TEST
	depends on OF
	help
	  Support for Thermal driver found on Loongson-2 SoC series platforms.
	  The thermal driver realizes get_temp and set_trips function, which
	  are used to obtain the temperature of the current node and set the
	  temperature range to trigger the interrupt. When the input temperature
	  is higher than the high temperature threshold or lower than the low
	  temperature threshold, the interrupt will occur.

endif
+1 −0
Original line number Diff line number Diff line
@@ -63,3 +63,4 @@ obj-$(CONFIG_UNIPHIER_THERMAL) += uniphier_thermal.o
obj-$(CONFIG_AMLOGIC_THERMAL)     += amlogic_thermal.o
obj-$(CONFIG_SPRD_THERMAL)	+= sprd_thermal.o
obj-$(CONFIG_KHADAS_MCU_FAN_THERMAL)	+= khadas_mcu_fan.o
obj-$(CONFIG_LOONGSON2_THERMAL)	+= loongson2_thermal.o
Loading