linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Kao <michael.kao@mediatek.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Matthias Brugger <matthias.bgg@gmail.com>,
	Zhang Rui <rui.zhang@intel.com>,
	Eduardo Valentin <edubezval@gmail.com>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>, <hsinyi@chromium.org>,
	<linux-pm@vger.kernel.org>, <srv_heupstream@mediatek.com>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>
Subject: Re: [v4,7/7] thermal: mediatek: use spinlock to protect PTPCORESEL
Date: Wed, 8 Jul 2020 18:00:33 +0800	[thread overview]
Message-ID: <1594202433.20216.5.camel@mtksdccf07> (raw)
In-Reply-To: <4c9e9abf-1f87-ae68-3827-22df52adfd19@linaro.org>

On Tue, 2020-07-07 at 10:13 +0200, Daniel Lezcano wrote:
> On 05/06/2020 05:50, Michael Kao wrote:
> > On Fri, 2020-05-22 at 17:36 +0200, Daniel Lezcano wrote:
> >> On 23/03/2020 13:15, Michael Kao wrote:
> >>> From: "michael.kao" <michael.kao@mediatek.com>
> >>>
> >>> The driver of thermal and svs will use the
> >>> same register for the project which should select
> >>> bank before reading sensor value.
> >>
> >> Here there is a design problem AFAICT. The sensor should not be using
> >> external locks.
> >>
> > The PTPCORESEL is a common register used by svs and thermal.
> > The thermal need to ensure PTPCORESEL register will not be changed by
> > svs when thermal switch bank to read raw data of temperature.
> > So we use svs_lock to make sure there is no conflict between the two
> > drivers.
> 
> Why not use regmap ?
> 
Hi Daniel,

We are not sure the regmap can solve the problem.
The regmap can lock CORESELECT. But it can not protect 
the other sensors registers which thermal controller start to
read temperature need to access.

After internal disscussion, we don't have this kind of experience to
use regmap to protect some peice of code.
We will do some research of this kind of usage.
Thanks for your suggestion.

> >>> Signed-off-by: Michael Kao <michael.kao@mediatek.com>
> >>> ---
> >>>  drivers/thermal/mtk_thermal.c | 9 ++++-----
> >>>  1 file changed, 4 insertions(+), 5 deletions(-)
> >>>
> >>> diff --git a/drivers/thermal/mtk_thermal.c b/drivers/thermal/mtk_thermal.c
> >>> index 9eaca432920e..594ad4f0f8cd 100644
> >>> --- a/drivers/thermal/mtk_thermal.c
> >>> +++ b/drivers/thermal/mtk_thermal.c
> >>> @@ -22,6 +22,7 @@
> >>>  #include <linux/thermal.h>
> >>>  #include <linux/reset.h>
> >>>  #include <linux/types.h>
> >>> +#include <linux/power/mtk_svs.h>
> >>>  
> >>>  /* AUXADC Registers */
> >>>  #define AUXADC_CON1_SET_V	0x008
> >>> @@ -262,7 +263,7 @@ struct mtk_thermal {
> >>>  	struct clk *clk_peri_therm;
> >>>  	struct clk *clk_auxadc;
> >>>  	/* lock: for getting and putting banks */
> >>> -	struct mutex lock;
> >>> +	unsigned long flags;
> >>>  
> >>>  	/* Calibration values */
> >>>  	s32 adc_ge;
> >>> @@ -561,7 +562,7 @@ static void mtk_thermal_get_bank(struct mtk_thermal_bank *bank)
> >>>  	u32 val;
> >>>  
> >>>  	if (mt->conf->need_switch_bank) {
> >>> -		mutex_lock(&mt->lock);
> >>> +		mt->flags = claim_mtk_svs_lock();
> >>>  
> >>>  		val = readl(mt->thermal_base + PTPCORESEL);
> >>>  		val &= ~0xf;
> >>> @@ -581,7 +582,7 @@ static void mtk_thermal_put_bank(struct mtk_thermal_bank *bank)
> >>>  	struct mtk_thermal *mt = bank->mt;
> >>>  
> >>>  	if (mt->conf->need_switch_bank)
> >>> -		mutex_unlock(&mt->lock);
> >>> +		release_mtk_svs_lock(mt->flags);
> >>>  }
> >>>  
> >>>  /**
> >>> @@ -938,8 +939,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
> >>>  	if (ret)
> >>>  		return ret;
> >>>  
> >>> -	mutex_init(&mt->lock);
> >>> -
> >>>  	mt->dev = &pdev->dev;
> >>>  
> >>>  	auxadc = of_parse_phandle(np, "mediatek,auxadc", 0);
> >>>
> >>
> >>
> > 
> 
> 


      reply	other threads:[~2020-07-08 10:00 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200323121537.22697-1-michael.kao@mediatek.com>
2020-03-23 12:15 ` [v4,2/7] arm64: dts: mt8183: add dynamic power coefficients Michael Kao
2020-03-23 12:15 ` [v4,3/7] arm64: dts: mt8183: Add #cooling-cells to CPU nodes Michael Kao
2020-03-23 12:15 ` [v4,4/7] arm64: dts: mt8183: Configure CPU cooling Michael Kao
2020-03-23 12:15 ` [v4,5/7] thermal: mediatek: mt8183: fix bank number settings Michael Kao
2020-05-22 15:33   ` Daniel Lezcano
2020-03-23 12:15 ` [v4,6/7] thermal: mediatek: add another get_temp ops for thermal sensors Michael Kao
2020-05-22 15:32   ` Daniel Lezcano
2020-07-07  3:07     ` [v4, 6/7] " Michael Kao
2020-05-21 12:51 ` [v4,0/7] Add Mediatek thermal dirver and dtsi Matthias Brugger
2020-05-22  4:07   ` Michael Kao
2020-05-22  4:09   ` Michael Kao
     [not found] ` <20200323121537.22697-8-michael.kao@mediatek.com>
     [not found]   ` <1589439322.11120.2.camel@mtksdccf07>
2020-05-14  8:08     ` [v4,7/7] thermal: mediatek: use spinlock to protect PTPCORESEL Daniel Lezcano
2020-05-22 15:36   ` Daniel Lezcano
     [not found]     ` <1591329023.12739.0.camel@mtksdccf07>
     [not found]       ` <1594090621.20216.0.camel@mtksdccf07>
2020-07-07  8:11         ` Daniel Lezcano
2020-07-07  8:13       ` Daniel Lezcano
2020-07-08 10:00         ` Michael Kao [this message]

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=1594202433.20216.5.camel@mtksdccf07 \
    --to=michael.kao@mediatek.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=edubezval@gmail.com \
    --cc=hsinyi@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=rui.zhang@intel.com \
    --cc=srv_heupstream@mediatek.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).