From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> To: linux-arm-kernel@lists.infradead.org Cc: Zhang Rui <rui.zhang@intel.com>, linux-pm@vger.kernel.org, Thomas Petazzoni <thomas.petazzoni@free-electrons.com>, Gregory Clement <gregory.clement@free-electrons.com>, Nobuhiro Iwamatsu <iwamatsu@nigauri.org>, Andrew Lunn <andrew@lunn.ch>, Jason Cooper <jason@lakedaemon.net>, Florian Fainelli <florian@openwrt.org>, Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>, Lior Amsalem <alior@marvell.com>, Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Subject: [PATCH 12/16] thermal: mvebu: Add support for Armada 370 thermal sensor Date: Wed, 20 Mar 2013 19:36:33 -0300 [thread overview] Message-ID: <1363818997-23137-13-git-send-email-ezequiel.garcia@free-electrons.com> (raw) In-Reply-To: <1363818997-23137-1-git-send-email-ezequiel.garcia@free-electrons.com> The Armada 370 has a register to check a valid temperature, and its own formula to obtain the temperature from the thermal sensor output register. Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> --- .../devicetree/bindings/thermal/mvebu-thermal.txt | 1 + drivers/thermal/mvebu_thermal.c | 39 ++++++++++++++++++++ 2 files changed, 40 insertions(+), 0 deletions(-) diff --git a/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt b/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt index 7cc3fd4..49d55a9 100644 --- a/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt @@ -5,6 +5,7 @@ Required properties: - compatible: Should be set to one of the following: marvell,kirkwood-thermal marvell,armadaxp-thermal + marvell,armada370-thermal - reg: Device's register space. One or two entries are expected, see the examples below. diff --git a/drivers/thermal/mvebu_thermal.c b/drivers/thermal/mvebu_thermal.c index 50f13e7..0b1e7a8 100644 --- a/drivers/thermal/mvebu_thermal.c +++ b/drivers/thermal/mvebu_thermal.c @@ -20,12 +20,14 @@ #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 MVEBU_THERMAL_SOC_VARIANT_KIRKWOOD 0x1 #define MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP 0x2 +#define MVEBU_THERMAL_SOC_VARIANT_ARMADA_370 0x3 #define MVEBU_THERMAL_VALID_OFFSET 9 #define MVEBU_THERMAL_VALID_MASK 0x1 @@ -39,6 +41,7 @@ #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) /* Marvell EBU Thermal Sensor Dev Structure */ struct mvebu_thermal_priv { @@ -82,6 +85,31 @@ static void armadaxp_init_sensor(struct mvebu_thermal_priv *priv) writel(reg, priv->sensor); } +static void armada370_init_sensor(struct mvebu_thermal_priv *priv) +{ + unsigned long reg; + + if (!priv->control) + return; + + /* ??? */ + reg = readl_relaxed(priv->control); + reg |= PMU_TDC0_OTF_CAL_MASK; + writel(reg, priv->control); + + /* Reference calibration value */ + reg &= ~PMU_TDC0_REF_CAL_CNT_MASK; + reg |= (0xf1 << PMU_TDC0_REF_CAL_CNT_OFFS); + writel(reg, priv->control); + + /* ??? */ + reg &= ~PMU_TDC0_START_CAL_MASK; + writel(reg, priv->control); + + /* FIXME: Why do we need this delay? */ + mdelay(10); +} + static bool mvebu_is_valid(struct mvebu_thermal_priv *priv) { unsigned long reg = readl_relaxed(priv->sensor); @@ -113,6 +141,9 @@ static int mvebu_get_temp(struct thermal_zone_device *thermal, case MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP: *temp = (3153000000UL - (10000000UL*reg)) / 13825; break; + case MVEBU_THERMAL_SOC_VARIANT_ARMADA_370: + *temp = (228000UL - 723*reg); + break; default: *temp = 0; break; @@ -134,6 +165,10 @@ static const struct of_device_id mvebu_thermal_id_table[] = { .data = (void *) MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP, }, { + .compatible = "marvell,armada370-thermal", + .data = (void *) MVEBU_THERMAL_SOC_VARIANT_ARMADA_370, + }, + { /* sentinel */ }, }; @@ -179,6 +214,10 @@ static int mvebu_thermal_probe(struct platform_device *pdev) case MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP: priv->init_sensor = armadaxp_init_sensor; break; + case MVEBU_THERMAL_SOC_VARIANT_ARMADA_370: + priv->is_valid = mvebu_is_valid; + priv->init_sensor = armada370_init_sensor; + break; default: break; } -- 1.7.8.6
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 12/16] thermal: mvebu: Add support for Armada 370 thermal sensor Date: Wed, 20 Mar 2013 19:36:33 -0300 [thread overview] Message-ID: <1363818997-23137-13-git-send-email-ezequiel.garcia@free-electrons.com> (raw) In-Reply-To: <1363818997-23137-1-git-send-email-ezequiel.garcia@free-electrons.com> The Armada 370 has a register to check a valid temperature, and its own formula to obtain the temperature from the thermal sensor output register. Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> --- .../devicetree/bindings/thermal/mvebu-thermal.txt | 1 + drivers/thermal/mvebu_thermal.c | 39 ++++++++++++++++++++ 2 files changed, 40 insertions(+), 0 deletions(-) diff --git a/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt b/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt index 7cc3fd4..49d55a9 100644 --- a/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/mvebu-thermal.txt @@ -5,6 +5,7 @@ Required properties: - compatible: Should be set to one of the following: marvell,kirkwood-thermal marvell,armadaxp-thermal + marvell,armada370-thermal - reg: Device's register space. One or two entries are expected, see the examples below. diff --git a/drivers/thermal/mvebu_thermal.c b/drivers/thermal/mvebu_thermal.c index 50f13e7..0b1e7a8 100644 --- a/drivers/thermal/mvebu_thermal.c +++ b/drivers/thermal/mvebu_thermal.c @@ -20,12 +20,14 @@ #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 MVEBU_THERMAL_SOC_VARIANT_KIRKWOOD 0x1 #define MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP 0x2 +#define MVEBU_THERMAL_SOC_VARIANT_ARMADA_370 0x3 #define MVEBU_THERMAL_VALID_OFFSET 9 #define MVEBU_THERMAL_VALID_MASK 0x1 @@ -39,6 +41,7 @@ #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) /* Marvell EBU Thermal Sensor Dev Structure */ struct mvebu_thermal_priv { @@ -82,6 +85,31 @@ static void armadaxp_init_sensor(struct mvebu_thermal_priv *priv) writel(reg, priv->sensor); } +static void armada370_init_sensor(struct mvebu_thermal_priv *priv) +{ + unsigned long reg; + + if (!priv->control) + return; + + /* ??? */ + reg = readl_relaxed(priv->control); + reg |= PMU_TDC0_OTF_CAL_MASK; + writel(reg, priv->control); + + /* Reference calibration value */ + reg &= ~PMU_TDC0_REF_CAL_CNT_MASK; + reg |= (0xf1 << PMU_TDC0_REF_CAL_CNT_OFFS); + writel(reg, priv->control); + + /* ??? */ + reg &= ~PMU_TDC0_START_CAL_MASK; + writel(reg, priv->control); + + /* FIXME: Why do we need this delay? */ + mdelay(10); +} + static bool mvebu_is_valid(struct mvebu_thermal_priv *priv) { unsigned long reg = readl_relaxed(priv->sensor); @@ -113,6 +141,9 @@ static int mvebu_get_temp(struct thermal_zone_device *thermal, case MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP: *temp = (3153000000UL - (10000000UL*reg)) / 13825; break; + case MVEBU_THERMAL_SOC_VARIANT_ARMADA_370: + *temp = (228000UL - 723*reg); + break; default: *temp = 0; break; @@ -134,6 +165,10 @@ static const struct of_device_id mvebu_thermal_id_table[] = { .data = (void *) MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP, }, { + .compatible = "marvell,armada370-thermal", + .data = (void *) MVEBU_THERMAL_SOC_VARIANT_ARMADA_370, + }, + { /* sentinel */ }, }; @@ -179,6 +214,10 @@ static int mvebu_thermal_probe(struct platform_device *pdev) case MVEBU_THERMAL_SOC_VARIANT_ARMADA_XP: priv->init_sensor = armadaxp_init_sensor; break; + case MVEBU_THERMAL_SOC_VARIANT_ARMADA_370: + priv->is_valid = mvebu_is_valid; + priv->init_sensor = armada370_init_sensor; + break; default: break; } -- 1.7.8.6
next prev parent reply other threads:[~2013-03-20 22:37 UTC|newest] Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-03-20 22:36 [PATCH 00/16] Marvell EBU thermal sensor consolidation Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 01/16] thermal: Rename driver 'kirkwood' -> 'mvebu' Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 02/16] thermal: mvebu: Rename symbols " Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 03/16] thermal: mvebu: Move MODULE_DEVICE_TABLE upwards Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 04/16] thermal: mvebu: Remove unneeded variable initialization Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 05/16] thermal: mvebu: Fix valid check for thermal register Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-21 14:35 ` Jason Cooper 2013-03-21 14:35 ` Jason Cooper 2013-03-21 15:16 ` Ezequiel Garcia 2013-03-21 15:16 ` Ezequiel Garcia 2013-03-21 15:24 ` Jason Cooper 2013-03-21 15:24 ` Jason Cooper 2013-03-21 19:57 ` Ezequiel Garcia 2013-03-21 19:57 ` Ezequiel Garcia 2013-03-21 20:06 ` Jason Cooper 2013-03-21 20:06 ` Jason Cooper 2013-03-20 22:36 ` [PATCH 06/16] thermal: mvebu: Convert to devm_ioremap_resource() Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-21 6:10 ` Andrew Lunn 2013-03-21 6:10 ` Andrew Lunn 2013-03-21 9:43 ` Ezequiel Garcia 2013-03-21 9:43 ` Ezequiel Garcia 2013-03-21 10:08 ` Andrew Lunn 2013-03-21 10:08 ` Andrew Lunn 2013-03-21 14:04 ` Sergei Shtylyov 2013-03-21 14:04 ` Sergei Shtylyov 2013-03-21 15:17 ` Ezequiel Garcia 2013-03-21 15:17 ` Ezequiel Garcia 2013-03-21 19:17 ` Russell King - ARM Linux 2013-03-21 19:17 ` Russell King - ARM Linux 2013-03-21 20:21 ` Ezequiel Garcia 2013-03-21 20:21 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 07/16] thermal: mvebu: Fix license declaration Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 08/16] thermal: mvebu: Fix temperature output formula for kirkwood Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-21 14:41 ` Jason Cooper 2013-03-21 14:41 ` Jason Cooper 2013-03-21 19:20 ` Russell King - ARM Linux 2013-03-21 19:20 ` Russell King - ARM Linux 2013-03-21 20:38 ` Ezequiel Garcia 2013-03-21 20:38 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 09/16] thermal: mvebu: Rename kirkwood definitions to mvebu Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 10/16] thermal: mvebu: Add infrastructure to support more multiple SoC variants Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 11/16] thermal: mvebu: Add support for Armada XP thermal sensor Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia [this message] 2013-03-20 22:36 ` [PATCH 12/16] thermal: mvebu: Add support for Armada 370 " Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 13/16] thermal: mvebu: Add support for Marvell Dove SoC family Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-21 6:23 ` Andrew Lunn 2013-03-21 6:23 ` Andrew Lunn 2013-03-21 6:26 ` Andrew Lunn 2013-03-21 6:26 ` Andrew Lunn 2013-03-20 22:36 ` [PATCH 14/16] ARM: mvebu: Add thermal support to Armada XP device tree Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 15/16] ARM: mvebu: Add thermal support to Armada 370 " Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-21 14:03 ` Sergei Shtylyov 2013-03-21 14:03 ` Sergei Shtylyov 2013-03-21 15:18 ` Ezequiel Garcia 2013-03-21 15:18 ` Ezequiel Garcia 2013-03-20 22:36 ` [PATCH 16/16] ARM: configs: Update mvebu, dove and kirkwood defconfigs for thermal Ezequiel Garcia 2013-03-20 22:36 ` Ezequiel Garcia 2013-03-21 6:45 ` [PATCH 00/16] Marvell EBU thermal sensor consolidation Andrew Lunn 2013-03-21 6:45 ` Andrew Lunn 2013-03-21 9:42 ` Ezequiel Garcia 2013-03-21 9:42 ` Ezequiel Garcia 2013-03-21 12:35 ` Ezequiel Garcia 2013-03-21 12:35 ` Ezequiel Garcia 2013-03-21 13:36 ` Andrew Lunn 2013-03-21 13:36 ` Andrew Lunn 2013-03-21 17:32 ` Jason Gunthorpe 2013-03-21 17:32 ` Jason Gunthorpe 2013-03-22 14:23 ` Ezequiel Garcia 2013-03-22 14:23 ` Ezequiel Garcia 2013-03-21 12:26 ` Ezequiel Garcia 2013-03-21 12:26 ` Ezequiel Garcia
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=1363818997-23137-13-git-send-email-ezequiel.garcia@free-electrons.com \ --to=ezequiel.garcia@free-electrons.com \ --cc=alior@marvell.com \ --cc=andrew@lunn.ch \ --cc=florian@openwrt.org \ --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: linkBe 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.