Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f800c25b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull thermal fixes from Zhang Rui:
 "Specifics:

   - bogus type qualifier fix in OF thermal code.
   - Minor fixes on imx and rcar thermal drivers.
   - Update TI SoC thermal maintainer entry.
   - Updated documentation of OF cpufreq cooling register"

* 'thermal-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
  thermal: rcar: Spelling/grammar: s/drier use .../driver uses ...s/
  thermal: rcar: change type of ctemp in rcar_thermal_update_temp()
  thermal: rcar: fix ENR register value
  Documentation: thermal: document of_cpufreq_cooling_register()
  Thermal: imx: add clk disable/enable for suspend/resume
  MAINTAINERS: update ti-soc-thermal status
  MAINTAINERS: Add linux-omap to list of reviewers for TI Thermal
  thermal: of: Remove bogus type qualifier for of_thermal_get_trip_points()
parents a6391a92 a4378cc6
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ CPU cooling APIs How To

Written by Amit Daniel Kachhap <amit.kachhap@linaro.org>

Updated: 12 May 2012
Updated: 6 Jan 2015

Copyright (c)  2012 Samsung Electronics Co., Ltd(http://www.samsung.com)

@@ -25,7 +25,18 @@ the user. The registration APIs returns the cooling device pointer.

   clip_cpus: cpumask of cpus where the frequency constraints will happen.

1.1.2 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
1.1.2 struct thermal_cooling_device *of_cpufreq_cooling_register(
	struct device_node *np, const struct cpumask *clip_cpus)

    This interface function registers the cpufreq cooling device with
    the name "thermal-cpufreq-%x" linking it with a device tree node, in
    order to bind it via the thermal DT code. This api can support multiple
    instances of cpufreq cooling devices.

    np: pointer to the cooling device device tree node
    clip_cpus: cpumask of cpus where the frequency constraints will happen.

1.1.3 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)

    This interface function unregisters the "thermal-cpufreq-%x" cooling device.

+2 −1
Original line number Diff line number Diff line
@@ -9543,7 +9543,8 @@ F: drivers/platform/x86/thinkpad_acpi.c
TI BANDGAP AND THERMAL DRIVER
M:	Eduardo Valentin <edubezval@gmail.com>
L:	linux-pm@vger.kernel.org
S:	Supported
L:	linux-omap@vger.kernel.org
S:	Maintained
F:	drivers/thermal/ti-soc-thermal/

TI CLOCK DRIVER
+2 −0
Original line number Diff line number Diff line
@@ -608,6 +608,7 @@ static int imx_thermal_suspend(struct device *dev)
	regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_MEASURE_TEMP);
	regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_POWER_DOWN);
	data->mode = THERMAL_DEVICE_DISABLED;
	clk_disable_unprepare(data->thermal_clk);

	return 0;
}
@@ -617,6 +618,7 @@ static int imx_thermal_resume(struct device *dev)
	struct imx_thermal_data *data = dev_get_drvdata(dev);
	struct regmap *map = data->tempmon;

	clk_prepare_enable(data->thermal_clk);
	/* Enabled thermal sensor after resume */
	regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_POWER_DOWN);
	regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_MEASURE_TEMP);
+1 −1
Original line number Diff line number Diff line
@@ -149,7 +149,7 @@ EXPORT_SYMBOL_GPL(of_thermal_is_trip_valid);
 *
 * Return: pointer to trip points table, NULL otherwise
 */
const struct thermal_trip * const
const struct thermal_trip *
of_thermal_get_trip_points(struct thermal_zone_device *tz)
{
	struct __thermal_zone *data = tz->devdata;
+11 −6
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ struct rcar_thermal_priv {
	struct mutex lock;
	struct list_head list;
	int id;
	int ctemp;
	u32 ctemp;
};

#define rcar_thermal_for_each_priv(pos, common)	\
@@ -145,7 +145,7 @@ static int rcar_thermal_update_temp(struct rcar_thermal_priv *priv)
{
	struct device *dev = rcar_priv_to_dev(priv);
	int i;
	int ctemp, old, new;
	u32 ctemp, old, new;
	int ret = -EINVAL;

	mutex_lock(&priv->lock);
@@ -372,6 +372,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)
	int i;
	int ret = -ENODEV;
	int idle = IDLE_INTERVAL;
	u32 enr_bits = 0;

	common = devm_kzalloc(dev, sizeof(*common), GFP_KERNEL);
	if (!common)
@@ -390,7 +391,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)

		/*
		 * platform has IRQ support.
		 * Then, drier use common register
		 * Then, driver uses common registers
		 */

		ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0,
@@ -408,9 +409,6 @@ static int rcar_thermal_probe(struct platform_device *pdev)
		if (IS_ERR(common->base))
			return PTR_ERR(common->base);

		/* enable temperature comparation */
		rcar_thermal_common_write(common, ENR, 0x00030303);

		idle = 0; /* polling delay is not needed */
	}

@@ -452,8 +450,15 @@ static int rcar_thermal_probe(struct platform_device *pdev)
			rcar_thermal_irq_enable(priv);

		list_move_tail(&priv->list, &common->head);

		/* update ENR bits */
		enr_bits |= 3 << (i * 8);
	}

	/* enable temperature comparation */
	if (irq)
		rcar_thermal_common_write(common, ENR, enr_bits);

	platform_set_drvdata(pdev, common);

	dev_info(dev, "%d sensor probed\n", i);
Loading