linux-mediatek.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Michael Kao <michael.kao@mediatek.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org, srv_heupstream@mediatek.com,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Eduardo Valentin <edubezval@gmail.com>,
	Rob Herring <robh+dt@kernel.org>,
	linux-mediatek@lists.infradead.org, hsinyi@chromium.org,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Zhang Rui <rui.zhang@intel.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [v4,7/7] thermal: mediatek: use spinlock to protect PTPCORESEL
Date: Fri, 5 Jun 2020 11:50:23 +0800	[thread overview]
Message-ID: <1591329023.12739.0.camel@mtksdccf07> (raw)
In-Reply-To: <1afbf412-fbeb-8abe-66d8-bd7ac4e9dd83@linaro.org>

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.
> 
> > 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);
> > 
> 
> 

_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

  reply	other threads:[~2020-06-05  3:56 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-23 12:15 [v4,0/7] Add Mediatek thermal dirver and dtsi Michael Kao
2020-03-23 12:15 ` [v4,1/7] arm64: dts: mt8183: add thermal zone node Michael Kao
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     ` Michael Kao
2020-03-23 12:15 ` [v4,7/7] thermal: mediatek: use spinlock to protect PTPCORESEL Michael Kao
2020-05-14  6:53   ` Michael Kao
2020-05-14  6:55   ` Michael Kao
2020-05-14  8:08     ` Daniel Lezcano
2020-05-14  7:38   ` Michael Kao
2020-05-22 15:36   ` Daniel Lezcano
2020-06-05  3:50     ` Michael Kao [this message]
2020-07-07  2:57       ` Michael Kao
2020-07-07  8:11         ` Daniel Lezcano
2020-07-07  8:13       ` Daniel Lezcano
2020-07-08 10:00         ` 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

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=1591329023.12739.0.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).