[{"id":1775872,"web_url":"http://patchwork.ozlabs.org/comment/1775872/","msgid":"<4cb98266-6936-7668-fc88-199ac907b437@broadcom.com>","list_archive_url":null,"date":"2017-09-26T21:32:47","subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":68377,"url":"http://patchwork.ozlabs.org/api/people/68377/","name":"Scott Branden","email":"scott.branden@broadcom.com"},"content":"Hi Markus,\n\n\nOn 17-09-26 02:27 PM, Markus Mayer wrote:\n> From: Brian Norris <computersforpeace@gmail.com>\n>\n> The AVS TMON core provides temperature readings, a pair of configurable\n> high- and low-temperature threshold interrupts, and an emergency\n> over-temperature chip reset. The driver utilizes the first two to\n> provide temperature readings and high-temperature notifications to\n> applications. The over-temperature reset is not exposed to\n> applications; this reset threshold is critical to the system and should\n> be set with care within the bootloader.\n>\n> Applications may choose to utilize the notification mechanism, the\n> temperature reading mechanism (e.g., through polling), or both.\n>\n> Signed-off-by: Brian Norris <computersforpeace@gmail.com>\n> Signed-off-by: Doug Berger <opendmb@gmail.com>\n> Signed-off-by: Markus Mayer <mmayer@broadcom.com>\n> ---\n>   drivers/thermal/Kconfig                    |   2 +-\n>   drivers/thermal/broadcom/Kconfig           |   7 +\n>   drivers/thermal/broadcom/Makefile          |   1 +\n>   drivers/thermal/broadcom/brcmstb_thermal.c | 387 +++++++++++++++++++++++++++++\n>   4 files changed, 396 insertions(+), 1 deletion(-)\n>   create mode 100644 drivers/thermal/broadcom/brcmstb_thermal.c\n>\n> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig\n> index 07002df..96774a7 100644\n> --- a/drivers/thermal/Kconfig\n> +++ b/drivers/thermal/Kconfig\n> @@ -408,7 +408,7 @@ config MTK_THERMAL\n>   \t  controller present in Mediatek SoCs\n>   \n>   menu \"Broadcom thermal drivers\"\n> -depends on ARCH_BCM || COMPILE_TEST\n> +depends on ARCH_BCM || ARCH_BRCMSTB || COMPILE_TEST\nNo need for this additional depends.  ARCH_BCM is always defined before \nARCH_BRCMSTB can be selected.\n>   source \"drivers/thermal/broadcom/Kconfig\"\n>   endmenu\n>   \n> diff --git a/drivers/thermal/broadcom/Kconfig b/drivers/thermal/broadcom/Kconfig\n> index 42c098e..c106a15 100644\n> --- a/drivers/thermal/broadcom/Kconfig\n> +++ b/drivers/thermal/broadcom/Kconfig\n> @@ -6,6 +6,13 @@ config BCM2835_THERMAL\n>   \thelp\n>   \t  Support for thermal sensors on Broadcom bcm2835 SoCs.\n>   \n> +config BRCMSTB_THERMAL\n> +\ttristate \"Broadcom STB AVS TMON thermal driver\"\n> +\tdepends on ARCH_BRCMSTB || COMPILE_TEST\n> +\thelp\n> +\t  Enable this driver if you have a Broadcom STB SoC and would like\n> +\t  thermal framework support.\n> +\n>   config BCM_NS_THERMAL\n>   \ttristate \"Northstar thermal driver\"\n>   \tdepends on ARCH_BCM_IPROC || COMPILE_TEST\n> diff --git a/drivers/thermal/broadcom/Makefile b/drivers/thermal/broadcom/Makefile\n> index c6f62e4..fae10ec 100644\n> --- a/drivers/thermal/broadcom/Makefile\n> +++ b/drivers/thermal/broadcom/Makefile\n> @@ -1,2 +1,3 @@\n>   obj-$(CONFIG_BCM2835_THERMAL)\t\t+= bcm2835_thermal.o\n> +obj-$(CONFIG_BRCMSTB_THERMAL)\t\t+= brcmstb_thermal.o\n>   obj-$(CONFIG_BCM_NS_THERMAL)\t\t+= ns-thermal.o\n> diff --git a/drivers/thermal/broadcom/brcmstb_thermal.c b/drivers/thermal/broadcom/brcmstb_thermal.c\n> new file mode 100644\n> index 0000000..1919f91\n> --- /dev/null\n> +++ b/drivers/thermal/broadcom/brcmstb_thermal.c\n> @@ -0,0 +1,387 @@\n> +/*\n> + * Broadcom STB AVS TMON thermal sensor driver\n> + *\n> + * Copyright (c) 2015-2017 Broadcom\n> + *\n> + * This software is licensed under the terms of the GNU General Public\n> + * License version 2, as published by the Free Software Foundation, and\n> + * may be copied, distributed, and modified under those terms.\n> + *\n> + * This program is distributed in the hope that it will be useful,\n> + * but WITHOUT ANY WARRANTY; without even the implied warranty of\n> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n> + * GNU General Public License for more details.\n> + *\n> + */\n> +\n> +#define DRV_NAME\t\"brcmstb_thermal\"\n> +\n> +#define pr_fmt(fmt)\tDRV_NAME \": \" fmt\n> +\n> +#include <linux/bitops.h>\n> +#include <linux/device.h>\n> +#include <linux/err.h>\n> +#include <linux/io.h>\n> +#include <linux/irqreturn.h>\n> +#include <linux/interrupt.h>\n> +#include <linux/kernel.h>\n> +#include <linux/module.h>\n> +#include <linux/platform_device.h>\n> +#include <linux/of_device.h>\n> +#include <linux/thermal.h>\n> +\n> +#define AVS_TMON_STATUS\t\t\t0x00\n> + #define AVS_TMON_STATUS_valid_msk\tBIT(11)\n> + #define AVS_TMON_STATUS_data_msk\tGENMASK(10, 1)\n> + #define AVS_TMON_STATUS_data_shift\t1\n> +\n> +#define AVS_TMON_EN_OVERTEMP_RESET\t0x04\n> + #define AVS_TMON_EN_OVERTEMP_RESET_msk\tBIT(0)\n> +\n> +#define AVS_TMON_RESET_THRESH\t\t0x08\n> + #define AVS_TMON_RESET_THRESH_msk\tGENMASK(10, 1)\n> + #define AVS_TMON_RESET_THRESH_shift\t1\n> +\n> +#define AVS_TMON_INT_IDLE_TIME\t\t0x10\n> +\n> +#define AVS_TMON_EN_TEMP_INT_SRCS\t0x14\n> + #define AVS_TMON_EN_TEMP_INT_SRCS_high\tBIT(1)\n> + #define AVS_TMON_EN_TEMP_INT_SRCS_low\tBIT(0)\n> +\n> +#define AVS_TMON_INT_THRESH\t\t0x18\n> + #define AVS_TMON_INT_THRESH_high_msk\tGENMASK(26, 17)\n> + #define AVS_TMON_INT_THRESH_high_shift\t17\n> + #define AVS_TMON_INT_THRESH_low_msk\tGENMASK(10, 1)\n> + #define AVS_TMON_INT_THRESH_low_shift\t1\n> +\n> +#define AVS_TMON_TEMP_INT_CODE\t\t0x1c\n> +#define AVS_TMON_TP_TEST_ENABLE\t\t0x20\n> +\n> +/* Default coefficients */\n> +#define AVS_TMON_TEMP_SLOPE\t\t-487\n> +#define AVS_TMON_TEMP_OFFSET\t\t410040\n> +\n> +/* HW related temperature constants */\n> +#define AVS_TMON_TEMP_MAX\t\t0x3ff\n> +#define AVS_TMON_TEMP_MIN\t\t-88161\n> +#define AVS_TMON_TEMP_MASK\t\tAVS_TMON_TEMP_MAX\n> +\n> +enum avs_tmon_trip_type {\n> +\tTMON_TRIP_TYPE_LOW = 0,\n> +\tTMON_TRIP_TYPE_HIGH,\n> +\tTMON_TRIP_TYPE_RESET,\n> +\tTMON_TRIP_TYPE_MAX,\n> +};\n> +\n> +struct avs_tmon_trip {\n> +\t/* HW bit to enable the trip */\n> +\tu32 enable_offs;\n> +\tu32 enable_mask;\n> +\n> +\t/* HW field to read the trip temperature */\n> +\tu32 reg_offs;\n> +\tu32 reg_msk;\n> +\tint reg_shift;\n> +};\n> +\n> +static struct avs_tmon_trip avs_tmon_trips[] = {\n> +\t/* Trips when temperature is below threshold */\n> +\t[TMON_TRIP_TYPE_LOW] = {\n> +\t\t.enable_offs\t= AVS_TMON_EN_TEMP_INT_SRCS,\n> +\t\t.enable_mask\t= AVS_TMON_EN_TEMP_INT_SRCS_low,\n> +\t\t.reg_offs\t= AVS_TMON_INT_THRESH,\n> +\t\t.reg_msk\t= AVS_TMON_INT_THRESH_low_msk,\n> +\t\t.reg_shift\t= AVS_TMON_INT_THRESH_low_shift,\n> +\t},\n> +\t/* Trips when temperature is above threshold */\n> +\t[TMON_TRIP_TYPE_HIGH] = {\n> +\t\t.enable_offs\t= AVS_TMON_EN_TEMP_INT_SRCS,\n> +\t\t.enable_mask\t= AVS_TMON_EN_TEMP_INT_SRCS_high,\n> +\t\t.reg_offs\t= AVS_TMON_INT_THRESH,\n> +\t\t.reg_msk\t= AVS_TMON_INT_THRESH_high_msk,\n> +\t\t.reg_shift\t= AVS_TMON_INT_THRESH_high_shift,\n> +\t},\n> +\t/* Automatically resets chip when above threshold */\n> +\t[TMON_TRIP_TYPE_RESET] = {\n> +\t\t.enable_offs\t= AVS_TMON_EN_OVERTEMP_RESET,\n> +\t\t.enable_mask\t= AVS_TMON_EN_OVERTEMP_RESET_msk,\n> +\t\t.reg_offs\t= AVS_TMON_RESET_THRESH,\n> +\t\t.reg_msk\t= AVS_TMON_RESET_THRESH_msk,\n> +\t\t.reg_shift\t= AVS_TMON_RESET_THRESH_shift,\n> +\t},\n> +};\n> +\n> +struct brcmstb_thermal_priv {\n> +\tvoid __iomem *tmon_base;\n> +\tstruct device *dev;\n> +\tstruct thermal_zone_device *thermal;\n> +};\n> +\n> +static void avs_tmon_get_coeffs(struct thermal_zone_device *tz, int *slope,\n> +\t\t\t\tint *offset)\n> +{\n> +\t*slope = thermal_zone_get_slope(tz);\n> +\t*offset = thermal_zone_get_offset(tz);\n> +}\n> +\n> +/* Convert a HW code to a temperature reading (millidegree celsius) */\n> +static inline int avs_tmon_code_to_temp(struct thermal_zone_device *tz,\n> +\t\t\t\t\tu32 code)\n> +{\n> +\tconst int val = code & AVS_TMON_TEMP_MASK;\n> +\tint slope, offset;\n> +\n> +\tavs_tmon_get_coeffs(tz, &slope, &offset);\n> +\n> +\treturn slope * val + offset;\n> +}\n> +\n> +/*\n> + * Convert a temperature value (millidegree celsius) to a HW code\n> + *\n> + * @temp: temperature to convert\n> + * @low: if true, round toward the low side\n> + */\n> +static inline u32 avs_tmon_temp_to_code(struct thermal_zone_device *tz,\n> +\t\t\t\t\tint temp, bool low)\n> +{\n> +\tint slope, offset;\n> +\n> +\tif (temp < AVS_TMON_TEMP_MIN)\n> +\t\treturn AVS_TMON_TEMP_MAX; /* Maximum code value */\n> +\n> +\tavs_tmon_get_coeffs(tz, &slope, &offset);\n> +\n> +\tif (temp >= offset)\n> +\t\treturn 0;\t/* Minimum code value */\n> +\n> +\tif (low)\n> +\t\treturn (u32)(DIV_ROUND_UP(offset - temp, abs(slope)));\n> +\telse\n> +\t\treturn (u32)((offset - temp) / abs(slope));\n> +}\n> +\n> +static int brcmstb_get_temp(void *data, int *temp)\n> +{\n> +\tstruct brcmstb_thermal_priv *priv = data;\n> +\tu32 val;\n> +\tlong t;\n> +\n> +\tval = __raw_readl(priv->tmon_base + AVS_TMON_STATUS);\n> +\n> +\tif (!(val & AVS_TMON_STATUS_valid_msk)) {\n> +\t\tdev_err(priv->dev, \"reading not valid\\n\");\n> +\t\treturn -EIO;\n> +\t}\n> +\n> +\tval = (val & AVS_TMON_STATUS_data_msk) >> AVS_TMON_STATUS_data_shift;\n> +\n> +\tt = avs_tmon_code_to_temp(priv->thermal, val);\n> +\tif (t < 0)\n> +\t\t*temp = 0;\n> +\telse\n> +\t\t*temp = t;\n> +\n> +\treturn 0;\n> +}\n> +\n> +static void avs_tmon_trip_enable(struct brcmstb_thermal_priv *priv,\n> +\t\t\t\t enum avs_tmon_trip_type type, int en)\n> +{\n> +\tstruct avs_tmon_trip *trip = &avs_tmon_trips[type];\n> +\tu32 val = __raw_readl(priv->tmon_base + trip->enable_offs);\n> +\n> +\tdev_dbg(priv->dev, \"%sable trip, type %d\\n\", en ? \"en\" : \"dis\", type);\n> +\n> +\tif (en)\n> +\t\tval |= trip->enable_mask;\n> +\telse\n> +\t\tval &= ~trip->enable_mask;\n> +\n> +\t__raw_writel(val, priv->tmon_base + trip->enable_offs);\n> +}\n> +\n> +static int avs_tmon_get_trip_temp(struct brcmstb_thermal_priv *priv,\n> +\t\t\t\t  enum avs_tmon_trip_type type)\n> +{\n> +\tstruct avs_tmon_trip *trip = &avs_tmon_trips[type];\n> +\tu32 val = __raw_readl(priv->tmon_base + trip->reg_offs);\n> +\n> +\tval &= trip->reg_msk;\n> +\tval >>= trip->reg_shift;\n> +\n> +\treturn avs_tmon_code_to_temp(priv->thermal, val);\n> +}\n> +\n> +static void avs_tmon_set_trip_temp(struct brcmstb_thermal_priv *priv,\n> +\t\t\t\t   enum avs_tmon_trip_type type,\n> +\t\t\t\t   int temp)\n> +{\n> +\tstruct avs_tmon_trip *trip = &avs_tmon_trips[type];\n> +\tu32 val, orig;\n> +\n> +\tdev_dbg(priv->dev, \"set temp %d to %d\\n\", type, temp);\n> +\n> +\t/* round toward low temp for the low interrupt */\n> +\tval = avs_tmon_temp_to_code(priv->thermal, temp,\n> +\t\t\t\t    type == TMON_TRIP_TYPE_LOW);\n> +\n> +\tval <<= trip->reg_shift;\n> +\tval &= trip->reg_msk;\n> +\n> +\torig = __raw_readl(priv->tmon_base + trip->reg_offs);\n> +\torig &= ~trip->reg_msk;\n> +\torig |= val;\n> +\t__raw_writel(orig, priv->tmon_base + trip->reg_offs);\n> +}\n> +\n> +static int avs_tmon_get_intr_temp(struct brcmstb_thermal_priv *priv)\n> +{\n> +\tu32 val;\n> +\n> +\tval = __raw_readl(priv->tmon_base + AVS_TMON_TEMP_INT_CODE);\n> +\treturn avs_tmon_code_to_temp(priv->thermal, val);\n> +}\n> +\n> +static irqreturn_t brcmstb_tmon_irq_thread(int irq, void *data)\n> +{\n> +\tstruct brcmstb_thermal_priv *priv = data;\n> +\tint low, high, intr;\n> +\n> +\tlow = avs_tmon_get_trip_temp(priv, TMON_TRIP_TYPE_LOW);\n> +\thigh = avs_tmon_get_trip_temp(priv, TMON_TRIP_TYPE_HIGH);\n> +\tintr = avs_tmon_get_intr_temp(priv);\n> +\n> +\tdev_dbg(priv->dev, \"low/intr/high: %d/%d/%d\\n\",\n> +\t\t\tlow, intr, high);\n> +\n> +\t/* Disable high-temp until next threshold shift */\n> +\tif (intr >= high)\n> +\t\tavs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0);\n> +\t/* Disable low-temp until next threshold shift */\n> +\tif (intr <= low)\n> +\t\tavs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0);\n> +\n> +\t/*\n> +\t * Notify using the interrupt temperature, in case the temperature\n> +\t * changes before it can next be read out\n> +\t */\n> +\tthermal_zone_device_update(priv->thermal, intr);\n> +\n> +\treturn IRQ_HANDLED;\n> +}\n> +\n> +static int brcmstb_set_trips(void *data, int low, int high)\n> +{\n> +\tstruct brcmstb_thermal_priv *priv = data;\n> +\n> +\tdev_dbg(priv->dev, \"set trips %d <--> %d\\n\", low, high);\n> +\n> +\t/*\n> +\t * Disable low-temp if \"low\" is too small. As per thermal framework\n> +\t * API, we use -INT_MAX rather than INT_MIN.\n> +\t */\n> +\tif (low <= -INT_MAX) {\n> +\t\tavs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0);\n> +\t} else {\n> +\t\tavs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_LOW, low);\n> +\t\tavs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 1);\n> +\t}\n> +\n> +\t/* Disable high-temp if \"high\" is too big. */\n> +\tif (high == INT_MAX) {\n> +\t\tavs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0);\n> +\t} else {\n> +\t\tavs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_HIGH, high);\n> +\t\tavs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 1);\n> +\t}\n> +\n> +\treturn 0;\n> +}\n> +\n> +static struct thermal_zone_of_device_ops of_ops = {\n> +\t.get_temp\t= brcmstb_get_temp,\n> +\t.set_trips\t= brcmstb_set_trips,\n> +};\n> +\n> +static const struct of_device_id brcmstb_thermal_id_table[] = {\n> +\t{ .compatible = \"brcm,avs-tmon\" },\n> +\t{},\n> +};\n> +MODULE_DEVICE_TABLE(of, brcmstb_thermal_id_table);\n> +\n> +static int brcmstb_thermal_probe(struct platform_device *pdev)\n> +{\n> +\tstruct thermal_zone_device *thermal;\n> +\tstruct brcmstb_thermal_priv *priv;\n> +\tstruct resource *res;\n> +\tint irq, ret;\n> +\n> +\tpriv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);\n> +\tif (!priv)\n> +\t\treturn -ENOMEM;\n> +\n> +\tres = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n> +\tpriv->tmon_base = devm_ioremap_resource(&pdev->dev, res);\n> +\tif (IS_ERR(priv->tmon_base))\n> +\t\treturn PTR_ERR(priv->tmon_base);\n> +\n> +\tpriv->dev = &pdev->dev;\n> +\tplatform_set_drvdata(pdev, priv);\n> +\n> +\tthermal = thermal_zone_of_sensor_register(&pdev->dev, 0, priv, &of_ops);\n> +\tif (IS_ERR(thermal)) {\n> +\t\tret = PTR_ERR(thermal);\n> +\t\tdev_err(&pdev->dev, \"could not register sensor: %d\\n\", ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tpriv->thermal = thermal;\n> +\n> +\tirq = platform_get_irq(pdev, 0);\n> +\tif (irq < 0) {\n> +\t\tdev_err(&pdev->dev, \"could not get IRQ\\n\");\n> +\t\tret = irq;\n> +\t\tgoto err;\n> +\t}\n> +\tret = devm_request_threaded_irq(&pdev->dev, irq, NULL,\n> +\t\t\t\t\tbrcmstb_tmon_irq_thread, IRQF_ONESHOT,\n> +\t\t\t\t\tDRV_NAME, priv);\n> +\tif (ret < 0) {\n> +\t\tdev_err(&pdev->dev, \"could not request IRQ: %d\\n\", ret);\n> +\t\tgoto err;\n> +\t}\n> +\n> +\tdev_info(&pdev->dev, \"registered AVS TMON of-sensor driver\\n\");\n> +\n> +\treturn 0;\n> +\n> +err:\n> +\tthermal_zone_of_sensor_unregister(&pdev->dev, thermal);\n> +\treturn ret;\n> +}\n> +\n> +static int brcmstb_thermal_exit(struct platform_device *pdev)\n> +{\n> +\tstruct brcmstb_thermal_priv *priv = platform_get_drvdata(pdev);\n> +\tstruct thermal_zone_device *thermal = priv->thermal;\n> +\n> +\tif (thermal)\n> +\t\tthermal_zone_of_sensor_unregister(&pdev->dev, priv->thermal);\n> +\n> +\treturn 0;\n> +}\n> +\n> +static struct platform_driver brcmstb_thermal_driver = {\n> +\t.probe = brcmstb_thermal_probe,\n> +\t.remove = brcmstb_thermal_exit,\n> +\t.driver = {\n> +\t\t.name = DRV_NAME,\n> +\t\t.of_match_table = brcmstb_thermal_id_table,\n> +\t},\n> +};\n> +module_platform_driver(brcmstb_thermal_driver);\n> +\n> +MODULE_LICENSE(\"GPL v2\");\n> +MODULE_AUTHOR(\"Brian Norris\");\n> +MODULE_DESCRIPTION(\"Broadcom STB AVS TMON thermal driver\");","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"jfWJImo5\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=broadcom.com header.i=@broadcom.com\n\theader.b=\"Y8OHD9Sh\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y1vMT17r2z9t3x\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 27 Sep 2017 07:33:25 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwxTk-0006WZ-Gf; Tue, 26 Sep 2017 21:33:20 +0000","from mail-qk0-x233.google.com ([2607:f8b0:400d:c09::233])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwxTe-0006B4-U0 for linux-arm-kernel@lists.infradead.org;\n\tTue, 26 Sep 2017 21:33:17 +0000","by mail-qk0-x233.google.com with SMTP id j5so11505415qkd.0\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 26 Sep 2017 14:32:54 -0700 (PDT)","from [10.136.13.65] ([192.19.224.250])\n\tby smtp.gmail.com with ESMTPSA id\n\tl51sm3241140qtl.41.2017.09.26.14.32.49\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 26 Sep 2017 14:32:52 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type:\n\tContent-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive:\n\tList-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From:\n\tReferences:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner;\n\tbh=Og6BU4CTtmonp0T7SoYqMTHjCUwdCRRyzfpOh5EJlmM=;\n\tb=jfWJImo5t3NKaf0iWPPP5HdI+\n\tMlVUdBDrMVk8u0xkMNgriSavb50RSFz2kPW2OQHeDa47ygDmDTc2qjiysRq5i/ylCivvhTYufNd5m\n\tCM/55cZ6eoaLpmfbY1O7XMds8MiYj1LQLfxJh4Rb6P9vgpIRxHJFOWmWNwA5balPNZMsy3MZr7ZTk\n\tQknh7wbihdEBFeCucm4n5Tta1MdvqJSiLQAKV1JPufCZaYAOtSU1iWkHQwjMk5bxidavjv+JkMuwf\n\tUOtinpyyoTBT+gA8q1dgSBGTC9iazAFA0s414Amls7rryE8oIrPrCg6BmwUo6jtdFHot78VW/00Dd\n\tfzYsdefBw==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n\ts=google; \n\th=subject:to:references:cc:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=NpGE8GykWu7+TF5WZTxIjN2wPMTAMTY2ibqQhgu2OUg=;\n\tb=Y8OHD9Sh29+rTlsEevlgOamX1utpVdX6PT7nUr0mJdT1BUqnFLrR0wGRCgONZDvZzV\n\twQk65nWg7n4X6RdSeyP5nz5qNNyQITbBP0LEzxlDxEncYBYtbTQxwZeKpPhjXsXTXLpB\n\tOQdDHeIE68fwHucFUeTkOIPLYls4nHYKzGnn4="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:references:cc:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=NpGE8GykWu7+TF5WZTxIjN2wPMTAMTY2ibqQhgu2OUg=;\n\tb=fU0vzSUhD9i29XMGoMXPSy1Tmi0IwDUlQlQ2JZnbw9NKs8MyCLCi+t54wIyGWDphEE\n\tbfGmCYuRvA/uZHBIvn7khEOpgvvX2qBI7kjrvbJP8s919A9+dBQVcHX9ORtPQ7pQ5G0Z\n\th60Ox4+HJSPa9dU7eXczLeHB+s7zKEhNAdde1N0/Maqk5fzUUcLBeLsXW9luq5pZUpMg\n\tBETPLTNDkhEb9Yb3dfazuz7t3JigTU50hmAvZQ3r11PMJo7OrA25HLvZ+08Q2pmNX14L\n\tXLKY/H+JMaRROo7NkgI169vWOobg3fLz24IK8vkWw+r7Eob9RdiHUSeRCa8enst8bQI/\n\tl54Q==","X-Gm-Message-State":"AHPjjUgJ2jNoqzkETGGNAUNSOWUS+8BRr1/Pwicl1AGh9FEgIZ/fcmtB\n\tf+DWA4TrHmgY9c+OwwuAsvcv5A==","X-Google-Smtp-Source":"AOwi7QAvPLDCW4VHiyObFPevsH4nL3Hq48tZZ/9rExt1h1q9+THw09q3cyx2ZGAu01YUrlgWTPgytA==","X-Received":"by 10.55.207.87 with SMTP id e84mr15736522qkj.65.1506461573219; \n\tTue, 26 Sep 2017 14:32:53 -0700 (PDT)","Subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","To":"Markus Mayer <code@mmayer.net>, Zhang Rui <rui.zhang@intel.com>, Eduardo\n\tValentin <edubezval@gmail.com>, Rob Herring <robh+dt@kernel.org>, \n\tMark Rutland <mark.rutland@arm.com>, Doug Berger <opendmb@gmail.com>, \n\tBrian Norris <computersforpeace@gmail.com>, \n\tGregory Fong <gregory.0xf0@gmail.com>,\n\tFlorian Fainelli <f.fainelli@gmail.com>, =?utf-8?b?UmFmYcWCIE1pxYJl?=\n\t=?utf-8?q?cki?=  <rafal@milecki.pl>","References":"<20170926212800.4879-1-code@mmayer.net>\n\t<20170926212800.4879-3-code@mmayer.net>","From":"Scott Branden <scott.branden@broadcom.com>","Message-ID":"<4cb98266-6936-7668-fc88-199ac907b437@broadcom.com>","Date":"Tue, 26 Sep 2017 14:32:47 -0700","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.8.0","MIME-Version":"1.0","In-Reply-To":"<20170926212800.4879-3-code@mmayer.net>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170926_143315_170739_40556785 ","X-CRM114-Status":"GOOD (  31.47  )","X-Spam-Score":"-2.7 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.7 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/,\n\tlow\n\ttrust [2607:f8b0:400d:c09:0:0:0:233 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Device Tree List <devicetree@vger.kernel.org>,\n\tPower Management List <linux-pm@vger.kernel.org>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\tBroadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>,\n\tMarkus Mayer <mmayer@broadcom.com>,\n\tARM Kernel List <linux-arm-kernel@lists.infradead.org>","Content-Transfer-Encoding":"7bit","Content-Type":"text/plain; charset=\"us-ascii\"; Format=\"flowed\"","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1775887,"web_url":"http://patchwork.ozlabs.org/comment/1775887/","msgid":"<CANEuBv7pij+szVQZHZxNr4kXcCT0miTsYzG7g28zOmF9MqXKJQ@mail.gmail.com>","list_archive_url":null,"date":"2017-09-26T21:38:27","subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":70280,"url":"http://patchwork.ozlabs.org/api/people/70280/","name":"Markus Mayer","email":"code@mmayer.net"},"content":"On 26 September 2017 at 14:32, Scott Branden <scott.branden@broadcom.com> wrote:\n> Hi Markus,\n>\n>\n> On 17-09-26 02:27 PM, Markus Mayer wrote:\n>>\n>> From: Brian Norris <computersforpeace@gmail.com>\n>>\n>> The AVS TMON core provides temperature readings, a pair of configurable\n>> high- and low-temperature threshold interrupts, and an emergency\n>> over-temperature chip reset. The driver utilizes the first two to\n>> provide temperature readings and high-temperature notifications to\n>> applications. The over-temperature reset is not exposed to\n>> applications; this reset threshold is critical to the system and should\n>> be set with care within the bootloader.\n>>\n>> Applications may choose to utilize the notification mechanism, the\n>> temperature reading mechanism (e.g., through polling), or both.\n>>\n>> Signed-off-by: Brian Norris <computersforpeace@gmail.com>\n>> Signed-off-by: Doug Berger <opendmb@gmail.com>\n>> Signed-off-by: Markus Mayer <mmayer@broadcom.com>\n>> ---\n>>   drivers/thermal/Kconfig                    |   2 +-\n>>   drivers/thermal/broadcom/Kconfig           |   7 +\n>>   drivers/thermal/broadcom/Makefile          |   1 +\n>>   drivers/thermal/broadcom/brcmstb_thermal.c | 387\n>> +++++++++++++++++++++++++++++\n>>   4 files changed, 396 insertions(+), 1 deletion(-)\n>>   create mode 100644 drivers/thermal/broadcom/brcmstb_thermal.c\n>>\n>> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig\n>> index 07002df..96774a7 100644\n>> --- a/drivers/thermal/Kconfig\n>> +++ b/drivers/thermal/Kconfig\n>> @@ -408,7 +408,7 @@ config MTK_THERMAL\n>>           controller present in Mediatek SoCs\n>>     menu \"Broadcom thermal drivers\"\n>> -depends on ARCH_BCM || COMPILE_TEST\n>> +depends on ARCH_BCM || ARCH_BRCMSTB || COMPILE_TEST\n>\n> No need for this additional depends.  ARCH_BCM is always defined before\n> ARCH_BRCMSTB can be selected.\n\nARCH_BCM does not exist in arch/arm64/configs/defconfig. ARCH_BRCMSTB\ndoes. So, we do need both or the driver won't be built on ARM64.\n(After internal discussions we went with that approach rather than\ndefining ARCH_BCM on ARM64.)\n\n>>   source \"drivers/thermal/broadcom/Kconfig\"\n>>   endmenu\n>>   diff --git a/drivers/thermal/broadcom/Kconfig\n>> b/drivers/thermal/broadcom/Kconfig\n>> index 42c098e..c106a15 100644\n>> --- a/drivers/thermal/broadcom/Kconfig\n>> +++ b/drivers/thermal/broadcom/Kconfig\n>> @@ -6,6 +6,13 @@ config BCM2835_THERMAL\n>>         help\n>>           Support for thermal sensors on Broadcom bcm2835 SoCs.\n>>   +config BRCMSTB_THERMAL\n>> +       tristate \"Broadcom STB AVS TMON thermal driver\"\n>> +       depends on ARCH_BRCMSTB || COMPILE_TEST\n>> +       help\n>> +         Enable this driver if you have a Broadcom STB SoC and would like\n>> +         thermal framework support.\n>> +\n>>   config BCM_NS_THERMAL\n>>         tristate \"Northstar thermal driver\"\n>>         depends on ARCH_BCM_IPROC || COMPILE_TEST\n>> diff --git a/drivers/thermal/broadcom/Makefile\n>> b/drivers/thermal/broadcom/Makefile\n>> index c6f62e4..fae10ec 100644\n>> --- a/drivers/thermal/broadcom/Makefile\n>> +++ b/drivers/thermal/broadcom/Makefile\n>> @@ -1,2 +1,3 @@\n>>   obj-$(CONFIG_BCM2835_THERMAL)         += bcm2835_thermal.o\n>> +obj-$(CONFIG_BRCMSTB_THERMAL)          += brcmstb_thermal.o\n>>   obj-$(CONFIG_BCM_NS_THERMAL)          += ns-thermal.o\n>> diff --git a/drivers/thermal/broadcom/brcmstb_thermal.c\n>> b/drivers/thermal/broadcom/brcmstb_thermal.c\n>> new file mode 100644\n>> index 0000000..1919f91\n>> --- /dev/null\n>> +++ b/drivers/thermal/broadcom/brcmstb_thermal.c\n>> @@ -0,0 +1,387 @@\n>>\n>> +/*\n>> + * Broadcom STB AVS TMON thermal sensor driver\n>> + *\n>> + * Copyright (c) 2015-2017 Broadcom\n>> + *\n>> + * This software is licensed under the terms of the GNU General Public\n>> + * License version 2, as published by the Free Software Foundation, and\n>> + * may be copied, distributed, and modified under those terms.\n>> + *\n>> + * This program is distributed in the hope that it will be useful,\n>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of\n>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n>> + * GNU General Public License for more details.\n>> + *\n>> + */\n>> +\n>> +#define DRV_NAME       \"brcmstb_thermal\"\n>> +\n>> +#define pr_fmt(fmt)    DRV_NAME \": \" fmt\n>> +\n>> +#include <linux/bitops.h>\n>> +#include <linux/device.h>\n>> +#include <linux/err.h>\n>> +#include <linux/io.h>\n>> +#include <linux/irqreturn.h>\n>> +#include <linux/interrupt.h>\n>> +#include <linux/kernel.h>\n>> +#include <linux/module.h>\n>> +#include <linux/platform_device.h>\n>> +#include <linux/of_device.h>\n>> +#include <linux/thermal.h>\n>> +\n>> +#define AVS_TMON_STATUS                        0x00\n>> + #define AVS_TMON_STATUS_valid_msk     BIT(11)\n>> + #define AVS_TMON_STATUS_data_msk      GENMASK(10, 1)\n>> + #define AVS_TMON_STATUS_data_shift    1\n>> +\n>> +#define AVS_TMON_EN_OVERTEMP_RESET     0x04\n>> + #define AVS_TMON_EN_OVERTEMP_RESET_msk        BIT(0)\n>> +\n>> +#define AVS_TMON_RESET_THRESH          0x08\n>> + #define AVS_TMON_RESET_THRESH_msk     GENMASK(10, 1)\n>> + #define AVS_TMON_RESET_THRESH_shift   1\n>> +\n>> +#define AVS_TMON_INT_IDLE_TIME         0x10\n>> +\n>> +#define AVS_TMON_EN_TEMP_INT_SRCS      0x14\n>> + #define AVS_TMON_EN_TEMP_INT_SRCS_high        BIT(1)\n>> + #define AVS_TMON_EN_TEMP_INT_SRCS_low BIT(0)\n>> +\n>> +#define AVS_TMON_INT_THRESH            0x18\n>> + #define AVS_TMON_INT_THRESH_high_msk  GENMASK(26, 17)\n>> + #define AVS_TMON_INT_THRESH_high_shift        17\n>> + #define AVS_TMON_INT_THRESH_low_msk   GENMASK(10, 1)\n>> + #define AVS_TMON_INT_THRESH_low_shift 1\n>> +\n>> +#define AVS_TMON_TEMP_INT_CODE         0x1c\n>> +#define AVS_TMON_TP_TEST_ENABLE                0x20\n>> +\n>> +/* Default coefficients */\n>> +#define AVS_TMON_TEMP_SLOPE            -487\n>> +#define AVS_TMON_TEMP_OFFSET           410040\n>> +\n>> +/* HW related temperature constants */\n>> +#define AVS_TMON_TEMP_MAX              0x3ff\n>> +#define AVS_TMON_TEMP_MIN              -88161\n>> +#define AVS_TMON_TEMP_MASK             AVS_TMON_TEMP_MAX\n>> +\n>> +enum avs_tmon_trip_type {\n>> +       TMON_TRIP_TYPE_LOW = 0,\n>> +       TMON_TRIP_TYPE_HIGH,\n>> +       TMON_TRIP_TYPE_RESET,\n>> +       TMON_TRIP_TYPE_MAX,\n>> +};\n>> +\n>> +struct avs_tmon_trip {\n>> +       /* HW bit to enable the trip */\n>> +       u32 enable_offs;\n>> +       u32 enable_mask;\n>> +\n>> +       /* HW field to read the trip temperature */\n>> +       u32 reg_offs;\n>> +       u32 reg_msk;\n>> +       int reg_shift;\n>> +};\n>> +\n>> +static struct avs_tmon_trip avs_tmon_trips[] = {\n>> +       /* Trips when temperature is below threshold */\n>> +       [TMON_TRIP_TYPE_LOW] = {\n>> +               .enable_offs    = AVS_TMON_EN_TEMP_INT_SRCS,\n>> +               .enable_mask    = AVS_TMON_EN_TEMP_INT_SRCS_low,\n>> +               .reg_offs       = AVS_TMON_INT_THRESH,\n>> +               .reg_msk        = AVS_TMON_INT_THRESH_low_msk,\n>> +               .reg_shift      = AVS_TMON_INT_THRESH_low_shift,\n>> +       },\n>> +       /* Trips when temperature is above threshold */\n>> +       [TMON_TRIP_TYPE_HIGH] = {\n>> +               .enable_offs    = AVS_TMON_EN_TEMP_INT_SRCS,\n>> +               .enable_mask    = AVS_TMON_EN_TEMP_INT_SRCS_high,\n>> +               .reg_offs       = AVS_TMON_INT_THRESH,\n>> +               .reg_msk        = AVS_TMON_INT_THRESH_high_msk,\n>> +               .reg_shift      = AVS_TMON_INT_THRESH_high_shift,\n>> +       },\n>> +       /* Automatically resets chip when above threshold */\n>> +       [TMON_TRIP_TYPE_RESET] = {\n>> +               .enable_offs    = AVS_TMON_EN_OVERTEMP_RESET,\n>> +               .enable_mask    = AVS_TMON_EN_OVERTEMP_RESET_msk,\n>> +               .reg_offs       = AVS_TMON_RESET_THRESH,\n>> +               .reg_msk        = AVS_TMON_RESET_THRESH_msk,\n>> +               .reg_shift      = AVS_TMON_RESET_THRESH_shift,\n>> +       },\n>> +};\n>> +\n>> +struct brcmstb_thermal_priv {\n>> +       void __iomem *tmon_base;\n>> +       struct device *dev;\n>> +       struct thermal_zone_device *thermal;\n>> +};\n>> +\n>> +static void avs_tmon_get_coeffs(struct thermal_zone_device *tz, int\n>> *slope,\n>> +                               int *offset)\n>> +{\n>> +       *slope = thermal_zone_get_slope(tz);\n>> +       *offset = thermal_zone_get_offset(tz);\n>> +}\n>> +\n>> +/* Convert a HW code to a temperature reading (millidegree celsius) */\n>> +static inline int avs_tmon_code_to_temp(struct thermal_zone_device *tz,\n>> +                                       u32 code)\n>> +{\n>> +       const int val = code & AVS_TMON_TEMP_MASK;\n>> +       int slope, offset;\n>> +\n>> +       avs_tmon_get_coeffs(tz, &slope, &offset);\n>> +\n>> +       return slope * val + offset;\n>> +}\n>> +\n>> +/*\n>> + * Convert a temperature value (millidegree celsius) to a HW code\n>> + *\n>> + * @temp: temperature to convert\n>> + * @low: if true, round toward the low side\n>> + */\n>> +static inline u32 avs_tmon_temp_to_code(struct thermal_zone_device *tz,\n>> +                                       int temp, bool low)\n>> +{\n>> +       int slope, offset;\n>> +\n>> +       if (temp < AVS_TMON_TEMP_MIN)\n>> +               return AVS_TMON_TEMP_MAX; /* Maximum code value */\n>> +\n>> +       avs_tmon_get_coeffs(tz, &slope, &offset);\n>> +\n>> +       if (temp >= offset)\n>> +               return 0;       /* Minimum code value */\n>> +\n>> +       if (low)\n>> +               return (u32)(DIV_ROUND_UP(offset - temp, abs(slope)));\n>> +       else\n>> +               return (u32)((offset - temp) / abs(slope));\n>> +}\n>> +\n>> +static int brcmstb_get_temp(void *data, int *temp)\n>> +{\n>> +       struct brcmstb_thermal_priv *priv = data;\n>> +       u32 val;\n>> +       long t;\n>> +\n>> +       val = __raw_readl(priv->tmon_base + AVS_TMON_STATUS);\n>> +\n>> +       if (!(val & AVS_TMON_STATUS_valid_msk)) {\n>> +               dev_err(priv->dev, \"reading not valid\\n\");\n>> +               return -EIO;\n>> +       }\n>> +\n>> +       val = (val & AVS_TMON_STATUS_data_msk) >>\n>> AVS_TMON_STATUS_data_shift;\n>> +\n>> +       t = avs_tmon_code_to_temp(priv->thermal, val);\n>> +       if (t < 0)\n>> +               *temp = 0;\n>> +       else\n>> +               *temp = t;\n>> +\n>> +       return 0;\n>> +}\n>> +\n>> +static void avs_tmon_trip_enable(struct brcmstb_thermal_priv *priv,\n>> +                                enum avs_tmon_trip_type type, int en)\n>> +{\n>> +       struct avs_tmon_trip *trip = &avs_tmon_trips[type];\n>> +       u32 val = __raw_readl(priv->tmon_base + trip->enable_offs);\n>> +\n>> +       dev_dbg(priv->dev, \"%sable trip, type %d\\n\", en ? \"en\" : \"dis\",\n>> type);\n>> +\n>> +       if (en)\n>> +               val |= trip->enable_mask;\n>> +       else\n>> +               val &= ~trip->enable_mask;\n>> +\n>> +       __raw_writel(val, priv->tmon_base + trip->enable_offs);\n>> +}\n>> +\n>> +static int avs_tmon_get_trip_temp(struct brcmstb_thermal_priv *priv,\n>> +                                 enum avs_tmon_trip_type type)\n>> +{\n>> +       struct avs_tmon_trip *trip = &avs_tmon_trips[type];\n>> +       u32 val = __raw_readl(priv->tmon_base + trip->reg_offs);\n>> +\n>> +       val &= trip->reg_msk;\n>> +       val >>= trip->reg_shift;\n>> +\n>> +       return avs_tmon_code_to_temp(priv->thermal, val);\n>> +}\n>> +\n>> +static void avs_tmon_set_trip_temp(struct brcmstb_thermal_priv *priv,\n>> +                                  enum avs_tmon_trip_type type,\n>> +                                  int temp)\n>> +{\n>> +       struct avs_tmon_trip *trip = &avs_tmon_trips[type];\n>> +       u32 val, orig;\n>> +\n>> +       dev_dbg(priv->dev, \"set temp %d to %d\\n\", type, temp);\n>> +\n>> +       /* round toward low temp for the low interrupt */\n>> +       val = avs_tmon_temp_to_code(priv->thermal, temp,\n>> +                                   type == TMON_TRIP_TYPE_LOW);\n>> +\n>> +       val <<= trip->reg_shift;\n>> +       val &= trip->reg_msk;\n>> +\n>> +       orig = __raw_readl(priv->tmon_base + trip->reg_offs);\n>> +       orig &= ~trip->reg_msk;\n>> +       orig |= val;\n>> +       __raw_writel(orig, priv->tmon_base + trip->reg_offs);\n>> +}\n>> +\n>> +static int avs_tmon_get_intr_temp(struct brcmstb_thermal_priv *priv)\n>> +{\n>> +       u32 val;\n>> +\n>> +       val = __raw_readl(priv->tmon_base + AVS_TMON_TEMP_INT_CODE);\n>> +       return avs_tmon_code_to_temp(priv->thermal, val);\n>> +}\n>> +\n>> +static irqreturn_t brcmstb_tmon_irq_thread(int irq, void *data)\n>> +{\n>> +       struct brcmstb_thermal_priv *priv = data;\n>> +       int low, high, intr;\n>> +\n>> +       low = avs_tmon_get_trip_temp(priv, TMON_TRIP_TYPE_LOW);\n>> +       high = avs_tmon_get_trip_temp(priv, TMON_TRIP_TYPE_HIGH);\n>> +       intr = avs_tmon_get_intr_temp(priv);\n>> +\n>> +       dev_dbg(priv->dev, \"low/intr/high: %d/%d/%d\\n\",\n>> +                       low, intr, high);\n>> +\n>> +       /* Disable high-temp until next threshold shift */\n>> +       if (intr >= high)\n>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0);\n>> +       /* Disable low-temp until next threshold shift */\n>> +       if (intr <= low)\n>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0);\n>> +\n>> +       /*\n>> +        * Notify using the interrupt temperature, in case the temperature\n>> +        * changes before it can next be read out\n>> +        */\n>> +       thermal_zone_device_update(priv->thermal, intr);\n>> +\n>> +       return IRQ_HANDLED;\n>> +}\n>> +\n>> +static int brcmstb_set_trips(void *data, int low, int high)\n>> +{\n>> +       struct brcmstb_thermal_priv *priv = data;\n>> +\n>> +       dev_dbg(priv->dev, \"set trips %d <--> %d\\n\", low, high);\n>> +\n>> +       /*\n>> +        * Disable low-temp if \"low\" is too small. As per thermal\n>> framework\n>> +        * API, we use -INT_MAX rather than INT_MIN.\n>> +        */\n>> +       if (low <= -INT_MAX) {\n>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0);\n>> +       } else {\n>> +               avs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_LOW, low);\n>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 1);\n>> +       }\n>> +\n>> +       /* Disable high-temp if \"high\" is too big. */\n>> +       if (high == INT_MAX) {\n>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0);\n>> +       } else {\n>> +               avs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_HIGH, high);\n>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 1);\n>> +       }\n>> +\n>> +       return 0;\n>> +}\n>> +\n>> +static struct thermal_zone_of_device_ops of_ops = {\n>> +       .get_temp       = brcmstb_get_temp,\n>> +       .set_trips      = brcmstb_set_trips,\n>> +};\n>> +\n>> +static const struct of_device_id brcmstb_thermal_id_table[] = {\n>> +       { .compatible = \"brcm,avs-tmon\" },\n>> +       {},\n>> +};\n>> +MODULE_DEVICE_TABLE(of, brcmstb_thermal_id_table);\n>> +\n>> +static int brcmstb_thermal_probe(struct platform_device *pdev)\n>> +{\n>> +       struct thermal_zone_device *thermal;\n>> +       struct brcmstb_thermal_priv *priv;\n>> +       struct resource *res;\n>> +       int irq, ret;\n>> +\n>> +       priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);\n>> +       if (!priv)\n>> +               return -ENOMEM;\n>> +\n>> +       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n>> +       priv->tmon_base = devm_ioremap_resource(&pdev->dev, res);\n>> +       if (IS_ERR(priv->tmon_base))\n>> +               return PTR_ERR(priv->tmon_base);\n>> +\n>> +       priv->dev = &pdev->dev;\n>> +       platform_set_drvdata(pdev, priv);\n>> +\n>> +       thermal = thermal_zone_of_sensor_register(&pdev->dev, 0, priv,\n>> &of_ops);\n>> +       if (IS_ERR(thermal)) {\n>> +               ret = PTR_ERR(thermal);\n>> +               dev_err(&pdev->dev, \"could not register sensor: %d\\n\",\n>> ret);\n>> +               return ret;\n>> +       }\n>> +\n>> +       priv->thermal = thermal;\n>> +\n>> +       irq = platform_get_irq(pdev, 0);\n>> +       if (irq < 0) {\n>> +               dev_err(&pdev->dev, \"could not get IRQ\\n\");\n>> +               ret = irq;\n>> +               goto err;\n>> +       }\n>> +       ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,\n>> +                                       brcmstb_tmon_irq_thread,\n>> IRQF_ONESHOT,\n>> +                                       DRV_NAME, priv);\n>> +       if (ret < 0) {\n>> +               dev_err(&pdev->dev, \"could not request IRQ: %d\\n\", ret);\n>> +               goto err;\n>> +       }\n>> +\n>> +       dev_info(&pdev->dev, \"registered AVS TMON of-sensor driver\\n\");\n>> +\n>> +       return 0;\n>> +\n>> +err:\n>> +       thermal_zone_of_sensor_unregister(&pdev->dev, thermal);\n>> +       return ret;\n>> +}\n>> +\n>> +static int brcmstb_thermal_exit(struct platform_device *pdev)\n>> +{\n>> +       struct brcmstb_thermal_priv *priv = platform_get_drvdata(pdev);\n>> +       struct thermal_zone_device *thermal = priv->thermal;\n>> +\n>> +       if (thermal)\n>> +               thermal_zone_of_sensor_unregister(&pdev->dev,\n>> priv->thermal);\n>> +\n>> +       return 0;\n>> +}\n>> +\n>> +static struct platform_driver brcmstb_thermal_driver = {\n>> +       .probe = brcmstb_thermal_probe,\n>> +       .remove = brcmstb_thermal_exit,\n>> +       .driver = {\n>> +               .name = DRV_NAME,\n>> +               .of_match_table = brcmstb_thermal_id_table,\n>> +       },\n>> +};\n>> +module_platform_driver(brcmstb_thermal_driver);\n>> +\n>> +MODULE_LICENSE(\"GPL v2\");\n>> +MODULE_AUTHOR(\"Brian Norris\");\n>> +MODULE_DESCRIPTION(\"Broadcom STB AVS TMON thermal driver\");\n>\n>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"f3GVlMlF\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=infradead.org header.i=@infradead.org\n\theader.b=\"Yw22Som5\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=mmayer-net.20150623.gappssmtp.com\n\theader.i=@mmayer-net.20150623.gappssmtp.com header.b=\"zoHR8i4j\"; \n\tdkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y1vjn1NHMz9t3x\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 27 Sep 2017 07:49:17 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwxj6-0004ZO-PE; Tue, 26 Sep 2017 21:49:12 +0000","from casper.infradead.org ([2001:8b0:10b:1236::1])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwxj4-00044l-B7 for linux-arm-kernel@bombadil.infradead.org;\n\tTue, 26 Sep 2017 21:49:10 +0000","from mail-io0-x241.google.com ([2607:f8b0:4001:c06::241])\n\tby casper.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwxZ4-0003ys-OB for linux-arm-kernel@lists.infradead.org;\n\tTue, 26 Sep 2017 21:38:55 +0000","by mail-io0-x241.google.com with SMTP id n69so5185422ioi.3\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 26 Sep 2017 14:38:29 -0700 (PDT)","by 10.79.39.136 with HTTP; Tue, 26 Sep 2017 14:38:27 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:\n\tReferences:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=nUMonMo8SOEcOJYteizy7gFXDVdzPc3byotp6WxL8Jk=;\n\tb=f3GVlMlF18fgP6\n\txLlu1awiJWS+MxK0z+FWBLS0I7wBViNGtIMbIzComgyM2dSmz+cfG0/OXt1tpCA89pbm/51+5Hnnu\n\tlHgqWrIl6BuQDh2cItJ6eWufc7FVoa1aw3rGo4XE4XLWnEewpY28lQIEnmMr2qK6a5cjIONdgZPck\n\tBnkWGSNQDpocl5g6ViZgy1bmoskEhzBa8y7/vmpwMISitQ/W10sF42R0CNtrCkCwdxWArevaf2hLh\n\twAwFo3bMCu8esCkj3rjuwHoLj5iSyl7JJPdO9ZfwEcoHXiaCNn6wvQTgPAVyiDrON7XDGCyyhF9LO\n\tIJ3vQ8xZKXpHQbwtdYUA==;","v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209;\n\th=Content-Type:Cc:To:Subject:Message-ID:\n\tDate:From:References:In-Reply-To:Sender:MIME-Version:Reply-To:\n\tContent-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:\n\tList-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;\n\tbh=1V8O/qQrYNNtcyEDsGxt1EcgRBlfG95j1XhtnRqRyXY=;\n\tb=Yw22Som5z6EQvhjiA0Bw24XVv\n\tbWDN/FuH48x5VWgbSeKf7RlwbmFBZSAU1h5iv78ClCLPJlUAZHfFKju45OlTr2+x/USh/0pp70Uiw\n\tN0LMXCTWB3OMh/JVN3ctmTFgNLsD+MB045hbqD/onhTRJDNPimfoxe0TiEQvJca1Sgog0htYvEXfX\n\tzvWCQuWXlImeK9NkVi1ifsdieABYAL33APKkJtb2fMokGVd5M0wyvSoOUMME+bOLwwciTAGLQmcQe\n\tzaWo/GusxOF3RPPUTRCa9DjBQxOiJBZ+JuA1jVrNMvQtl0SfhZVISB+oH9cjqg8AucK5IiTv1xfAE\n\tDFCtUq9Bg==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=mmayer-net.20150623.gappssmtp.com; s=20150623;\n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=1V8O/qQrYNNtcyEDsGxt1EcgRBlfG95j1XhtnRqRyXY=;\n\tb=zoHR8i4jumNqg7Ni0hdZiNCahFjBIHeC5e62K0nE+Q9m5wQJ6pRrI73x8RC0pic5tn\n\turDxmHQ1iNphQ1n4/krMqy2g/5GbuYqHXRo2E24rjpCoXPOhhyjyoJsTBfFi+8CLnj8j\n\tgf8J1aHClLnWoIx6HLIGgjBrfpW/27duHSzXmxNltl2Qmj0qW86JeAGIKh3OgezW/qKn\n\tFhaDyGhGuzbccoGC8vkvQBlqvKYKbHDgfgP31iBiSMi4TfLTGIMeinjW8yB/kDaVVuZ0\n\tW56NpfR3VA3xczbeCOstf9B3y6i4xC/AY00utEayEZxmIbTOF3nyZ+FjcZ1Qc+gFXHk/\n\tpC+g=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=1V8O/qQrYNNtcyEDsGxt1EcgRBlfG95j1XhtnRqRyXY=;\n\tb=BMUHSAbH2PYY2hOrXjfM4yRZts1nIx/HArnREbdem09dXiYhgbIBe8A8oiydtLDhkw\n\tIq+aT8qk71wi9adJqslETrSbkFro3CnemIFpCH5EpX6vulkAIYXy2xbkXY0EM07zM8Fw\n\tOVjEpCmrzvisV8gxNTSZkyWtUHXrn6Kj49PFnNybiF5MKTdVdZVtcPOgdjHZh7dVqkwt\n\twuxrSPfWjrxEffDOlKxm1JUwvGoX5kj0TPLfL2yOELZ9/kpnExYCHAcymr5JhfRPrgGM\n\tM2uMLsInrMByHxhLPxxYgb5ZcC5yGPMVnTOEguYc4RNvYZZXUQZqGFQuCc9vrQZ9TIcR\n\t2q6w==","X-Gm-Message-State":"AHPjjUi8cJyniHwmnqzr8Z3W3DdZD/f5eRN3kgoNMPm2/xve5XgG5dL4\n\tsC6M5a6QfzKfaLKtmImuifZXcvuIEFuqU5BcEdVO/Q==","X-Google-Smtp-Source":"AOwi7QBqo8VLc4ZtoAN18a4Rl0lJQV8gfKfwbiSF1kuVnAqoZMpR2MfiaCUzr/hQSVHNKZs2YVLzszfPyUE/S0ilSI0=","X-Received":"by 10.107.19.100 with SMTP id b97mr17205328ioj.19.1506461908377; \n\tTue, 26 Sep 2017 14:38:28 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<4cb98266-6936-7668-fc88-199ac907b437@broadcom.com>","References":"<20170926212800.4879-1-code@mmayer.net>\n\t<20170926212800.4879-3-code@mmayer.net>\n\t<4cb98266-6936-7668-fc88-199ac907b437@broadcom.com>","From":"Markus Mayer <code@mmayer.net>","Date":"Tue, 26 Sep 2017 14:38:27 -0700","X-Google-Sender-Auth":"TWomOQZGOZ4P-ECGtM5ls9LzQEo","Message-ID":"<CANEuBv7pij+szVQZHZxNr4kXcCT0miTsYzG7g28zOmF9MqXKJQ@mail.gmail.com>","Subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","To":"Scott Branden <scott.branden@broadcom.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170926_223851_130246_D715A329 ","X-CRM114-Status":"GOOD (  34.41  )","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on casper.infradead.org summary:\n\tContent analysis details:   (-1.9 points, 5.0 required)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:4001:c06:0:0:0:241 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, Device Tree List\n\t<devicetree@vger.kernel.org>, Doug Berger <opendmb@gmail.com>,\n\tMarkus Mayer <mmayer@broadcom.com>, Power Management List\n\t<linux-pm@vger.kernel.org>, Linux Kernel Mailing List\n\t<linux-kernel@vger.kernel.org>, Eduardo Valentin <edubezval@gmail.com>,\n\tRob Herring <robh+dt@kernel.org>, Broadcom Kernel List\n\t<bcm-kernel-feedback-list@broadcom.com>, Gregory Fong\n\t<gregory.0xf0@gmail.com>, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?=\n\t<rafal@milecki.pl>, Florian Fainelli <f.fainelli@gmail.com>,\n\tZhang Rui <rui.zhang@intel.com>, Brian Norris\n\t<computersforpeace@gmail.com>, ARM Kernel List\n\t<linux-arm-kernel@lists.infradead.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1775912,"web_url":"http://patchwork.ozlabs.org/comment/1775912/","msgid":"<9bdd9959-da47-9adb-e550-31bf06254310@broadcom.com>","list_archive_url":null,"date":"2017-09-26T22:08:28","subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":68377,"url":"http://patchwork.ozlabs.org/api/people/68377/","name":"Scott Branden","email":"scott.branden@broadcom.com"},"content":"On 17-09-26 02:38 PM, Markus Mayer wrote:\n> On 26 September 2017 at 14:32, Scott Branden <scott.branden@broadcom.com> wrote:\n>> Hi Markus,\n>>\n>>\n>> On 17-09-26 02:27 PM, Markus Mayer wrote:\n>>> From: Brian Norris <computersforpeace@gmail.com>\n>>>\n>>> The AVS TMON core provides temperature readings, a pair of configurable\n>>> high- and low-temperature threshold interrupts, and an emergency\n>>> over-temperature chip reset. The driver utilizes the first two to\n>>> provide temperature readings and high-temperature notifications to\n>>> applications. The over-temperature reset is not exposed to\n>>> applications; this reset threshold is critical to the system and should\n>>> be set with care within the bootloader.\n>>>\n>>> Applications may choose to utilize the notification mechanism, the\n>>> temperature reading mechanism (e.g., through polling), or both.\n>>>\n>>> Signed-off-by: Brian Norris <computersforpeace@gmail.com>\n>>> Signed-off-by: Doug Berger <opendmb@gmail.com>\n>>> Signed-off-by: Markus Mayer <mmayer@broadcom.com>\n>>> ---\n>>>    drivers/thermal/Kconfig                    |   2 +-\n>>>    drivers/thermal/broadcom/Kconfig           |   7 +\n>>>    drivers/thermal/broadcom/Makefile          |   1 +\n>>>    drivers/thermal/broadcom/brcmstb_thermal.c | 387\n>>> +++++++++++++++++++++++++++++\n>>>    4 files changed, 396 insertions(+), 1 deletion(-)\n>>>    create mode 100644 drivers/thermal/broadcom/brcmstb_thermal.c\n>>>\n>>> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig\n>>> index 07002df..96774a7 100644\n>>> --- a/drivers/thermal/Kconfig\n>>> +++ b/drivers/thermal/Kconfig\n>>> @@ -408,7 +408,7 @@ config MTK_THERMAL\n>>>            controller present in Mediatek SoCs\n>>>      menu \"Broadcom thermal drivers\"\n>>> -depends on ARCH_BCM || COMPILE_TEST\n>>> +depends on ARCH_BCM || ARCH_BRCMSTB || COMPILE_TEST\n>> No need for this additional depends.  ARCH_BCM is always defined before\n>> ARCH_BRCMSTB can be selected.\n> ARCH_BCM does not exist in arch/arm64/configs/defconfig. ARCH_BRCMSTB\n> does. So, we do need both or the driver won't be built on ARM64.\n> (After internal discussions we went with that approach rather than\n> defining ARCH_BCM on ARM64.)\nGot it.  Looking at our internal iproc tree I see we've done exactly the \nsame with ARCH_BCM_IPROC needing to be added.  We haven't upstreamed\nthe thermal driver needing it yet.\n\nPerhaps we should add ARCH_BCM to ARM64....\n\n>\n>>>    source \"drivers/thermal/broadcom/Kconfig\"\n>>>    endmenu\n>>>    diff --git a/drivers/thermal/broadcom/Kconfig\n>>> b/drivers/thermal/broadcom/Kconfig\n>>> index 42c098e..c106a15 100644\n>>> --- a/drivers/thermal/broadcom/Kconfig\n>>> +++ b/drivers/thermal/broadcom/Kconfig\n>>> @@ -6,6 +6,13 @@ config BCM2835_THERMAL\n>>>          help\n>>>            Support for thermal sensors on Broadcom bcm2835 SoCs.\n>>>    +config BRCMSTB_THERMAL\n>>> +       tristate \"Broadcom STB AVS TMON thermal driver\"\n>>> +       depends on ARCH_BRCMSTB || COMPILE_TEST\n>>> +       help\n>>> +         Enable this driver if you have a Broadcom STB SoC and would like\n>>> +         thermal framework support.\n>>> +\n>>>    config BCM_NS_THERMAL\n>>>          tristate \"Northstar thermal driver\"\n>>>          depends on ARCH_BCM_IPROC || COMPILE_TEST\n>>> diff --git a/drivers/thermal/broadcom/Makefile\n>>> b/drivers/thermal/broadcom/Makefile\n>>> index c6f62e4..fae10ec 100644\n>>> --- a/drivers/thermal/broadcom/Makefile\n>>> +++ b/drivers/thermal/broadcom/Makefile\n>>> @@ -1,2 +1,3 @@\n>>>    obj-$(CONFIG_BCM2835_THERMAL)         += bcm2835_thermal.o\n>>> +obj-$(CONFIG_BRCMSTB_THERMAL)          += brcmstb_thermal.o\n>>>    obj-$(CONFIG_BCM_NS_THERMAL)          += ns-thermal.o\n>>> diff --git a/drivers/thermal/broadcom/brcmstb_thermal.c\n>>> b/drivers/thermal/broadcom/brcmstb_thermal.c\n>>> new file mode 100644\n>>> index 0000000..1919f91\n>>> --- /dev/null\n>>> +++ b/drivers/thermal/broadcom/brcmstb_thermal.c\n>>> @@ -0,0 +1,387 @@\n>>>\n>>> +/*\n>>> + * Broadcom STB AVS TMON thermal sensor driver\n>>> + *\n>>> + * Copyright (c) 2015-2017 Broadcom\n>>> + *\n>>> + * This software is licensed under the terms of the GNU General Public\n>>> + * License version 2, as published by the Free Software Foundation, and\n>>> + * may be copied, distributed, and modified under those terms.\n>>> + *\n>>> + * This program is distributed in the hope that it will be useful,\n>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of\n>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n>>> + * GNU General Public License for more details.\n>>> + *\n>>> + */\n>>> +\n>>> +#define DRV_NAME       \"brcmstb_thermal\"\n>>> +\n>>> +#define pr_fmt(fmt)    DRV_NAME \": \" fmt\n>>> +\n>>> +#include <linux/bitops.h>\n>>> +#include <linux/device.h>\n>>> +#include <linux/err.h>\n>>> +#include <linux/io.h>\n>>> +#include <linux/irqreturn.h>\n>>> +#include <linux/interrupt.h>\n>>> +#include <linux/kernel.h>\n>>> +#include <linux/module.h>\n>>> +#include <linux/platform_device.h>\n>>> +#include <linux/of_device.h>\n>>> +#include <linux/thermal.h>\n>>> +\n>>> +#define AVS_TMON_STATUS                        0x00\n>>> + #define AVS_TMON_STATUS_valid_msk     BIT(11)\n>>> + #define AVS_TMON_STATUS_data_msk      GENMASK(10, 1)\n>>> + #define AVS_TMON_STATUS_data_shift    1\n>>> +\n>>> +#define AVS_TMON_EN_OVERTEMP_RESET     0x04\n>>> + #define AVS_TMON_EN_OVERTEMP_RESET_msk        BIT(0)\n>>> +\n>>> +#define AVS_TMON_RESET_THRESH          0x08\n>>> + #define AVS_TMON_RESET_THRESH_msk     GENMASK(10, 1)\n>>> + #define AVS_TMON_RESET_THRESH_shift   1\n>>> +\n>>> +#define AVS_TMON_INT_IDLE_TIME         0x10\n>>> +\n>>> +#define AVS_TMON_EN_TEMP_INT_SRCS      0x14\n>>> + #define AVS_TMON_EN_TEMP_INT_SRCS_high        BIT(1)\n>>> + #define AVS_TMON_EN_TEMP_INT_SRCS_low BIT(0)\n>>> +\n>>> +#define AVS_TMON_INT_THRESH            0x18\n>>> + #define AVS_TMON_INT_THRESH_high_msk  GENMASK(26, 17)\n>>> + #define AVS_TMON_INT_THRESH_high_shift        17\n>>> + #define AVS_TMON_INT_THRESH_low_msk   GENMASK(10, 1)\n>>> + #define AVS_TMON_INT_THRESH_low_shift 1\n>>> +\n>>> +#define AVS_TMON_TEMP_INT_CODE         0x1c\n>>> +#define AVS_TMON_TP_TEST_ENABLE                0x20\n>>> +\n>>> +/* Default coefficients */\n>>> +#define AVS_TMON_TEMP_SLOPE            -487\n>>> +#define AVS_TMON_TEMP_OFFSET           410040\n>>> +\n>>> +/* HW related temperature constants */\n>>> +#define AVS_TMON_TEMP_MAX              0x3ff\n>>> +#define AVS_TMON_TEMP_MIN              -88161\n>>> +#define AVS_TMON_TEMP_MASK             AVS_TMON_TEMP_MAX\n>>> +\n>>> +enum avs_tmon_trip_type {\n>>> +       TMON_TRIP_TYPE_LOW = 0,\n>>> +       TMON_TRIP_TYPE_HIGH,\n>>> +       TMON_TRIP_TYPE_RESET,\n>>> +       TMON_TRIP_TYPE_MAX,\n>>> +};\n>>> +\n>>> +struct avs_tmon_trip {\n>>> +       /* HW bit to enable the trip */\n>>> +       u32 enable_offs;\n>>> +       u32 enable_mask;\n>>> +\n>>> +       /* HW field to read the trip temperature */\n>>> +       u32 reg_offs;\n>>> +       u32 reg_msk;\n>>> +       int reg_shift;\n>>> +};\n>>> +\n>>> +static struct avs_tmon_trip avs_tmon_trips[] = {\n>>> +       /* Trips when temperature is below threshold */\n>>> +       [TMON_TRIP_TYPE_LOW] = {\n>>> +               .enable_offs    = AVS_TMON_EN_TEMP_INT_SRCS,\n>>> +               .enable_mask    = AVS_TMON_EN_TEMP_INT_SRCS_low,\n>>> +               .reg_offs       = AVS_TMON_INT_THRESH,\n>>> +               .reg_msk        = AVS_TMON_INT_THRESH_low_msk,\n>>> +               .reg_shift      = AVS_TMON_INT_THRESH_low_shift,\n>>> +       },\n>>> +       /* Trips when temperature is above threshold */\n>>> +       [TMON_TRIP_TYPE_HIGH] = {\n>>> +               .enable_offs    = AVS_TMON_EN_TEMP_INT_SRCS,\n>>> +               .enable_mask    = AVS_TMON_EN_TEMP_INT_SRCS_high,\n>>> +               .reg_offs       = AVS_TMON_INT_THRESH,\n>>> +               .reg_msk        = AVS_TMON_INT_THRESH_high_msk,\n>>> +               .reg_shift      = AVS_TMON_INT_THRESH_high_shift,\n>>> +       },\n>>> +       /* Automatically resets chip when above threshold */\n>>> +       [TMON_TRIP_TYPE_RESET] = {\n>>> +               .enable_offs    = AVS_TMON_EN_OVERTEMP_RESET,\n>>> +               .enable_mask    = AVS_TMON_EN_OVERTEMP_RESET_msk,\n>>> +               .reg_offs       = AVS_TMON_RESET_THRESH,\n>>> +               .reg_msk        = AVS_TMON_RESET_THRESH_msk,\n>>> +               .reg_shift      = AVS_TMON_RESET_THRESH_shift,\n>>> +       },\n>>> +};\n>>> +\n>>> +struct brcmstb_thermal_priv {\n>>> +       void __iomem *tmon_base;\n>>> +       struct device *dev;\n>>> +       struct thermal_zone_device *thermal;\n>>> +};\n>>> +\n>>> +static void avs_tmon_get_coeffs(struct thermal_zone_device *tz, int\n>>> *slope,\n>>> +                               int *offset)\n>>> +{\n>>> +       *slope = thermal_zone_get_slope(tz);\n>>> +       *offset = thermal_zone_get_offset(tz);\n>>> +}\n>>> +\n>>> +/* Convert a HW code to a temperature reading (millidegree celsius) */\n>>> +static inline int avs_tmon_code_to_temp(struct thermal_zone_device *tz,\n>>> +                                       u32 code)\n>>> +{\n>>> +       const int val = code & AVS_TMON_TEMP_MASK;\n>>> +       int slope, offset;\n>>> +\n>>> +       avs_tmon_get_coeffs(tz, &slope, &offset);\n>>> +\n>>> +       return slope * val + offset;\n>>> +}\n>>> +\n>>> +/*\n>>> + * Convert a temperature value (millidegree celsius) to a HW code\n>>> + *\n>>> + * @temp: temperature to convert\n>>> + * @low: if true, round toward the low side\n>>> + */\n>>> +static inline u32 avs_tmon_temp_to_code(struct thermal_zone_device *tz,\n>>> +                                       int temp, bool low)\n>>> +{\n>>> +       int slope, offset;\n>>> +\n>>> +       if (temp < AVS_TMON_TEMP_MIN)\n>>> +               return AVS_TMON_TEMP_MAX; /* Maximum code value */\n>>> +\n>>> +       avs_tmon_get_coeffs(tz, &slope, &offset);\n>>> +\n>>> +       if (temp >= offset)\n>>> +               return 0;       /* Minimum code value */\n>>> +\n>>> +       if (low)\n>>> +               return (u32)(DIV_ROUND_UP(offset - temp, abs(slope)));\n>>> +       else\n>>> +               return (u32)((offset - temp) / abs(slope));\n>>> +}\n>>> +\n>>> +static int brcmstb_get_temp(void *data, int *temp)\n>>> +{\n>>> +       struct brcmstb_thermal_priv *priv = data;\n>>> +       u32 val;\n>>> +       long t;\n>>> +\n>>> +       val = __raw_readl(priv->tmon_base + AVS_TMON_STATUS);\n>>> +\n>>> +       if (!(val & AVS_TMON_STATUS_valid_msk)) {\n>>> +               dev_err(priv->dev, \"reading not valid\\n\");\n>>> +               return -EIO;\n>>> +       }\n>>> +\n>>> +       val = (val & AVS_TMON_STATUS_data_msk) >>\n>>> AVS_TMON_STATUS_data_shift;\n>>> +\n>>> +       t = avs_tmon_code_to_temp(priv->thermal, val);\n>>> +       if (t < 0)\n>>> +               *temp = 0;\n>>> +       else\n>>> +               *temp = t;\n>>> +\n>>> +       return 0;\n>>> +}\n>>> +\n>>> +static void avs_tmon_trip_enable(struct brcmstb_thermal_priv *priv,\n>>> +                                enum avs_tmon_trip_type type, int en)\n>>> +{\n>>> +       struct avs_tmon_trip *trip = &avs_tmon_trips[type];\n>>> +       u32 val = __raw_readl(priv->tmon_base + trip->enable_offs);\n>>> +\n>>> +       dev_dbg(priv->dev, \"%sable trip, type %d\\n\", en ? \"en\" : \"dis\",\n>>> type);\n>>> +\n>>> +       if (en)\n>>> +               val |= trip->enable_mask;\n>>> +       else\n>>> +               val &= ~trip->enable_mask;\n>>> +\n>>> +       __raw_writel(val, priv->tmon_base + trip->enable_offs);\n>>> +}\n>>> +\n>>> +static int avs_tmon_get_trip_temp(struct brcmstb_thermal_priv *priv,\n>>> +                                 enum avs_tmon_trip_type type)\n>>> +{\n>>> +       struct avs_tmon_trip *trip = &avs_tmon_trips[type];\n>>> +       u32 val = __raw_readl(priv->tmon_base + trip->reg_offs);\n>>> +\n>>> +       val &= trip->reg_msk;\n>>> +       val >>= trip->reg_shift;\n>>> +\n>>> +       return avs_tmon_code_to_temp(priv->thermal, val);\n>>> +}\n>>> +\n>>> +static void avs_tmon_set_trip_temp(struct brcmstb_thermal_priv *priv,\n>>> +                                  enum avs_tmon_trip_type type,\n>>> +                                  int temp)\n>>> +{\n>>> +       struct avs_tmon_trip *trip = &avs_tmon_trips[type];\n>>> +       u32 val, orig;\n>>> +\n>>> +       dev_dbg(priv->dev, \"set temp %d to %d\\n\", type, temp);\n>>> +\n>>> +       /* round toward low temp for the low interrupt */\n>>> +       val = avs_tmon_temp_to_code(priv->thermal, temp,\n>>> +                                   type == TMON_TRIP_TYPE_LOW);\n>>> +\n>>> +       val <<= trip->reg_shift;\n>>> +       val &= trip->reg_msk;\n>>> +\n>>> +       orig = __raw_readl(priv->tmon_base + trip->reg_offs);\n>>> +       orig &= ~trip->reg_msk;\n>>> +       orig |= val;\n>>> +       __raw_writel(orig, priv->tmon_base + trip->reg_offs);\n>>> +}\n>>> +\n>>> +static int avs_tmon_get_intr_temp(struct brcmstb_thermal_priv *priv)\n>>> +{\n>>> +       u32 val;\n>>> +\n>>> +       val = __raw_readl(priv->tmon_base + AVS_TMON_TEMP_INT_CODE);\n>>> +       return avs_tmon_code_to_temp(priv->thermal, val);\n>>> +}\n>>> +\n>>> +static irqreturn_t brcmstb_tmon_irq_thread(int irq, void *data)\n>>> +{\n>>> +       struct brcmstb_thermal_priv *priv = data;\n>>> +       int low, high, intr;\n>>> +\n>>> +       low = avs_tmon_get_trip_temp(priv, TMON_TRIP_TYPE_LOW);\n>>> +       high = avs_tmon_get_trip_temp(priv, TMON_TRIP_TYPE_HIGH);\n>>> +       intr = avs_tmon_get_intr_temp(priv);\n>>> +\n>>> +       dev_dbg(priv->dev, \"low/intr/high: %d/%d/%d\\n\",\n>>> +                       low, intr, high);\n>>> +\n>>> +       /* Disable high-temp until next threshold shift */\n>>> +       if (intr >= high)\n>>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0);\n>>> +       /* Disable low-temp until next threshold shift */\n>>> +       if (intr <= low)\n>>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0);\n>>> +\n>>> +       /*\n>>> +        * Notify using the interrupt temperature, in case the temperature\n>>> +        * changes before it can next be read out\n>>> +        */\n>>> +       thermal_zone_device_update(priv->thermal, intr);\n>>> +\n>>> +       return IRQ_HANDLED;\n>>> +}\n>>> +\n>>> +static int brcmstb_set_trips(void *data, int low, int high)\n>>> +{\n>>> +       struct brcmstb_thermal_priv *priv = data;\n>>> +\n>>> +       dev_dbg(priv->dev, \"set trips %d <--> %d\\n\", low, high);\n>>> +\n>>> +       /*\n>>> +        * Disable low-temp if \"low\" is too small. As per thermal\n>>> framework\n>>> +        * API, we use -INT_MAX rather than INT_MIN.\n>>> +        */\n>>> +       if (low <= -INT_MAX) {\n>>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0);\n>>> +       } else {\n>>> +               avs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_LOW, low);\n>>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 1);\n>>> +       }\n>>> +\n>>> +       /* Disable high-temp if \"high\" is too big. */\n>>> +       if (high == INT_MAX) {\n>>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0);\n>>> +       } else {\n>>> +               avs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_HIGH, high);\n>>> +               avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 1);\n>>> +       }\n>>> +\n>>> +       return 0;\n>>> +}\n>>> +\n>>> +static struct thermal_zone_of_device_ops of_ops = {\n>>> +       .get_temp       = brcmstb_get_temp,\n>>> +       .set_trips      = brcmstb_set_trips,\n>>> +};\n>>> +\n>>> +static const struct of_device_id brcmstb_thermal_id_table[] = {\n>>> +       { .compatible = \"brcm,avs-tmon\" },\n>>> +       {},\n>>> +};\n>>> +MODULE_DEVICE_TABLE(of, brcmstb_thermal_id_table);\n>>> +\n>>> +static int brcmstb_thermal_probe(struct platform_device *pdev)\n>>> +{\n>>> +       struct thermal_zone_device *thermal;\n>>> +       struct brcmstb_thermal_priv *priv;\n>>> +       struct resource *res;\n>>> +       int irq, ret;\n>>> +\n>>> +       priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);\n>>> +       if (!priv)\n>>> +               return -ENOMEM;\n>>> +\n>>> +       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n>>> +       priv->tmon_base = devm_ioremap_resource(&pdev->dev, res);\n>>> +       if (IS_ERR(priv->tmon_base))\n>>> +               return PTR_ERR(priv->tmon_base);\n>>> +\n>>> +       priv->dev = &pdev->dev;\n>>> +       platform_set_drvdata(pdev, priv);\n>>> +\n>>> +       thermal = thermal_zone_of_sensor_register(&pdev->dev, 0, priv,\n>>> &of_ops);\n>>> +       if (IS_ERR(thermal)) {\n>>> +               ret = PTR_ERR(thermal);\n>>> +               dev_err(&pdev->dev, \"could not register sensor: %d\\n\",\n>>> ret);\n>>> +               return ret;\n>>> +       }\n>>> +\n>>> +       priv->thermal = thermal;\n>>> +\n>>> +       irq = platform_get_irq(pdev, 0);\n>>> +       if (irq < 0) {\n>>> +               dev_err(&pdev->dev, \"could not get IRQ\\n\");\n>>> +               ret = irq;\n>>> +               goto err;\n>>> +       }\n>>> +       ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,\n>>> +                                       brcmstb_tmon_irq_thread,\n>>> IRQF_ONESHOT,\n>>> +                                       DRV_NAME, priv);\n>>> +       if (ret < 0) {\n>>> +               dev_err(&pdev->dev, \"could not request IRQ: %d\\n\", ret);\n>>> +               goto err;\n>>> +       }\n>>> +\n>>> +       dev_info(&pdev->dev, \"registered AVS TMON of-sensor driver\\n\");\n>>> +\n>>> +       return 0;\n>>> +\n>>> +err:\n>>> +       thermal_zone_of_sensor_unregister(&pdev->dev, thermal);\n>>> +       return ret;\n>>> +}\n>>> +\n>>> +static int brcmstb_thermal_exit(struct platform_device *pdev)\n>>> +{\n>>> +       struct brcmstb_thermal_priv *priv = platform_get_drvdata(pdev);\n>>> +       struct thermal_zone_device *thermal = priv->thermal;\n>>> +\n>>> +       if (thermal)\n>>> +               thermal_zone_of_sensor_unregister(&pdev->dev,\n>>> priv->thermal);\n>>> +\n>>> +       return 0;\n>>> +}\n>>> +\n>>> +static struct platform_driver brcmstb_thermal_driver = {\n>>> +       .probe = brcmstb_thermal_probe,\n>>> +       .remove = brcmstb_thermal_exit,\n>>> +       .driver = {\n>>> +               .name = DRV_NAME,\n>>> +               .of_match_table = brcmstb_thermal_id_table,\n>>> +       },\n>>> +};\n>>> +module_platform_driver(brcmstb_thermal_driver);\n>>> +\n>>> +MODULE_LICENSE(\"GPL v2\");\n>>> +MODULE_AUTHOR(\"Brian Norris\");\n>>> +MODULE_DESCRIPTION(\"Broadcom STB AVS TMON thermal driver\");\n>>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"pyVjK2x7\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=broadcom.com header.i=@broadcom.com\n\theader.b=\"eCGT4acj\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y1w8g4n4lz9t4X\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 27 Sep 2017 08:09:07 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwy2I-0006z2-J4; Tue, 26 Sep 2017 22:09:02 +0000","from mail-qt0-x22c.google.com ([2607:f8b0:400d:c0d::22c])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwy2C-0006eS-FA for linux-arm-kernel@lists.infradead.org;\n\tTue, 26 Sep 2017 22:09:00 +0000","by mail-qt0-x22c.google.com with SMTP id s18so11906365qta.3\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 26 Sep 2017 15:08:34 -0700 (PDT)","from [10.136.13.65] ([192.19.224.250])\n\tby smtp.gmail.com with ESMTPSA id\n\tw46sm7526840qta.84.2017.09.26.15.08.30\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 26 Sep 2017 15:08:32 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type:\n\tContent-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive:\n\tList-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From:\n\tReferences:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner;\n\tbh=s08+WJshS8gZo4AykRuMeiYBykYdf2fYxr1Xtv9CiKw=;\n\tb=pyVjK2x7qDTRSvNO2BHJju0KF\n\twsgGBUN6TW2/AHX0FlXwwGec+E/zkAuMkLZvfileIHTwXzmbCAXJbiXhyV+bZZb9zx23SAnBE0UuT\n\tT2t6kDnTWureTPQ4c2+i828rBhU0F+rGho5pLn4yZpJr+UIHmAf7uHZIqxSNI1oKSij/2bG+LC09D\n\taJxqc2lzly4zZyj/XZPx5go7l+ibQkpptGxMPAYYuciEsespYFiTIUOIUKPfhS7n0IK3FLppNJKVW\n\tKoKiu4nBrTJhVn1bnyez+gSCcQ0LHTnzrWq0NhRO5CowQK4D1NgP6XXMNbdwPTN5HCJ770aiTgG9x\n\tlsZzC7LDA==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n\ts=google; \n\th=subject:to:references:cc:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=pOGSkiXNUAD+AYNN2D/uBHiF9YSVUO9InMyPSuUld4w=;\n\tb=eCGT4acja8K/D/rjts9rz/GlHpT7K5N/tC5eLC/OBHX3mygdN+MN9fI1/j39sR/2zT\n\tzdGg488G49Xdz2irO0zZBcq+Afod6m77tJiCbcCQn7kVNBid7UyconHBXv1bJwlUxs59\n\tklDfquiE038CeixDYHO1Wi4IA+iI4ddEIzxbY="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:references:cc:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=pOGSkiXNUAD+AYNN2D/uBHiF9YSVUO9InMyPSuUld4w=;\n\tb=YP7kq0FnNo2w9lEv2fQg6u5h3uzpDy/VQWcFdpukFRbWLM8zDbbdvj3LN3ETvJogO0\n\teRSYC8Lv6N09aqLaTl5mCIZPcSGhvQlHhM7Do/7lCVpQfBqMOuZ8AIDh/GmCelgl0oa0\n\tGebXA3drWmb3q4xQyfrsz52ldJLse1uVayiPdV0nogLM3gW65kAh5Q8OpSAKIsMVAMSi\n\tNXwuqlv/tRBM0/wL4RwHnrf4HQXrjTXuM2lQErH52P4z+wjHGMPgOP+0Cdi5Mq89NldZ\n\tKxlC2QaqT4K+Go8KB3FN35WRSQqgzUQJ6BgbCrM1+nkgpZ4DWs4SNhJ3PUEFwGvBbmKQ\n\tXQ0w==","X-Gm-Message-State":"AHPjjUg07d/2EjtUWo+ehRSGTTpx85X2zIB+vhX9zxWUgwr4sKJ2UqlF\n\t6ADoDstWlzIf1pXBz127+evhTg==","X-Google-Smtp-Source":"AOwi7QBaPeHJPBHk6cp7rv0DeJ3jGc85egoNPj4I8AeoUYjWNulqQs9Yqs/1gAXIAY8kjbM1TCLanA==","X-Received":"by 10.200.53.129 with SMTP id k1mr17168080qtb.243.1506463713789; \n\tTue, 26 Sep 2017 15:08:33 -0700 (PDT)","Subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","To":"Markus Mayer <code@mmayer.net>","References":"<20170926212800.4879-1-code@mmayer.net>\n\t<20170926212800.4879-3-code@mmayer.net>\n\t<4cb98266-6936-7668-fc88-199ac907b437@broadcom.com>\n\t<CANEuBv7pij+szVQZHZxNr4kXcCT0miTsYzG7g28zOmF9MqXKJQ@mail.gmail.com>","From":"Scott Branden <scott.branden@broadcom.com>","Message-ID":"<9bdd9959-da47-9adb-e550-31bf06254310@broadcom.com>","Date":"Tue, 26 Sep 2017 15:08:28 -0700","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.8.0","MIME-Version":"1.0","In-Reply-To":"<CANEuBv7pij+szVQZHZxNr4kXcCT0miTsYzG7g28zOmF9MqXKJQ@mail.gmail.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170926_150856_706633_06A06330 ","X-CRM114-Status":"GOOD (  25.07  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400d:c0d:0:0:0:22c listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, Device Tree List\n\t<devicetree@vger.kernel.org>, Doug Berger <opendmb@gmail.com>,\n\tMarkus Mayer <mmayer@broadcom.com>, Power Management List\n\t<linux-pm@vger.kernel.org>, Linux Kernel Mailing List\n\t<linux-kernel@vger.kernel.org>, Eduardo Valentin <edubezval@gmail.com>,\n\tRob Herring <robh+dt@kernel.org>, Broadcom Kernel List\n\t<bcm-kernel-feedback-list@broadcom.com>, Gregory Fong\n\t<gregory.0xf0@gmail.com>, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?=\n\t<rafal@milecki.pl>, Florian Fainelli <f.fainelli@gmail.com>,\n\tZhang Rui <rui.zhang@intel.com>, Brian Norris\n\t<computersforpeace@gmail.com>, ARM Kernel List\n\t<linux-arm-kernel@lists.infradead.org>","Content-Transfer-Encoding":"7bit","Content-Type":"text/plain; charset=\"us-ascii\"; Format=\"flowed\"","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1775915,"web_url":"http://patchwork.ozlabs.org/comment/1775915/","msgid":"<9587b134-9727-d7cb-7a46-6df5ee4a0494@gmail.com>","list_archive_url":null,"date":"2017-09-26T22:14:25","subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":2800,"url":"http://patchwork.ozlabs.org/api/people/2800/","name":"Florian Fainelli","email":"f.fainelli@gmail.com"},"content":"On 09/26/2017 03:08 PM, Scott Branden wrote:\n> \n> \n> On 17-09-26 02:38 PM, Markus Mayer wrote:\n>> On 26 September 2017 at 14:32, Scott Branden\n>> <scott.branden@broadcom.com> wrote:\n>>> Hi Markus,\n>>>\n>>>\n>>> On 17-09-26 02:27 PM, Markus Mayer wrote:\n>>>> From: Brian Norris <computersforpeace@gmail.com>\n>>>>\n>>>> The AVS TMON core provides temperature readings, a pair of configurable\n>>>> high- and low-temperature threshold interrupts, and an emergency\n>>>> over-temperature chip reset. The driver utilizes the first two to\n>>>> provide temperature readings and high-temperature notifications to\n>>>> applications. The over-temperature reset is not exposed to\n>>>> applications; this reset threshold is critical to the system and should\n>>>> be set with care within the bootloader.\n>>>>\n>>>> Applications may choose to utilize the notification mechanism, the\n>>>> temperature reading mechanism (e.g., through polling), or both.\n>>>>\n>>>> Signed-off-by: Brian Norris <computersforpeace@gmail.com>\n>>>> Signed-off-by: Doug Berger <opendmb@gmail.com>\n>>>> Signed-off-by: Markus Mayer <mmayer@broadcom.com>\n>>>> ---\n>>>>    drivers/thermal/Kconfig                    |   2 +-\n>>>>    drivers/thermal/broadcom/Kconfig           |   7 +\n>>>>    drivers/thermal/broadcom/Makefile          |   1 +\n>>>>    drivers/thermal/broadcom/brcmstb_thermal.c | 387\n>>>> +++++++++++++++++++++++++++++\n>>>>    4 files changed, 396 insertions(+), 1 deletion(-)\n>>>>    create mode 100644 drivers/thermal/broadcom/brcmstb_thermal.c\n>>>>\n>>>> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig\n>>>> index 07002df..96774a7 100644\n>>>> --- a/drivers/thermal/Kconfig\n>>>> +++ b/drivers/thermal/Kconfig\n>>>> @@ -408,7 +408,7 @@ config MTK_THERMAL\n>>>>            controller present in Mediatek SoCs\n>>>>      menu \"Broadcom thermal drivers\"\n>>>> -depends on ARCH_BCM || COMPILE_TEST\n>>>> +depends on ARCH_BCM || ARCH_BRCMSTB || COMPILE_TEST\n>>> No need for this additional depends.  ARCH_BCM is always defined before\n>>> ARCH_BRCMSTB can be selected.\n>> ARCH_BCM does not exist in arch/arm64/configs/defconfig. ARCH_BRCMSTB\n>> does. So, we do need both or the driver won't be built on ARM64.\n>> (After internal discussions we went with that approach rather than\n>> defining ARCH_BCM on ARM64.)\n> Got it.  Looking at our internal iproc tree I see we've done exactly the\n> same with ARCH_BCM_IPROC needing to be added.  We haven't upstreamed\n> the thermal driver needing it yet.\n> \n> Perhaps we should add ARCH_BCM to ARM64....\n\nIf it is just added to satisfy dependencies, I don't see much value in\ndoing that. It does make sense in the ARM v7 multiplatform context, but\noutside of that, not so sur.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"bboRDqgk\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"lFn04eSA\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y1wHY3rZmz9t4X\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 27 Sep 2017 08:15:05 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwy84-00033b-Q2; Tue, 26 Sep 2017 22:15:00 +0000","from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwy80-0002iM-Jn for linux-arm-kernel@lists.infradead.org;\n\tTue, 26 Sep 2017 22:14:58 +0000","by mail-qk0-x242.google.com with SMTP id d70so7697511qkc.1\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 26 Sep 2017 15:14:35 -0700 (PDT)","from [10.112.156.244] ([192.19.255.250])\n\tby smtp.googlemail.com with ESMTPSA id\n\tn85sm7235227qke.53.2017.09.26.15.14.27\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 26 Sep 2017 15:14:33 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:\n\tMessage-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description\n\t:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=Gz/pMTwa49qF5c+Rb7IJ297RoCAobYqCA8CmxKYYqn4=;\n\tb=bboRDqgkjD8rYS\n\tckL/Evy9xlWx7JF7MlNp541X1t4NXmuTYsfQZhnpK8dW39tFoNd56HPxON+NaHGUGUuxRSBi/pWv4\n\tcpRwP1Tuu5wEqzQ4eSFUjRznIficc6GbA7ilUfyXl1lf4cmGiP8zI/dZGa74iZoN4uzzYaxs4Jdil\n\ttPrl02UfOVJeERv0pPxAOEAGQe3ZEkc55ey0n9KtbQabXTow0M9rE2JmeYqzc5VkHaT/lH//FflRc\n\ty1J3YZbD20BOYGNUMHJU7OsEChxgvWztbV0JP0Jc/EkOkvzlNlL624cq10FDTusFVOuEUzbG3cfmm\n\t1ravR/EWlYg8iycwJa2Q==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=ooFyMy9aXfD6jFtHs2cHJnRxIlXPeVUDwYqniPIa2lQ=;\n\tb=lFn04eSAOL7Hn4V1AaAsJnYWfIHFJItd9JMjoQXGwZbndHw9FMnyUko3c8Z4eAuFOb\n\tnxjaKX6rqxTPQaySK5wzD7httlqw7yBSBE1/hcvkb0KCf31MBJtZYf3IbLKF6A9PajSr\n\tj/tX6bstRHjxvhGqKWRgN37MLvBJvmlBA/rTntbR5Z7nS8hd1x08Ks3Ty66TE3lLlO1+\n\tDBWg3hHRG+opMFjSb5lKvQKToVjyhFGbxTGDo0rk1OjhCGPGgUqSV3DOsOk9dhmAfzz/\n\tv4S3ekpDxLt2tNDjMWcfbOkWfu/Dxo0a8O7Y+oT8a96KCDAlRPBgJRyo2QsBOi+nQagH\n\toJBg=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=ooFyMy9aXfD6jFtHs2cHJnRxIlXPeVUDwYqniPIa2lQ=;\n\tb=LAUfN6Y/bC1ULlLI97J6xHFKniWa0w/Zk28TBDEpKHFaHmyjV6w4Bpl5gapAIQGKkl\n\tZCVkUaMDkstCdbtO5NkmCFz6fERnltU1tOjHbGm2sQzMngBT+4im14as/A7zWbaUuOsG\n\tXE/6QWmpPl8xVGhjVzpFpbEArA3QyoYxjfZrKO4O/eAOVHKlMPBathLvmPHrnJWtg512\n\trXfCkjY7r9O1xPVEFXjclgCgEK/OE6lA7r2im9ffDOX6nxhhGTc2HEtk8fApYTi9LnSV\n\ti/qFC9LzygBGcovFDxsiGUFGH0l+NTiP30+aUoc89Zn1OmFgwP/nbZsX9zQYzrbv9BDa\n\tI/zg==","X-Gm-Message-State":"AHPjjUjnLPdttfv9o2FXsM5PRnjhzTi4+gFmhfkiyOBYR6VdML/Vp2Gf\n\tttPD7wSVuCiSt1YB84IvMtQ=","X-Google-Smtp-Source":"AOwi7QDLul1xRjPqYdOmrvD5jQlLs6dZj/Bfh09IxavKnYzXhmKbquD5WTcTV8+Gf5LJkctK0uD4ng==","X-Received":"by 10.55.154.2 with SMTP id c2mr17361335qke.4.1506464074611;\n\tTue, 26 Sep 2017 15:14:34 -0700 (PDT)","Subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","To":"Scott Branden <scott.branden@broadcom.com>,\n\tMarkus Mayer <code@mmayer.net>","References":"<20170926212800.4879-1-code@mmayer.net>\n\t<20170926212800.4879-3-code@mmayer.net>\n\t<4cb98266-6936-7668-fc88-199ac907b437@broadcom.com>\n\t<CANEuBv7pij+szVQZHZxNr4kXcCT0miTsYzG7g28zOmF9MqXKJQ@mail.gmail.com>\n\t<9bdd9959-da47-9adb-e550-31bf06254310@broadcom.com>","From":"Florian Fainelli <f.fainelli@gmail.com>","Message-ID":"<9587b134-9727-d7cb-7a46-6df5ee4a0494@gmail.com>","Date":"Tue, 26 Sep 2017 15:14:25 -0700","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<9bdd9959-da47-9adb-e550-31bf06254310@broadcom.com>","Content-Language":"en-US","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170926_151456_743618_7211C39A ","X-CRM114-Status":"GOOD (  16.76  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400d:c09:0:0:0:242 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (f.fainelli[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, Device Tree List\n\t<devicetree@vger.kernel.org>, Doug Berger <opendmb@gmail.com>,\n\tMarkus Mayer <mmayer@broadcom.com>, Power Management List\n\t<linux-pm@vger.kernel.org>, Linux Kernel Mailing List\n\t<linux-kernel@vger.kernel.org>, Eduardo Valentin <edubezval@gmail.com>,\n\tRob Herring <robh+dt@kernel.org>, Broadcom Kernel List\n\t<bcm-kernel-feedback-list@broadcom.com>, Gregory Fong\n\t<gregory.0xf0@gmail.com>, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?=\n\t<rafal@milecki.pl>, Florian Fainelli <f.fainelli@gmail.com>,\n\tZhang Rui <rui.zhang@intel.com>, Brian Norris\n\t<computersforpeace@gmail.com>, ARM Kernel List\n\t<linux-arm-kernel@lists.infradead.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1775919,"web_url":"http://patchwork.ozlabs.org/comment/1775919/","msgid":"<5245cf8e-d35f-c1fd-b7ea-e3a58c468688@broadcom.com>","list_archive_url":null,"date":"2017-09-26T22:17:40","subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":68377,"url":"http://patchwork.ozlabs.org/api/people/68377/","name":"Scott Branden","email":"scott.branden@broadcom.com"},"content":"On 17-09-26 03:14 PM, Florian Fainelli wrote:\n> On 09/26/2017 03:08 PM, Scott Branden wrote:\n>>\n>> On 17-09-26 02:38 PM, Markus Mayer wrote:\n>>> On 26 September 2017 at 14:32, Scott Branden\n>>> <scott.branden@broadcom.com> wrote:\n>>>> Hi Markus,\n>>>>\n>>>>\n>>>> On 17-09-26 02:27 PM, Markus Mayer wrote:\n>>>>> From: Brian Norris <computersforpeace@gmail.com>\n>>>>>\n>>>>> The AVS TMON core provides temperature readings, a pair of configurable\n>>>>> high- and low-temperature threshold interrupts, and an emergency\n>>>>> over-temperature chip reset. The driver utilizes the first two to\n>>>>> provide temperature readings and high-temperature notifications to\n>>>>> applications. The over-temperature reset is not exposed to\n>>>>> applications; this reset threshold is critical to the system and should\n>>>>> be set with care within the bootloader.\n>>>>>\n>>>>> Applications may choose to utilize the notification mechanism, the\n>>>>> temperature reading mechanism (e.g., through polling), or both.\n>>>>>\n>>>>> Signed-off-by: Brian Norris <computersforpeace@gmail.com>\n>>>>> Signed-off-by: Doug Berger <opendmb@gmail.com>\n>>>>> Signed-off-by: Markus Mayer <mmayer@broadcom.com>\n>>>>> ---\n>>>>>     drivers/thermal/Kconfig                    |   2 +-\n>>>>>     drivers/thermal/broadcom/Kconfig           |   7 +\n>>>>>     drivers/thermal/broadcom/Makefile          |   1 +\n>>>>>     drivers/thermal/broadcom/brcmstb_thermal.c | 387\n>>>>> +++++++++++++++++++++++++++++\n>>>>>     4 files changed, 396 insertions(+), 1 deletion(-)\n>>>>>     create mode 100644 drivers/thermal/broadcom/brcmstb_thermal.c\n>>>>>\n>>>>> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig\n>>>>> index 07002df..96774a7 100644\n>>>>> --- a/drivers/thermal/Kconfig\n>>>>> +++ b/drivers/thermal/Kconfig\n>>>>> @@ -408,7 +408,7 @@ config MTK_THERMAL\n>>>>>             controller present in Mediatek SoCs\n>>>>>       menu \"Broadcom thermal drivers\"\n>>>>> -depends on ARCH_BCM || COMPILE_TEST\n>>>>> +depends on ARCH_BCM || ARCH_BRCMSTB || COMPILE_TEST\n>>>> No need for this additional depends.  ARCH_BCM is always defined before\n>>>> ARCH_BRCMSTB can be selected.\n>>> ARCH_BCM does not exist in arch/arm64/configs/defconfig. ARCH_BRCMSTB\n>>> does. So, we do need both or the driver won't be built on ARM64.\n>>> (After internal discussions we went with that approach rather than\n>>> defining ARCH_BCM on ARM64.)\n>> Got it.  Looking at our internal iproc tree I see we've done exactly the\n>> same with ARCH_BCM_IPROC needing to be added.  We haven't upstreamed\n>> the thermal driver needing it yet.\n>>\n>> Perhaps we should add ARCH_BCM to ARM64....\n> If it is just added to satisfy dependencies, I don't see much value in\n> doing that. It does make sense in the ARM v7 multiplatform context, but\n> outside of that, not so sur.\nOK - we'll just continue to add ARCH_BCM_IPROC || ARCH_BRCMSTB \neverywhere as needed.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"PFrmPIuU\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=broadcom.com header.i=@broadcom.com\n\theader.b=\"O65vr2CG\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y1wMN4bSLz9t4X\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 27 Sep 2017 08:18:22 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwyBA-0006m3-Tl; Tue, 26 Sep 2017 22:18:12 +0000","from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dwyB7-0006eb-35 for linux-arm-kernel@lists.infradead.org;\n\tTue, 26 Sep 2017 22:18:11 +0000","by mail-wm0-x229.google.com with SMTP id m127so12283606wmm.3\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 26 Sep 2017 15:17:48 -0700 (PDT)","from [10.136.13.65] ([192.19.224.250])\n\tby smtp.gmail.com with ESMTPSA id\n\tm19sm2551421wma.24.2017.09.26.15.17.42\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 26 Sep 2017 15:17:45 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type:\n\tContent-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive:\n\tList-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From:\n\tReferences:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner;\n\tbh=27LiiGBz/PWITcsCOLg2LMSupkxN3rBrlUb6oeETunk=;\n\tb=PFrmPIuUt84EeA/30fuDstMlM\n\t/1ZRAwJCSoB/zntcvv0wLB0np51xn5TVgrLiFAHU9QtK8qUp7BPrqFWe3MwA+OlsPmAEY75p2bJyY\n\tFI/gOh6OLMPHyvsBvUe429ZeAFMNHxwI6Xe4fA8YkqM/1L59oKQh8WOYQi0c/U6Jsbo9cZskQGMgX\n\tuRUdGCEoGcgpf1q3n58iZeSLQQ/EwhiUr83ljU5DEmf6bdZ18c4r81pbfaLyaN2K/lY/tVZScXlI8\n\t98Ocq3pBvJiH0c8xqExz/zHmbCoL73MEBbEigZe109+4YbVpVmfdWF2Bys1H+FGA9LKWx39VQJ+FX\n\toWshkN1hg==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n\ts=google; \n\th=subject:to:references:cc:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=O5z3IFU3+1k96g1MMT8jw43XlhEZhZwuxphnNwqHYm4=;\n\tb=O65vr2CGdnoFzBfuNM6BDwwmIydTLlzVV1fs/FRe9f8Ol1wBa8djXrFNvB8wULXStP\n\tgPR4EbJT0SpT4xokrP097pPLJ4CnQMlY0WUlq8+ehLsImAXzB67fdG3YfKifFF87Fkbj\n\tCA5v+koUVC1W00kxYH5ARtPJXn/ut3IYbJYHg="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:references:cc:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-transfer-encoding;\n\tbh=O5z3IFU3+1k96g1MMT8jw43XlhEZhZwuxphnNwqHYm4=;\n\tb=XD59S9qE6gegTj+ycyKdFlOqqxbnpJBztUhW5oq97MdaaDwn46iSaQzEdaEjFRNnhS\n\t4dTA6Ypm/aRtCMW1O0HvhlfRWPki+wPX6YCgdRbBhte8opgn5DYrkMKwRfvLMJCHQiG6\n\tMQn9FdDkf859oYVc0CdQkSGWJdeTzOSaiMCLdSM+UBYfg8/Bokc13iXxgwHvEIl5LJpB\n\t5ag619HOxXIWR+ck94cXjXVSx9PiTYEMJo/7XI2puN7cKfjUtFjYDrsrk5IEedo7Dhl0\n\t+q6HpnT3R4mecguSNvucRJqBRCuO+LKJSI1LVNFTvpCvEY8BC0G+FSXaMx1iOTxf58ef\n\tNCiQ==","X-Gm-Message-State":"AHPjjUjH5BE+5Dv+pR2fQzKXxvRSNMvinbWpVBvsLKQF7+ex0DsgVjdC\n\teqryc8UH9Qf4Ra2LHkGYx1jvKA==","X-Google-Smtp-Source":"AOwi7QCV6KWgkQfpp5HxuzysOO2Qwm/mwj5vJN6GL4nqe+ANCg102gldhvW5LEUjMzYBmSuidOsNOw==","X-Received":"by 10.28.208.72 with SMTP id h69mr4810036wmg.134.1506464266690; \n\tTue, 26 Sep 2017 15:17:46 -0700 (PDT)","Subject":"Re: [PATCH v5 2/2] thermal: add brcmstb AVS TMON driver","To":"Florian Fainelli <f.fainelli@gmail.com>, Markus Mayer <code@mmayer.net>","References":"<20170926212800.4879-1-code@mmayer.net>\n\t<20170926212800.4879-3-code@mmayer.net>\n\t<4cb98266-6936-7668-fc88-199ac907b437@broadcom.com>\n\t<CANEuBv7pij+szVQZHZxNr4kXcCT0miTsYzG7g28zOmF9MqXKJQ@mail.gmail.com>\n\t<9bdd9959-da47-9adb-e550-31bf06254310@broadcom.com>\n\t<9587b134-9727-d7cb-7a46-6df5ee4a0494@gmail.com>","From":"Scott Branden <scott.branden@broadcom.com>","Message-ID":"<5245cf8e-d35f-c1fd-b7ea-e3a58c468688@broadcom.com>","Date":"Tue, 26 Sep 2017 15:17:40 -0700","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.8.0","MIME-Version":"1.0","In-Reply-To":"<9587b134-9727-d7cb-7a46-6df5ee4a0494@gmail.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170926_151809_301344_50F12EA6 ","X-CRM114-Status":"GOOD (  17.82  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, Device Tree List\n\t<devicetree@vger.kernel.org>, Doug Berger <opendmb@gmail.com>,\n\tMarkus Mayer <mmayer@broadcom.com>, Power Management List\n\t<linux-pm@vger.kernel.org>, Linux Kernel Mailing List\n\t<linux-kernel@vger.kernel.org>, Eduardo Valentin <edubezval@gmail.com>,\n\tRob Herring <robh+dt@kernel.org>, Broadcom Kernel List\n\t<bcm-kernel-feedback-list@broadcom.com>, Gregory Fong\n\t<gregory.0xf0@gmail.com>, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?=\n\t<rafal@milecki.pl>, Zhang Rui <rui.zhang@intel.com>,\n\tBrian Norris <computersforpeace@gmail.com>, ARM Kernel List\n\t<linux-arm-kernel@lists.infradead.org>","Content-Transfer-Encoding":"7bit","Content-Type":"text/plain; charset=\"us-ascii\"; Format=\"flowed\"","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1794376,"web_url":"http://patchwork.ozlabs.org/comment/1794376/","msgid":"<9f6b61ee-7f53-f158-2642-15212db92781@gmail.com>","list_archive_url":null,"date":"2017-10-26T16:55:50","subject":"Re: [PATCH v5 0/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":2800,"url":"http://patchwork.ozlabs.org/api/people/2800/","name":"Florian Fainelli","email":"f.fainelli@gmail.com"},"content":"On 09/26/2017 02:27 PM, Markus Mayer wrote:\n> From: Markus Mayer <mmayer@broadcom.com>\n> \n> This series adds the brcmstb AVS TMON driver.\n> \n> The driver was originally written by Brian Norris.\n\nRui, Eduardo, what's going on here? Can either one of you merge this\ndriver or are we going to miss another merge window?\n\n\n\n> \n> Changes since v4:\n> - disable trip points properly when needed; there was code left-over\n>   from an older iteration of this driver that used long ints, which\n>   resulted in code that was incorrect now that we are using ints\n> - rebased on v4.14-rc1\n> - patches 3 & 4 (turning on CONFIG_BRCMSTB_THERMAL for arm/arm64) are no\n>   longer part of the series, because they were already picked up for 4.14\n> \n> Changes since v3:\n> - Rebased on v4.13-rc3 to resolve conflicts in the MAINTAINERS file\n> \n> Changes since v2:\n> - replaced calls to pr_debug() with calls to dev_dbg() [PATCH 2/4 only]\n> - all other patches are unchanged from v2\n> \n> Changes since v1:\n> - Fixed wording in binding document\n> - Fixed lincensing to consistently mention GPL v2\n> - Use thermal_zone_get_slope() and thermal_zone_get_offset()\n> - Some minor clean-ups\n> \n> Brian Norris (2):\n>   Documentation: devicetree: add binding for Broadcom STB AVS TMON\n>   thermal: add brcmstb AVS TMON driver\n> \n>  .../devicetree/bindings/thermal/brcm,avs-tmon.txt  |  20 ++\n>  MAINTAINERS                                        |   8 +\n>  drivers/thermal/Kconfig                            |   2 +-\n>  drivers/thermal/broadcom/Kconfig                   |   7 +\n>  drivers/thermal/broadcom/Makefile                  |   1 +\n>  drivers/thermal/broadcom/brcmstb_thermal.c         | 387 +++++++++++++++++++++\n>  6 files changed, 424 insertions(+), 1 deletion(-)\n>  create mode 100644 Documentation/devicetree/bindings/thermal/brcm,avs-tmon.txt\n>  create mode 100644 drivers/thermal/broadcom/brcmstb_thermal.c\n>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"YDElr/S0\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"NndlbxTO\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yNCp06f53z9t6f\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri, 27 Oct 2017 03:56:24 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7lS9-0007v9-Ax; Thu, 26 Oct 2017 16:56:21 +0000","from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7lS5-0007ty-28 for linux-arm-kernel@lists.infradead.org;\n\tThu, 26 Oct 2017 16:56:18 +0000","by mail-qk0-x244.google.com with SMTP id f199so5135400qke.2\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tThu, 26 Oct 2017 09:55:55 -0700 (PDT)","from [10.112.156.244] ([192.19.255.250])\n\tby smtp.googlemail.com with ESMTPSA id\n\tl20sm3890506qtb.27.2017.10.26.09.55.51\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 26 Oct 2017 09:55:53 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:\n\tMessage-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description\n\t:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=OjaPxduHKQCORYbBJSzqz90XSWM3xdmVn3ZQGy4zeGA=;\n\tb=YDElr/S08s7DUe\n\tvArwJ32xhik8pYSRw9xEKs87/6jL+caBpWk8s5qLMo60dkCBpd6vnlzMC/hwjBh9Hcb8IopibiAoz\n\t2s75BpyDReZOQPCWyi/gjAnI8/ArUgaK6QH1dj06EJgCpnIvYY9DifggshSZJZSg+fIr/cE+uGNfO\n\tk4o69fSafh1J5nFlltHkoGS0xouJL3Q7zv/1MGpdeeAvVnNsEEKdvjsttChJ9BYdFnHEoP391Wn4D\n\t4Exi74rhzXDNBBmYDIcHbQEzxQ3Ggqh9Ll5gMA0L9cqKW3HLnt34G5EO7NDaXbrp/oz1ft3XWMujW\n\tMzd3jlGuKqqLjY/sMAyA==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=loIpaat4W4dgSI4LkL7Rox069PG8QKS7eEZDqOBy0a8=;\n\tb=NndlbxTOyPe4psm/I7x7lrAedG1FOlFa0YTuwVB5CA03cT9dLYbPI+8HQ+lUxH4d0P\n\tDoPIQr+YsgXebdw+TgeTUQZdhdtfpxgj44OWy+Pa5QlijG1KSB0dYF8m/8IwZh1bPQlN\n\tJpCpFHr5LokUOwooBUeJ34apNU+xuu+x9F39uuKTjWEWLZTcdyNU2hiN4DwK5s0aZSEU\n\tAU/EptucKRkw6wwamgBFq2vvT90RVFohOp71p6wDj5SzkLGIDBsp34rYuy5Em52nHg4A\n\tbjAO/diS9X8H/4q6MmO1sIZeRQwS8/bARTG6nTHTwgzAGzJScYCwhQ9pm6VZPCMtz14X\n\tvyfQ=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=loIpaat4W4dgSI4LkL7Rox069PG8QKS7eEZDqOBy0a8=;\n\tb=ppZDXKeeRZ+F+CZUMNXFheUCHnJeOlOI71KfYguSEFLPjFHl4+6pLjsM6OpYS5FJ0d\n\txjHjG0YYyQyg2lYiVm45zKQLNUdr6Y2WEeUKW1gkDincKWujp76F3T86JX8dp4GwJr/2\n\t8Boyo8+NlOtsW/p+tsiFV20QWIhwcC8k25C1f8UNkfzoqB5AUifkKRmdCG1YC7ih28CE\n\tBnPrd2ZqbEYXM3YMNAAay7wfkPxR6fxBKsMF5EmpJhL2sLnTQvCJ/bISBOgtu34/CRfG\n\t4mElSZ6rlvWuBDxBggcn1q+C1LD3jSIkcE7c3XtFtUFmiitrov89qgx/1kPqLWhm2Omj\n\tclFw==","X-Gm-Message-State":"AMCzsaX4rFyuTkyABUzqluxLSr5e1e12F7ez+XKt0MPPk8ghtYvDEw69\n\tPrfrJp4Un8Z21AMJtgOStA0=","X-Google-Smtp-Source":"ABhQp+RVY9Fl10MeU+HN2WxvpesFmKRj/bU6LbOSfBa9aijmrAaWXEWfPUcg93I5ruf9gAtjOB7JaQ==","X-Received":"by 10.55.209.27 with SMTP id s27mr9212332qki.4.1509036954582;\n\tThu, 26 Oct 2017 09:55:54 -0700 (PDT)","Subject":"Re: [PATCH v5 0/2] thermal: add brcmstb AVS TMON driver","To":"Markus Mayer <code@mmayer.net>, Zhang Rui <rui.zhang@intel.com>, Eduardo\n\tValentin <edubezval@gmail.com>, Rob Herring <robh+dt@kernel.org>, \n\tMark Rutland <mark.rutland@arm.com>, Doug Berger <opendmb@gmail.com>, \n\tBrian Norris <computersforpeace@gmail.com>, \n\tGregory Fong <gregory.0xf0@gmail.com>,\n\tFlorian Fainelli <f.fainelli@gmail.com>, =?utf-8?b?UmFmYcWCIE1pxYJl?=\n\t=?utf-8?q?cki?=  <rafal@milecki.pl>","References":"<20170926212800.4879-1-code@mmayer.net>","From":"Florian Fainelli <f.fainelli@gmail.com>","Message-ID":"<9f6b61ee-7f53-f158-2642-15212db92781@gmail.com>","Date":"Thu, 26 Oct 2017 09:55:50 -0700","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<20170926212800.4879-1-code@mmayer.net>","Content-Language":"en-US","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171026_095617_186972_782416E7 ","X-CRM114-Status":"GOOD (  16.74  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400d:c09:0:0:0:244 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (f.fainelli[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Device Tree List <devicetree@vger.kernel.org>,\n\tPower Management List <linux-pm@vger.kernel.org>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\tBroadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>,\n\tMarkus Mayer <mmayer@broadcom.com>,\n\tARM Kernel List <linux-arm-kernel@lists.infradead.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1794414,"web_url":"http://patchwork.ozlabs.org/comment/1794414/","msgid":"<20171026182431.GA22718@localhost.localdomain>","list_archive_url":null,"date":"2017-10-26T18:24:33","subject":"Re: [PATCH v5 0/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":64527,"url":"http://patchwork.ozlabs.org/api/people/64527/","name":"Eduardo Valentin","email":"edubezval@gmail.com"},"content":"On Thu, Oct 26, 2017 at 09:55:50AM -0700, Florian Fainelli wrote:\n> On 09/26/2017 02:27 PM, Markus Mayer wrote:\n> > From: Markus Mayer <mmayer@broadcom.com>\n> > \n> > This series adds the brcmstb AVS TMON driver.\n> > \n> > The driver was originally written by Brian Norris.\n> \n> Rui, Eduardo, what's going on here? Can either one of you merge this\n> driver or are we going to miss another merge window?\n\nI am taking a look. Thanks for the reminder.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"hMjgRqq5\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"BOx2V4J+\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yNFmM149jz9s4q\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri, 27 Oct 2017 05:25:07 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7mpx-00082s-AV; Thu, 26 Oct 2017 18:25:01 +0000","from mail-pg0-x22a.google.com ([2607:f8b0:400e:c05::22a])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7mpt-00080e-UO for linux-arm-kernel@lists.infradead.org;\n\tThu, 26 Oct 2017 18:24:59 +0000","by mail-pg0-x22a.google.com with SMTP id a192so3331710pge.9\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tThu, 26 Oct 2017 11:24:37 -0700 (PDT)","from localhost.localdomain\n\t([2601:644:8201:32e0:7256:81ff:febd:926d])\n\tby smtp.gmail.com with ESMTPSA id\n\ti11sm12000600pgc.88.2017.10.26.11.24.35\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 26 Oct 2017 11:24:35 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=ZRGiWyLdqYcpuwJPXOnBh8VlxaLzf6SNQtqDkLN8rsw=;\n\tb=hMjgRqq5unW3hr\n\tf+CG4QDiXFhCs0PzX65z1XjdDIrZMyGKZqBj94HXUWseKcyLDdROlOG9oiFrRvFhh38/AXMp+sbW6\n\tA2dJQ0+pjU9KFz1qjlk3jk5ICqgJzSOnEOFZbD9SpnuDHPvhh8U5pGLxeONrQ3vifhq27DgaSe91n\n\ta2QegGND2UdMLydERMlskUHaj/WfQpFdKtDNbDDDgT1Ncl86ej0uvZVdlrIxaII4wx+RmrPkDh/2V\n\t6sjbTZBmeh5IDnf/xMvJNyJiGYmDhFkosTdBGNHHt0QzFWGZo6H5lPZLVvhlPr/tY65pF/cnR0lkU\n\tKim5EQ8dZauXnPoS8tqw==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to:user-agent;\n\tbh=CCl1jjHL158TJT0YBiK0RmS8czSeNdVvHjGG7gqT3EA=;\n\tb=BOx2V4J+tkA0G2pGS3CuFgdPwwUKdap98TbdHDymjg+Xe42GXzrjFyuV/OJ/7mC8jn\n\tbmmTp7rLd+J+PvQniyskDJoGYA5x4rc98Eom/GaSo+v4c9Fc1S5+IILJdL7WGzGRltgD\n\tqRd9zrCQVKNpQB4wX075x8F7Wn87vYrBKo/wiFRtgAh2Ockv6/3A+mOUj5LcKYXNklRk\n\tQmCEN65vZ0UMAv3yz0C4h71iZMCGfm0g04Q9qIpwnHXceA7UQaSWr+F8Xk/X0Zq0wZMY\n\tWTHwpLtDMeu/GFtNLbA7xaHfkt3UVku4TTcU+YrtCUakvbALzWahhrolgo5J6xLmn5n/\n\tmq8A=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=CCl1jjHL158TJT0YBiK0RmS8czSeNdVvHjGG7gqT3EA=;\n\tb=SYE5/jyB10tuzRHT2jSZgzhrha0sY5QR/ZDypjuwcaYgokgCjDGb6IHYcX4f/SsO0l\n\tfAXg3AaAynDGQeHCDx/RV54+kVfGGcWthlcccuvjeOQpIjAWstHa6HleOseq/Ayli1Wl\n\tIYyEfFZJeVX+2YU96PRLKQU3AwlBMBOUq5MuBeRQok0p9fIDrtDaQ0BqHjGMmsXoUH0W\n\tAAomCLP4ENRzv5G+2RIVJb9YSOwBai6gybrs1kLLK+4dC8u3kowzcV/eHUA1AQlZ2zaY\n\t5UlUSJ+hmfAN7DtAWvnzhEPZT8JNubD2SZCKGtB+NcepnHixC8JP2tZw9f7WtONf3hd5\n\taCtg==","X-Gm-Message-State":"AMCzsaXRVvUyXYPPJBPNZwnQXdfaHltwjySNcKXKWiAVWyzyxmyhzmwJ\n\tDO/rTbqIAc2qs4XaXlCmiD4=","X-Google-Smtp-Source":"ABhQp+ScEvlt8kOXuUiowOb+letV5RzmVz83luzvSf4sI3HA1W6Zxo2Q5CXL+QupO4DXlAg1YlbrLg==","X-Received":"by 10.159.198.70 with SMTP id y6mr5141374plt.334.1509042276654; \n\tThu, 26 Oct 2017 11:24:36 -0700 (PDT)","Date":"Thu, 26 Oct 2017 11:24:33 -0700","From":"Eduardo Valentin <edubezval@gmail.com>","To":"Florian Fainelli <f.fainelli@gmail.com>","Subject":"Re: [PATCH v5 0/2] thermal: add brcmstb AVS TMON driver","Message-ID":"<20171026182431.GA22718@localhost.localdomain>","References":"<20170926212800.4879-1-code@mmayer.net>\n\t<9f6b61ee-7f53-f158-2642-15212db92781@gmail.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<9f6b61ee-7f53-f158-2642-15212db92781@gmail.com>","User-Agent":"Mutt/1.5.23 (2014-03-12)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171026_112458_015652_C21C5670 ","X-CRM114-Status":"GOOD (  13.79  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400e:c05:0:0:0:22a listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (edubezval[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, Device Tree List\n\t<devicetree@vger.kernel.org>, Doug Berger <opendmb@gmail.com>,\n\tMarkus Mayer <mmayer@broadcom.com>, Power Management List\n\t<linux-pm@vger.kernel.org>, Linux Kernel Mailing List\n\t<linux-kernel@vger.kernel.org>, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?=\n\t<rafal@milecki.pl>,  Rob Herring <robh+dt@kernel.org>,\n\tBroadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>, \n\tGregory Fong <gregory.0xf0@gmail.com>, Markus Mayer <code@mmayer.net>, \n\tZhang Rui <rui.zhang@intel.com>,\n\tBrian Norris <computersforpeace@gmail.com>, ARM Kernel List\n\t<linux-arm-kernel@lists.infradead.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1794421,"web_url":"http://patchwork.ozlabs.org/comment/1794421/","msgid":"<20171026183903.GA8990@localhost.localdomain>","list_archive_url":null,"date":"2017-10-26T18:39:05","subject":"Re: [PATCH v5 0/2] thermal: add brcmstb AVS TMON driver","submitter":{"id":64527,"url":"http://patchwork.ozlabs.org/api/people/64527/","name":"Eduardo Valentin","email":"edubezval@gmail.com"},"content":"On Thu, Oct 26, 2017 at 11:24:33AM -0700, Eduardo Valentin wrote:\n> On Thu, Oct 26, 2017 at 09:55:50AM -0700, Florian Fainelli wrote:\n> > On 09/26/2017 02:27 PM, Markus Mayer wrote:\n> > > From: Markus Mayer <mmayer@broadcom.com>\n> > > \n> > > This series adds the brcmstb AVS TMON driver.\n> > > \n> > > The driver was originally written by Brian Norris.\n> > \n> > Rui, Eduardo, what's going on here? Can either one of you merge this\n> > driver or are we going to miss another merge window?\n> \n> I am taking a look. Thanks for the reminder.\n> \n\nI had no issues with these patches. Queued both in my -linus branch.\nApologizes for letting this to fall into the cracks.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"ZY4eCqTN\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"JiQTckue\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yNG5d69bdz9t3V\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri, 27 Oct 2017 05:40:01 +1100 (AEDT)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7n4N-0007GA-Mj; Thu, 26 Oct 2017 18:39:55 +0000","from mail-pg0-x22f.google.com ([2607:f8b0:400e:c05::22f])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1e7n3x-0007Dv-TZ for linux-arm-kernel@lists.infradead.org;\n\tThu, 26 Oct 2017 18:39:31 +0000","by mail-pg0-x22f.google.com with SMTP id s75so3386146pgs.0\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tThu, 26 Oct 2017 11:39:09 -0700 (PDT)","from localhost.localdomain\n\t([2601:644:8201:32e0:7256:81ff:febd:926d])\n\tby smtp.gmail.com with ESMTPSA id\n\tg16sm12268976pfd.87.2017.10.26.11.39.07\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 26 Oct 2017 11:39:07 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=q/verlS/15l9O1Oaw7x+yhjcUGe4F7hvyq6Ful+6+Cs=;\n\tb=ZY4eCqTNfv05Wr\n\tGDJuO7lQ8pHMV6T0uDt3/u6zjzmt9/22I0/9wqElWJImnqqRyrolDJxJksLT2O3skfjBcVl+jTEt8\n\tCN81W4TfqWrH1GP7cPe1rEW+1uljxTtxx/cD6K+5cpwH4Uat5XpDnH3RgGtdiln+/+6rCSwugQHTF\n\tig/N30a8Zeb67zHSJoddIkbYxnAgTeIVjKL599fe0RKirBJZLVsqy4gifMhU71Wm2vPAQJs6xE33Z\n\tnjmm3J3Ow42uqz2iNeNLcbunzU6ID9/6+fewIMRbXJ1dOwRRNt0YzoKG/kdjJ7WigcxOPJx9umjNX\n\tTPf8kff19/b1EmvujD+Q==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to:user-agent;\n\tbh=dES80S7eRjX/WcVJ/Eno2LAKoimoGTh6qL4mQHwCf6Q=;\n\tb=JiQTckue0XvLFCvZvGh2fsak/jkDlyx6qWDDtk1z5f6AxPiDjBdBXu+Y4R3YcvIFmf\n\tkCbuZ1nXOedgpOq2HVTMuW9H2aDO1sVHX3qIvIZDDW3R+bpSzkeyYTJ6f4x5J9MaUXof\n\thR4dySmko86Sfsqi88bwsW5OgqannWsuhNKuqVOw2uo00YTVP5pACBmv8rRSBxphLgFw\n\tBT4VTcIT7VWHs4oRLoVMMY9N0ZXDbn38DPrwAIGOczpQQbF6C1tK45iTyGDGghQm0ot1\n\tzQCN5irwyLVJdCIDiQTTvi2A8hCWu7MlE/4a8dJkX/oCBx36ctGFQv8/zhn4k9rFmVVA\n\tD8hQ=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=dES80S7eRjX/WcVJ/Eno2LAKoimoGTh6qL4mQHwCf6Q=;\n\tb=Vf1B5om/lohZFt4WO1uoBpgiQD+V3NMBaqgH9k1PNhNGl4AyCFpqcP25aonArQ1Vyn\n\tZgK5kvm4EG7ADQVsHT01GUyIY6W6u5oEvCv0bQIHihwIrip3U7d3OvOd/mFNOBb+fkMb\n\tr5HtQbyR9HBMDz4sQNIqMVFDyFWwndywyFtC0MVsvuV1G2lMY0dXF4LCAPmzZ1qBdetH\n\tG7ufRLUDEADWDxB9nQ5rRT/YdqgkxU9p5e+XX1q0LFQVXmqYCTLGh9RmcG80d0DN3f3u\n\tjEAQEZZi5poUOLaH413lRK9n6iJjmxk+bNNPv7VaNLZrMjpL4qzVjF/Kx67AOCgyCwNh\n\t+SmQ==","X-Gm-Message-State":"AMCzsaUfFmWceaJWsustIviw9KUwW8NCtJIMYiRJ2tZOaDSYHJE8Jmtq\n\tcQsdOas0n/2rdBbCN/fgBOg=","X-Google-Smtp-Source":"ABhQp+R17+XKYY6W28CFi1wRuDpzHSXL/eEo32UjhXLEl81rqpAC5EhZYkSQiu5yl0caVQJS2p7qKg==","X-Received":"by 10.98.245.66 with SMTP id n63mr6338799pfh.102.1509043148981; \n\tThu, 26 Oct 2017 11:39:08 -0700 (PDT)","Date":"Thu, 26 Oct 2017 11:39:05 -0700","From":"Eduardo Valentin <edubezval@gmail.com>","To":"Florian Fainelli <f.fainelli@gmail.com>","Subject":"Re: [PATCH v5 0/2] thermal: add brcmstb AVS TMON driver","Message-ID":"<20171026183903.GA8990@localhost.localdomain>","References":"<20170926212800.4879-1-code@mmayer.net>\n\t<9f6b61ee-7f53-f158-2642-15212db92781@gmail.com>\n\t<20171026182431.GA22718@localhost.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20171026182431.GA22718@localhost.localdomain>","User-Agent":"Mutt/1.5.23 (2014-03-12)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20171026_113929_987576_141227C4 ","X-CRM114-Status":"GOOD (  15.27  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400e:c05:0:0:0:22f listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (edubezval[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, Device Tree List\n\t<devicetree@vger.kernel.org>, Doug Berger <opendmb@gmail.com>,\n\tMarkus Mayer <mmayer@broadcom.com>, Power Management List\n\t<linux-pm@vger.kernel.org>, Linux Kernel Mailing List\n\t<linux-kernel@vger.kernel.org>, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?=\n\t<rafal@milecki.pl>,  Rob Herring <robh+dt@kernel.org>,\n\tBroadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>, \n\tGregory Fong <gregory.0xf0@gmail.com>, Markus Mayer <code@mmayer.net>, \n\tZhang Rui <rui.zhang@intel.com>,\n\tBrian Norris <computersforpeace@gmail.com>, ARM Kernel List\n\t<linux-arm-kernel@lists.infradead.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}}]