Skip to content

Commit

Permalink
Merge branch 'thermal-soc' of git://git.kernel.org/pub/scm/linux/kern…
Browse files Browse the repository at this point in the history
…el/git/rzhang/linux

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()
  • Loading branch information
Linus Torvalds committed Jan 15, 2015
2 parents a6391a9 + a4378cc commit f800c25
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 12 deletions.
15 changes: 13 additions & 2 deletions Documentation/thermal/cpu-cooling-api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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.

Expand Down
3 changes: 2 additions & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions drivers/thermal/imx_thermal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion drivers/thermal/of-thermal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
17 changes: 11 additions & 6 deletions drivers/thermal/rcar_thermal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) \
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand All @@ -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,
Expand All @@ -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 */
}

Expand Down Expand Up @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions drivers/thermal/thermal_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ int of_parse_thermal_zones(void);
void of_thermal_destroy_zones(void);
int of_thermal_get_ntrips(struct thermal_zone_device *);
bool of_thermal_is_trip_valid(struct thermal_zone_device *, int);
const struct thermal_trip * const
const struct thermal_trip *
of_thermal_get_trip_points(struct thermal_zone_device *);
#else
static inline int of_parse_thermal_zones(void) { return 0; }
Expand All @@ -105,7 +105,7 @@ static inline bool of_thermal_is_trip_valid(struct thermal_zone_device *tz,
{
return 0;
}
static inline const struct thermal_trip * const
static inline const struct thermal_trip *
of_thermal_get_trip_points(struct thermal_zone_device *tz)
{
return NULL;
Expand Down

0 comments on commit f800c25

Please sign in to comment.