From: Frank Lee <tiny.windzz@gmail.com>
To: Frank Lee <tiny.windzz@gmail.com>,
rui.zhang@intel.com, Eduardo Valentin <edubezval@gmail.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
robh+dt@kernel.org, Mark Rutland <mark.rutland@arm.com>,
Maxime Ripard <maxime.ripard@bootlin.com>,
Chen-Yu Tsai <wens@csie.org>,
catalin.marinas@arm.com, will.deacon@arm.com,
David Miller <davem@davemloft.net>,
Mauro Carvalho Chehab <mchehab+samsung@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jonathan.Cameron@huawei.com,
Nicolas Ferre <nicolas.ferre@microchip.com>,
paulmck@linux.ibm.com, Andy Gross <andy.gross@linaro.org>,
olof@lixom.net, bjorn.andersson@linaro.org,
Jagan Teki <jagan@amarulasolutions.com>,
marc.w.gonzalez@free.fr, stefan.wahren@i2se.com,
enric.balletbo@collabora.com, devicetree@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
Linux PM <linux-pm@vger.kernel.org>
Subject: Re: [PATCH 2/3] thermal: sun50i: add thermal driver for h6
Date: Sat, 18 May 2019 00:34:57 +0800 [thread overview]
Message-ID: <CAEExFWvDO3wJd6wp1hFudf3EGF0NixgKAwAd5-b1=VLF+7-jCw@mail.gmail.com> (raw)
In-Reply-To: <20190516182936.h6xdzp3gtg4ikave@core.my.home>
HI,
On Fri, May 17, 2019 at 2:29 AM Ondřej Jirman <megous@megous.com> wrote:
>
> Hi Yangtao,
>
> thank you for work on this driver.
>
> On Fri, May 17, 2019 at 02:06:53AM +0800, Frank Lee wrote:
> > HI Ondřej,
> >
> > On Mon, May 13, 2019 at 6:16 AM Ondřej Jirman <megous@megous.com> wrote:
> > > > +
> > > > +/* Temp Unit: millidegree Celsius */
> > > > +static int tsens_reg2temp(struct tsens_device *tmdev,
> > > > + int reg)
> > >
> > > Please name all functions so that they are more clearly identifiable
> > > in stack traces as belonging to this driver. For example:
> > >
> > > sun8i_ths_reg2temp
> > >
> > > The same applies for all tsens_* functions below. tsens_* is too
> > > generic.
> >
> > Done but no sun8i_ths_reg2temp.
> >
> > ths_reg2tem() should be a generic func.
> > I think it should be suitable for all platforms, so no platform prefix.
>
> You've missed my point. The driver name is sun8i_thermal and if you get
> and oops from the kernel you'll get a stack trace where there are just function
> names. If you use too generic function names, it will not be clear which
> driver is oopsing.
>
> - sun8i_ths_reg2temp will tell you much more clearly where to search than
> - ths_reg2temp
>
> Of course you can always grep, but most thermal drivers are thermal sensor (ths)
> drivers, and if multiple of them used this too-generic naming scheme you'd
> have hard time debugging.
>
> Look at other thermal drivers. They usually encode driver name in the function
> names to help with identification (even if these are static driver-local
> functions).
>
Can we change to sunxi_ths_ prefix?
> > > > +static int tsens_probe(struct platform_device *pdev)
> > > > +{
> > > > + struct tsens_device *tmdev;
> > > > + struct device *dev = &pdev->dev;
> > > > + int ret;
> > > > +
> > > > + tmdev = devm_kzalloc(dev, sizeof(*tmdev), GFP_KERNEL);
> > > > + if (!tmdev)
> > > > + return -ENOMEM;
> > > > +
> > > > + tmdev->dev = dev;
> > > > + tmdev->chip = of_device_get_match_data(&pdev->dev);
> > > > + if (!tmdev->chip)
> > > > + return -EINVAL;
> > > > +
> > > > + ret = tsens_init(tmdev);
> > > > + if (ret)
> > > > + return ret;
> > > > +
> > > > + ret = tsens_register(tmdev);
> > > > + if (ret)
> > > > + return ret;
> > >
> > > Why split this out of probe into separate functions?
> > >
> > > > + ret = tmdev->chip->enable(tmdev);
> > > > + if (ret)
> > > > + return ret;
> > > > +
> > > > + platform_set_drvdata(pdev, tmdev);
> > > > +
> > > > + return ret;
> > > > +}
> > > > +
> > > > +static int tsens_remove(struct platform_device *pdev)
> > > > +{
> > > > + struct tsens_device *tmdev = platform_get_drvdata(pdev);
> > > > +
> > > > + tmdev->chip->disable(tmdev);
> > > > +
> > > > + return 0;
> > > > +}
> > > > +
> > > > +static int sun50i_thermal_enable(struct tsens_device *tmdev)
> > > > +{
> > > > + int ret, val;
> > > > +
> > > > + ret = reset_control_deassert(tmdev->reset);
> > > > + if (ret)
> > > > + return ret;
> > > > +
> > > > + ret = clk_prepare_enable(tmdev->bus_clk);
> > > > + if (ret)
> > > > + goto assert_reset;
> > > > +
> > > > + ret = tsens_calibrate(tmdev);
> > > > + if (ret)
> > > > + return ret;
> > >
> > > If this fails (it may likely fail with EPROBE_DEFER) you are leaving reset
> > > deasserted, and clock enabled.
> > >
> > > Overall, I think, reset/clock management and nvmem reading will be common
> > > to all the HW variants, so it doesn't make much sense splitting it out
> > > of probe into separate functions, and makes it more error prone.
> >
> > Our long-term goal is to support all platforms.
> > Bacicallt there is a differencr between each generation.
> > So I feel it necessary to isolate these differences.
> >
> > Maybe:
> > At some point, we can draw a part of the public part and platform
> > difference into different
> > files. something like qcom thermal driver.
>
> I understand, but I wrote ths drivers for H3/H5/A83T and it so far it looks like
> all of them would share these 3 calls.
>
> You'll be enabling clock/reset and callibrating everywhere. So putting this to
> per-SoC function seems premature.
In fact, enalbe and disable are the suspend and resume functions.(PM
callback will be added in the future)
When exiting from s2ram, the register will become the initial value.
We need to do all the work, enabling reset/clk ,calibrating and
initializing other reg.
So I think it is no need to put enabling reset/clk and calibrating to
probe func, and I'd like
to keep enable and disable func.
>
> thank you and regards,
> o.
>
> > Regards,
> > Yangtao
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-05-17 16:35 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-12 8:26 [PATCH 0/3] add thermal driver for h6 Yangtao Li
2019-05-12 8:26 ` [PATCH 1/3] arm64: defconfig: add allwinner sid support Yangtao Li
2019-05-12 13:25 ` Maxime Ripard
2019-05-12 8:26 ` [PATCH 2/3] thermal: sun50i: add thermal driver for h6 Yangtao Li
2019-05-12 13:39 ` Maxime Ripard
2019-05-12 21:41 ` Ondřej Jirman
2019-05-16 15:02 ` Maxime Ripard
2019-05-16 17:36 ` Ondřej Jirman
2019-05-16 18:10 ` Frank Lee
2019-05-17 7:31 ` Maxime Ripard
2019-05-17 17:19 ` Frank Lee
2019-05-21 7:41 ` Maxime Ripard
2019-05-16 17:51 ` Frank Lee
2019-05-16 21:11 ` Ondřej Jirman
2019-05-17 7:36 ` Maxime Ripard
2019-05-17 17:27 ` Frank Lee
2019-05-21 8:05 ` Maxime Ripard
2019-05-21 10:27 ` Ondřej Jirman
2019-05-21 14:27 ` Maxime Ripard
2019-05-21 17:33 ` Ondřej Jirman
2019-05-17 19:21 ` Vasily Khoruzhick
2019-05-21 7:47 ` Maxime Ripard
2019-05-12 22:16 ` Ondřej Jirman
2019-05-16 18:06 ` Frank Lee
2019-05-16 18:29 ` Ondřej Jirman
2019-05-17 16:34 ` Frank Lee [this message]
2019-05-19 14:22 ` Ondřej Jirman
2019-05-20 10:59 ` Maxime Ripard
2019-05-25 18:48 ` Frank Lee
2019-05-25 18:51 ` Frank Lee
2019-05-25 19:53 ` Vasily Khoruzhick
2019-05-26 1:24 ` Ondřej Jirman
2019-05-12 22:39 ` Ondřej Jirman
2019-05-13 10:01 ` Maxime Ripard
2019-05-16 18:08 ` Frank Lee
2019-05-12 8:26 ` [PATCH 3/3] dt-bindings: thermal: add binding document for h6 thermal controller Yangtao Li
2019-05-12 13:41 ` Maxime Ripard
2019-05-16 18:13 ` Frank Lee
2019-05-17 7:38 ` Maxime Ripard
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='CAEExFWvDO3wJd6wp1hFudf3EGF0NixgKAwAd5-b1=VLF+7-jCw@mail.gmail.com' \
--to=tiny.windzz@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=andy.gross@linaro.org \
--cc=bjorn.andersson@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=daniel.lezcano@linaro.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edubezval@gmail.com \
--cc=enric.balletbo@collabora.com \
--cc=gregkh@linuxfoundation.org \
--cc=jagan@amarulasolutions.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=marc.w.gonzalez@free.fr \
--cc=mark.rutland@arm.com \
--cc=maxime.ripard@bootlin.com \
--cc=mchehab+samsung@kernel.org \
--cc=nicolas.ferre@microchip.com \
--cc=olof@lixom.net \
--cc=paulmck@linux.ibm.com \
--cc=robh+dt@kernel.org \
--cc=rui.zhang@intel.com \
--cc=stefan.wahren@i2se.com \
--cc=wens@csie.org \
--cc=will.deacon@arm.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).