2014-06-05 15:07:38

by Lee Jones

[permalink] [raw]
Subject: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

I'm re-sending this set, as one of the maintainers' email addresses
is incorrect in the MAINTAINERS file.

This patchset adds full support for 2 types of Thermal Controllers
produced by STMicroelectronics. One is a more traditional memory
mapped variant, the other is controlled solely by system configuration
registers.

Documentation/devicetree/bindings/thermal/st-thermal.txt | 42 ++++++++++++++++
arch/arm/boot/dts/stih416.dtsi | 18 +++++++
arch/arm/configs/multi_v7_defconfig | 2 +
drivers/thermal/Kconfig | 5 ++
drivers/thermal/Makefile | 1 +
drivers/thermal/st/Kconfig | 12 +++++
drivers/thermal/st/Makefile | 3 ++
drivers/thermal/st/st_thermal.c | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
drivers/thermal/st/st_thermal.h | 104 ++++++++++++++++++++++++++++++++++++++
drivers/thermal/st/st_thermal_memmap.c | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
drivers/thermal/st/st_thermal_syscfg.c | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11 files changed, 888 insertions(+)


2014-06-05 15:07:45

by Lee Jones

[permalink] [raw]
Subject: [PATCH 2/6] thermal: sti: Introduce ST Thermal core code

This core is shared by both ST's 'memory mapped' and
'system configuration register' based Thermal controllers.

Signed-off-by: Ajit Pal Singh <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
---
drivers/thermal/Kconfig | 5 +
drivers/thermal/Makefile | 1 +
drivers/thermal/st/Kconfig | 4 +
drivers/thermal/st/Makefile | 1 +
drivers/thermal/st/st_thermal.c | 313 ++++++++++++++++++++++++++++++++++++++++
drivers/thermal/st/st_thermal.h | 104 +++++++++++++
6 files changed, 428 insertions(+)
create mode 100644 drivers/thermal/st/Kconfig
create mode 100644 drivers/thermal/st/Makefile
create mode 100644 drivers/thermal/st/st_thermal.c
create mode 100644 drivers/thermal/st/st_thermal.h

diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 2d51912..6f88de1 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -231,4 +231,9 @@ depends on PLAT_SAMSUNG
source "drivers/thermal/samsung/Kconfig"
endmenu

+menu "STMicroelectronics thermal drivers"
+depends on ARCH_STI && OF
+source "drivers/thermal/st/Kconfig"
+endmenu
+
endif
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index 54e4ec9..ea36799 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -31,3 +31,4 @@ obj-$(CONFIG_INTEL_POWERCLAMP) += intel_powerclamp.o
obj-$(CONFIG_X86_PKG_TEMP_THERMAL) += x86_pkg_temp_thermal.o
obj-$(CONFIG_TI_SOC_THERMAL) += ti-soc-thermal/
obj-$(CONFIG_ACPI_INT3403_THERMAL) += int3403_thermal.o
+obj-$(CONFIG_ST_THERMAL) += st/
diff --git a/drivers/thermal/st/Kconfig b/drivers/thermal/st/Kconfig
new file mode 100644
index 0000000..1ba6760
--- /dev/null
+++ b/drivers/thermal/st/Kconfig
@@ -0,0 +1,4 @@
+config ST_THERMAL
+ tristate "Thermal sensors on STMicroelectronics STi series of SoCs"
+ help
+ Support for thermal sensors on STMicroelectronics STi series of SoCs.
diff --git a/drivers/thermal/st/Makefile b/drivers/thermal/st/Makefile
new file mode 100644
index 0000000..10f4bf6
--- /dev/null
+++ b/drivers/thermal/st/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_ST_THERMAL) := st_thermal.o
diff --git a/drivers/thermal/st/st_thermal.c b/drivers/thermal/st/st_thermal.c
new file mode 100644
index 0000000..90163b3
--- /dev/null
+++ b/drivers/thermal/st/st_thermal.c
@@ -0,0 +1,313 @@
+/*
+ * ST Thermal Sensor Driver core routines
+ * Author: Ajit Pal Singh <[email protected]>
+ *
+ * Copyright (C) 2003-2014 STMicroelectronics (R&D) Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ */
+
+#include <linux/clk.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+
+#include "st_thermal.h"
+
+/* The Thermal Framework expects millidegrees */
+#define mcelsius(temp) ((temp) * 1000)
+
+/*
+ * Function to allocate regfields which are common
+ * between syscfg and memory mapped based sensors
+ */
+int st_thermal_alloc_regfields(struct st_thermal_sensor *sensor)
+{
+ struct device *dev = sensor->dev;
+ struct regmap *regmap = sensor->regmap;
+ const struct reg_field *reg_fields = sensor->cdata->reg_fields;
+
+ sensor->dcorrect = devm_regmap_field_alloc(dev, regmap,
+ reg_fields[DCORRECT]);
+
+ sensor->overflow = devm_regmap_field_alloc(dev, regmap,
+ reg_fields[OVERFLOW]);
+
+ sensor->temp_data = devm_regmap_field_alloc(dev, regmap,
+ reg_fields[DATA]);
+
+ if (IS_ERR(sensor->dcorrect) ||
+ IS_ERR(sensor->overflow) ||
+ IS_ERR(sensor->temp_data)) {
+ dev_err(dev, "failed to allocate common regfields\n");
+ return -EINVAL;
+ }
+
+ return sensor->ops->alloc_regfields(sensor);
+}
+
+static int st_thermal_sensor_on(struct st_thermal_sensor *sensor)
+{
+ int ret;
+ struct device *dev = sensor->dev;
+
+ ret = clk_prepare_enable(sensor->clk);
+ if (ret) {
+ dev_err(dev, "failed to enable clk\n");
+ return ret;
+ }
+
+ ret = sensor->ops->power_ctrl(sensor, POWER_ON);
+ if (ret) {
+ dev_err(dev, "failed to power on sensor\n");
+ clk_disable_unprepare(sensor->clk);
+ }
+
+ return ret;
+}
+
+static int st_thermal_sensor_off(struct st_thermal_sensor *sensor)
+{
+ int ret;
+
+ ret = sensor->ops->power_ctrl(sensor, POWER_OFF);
+ if (ret)
+ return ret;
+
+ clk_disable_unprepare(sensor->clk);
+
+ return 0;
+}
+
+static int st_thermal_calibration(struct st_thermal_sensor *sensor)
+{
+ int ret;
+ unsigned int val;
+ struct device *dev = sensor->dev;
+
+ /* Check if sensor calibration data is already written */
+ ret = regmap_field_read(sensor->dcorrect, &val);
+ if (ret) {
+ dev_err(dev, "failed to read calibration data\n");
+ return ret;
+ }
+
+ if (!val) {
+ /*
+ * Sensor calibration value not set by bootloader,
+ * default calibration data to be used
+ */
+ ret = regmap_field_write(sensor->dcorrect,
+ sensor->cdata->calibration_val);
+ if (ret)
+ dev_err(dev, "failed to set calibration data\n");
+ }
+
+ return ret;
+}
+
+/* Callback to get temperature from HW*/
+static int st_thermal_get_temp(struct thermal_zone_device *th,
+ unsigned long *temperature)
+{
+ struct st_thermal_sensor *sensor = th->devdata;
+ struct device *dev = sensor->dev;
+ unsigned int temp;
+ unsigned int overflow;
+ int ret;
+
+ ret = regmap_field_read(sensor->overflow, &overflow);
+ if (ret)
+ return ret;
+ if (overflow)
+ return -EIO;
+
+ ret = regmap_field_read(sensor->temp_data, &temp);
+ if (ret)
+ return ret;
+
+ temp += sensor->cdata->temp_adjust_val;
+ temp = mcelsius(temp);
+
+ dev_dbg(dev, "temperature: %d\n", temp);
+
+ *temperature = temp;
+
+ return 0;
+}
+
+static int st_thermal_get_trip_type(struct thermal_zone_device *th,
+ int trip, enum thermal_trip_type *type)
+{
+ struct st_thermal_sensor *sensor = th->devdata;
+ struct device *dev = sensor->dev;
+
+ switch (trip) {
+ case 0:
+ *type = THERMAL_TRIP_CRITICAL;
+ break;
+ default:
+ dev_err(dev, "invalid trip point\n");
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int st_thermal_get_trip_temp(struct thermal_zone_device *th,
+ int trip, unsigned long *temp)
+{
+ struct st_thermal_sensor *sensor = th->devdata;
+ struct device *dev = sensor->dev;
+
+ switch (trip) {
+ case 0:
+ *temp = mcelsius(sensor->cdata->crit_temp);
+ break;
+ default:
+ dev_err(dev, "Invalid trip point\n");
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static struct thermal_zone_device_ops st_tz_ops = {
+ .get_temp = st_thermal_get_temp,
+ .get_trip_type = st_thermal_get_trip_type,
+ .get_trip_temp = st_thermal_get_trip_temp,
+};
+
+int st_thermal_register(struct platform_device *pdev,
+ const struct of_device_id *st_thermal_of_match)
+{
+ struct st_thermal_sensor *sensor;
+ struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
+ const struct of_device_id *match;
+
+ int polling_delay;
+ int ret;
+
+ if (!np) {
+ dev_err(dev, "device tree node not found\n");
+ return -EINVAL;
+ }
+
+ sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL);
+ if (!sensor)
+ return -ENOMEM;
+
+ sensor->dev = dev;
+
+ match = of_match_device(st_thermal_of_match, dev);
+ if (!(match && match->data))
+ return -EINVAL;
+
+ sensor->cdata = match->data;
+ if (!sensor->cdata->ops)
+ return -EINVAL;
+
+ sensor->ops = sensor->cdata->ops;
+
+ ret = sensor->ops->regmap_init(sensor);
+ if (ret)
+ return ret;
+
+ ret = st_thermal_alloc_regfields(sensor);
+ if (ret)
+ return ret;
+
+ sensor->clk = devm_clk_get(dev, "thermal");
+ if (IS_ERR(sensor->clk)) {
+ dev_err(dev, "failed to fetch clock\n");
+ return PTR_ERR(sensor->clk);
+ }
+
+ if (sensor->ops->register_enable_irq) {
+ ret = sensor->ops->register_enable_irq(sensor);
+ if (ret)
+ return ret;
+ }
+
+ ret = st_thermal_sensor_on(sensor);
+ if (ret)
+ return ret;
+
+ ret = st_thermal_calibration(sensor);
+ if (ret)
+ goto sensor_off;
+
+ polling_delay = sensor->ops->register_enable_irq ? 0 : 1000;
+
+ sensor->thermal_dev =
+ thermal_zone_device_register(dev_name(dev), 1, 0, sensor,
+ &st_tz_ops, NULL, 0, polling_delay);
+ if (IS_ERR(sensor->thermal_dev)) {
+ dev_err(dev, "failed to register thermal zone device\n");
+ ret = PTR_ERR(sensor->thermal_dev);
+ goto sensor_off;
+ }
+
+ platform_set_drvdata(pdev, sensor);
+
+ return 0;
+
+sensor_off:
+ st_thermal_sensor_off(sensor);
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(st_thermal_register);
+
+int st_thermal_unregister(struct platform_device *pdev)
+{
+ struct st_thermal_sensor *sensor = platform_get_drvdata(pdev);
+
+ st_thermal_sensor_off(sensor);
+ thermal_zone_device_unregister(sensor->thermal_dev);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(st_thermal_unregister);
+
+static int st_thermal_suspend(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct st_thermal_sensor *sensor = platform_get_drvdata(pdev);
+
+ return st_thermal_sensor_off(sensor);
+}
+
+static int st_thermal_resume(struct device *dev)
+{
+ int ret;
+ struct platform_device *pdev = to_platform_device(dev);
+ struct st_thermal_sensor *sensor = platform_get_drvdata(pdev);
+
+ ret = st_thermal_sensor_on(sensor);
+ if (ret)
+ return ret;
+
+ ret = st_thermal_calibration(sensor);
+ if (ret)
+ return ret;
+
+ if (sensor->ops->enable_irq) {
+ ret = sensor->ops->enable_irq(sensor);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+SIMPLE_DEV_PM_OPS(st_thermal_pm_ops, st_thermal_suspend, st_thermal_resume);
+EXPORT_SYMBOL_GPL(st_thermal_pm_ops);
+
+MODULE_AUTHOR("STMicroelectronics (R&D) Limited <[email protected]>");
+MODULE_DESCRIPTION("STMicroelectronics STi SoC Thermal Sensor Driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/thermal/st/st_thermal.h b/drivers/thermal/st/st_thermal.h
new file mode 100644
index 0000000..fecafbe
--- /dev/null
+++ b/drivers/thermal/st/st_thermal.h
@@ -0,0 +1,104 @@
+/*
+ * ST Thermal Sensor Driver for STi series of SoCs
+ * Author: Ajit Pal Singh <[email protected]>
+ *
+ * Copyright (C) 2003-2014 STMicroelectronics (R&D) Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __STI_THERMAL_SYSCFG_H
+#define __STI_THERMAL_SYSCFG_H
+
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/thermal.h>
+
+enum st_thermal_regfield_ids {
+ INT_THRESH_HI = 0, /* Top two regfield IDs are mutually exclusive */
+ TEMP_PWR = 0,
+ DCORRECT,
+ OVERFLOW,
+ DATA,
+ INT_ENABLE,
+
+ MAX_REGFIELDS
+};
+
+/* Thermal sensor power states */
+enum st_thermal_power_state {
+ POWER_OFF = 0,
+ POWER_ON
+};
+
+struct st_thermal_sensor;
+
+/**
+ * Description of private thermal sensor ops.
+ *
+ * @power_ctrl: Function for powering on/off a sensor. Clock to the
+ * sensor is also controlled from this function.
+ * @alloc_regfields: Allocate regmap register fields, specific to a sensor.
+ * @do_memmap_regmap: Memory map the thermal register space and init regmap
+ * instance or find regmap instance.
+ * @register_irq: Register an interrupt handler for a sensor.
+ */
+struct st_thermal_sensor_ops {
+ int (*power_ctrl)(struct st_thermal_sensor *, enum st_thermal_power_state);
+ int (*alloc_regfields)(struct st_thermal_sensor *);
+ int (*regmap_init)(struct st_thermal_sensor *);
+ int (*register_enable_irq)(struct st_thermal_sensor *);
+ int (*enable_irq)(struct st_thermal_sensor *);
+};
+
+/**
+ * Description of thermal driver compatible data.
+ *
+ * @reg_fields: Pointer to the regfields array for a sensor.
+ * @sys_compat: Pointer to the syscon node compatible string.
+ * @ops: Pointer to private thermal ops for a sensor.
+ * @calibration_val: Default calibration value to be written to the DCORRECT
+ * register field for a sensor.
+ * @temp_adjust_val: Value to be added/subtracted from the data read from
+ * the sensor. If value needs to be added please provide a
+ * positive value and if it is to be subtracted please
+ * provide a negative value.
+ * @crit_temp: The temperature beyond which the SoC should be shutdown
+ * to prevent damage.
+ */
+struct st_thermal_compat_data {
+ char *sys_compat;
+ const struct reg_field *reg_fields;
+ const struct st_thermal_sensor_ops *ops;
+ unsigned int calibration_val;
+ int temp_adjust_val;
+ int crit_temp;
+};
+
+struct st_thermal_sensor {
+ struct device *dev;
+ struct thermal_zone_device *thermal_dev;
+ const struct st_thermal_sensor_ops *ops;
+ const struct st_thermal_compat_data *cdata;
+ struct clk *clk;
+ struct regmap *regmap;
+ struct regmap_field *pwr;
+ struct regmap_field *dcorrect;
+ struct regmap_field *overflow;
+ struct regmap_field *temp_data;
+ struct regmap_field *int_thresh_hi;
+ struct regmap_field *int_enable;
+ int irq;
+ void __iomem *mmio_base;
+};
+
+extern int st_thermal_register(struct platform_device *pdev,
+ const struct of_device_id *st_thermal_of_match);
+extern int st_thermal_unregister(struct platform_device *pdev);
+extern const struct dev_pm_ops st_thermal_pm_ops;
+
+#endif /* __STI_RESET_SYSCFG_H */
--
1.8.3.2

2014-06-05 15:07:41

by Lee Jones

[permalink] [raw]
Subject: [PATCH 1/6] thermal: sti: Supply Device Tree documentation

Signed-off-by: Ajit Pal Singh <[email protected]>
Acked-by: Peter Griffin <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
---
.../devicetree/bindings/thermal/st-thermal.txt | 42 ++++++++++++++++++++++
1 file changed, 42 insertions(+)
create mode 100644 Documentation/devicetree/bindings/thermal/st-thermal.txt

diff --git a/Documentation/devicetree/bindings/thermal/st-thermal.txt b/Documentation/devicetree/bindings/thermal/st-thermal.txt
new file mode 100644
index 0000000..3b9251b
--- /dev/null
+++ b/Documentation/devicetree/bindings/thermal/st-thermal.txt
@@ -0,0 +1,42 @@
+Binding for Thermal Sensor driver for STMicroelectronics STi series of SoCs.
+
+Required parameters:
+-------------------
+
+compatible : st,<SoC>-<module>-thermal; should be one of:
+ "st,stih415-sas-thermal",
+ "st,stih415-mpe-thermal",
+ "st,stih416-sas-thermal"
+ "st,stih416-mpe-thermal"
+ "st,stid127-thermal" or
+ "st,stih407-thermal"
+ according to the SoC type (stih415, stih416, stid127, stih407)
+ and module type (sas or mpe). On stid127 & stih407 there is only
+ one die/module, so there is no module type in the compatible
+ string.
+clock-names : Should be "thermal".
+ See: Documentation/devicetree/bindings/resource-names.txt
+clocks : Phandle of the clock used by the thermal sensor.
+ See: Documentation/devicetree/bindings/clock/clock-bindings.txt
+
+Optional parameters:
+-------------------
+
+reg : For non-sysconf based sensors, this should be the physical base
+ address and length of the sensor's registers.
+interrupts : Standard way to define interrupt number.
+ Interrupt is mandatory to be defined when compatible is
+ "stih416-mpe-thermal".
+ NB: For thermal sensor's for which no interrupt has been
+ defined, a polling delay of 1000ms will be used to read the
+ temperature from device.
+
+Example:
+
+ temp1@fdfe8000 {
+ compatible = "st,stih416-mpe-thermal";
+ reg = <0xfdfe8000 0x10>;
+ clock-names = "thermal";
+ clocks = <&clk_m_mpethsens>;
+ interrupts = <GIC_SPI 23 IRQ_TYPE_NONE>;
+ };
--
1.8.3.2

2014-06-05 15:07:52

by Lee Jones

[permalink] [raw]
Subject: [PATCH 4/6] thermal: sti: Add support for ST's Memory Mapped based Thermal controller

This is the traditional way of obtaining a device driver's register
address space. The aim of this driver is to supply controller specific
information to the ST Thermal Core.

Signed-off-by: Ajit Pal Singh <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
---
drivers/thermal/st/Kconfig | 4 +
drivers/thermal/st/Makefile | 1 +
drivers/thermal/st/st_thermal_memmap.c | 209 +++++++++++++++++++++++++++++++++
3 files changed, 214 insertions(+)
create mode 100644 drivers/thermal/st/st_thermal_memmap.c

diff --git a/drivers/thermal/st/Kconfig b/drivers/thermal/st/Kconfig
index d7b6e03..490fdbe 100644
--- a/drivers/thermal/st/Kconfig
+++ b/drivers/thermal/st/Kconfig
@@ -6,3 +6,7 @@ config ST_THERMAL
config ST_THERMAL_SYSCFG
select ST_THERMAL
tristate "STi series syscfg register access based thermal sensors"
+
+config ST_THERMAL_MEMMAP
+ select ST_THERMAL
+ tristate "STi series memory mapped access based thermal sensors"
diff --git a/drivers/thermal/st/Makefile b/drivers/thermal/st/Makefile
index e5058c6..b388789 100644
--- a/drivers/thermal/st/Makefile
+++ b/drivers/thermal/st/Makefile
@@ -1,2 +1,3 @@
obj-$(CONFIG_ST_THERMAL) := st_thermal.o
obj-$(CONFIG_ST_THERMAL_SYSCFG) += st_thermal_syscfg.o
+obj-$(CONFIG_ST_THERMAL_MEMMAP) += st_thermal_memmap.o
diff --git a/drivers/thermal/st/st_thermal_memmap.c b/drivers/thermal/st/st_thermal_memmap.c
new file mode 100644
index 0000000..39896ce
--- /dev/null
+++ b/drivers/thermal/st/st_thermal_memmap.c
@@ -0,0 +1,209 @@
+/*
+ * ST Thermal Sensor Driver for memory mapped sensors.
+ * Author: Ajit Pal Singh <[email protected]>
+ *
+ * Copyright (C) 2003-2014 STMicroelectronics (R&D) Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/of.h>
+#include <linux/module.h>
+
+#include "st_thermal.h"
+
+#define STIH416_MPE_CONF 0x0
+#define STIH416_MPE_STATUS 0x4
+#define STIH416_MPE_INT_THRESH 0x8
+#define STIH416_MPE_INT_EN 0xC
+
+/* Power control bits for the memory mapped thermal sensor */
+#define THERMAL_PDN BIT(4)
+#define THERMAL_SRSTN BIT(10)
+
+static const struct reg_field st_mmap_thermal_regfields[MAX_REGFIELDS] = {
+ /*
+ * According to the STIH416 MPE temp sensor data sheet -
+ * the PDN (Power Down Bit) and SRSTN (Soft Reset Bit) need to be
+ * written simultaneously for powering on and off the temperature
+ * sensor. regmap_update_bits() will be used to update the register.
+ */
+ [INT_THRESH_HI] = REG_FIELD(STIH416_MPE_INT_THRESH, 0, 7),
+ [DCORRECT] = REG_FIELD(STIH416_MPE_CONF, 5, 9),
+ [OVERFLOW] = REG_FIELD(STIH416_MPE_STATUS, 9, 9),
+ [DATA] = REG_FIELD(STIH416_MPE_STATUS, 11, 18),
+ [INT_ENABLE] = REG_FIELD(STIH416_MPE_INT_EN, 0, 0),
+};
+
+static irqreturn_t st_mmap_thermal_trip_handler(int irq, void *sdata)
+{
+ struct st_thermal_sensor *sensor = sdata;
+
+ thermal_zone_device_update(sensor->thermal_dev);
+
+ return IRQ_HANDLED;
+}
+
+/* Private ops for the Memory Mapped based thermal sensors */
+static int st_mmap_power_ctrl(struct st_thermal_sensor *sensor,
+ enum st_thermal_power_state power_state)
+{
+ const unsigned int mask = (THERMAL_PDN | THERMAL_SRSTN);
+ const unsigned int val = power_state ? mask : 0;
+
+ return regmap_update_bits(sensor->regmap, STIH416_MPE_CONF, mask, val);
+}
+
+static int st_mmap_alloc_regfields(struct st_thermal_sensor *sensor)
+{
+ struct device *dev = sensor->dev;
+ struct regmap *regmap = sensor->regmap;
+ const struct reg_field *reg_fields = sensor->cdata->reg_fields;
+
+ sensor->int_thresh_hi = devm_regmap_field_alloc(dev, regmap,
+ reg_fields[INT_THRESH_HI]);
+ sensor->int_enable = devm_regmap_field_alloc(dev, regmap,
+ reg_fields[INT_ENABLE]);
+
+ if (IS_ERR(sensor->int_thresh_hi) || IS_ERR(sensor->int_enable)) {
+ dev_err(dev, "failed to alloc mmap regfields\n");
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int st_mmap_enable_irq(struct st_thermal_sensor *sensor)
+{
+ int ret;
+
+ /* Set upper critical threshold */
+ ret = regmap_field_write(sensor->int_thresh_hi,
+ sensor->cdata->crit_temp -
+ sensor->cdata->temp_adjust_val);
+ if (ret)
+ return ret;
+
+ return regmap_field_write(sensor->int_enable, 1);
+}
+
+static int st_mmap_register_enable_irq(struct st_thermal_sensor *sensor)
+{
+ struct device *dev = sensor->dev;
+ struct platform_device *pdev = to_platform_device(dev);
+ int ret;
+
+ sensor->irq = platform_get_irq(pdev, 0);
+ if (sensor->irq < 0) {
+ dev_err(dev, "failed to register IRQ\n");
+ return sensor->irq;
+ }
+
+ ret = devm_request_threaded_irq(dev, sensor->irq,
+ NULL, st_mmap_thermal_trip_handler,
+ IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+ dev->driver->name, sensor);
+ if (ret) {
+ dev_err(dev, "failed to register IRQ %d\n", sensor->irq);
+ return ret;
+ }
+
+ return st_mmap_enable_irq(sensor);
+}
+
+static const struct regmap_config st_416mpe_regmap_config = {
+ .reg_bits = 32,
+ .val_bits = 32,
+ .reg_stride = 4,
+};
+
+static int st_mmap_regmap_init(struct st_thermal_sensor *sensor)
+{
+ struct device *dev = sensor->dev;
+ struct platform_device *pdev = to_platform_device(dev);
+ struct resource *res;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res) {
+ dev_err(dev, "no memory resources defined\n");
+ return -ENODEV;
+ }
+
+ sensor->mmio_base = devm_ioremap_resource(dev, res);
+ if (IS_ERR(sensor->mmio_base)) {
+ dev_err(dev, "failed to remap IO\n");
+ return PTR_ERR(sensor->mmio_base);
+ }
+
+ sensor->regmap = devm_regmap_init_mmio(dev, sensor->mmio_base,
+ &st_416mpe_regmap_config);
+ if (IS_ERR(sensor->regmap)) {
+ dev_err(dev, "failed to initialise regmap\n");
+ return PTR_ERR(sensor->regmap);
+ }
+
+ return 0;
+}
+
+static const struct st_thermal_sensor_ops st_mmap_sensor_ops = {
+ .power_ctrl = st_mmap_power_ctrl,
+ .alloc_regfields = st_mmap_alloc_regfields,
+ .regmap_init = st_mmap_regmap_init,
+ .register_enable_irq = st_mmap_register_enable_irq,
+ .enable_irq = st_mmap_enable_irq,
+};
+
+/* Compatible device data stih416 mpe thermal sensor */
+const struct st_thermal_compat_data st_416mpe_cdata = {
+ .reg_fields = st_mmap_thermal_regfields,
+ .ops = &st_mmap_sensor_ops,
+ .calibration_val = 14,
+ .temp_adjust_val = -95,
+ .crit_temp = 120,
+};
+
+/* Compatible device data stih407 thermal sensor */
+const struct st_thermal_compat_data st_407_cdata = {
+ .reg_fields = st_mmap_thermal_regfields,
+ .ops = &st_mmap_sensor_ops,
+ .calibration_val = 16,
+ .temp_adjust_val = -95,
+ .crit_temp = 120,
+};
+
+static struct of_device_id st_mmap_thermal_of_match[] = {
+ { .compatible = "st,stih416-mpe-thermal", .data = &st_416mpe_cdata },
+ { .compatible = "st,stih407-thermal", .data = &st_407_cdata },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, st_mmap_thermal_of_match);
+
+int st_mmap_probe(struct platform_device *pdev)
+{
+ return st_thermal_register(pdev, st_mmap_thermal_of_match);
+}
+
+int st_mmap_remove(struct platform_device *pdev)
+{
+ return st_thermal_unregister(pdev);
+}
+
+static struct platform_driver st_mmap_thermal_driver = {
+ .driver = {
+ .name = "st_thermal_mmap",
+ .owner = THIS_MODULE,
+ .pm = &st_thermal_pm_ops,
+ .of_match_table = st_mmap_thermal_of_match,
+ },
+ .probe = st_mmap_probe,
+ .remove = st_mmap_remove,
+};
+
+module_platform_driver(st_mmap_thermal_driver);
+
+MODULE_AUTHOR("STMicroelectronics (R&D) Limited <[email protected]>");
+MODULE_DESCRIPTION("STMicroelectronics STi SoC Thermal Sensor Driver");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

2014-06-05 15:07:59

by Lee Jones

[permalink] [raw]
Subject: [PATCH 6/6] ARM: multi_v7_defconfig: Configure in ST's Thermal Controller

Signed-off-by: Ajit Pal Singh <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
---
arch/arm/configs/multi_v7_defconfig | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index d4e8a47..dcc4e3e 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -204,6 +204,8 @@ CONFIG_SENSORS_LM90=y
CONFIG_THERMAL=y
CONFIG_DOVE_THERMAL=y
CONFIG_ARMADA_THERMAL=y
+CONFIG_ST_THERMAL_SYSCFG=y
+CONFIG_ST_THERMAL_MEMMAP=y
CONFIG_WATCHDOG=y
CONFIG_ORION_WATCHDOG=y
CONFIG_MFD_AS3722=y
--
1.8.3.2

2014-06-05 15:08:32

by Lee Jones

[permalink] [raw]
Subject: [PATCH 5/6] ARM: STi: DT: STiH416: Supply Thermal Controller Device Tree nodes

We supply two of these. The first is controlled by the System Configuration
registers and the second one provided is a more traditional 'memory mapped'
variant. Each are handled by they own sub-driver.

Signed-off-by: Ajit Pal Singh <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
---
arch/arm/boot/dts/stih416.dtsi | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/stih416.dtsi b/arch/arm/boot/dts/stih416.dtsi
index 06473c5..ed80220 100644
--- a/arch/arm/boot/dts/stih416.dtsi
+++ b/arch/arm/boot/dts/stih416.dtsi
@@ -236,5 +236,23 @@
resets = <&powerdown STIH416_KEYSCAN_POWERDOWN>,
<&softreset STIH416_KEYSCAN_SOFTRESET>;
};
+
+ temp0 {
+ compatible = "st,stih416-sas-thermal";
+ clock-names = "thermal";
+ clocks = <&clockgen_c_vcc 14>;
+
+ status = "okay";
+ };
+
+ temp1@fdfe8000 {
+ compatible = "st,stih416-mpe-thermal";
+ reg = <0xfdfe8000 0x10>;
+ clocks = <&clockgen_e 3>;
+ clock-names = "thermal";
+ interrupts = <GIC_SPI 23 IRQ_TYPE_EDGE_RISING>;
+
+ status = "okay";
+ };
};
};
--
1.8.3.2

2014-06-05 15:07:48

by Lee Jones

[permalink] [raw]
Subject: [PATCH 3/6] thermal: sti: Add support for ST's System Config Register based Thermal controller

Supply controller specific information to the ST Thermal Core.

Signed-off-by: Ajit Pal Singh <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
---
drivers/thermal/st/Kconfig | 4 +
drivers/thermal/st/Makefile | 1 +
drivers/thermal/st/st_thermal_syscfg.c | 179 +++++++++++++++++++++++++++++++++
3 files changed, 184 insertions(+)
create mode 100644 drivers/thermal/st/st_thermal_syscfg.c

diff --git a/drivers/thermal/st/Kconfig b/drivers/thermal/st/Kconfig
index 1ba6760..d7b6e03 100644
--- a/drivers/thermal/st/Kconfig
+++ b/drivers/thermal/st/Kconfig
@@ -2,3 +2,7 @@ config ST_THERMAL
tristate "Thermal sensors on STMicroelectronics STi series of SoCs"
help
Support for thermal sensors on STMicroelectronics STi series of SoCs.
+
+config ST_THERMAL_SYSCFG
+ select ST_THERMAL
+ tristate "STi series syscfg register access based thermal sensors"
diff --git a/drivers/thermal/st/Makefile b/drivers/thermal/st/Makefile
index 10f4bf6..e5058c6 100644
--- a/drivers/thermal/st/Makefile
+++ b/drivers/thermal/st/Makefile
@@ -1 +1,2 @@
obj-$(CONFIG_ST_THERMAL) := st_thermal.o
+obj-$(CONFIG_ST_THERMAL_SYSCFG) += st_thermal_syscfg.o
diff --git a/drivers/thermal/st/st_thermal_syscfg.c b/drivers/thermal/st/st_thermal_syscfg.c
new file mode 100644
index 0000000..888b58e
--- /dev/null
+++ b/drivers/thermal/st/st_thermal_syscfg.c
@@ -0,0 +1,179 @@
+/*
+ * ST Thermal Sensor Driver for syscfg based sensors.
+ * Author: Ajit Pal Singh <[email protected]>
+ *
+ * Copyright (C) 2003-2014 STMicroelectronics (R&D) Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/of.h>
+#include <linux/module.h>
+#include <linux/mfd/syscon.h>
+
+#include "st_thermal.h"
+
+/* STiH415 */
+#define STIH415_SYSCFG_FRONT(num) ((num - 100) * 4)
+#define STIH415_SAS_THSENS_CONF STIH415_SYSCFG_FRONT(178)
+#define STIH415_SAS_THSENS_STATUS STIH415_SYSCFG_FRONT(198)
+#define STIH415_SYSCFG_MPE(num) ((num - 600) * 4)
+#define STIH415_MPE_THSENS_CONF STIH415_SYSCFG_MPE(607)
+#define STIH415_MPE_THSENS_STATUS STIH415_SYSCFG_MPE(667)
+
+/* STiH416 */
+#define STIH416_SYSCFG_FRONT(num) ((num - 1000) * 4)
+#define STIH416_SAS_THSENS_CONF STIH416_SYSCFG_FRONT(1552)
+#define STIH416_SAS_THSENS_STATUS1 STIH416_SYSCFG_FRONT(1554)
+#define STIH416_SAS_THSENS_STATUS2 STIH416_SYSCFG_FRONT(1594)
+
+/* STiD127 */
+#define STID127_SYSCFG_CPU(num) ((num - 700) * 4)
+#define STID127_THSENS_CONF STID127_SYSCFG_CPU(743)
+#define STID127_THSENS_STATUS STID127_SYSCFG_CPU(767)
+
+static const struct reg_field st_415sas_regfields[MAX_REGFIELDS] = {
+ [TEMP_PWR] = REG_FIELD(STIH415_SAS_THSENS_CONF, 9, 9),
+ [DCORRECT] = REG_FIELD(STIH415_SAS_THSENS_CONF, 4, 8),
+ [OVERFLOW] = REG_FIELD(STIH415_SAS_THSENS_STATUS, 8, 8),
+ [DATA] = REG_FIELD(STIH415_SAS_THSENS_STATUS, 10, 16),
+};
+
+static const struct reg_field st_415mpe_regfields[MAX_REGFIELDS] = {
+ [TEMP_PWR] = REG_FIELD(STIH415_MPE_THSENS_CONF, 8, 8),
+ [DCORRECT] = REG_FIELD(STIH415_MPE_THSENS_CONF, 3, 7),
+ [OVERFLOW] = REG_FIELD(STIH415_MPE_THSENS_STATUS, 9, 9),
+ [DATA] = REG_FIELD(STIH415_MPE_THSENS_STATUS, 11, 18),
+};
+
+static const struct reg_field st_416sas_regfields[MAX_REGFIELDS] = {
+ [TEMP_PWR] = REG_FIELD(STIH416_SAS_THSENS_CONF, 9, 9),
+ [DCORRECT] = REG_FIELD(STIH416_SAS_THSENS_CONF, 4, 8),
+ [OVERFLOW] = REG_FIELD(STIH416_SAS_THSENS_STATUS1, 8, 8),
+ [DATA] = REG_FIELD(STIH416_SAS_THSENS_STATUS2, 10, 16),
+};
+
+static const struct reg_field st_127_regfields[MAX_REGFIELDS] = {
+ [TEMP_PWR] = REG_FIELD(STID127_THSENS_CONF, 7, 7),
+ [DCORRECT] = REG_FIELD(STID127_THSENS_CONF, 2, 6),
+ [OVERFLOW] = REG_FIELD(STID127_THSENS_STATUS, 9, 9),
+ [DATA] = REG_FIELD(STID127_THSENS_STATUS, 11, 18),
+};
+
+/* Private OPs for System Configuration Register based thermal sensors */
+static int st_syscfg_power_ctrl(struct st_thermal_sensor *sensor,
+ enum st_thermal_power_state power_state)
+{
+ return regmap_field_write(sensor->pwr, power_state);
+}
+
+static int st_syscfg_alloc_regfields(struct st_thermal_sensor *sensor)
+{
+ struct device *dev = sensor->dev;
+
+ sensor->pwr = devm_regmap_field_alloc(dev, sensor->regmap,
+ sensor->cdata->reg_fields[TEMP_PWR]);
+
+ if (IS_ERR(sensor->pwr)) {
+ dev_err(dev, "failed to alloc syscfg regfields\n");
+ return PTR_ERR(sensor->pwr);
+ }
+
+ return 0;
+}
+
+static int st_syscfg_regmap_init(struct st_thermal_sensor *sensor)
+{
+ sensor->regmap =
+ syscon_regmap_lookup_by_compatible(sensor->cdata->sys_compat);
+ if (IS_ERR(sensor->regmap)) {
+ dev_err(sensor->dev, "failed to find syscfg regmap\n");
+ return PTR_ERR(sensor->regmap);
+ }
+
+ return 0;
+}
+
+static const struct st_thermal_sensor_ops st_syscfg_sensor_ops = {
+ .power_ctrl = st_syscfg_power_ctrl,
+ .alloc_regfields = st_syscfg_alloc_regfields,
+ .regmap_init = st_syscfg_regmap_init,
+};
+
+/* Compatible device data for stih415 sas thermal sensor */
+const struct st_thermal_compat_data st_415sas_cdata = {
+ .sys_compat = "st,stih415-front-syscfg",
+ .reg_fields = st_415sas_regfields,
+ .ops = &st_syscfg_sensor_ops,
+ .calibration_val = 16,
+ .temp_adjust_val = 20,
+ .crit_temp = 120,
+};
+
+/* Compatible device data for stih415 mpe thermal sensor */
+const struct st_thermal_compat_data st_415mpe_cdata = {
+ .sys_compat = "st,stih415-system-syscfg",
+ .reg_fields = st_415mpe_regfields,
+ .ops = &st_syscfg_sensor_ops,
+ .calibration_val = 16,
+ .temp_adjust_val = -103,
+ .crit_temp = 120,
+};
+
+/* Compatible device data for stih416 sas thermal sensor */
+const struct st_thermal_compat_data st_416sas_cdata = {
+ .sys_compat = "st,stih416-front-syscfg",
+ .reg_fields = st_416sas_regfields,
+ .ops = &st_syscfg_sensor_ops,
+ .calibration_val = 16,
+ .temp_adjust_val = 20,
+ .crit_temp = 120,
+};
+
+/* Compatible device data for stid127 thermal sensor */
+const struct st_thermal_compat_data st_127_cdata = {
+ .sys_compat = "st,stid127-cpu-syscfg",
+ .reg_fields = st_127_regfields,
+ .ops = &st_syscfg_sensor_ops,
+ .calibration_val = 8,
+ .temp_adjust_val = -103,
+ .crit_temp = 120,
+};
+
+static struct of_device_id st_syscfg_thermal_of_match[] = {
+ { .compatible = "st,stih415-sas-thermal", .data = &st_415sas_cdata },
+ { .compatible = "st,stih415-mpe-thermal", .data = &st_415mpe_cdata },
+ { .compatible = "st,stih416-sas-thermal", .data = &st_416sas_cdata },
+ { .compatible = "st,stid127-thermal", .data = &st_127_cdata },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, st_syscfg_thermal_of_match);
+
+int st_syscfg_probe(struct platform_device *pdev)
+{
+ return st_thermal_register(pdev, st_syscfg_thermal_of_match);
+}
+
+int st_syscfg_remove(struct platform_device *pdev)
+{
+ return st_thermal_unregister(pdev);
+}
+
+static struct platform_driver st_syscfg_thermal_driver = {
+ .driver = {
+ .name = "st_syscfg_thermal",
+ .owner = THIS_MODULE,
+ .pm = &st_thermal_pm_ops,
+ .of_match_table = st_syscfg_thermal_of_match,
+ },
+ .probe = st_syscfg_probe,
+ .remove = st_syscfg_remove,
+};
+module_platform_driver(st_syscfg_thermal_driver);
+
+MODULE_AUTHOR("STMicroelectronics (R&D) Limited <[email protected]>");
+MODULE_DESCRIPTION("STMicroelectronics STi SoC Thermal Sensor Driver");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

2014-06-14 22:32:22

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH 2/6] thermal: sti: Introduce ST Thermal core code

On Thu 2014-06-05 16:06:55, Lee Jones wrote:
> This core is shared by both ST's 'memory mapped' and
> 'system configuration register' based Thermal controllers.
>
> Signed-off-by: Ajit Pal Singh <[email protected]>
> Signed-off-by: Lee Jones <[email protected]>

Acked-by: Pavel Machek <[email protected]>



> +++ b/drivers/thermal/st/st_thermal.c
> @@ -0,0 +1,313 @@
> +/*
> + * ST Thermal Sensor Driver core routines
> + * Author: Ajit Pal Singh <[email protected]>
> + *
> + * Copyright (C) 2003-2014 STMicroelectronics (R&D) Limited
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + */
> +
> +#include <linux/clk.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
> +
> +#include "st_thermal.h"
...
> +/* Callback to get temperature from HW*/

Add space before */, but feel free to do it in followup patch.


--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

2014-06-24 09:23:19

by Lee Jones

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

> I'm re-sending this set, as one of the maintainers' email addresses
> is incorrect in the MAINTAINERS file.
>
> This patchset adds full support for 2 types of Thermal Controllers
> produced by STMicroelectronics. One is a more traditional memory
> mapped variant, the other is controlled solely by system configuration
> registers.

Any thing from the Thermal guys? Has this set fallen through the gaps?

> Documentation/devicetree/bindings/thermal/st-thermal.txt | 42 ++++++++++++++++
> arch/arm/boot/dts/stih416.dtsi | 18 +++++++
> arch/arm/configs/multi_v7_defconfig | 2 +
> drivers/thermal/Kconfig | 5 ++
> drivers/thermal/Makefile | 1 +
> drivers/thermal/st/Kconfig | 12 +++++
> drivers/thermal/st/Makefile | 3 ++
> drivers/thermal/st/st_thermal.c | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++
> drivers/thermal/st/st_thermal.h | 104 ++++++++++++++++++++++++++++++++++++++
> drivers/thermal/st/st_thermal_memmap.c | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> drivers/thermal/st/st_thermal_syscfg.c | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 11 files changed, 888 insertions(+)
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

2014-07-09 12:08:36

by Lee Jones

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Tue, 24 Jun 2014, Lee Jones wrote:

> > I'm re-sending this set, as one of the maintainers' email addresses
> > is incorrect in the MAINTAINERS file.
> >
> > This patchset adds full support for 2 types of Thermal Controllers
> > produced by STMicroelectronics. One is a more traditional memory
> > mapped variant, the other is controlled solely by system configuration
> > registers.
>
> Any thing from the Thermal guys? Has this set fallen through the gaps?

Anything at all? It's been well over a month now.

> > Documentation/devicetree/bindings/thermal/st-thermal.txt | 42 ++++++++++++++++
> > arch/arm/boot/dts/stih416.dtsi | 18 +++++++
> > arch/arm/configs/multi_v7_defconfig | 2 +
> > drivers/thermal/Kconfig | 5 ++
> > drivers/thermal/Makefile | 1 +
> > drivers/thermal/st/Kconfig | 12 +++++
> > drivers/thermal/st/Makefile | 3 ++
> > drivers/thermal/st/st_thermal.c | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > ++++++++++++++++++++++++++++
> > drivers/thermal/st/st_thermal.h | 104 ++++++++++++++++++++++++++++++++++++++
> > drivers/thermal/st/st_thermal_memmap.c | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > drivers/thermal/st/st_thermal_syscfg.c | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > 11 files changed, 888 insertions(+)
> >
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

2014-07-09 13:19:32

by Zhang, Rui

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> On Tue, 24 Jun 2014, Lee Jones wrote:
>
> > > I'm re-sending this set, as one of the maintainers' email addresses
> > > is incorrect in the MAINTAINERS file.
> > >
> > > This patchset adds full support for 2 types of Thermal Controllers
> > > produced by STMicroelectronics. One is a more traditional memory
> > > mapped variant, the other is controlled solely by system configuration
> > > registers.
> >
> > Any thing from the Thermal guys? Has this set fallen through the gaps?
>
> Anything at all? It's been well over a month now.
>
Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
but as we didn't get any feedback from Eduardo, I will take them.

thanks,
rui
> > > Documentation/devicetree/bindings/thermal/st-thermal.txt | 42 ++++++++++++++++
> > > arch/arm/boot/dts/stih416.dtsi | 18 +++++++
> > > arch/arm/configs/multi_v7_defconfig | 2 +
> > > drivers/thermal/Kconfig | 5 ++
> > > drivers/thermal/Makefile | 1 +
> > > drivers/thermal/st/Kconfig | 12 +++++
> > > drivers/thermal/st/Makefile | 3 ++
> > > drivers/thermal/st/st_thermal.c | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > ++++++++++++++++++++++++++++
> > > drivers/thermal/st/st_thermal.h | 104 ++++++++++++++++++++++++++++++++++++++
> > > drivers/thermal/st/st_thermal_memmap.c | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > drivers/thermal/st/st_thermal_syscfg.c | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > 11 files changed, 888 insertions(+)
> > >
> >
>

2014-07-09 13:46:54

by Lee Jones

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Wed, 09 Jul 2014, Zhang Rui wrote:

> On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> > On Tue, 24 Jun 2014, Lee Jones wrote:
> >
> > > > I'm re-sending this set, as one of the maintainers' email addresses
> > > > is incorrect in the MAINTAINERS file.
> > > >
> > > > This patchset adds full support for 2 types of Thermal Controllers
> > > > produced by STMicroelectronics. One is a more traditional memory
> > > > mapped variant, the other is controlled solely by system configuration
> > > > registers.
> > >
> > > Any thing from the Thermal guys? Has this set fallen through the gaps?
> >
> > Anything at all? It's been well over a month now.
> >
> Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
> but as we didn't get any feedback from Eduardo, I will take them.

Thanks Rui.

So have you taken all 4 "thermal: sti: *" patches?

The ARM ones should go through Maxime.

> > > > Documentation/devicetree/bindings/thermal/st-thermal.txt | 42 ++++++++++++++++
> > > > arch/arm/boot/dts/stih416.dtsi | 18 +++++++
> > > > arch/arm/configs/multi_v7_defconfig | 2 +
> > > > drivers/thermal/Kconfig | 5 ++
> > > > drivers/thermal/Makefile | 1 +
> > > > drivers/thermal/st/Kconfig | 12 +++++
> > > > drivers/thermal/st/Makefile | 3 ++
> > > > drivers/thermal/st/st_thermal.c | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > > ++++++++++++++++++++++++++++
> > > > drivers/thermal/st/st_thermal.h | 104 ++++++++++++++++++++++++++++++++++++++
> > > > drivers/thermal/st/st_thermal_memmap.c | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > > drivers/thermal/st/st_thermal_syscfg.c | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > > 11 files changed, 888 insertions(+)
> > > >
> > >
> >
>
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

2014-07-14 13:08:40

by Lee Jones

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Wed, 09 Jul 2014, Lee Jones wrote:
> On Wed, 09 Jul 2014, Zhang Rui wrote:
> > On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> > > On Tue, 24 Jun 2014, Lee Jones wrote:
> > >
> > > > > I'm re-sending this set, as one of the maintainers' email addresses
> > > > > is incorrect in the MAINTAINERS file.
> > > > >
> > > > > This patchset adds full support for 2 types of Thermal Controllers
> > > > > produced by STMicroelectronics. One is a more traditional memory
> > > > > mapped variant, the other is controlled solely by system configuration
> > > > > registers.
> > > >
> > > > Any thing from the Thermal guys? Has this set fallen through the gaps?
> > >
> > > Anything at all? It's been well over a month now.
> > >
> > Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
> > but as we didn't get any feedback from Eduardo, I will take them.
>
> Thanks Rui.
>
> So have you taken all 4 "thermal: sti: *" patches?

Have you taken these yet? I notice that these aren't in -next yet.

> The ARM ones should go through Maxime.

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

2014-07-14 14:14:53

by Zhang, Rui

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Mon, 2014-07-14 at 14:08 +0100, Lee Jones wrote:
> On Wed, 09 Jul 2014, Lee Jones wrote:
> > On Wed, 09 Jul 2014, Zhang Rui wrote:
> > > On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> > > > On Tue, 24 Jun 2014, Lee Jones wrote:
> > > >
> > > > > > I'm re-sending this set, as one of the maintainers' email addresses
> > > > > > is incorrect in the MAINTAINERS file.
> > > > > >
> > > > > > This patchset adds full support for 2 types of Thermal Controllers
> > > > > > produced by STMicroelectronics. One is a more traditional memory
> > > > > > mapped variant, the other is controlled solely by system configuration
> > > > > > registers.
> > > > >
> > > > > Any thing from the Thermal guys? Has this set fallen through the gaps?
> > > >
> > > > Anything at all? It's been well over a month now.
> > > >
> > > Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
> > > but as we didn't get any feedback from Eduardo, I will take them.
> >
> > Thanks Rui.
> >
> > So have you taken all 4 "thermal: sti: *" patches?
>
> Have you taken these yet?
Not yet.
will do tomorrow.

thanks,
rui
> I notice that these aren't in -next yet.
>
> > The ARM ones should go through Maxime.
>

2014-07-14 14:27:15

by Lee Jones

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Mon, 14 Jul 2014, Zhang Rui wrote:

> On Mon, 2014-07-14 at 14:08 +0100, Lee Jones wrote:
> > On Wed, 09 Jul 2014, Lee Jones wrote:
> > > On Wed, 09 Jul 2014, Zhang Rui wrote:
> > > > On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> > > > > On Tue, 24 Jun 2014, Lee Jones wrote:
> > > > >
> > > > > > > I'm re-sending this set, as one of the maintainers' email addresses
> > > > > > > is incorrect in the MAINTAINERS file.
> > > > > > >
> > > > > > > This patchset adds full support for 2 types of Thermal Controllers
> > > > > > > produced by STMicroelectronics. One is a more traditional memory
> > > > > > > mapped variant, the other is controlled solely by system configuration
> > > > > > > registers.
> > > > > >
> > > > > > Any thing from the Thermal guys? Has this set fallen through the gaps?
> > > > >
> > > > > Anything at all? It's been well over a month now.
> > > > >
> > > > Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
> > > > but as we didn't get any feedback from Eduardo, I will take them.
> > >
> > > Thanks Rui.
> > >
> > > So have you taken all 4 "thermal: sti: *" patches?
> >
> > Have you taken these yet?
> Not yet.
> will do tomorrow.

Perfect, thanks for the update.

> > I notice that these aren't in -next yet.
> >
> > > The ARM ones should go through Maxime.
> >
>
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

2014-07-21 09:18:04

by Lee Jones

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Mon, 14 Jul 2014, Lee Jones wrote:

> On Mon, 14 Jul 2014, Zhang Rui wrote:
>
> > On Mon, 2014-07-14 at 14:08 +0100, Lee Jones wrote:
> > > On Wed, 09 Jul 2014, Lee Jones wrote:
> > > > On Wed, 09 Jul 2014, Zhang Rui wrote:
> > > > > On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> > > > > > On Tue, 24 Jun 2014, Lee Jones wrote:
> > > > > >
> > > > > > > > I'm re-sending this set, as one of the maintainers' email addresses
> > > > > > > > is incorrect in the MAINTAINERS file.
> > > > > > > >
> > > > > > > > This patchset adds full support for 2 types of Thermal Controllers
> > > > > > > > produced by STMicroelectronics. One is a more traditional memory
> > > > > > > > mapped variant, the other is controlled solely by system configuration
> > > > > > > > registers.
> > > > > > >
> > > > > > > Any thing from the Thermal guys? Has this set fallen through the gaps?
> > > > > >
> > > > > > Anything at all? It's been well over a month now.
> > > > > >
> > > > > Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
> > > > > but as we didn't get any feedback from Eduardo, I will take them.
> > > >
> > > > Thanks Rui.
> > > >
> > > > So have you taken all 4 "thermal: sti: *" patches?
> > >
> > > Have you taken these yet?
> >
> > Not yet. will do tomorrow.

I waited 7 days and still don't see them?

> Perfect, thanks for the update.
>
> > > I notice that these aren't in -next yet.

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

2014-07-21 09:34:41

by Maxime Coquelin

[permalink] [raw]
Subject: Re: [PATCH 5/6] ARM: STi: DT: STiH416: Supply Thermal Controller Device Tree nodes

Hi Lee,

On 06/05/2014 05:06 PM, Lee Jones wrote:
> We supply two of these. The first is controlled by the System Configuration
> registers and the second one provided is a more traditional 'memory mapped'
> variant. Each are handled by they own sub-driver.
>
> Signed-off-by: Ajit Pal Singh <[email protected]>
> Signed-off-by: Lee Jones <[email protected]>
> ---
> arch/arm/boot/dts/stih416.dtsi | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>

Added to my queue for v3.17.

Thanks,
Maxime

2014-07-21 09:35:14

by Zhang, Rui

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Mon, 2014-07-21 at 10:17 +0100, Lee Jones wrote:
> On Mon, 14 Jul 2014, Lee Jones wrote:
>
> > On Mon, 14 Jul 2014, Zhang Rui wrote:
> >
> > > On Mon, 2014-07-14 at 14:08 +0100, Lee Jones wrote:
> > > > On Wed, 09 Jul 2014, Lee Jones wrote:
> > > > > On Wed, 09 Jul 2014, Zhang Rui wrote:
> > > > > > On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> > > > > > > On Tue, 24 Jun 2014, Lee Jones wrote:
> > > > > > >
> > > > > > > > > I'm re-sending this set, as one of the maintainers' email addresses
> > > > > > > > > is incorrect in the MAINTAINERS file.
> > > > > > > > >
> > > > > > > > > This patchset adds full support for 2 types of Thermal Controllers
> > > > > > > > > produced by STMicroelectronics. One is a more traditional memory
> > > > > > > > > mapped variant, the other is controlled solely by system configuration
> > > > > > > > > registers.
> > > > > > > >
> > > > > > > > Any thing from the Thermal guys? Has this set fallen through the gaps?
> > > > > > >
> > > > > > > Anything at all? It's been well over a month now.
> > > > > > >
> > > > > > Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
> > > > > > but as we didn't get any feedback from Eduardo, I will take them.
> > > > >
> > > > > Thanks Rui.
> > > > >
> > > > > So have you taken all 4 "thermal: sti: *" patches?
> > > >
> > > > Have you taken these yet?
> > >
> > > Not yet. will do tomorrow.
>
> I waited 7 days and still don't see them?
>
Done, they're in my local tree and I forgot to push them.
thanks for the reminder.

-rui
> > Perfect, thanks for the update.
> >
> > > > I notice that these aren't in -next yet.
>

2014-07-21 09:50:41

by Maxime Coquelin

[permalink] [raw]
Subject: Re: [PATCH 6/6] ARM: multi_v7_defconfig: Configure in ST's Thermal Controller



On 06/05/2014 05:06 PM, Lee Jones wrote:
> Signed-off-by: Ajit Pal Singh <[email protected]>
> Signed-off-by: Lee Jones <[email protected]>
> ---
> arch/arm/configs/multi_v7_defconfig | 2 ++
> 1 file changed, 2 insertions(+)
>

Added to my queue for v3.17.

Thanks,
Maxime

2014-07-21 10:13:23

by Lee Jones

[permalink] [raw]
Subject: Re: [RESEND PATCH 0/6] thermal: sti: Add new Thermal driver

On Mon, 21 Jul 2014, Zhang Rui wrote:

> On Mon, 2014-07-21 at 10:17 +0100, Lee Jones wrote:
> > On Mon, 14 Jul 2014, Lee Jones wrote:
> >
> > > On Mon, 14 Jul 2014, Zhang Rui wrote:
> > >
> > > > On Mon, 2014-07-14 at 14:08 +0100, Lee Jones wrote:
> > > > > On Wed, 09 Jul 2014, Lee Jones wrote:
> > > > > > On Wed, 09 Jul 2014, Zhang Rui wrote:
> > > > > > > On Wed, 2014-07-09 at 13:08 +0100, Lee Jones wrote:
> > > > > > > > On Tue, 24 Jun 2014, Lee Jones wrote:
> > > > > > > >
> > > > > > > > > > I'm re-sending this set, as one of the maintainers' email addresses
> > > > > > > > > > is incorrect in the MAINTAINERS file.
> > > > > > > > > >
> > > > > > > > > > This patchset adds full support for 2 types of Thermal Controllers
> > > > > > > > > > produced by STMicroelectronics. One is a more traditional memory
> > > > > > > > > > mapped variant, the other is controlled solely by system configuration
> > > > > > > > > > registers.
> > > > > > > > >
> > > > > > > > > Any thing from the Thermal guys? Has this set fallen through the gaps?
> > > > > > > >
> > > > > > > > Anything at all? It's been well over a month now.
> > > > > > > >
> > > > > > > Well, for the soc thermal drivers, I'd prefer to take them via Eduardo,
> > > > > > > but as we didn't get any feedback from Eduardo, I will take them.
> > > > > >
> > > > > > Thanks Rui.
> > > > > >
> > > > > > So have you taken all 4 "thermal: sti: *" patches?
> > > > >
> > > > > Have you taken these yet?
> > > >
> > > > Not yet. will do tomorrow.
> >
> > I waited 7 days and still don't see them?
> >
> Done, they're in my local tree and I forgot to push them.
> thanks for the reminder.

Thanks dude.

> > > Perfect, thanks for the update.
> > >
> > > > > I notice that these aren't in -next yet.
> >
>
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog