From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Lezcano Subject: Re: [PATCH v3 06/23] thermal: armada: average over samples to avoid glitches Date: Fri, 27 Jul 2018 18:29:01 +0200 Message-ID: <2ab1a1f6-e0c3-3eed-a088-9b04e88fce12@linaro.org> References: <20180716144206.30985-1-miquel.raynal@bootlin.com> <20180716144206.30985-7-miquel.raynal@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180716144206.30985-7-miquel.raynal@bootlin.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Miquel Raynal , Gregory Clement , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Zhang Rui , Eduardo Valentin Cc: Mark Rutland , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, Antoine Tenart , Catalin Marinas , Will Deacon , Maxime Chevallier , Nadav Haklai , David Sniatkiwicz , Rob Herring , Thomas Petazzoni , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org T24gMTYvMDcvMjAxOCAxNjo0MSwgTWlxdWVsIFJheW5hbCB3cm90ZToKPiBDb25maWd1cmUgdGhl IHNhbXBsZSBmcmVxdWVuY3kgYW5kIG51bWJlciBvZiBhdmVyYWdlZCBzYW1wbGVzLgo+IAo+IFRo aXMgaXMgbmVlZGVkIGZvciB0d28gcmVhc29uczoKPiAxLyBUbyBiZSBib290bG9hZGVyIGluZGVw ZW5kZW50Lgo+IDIvIFRvIHByZXBhcmUgdGhlIGludHJvZHVjdGlvbiBvZiBtdWx0aS1zZW5zb3Jz IHN1cHBvcnQgYnkgcHJldmVudGluZwo+ICAgIGluY29uc2lzdGVuY2llcyB3aGVuIHJlYWRpbmcg dGVtcGVyYXR1cmVzIHRoYXQgY291bGQgYmUgYSBtZWFuIG9mCj4gICAgc2FtcGxlcyB0b29rIGZy b20gZGlmZmVyZW50IHNlbnNvcnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWlxdWVsIFJheW5hbCA8 bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4KPiAtLS0KPiAgZHJpdmVycy90aGVybWFsL2FybWFk YV90aGVybWFsLmMgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFu Z2VkLCAyNSBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9h cm1hZGFfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL2FybWFkYV90aGVybWFsLmMKPiBpbmRl eCA5MjkxZWEzYWQyZjcuLjFmOTcwNmQ5NmEwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3RoZXJt YWwvYXJtYWRhX3RoZXJtYWwuYwo+ICsrKyBiL2RyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1h bC5jCj4gQEAgLTU0LDcgKzU0LDEyIEBACj4gICNkZWZpbmUgQ09OVFJPTDBfVFNFTl9TVEFSVAkJ QklUKDApCj4gICNkZWZpbmUgQ09OVFJPTDBfVFNFTl9SRVNFVAkJQklUKDEpCj4gICNkZWZpbmUg Q09OVFJPTDBfVFNFTl9FTkFCTEUJCUJJVCgyKQo+ICsjZGVmaW5lIENPTlRST0wwX1RTRU5fQVZH X0JZUEFTUwlCSVQoNikKPiArI2RlZmluZSBDT05UUk9MMF9UU0VOX09TUl9TSElGVAkJMjQKPiAr I2RlZmluZSBDT05UUk9MMF9UU0VOX09TUl9NQVgJCTB4Mwo+ICAKPiArI2RlZmluZSBDT05UUk9M MV9UU0VOX0FWR19TSElGVAkJMAoKV2h5IHNoaWZ0IGJ5IHplcm8gPwoKCgo+ICsjZGVmaW5lIENP TlRST0wxX1RTRU5fQVZHX01BU0sJCTB4Nwo+ICAjZGVmaW5lIENPTlRST0wxX0VYVF9UU0VOX1NX X1JFU0VUCUJJVCg3KQo+ICAjZGVmaW5lIENPTlRST0wxX0VYVF9UU0VOX0hXX1JFU0VUbglCSVQo OCkKPiAgCj4gQEAgLTE5NCw2ICsxOTksMTMgQEAgc3RhdGljIHZvaWQgYXJtYWRhX2FwODA2X2lu aXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiAgCXJlZyA9IHJlYWRsX3JlbGF4ZWQo cHJpdi0+Y29udHJvbDApOwo+ICAJcmVnICY9IH5DT05UUk9MMF9UU0VOX1JFU0VUOwo+ICAJcmVn IHw9IENPTlRST0wwX1RTRU5fU1RBUlQgfCBDT05UUk9MMF9UU0VOX0VOQUJMRTsKPiArCj4gKwkv KiBTYW1wbGUgZXZlcnkgfjJtcyAqLwo+ICsJcmVnIHw9IENPTlRST0wwX1RTRU5fT1NSX01BWCA8 PCBDT05UUk9MMF9UU0VOX09TUl9TSElGVDsKPiArCj4gKwkvKiBFbmFibGUgYXZlcmFnZSAoMiBz YW1wbGVzIGJ5IGRlZmF1bHQpICovCj4gKwlyZWcgJj0gfkNPTlRST0wwX1RTRU5fQVZHX0JZUEFT UzsKPiArCj4gIAl3cml0ZWwocmVnLCBwcml2LT5jb250cm9sMCk7Cj4gIAo+ICAJLyogV2FpdCB0 aGUgc2Vuc29ycyB0byBiZSB2YWxpZCBvciB0aGUgY29yZSB3aWxsIHdhcm4gdGhlIHVzZXIgKi8K PiBAQCAtMjAzLDcgKzIxNSwyMCBAQCBzdGF0aWMgdm9pZCBhcm1hZGFfYXA4MDZfaW5pdChzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICBzdGF0aWMgdm9pZCBhcm1hZGFfY3AxMTBfaW5p dChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICAJCQkgICAgICBzdHJ1Y3QgYXJtYWRh X3RoZXJtYWxfcHJpdiAqcHJpdikKPiAgewo+ICsJdTMyIHJlZzsKPiArCj4gIAlhcm1hZGEzODBf aW5pdChwZGV2LCBwcml2KTsKPiArCj4gKwkvKiBTYW1wbGUgZXZlcnkgfjJtcyAqLwo+ICsJcmVn ID0gcmVhZGxfcmVsYXhlZChwcml2LT5jb250cm9sMCk7Cj4gKwlyZWcgfD0gQ09OVFJPTDBfVFNF Tl9PU1JfTUFYIDw8IENPTlRST0wwX1RTRU5fT1NSX1NISUZUOwo+ICsJd3JpdGVsKHJlZywgcHJp di0+Y29udHJvbDApOwo+ICsKPiArCS8qIEF2ZXJhZ2UgdGhlIG91dHB1dCB2YWx1ZSBvdmVyIDJe MSA9IDIgc2FtcGxlcyAqLwo+ICsJcmVnID0gcmVhZGxfcmVsYXhlZChwcml2LT5jb250cm9sMSk7 Cj4gKwlyZWcgJj0gfkNPTlRST0wxX1RTRU5fQVZHX01BU0sgPDwgQ09OVFJPTDFfVFNFTl9BVkdf U0hJRlQ7Cj4gKwlyZWcgfD0gMSA8PCBDT05UUk9MMV9UU0VOX0FWR19TSElGVDsKPiArCXdyaXRl bChyZWcsIHByaXYtPmNvbnRyb2wxKTsKPiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgYXJtYWRhX2lz X3ZhbGlkKHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9wcml2ICpwcml2KQo+IAoKCi0tIAogPGh0dHA6 Ly93d3cubGluYXJvLm9yZy8+IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZv ciBBUk0gU29DcwoKRm9sbG93IExpbmFybzogIDxodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wYWdl cy9MaW5hcm8+IEZhY2Vib29rIHwKPGh0dHA6Ly90d2l0dGVyLmNvbS8jIS9saW5hcm9vcmc+IFR3 aXR0ZXIgfAo8aHR0cDovL3d3dy5saW5hcm8ub3JnL2xpbmFyby1ibG9nLz4gQmxvZwoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJu ZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel.lezcano@linaro.org (Daniel Lezcano) Date: Fri, 27 Jul 2018 18:29:01 +0200 Subject: [PATCH v3 06/23] thermal: armada: average over samples to avoid glitches In-Reply-To: <20180716144206.30985-7-miquel.raynal@bootlin.com> References: <20180716144206.30985-1-miquel.raynal@bootlin.com> <20180716144206.30985-7-miquel.raynal@bootlin.com> Message-ID: <2ab1a1f6-e0c3-3eed-a088-9b04e88fce12@linaro.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 16/07/2018 16:41, Miquel Raynal wrote: > Configure the sample frequency and number of averaged samples. > > This is needed for two reasons: > 1/ To be bootloader independent. > 2/ To prepare the introduction of multi-sensors support by preventing > inconsistencies when reading temperatures that could be a mean of > samples took from different sensors. > > Signed-off-by: Miquel Raynal > --- > drivers/thermal/armada_thermal.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c > index 9291ea3ad2f7..1f9706d96a0d 100644 > --- a/drivers/thermal/armada_thermal.c > +++ b/drivers/thermal/armada_thermal.c > @@ -54,7 +54,12 @@ > #define CONTROL0_TSEN_START BIT(0) > #define CONTROL0_TSEN_RESET BIT(1) > #define CONTROL0_TSEN_ENABLE BIT(2) > +#define CONTROL0_TSEN_AVG_BYPASS BIT(6) > +#define CONTROL0_TSEN_OSR_SHIFT 24 > +#define CONTROL0_TSEN_OSR_MAX 0x3 > > +#define CONTROL1_TSEN_AVG_SHIFT 0 Why shift by zero ? > +#define CONTROL1_TSEN_AVG_MASK 0x7 > #define CONTROL1_EXT_TSEN_SW_RESET BIT(7) > #define CONTROL1_EXT_TSEN_HW_RESETn BIT(8) > > @@ -194,6 +199,13 @@ static void armada_ap806_init(struct platform_device *pdev, > reg = readl_relaxed(priv->control0); > reg &= ~CONTROL0_TSEN_RESET; > reg |= CONTROL0_TSEN_START | CONTROL0_TSEN_ENABLE; > + > + /* Sample every ~2ms */ > + reg |= CONTROL0_TSEN_OSR_MAX << CONTROL0_TSEN_OSR_SHIFT; > + > + /* Enable average (2 samples by default) */ > + reg &= ~CONTROL0_TSEN_AVG_BYPASS; > + > writel(reg, priv->control0); > > /* Wait the sensors to be valid or the core will warn the user */ > @@ -203,7 +215,20 @@ static void armada_ap806_init(struct platform_device *pdev, > static void armada_cp110_init(struct platform_device *pdev, > struct armada_thermal_priv *priv) > { > + u32 reg; > + > armada380_init(pdev, priv); > + > + /* Sample every ~2ms */ > + reg = readl_relaxed(priv->control0); > + reg |= CONTROL0_TSEN_OSR_MAX << CONTROL0_TSEN_OSR_SHIFT; > + writel(reg, priv->control0); > + > + /* Average the output value over 2^1 = 2 samples */ > + reg = readl_relaxed(priv->control1); > + reg &= ~CONTROL1_TSEN_AVG_MASK << CONTROL1_TSEN_AVG_SHIFT; > + reg |= 1 << CONTROL1_TSEN_AVG_SHIFT; > + writel(reg, priv->control1); > } > > static bool armada_is_valid(struct armada_thermal_priv *priv) > -- Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog