Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-10-02 Thread Wei Ni


On 08/30/2017 12:32 PM, Thierry Reding wrote:
> * PGP Signed by an unknown key
> 
> On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
>>
>>
>> On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
>>> On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
 On Tegra186, the BPMP (Boot and Power Management Processor) exposes
 an
 interface to thermal sensors on the system-on-chip. This driver
 implements access to the interface. It supports reading the
 temperature, setting trip points and receiving notification of a
 tripped trip point.

 Signed-off-by: Mikko Perttunen 
>>>
>>> Wei Ni,
>>>
>>> what do you think of this patch?
>>
>> Reviewed this patch, it looked fine to me.
> 
> Can I take this as a Reviewed-by?

Hi Thierry,
Sorry for late response.
Yes I think you can take this as Reviewed-by.

BTW, although I have reviewed this serial patches, actually I haven't
been work on thermal drivers for a long time, I think Mikko is good on
thermal upstream issues 

Thanks.
Wei.
> 
> Thierry
> 
> * Unknown Key
> * 0x7F3EB3A1
> 


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-10-02 Thread Wei Ni


On 08/30/2017 12:32 PM, Thierry Reding wrote:
> * PGP Signed by an unknown key
> 
> On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
>>
>>
>> On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
>>> On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
 On Tegra186, the BPMP (Boot and Power Management Processor) exposes
 an
 interface to thermal sensors on the system-on-chip. This driver
 implements access to the interface. It supports reading the
 temperature, setting trip points and receiving notification of a
 tripped trip point.

 Signed-off-by: Mikko Perttunen 
>>>
>>> Wei Ni,
>>>
>>> what do you think of this patch?
>>
>> Reviewed this patch, it looked fine to me.
> 
> Can I take this as a Reviewed-by?

Hi Thierry,
Sorry for late response.
Yes I think you can take this as Reviewed-by.

BTW, although I have reviewed this serial patches, actually I haven't
been work on thermal drivers for a long time, I think Mikko is good on
thermal upstream issues 

Thanks.
Wei.
> 
> Thierry
> 
> * Unknown Key
> * 0x7F3EB3A1
> 


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-31 Thread Zhang Rui
On Thu, 2017-08-31 at 14:45 +0200, Thierry Reding wrote:
> On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
> > 
> > 
> > 
> > On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> > > 
> > > On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> > > > 
> > > > On Tegra186, the BPMP (Boot and Power Management Processor)
> > > > exposes
> > > > an
> > > > interface to thermal sensors on the system-on-chip. This driver
> > > > implements access to the interface. It supports reading the
> > > > temperature, setting trip points and receiving notification of
> > > > a
> > > > tripped trip point.
> > > > 
> > > > Signed-off-by: Mikko Perttunen 

Acked-by: Zhang Rui 
for this patch and patch 1/5.


> > > Wei Ni,
> > > 
> > > what do you think of this patch?
> > Reviewed this patch, it looked fine to me.
> Hi Zhang,
> 
> given the build-time dependencies, how about if I take this into the
> Tegra tree with an Acked-by from you?

Sounds okay to me. Done. :)

thanks,
rui

>  I can provide a stable branch with
> the dependencies included if you want to pull it into your tree in
> order
> to resolve dependencies.
> 
> Thierry


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-31 Thread Zhang Rui
On Thu, 2017-08-31 at 14:45 +0200, Thierry Reding wrote:
> On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
> > 
> > 
> > 
> > On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> > > 
> > > On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> > > > 
> > > > On Tegra186, the BPMP (Boot and Power Management Processor)
> > > > exposes
> > > > an
> > > > interface to thermal sensors on the system-on-chip. This driver
> > > > implements access to the interface. It supports reading the
> > > > temperature, setting trip points and receiving notification of
> > > > a
> > > > tripped trip point.
> > > > 
> > > > Signed-off-by: Mikko Perttunen 

Acked-by: Zhang Rui 
for this patch and patch 1/5.


> > > Wei Ni,
> > > 
> > > what do you think of this patch?
> > Reviewed this patch, it looked fine to me.
> Hi Zhang,
> 
> given the build-time dependencies, how about if I take this into the
> Tegra tree with an Acked-by from you?

Sounds okay to me. Done. :)

thanks,
rui

>  I can provide a stable branch with
> the dependencies included if you want to pull it into your tree in
> order
> to resolve dependencies.
> 
> Thierry


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-31 Thread Thierry Reding
On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
> 
> 
> On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> > On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> >> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
> >> an
> >> interface to thermal sensors on the system-on-chip. This driver
> >> implements access to the interface. It supports reading the
> >> temperature, setting trip points and receiving notification of a
> >> tripped trip point.
> >>
> >> Signed-off-by: Mikko Perttunen 
> > 
> > Wei Ni,
> > 
> > what do you think of this patch?
> 
> Reviewed this patch, it looked fine to me.

Hi Zhang,

given the build-time dependencies, how about if I take this into the
Tegra tree with an Acked-by from you? I can provide a stable branch with
the dependencies included if you want to pull it into your tree in order
to resolve dependencies.

Thierry


signature.asc
Description: PGP signature


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-31 Thread Thierry Reding
On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
> 
> 
> On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> > On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> >> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
> >> an
> >> interface to thermal sensors on the system-on-chip. This driver
> >> implements access to the interface. It supports reading the
> >> temperature, setting trip points and receiving notification of a
> >> tripped trip point.
> >>
> >> Signed-off-by: Mikko Perttunen 
> > 
> > Wei Ni,
> > 
> > what do you think of this patch?
> 
> Reviewed this patch, it looked fine to me.

Hi Zhang,

given the build-time dependencies, how about if I take this into the
Tegra tree with an Acked-by from you? I can provide a stable branch with
the dependencies included if you want to pull it into your tree in order
to resolve dependencies.

Thierry


signature.asc
Description: PGP signature


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-30 Thread Thierry Reding
On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
> 
> 
> On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> > On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> >> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
> >> an
> >> interface to thermal sensors on the system-on-chip. This driver
> >> implements access to the interface. It supports reading the
> >> temperature, setting trip points and receiving notification of a
> >> tripped trip point.
> >>
> >> Signed-off-by: Mikko Perttunen 
> > 
> > Wei Ni,
> > 
> > what do you think of this patch?
> 
> Reviewed this patch, it looked fine to me.

Can I take this as a Reviewed-by?

Thierry


signature.asc
Description: PGP signature


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-30 Thread Thierry Reding
On Mon, Aug 21, 2017 at 10:40:44AM +0800, Wei Ni wrote:
> 
> 
> On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> > On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> >> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
> >> an
> >> interface to thermal sensors on the system-on-chip. This driver
> >> implements access to the interface. It supports reading the
> >> temperature, setting trip points and receiving notification of a
> >> tripped trip point.
> >>
> >> Signed-off-by: Mikko Perttunen 
> > 
> > Wei Ni,
> > 
> > what do you think of this patch?
> 
> Reviewed this patch, it looked fine to me.

Can I take this as a Reviewed-by?

Thierry


signature.asc
Description: PGP signature


Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-20 Thread Wei Ni


On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
>> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
>> an
>> interface to thermal sensors on the system-on-chip. This driver
>> implements access to the interface. It supports reading the
>> temperature, setting trip points and receiving notification of a
>> tripped trip point.
>>
>> Signed-off-by: Mikko Perttunen 
> 
> Wei Ni,
> 
> what do you think of this patch?

Reviewed this patch, it looked fine to me.

> 
> thanks,
> rui
>> ---
>> v2:
>> - don't allocate space for disabled zones
>> - allow compilation with COMPILE_TEST
>>
>>  drivers/thermal/Makefile |   2 +-
>>  drivers/thermal/tegra/Kconfig|   7 +
>>  drivers/thermal/tegra/Makefile   |   3 +-
>>  drivers/thermal/tegra/bpmp-thermal.c | 263
>> +++
>>  4 files changed, 273 insertions(+), 2 deletions(-)
>>  create mode 100644 drivers/thermal/tegra/bpmp-thermal.c
>>
>> diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
>> index 094d7039981c..c03dccdba7b8 100644
>> --- a/drivers/thermal/Makefile
>> +++ b/drivers/thermal/Makefile
>> @@ -54,7 +54,7 @@ obj-$(CONFIG_INTEL_BXT_PMIC_THERMAL) +=
>> intel_bxt_pmic_thermal.o
>>  obj-$(CONFIG_INTEL_PCH_THERMAL) += intel_pch_thermal.o
>>  obj-$(CONFIG_ST_THERMAL)+= st/
>>  obj-$(CONFIG_QCOM_TSENS)+= qcom/
>> -obj-$(CONFIG_TEGRA_SOCTHERM)+= tegra/
>> +obj-y   += tegra/
>>  obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
>>  obj-$(CONFIG_MTK_THERMAL)   += mtk_thermal.o
>>  obj-$(CONFIG_GENERIC_ADC_THERMAL)   += thermal-generic-adc.o
>> diff --git a/drivers/thermal/tegra/Kconfig
>> b/drivers/thermal/tegra/Kconfig
>> index cec586ec7e4b..f8740f7852e3 100644
>> --- a/drivers/thermal/tegra/Kconfig
>> +++ b/drivers/thermal/tegra/Kconfig
>> @@ -10,4 +10,11 @@ config TEGRA_SOCTHERM
>>zones to manage temperatures. This option is also required
>> for the
>>emergency thermal reset (thermtrip) feature to function.
>>  
>> +config TEGRA_BPMP_THERMAL
>> +tristate "Tegra BPMP thermal sensing"
>> +depends on TEGRA_BPMP || COMPILE_TEST
>> +help
>> + Enable this option for support for sensing system
>> temperature of NVIDIA
>> + Tegra systems-on-chip with the BPMP coprocessor (Tegra186).
>> +
>>  endmenu
>> diff --git a/drivers/thermal/tegra/Makefile
>> b/drivers/thermal/tegra/Makefile
>> index 1ce1af2cf0f5..757abcd1feaf 100644
>> --- a/drivers/thermal/tegra/Makefile
>> +++ b/drivers/thermal/tegra/Makefile
>> @@ -1,4 +1,5 @@
>> -obj-$(CONFIG_TEGRA_SOCTHERM)+= tegra-soctherm.o
>> +obj-$(CONFIG_TEGRA_SOCTHERM)+= tegra-soctherm.o
>> +obj-$(CONFIG_TEGRA_BPMP_THERMAL)+= bpmp-thermal.o
>>  
>>  tegra-soctherm-y:= soctherm.o
>> soctherm-fuse.o
>>  tegra-soctherm-$(CONFIG_ARCH_TEGRA_124_SOC) += tegra124-
>> soctherm.o
>> diff --git a/drivers/thermal/tegra/bpmp-thermal.c
>> b/drivers/thermal/tegra/bpmp-thermal.c
>> new file mode 100644
>> index ..b0980dbca3b3
>> --- /dev/null
>> +++ b/drivers/thermal/tegra/bpmp-thermal.c
>> @@ -0,0 +1,263 @@
>> +/*
>> + * Copyright (c) 2015-2017, NVIDIA CORPORATION.  All rights
>> reserved.
>> + *
>> + * Author:
>> + *  Mikko Perttunen 
>> + *  Aapo Vienamo
>> + *
>> + * This software is licensed under the terms of the GNU General
>> Public
>> + * License version 2, as published by the Free Software Foundation,
>> and
>> + * may be copied, distributed, and modified under those terms.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + *
>> + */
>> +
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +
>> +#include 
>> +#include 
>> +
>> +struct tegra_bpmp_thermal_zone {
>> +struct tegra_bpmp_thermal *tegra;
>> +struct thermal_zone_device *tzd;
>> +struct work_struct tz_device_update_work;
>> +unsigned int idx;
>> +};
>> +
>> +struct tegra_bpmp_thermal {
>> +struct device *dev;
>> +struct tegra_bpmp *bpmp;
>> +unsigned int num_zones;
>> +struct tegra_bpmp_thermal_zone **zones;
>> +};
>> +
>> +static int tegra_bpmp_thermal_get_temp(void *data, int *out_temp)
>> +{
>> +struct tegra_bpmp_thermal_zone *zone = data;
>> +struct mrq_thermal_host_to_bpmp_request req;
>> +union mrq_thermal_bpmp_to_host_response reply;
>> +struct tegra_bpmp_message msg;
>> +int err;
>> +
>> +memset(, 0, sizeof(req));
>> +req.type = CMD_THERMAL_GET_TEMP;
>> +req.get_temp.zone = zone->idx;
>> +
>> +memset(, 0, sizeof(msg));
>> +msg.mrq = MRQ_THERMAL;
>> +msg.tx.data = 
>> +msg.tx.size = sizeof(req);

Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-20 Thread Wei Ni


On Friday, August 11, 2017 10:57 AM, Zhang Rui wrote:
> On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
>> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
>> an
>> interface to thermal sensors on the system-on-chip. This driver
>> implements access to the interface. It supports reading the
>> temperature, setting trip points and receiving notification of a
>> tripped trip point.
>>
>> Signed-off-by: Mikko Perttunen 
> 
> Wei Ni,
> 
> what do you think of this patch?

Reviewed this patch, it looked fine to me.

> 
> thanks,
> rui
>> ---
>> v2:
>> - don't allocate space for disabled zones
>> - allow compilation with COMPILE_TEST
>>
>>  drivers/thermal/Makefile |   2 +-
>>  drivers/thermal/tegra/Kconfig|   7 +
>>  drivers/thermal/tegra/Makefile   |   3 +-
>>  drivers/thermal/tegra/bpmp-thermal.c | 263
>> +++
>>  4 files changed, 273 insertions(+), 2 deletions(-)
>>  create mode 100644 drivers/thermal/tegra/bpmp-thermal.c
>>
>> diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
>> index 094d7039981c..c03dccdba7b8 100644
>> --- a/drivers/thermal/Makefile
>> +++ b/drivers/thermal/Makefile
>> @@ -54,7 +54,7 @@ obj-$(CONFIG_INTEL_BXT_PMIC_THERMAL) +=
>> intel_bxt_pmic_thermal.o
>>  obj-$(CONFIG_INTEL_PCH_THERMAL) += intel_pch_thermal.o
>>  obj-$(CONFIG_ST_THERMAL)+= st/
>>  obj-$(CONFIG_QCOM_TSENS)+= qcom/
>> -obj-$(CONFIG_TEGRA_SOCTHERM)+= tegra/
>> +obj-y   += tegra/
>>  obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
>>  obj-$(CONFIG_MTK_THERMAL)   += mtk_thermal.o
>>  obj-$(CONFIG_GENERIC_ADC_THERMAL)   += thermal-generic-adc.o
>> diff --git a/drivers/thermal/tegra/Kconfig
>> b/drivers/thermal/tegra/Kconfig
>> index cec586ec7e4b..f8740f7852e3 100644
>> --- a/drivers/thermal/tegra/Kconfig
>> +++ b/drivers/thermal/tegra/Kconfig
>> @@ -10,4 +10,11 @@ config TEGRA_SOCTHERM
>>zones to manage temperatures. This option is also required
>> for the
>>emergency thermal reset (thermtrip) feature to function.
>>  
>> +config TEGRA_BPMP_THERMAL
>> +tristate "Tegra BPMP thermal sensing"
>> +depends on TEGRA_BPMP || COMPILE_TEST
>> +help
>> + Enable this option for support for sensing system
>> temperature of NVIDIA
>> + Tegra systems-on-chip with the BPMP coprocessor (Tegra186).
>> +
>>  endmenu
>> diff --git a/drivers/thermal/tegra/Makefile
>> b/drivers/thermal/tegra/Makefile
>> index 1ce1af2cf0f5..757abcd1feaf 100644
>> --- a/drivers/thermal/tegra/Makefile
>> +++ b/drivers/thermal/tegra/Makefile
>> @@ -1,4 +1,5 @@
>> -obj-$(CONFIG_TEGRA_SOCTHERM)+= tegra-soctherm.o
>> +obj-$(CONFIG_TEGRA_SOCTHERM)+= tegra-soctherm.o
>> +obj-$(CONFIG_TEGRA_BPMP_THERMAL)+= bpmp-thermal.o
>>  
>>  tegra-soctherm-y:= soctherm.o
>> soctherm-fuse.o
>>  tegra-soctherm-$(CONFIG_ARCH_TEGRA_124_SOC) += tegra124-
>> soctherm.o
>> diff --git a/drivers/thermal/tegra/bpmp-thermal.c
>> b/drivers/thermal/tegra/bpmp-thermal.c
>> new file mode 100644
>> index ..b0980dbca3b3
>> --- /dev/null
>> +++ b/drivers/thermal/tegra/bpmp-thermal.c
>> @@ -0,0 +1,263 @@
>> +/*
>> + * Copyright (c) 2015-2017, NVIDIA CORPORATION.  All rights
>> reserved.
>> + *
>> + * Author:
>> + *  Mikko Perttunen 
>> + *  Aapo Vienamo
>> + *
>> + * This software is licensed under the terms of the GNU General
>> Public
>> + * License version 2, as published by the Free Software Foundation,
>> and
>> + * may be copied, distributed, and modified under those terms.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + *
>> + */
>> +
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +
>> +#include 
>> +#include 
>> +
>> +struct tegra_bpmp_thermal_zone {
>> +struct tegra_bpmp_thermal *tegra;
>> +struct thermal_zone_device *tzd;
>> +struct work_struct tz_device_update_work;
>> +unsigned int idx;
>> +};
>> +
>> +struct tegra_bpmp_thermal {
>> +struct device *dev;
>> +struct tegra_bpmp *bpmp;
>> +unsigned int num_zones;
>> +struct tegra_bpmp_thermal_zone **zones;
>> +};
>> +
>> +static int tegra_bpmp_thermal_get_temp(void *data, int *out_temp)
>> +{
>> +struct tegra_bpmp_thermal_zone *zone = data;
>> +struct mrq_thermal_host_to_bpmp_request req;
>> +union mrq_thermal_bpmp_to_host_response reply;
>> +struct tegra_bpmp_message msg;
>> +int err;
>> +
>> +memset(, 0, sizeof(req));
>> +req.type = CMD_THERMAL_GET_TEMP;
>> +req.get_temp.zone = zone->idx;
>> +
>> +memset(, 0, sizeof(msg));
>> +msg.mrq = MRQ_THERMAL;
>> +msg.tx.data = 
>> +msg.tx.size = sizeof(req);
>> +msg.rx.data = 
>> +msg.rx.size = sizeof(reply);
>> +

Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-10 Thread Zhang Rui
On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
> an
> interface to thermal sensors on the system-on-chip. This driver
> implements access to the interface. It supports reading the
> temperature, setting trip points and receiving notification of a
> tripped trip point.
> 
> Signed-off-by: Mikko Perttunen 

Wei Ni,

what do you think of this patch?

thanks,
rui
> ---
> v2:
> - don't allocate space for disabled zones
> - allow compilation with COMPILE_TEST
> 
>  drivers/thermal/Makefile |   2 +-
>  drivers/thermal/tegra/Kconfig|   7 +
>  drivers/thermal/tegra/Makefile   |   3 +-
>  drivers/thermal/tegra/bpmp-thermal.c | 263
> +++
>  4 files changed, 273 insertions(+), 2 deletions(-)
>  create mode 100644 drivers/thermal/tegra/bpmp-thermal.c
> 
> diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
> index 094d7039981c..c03dccdba7b8 100644
> --- a/drivers/thermal/Makefile
> +++ b/drivers/thermal/Makefile
> @@ -54,7 +54,7 @@ obj-$(CONFIG_INTEL_BXT_PMIC_THERMAL) +=
> intel_bxt_pmic_thermal.o
>  obj-$(CONFIG_INTEL_PCH_THERMAL)  += intel_pch_thermal.o
>  obj-$(CONFIG_ST_THERMAL) += st/
>  obj-$(CONFIG_QCOM_TSENS) += qcom/
> -obj-$(CONFIG_TEGRA_SOCTHERM) += tegra/
> +obj-y+= tegra/
>  obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
>  obj-$(CONFIG_MTK_THERMAL)+= mtk_thermal.o
>  obj-$(CONFIG_GENERIC_ADC_THERMAL)+= thermal-generic-adc.o
> diff --git a/drivers/thermal/tegra/Kconfig
> b/drivers/thermal/tegra/Kconfig
> index cec586ec7e4b..f8740f7852e3 100644
> --- a/drivers/thermal/tegra/Kconfig
> +++ b/drivers/thermal/tegra/Kconfig
> @@ -10,4 +10,11 @@ config TEGRA_SOCTHERM
>     zones to manage temperatures. This option is also required
> for the
>     emergency thermal reset (thermtrip) feature to function.
>  
> +config TEGRA_BPMP_THERMAL
> + tristate "Tegra BPMP thermal sensing"
> + depends on TEGRA_BPMP || COMPILE_TEST
> + help
> +  Enable this option for support for sensing system
> temperature of NVIDIA
> +  Tegra systems-on-chip with the BPMP coprocessor (Tegra186).
> +
>  endmenu
> diff --git a/drivers/thermal/tegra/Makefile
> b/drivers/thermal/tegra/Makefile
> index 1ce1af2cf0f5..757abcd1feaf 100644
> --- a/drivers/thermal/tegra/Makefile
> +++ b/drivers/thermal/tegra/Makefile
> @@ -1,4 +1,5 @@
> -obj-$(CONFIG_TEGRA_SOCTHERM) += tegra-soctherm.o
> +obj-$(CONFIG_TEGRA_SOCTHERM) += tegra-soctherm.o
> +obj-$(CONFIG_TEGRA_BPMP_THERMAL) += bpmp-thermal.o
>  
>  tegra-soctherm-y := soctherm.o
> soctherm-fuse.o
>  tegra-soctherm-$(CONFIG_ARCH_TEGRA_124_SOC)  += tegra124-
> soctherm.o
> diff --git a/drivers/thermal/tegra/bpmp-thermal.c
> b/drivers/thermal/tegra/bpmp-thermal.c
> new file mode 100644
> index ..b0980dbca3b3
> --- /dev/null
> +++ b/drivers/thermal/tegra/bpmp-thermal.c
> @@ -0,0 +1,263 @@
> +/*
> + * Copyright (c) 2015-2017, NVIDIA CORPORATION.  All rights
> reserved.
> + *
> + * Author:
> + *   Mikko Perttunen 
> + *   Aapo Vienamo
> + *
> + * This software is licensed under the terms of the GNU General
> Public
> + * License version 2, as published by the Free Software Foundation,
> and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include 
> +#include 
> +
> +struct tegra_bpmp_thermal_zone {
> + struct tegra_bpmp_thermal *tegra;
> + struct thermal_zone_device *tzd;
> + struct work_struct tz_device_update_work;
> + unsigned int idx;
> +};
> +
> +struct tegra_bpmp_thermal {
> + struct device *dev;
> + struct tegra_bpmp *bpmp;
> + unsigned int num_zones;
> + struct tegra_bpmp_thermal_zone **zones;
> +};
> +
> +static int tegra_bpmp_thermal_get_temp(void *data, int *out_temp)
> +{
> + struct tegra_bpmp_thermal_zone *zone = data;
> + struct mrq_thermal_host_to_bpmp_request req;
> + union mrq_thermal_bpmp_to_host_response reply;
> + struct tegra_bpmp_message msg;
> + int err;
> +
> + memset(, 0, sizeof(req));
> + req.type = CMD_THERMAL_GET_TEMP;
> + req.get_temp.zone = zone->idx;
> +
> + memset(, 0, sizeof(msg));
> + msg.mrq = MRQ_THERMAL;
> + msg.tx.data = 
> + msg.tx.size = sizeof(req);
> + msg.rx.data = 
> + msg.rx.size = sizeof(reply);
> +
> + err = tegra_bpmp_transfer(zone->tegra->bpmp, );
> + if (err)
> + return err;
> +
> + *out_temp = reply.get_temp.temp;
> +
> + return 0;

Re: [PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-08-10 Thread Zhang Rui
On Mon, 2017-07-24 at 19:29 +0300, Mikko Perttunen wrote:
> On Tegra186, the BPMP (Boot and Power Management Processor) exposes
> an
> interface to thermal sensors on the system-on-chip. This driver
> implements access to the interface. It supports reading the
> temperature, setting trip points and receiving notification of a
> tripped trip point.
> 
> Signed-off-by: Mikko Perttunen 

Wei Ni,

what do you think of this patch?

thanks,
rui
> ---
> v2:
> - don't allocate space for disabled zones
> - allow compilation with COMPILE_TEST
> 
>  drivers/thermal/Makefile |   2 +-
>  drivers/thermal/tegra/Kconfig|   7 +
>  drivers/thermal/tegra/Makefile   |   3 +-
>  drivers/thermal/tegra/bpmp-thermal.c | 263
> +++
>  4 files changed, 273 insertions(+), 2 deletions(-)
>  create mode 100644 drivers/thermal/tegra/bpmp-thermal.c
> 
> diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
> index 094d7039981c..c03dccdba7b8 100644
> --- a/drivers/thermal/Makefile
> +++ b/drivers/thermal/Makefile
> @@ -54,7 +54,7 @@ obj-$(CONFIG_INTEL_BXT_PMIC_THERMAL) +=
> intel_bxt_pmic_thermal.o
>  obj-$(CONFIG_INTEL_PCH_THERMAL)  += intel_pch_thermal.o
>  obj-$(CONFIG_ST_THERMAL) += st/
>  obj-$(CONFIG_QCOM_TSENS) += qcom/
> -obj-$(CONFIG_TEGRA_SOCTHERM) += tegra/
> +obj-y+= tegra/
>  obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
>  obj-$(CONFIG_MTK_THERMAL)+= mtk_thermal.o
>  obj-$(CONFIG_GENERIC_ADC_THERMAL)+= thermal-generic-adc.o
> diff --git a/drivers/thermal/tegra/Kconfig
> b/drivers/thermal/tegra/Kconfig
> index cec586ec7e4b..f8740f7852e3 100644
> --- a/drivers/thermal/tegra/Kconfig
> +++ b/drivers/thermal/tegra/Kconfig
> @@ -10,4 +10,11 @@ config TEGRA_SOCTHERM
>     zones to manage temperatures. This option is also required
> for the
>     emergency thermal reset (thermtrip) feature to function.
>  
> +config TEGRA_BPMP_THERMAL
> + tristate "Tegra BPMP thermal sensing"
> + depends on TEGRA_BPMP || COMPILE_TEST
> + help
> +  Enable this option for support for sensing system
> temperature of NVIDIA
> +  Tegra systems-on-chip with the BPMP coprocessor (Tegra186).
> +
>  endmenu
> diff --git a/drivers/thermal/tegra/Makefile
> b/drivers/thermal/tegra/Makefile
> index 1ce1af2cf0f5..757abcd1feaf 100644
> --- a/drivers/thermal/tegra/Makefile
> +++ b/drivers/thermal/tegra/Makefile
> @@ -1,4 +1,5 @@
> -obj-$(CONFIG_TEGRA_SOCTHERM) += tegra-soctherm.o
> +obj-$(CONFIG_TEGRA_SOCTHERM) += tegra-soctherm.o
> +obj-$(CONFIG_TEGRA_BPMP_THERMAL) += bpmp-thermal.o
>  
>  tegra-soctherm-y := soctherm.o
> soctherm-fuse.o
>  tegra-soctherm-$(CONFIG_ARCH_TEGRA_124_SOC)  += tegra124-
> soctherm.o
> diff --git a/drivers/thermal/tegra/bpmp-thermal.c
> b/drivers/thermal/tegra/bpmp-thermal.c
> new file mode 100644
> index ..b0980dbca3b3
> --- /dev/null
> +++ b/drivers/thermal/tegra/bpmp-thermal.c
> @@ -0,0 +1,263 @@
> +/*
> + * Copyright (c) 2015-2017, NVIDIA CORPORATION.  All rights
> reserved.
> + *
> + * Author:
> + *   Mikko Perttunen 
> + *   Aapo Vienamo
> + *
> + * This software is licensed under the terms of the GNU General
> Public
> + * License version 2, as published by the Free Software Foundation,
> and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include 
> +#include 
> +
> +struct tegra_bpmp_thermal_zone {
> + struct tegra_bpmp_thermal *tegra;
> + struct thermal_zone_device *tzd;
> + struct work_struct tz_device_update_work;
> + unsigned int idx;
> +};
> +
> +struct tegra_bpmp_thermal {
> + struct device *dev;
> + struct tegra_bpmp *bpmp;
> + unsigned int num_zones;
> + struct tegra_bpmp_thermal_zone **zones;
> +};
> +
> +static int tegra_bpmp_thermal_get_temp(void *data, int *out_temp)
> +{
> + struct tegra_bpmp_thermal_zone *zone = data;
> + struct mrq_thermal_host_to_bpmp_request req;
> + union mrq_thermal_bpmp_to_host_response reply;
> + struct tegra_bpmp_message msg;
> + int err;
> +
> + memset(, 0, sizeof(req));
> + req.type = CMD_THERMAL_GET_TEMP;
> + req.get_temp.zone = zone->idx;
> +
> + memset(, 0, sizeof(msg));
> + msg.mrq = MRQ_THERMAL;
> + msg.tx.data = 
> + msg.tx.size = sizeof(req);
> + msg.rx.data = 
> + msg.rx.size = sizeof(reply);
> +
> + err = tegra_bpmp_transfer(zone->tegra->bpmp, );
> + if (err)
> + return err;
> +
> + *out_temp = reply.get_temp.temp;
> +
> + return 0;
> +}
> +
> +static int tegra_bpmp_thermal_set_trips(void *data, 

[PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-07-24 Thread Mikko Perttunen
On Tegra186, the BPMP (Boot and Power Management Processor) exposes an
interface to thermal sensors on the system-on-chip. This driver
implements access to the interface. It supports reading the
temperature, setting trip points and receiving notification of a
tripped trip point.

Signed-off-by: Mikko Perttunen 
---
v2:
- don't allocate space for disabled zones
- allow compilation with COMPILE_TEST

 drivers/thermal/Makefile |   2 +-
 drivers/thermal/tegra/Kconfig|   7 +
 drivers/thermal/tegra/Makefile   |   3 +-
 drivers/thermal/tegra/bpmp-thermal.c | 263 +++
 4 files changed, 273 insertions(+), 2 deletions(-)
 create mode 100644 drivers/thermal/tegra/bpmp-thermal.c

diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index 094d7039981c..c03dccdba7b8 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -54,7 +54,7 @@ obj-$(CONFIG_INTEL_BXT_PMIC_THERMAL) += 
intel_bxt_pmic_thermal.o
 obj-$(CONFIG_INTEL_PCH_THERMAL)+= intel_pch_thermal.o
 obj-$(CONFIG_ST_THERMAL)   += st/
 obj-$(CONFIG_QCOM_TSENS)   += qcom/
-obj-$(CONFIG_TEGRA_SOCTHERM)   += tegra/
+obj-y  += tegra/
 obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
 obj-$(CONFIG_MTK_THERMAL)  += mtk_thermal.o
 obj-$(CONFIG_GENERIC_ADC_THERMAL)  += thermal-generic-adc.o
diff --git a/drivers/thermal/tegra/Kconfig b/drivers/thermal/tegra/Kconfig
index cec586ec7e4b..f8740f7852e3 100644
--- a/drivers/thermal/tegra/Kconfig
+++ b/drivers/thermal/tegra/Kconfig
@@ -10,4 +10,11 @@ config TEGRA_SOCTHERM
  zones to manage temperatures. This option is also required for the
  emergency thermal reset (thermtrip) feature to function.
 
+config TEGRA_BPMP_THERMAL
+   tristate "Tegra BPMP thermal sensing"
+   depends on TEGRA_BPMP || COMPILE_TEST
+   help
+Enable this option for support for sensing system temperature of NVIDIA
+Tegra systems-on-chip with the BPMP coprocessor (Tegra186).
+
 endmenu
diff --git a/drivers/thermal/tegra/Makefile b/drivers/thermal/tegra/Makefile
index 1ce1af2cf0f5..757abcd1feaf 100644
--- a/drivers/thermal/tegra/Makefile
+++ b/drivers/thermal/tegra/Makefile
@@ -1,4 +1,5 @@
-obj-$(CONFIG_TEGRA_SOCTHERM)   += tegra-soctherm.o
+obj-$(CONFIG_TEGRA_SOCTHERM)   += tegra-soctherm.o
+obj-$(CONFIG_TEGRA_BPMP_THERMAL)   += bpmp-thermal.o
 
 tegra-soctherm-y   := soctherm.o soctherm-fuse.o
 tegra-soctherm-$(CONFIG_ARCH_TEGRA_124_SOC)+= tegra124-soctherm.o
diff --git a/drivers/thermal/tegra/bpmp-thermal.c 
b/drivers/thermal/tegra/bpmp-thermal.c
new file mode 100644
index ..b0980dbca3b3
--- /dev/null
+++ b/drivers/thermal/tegra/bpmp-thermal.c
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) 2015-2017, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * Author:
+ * Mikko Perttunen 
+ * Aapo Vienamo
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+struct tegra_bpmp_thermal_zone {
+   struct tegra_bpmp_thermal *tegra;
+   struct thermal_zone_device *tzd;
+   struct work_struct tz_device_update_work;
+   unsigned int idx;
+};
+
+struct tegra_bpmp_thermal {
+   struct device *dev;
+   struct tegra_bpmp *bpmp;
+   unsigned int num_zones;
+   struct tegra_bpmp_thermal_zone **zones;
+};
+
+static int tegra_bpmp_thermal_get_temp(void *data, int *out_temp)
+{
+   struct tegra_bpmp_thermal_zone *zone = data;
+   struct mrq_thermal_host_to_bpmp_request req;
+   union mrq_thermal_bpmp_to_host_response reply;
+   struct tegra_bpmp_message msg;
+   int err;
+
+   memset(, 0, sizeof(req));
+   req.type = CMD_THERMAL_GET_TEMP;
+   req.get_temp.zone = zone->idx;
+
+   memset(, 0, sizeof(msg));
+   msg.mrq = MRQ_THERMAL;
+   msg.tx.data = 
+   msg.tx.size = sizeof(req);
+   msg.rx.data = 
+   msg.rx.size = sizeof(reply);
+
+   err = tegra_bpmp_transfer(zone->tegra->bpmp, );
+   if (err)
+   return err;
+
+   *out_temp = reply.get_temp.temp;
+
+   return 0;
+}
+
+static int tegra_bpmp_thermal_set_trips(void *data, int low, int high)
+{
+   struct tegra_bpmp_thermal_zone *zone = data;
+   struct mrq_thermal_host_to_bpmp_request req;
+   struct tegra_bpmp_message msg;
+
+   memset(, 0, sizeof(req));
+   req.type = CMD_THERMAL_SET_TRIP;
+   

[PATCH v2 5/5] thermal: Add Tegra BPMP thermal sensor driver

2017-07-24 Thread Mikko Perttunen
On Tegra186, the BPMP (Boot and Power Management Processor) exposes an
interface to thermal sensors on the system-on-chip. This driver
implements access to the interface. It supports reading the
temperature, setting trip points and receiving notification of a
tripped trip point.

Signed-off-by: Mikko Perttunen 
---
v2:
- don't allocate space for disabled zones
- allow compilation with COMPILE_TEST

 drivers/thermal/Makefile |   2 +-
 drivers/thermal/tegra/Kconfig|   7 +
 drivers/thermal/tegra/Makefile   |   3 +-
 drivers/thermal/tegra/bpmp-thermal.c | 263 +++
 4 files changed, 273 insertions(+), 2 deletions(-)
 create mode 100644 drivers/thermal/tegra/bpmp-thermal.c

diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index 094d7039981c..c03dccdba7b8 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -54,7 +54,7 @@ obj-$(CONFIG_INTEL_BXT_PMIC_THERMAL) += 
intel_bxt_pmic_thermal.o
 obj-$(CONFIG_INTEL_PCH_THERMAL)+= intel_pch_thermal.o
 obj-$(CONFIG_ST_THERMAL)   += st/
 obj-$(CONFIG_QCOM_TSENS)   += qcom/
-obj-$(CONFIG_TEGRA_SOCTHERM)   += tegra/
+obj-y  += tegra/
 obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
 obj-$(CONFIG_MTK_THERMAL)  += mtk_thermal.o
 obj-$(CONFIG_GENERIC_ADC_THERMAL)  += thermal-generic-adc.o
diff --git a/drivers/thermal/tegra/Kconfig b/drivers/thermal/tegra/Kconfig
index cec586ec7e4b..f8740f7852e3 100644
--- a/drivers/thermal/tegra/Kconfig
+++ b/drivers/thermal/tegra/Kconfig
@@ -10,4 +10,11 @@ config TEGRA_SOCTHERM
  zones to manage temperatures. This option is also required for the
  emergency thermal reset (thermtrip) feature to function.
 
+config TEGRA_BPMP_THERMAL
+   tristate "Tegra BPMP thermal sensing"
+   depends on TEGRA_BPMP || COMPILE_TEST
+   help
+Enable this option for support for sensing system temperature of NVIDIA
+Tegra systems-on-chip with the BPMP coprocessor (Tegra186).
+
 endmenu
diff --git a/drivers/thermal/tegra/Makefile b/drivers/thermal/tegra/Makefile
index 1ce1af2cf0f5..757abcd1feaf 100644
--- a/drivers/thermal/tegra/Makefile
+++ b/drivers/thermal/tegra/Makefile
@@ -1,4 +1,5 @@
-obj-$(CONFIG_TEGRA_SOCTHERM)   += tegra-soctherm.o
+obj-$(CONFIG_TEGRA_SOCTHERM)   += tegra-soctherm.o
+obj-$(CONFIG_TEGRA_BPMP_THERMAL)   += bpmp-thermal.o
 
 tegra-soctherm-y   := soctherm.o soctherm-fuse.o
 tegra-soctherm-$(CONFIG_ARCH_TEGRA_124_SOC)+= tegra124-soctherm.o
diff --git a/drivers/thermal/tegra/bpmp-thermal.c 
b/drivers/thermal/tegra/bpmp-thermal.c
new file mode 100644
index ..b0980dbca3b3
--- /dev/null
+++ b/drivers/thermal/tegra/bpmp-thermal.c
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) 2015-2017, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * Author:
+ * Mikko Perttunen 
+ * Aapo Vienamo
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+struct tegra_bpmp_thermal_zone {
+   struct tegra_bpmp_thermal *tegra;
+   struct thermal_zone_device *tzd;
+   struct work_struct tz_device_update_work;
+   unsigned int idx;
+};
+
+struct tegra_bpmp_thermal {
+   struct device *dev;
+   struct tegra_bpmp *bpmp;
+   unsigned int num_zones;
+   struct tegra_bpmp_thermal_zone **zones;
+};
+
+static int tegra_bpmp_thermal_get_temp(void *data, int *out_temp)
+{
+   struct tegra_bpmp_thermal_zone *zone = data;
+   struct mrq_thermal_host_to_bpmp_request req;
+   union mrq_thermal_bpmp_to_host_response reply;
+   struct tegra_bpmp_message msg;
+   int err;
+
+   memset(, 0, sizeof(req));
+   req.type = CMD_THERMAL_GET_TEMP;
+   req.get_temp.zone = zone->idx;
+
+   memset(, 0, sizeof(msg));
+   msg.mrq = MRQ_THERMAL;
+   msg.tx.data = 
+   msg.tx.size = sizeof(req);
+   msg.rx.data = 
+   msg.rx.size = sizeof(reply);
+
+   err = tegra_bpmp_transfer(zone->tegra->bpmp, );
+   if (err)
+   return err;
+
+   *out_temp = reply.get_temp.temp;
+
+   return 0;
+}
+
+static int tegra_bpmp_thermal_set_trips(void *data, int low, int high)
+{
+   struct tegra_bpmp_thermal_zone *zone = data;
+   struct mrq_thermal_host_to_bpmp_request req;
+   struct tegra_bpmp_message msg;
+
+   memset(, 0, sizeof(req));
+   req.type = CMD_THERMAL_SET_TRIP;
+   req.set_trip.zone = zone->idx;
+   req.set_trip.enabled = true;
+