* [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor
@ 2017-01-13 10:46 Baoyou Xie
2017-01-13 10:46 ` [PATCH v4 2/3] MAINTAINERS: add zx2967 thermal drivers to ARM ZTE architecture Baoyou Xie
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Baoyou Xie @ 2017-01-13 10:46 UTC (permalink / raw)
To: linux-arm-kernel
This patch adds dt-binding documentation for zx2967 family thermal sensor.
Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Shawn Guo <shawnguo@kernel.org>
---
.../devicetree/bindings/thermal/zx2967-thermal.txt | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 Documentation/devicetree/bindings/thermal/zx2967-thermal.txt
diff --git a/Documentation/devicetree/bindings/thermal/zx2967-thermal.txt b/Documentation/devicetree/bindings/thermal/zx2967-thermal.txt
new file mode 100644
index 0000000..86f941c
--- /dev/null
+++ b/Documentation/devicetree/bindings/thermal/zx2967-thermal.txt
@@ -0,0 +1,21 @@
+* ZTE zx2967 family Thermal
+
+Required Properties:
+- compatible: should be one of the following.
+ * zte,zx296718-thermal
+- reg: physical base address of the controller and length of memory mapped
+ region.
+- clocks : Pairs of phandle and specifier referencing the controller's clocks.
+- clock-names: "gate" for the topcrm clock.
+ "pclk" for the apb clock.
+- #thermal-sensor-cells: must be 0.
+
+Example:
+
+ tempsensor: tempsensor at 148a000 {
+ compatible = "zte,zx296718-thermal";
+ reg = <0x0148a000 0x20>;
+ clocks = <&topcrm TEMPSENSOR_GATE>, <&audiocrm AUDIO_TS_PCLK>;
+ clock-names = "gate", "pclk";
+ #thermal-sensor-cells = <0>;
+ };
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v4 2/3] MAINTAINERS: add zx2967 thermal drivers to ARM ZTE architecture 2017-01-13 10:46 [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor Baoyou Xie @ 2017-01-13 10:46 ` Baoyou Xie 2017-01-13 10:46 ` [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family Baoyou Xie 2017-01-17 5:27 ` [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor Eduardo Valentin 2 siblings, 0 replies; 7+ messages in thread From: Baoyou Xie @ 2017-01-13 10:46 UTC (permalink / raw) To: linux-arm-kernel Add the zx2967 thermal drivers as maintained by ARM ZTE architecture maintainers, as they're parts of the core IP. Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org> --- MAINTAINERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 64f04df..2793808 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1981,9 +1981,11 @@ S: Maintained F: arch/arm/mach-zx/ F: drivers/clk/zte/ F: drivers/soc/zte/ +F: drivers/thermal/zx* F: Documentation/devicetree/bindings/arm/zte.txt F: Documentation/devicetree/bindings/clock/zx296702-clk.txt F: Documentation/devicetree/bindings/soc/zte/ +F: Documentation/devicetree/bindings/thermal/zx* F: include/dt-bindings/soc/zx*.h ARM/ZYNQ ARCHITECTURE -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family 2017-01-13 10:46 [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor Baoyou Xie 2017-01-13 10:46 ` [PATCH v4 2/3] MAINTAINERS: add zx2967 thermal drivers to ARM ZTE architecture Baoyou Xie @ 2017-01-13 10:46 ` Baoyou Xie 2017-01-16 6:59 ` Shawn Guo 2017-01-17 5:23 ` Eduardo Valentin 2017-01-17 5:27 ` [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor Eduardo Valentin 2 siblings, 2 replies; 7+ messages in thread From: Baoyou Xie @ 2017-01-13 10:46 UTC (permalink / raw) To: linux-arm-kernel This patch adds thermal driver for ZTE's zx2967 family. Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org> --- drivers/thermal/Kconfig | 6 + drivers/thermal/Makefile | 1 + drivers/thermal/zx2967_thermal.c | 253 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 260 insertions(+) create mode 100644 drivers/thermal/zx2967_thermal.c diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index 18f2de6..0dd597e 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig @@ -445,3 +445,9 @@ config BCM2835_THERMAL Support for thermal sensors on Broadcom bcm2835 SoCs. endif + +config ZX2967_THERMAL + tristate "Thermal sensors on zx2967 SoC" + depends on ARCH_ZX + help + Support for thermal sensors on ZTE zx2967 SoCs. diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile index 677c6d9..c00c05e 100644 --- a/drivers/thermal/Makefile +++ b/drivers/thermal/Makefile @@ -57,3 +57,4 @@ obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o obj-$(CONFIG_MTK_THERMAL) += mtk_thermal.o obj-$(CONFIG_GENERIC_ADC_THERMAL) += thermal-generic-adc.o obj-$(CONFIG_BCM2835_THERMAL) += bcm2835_thermal.o +obj-$(CONFIG_ZX2967_THERMAL) += zx2967_thermal.o diff --git a/drivers/thermal/zx2967_thermal.c b/drivers/thermal/zx2967_thermal.c new file mode 100644 index 0000000..e77d07c --- /dev/null +++ b/drivers/thermal/zx2967_thermal.c @@ -0,0 +1,253 @@ +/* + * ZTE's zx2967 family thermal sensor driver + * + * Copyright (C) 2017 ZTE Ltd. + * + * Author: Baoyou Xie <baoyou.xie@linaro.org> + * + * License terms: GNU General Public License (GPL) version 2 + */ + +#include <linux/clk.h> +#include <linux/delay.h> +#include <linux/device.h> +#include <linux/err.h> +#include <linux/io.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/thermal.h> + +/* Power Mode: 0->low 1->high */ +#define ZX2967_THERMAL_POWER_MODE 0 + +/* DCF Control Register */ +#define ZX2967_THERMAL_DCF 0x4 + +/* Selection Register */ +#define ZX2967_THERMAL_SEL 0x8 + +/* Control Register */ +#define ZX2967_THERMAL_CTRL 0x10 + +#define ZX2967_THERMAL_READY 0x1000 +#define ZX2967_THERMAL_TEMP_MASK 0xfff +#define ZX2967_THERMAL_ID_MASK 0x18 +#define ZX2967_THERMAL_ID0 0x8 +#define ZX2967_THERMAL_ID1 0x10 + +struct zx2967_thermal_sensor { + struct zx2967_thermal_priv *priv; + struct thermal_zone_device *tzd; + int id; +}; + +#define NUM_SENSORS 1 + +struct zx2967_thermal_priv { + struct zx2967_thermal_sensor sensors[NUM_SENSORS]; + struct mutex lock; + struct clk *clk_gate; + struct clk *pclk; + void __iomem *regs; + struct device *dev; +}; + +static int zx2967_thermal_suspend(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct zx2967_thermal_priv *priv = platform_get_drvdata(pdev); + + if (priv && priv->pclk) + clk_disable_unprepare(priv->pclk); + + if (priv && priv->clk_gate) + clk_disable_unprepare(priv->clk_gate); + + return 0; +} + +static int zx2967_thermal_resume(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct zx2967_thermal_priv *priv = platform_get_drvdata(pdev); + int error; + + error = clk_prepare_enable(priv->clk_gate); + if (error) + return error; + + error = clk_prepare_enable(priv->pclk); + if (error) { + clk_disable_unprepare(priv->clk_gate); + return error; + } + + return 0; +} + +static int zx2967_thermal_get_temp(void *data, int *temp) +{ + void __iomem *regs; + struct zx2967_thermal_sensor *sensor = data; + struct zx2967_thermal_priv *priv = sensor->priv; + unsigned long timeout = jiffies + msecs_to_jiffies(100); + u32 val, sel_id; + + regs = priv->regs; + mutex_lock(&priv->lock); + + writel_relaxed(0, regs + ZX2967_THERMAL_POWER_MODE); + writel_relaxed(2, regs + ZX2967_THERMAL_DCF); + + val = readl_relaxed(regs + ZX2967_THERMAL_SEL); + val &= ~ZX2967_THERMAL_ID_MASK; + sel_id = sensor->id ? ZX2967_THERMAL_ID0 : ZX2967_THERMAL_ID1; + val |= sel_id; + writel_relaxed(val, regs + ZX2967_THERMAL_SEL); + + usleep_range(100, 300); + val = readl_relaxed(regs + ZX2967_THERMAL_CTRL); + while (!(val & ZX2967_THERMAL_READY)) { + if (time_after(jiffies, timeout)) { + dev_err(priv->dev, "Thermal sensor %d data timeout\n", + sensor->id); + mutex_unlock(&priv->lock); + return -ETIMEDOUT; + } + val = readl_relaxed(regs + ZX2967_THERMAL_CTRL); + } + + writel_relaxed(3, regs + ZX2967_THERMAL_DCF); + val = readl_relaxed(regs + ZX2967_THERMAL_CTRL) + & ZX2967_THERMAL_TEMP_MASK; + writel_relaxed(1, regs + ZX2967_THERMAL_POWER_MODE); + + /* + * Calculate temperature + * 922 initial value of calibration cure + * 1.951 slope of calibration cure + */ + *temp = DIV_ROUND_CLOSEST((val - 922) * 1000, 1951); + + mutex_unlock(&priv->lock); + + return 0; +} + +static struct thermal_zone_of_device_ops zx2967_of_thermal_ops = { + .get_temp = zx2967_thermal_get_temp, +}; + +static int zx2967_thermal_probe(struct platform_device *pdev) +{ + struct zx2967_thermal_priv *priv; + struct resource *res; + int ret, i; + + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + priv->regs = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->regs)) + return PTR_ERR(priv->regs); + + priv->clk_gate = devm_clk_get(&pdev->dev, "gate"); + if (IS_ERR(priv->clk_gate)) { + ret = PTR_ERR(priv->clk_gate); + dev_err(&pdev->dev, "failed to get clock gate: %d\n", ret); + return ret; + } + + ret = clk_prepare_enable(priv->clk_gate); + if (ret) { + dev_err(&pdev->dev, "failed to enable converter clock: %d\n", + ret); + return ret; + } + + priv->pclk = devm_clk_get(&pdev->dev, "pclk"); + if (IS_ERR(priv->pclk)) { + ret = PTR_ERR(priv->pclk); + dev_err(&pdev->dev, "failed to get apb clock: %d\n", ret); + return ret; + } + + ret = clk_prepare_enable(priv->pclk); + if (ret) { + clk_disable_unprepare(priv->clk_gate); + dev_err(&pdev->dev, "failed to enable converter clock: %d\n", + ret); + return ret; + } + + mutex_init(&priv->lock); + for (i = 0; i < NUM_SENSORS; i++) { + struct zx2967_thermal_sensor *sensor = &priv->sensors[i]; + + sensor->priv = priv; + sensor->id = i; + sensor->tzd = thermal_zone_of_sensor_register(&pdev->dev, + i, sensor, &zx2967_of_thermal_ops); + if (IS_ERR(sensor->tzd)) { + ret = PTR_ERR(sensor->tzd); + dev_err(&pdev->dev, "failed to register sensor %d: %d\n", + i, ret); + goto remove_ts; + } + } + priv->dev = &pdev->dev; + platform_set_drvdata(pdev, priv); + + return 0; + +remove_ts: + clk_disable_unprepare(priv->clk_gate); + clk_disable_unprepare(priv->pclk); + for (i--; i >= 0; i--) + thermal_zone_of_sensor_unregister(&pdev->dev, + priv->sensors[i].tzd); + + return ret; +} + +static int zx2967_thermal_exit(struct platform_device *pdev) +{ + struct zx2967_thermal_priv *priv = platform_get_drvdata(pdev); + int i; + + for (i = 0; i < NUM_SENSORS; i++) { + struct zx2967_thermal_sensor *sensor = &priv->sensors[i]; + + thermal_zone_of_sensor_unregister(&pdev->dev, sensor->tzd); + } + clk_disable_unprepare(priv->pclk); + clk_disable_unprepare(priv->clk_gate); + + return 0; +} + +static const struct of_device_id zx2967_thermal_id_table[] = { + { .compatible = "zte,zx296718-thermal" }, + {} +}; +MODULE_DEVICE_TABLE(of, zx2967_thermal_id_table); + +static SIMPLE_DEV_PM_OPS(zx2967_thermal_pm_ops, + zx2967_thermal_suspend, zx2967_thermal_resume); + +static struct platform_driver zx2967_thermal_driver = { + .probe = zx2967_thermal_probe, + .remove = zx2967_thermal_exit, + .driver = { + .name = "zx2967_thermal", + .of_match_table = zx2967_thermal_id_table, + .pm = &zx2967_thermal_pm_ops, + }, +}; +module_platform_driver(zx2967_thermal_driver); + +MODULE_AUTHOR("Baoyou Xie <baoyou.xie@linaro.org>"); +MODULE_DESCRIPTION("ZTE zx2967 thermal driver"); +MODULE_LICENSE("GPL"); -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family 2017-01-13 10:46 ` [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family Baoyou Xie @ 2017-01-16 6:59 ` Shawn Guo 2017-01-17 5:23 ` Eduardo Valentin 1 sibling, 0 replies; 7+ messages in thread From: Shawn Guo @ 2017-01-16 6:59 UTC (permalink / raw) To: linux-arm-kernel On Fri, Jan 13, 2017 at 06:46:58PM +0800, Baoyou Xie wrote: > This patch adds thermal driver for ZTE's zx2967 family. > > Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org> Reviewed-by: Shawn Guo <shawnguo@kernel.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family 2017-01-13 10:46 ` [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family Baoyou Xie 2017-01-16 6:59 ` Shawn Guo @ 2017-01-17 5:23 ` Eduardo Valentin 1 sibling, 0 replies; 7+ messages in thread From: Eduardo Valentin @ 2017-01-17 5:23 UTC (permalink / raw) To: linux-arm-kernel Hello, On Fri, Jan 13, 2017 at 06:46:58PM +0800, Baoyou Xie wrote: > This patch adds thermal driver for ZTE's zx2967 family. Please consider the comments I sent on your v3. They still apply here. and also the following: > > Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org> <cut> > +static int zx2967_thermal_get_temp(void *data, int *temp) > +{ > + void __iomem *regs; > + struct zx2967_thermal_sensor *sensor = data; > + struct zx2967_thermal_priv *priv = sensor->priv; > + unsigned long timeout = jiffies + msecs_to_jiffies(100); > + u32 val, sel_id; > + > + regs = priv->regs; > + mutex_lock(&priv->lock); > + > + writel_relaxed(0, regs + ZX2967_THERMAL_POWER_MODE); > + writel_relaxed(2, regs + ZX2967_THERMAL_DCF); > + > + val = readl_relaxed(regs + ZX2967_THERMAL_SEL); > + val &= ~ZX2967_THERMAL_ID_MASK; > + sel_id = sensor->id ? ZX2967_THERMAL_ID0 : ZX2967_THERMAL_ID1; > + val |= sel_id; > + writel_relaxed(val, regs + ZX2967_THERMAL_SEL); > + > + usleep_range(100, 300); > + val = readl_relaxed(regs + ZX2967_THERMAL_CTRL); > + while (!(val & ZX2967_THERMAL_READY)) { > + if (time_after(jiffies, timeout)) { > + dev_err(priv->dev, "Thermal sensor %d data timeout\n", > + sensor->id); > + mutex_unlock(&priv->lock); > + return -ETIMEDOUT; > + } > + val = readl_relaxed(regs + ZX2967_THERMAL_CTRL); should you usleep_range() in between loops iterations? > + } > + > + writel_relaxed(3, regs + ZX2967_THERMAL_DCF); > + val = readl_relaxed(regs + ZX2967_THERMAL_CTRL) > + & ZX2967_THERMAL_TEMP_MASK; > + writel_relaxed(1, regs + ZX2967_THERMAL_POWER_MODE); > + > + /* > + * Calculate temperature > + * 922 initial value of calibration cure > + * 1.951 slope of calibration cure > + */ > + *temp = DIV_ROUND_CLOSEST((val - 922) * 1000, 1951); > + > + mutex_unlock(&priv->lock); > + > + return 0; > +} > + > +static struct thermal_zone_of_device_ops zx2967_of_thermal_ops = { > + .get_temp = zx2967_thermal_get_temp, > +}; > + > +static int zx2967_thermal_probe(struct platform_device *pdev) > +{ > + struct zx2967_thermal_priv *priv; > + struct resource *res; > + int ret, i; > + > + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + priv->regs = devm_ioremap_resource(&pdev->dev, res); > + if (IS_ERR(priv->regs)) > + return PTR_ERR(priv->regs); > + > + priv->clk_gate = devm_clk_get(&pdev->dev, "gate"); > + if (IS_ERR(priv->clk_gate)) { > + ret = PTR_ERR(priv->clk_gate); > + dev_err(&pdev->dev, "failed to get clock gate: %d\n", ret); > + return ret; > + } > + > + ret = clk_prepare_enable(priv->clk_gate); > + if (ret) { > + dev_err(&pdev->dev, "failed to enable converter clock: %d\n", > + ret); > + return ret; > + } > + > + priv->pclk = devm_clk_get(&pdev->dev, "pclk"); > + if (IS_ERR(priv->pclk)) { > + ret = PTR_ERR(priv->pclk); > + dev_err(&pdev->dev, "failed to get apb clock: %d\n", ret); > + return ret; > + } > + > + ret = clk_prepare_enable(priv->pclk); > + if (ret) { > + clk_disable_unprepare(priv->clk_gate); > + dev_err(&pdev->dev, "failed to enable converter clock: %d\n", > + ret); > + return ret; > + } > + > + mutex_init(&priv->lock); > + for (i = 0; i < NUM_SENSORS; i++) { > + struct zx2967_thermal_sensor *sensor = &priv->sensors[i]; > + > + sensor->priv = priv; > + sensor->id = i; > + sensor->tzd = thermal_zone_of_sensor_register(&pdev->dev, > + i, sensor, &zx2967_of_thermal_ops); > + if (IS_ERR(sensor->tzd)) { > + ret = PTR_ERR(sensor->tzd); > + dev_err(&pdev->dev, "failed to register sensor %d: %d\n", > + i, ret); > + goto remove_ts; > + } > + } > + priv->dev = &pdev->dev; > + platform_set_drvdata(pdev, priv); > + > + return 0; > + > +remove_ts: > + clk_disable_unprepare(priv->clk_gate); > + clk_disable_unprepare(priv->pclk); > + for (i--; i >= 0; i--) > + thermal_zone_of_sensor_unregister(&pdev->dev, > + priv->sensors[i].tzd); > + > + return ret; > +} > + > +static int zx2967_thermal_exit(struct platform_device *pdev) > +{ > + struct zx2967_thermal_priv *priv = platform_get_drvdata(pdev); > + int i; > + > + for (i = 0; i < NUM_SENSORS; i++) { > + struct zx2967_thermal_sensor *sensor = &priv->sensors[i]; > + > + thermal_zone_of_sensor_unregister(&pdev->dev, sensor->tzd); > + } > + clk_disable_unprepare(priv->pclk); > + clk_disable_unprepare(priv->clk_gate); > + > + return 0; > +} > + > +static const struct of_device_id zx2967_thermal_id_table[] = { > + { .compatible = "zte,zx296718-thermal" }, > + {} > +}; > +MODULE_DEVICE_TABLE(of, zx2967_thermal_id_table); > + > +static SIMPLE_DEV_PM_OPS(zx2967_thermal_pm_ops, > + zx2967_thermal_suspend, zx2967_thermal_resume); > + > +static struct platform_driver zx2967_thermal_driver = { > + .probe = zx2967_thermal_probe, > + .remove = zx2967_thermal_exit, > + .driver = { > + .name = "zx2967_thermal", > + .of_match_table = zx2967_thermal_id_table, > + .pm = &zx2967_thermal_pm_ops, > + }, > +}; > +module_platform_driver(zx2967_thermal_driver); > + > +MODULE_AUTHOR("Baoyou Xie <baoyou.xie@linaro.org>"); > +MODULE_DESCRIPTION("ZTE zx2967 thermal driver"); > +MODULE_LICENSE("GPL"); GPLv2? > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor 2017-01-13 10:46 [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor Baoyou Xie 2017-01-13 10:46 ` [PATCH v4 2/3] MAINTAINERS: add zx2967 thermal drivers to ARM ZTE architecture Baoyou Xie 2017-01-13 10:46 ` [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family Baoyou Xie @ 2017-01-17 5:27 ` Eduardo Valentin [not found] ` <CA+DQWkzJ5zGn53MF=nVpUQQ8=dgtqrL-eV72w4=+HMvjF1qgMw@mail.gmail.com> 2 siblings, 1 reply; 7+ messages in thread From: Eduardo Valentin @ 2017-01-17 5:27 UTC (permalink / raw) To: linux-arm-kernel Hey, On Fri, Jan 13, 2017 at 06:46:56PM +0800, Baoyou Xie wrote: > This patch adds dt-binding documentation for zx2967 family thermal sensor. > > Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org> > Acked-by: Rob Herring <robh@kernel.org> > Reviewed-by: Shawn Guo <shawnguo@kernel.org> > --- > .../devicetree/bindings/thermal/zx2967-thermal.txt | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > create mode 100644 Documentation/devicetree/bindings/thermal/zx2967-thermal.txt > > diff --git a/Documentation/devicetree/bindings/thermal/zx2967-thermal.txt b/Documentation/devicetree/bindings/thermal/zx2967-thermal.txt > new file mode 100644 > index 0000000..86f941c > --- /dev/null > +++ b/Documentation/devicetree/bindings/thermal/zx2967-thermal.txt > @@ -0,0 +1,21 @@ > +* ZTE zx2967 family Thermal > + > +Required Properties: > +- compatible: should be one of the following. > + * zte,zx296718-thermal > +- reg: physical base address of the controller and length of memory mapped > + region. > +- clocks : Pairs of phandle and specifier referencing the controller's clocks. > +- clock-names: "gate" for the topcrm clock. > + "pclk" for the apb clock. > +- #thermal-sensor-cells: must be 0. > + > +Example: > + > + tempsensor: tempsensor at 148a000 { > + compatible = "zte,zx296718-thermal"; > + reg = <0x0148a000 0x20>; > + clocks = <&topcrm TEMPSENSOR_GATE>, <&audiocrm AUDIO_TS_PCLK>; > + clock-names = "gate", "pclk"; > + #thermal-sensor-cells = <0>; > + }; Given that you are using of-thermal, would be welcome if you include an example on how to deploy a thermal zone with your tempsensor entry. > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <CA+DQWkzJ5zGn53MF=nVpUQQ8=dgtqrL-eV72w4=+HMvjF1qgMw@mail.gmail.com>]
* [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor [not found] ` <CA+DQWkzJ5zGn53MF=nVpUQQ8=dgtqrL-eV72w4=+HMvjF1qgMw@mail.gmail.com> @ 2017-01-17 6:28 ` Eduardo Valentin 0 siblings, 0 replies; 7+ messages in thread From: Eduardo Valentin @ 2017-01-17 6:28 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jan 17, 2017 at 01:38:48PM +0800, Baoyou Xie wrote: > On 17 January 2017 at 13:27, Eduardo Valentin <edubezval@gmail.com> wrote: <cut> > > It's a good idea:) In fact, we defined some thermal zones and used IPA > on products. > Cool! Any feedback on using IPA? ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-01-17 6:28 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-13 10:46 [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor Baoyou Xie
2017-01-13 10:46 ` [PATCH v4 2/3] MAINTAINERS: add zx2967 thermal drivers to ARM ZTE architecture Baoyou Xie
2017-01-13 10:46 ` [PATCH v4 3/3] thermal: zx2967: add thermal driver for ZTE's zx2967 family Baoyou Xie
2017-01-16 6:59 ` Shawn Guo
2017-01-17 5:23 ` Eduardo Valentin
2017-01-17 5:27 ` [PATCH v4 1/3] dt: bindings: add documentation for zx2967 family thermal sensor Eduardo Valentin
[not found] ` <CA+DQWkzJ5zGn53MF=nVpUQQ8=dgtqrL-eV72w4=+HMvjF1qgMw@mail.gmail.com>
2017-01-17 6:28 ` Eduardo Valentin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).