Merge branch 'thermal-soc' of git://git.kernel.org/pub/scm/linux/kernel/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()
This commit is contained in:
commit
f800c25b7a
|
@ -3,7 +3,7 @@ CPU cooling APIs How To
|
||||||
|
|
||||||
Written by Amit Daniel Kachhap <amit.kachhap@linaro.org>
|
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)
|
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.
|
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.
|
This interface function unregisters the "thermal-cpufreq-%x" cooling device.
|
||||||
|
|
||||||
|
|
|
@ -9543,7 +9543,8 @@ F: drivers/platform/x86/thinkpad_acpi.c
|
||||||
TI BANDGAP AND THERMAL DRIVER
|
TI BANDGAP AND THERMAL DRIVER
|
||||||
M: Eduardo Valentin <edubezval@gmail.com>
|
M: Eduardo Valentin <edubezval@gmail.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Supported
|
L: linux-omap@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
F: drivers/thermal/ti-soc-thermal/
|
F: drivers/thermal/ti-soc-thermal/
|
||||||
|
|
||||||
TI CLOCK DRIVER
|
TI CLOCK DRIVER
|
||||||
|
|
|
@ -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_CLR, TEMPSENSE0_MEASURE_TEMP);
|
||||||
regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_POWER_DOWN);
|
regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_POWER_DOWN);
|
||||||
data->mode = THERMAL_DEVICE_DISABLED;
|
data->mode = THERMAL_DEVICE_DISABLED;
|
||||||
|
clk_disable_unprepare(data->thermal_clk);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -617,6 +618,7 @@ static int imx_thermal_resume(struct device *dev)
|
||||||
struct imx_thermal_data *data = dev_get_drvdata(dev);
|
struct imx_thermal_data *data = dev_get_drvdata(dev);
|
||||||
struct regmap *map = data->tempmon;
|
struct regmap *map = data->tempmon;
|
||||||
|
|
||||||
|
clk_prepare_enable(data->thermal_clk);
|
||||||
/* Enabled thermal sensor after resume */
|
/* Enabled thermal sensor after resume */
|
||||||
regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_POWER_DOWN);
|
regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_POWER_DOWN);
|
||||||
regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_MEASURE_TEMP);
|
regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_MEASURE_TEMP);
|
||||||
|
|
|
@ -149,7 +149,7 @@ EXPORT_SYMBOL_GPL(of_thermal_is_trip_valid);
|
||||||
*
|
*
|
||||||
* Return: pointer to trip points table, NULL otherwise
|
* 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)
|
of_thermal_get_trip_points(struct thermal_zone_device *tz)
|
||||||
{
|
{
|
||||||
struct __thermal_zone *data = tz->devdata;
|
struct __thermal_zone *data = tz->devdata;
|
||||||
|
|
|
@ -63,7 +63,7 @@ struct rcar_thermal_priv {
|
||||||
struct mutex lock;
|
struct mutex lock;
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
int id;
|
int id;
|
||||||
int ctemp;
|
u32 ctemp;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define rcar_thermal_for_each_priv(pos, common) \
|
#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);
|
struct device *dev = rcar_priv_to_dev(priv);
|
||||||
int i;
|
int i;
|
||||||
int ctemp, old, new;
|
u32 ctemp, old, new;
|
||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&priv->lock);
|
mutex_lock(&priv->lock);
|
||||||
|
@ -372,6 +372,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)
|
||||||
int i;
|
int i;
|
||||||
int ret = -ENODEV;
|
int ret = -ENODEV;
|
||||||
int idle = IDLE_INTERVAL;
|
int idle = IDLE_INTERVAL;
|
||||||
|
u32 enr_bits = 0;
|
||||||
|
|
||||||
common = devm_kzalloc(dev, sizeof(*common), GFP_KERNEL);
|
common = devm_kzalloc(dev, sizeof(*common), GFP_KERNEL);
|
||||||
if (!common)
|
if (!common)
|
||||||
|
@ -390,7 +391,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* platform has IRQ support.
|
* 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,
|
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))
|
if (IS_ERR(common->base))
|
||||||
return PTR_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 */
|
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);
|
rcar_thermal_irq_enable(priv);
|
||||||
|
|
||||||
list_move_tail(&priv->list, &common->head);
|
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);
|
platform_set_drvdata(pdev, common);
|
||||||
|
|
||||||
dev_info(dev, "%d sensor probed\n", i);
|
dev_info(dev, "%d sensor probed\n", i);
|
||||||
|
|
|
@ -91,7 +91,7 @@ int of_parse_thermal_zones(void);
|
||||||
void of_thermal_destroy_zones(void);
|
void of_thermal_destroy_zones(void);
|
||||||
int of_thermal_get_ntrips(struct thermal_zone_device *);
|
int of_thermal_get_ntrips(struct thermal_zone_device *);
|
||||||
bool of_thermal_is_trip_valid(struct thermal_zone_device *, int);
|
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 *);
|
of_thermal_get_trip_points(struct thermal_zone_device *);
|
||||||
#else
|
#else
|
||||||
static inline int of_parse_thermal_zones(void) { return 0; }
|
static inline int of_parse_thermal_zones(void) { return 0; }
|
||||||
|
@ -105,7 +105,7 @@ static inline bool of_thermal_is_trip_valid(struct thermal_zone_device *tz,
|
||||||
{
|
{
|
||||||
return 0;
|
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)
|
of_thermal_get_trip_points(struct thermal_zone_device *tz)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue