All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Daniel Kurtz <djkurtz@chromium.org>
Cc: linux-pm@vger.kernel.org, Zhang Rui <rui.zhang@intel.com>,
	Eduardo Valentin <edubezval@gmail.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	linux-mediatek@lists.infradead.org,
	Sasha Hauer <kernel@pengutronix.de>,
	Matthias Brugger <matthias.bgg@gmail.com>
Subject: Re: [PATCH 2/3] thermal: Add Mediatek thermal controller support
Date: Thu, 6 Aug 2015 10:10:11 +0200	[thread overview]
Message-ID: <20150806081011.GM18700@pengutronix.de> (raw)
In-Reply-To: <CAGS+omBvkS4tZirsPp2L=vQaV7aWheEL0Nov1Yvu81dVbWdz-g@mail.gmail.com>

On Thu, Aug 06, 2015 at 02:02:30AM +0800, Daniel Kurtz wrote:
> 
> > +
> > +#define THERMAL_NAME    "mtk-thermal"
> > +
> > +struct mtk_thermal;
> > +
> > +struct mtk_thermal_bank {
> > +       struct mtk_thermal *mt;
> > +       struct thermal_zone_device *tz;
> 
> A better name for this field is "tzd" - that is what is used in
> drivers/thermal/of-thermal.c.
> 
> > +       int id;
> 
> nit: we don't need both *mt and id, since "id" here is always just the
> index into the mtk_thermal->banks[] array, given either mt or id and
> our bank pointer, we can derive the other.
> 
> I think something like this would work:
> 
> static inline struct mtk_thermal *to_mtk_thermal(struct mtk_thermal_bank* bank)
> {
>   struct mtk_thermal_bank *banks = bank - bank->id;
>   return container_of(banks, struct mtk_thermal_bank, banks);
> }
> 
> or:
> 
> static inline int mtk_thermal_bank_id(struct mtk_thermal_bank* bank)
> {
>   return bank - bank->mt->banks;
> }

Yes, probably both work. I don't think though that any of these makes
the code clearer.

> > +static void mtk_thermal_init_bank(struct mtk_thermal *mt, int num,
> > +               u32 apmixed_phys_base, u32 auxadc_phys_base)
> > +{
> > +       struct mtk_thermal_bank *bank = &mt->banks[num];
> > +       const struct mtk_thermal_bank_cfg *cfg = &bank_data[num];
> > +       int i;
> > +
> > +       bank->id = num;
> > +       bank->mt = mt;
> > +
> > +       mtk_thermal_get_bank(bank);
> > +
> > +       /* bus clock 66M counting unit is 12 * 15.15ns * 256 = 46.540us */
> > +       writel(TEMP_MONCTL1_PERIOD_UNIT(12), mt->thermal_base + TEMP_MONCTL1);
> > +
> 
> The only things that look zone specific here are the following:
> 
>   mtk_thermal_get_bank(bank);
>   for (i = 0; i < cfg->num_sensors; i++)
>     writel(sensor_mux_values[cfg->sensors[i]], mt->thermal_base +
> sensing_points[i].adcpnp);
>   writel((1 << cfg->num_sensors) - 1, mt->thermal_base + TEMP_MONCTL0);
>   mtk_thermal_put_bank(bank);
> 
> The rest is just rewriting the same constants to the same fixed
> register addresses.
> 
> But maybe that get/put zone thing does some magic shadow register selecting?

Yes. The comment above mtk_thermal_get_bank() explains that.

> > +
> > +       ret = clk_prepare_enable(mt->clk_peri_therm);
> > +       if (ret) {
> > +               dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
> > +               goto err_disable_clk_auxadc;
> > +       }
> > +
> > +       /*
> > +        * These calibration values should finally be provided by the
> > +        * firmware or fuses. For now use default values.
> > +        */
> > +       mt->calib_a = -123;
> > +       mt->calib_b = 465124;
> > +
> > +       for (i = 0; i < MT8173_NUM_BANKS; i++)
> > +               mtk_thermal_init_bank(mt, i, apmixed_phys_base, auxadc_phys_base);
> > +
> > +       platform_set_drvdata(pdev, mt);
> > +
> > +       for (i = 0; i < MT8173_NUM_BANKS; i++) {
> > +               struct mtk_thermal_bank *bank = &mt->banks[i];
> > +
> > +               bank->tz = thermal_zone_of_sensor_register(&pdev->dev, i, bank,
> > +                               &mtk_thermal_ops);
> 
> Hmm..  the 'i' passed here to thermal_zone_of_sensor_register is the
> id that a .dts thermal-zone will use to select one of the sensors
> provided by our "mediatek,mt8173-thermal" compatible thermal node.
> So, I think it is really ABI and should be some label defined in a
> header file as part of the of binding for the sensor node.  Each label
> would then be encoded somehow in mtk_thermal_bank_cfg[] (or perhaps
> used as the index when initializing the array, like you did for scpsys
> in

Makes sense. I'll add that for the next version.

Thanks for reviewing,

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2015-08-06  8:10 UTC|newest]

Thread overview: 132+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-05 12:25 [PATCH v3] Add Mediatek thermal support Sascha Hauer
2015-08-05 12:25 ` [PATCH 1/3] dt-bindings: thermal: Add binding document for Mediatek thermal controller Sascha Hauer
2015-08-05 12:25 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-08-05 18:02   ` Daniel Kurtz
2015-08-06  8:10     ` Sascha Hauer [this message]
2015-08-05 12:25 ` [PATCH 3/3] ARM64: dts: mt8173: Add thermal/auxadc device nodes Sascha Hauer
  -- strict thread matches above, loose matches on Subject: below --
2015-11-30 11:42 [PATCH v12] Add Mediatek thermal support Sascha Hauer
2015-11-30 11:42 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-11-30 11:42   ` Sascha Hauer
2015-12-17 19:33   ` Eduardo Valentin
2015-12-17 19:33     ` Eduardo Valentin
2016-01-04 14:19     ` Sascha Hauer
2016-01-04 14:19       ` Sascha Hauer
2016-01-19  7:29       ` Sascha Hauer
2016-01-19  7:29         ` Sascha Hauer
2016-02-01  2:54         ` Eddie Huang
2016-02-01  2:54           ` Eddie Huang
2016-02-01  2:54           ` Eddie Huang
2016-02-15  2:11           ` Daniel Kurtz
2016-02-15  2:11             ` Daniel Kurtz
2016-02-15  2:11             ` Daniel Kurtz
2016-02-15  2:14             ` Daniel Kurtz
2016-02-15  2:14               ` Daniel Kurtz
2016-02-15  2:14               ` Daniel Kurtz
2016-02-17 17:05               ` Matthias Brugger
2016-02-17 17:05                 ` Matthias Brugger
2016-02-17 17:05                 ` Matthias Brugger
2016-02-18 10:56                 ` Sascha Hauer
2016-02-18 10:56                   ` Sascha Hauer
2016-02-18 10:56                   ` Sascha Hauer
2016-02-18 14:28                   ` Javi Merino
2016-02-18 14:28                     ` Javi Merino
2016-02-18 14:28                     ` Javi Merino
2016-02-18 15:15                   ` Eduardo Valentin
2016-02-18 15:15                     ` Eduardo Valentin
2016-02-18 15:15                     ` Eduardo Valentin
2016-02-19  7:21                     ` Sascha Hauer
2016-02-19  7:21                       ` Sascha Hauer
2016-02-19  7:21                       ` Sascha Hauer
2015-12-21  4:07   ` Daniel Kurtz
2015-12-21  4:07     ` Daniel Kurtz
2015-12-21  4:07     ` Daniel Kurtz
2016-01-04 14:31     ` Sascha Hauer
2016-01-04 14:31       ` Sascha Hauer
2016-01-04 14:31       ` Sascha Hauer
2016-01-04 15:43       ` Daniel Kurtz
2016-01-04 15:43         ` Daniel Kurtz
2016-01-04 15:43         ` Daniel Kurtz
2015-11-18  8:24 [PATCH v11] Add Mediatek thermal support Sascha Hauer
2015-11-18  8:24 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-11-18  8:24   ` Sascha Hauer
2015-11-24  6:06   ` dawei chien
2015-11-24  6:06     ` dawei chien
2015-11-24  6:06     ` dawei chien
2015-11-24  7:53     ` Sascha Hauer
2015-11-24  7:53       ` Sascha Hauer
2015-11-09 10:13 [PATCH v10] Add Mediatek thermal support Sascha Hauer
2015-11-09 10:13 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-11-09 10:13   ` Sascha Hauer
2015-11-09 10:13   ` Sascha Hauer
2015-11-09 14:39   ` Andy Shevchenko
2015-11-09 14:39     ` Andy Shevchenko
2015-11-18  8:11     ` Sascha Hauer
2015-11-18  8:11       ` Sascha Hauer
2015-11-18  8:11       ` Sascha Hauer
2015-11-10 12:05   ` Javi Merino
2015-11-10 12:05     ` Javi Merino
2015-11-10 18:26     ` Eduardo Valentin
2015-11-10 18:26       ` Eduardo Valentin
2015-11-11  7:27       ` Sascha Hauer
2015-11-11  7:27         ` Sascha Hauer
2015-11-11  9:40         ` Javi Merino
2015-11-11  9:40           ` Javi Merino
2015-11-11  9:40           ` Javi Merino
2015-11-13 10:09         ` Sascha Hauer
2015-11-13 10:09           ` Sascha Hauer
2015-11-13 11:26           ` Javi Merino
2015-11-13 11:26             ` Javi Merino
2015-11-18  8:18             ` Sascha Hauer
2015-11-18  8:18               ` Sascha Hauer
2015-09-23 13:37 [PATCH v9] Add Mediatek thermal support Sascha Hauer
2015-09-23 13:37 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-09-23 13:37   ` Sascha Hauer
2015-09-23 18:31   ` Vladimir Zapolskiy
2015-09-23 18:31     ` Vladimir Zapolskiy
2015-09-23 18:31     ` Vladimir Zapolskiy
2015-09-30  6:14     ` Sascha Hauer
2015-09-30  6:14       ` Sascha Hauer
2015-09-29 23:04   ` Eduardo Valentin
2015-09-29 23:04     ` Eduardo Valentin
2015-09-29 23:04     ` Eduardo Valentin
2015-09-30  6:13     ` Sascha Hauer
2015-09-30  6:13       ` Sascha Hauer
2015-09-30  9:36   ` Punit Agrawal
2015-09-30  9:36     ` Punit Agrawal
2015-09-30  9:36     ` Punit Agrawal
2015-09-30 10:37     ` Sascha Hauer
2015-09-30 10:37       ` Sascha Hauer
2015-09-30 11:07       ` Punit Agrawal
2015-09-30 11:07         ` Punit Agrawal
2015-08-31  7:34 [PATCH v8] Add Mediatek thermal support Sascha Hauer
2015-08-31  7:34 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-08-31  7:34   ` Sascha Hauer
2015-08-31  7:34   ` Sascha Hauer
2015-09-14  7:32   ` Daniel Kurtz
2015-09-14  7:32     ` Daniel Kurtz
2015-09-14  7:32     ` Daniel Kurtz
2015-09-22  7:30     ` Daniel Kurtz
2015-09-22  7:30       ` Daniel Kurtz
2015-09-22  7:30       ` Daniel Kurtz
2015-09-22  8:30       ` Sascha Hauer
2015-09-22  8:30         ` Sascha Hauer
2015-09-22  8:30         ` Sascha Hauer
2015-08-27  6:41 [PATCH v7] Add Mediatek thermal support Sascha Hauer
2015-08-27  6:41 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-08-27 11:50   ` Punit Agrawal
2015-08-26 13:58 [PATCH v6] Add Mediatek thermal support Sascha Hauer
2015-08-26 13:58 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-08-20  8:05 [PATCH v5] Add Mediatek thermal support Sascha Hauer
2015-08-20  8:06 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-08-20 22:20   ` Eduardo Valentin
2015-08-20 22:29     ` Daniel Lezcano
2015-08-21  5:06     ` Sascha Hauer
2015-08-20 23:12   ` Daniel Lezcano
2015-08-26 13:54     ` Sascha Hauer
2015-08-26 14:02       ` Daniel Lezcano
2015-08-25 17:41   ` Daniel Kurtz
2015-08-07 13:55 [PATCH v4] Add Mediatek thermal support Sascha Hauer
2015-08-07 13:55 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-08-11  7:03   ` Daniel Kurtz
2015-08-20  7:57     ` Sascha Hauer
2015-07-21  7:59 [PATCH v2] Add Mediatek thermal support Sascha Hauer
2015-07-21  7:59 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-07-21  7:59   ` Sascha Hauer
2015-07-21 15:13   ` Daniel Kurtz
2015-07-21 15:13     ` Daniel Kurtz
2015-07-21 15:13     ` Daniel Kurtz
2015-08-05 10:20     ` Sascha Hauer
2015-08-05 10:20       ` Sascha Hauer
2015-08-05 10:20       ` Sascha Hauer
2015-07-13 10:34 [PATCH] thermal: Add Mediatek thermal support Sascha Hauer
2015-07-13 10:34 ` [PATCH 2/3] thermal: Add Mediatek thermal controller support Sascha Hauer
2015-07-13 10:34   ` Sascha Hauer

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=20150806081011.GM18700@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=djkurtz@chromium.org \
    --cc=edubezval@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=matthias.bgg@gmail.com \
    --cc=rui.zhang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.