From: Lee Jones <lee.jones@linaro.org>
To: Alistair Francis <alistair23@gmail.com>
Cc: Alistair Francis <alistair@alistair23.me>,
Rob Herring <robh+dt@kernel.org>,
lgirdwood@gmail.com, Mark Brown <broonie@kernel.org>,
dl-linux-imx <linux-imx@nxp.com>,
Sascha Hauer <kernel@pengutronix.de>,
devicetree <devicetree@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Lars Ivar Miljeteig <lars.ivar.miljeteig@remarkable.no>
Subject: Re: [PATCH v7 2/6] thermal: sy7636a: Add thermal driver for sy7636a
Date: Mon, 2 Aug 2021 08:55:33 +0100 [thread overview]
Message-ID: <YQek9afLXShHl2YI@google.com> (raw)
In-Reply-To: <CAKmqyKPk5mksq7KK0FOBLLLyw+3o52EjtkqOMe0tMg5OgxOkJw@mail.gmail.com>
On Wed, 28 Jul 2021, Alistair Francis wrote:
> On Wed, Jul 21, 2021 at 1:02 AM Lee Jones <lee.jones@linaro.org> wrote:
> >
> > On Thu, 08 Jul 2021, Alistair Francis wrote:
> >
> > > From: Lars Ivar Miljeteig <lars.ivar.miljeteig@remarkable.no>
> > >
> > > Add thermal driver to enable kernel based polling
> > > and shutdown of device for temperatures out of spec
> > >
> > > Signed-off-by: Alistair Francis <alistair@alistair23.me>
> > > ---
> > > drivers/thermal/Kconfig | 7 ++
> > > drivers/thermal/Makefile | 1 +
> > > drivers/thermal/sy7636a_thermal.c | 107 ++++++++++++++++++++++++++++++
> > > 3 files changed, 115 insertions(+)
> > > create mode 100644 drivers/thermal/sy7636a_thermal.c
> > >
> > > diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> > > index d7f44deab5b1..7112c63d9021 100644
> > > --- a/drivers/thermal/Kconfig
> > > +++ b/drivers/thermal/Kconfig
> > > @@ -450,6 +450,13 @@ depends on (ARCH_STI || ARCH_STM32) && OF
> > > source "drivers/thermal/st/Kconfig"
> > > endmenu
> > >
> > > +config SY7636A_THERMAL
> > > + tristate "SY7636A thermal management"
> > > + depends on MFD_SY7636A
> > > + help
> > > + Enable the sy7636a thermal driver, which supports the
> > > + temperature sensor embedded in Silabs SY7636A chip.
> > > +
> > > source "drivers/thermal/tegra/Kconfig"
> > >
> > > config GENERIC_ADC_THERMAL
> > > diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
> > > index 82fc3e616e54..2e1aca8a0a09 100644
> > > --- a/drivers/thermal/Makefile
> > > +++ b/drivers/thermal/Makefile
> > > @@ -51,6 +51,7 @@ obj-$(CONFIG_DA9062_THERMAL) += da9062-thermal.o
> > > obj-y += intel/
> > > obj-$(CONFIG_TI_SOC_THERMAL) += ti-soc-thermal/
> > > obj-y += st/
> > > +obj-$(CONFIG_SY7636A_THERMAL) += sy7636a_thermal.o
> > > obj-$(CONFIG_QCOM_TSENS) += qcom/
> > > obj-y += tegra/
> > > obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
> > > diff --git a/drivers/thermal/sy7636a_thermal.c b/drivers/thermal/sy7636a_thermal.c
> > > new file mode 100644
> > > index 000000000000..705a16fb1045
> > > --- /dev/null
> > > +++ b/drivers/thermal/sy7636a_thermal.c
> > > @@ -0,0 +1,107 @@
> > > +// SPDX-License-Identifier: GPL-2.0+
> > > +//
> > > +// Functions to access SY3686A power management chip temperature
> > > +//
> > > +// Copyright (C) 2019 reMarkable AS - http://www.remarkable.com/
> > > +//
> > > +// Authors: Lars Ivar Miljeteig <lars.ivar.miljeteig@remarkable.com>
> > > +// Alistair Francis <alistair@alistair23.me>
> > > +
> > > +#include <linux/module.h>
> > > +#include <linux/platform_device.h>
> > > +#include <linux/thermal.h>
> > > +
> > > +#include <linux/mfd/sy7636a.h>
> > > +
> > > +struct sy7636a_data {
> > > + struct sy7636a *sy7636a;
> > > + struct thermal_zone_device *thermal_zone_dev;
> > > +};
> > > +
> > > +static int sy7636a_get_temp(void *arg, int *res)
> > > +{
> > > + unsigned int reg_val, mode_ctr;
> > > + int ret;
> > > + struct sy7636a_data *data = arg;
> > > + bool isVoltageActive;
> > > +
> > > + ret = regmap_read(data->sy7636a->regmap,
> > > + SY7636A_REG_OPERATION_MODE_CRL, &mode_ctr);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + isVoltageActive = mode_ctr & SY7636A_OPERATION_MODE_CRL_ONOFF;
> > > +
> > > + if (!isVoltageActive) {
> > > + ret = regmap_write(data->sy7636a->regmap,
> > > + SY7636A_REG_OPERATION_MODE_CRL,
> > > + mode_ctr | SY7636A_OPERATION_MODE_CRL_ONOFF);
> > > + if (ret)
> > > + return ret;
> > > + }
> > > +
> > > + ret = regmap_read(data->sy7636a->regmap,
> > > + SY7636A_REG_TERMISTOR_READOUT, ®_val);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + if (!isVoltageActive) {
> > > + ret = regmap_write(data->sy7636a->regmap,
> > > + SY7636A_REG_OPERATION_MODE_CRL,
> > > + mode_ctr);
> > > + if (ret)
> > > + return ret;
> > > + }
> > > +
> > > + *res = *((signed char*)®_val);
> > > + *res *= 1000;
> > > +
> > > + return ret;
> > > +}
> > > +
> > > +static const struct thermal_zone_of_device_ops ops = {
> > > + .get_temp = sy7636a_get_temp,
> > > +};
> > > +
> > > +static int sy7636a_thermal_probe(struct platform_device *pdev)
> > > +{
> > > + struct sy7636a *sy7636a = dev_get_drvdata(pdev->dev.parent);
> > > + struct sy7636a_data *data;
> > > +
> > > + if (!sy7636a)
> > > + return -EPROBE_DEFER;
> >
> > How is this possible?
>
> I'm not sure, I have removed this.
>
> >
> > > + data = devm_kzalloc(&pdev->dev, sizeof(struct sy7636a_data), GFP_KERNEL);
> >
> > sizeof(*data)
> >
> > > + if (!data)
> > > + return -ENOMEM;
> > > +
> > > + platform_set_drvdata(pdev, data);
> > > +
> > > + data->sy7636a = sy7636a;
> > > + data->thermal_zone_dev = devm_thermal_zone_of_sensor_register(
> > > + pdev->dev.parent,
> > > + 0,
> > > + data,
> >
> > Why don't you just pass in your initial ddata?
>
> I'm not sure what you mean, which data?
sy7636a
--
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2021-08-02 7:55 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-08 11:57 [PATCH v7 1/6] mfd: sy7636a: Initial commit Alistair Francis
2021-07-08 11:58 ` [PATCH v7 2/6] thermal: sy7636a: Add thermal driver for sy7636a Alistair Francis
2021-07-20 15:02 ` Lee Jones
2021-07-28 8:23 ` Alistair Francis
2021-08-02 7:55 ` Lee Jones [this message]
2021-08-14 11:08 ` Daniel Lezcano
2021-07-08 11:58 ` [PATCH v7 3/6] hwmon: sy7636a: Add temperature " Alistair Francis
2021-07-20 14:59 ` Lee Jones
2021-08-02 9:48 ` Alistair Francis
2021-07-08 11:58 ` [PATCH v7 4/6] ARM: imx_v6_v7_defconfig: Enable silergy,sy7636a Alistair Francis
2021-07-08 11:58 ` [PATCH v7 5/6] ARM: dts: imx7d: remarkable2: " Alistair Francis
2021-07-08 11:58 ` [PATCH v7 6/6] ARM: dts: imx7d: remarkable2: Enable lcdif Alistair Francis
2021-07-20 14:53 ` [PATCH v7 1/6] mfd: sy7636a: Initial commit Lee Jones
2021-07-20 15:23 ` Mark Brown
2021-07-20 16:09 ` Lee Jones
2021-07-20 20:26 ` Mark Brown
2021-07-30 6:21 ` Alistair Francis
2021-07-30 11:13 ` Mark Brown
2021-08-02 9:26 ` Alistair Francis
2021-08-02 10:23 ` Lee Jones
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=YQek9afLXShHl2YI@google.com \
--to=lee.jones@linaro.org \
--cc=alistair23@gmail.com \
--cc=alistair@alistair23.me \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=kernel@pengutronix.de \
--cc=lars.ivar.miljeteig@remarkable.no \
--cc=lgirdwood@gmail.com \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.org \
/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.