[linux-sunxi] Re: [PATCH 03/14] thermal: Add support for sun8i THS on Allwinner H3
On 25.6.2016 02:54, Chen-Yu Tsai wrote: > On Sat, Jun 25, 2016 at 8:35 AM, Ondřej Jirmanwrote: >> On 24.6.2016 05:09, Chen-Yu Tsai wrote: +static int sun8i_ths_h3_init(struct platform_device *pdev, +struct sun8i_ths_data *data) +{ + int ret; + size_t callen; + s32 *caldata; + + data->busclk = devm_clk_get(>dev, "ahb"); + if (IS_ERR(data->busclk)) { + ret = PTR_ERR(data->busclk); + dev_err(>dev, "failed to get ahb clk: %d\n", ret); + return ret; + } + + data->clk = devm_clk_get(>dev, "ths"); + if (IS_ERR(data->clk)) { + ret = PTR_ERR(data->clk); + dev_err(>dev, "failed to get ths clk: %d\n", ret); + return ret; + } + + data->reset = devm_reset_control_get(>dev, "ahb"); >>> >>> IIRC with the new shared reset control stuff merged, you are supposed >>> to specify whether you want a shared or exclusive one when you ask for >>> it. >> >> Here devm_reset_control_get will get the exclusive reference. So this >> should be ok. > > See https://patchwork.kernel.org/patch/9158691/ > > The generic ones might be removed later on. I remember in another thread > it was asked that new users should use the explicit API, and avoid having > to be converted. I see, thank you, I'll change that. regards, Ondrej > ChenYu > >> >> regards, >> Ondrej >> >>> >>> Regards >>> ChenYu >>> +MODULE_LICENSE("GPL v2"); -- 2.9.0 >> -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout. signature.asc Description: OpenPGP digital signature
[linux-sunxi] Re: [PATCH 03/14] thermal: Add support for sun8i THS on Allwinner H3
On 24.6.2016 05:09, Chen-Yu Tsai wrote: >> +static int sun8i_ths_h3_init(struct platform_device *pdev, >> +struct sun8i_ths_data *data) >> +{ >> + int ret; >> + size_t callen; >> + s32 *caldata; >> + >> + data->busclk = devm_clk_get(>dev, "ahb"); >> + if (IS_ERR(data->busclk)) { >> + ret = PTR_ERR(data->busclk); >> + dev_err(>dev, "failed to get ahb clk: %d\n", ret); >> + return ret; >> + } >> + >> + data->clk = devm_clk_get(>dev, "ths"); >> + if (IS_ERR(data->clk)) { >> + ret = PTR_ERR(data->clk); >> + dev_err(>dev, "failed to get ths clk: %d\n", ret); >> + return ret; >> + } >> + >> + data->reset = devm_reset_control_get(>dev, "ahb"); > > IIRC with the new shared reset control stuff merged, you are supposed > to specify whether you want a shared or exclusive one when you ask for > it. Here devm_reset_control_get will get the exclusive reference. So this should be ok. regards, Ondrej > > Regards > ChenYu > >> +MODULE_LICENSE("GPL v2"); >> -- >> 2.9.0 >> -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout. signature.asc Description: OpenPGP digital signature
[linux-sunxi] Re: [PATCH 03/14] thermal: Add support for sun8i THS on Allwinner H3
Hi, On Fri, Jun 24, 2016 at 3:20 AM,wrote: > From: Ondrej Jirman > The subject could read: thermal: sun8i_ths: Add support for the thermal sensor on Allwinner H3 > This patch adds support for the sun8i thermal sensor on > Allwinner H3 SoC. > > Signed-off-by: Ondřej Jirman > --- > drivers/thermal/Kconfig | 7 ++ > drivers/thermal/Makefile| 1 + > drivers/thermal/sun8i_ths.c | 295 > > 3 files changed, 303 insertions(+) > create mode 100644 drivers/thermal/sun8i_ths.c > > diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig > index 2d702ca..3de0f8d 100644 > --- a/drivers/thermal/Kconfig > +++ b/drivers/thermal/Kconfig > @@ -351,6 +351,13 @@ config MTK_THERMAL > Enable this option if you want to have support for thermal > management > controller present in Mediatek SoCs > > +config SUN8I_THS > + tristate "sun8i THS driver" Explain THS. > + depends on MACH_SUN8I > + depends on OF > + help > + Enable this to support thermal reporting on some newer Allwinner > SoCs. > + > menu "Texas Instruments thermal drivers" > depends on ARCH_HAS_BANDGAP || COMPILE_TEST > depends on HAS_IOMEM > diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile > index 10b07c1..7261ee8 100644 > --- a/drivers/thermal/Makefile > +++ b/drivers/thermal/Makefile > @@ -51,3 +51,4 @@ obj-$(CONFIG_TEGRA_SOCTHERM) += tegra/ > obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o > obj-$(CONFIG_MTK_THERMAL) += mtk_thermal.o > obj-$(CONFIG_GENERIC_ADC_THERMAL) += thermal-generic-adc.o > +obj-$(CONFIG_SUN8I_THS)+= sun8i_ths.o > diff --git a/drivers/thermal/sun8i_ths.c b/drivers/thermal/sun8i_ths.c > new file mode 100644 > index 000..618ccc3 > --- /dev/null > +++ b/drivers/thermal/sun8i_ths.c > @@ -0,0 +1,295 @@ > +/* > + * sun8i THS driver Explain THS. > + * > + * Copyright (C) 2016 Ondřej Jirman > + * Based on the work of Josef Gajdusek > + * > + * This software is licensed under the terms of the GNU General Public > + * License version 2, as published by the Free Software Foundation, and > + * may be copied, distributed, and modified under those terms. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define THS_H3_CTRL0 0x00 > +#define THS_H3_CTRL2 0x40 > +#define THS_H3_INT_CTRL0x44 > +#define THS_H3_STAT0x48 > +#define THS_H3_FILTER 0x70 > +#define THS_H3_CDATA 0x74 > +#define THS_H3_DATA0x80 > + > +#define THS_H3_CTRL0_SENSOR_ACQ0_OFFS 0 > +#define THS_H3_CTRL0_SENSOR_ACQ0(x) \ > +((x) << THS_H3_CTRL0_SENSOR_ACQ0_OFFS) > +#define THS_H3_CTRL2_SENSE_EN_OFFS 0 > +#define THS_H3_CTRL2_SENSE_EN \ > +BIT(THS_H3_CTRL2_SENSE_EN_OFFS) > +#define THS_H3_CTRL2_SENSOR_ACQ1_OFFS 16 > +#define THS_H3_CTRL2_SENSOR_ACQ1(x) \ > +((x) << THS_H3_CTRL2_SENSOR_ACQ1_OFFS) > + > +#define THS_H3_INT_CTRL_DATA_IRQ_EN_OFFS8 > +#define THS_H3_INT_CTRL_DATA_IRQ_EN \ > + BIT(THS_H3_INT_CTRL_DATA_IRQ_EN_OFFS) > +#define THS_H3_INT_CTRL_THERMAL_PER_OFFS12 > +#define THS_H3_INT_CTRL_THERMAL_PER(x) \ > + ((x) << THS_H3_INT_CTRL_THERMAL_PER_OFFS) > + > +#define THS_H3_STAT_DATA_IRQ_STS_OFFS 8 > +#define THS_H3_STAT_DATA_IRQ_STS \ > +BIT(THS_H3_STAT_DATA_IRQ_STS_OFFS) > + > +#define THS_H3_FILTER_TYPE_OFFS 0 > +#define THS_H3_FILTER_TYPE(x) \ > +((x) << THS_H3_FILTER_TYPE_OFFS) > +#define THS_H3_FILTER_EN_OFFS 2 > +#define THS_H3_FILTER_EN \ > +BIT(THS_H3_FILTER_EN_OFFS) Is it really necessary to split the lines of all the macros? It makes it harder to find and read stuff. You're also not using any of the *_OFFS macros in the actual code, so just drop them. > + > +#define THS_H3_CLK_IN 4000 /* Hz */ > +#define THS_H3_DATA_PERIOD 330 /* ms */ > + > +#define THS_H3_FILTER_TYPE_VALUE 2 /* average over 2^(n+1) > samples */ > +#define THS_H3_FILTER_DIV (1 << > (THS_H3_FILTER_TYPE_VALUE + 1)) > +#define THS_H3_INT_CTRL_THERMAL_PER_VALUE \ > + (THS_H3_DATA_PERIOD * (THS_H3_CLK_IN / 1000) / THS_H3_FILTER_DIV / > 4096 - 1) > +#define THS_H3_CTRL0_SENSOR_ACQ0_VALUE 0x3f /* 16us */ > +#define THS_H3_CTRL2_SENSOR_ACQ1_VALUE 0x3f > + > +struct sun8i_ths_data { > + struct reset_control *reset; > + struct clk *clk; > + struct clk *busclk; > + void __iomem *regs; > + struct nvmem_cell