All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
To: Zhang Rui <rui.zhang@intel.com>
Cc: linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org,
	Lior Amsalem <alior@marvell.com>,
	Nobuhiro Iwamatsu <iwamatsu@nigauri.org>,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
	Andrew Lunn <andrew@lunn.ch>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Gregory Clement <gregory.clement@free-electrons.com>,
	Jason Cooper <jason@lakedaemon.net>
Subject: Re: [PATCH v2 1/4] thermal: Add driver for Armada 370/XP SoC thermal management
Date: Thu, 28 Mar 2013 00:43:34 -0300	[thread overview]
Message-ID: <20130328034333.GB12212@localhost> (raw)
In-Reply-To: <1364435017.2275.20.camel@rzhang1-mobl4>

On Thu, Mar 28, 2013 at 09:43:37AM +0800, Zhang Rui wrote:
> On Tue, 2013-03-26 at 07:16 -0300, Ezequiel Garcia wrote:
> > This driver supports both Armada 370 and Armada XP SoC
> > thermal management controllers.
> > 
> > Armada 370 has a register to check a valid temperature, whereas
> > Armada XP does not. Each has a different initialization (i.e. calibration)
> > function. The temperature conversion formula is the same for both.
> > 
> > The controller present in each SoC have a very similar feature set,
> > so it corresponds to have one driver to support both of them.
> > 
> > Although this driver may present similarities to Dove and Kirkwood
> > thermal driver, the exact differences and coincidences are not fully
> > known. For this reason, support is given through a separate driver.
> > 
> > Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
> > ---
> > Changes from v1:
> >  * Make armada_get_temp() more readable by reading the register
> >    on a separate line, as requested by Durgadoss R.
> > 
> >  * Reorder Kconfig and Makefile entries, as requested by Andrew Lunn.
> > 
> >  .../devicetree/bindings/thermal/armada-thermal.txt |   22 ++
> >  drivers/thermal/Kconfig                            |    8 +
> >  drivers/thermal/Makefile                           |    1 +
> >  drivers/thermal/armada_thermal.c                   |  236 ++++++++++++++++++++
> >  4 files changed, 267 insertions(+), 0 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/thermal/armada-thermal.txt
> >  create mode 100644 drivers/thermal/armada_thermal.c
> > 
> > diff --git a/Documentation/devicetree/bindings/thermal/armada-thermal.txt b/Documentation/devicetree/bindings/thermal/armada-thermal.txt
> > new file mode 100644
> > index 0000000..fff93d5
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/thermal/armada-thermal.txt
> > @@ -0,0 +1,22 @@
> > +* Marvell Armada 370/XP thermal management
> > +
> > +Required properties:
> > +
> > +- compatible:	Should be set to one of the following:
> > +		marvell,armada370-thermal
> > +		marvell,armadaxp-thermal
> > +
> > +- reg:		Device's register space.
> > +		Two entries are expected, see the examples below.
> > +		The first one is required for the sensor register;
> > +		the second one is required for the control register
> > +		to be used for sensor initialization (a.k.a. calibration).
> > +
> > +Example:
> > +
> > +	thermal@d0018300 {
> > +		compatible = "marvell,armada370-thermal";
> > +                reg = <0xd0018300 0x4
> > +		       0xd0018304 0x4>;
> > +		status = "okay";
> > +	};
> > diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> > index a764f16..9eddf74 100644
> > --- a/drivers/thermal/Kconfig
> > +++ b/drivers/thermal/Kconfig
> > @@ -144,6 +144,14 @@ config DB8500_THERMAL
> >  	  created. Cooling devices can be bound to the trip points to cool this
> >  	  thermal zone if trip points reached.
> >  
> > +config ARMADA_THERMAL
> > +	tristate "Armada 370/XP thermal management"
> > +	depends on ARCH_MVEBU
> > +	depends on OF
> > +	help
> > +	  Enable this option if you want to have support for thermal management
> > +	  controller present in Armada 370 and Armada XP SoC.
> > +
> >  config DB8500_CPUFREQ_COOLING
> >  	tristate "DB8500 cpufreq cooling"
> >  	depends on ARCH_U8500
> > diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
> > index d3a2b38..7f6509a 100644
> > --- a/drivers/thermal/Makefile
> > +++ b/drivers/thermal/Makefile
> > @@ -19,6 +19,7 @@ obj-$(CONFIG_KIRKWOOD_THERMAL)  += kirkwood_thermal.o
> >  obj-$(CONFIG_EXYNOS_THERMAL)	+= exynos_thermal.o
> >  obj-$(CONFIG_DOVE_THERMAL)  	+= dove_thermal.o
> >  obj-$(CONFIG_DB8500_THERMAL)	+= db8500_thermal.o
> > +obj-$(CONFIG_ARMADA_THERMAL)	+= armada_thermal.o
> >  obj-$(CONFIG_DB8500_CPUFREQ_COOLING)	+= db8500_cpufreq_cooling.o
> >  obj-$(CONFIG_INTEL_POWERCLAMP)	+= intel_powerclamp.o
> >  
> > diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
> > new file mode 100644
> > index 0000000..6743ec2
> > --- /dev/null
> > +++ b/drivers/thermal/armada_thermal.c
> > @@ -0,0 +1,236 @@
> > +/*
> > + * Marvell Armada 370/XP thermal sensor driver
> > + *
> > + * Copyright (C) 2013 Marvell
> > + *
> > + * This software is licensed under the terms of the GNU General Public
> > + * License version 2, as published by the Free Software Foundation, and
> > + * may be copied, distributed, and modified under those terms.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > + * GNU General Public License for more details.
> > + *
> > + */
> > +#include <linux/device.h>
> > +#include <linux/err.h>
> > +#include <linux/io.h>
> > +#include <linux/kernel.h>
> > +#include <linux/of.h>
> > +#include <linux/module.h>
> > +#include <linux/delay.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/of_device.h>
> > +#include <linux/thermal.h>
> > +
> > +#define THERMAL_VALID_OFFSET		9
> > +#define THERMAL_VALID_MASK		0x1
> > +#define THERMAL_TEMP_OFFSET		10
> > +#define THERMAL_TEMP_MASK		0x1ff
> > +
> > +/* Thermal Manager Control and Status Register */
> > +#define PMU_TDC0_SW_RST_MASK		(0x1 << 1)
> > +#define PMU_TM_DISABLE_OFFS		0
> > +#define PMU_TM_DISABLE_MASK		(0x1 << PMU_TM_DISABLE_OFFS)
> > +#define PMU_TDC0_REF_CAL_CNT_OFFS	11
> > +#define PMU_TDC0_REF_CAL_CNT_MASK	(0x1ff << PMU_TDC0_REF_CAL_CNT_OFFS)
> > +#define PMU_TDC0_OTF_CAL_MASK		(0x1 << 30)
> > +#define PMU_TDC0_START_CAL_MASK		(0x1 << 25)
> > +
> > +struct armada_thermal_ops;
> > +
> > +/* Marvell EBU Thermal Sensor Dev Structure */
> > +struct armada_thermal_priv {
> > +	void __iomem *sensor;
> > +	void __iomem *control;
> > +	struct armada_thermal_ops *ops;
> > +};
> > +
> > +struct armada_thermal_ops {
> > +	/* Initialize the sensor */
> > +	void (*init_sensor)(struct armada_thermal_priv *);
> > +
> > +	/* Test for a valid sensor value (optional) */
> > +	bool (*is_valid)(struct armada_thermal_priv *);
> > +};
> > +
> > +static void armadaxp_init_sensor(struct armada_thermal_priv *priv)
> > +{
> > +	unsigned long reg;
> > +
> > +	/* ??? */
> 
> what does this comment mean?
> 

It means I'm not sure entirely sure what the below code does.
Maybe I should remove it?

> > +	reg = readl_relaxed(priv->control);
> > +	reg |= PMU_TDC0_OTF_CAL_MASK;
> > +	writel(reg, priv->control);
> > +

Thanks for the review,
-- 
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: ezequiel.garcia@free-electrons.com (Ezequiel Garcia)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/4] thermal: Add driver for Armada 370/XP SoC thermal management
Date: Thu, 28 Mar 2013 00:43:34 -0300	[thread overview]
Message-ID: <20130328034333.GB12212@localhost> (raw)
In-Reply-To: <1364435017.2275.20.camel@rzhang1-mobl4>

On Thu, Mar 28, 2013 at 09:43:37AM +0800, Zhang Rui wrote:
> On Tue, 2013-03-26 at 07:16 -0300, Ezequiel Garcia wrote:
> > This driver supports both Armada 370 and Armada XP SoC
> > thermal management controllers.
> > 
> > Armada 370 has a register to check a valid temperature, whereas
> > Armada XP does not. Each has a different initialization (i.e. calibration)
> > function. The temperature conversion formula is the same for both.
> > 
> > The controller present in each SoC have a very similar feature set,
> > so it corresponds to have one driver to support both of them.
> > 
> > Although this driver may present similarities to Dove and Kirkwood
> > thermal driver, the exact differences and coincidences are not fully
> > known. For this reason, support is given through a separate driver.
> > 
> > Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
> > ---
> > Changes from v1:
> >  * Make armada_get_temp() more readable by reading the register
> >    on a separate line, as requested by Durgadoss R.
> > 
> >  * Reorder Kconfig and Makefile entries, as requested by Andrew Lunn.
> > 
> >  .../devicetree/bindings/thermal/armada-thermal.txt |   22 ++
> >  drivers/thermal/Kconfig                            |    8 +
> >  drivers/thermal/Makefile                           |    1 +
> >  drivers/thermal/armada_thermal.c                   |  236 ++++++++++++++++++++
> >  4 files changed, 267 insertions(+), 0 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/thermal/armada-thermal.txt
> >  create mode 100644 drivers/thermal/armada_thermal.c
> > 
> > diff --git a/Documentation/devicetree/bindings/thermal/armada-thermal.txt b/Documentation/devicetree/bindings/thermal/armada-thermal.txt
> > new file mode 100644
> > index 0000000..fff93d5
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/thermal/armada-thermal.txt
> > @@ -0,0 +1,22 @@
> > +* Marvell Armada 370/XP thermal management
> > +
> > +Required properties:
> > +
> > +- compatible:	Should be set to one of the following:
> > +		marvell,armada370-thermal
> > +		marvell,armadaxp-thermal
> > +
> > +- reg:		Device's register space.
> > +		Two entries are expected, see the examples below.
> > +		The first one is required for the sensor register;
> > +		the second one is required for the control register
> > +		to be used for sensor initialization (a.k.a. calibration).
> > +
> > +Example:
> > +
> > +	thermal at d0018300 {
> > +		compatible = "marvell,armada370-thermal";
> > +                reg = <0xd0018300 0x4
> > +		       0xd0018304 0x4>;
> > +		status = "okay";
> > +	};
> > diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> > index a764f16..9eddf74 100644
> > --- a/drivers/thermal/Kconfig
> > +++ b/drivers/thermal/Kconfig
> > @@ -144,6 +144,14 @@ config DB8500_THERMAL
> >  	  created. Cooling devices can be bound to the trip points to cool this
> >  	  thermal zone if trip points reached.
> >  
> > +config ARMADA_THERMAL
> > +	tristate "Armada 370/XP thermal management"
> > +	depends on ARCH_MVEBU
> > +	depends on OF
> > +	help
> > +	  Enable this option if you want to have support for thermal management
> > +	  controller present in Armada 370 and Armada XP SoC.
> > +
> >  config DB8500_CPUFREQ_COOLING
> >  	tristate "DB8500 cpufreq cooling"
> >  	depends on ARCH_U8500
> > diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
> > index d3a2b38..7f6509a 100644
> > --- a/drivers/thermal/Makefile
> > +++ b/drivers/thermal/Makefile
> > @@ -19,6 +19,7 @@ obj-$(CONFIG_KIRKWOOD_THERMAL)  += kirkwood_thermal.o
> >  obj-$(CONFIG_EXYNOS_THERMAL)	+= exynos_thermal.o
> >  obj-$(CONFIG_DOVE_THERMAL)  	+= dove_thermal.o
> >  obj-$(CONFIG_DB8500_THERMAL)	+= db8500_thermal.o
> > +obj-$(CONFIG_ARMADA_THERMAL)	+= armada_thermal.o
> >  obj-$(CONFIG_DB8500_CPUFREQ_COOLING)	+= db8500_cpufreq_cooling.o
> >  obj-$(CONFIG_INTEL_POWERCLAMP)	+= intel_powerclamp.o
> >  
> > diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
> > new file mode 100644
> > index 0000000..6743ec2
> > --- /dev/null
> > +++ b/drivers/thermal/armada_thermal.c
> > @@ -0,0 +1,236 @@
> > +/*
> > + * Marvell Armada 370/XP thermal sensor driver
> > + *
> > + * Copyright (C) 2013 Marvell
> > + *
> > + * This software is licensed under the terms of the GNU General Public
> > + * License version 2, as published by the Free Software Foundation, and
> > + * may be copied, distributed, and modified under those terms.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > + * GNU General Public License for more details.
> > + *
> > + */
> > +#include <linux/device.h>
> > +#include <linux/err.h>
> > +#include <linux/io.h>
> > +#include <linux/kernel.h>
> > +#include <linux/of.h>
> > +#include <linux/module.h>
> > +#include <linux/delay.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/of_device.h>
> > +#include <linux/thermal.h>
> > +
> > +#define THERMAL_VALID_OFFSET		9
> > +#define THERMAL_VALID_MASK		0x1
> > +#define THERMAL_TEMP_OFFSET		10
> > +#define THERMAL_TEMP_MASK		0x1ff
> > +
> > +/* Thermal Manager Control and Status Register */
> > +#define PMU_TDC0_SW_RST_MASK		(0x1 << 1)
> > +#define PMU_TM_DISABLE_OFFS		0
> > +#define PMU_TM_DISABLE_MASK		(0x1 << PMU_TM_DISABLE_OFFS)
> > +#define PMU_TDC0_REF_CAL_CNT_OFFS	11
> > +#define PMU_TDC0_REF_CAL_CNT_MASK	(0x1ff << PMU_TDC0_REF_CAL_CNT_OFFS)
> > +#define PMU_TDC0_OTF_CAL_MASK		(0x1 << 30)
> > +#define PMU_TDC0_START_CAL_MASK		(0x1 << 25)
> > +
> > +struct armada_thermal_ops;
> > +
> > +/* Marvell EBU Thermal Sensor Dev Structure */
> > +struct armada_thermal_priv {
> > +	void __iomem *sensor;
> > +	void __iomem *control;
> > +	struct armada_thermal_ops *ops;
> > +};
> > +
> > +struct armada_thermal_ops {
> > +	/* Initialize the sensor */
> > +	void (*init_sensor)(struct armada_thermal_priv *);
> > +
> > +	/* Test for a valid sensor value (optional) */
> > +	bool (*is_valid)(struct armada_thermal_priv *);
> > +};
> > +
> > +static void armadaxp_init_sensor(struct armada_thermal_priv *priv)
> > +{
> > +	unsigned long reg;
> > +
> > +	/* ??? */
> 
> what does this comment mean?
> 

It means I'm not sure entirely sure what the below code does.
Maybe I should remove it?

> > +	reg = readl_relaxed(priv->control);
> > +	reg |= PMU_TDC0_OTF_CAL_MASK;
> > +	writel(reg, priv->control);
> > +

Thanks for the review,
-- 
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com

  reply	other threads:[~2013-03-28  3:43 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-26 10:16 [PATCH for 3.10 v2 0/4] thermal: Add Armada 370/XP support Ezequiel Garcia
2013-03-26 10:16 ` Ezequiel Garcia
2013-03-26 10:16 ` [PATCH v2 1/4] thermal: Add driver for Armada 370/XP SoC thermal management Ezequiel Garcia
2013-03-26 10:16   ` Ezequiel Garcia
2013-03-28  1:43   ` Zhang Rui
2013-03-28  1:43     ` Zhang Rui
2013-03-28  3:43     ` Ezequiel Garcia [this message]
2013-03-28  3:43       ` Ezequiel Garcia
2013-04-02  1:37     ` Ezequiel Garcia
2013-04-02  1:37       ` Ezequiel Garcia
2013-04-02 13:05       ` Zhang Rui
2013-04-02 13:05         ` Zhang Rui
2013-04-02 23:23         ` Ezequiel Garcia
2013-04-02 23:23           ` Ezequiel Garcia
2013-04-08  8:26         ` Ezequiel Garcia
2013-04-08  8:26           ` Ezequiel Garcia
2013-03-26 10:16 ` [PATCH v2 2/4] ARM: mvebu: Add thermal support to Armada XP device tree Ezequiel Garcia
2013-03-26 10:16   ` Ezequiel Garcia
2013-03-26 10:16 ` [PATCH v2 3/4] ARM: mvebu: Add thermal support to Armada 370 " Ezequiel Garcia
2013-03-26 10:16   ` Ezequiel Garcia
2013-03-26 10:16 ` [PATCH v2 4/4] ARM: configs: Update mvebu defconfig for thermal Ezequiel Garcia
2013-03-26 10:16   ` Ezequiel Garcia
2013-03-26 16:46 ` [PATCH for 3.10 v2 0/4] thermal: Add Armada 370/XP support Andrew Lunn
2013-03-26 16:46   ` Andrew Lunn
2013-03-31  0:47 ` Jason Cooper
2013-03-31  0:47   ` Jason Cooper

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130328034333.GB12212@localhost \
    --to=ezequiel.garcia@free-electrons.com \
    --cc=alior@marvell.com \
    --cc=andrew@lunn.ch \
    --cc=gregory.clement@free-electrons.com \
    --cc=iwamatsu@nigauri.org \
    --cc=jason@lakedaemon.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rui.zhang@intel.com \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=thomas.petazzoni@free-electrons.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.