From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D454AC432BE for ; Fri, 13 Aug 2021 11:54:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BF6716109D for ; Fri, 13 Aug 2021 11:54:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239207AbhHMLyn (ORCPT ); Fri, 13 Aug 2021 07:54:43 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:54488 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S238980AbhHMLyk (ORCPT ); Fri, 13 Aug 2021 07:54:40 -0400 X-UUID: 6df1da1d6b944cbe899b914833a71db4-20210813 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=vUAOvzKSeucK2ubkFgtwhNsDy8US+nwjlSJMvKmjoe8=; b=ZkRZ4861eI09cgGp2PUdKktCTYzQkBKPMWJmBMy5Ay3gwPsNQ5jD+qD0ihHgqYg3cLOjRjvREAq6wLE0Yz4huFhjSRoniVZ5xGEkJqvfrzbaMRJmXmQ/iplJNGoiqROjeOByJHtIcQCNzGA1ISVLpizKrOQo8awy1jcv4L1mowY=; X-UUID: 6df1da1d6b944cbe899b914833a71db4-20210813 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 983002196; Fri, 13 Aug 2021 19:54:09 +0800 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 13 Aug 2021 19:54:07 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 13 Aug 2021 19:54:08 +0800 Message-ID: Subject: Re: [PATCH v8] thermal: mediatek: add another get_temp ops for thermal sensors From: Ben Tseng To: Daniel Lezcano , Fan Chen , Zhang Rui , , CC: Eduardo Valentin , Rob Herring , Mark Rutland , "Matthias Brugger" , , , , , , , Michael Kao Date: Fri, 13 Aug 2021 19:54:08 +0800 In-Reply-To: References: <20210603110042.21688-1-ben.tseng@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RGVhciBEYW5pZWwsDQoNClNvcnJ5IGZvciB0aGUgbGF0ZSByZXBseQ0KDQoNCk9uIE1vbiwgMjAy MS0wNi0xNCBhdCAxODo1OCArMDIwMCwgRGFuaWVsIExlemNhbm8gd3JvdGU6DQo+IE9uIDAzLzA2 LzIwMjEgMTM6MDAsIEJlbiBUc2VuZyB3cm90ZToNCj4gPiBGcm9tOiBNaWNoYWVsIEthbyA8bWlj aGFlbC5rYW9AbWVkaWF0ZWsuY29tPg0KPiA+IA0KPiA+IFByb3ZpZGUgdGhlcm1hbCB6b25lIHRv IHJlYWQgdGhlcm1hbCBzZW5zb3INCj4gPiBpbiB0aGUgU29DLiBXZSBjYW4gcmVhZCBhbGwgdGhl IHRoZXJtYWwgc2Vuc29ycw0KPiA+IHZhbHVlIGluIHRoZSBTb0MgYnkgdGhlIG5vZGUgL3N5cy9j bGFzcy90aGVybWFsLw0KPiA+IA0KPiA+IEluIG10a190aGVybWFsX2JhbmtfdGVtcGVyYXR1cmUs IHJldHVybiAtRUFHQUlOIGluc3RlYWQgb2YgLUVBQ0NFU1MNCj4gPiBvbiB0aGUgZmlyc3QgcmVh ZCBvZiBzZW5zb3IgdGhhdCBvZnRlbiBhcmUgYm9ndXMgdmFsdWVzLg0KPiA+IFRoaXMgY2FuIGF2 b2lkIGZvbGxvd2luZyB3YXJuaW5nIG9uIGJvb3Q6DQo+ID4gDQo+ID4gICB0aGVybWFsIHRoZXJt YWxfem9uZTY6IGZhaWxlZCB0byByZWFkIG91dCB0aGVybWFsIHpvbmUgKC0xMykNCj4gPiANCj4g PiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEthbyA8bWljaGFlbC5rYW9AbWVkaWF0ZWsuY29tPg0K PiA+IFNpZ25lZC1vZmYtYnk6IEJlbiBUc2VuZyA8YmVuLnRzZW5nQG1lZGlhdGVrLmNvbT4NCj4g PiANCj4gPiAtLS0NCj4gPiANCj4gPiBUaGlzIHBhdGNoc2V0IHN1cHBvcnRzIGZvciBNVDgxODMg Y2hpcCB0byBtdGtfdGhlcm1hbC5jLg0KPiA+IEFkZCB0aGVybWFsIHpvbmUgb2YgYWxsIHRoZSB0 aGVybWFsIHNlbnNvciBpbiBTb0MgZm9yDQo+ID4gYW5vdGhlciBnZXQgdGVtcGVyYXRydWUuIFRo ZXkgZG9uJ3QgbmVlZCB0byB0aGVybWFsIHRocm90dGxlLg0KPiA+IEFuZCB3ZSBiaW5kIGNvb2xl cnMgZm9yIHRoZXJtYWwgem9uZSBub2RlcyBvZiBjcHVfdGhlcm1hbC4NCj4gPiANCj4gPiBDaGFu Z2VzIGluIFY4Og0KPiA+ICAgICAtIFJlYmFzZSB0byBrZXJuZWwtdjUuMTMtcmMxDQo+ID4gICAg IC0gUmVzZW5kDQo+ID4gDQo+ID4gQ2hhbmdlcyBpbiB2NzoNCj4gPiAgICAgLSBGaXggYnVpbGQg ZXJyb3IgaW4gdjYuDQo+ID4gDQo+ID4gQ2hhbmdlcyBpbiB2NjoNCj4gPiAgICAgLSBSZWJhc2Ug dG8ga2VybmVsLTUuMTEtcmMxLg0KPiA+ICAgICAtIFsxLzNdDQo+ID4gICAgICAgICAtIGFkZCBp bnRlcnJ1cHRzIHByb3BlcnR5Lg0KPiA+ICAgICAtIFsyLzNdDQo+ID4gICAgICAgICAtIGFkZCB0 aGUgVGVzdGVkLWJ5IGluIHRoZSBjb21taXQgbWVzc2FnZS4NCj4gPiAgICAgLSBbMy8zXQ0KPiA+ ICAgICAgICAgLSB1c2UgdGhlIG10LT5jb25mLT5tc3JbaWRdIGluc3RlYWQgb2YgY29uZi0+bXNy W2lkXSBpbiB0aGUNCj4gPiAgICAgICAgICAgX2dldF9zZW5zb3JfdGVtcCBhbmQgbXRrX3RoZXJt YWxfYmFua190ZW1wZXJhdHVyZS4NCj4gPiAgICAgICAgIC0gcmVtb3ZlIHRoZSByZWR1bmRhbnQg c3BhY2UgaW4gX2dldF9zZW5zb3JfdGVtcCBhbmQNCj4gPiAgICAgICAgICAgbXRrX3JlYWRfc2Vu c29yX3RlbXAuDQo+ID4gICAgICAgICAtIGNoYW5nZSBrbWFsbG9jIHRvIGRldl9rbWFsbG9jIGlu IG10a190aGVybWFsX3Byb2JlLg0KPiA+IA0KPiA+IENoYW5nZXMgaW4gdjU6DQo+ID4gICAgIC0g UmViYXNlIHRvIGtlcm5lbC01LjktcmMxLg0KPiA+ICAgICAtIFJldmlzZSB0aGUgdGl0bGUgb2Yg Y292ZXIgbGV0dGVyLg0KPiA+ICAgICAtIERyb3AgIlt2NCw3LzddIHRoZXJtYWw6IG1lZGlhdGVr OiB1c2Ugc3BpbmxvY2sgdG8gcHJvdGVjdA0KPiA+IFBUUENPUkVTRUwiDQo+ID4gICAgIC0gWzIv Ml0NCj4gPiAgICAgICAgIC0gIEFkZCB0aGUganVkZ2VtZW50IHRvIHRoZSB2ZXJzaW9uIG9mIHJh d190b19tY2Vsc2l1cy4NCj4gPiANCj4gPiBDaGFuZ2VzIGluIHY0Og0KPiA+ICAgICAtIFJlYmFz ZSB0byBrZXJuZWwtNS42LXJjMS4NCj4gPiAgICAgLSBbMS83XQ0KPiA+ICAgICAgICAgLSBTcXVh c2ggdGhlcm1hbCB6b25lIHNldHRpbmdzIGluIHRoZSBkdHNpIGZyb20gW3YzLDUvOF0NCj4gPiAg ICAgICAgICAgYXJtNjQ6IGR0czogbXQ4MTgzOiBJbmNyZWFzZSBwb2xsaW5nIGZyZXF1ZW5jeSBm b3IgQ1BVDQo+ID4gdGhlcm1hbCB6b25lLg0KPiA+ICAgICAgICAgLSBSZW1vdmUgdGhlIHByb3Bl cnR5IG9mIGludGVycnVwdHMgYW5kIG1lZGlhdGVrLGh3LXJlc2V0LQ0KPiA+IHRlbXAuDQo+ID4g ICAgIC0gWzIvN10NCj4gPiAgICAgICAgIC0gQ29ycmVjdCBjb21taXQgbWVzc2FnZS4NCj4gPiAg ICAgLSBbNC83XQ0KPiA+ICAgICAgICAgLSBDaGFuZ2UgdGhlIHRhcmdldCB0ZW1wZXJhdHVyZSB0 byB0aGUgODBDIGFuZCBjaGFuZ2UgdGhlDQo+ID4gY29tbWl0IG1lc3NhZ2UuDQo+ID4gICAgIC0g WzYvN10NCj4gPiAgICAgICAgIC0gQWRqdXN0IG5ld2xpbmUgYWxpZ25tZW50Lg0KPiA+ICAgICAg ICAgLSBGaXggdGhlIGp1ZGdlbWVudCBvbiB0aGUgcmV0dXJuIHZhbHVlIG9mIHJlZ2lzdGVyaW5n DQo+ID4gdGhlcm1hbCB6b25lLg0KPiA+IA0KPiA+IENoYW5nZXMgaW4gdjM6DQo+ID4gICAgIC0g UmViYXNlIHRvIGtlcm5lbC01LjUtcmMxLg0KPiA+ICAgICAtIFsxLzhdDQo+ID4gICAgICAgICAt IFVwZGF0ZSBzdXN0YWluYWJsZSBwb3dlciBvZiBjcHUsIHR6dHMxfjUgYW5kIHR6dHNBQkIuDQo+ ID4gICAgIC0gWzcvOF0NCj4gPiAgICAgICAgIC0gQnlwYXNzIHRoZSBmYWlsdXJlIHRoYXQgbm9u IGNwdV90aGVybWFsIHNlbnNvciBpcyBub3QNCj4gPiBmaW5kIGluIHRoZXJtYWwtem9uZXMNCj4g PiAgICAgICAgICAgaW4gZHRzLCB3aGljaCBpcyBub3JtYWwgZm9yIG10ODE3Mywgc28gcHJvbXB0 IGEgd2FybmluZw0KPiA+IGhlcmUgaW5zdGVhZCBvZg0KPiA+ICAgICAgICAgICBmYWlsaW5nLg0K PiA+IA0KPiA+IAlSZXR1cm4gLUVBR0FJTiBpbnN0ZWFkIG9mIC1FQUNDRVNTIG9uIHRoZSBmaXJz dCByZWFkIG9mIHNlbnNvcg0KPiA+IHRoYXQNCj4gPiAgICAgICAgIG9mdGVuIGFyZSBib2d1cyB2 YWx1ZXMuIFRoaXMgY2FuIGF2b2lkIGZvbGxvd2luZyB3YXJuaW5nIG9uDQo+ID4gYm9vdDoNCj4g PiANCj4gPiAgICAgICAgICAgdGhlcm1hbCB0aGVybWFsX3pvbmU2OiBmYWlsZWQgdG8gcmVhZCBv dXQgdGhlcm1hbCB6b25lICgtDQo+ID4gMTMpDQo+ID4gDQo+ID4gQ2hhbmdlcyBpbiB2MjoNCj4g PiAgICAgLSBbMS84XQ0KPiA+ICAgICAgICAgLSBBZGQgdGhlIHN1c3RhaW5hYmxlLXBvd2VyLHRy aXBzLGNvb2xpbmctbWFwcyB0byB0aGUNCj4gPiB0enRzMX50enRzQUJCLg0KPiA+ICAgICAtIFs0 LzhdDQo+ID4gICAgICAgICAtIEFkZCB0aGUgbWluIG9wcCBvZiBjcHUgdGhyb3R0bGUuDQo+ID4g DQo+ID4gTWF0dGhpYXMgS2FlaGxja2UgKDEpOg0KPiA+ICAgYXJtNjQ6IGR0czogbXQ4MTgzOiBD b25maWd1cmUgQ1BVIGNvb2xpbmcNCj4gPiANCj4gPiBNaWNoYWVsIEthbyAoMik6DQo+ID4gICB0 aGVybWFsOiBtZWRpYXRlazogYWRkIGFub3RoZXIgZ2V0X3RlbXAgb3BzIGZvciB0aGVybWFsIHNl bnNvcnMNCj4gPiAgIGFybTY0OiBkdHM6IG10ODE4MzogYWRkIHRoZXJtYWwgem9uZSBub2RlDQo+ ID4gLS0tDQo+ID4gIGRyaXZlcnMvdGhlcm1hbC9tdGtfdGhlcm1hbC5jIHwgMTAwDQo+ID4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tDQo+ID4gIDEgZmlsZSBjaGFu Z2VkLCA3NSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy90aGVybWFsL210a190aGVybWFsLmMNCj4gPiBiL2RyaXZlcnMvdGhlcm1h bC9tdGtfdGhlcm1hbC5jDQo+ID4gaW5kZXggOTdlODY3OC4uYjZiZWU0NTEgMTAwNjQ0DQo+ID4g LS0tIGEvZHJpdmVycy90aGVybWFsL210a190aGVybWFsLmMNCj4gPiArKysgYi9kcml2ZXJzL3Ro ZXJtYWwvbXRrX3RoZXJtYWwuYw0KPiA+IEBAIC0yNDUsNiArMjQ1LDExIEBAIGVudW0gbXRrX3Ro ZXJtYWxfdmVyc2lvbiB7DQo+ID4gIA0KPiA+ICBzdHJ1Y3QgbXRrX3RoZXJtYWw7DQo+ID4gIA0K PiA+ICtzdHJ1Y3QgbXRrX3RoZXJtYWxfem9uZSB7DQo+ID4gKwlzdHJ1Y3QgbXRrX3RoZXJtYWwg Km10Ow0KPiA+ICsJaW50IGlkOw0KPiA+ICt9Ow0KPiANCj4gSG93IGRvZXMgaXQgZGlmZmVyIGZy b20gJ3N0cnVjdCBtdGtfdGhlcm1hbF9iYW5rJyA/DQoNCiJ0cnVjdCBtdGtfdGhlcm1hbF96b25l IiBpcyBkdXBsaWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgbmV4dCB2ZXJzaW9uDQoNCj4gDQo+ ID4gIHN0cnVjdCB0aGVybWFsX2JhbmtfY2ZnIHsNCj4gPiAgCXVuc2lnbmVkIGludCBudW1fc2Vu c29yczsNCj4gPiAgCWNvbnN0IGludCAqc2Vuc29yczsNCj4gPiBAQCAtNjM3LDYgKzY0MiwzMCBA QCBzdGF0aWMgdm9pZCBtdGtfdGhlcm1hbF9wdXRfYmFuayhzdHJ1Y3QNCj4gPiBtdGtfdGhlcm1h bF9iYW5rICpiYW5rKQ0KPiA+ICAJCW11dGV4X3VubG9jaygmbXQtPmxvY2spOw0KPiA+ICB9DQo+ ID4gIA0KPiA+ICtzdGF0aWMgdTMyIF9nZXRfc2Vuc29yX3RlbXAoc3RydWN0IG10a190aGVybWFs ICptdCwgaW50IGlkKQ0KPiA+ICt7DQo+ID4gKwl1MzIgcmF3Ow0KPiA+ICsJaW50IHRlbXA7DQo+ ID4gKw0KPiA+ICsJcmF3ID0gcmVhZGwobXQtPnRoZXJtYWxfYmFzZSArIG10LT5jb25mLT5tc3Jb aWRdKTsNCj4gPiArDQo+ID4gKwlpZiAobXQtPmNvbmYtPnZlcnNpb24gPT0gTVRLX1RIRVJNQUxf VjEpDQo+ID4gKwkJdGVtcCA9IHJhd190b19tY2Vsc2l1c192MShtdCwgaWQsIHJhdyk7DQo+ID4g KwllbHNlDQo+ID4gKwkJdGVtcCA9IHJhd190b19tY2Vsc2l1c192MihtdCwgaWQsIHJhdyk7DQo+ IA0KPiBQbGVhc2UgYWRkIHRoZSBwcm9wZXIgY29udmVyc2lvbiBmdW5jdGlvbiBhcyBhIGNhbGxi YWNrIGFuZCBzZXQgaXQgYXQNCj4gcHJvYmUgdGltZSwgaW5zdGVhZCBvZiBjaGVja2luZyBhdCBl dmVyeSBjYWxsLg0KPiANCg0KVGhhbmtzIGZvciB5b3VyIGFkdmlzZW1lbnQuIFYxIG9yIFYyIHdp bGwgYmUgYXNzaWduZWQgdG8gYSBmdW5jdGlvbg0KcG9pbnRlciBkdXJpbmcgcHJvYmUuDQoNCj4g PiArCS8qDQo+ID4gKwkgKiBUaGUgZmlyc3QgcmVhZCBvZiBhIHNlbnNvciBvZnRlbiBjb250YWlu cyB2ZXJ5IGhpZ2ggYm9ndXMNCj4gPiArCSAqIHRlbXBlcmF0dXJlIHZhbHVlLiBGaWx0ZXIgdGhl c2Ugb3V0IHNvIHRoYXQgdGhlIHN5c3RlbSBkb2VzDQo+ID4gKwkgKiBub3QgaW1tZWRpYXRlbHkg c2h1dCBkb3duLg0KPiA+ICsJICovDQo+IA0KPiBJZiBpdCBoYXBwZW5zIG9ubHkgb25jZSwgd2h5 IG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYXQgcHJvYmUgdGltZSBzbw0KPiB0aGlzIHRlc3Qgd29u J3QgYmUgbmVlZGVkLg0KPiANCg0KSXQncyBleGlzdCBpbiBwcmV2aW91cyB1cHN0cmVhbSB2ZXJz aW9uLCBhbmQgb2xkIGNoaXBzIHNob3VsZCBiZQ0KY29tcGF0aWJsZS4gU28gd2UgbmVlZCB0byBr ZWVwIHRoaXMgZmlsdGVyIHRvIGF2b2lkIHdyb25nIHNlbnNvcg0KcmVhZGluZy4NCg0KPiA+ICsJ aWYgKHRlbXAgPiAyMDAwMDApDQo+ID4gKwkJcmV0dXJuIC1FQUdBSU47DQo+ID4gKwllbHNlDQo+ ID4gKwkJcmV0dXJuIHRlbXA7DQo+ID4gK30NCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgKiBtdGtf dGhlcm1hbF9iYW5rX3RlbXBlcmF0dXJlIC0gZ2V0IHRoZSB0ZW1wZXJhdHVyZSBvZiBhIGJhbmsN Cj4gPiAgICogQGJhbms6CVRoZSBiYW5rDQo+ID4gQEAgLTY0NywyOCArNjc2LDExIEBAIHN0YXRp YyB2b2lkIG10a190aGVybWFsX3B1dF9iYW5rKHN0cnVjdA0KPiA+IG10a190aGVybWFsX2Jhbmsg KmJhbmspDQo+ID4gIHN0YXRpYyBpbnQgbXRrX3RoZXJtYWxfYmFua190ZW1wZXJhdHVyZShzdHJ1 Y3QgbXRrX3RoZXJtYWxfYmFuaw0KPiA+ICpiYW5rKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgbXRr X3RoZXJtYWwgKm10ID0gYmFuay0+bXQ7DQo+ID4gLQljb25zdCBzdHJ1Y3QgbXRrX3RoZXJtYWxf ZGF0YSAqY29uZiA9IG10LT5jb25mOw0KPiA+ICAJaW50IGksIHRlbXAgPSBJTlRfTUlOLCBtYXgg PSBJTlRfTUlOOw0KPiA+IC0JdTMyIHJhdzsNCj4gPiAtDQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwg Y29uZi0+YmFua19kYXRhW2JhbmstPmlkXS5udW1fc2Vuc29yczsgaSsrKSB7DQo+ID4gLQkJcmF3 ID0gcmVhZGwobXQtPnRoZXJtYWxfYmFzZSArIGNvbmYtPm1zcltpXSk7DQo+ID4gIA0KPiA+IC0J CWlmIChtdC0+Y29uZi0+dmVyc2lvbiA9PSBNVEtfVEhFUk1BTF9WMSkgew0KPiA+IC0JCQl0ZW1w ID0gcmF3X3RvX21jZWxzaXVzX3YxKA0KPiA+IC0JCQkJbXQsIGNvbmYtPmJhbmtfZGF0YVtiYW5r LQ0KPiA+ID5pZF0uc2Vuc29yc1tpXSwgcmF3KTsNCj4gPiAtCQl9IGVsc2Ugew0KPiA+IC0JCQl0 ZW1wID0gcmF3X3RvX21jZWxzaXVzX3YyKA0KPiA+IC0JCQkJbXQsIGNvbmYtPmJhbmtfZGF0YVti YW5rLQ0KPiA+ID5pZF0uc2Vuc29yc1tpXSwgcmF3KTsNCj4gPiAtCQl9DQo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgbXQtPmNvbmYtPmJhbmtfZGF0YVtiYW5rLT5pZF0ubnVtX3NlbnNvcnM7IGkrKykN Cj4gPiB7DQo+ID4gIA0KPiA+IC0JCS8qDQo+ID4gLQkJICogVGhlIGZpcnN0IHJlYWQgb2YgYSBz ZW5zb3Igb2Z0ZW4gY29udGFpbnMgdmVyeSBoaWdoDQo+ID4gYm9ndXMNCj4gPiAtCQkgKiB0ZW1w ZXJhdHVyZSB2YWx1ZS4gRmlsdGVyIHRoZXNlIG91dCBzbyB0aGF0IHRoZQ0KPiA+IHN5c3RlbSBk b2VzDQo+ID4gLQkJICogbm90IGltbWVkaWF0ZWx5IHNodXQgZG93bi4NCj4gPiAtCQkgKi8NCj4g PiAtCQlpZiAodGVtcCA+IDIwMDAwMCkNCj4gPiAtCQkJdGVtcCA9IDA7DQo+ID4gKwkJdGVtcCA9 IF9nZXRfc2Vuc29yX3RlbXAobXQsIGkpOw0KPiA+ICANCj4gPiAgCQlpZiAodGVtcCA+IG1heCkN Cj4gPiAgCQkJbWF4ID0gdGVtcDsNCj4gPiBAQCAtNjc5LDcgKzY5MSw4IEBAIHN0YXRpYyBpbnQg bXRrX3RoZXJtYWxfYmFua190ZW1wZXJhdHVyZShzdHJ1Y3QNCj4gPiBtdGtfdGhlcm1hbF9iYW5r ICpiYW5rKQ0KPiA+ICANCj4gPiAgc3RhdGljIGludCBtdGtfcmVhZF90ZW1wKHZvaWQgKmRhdGEs IGludCAqdGVtcGVyYXR1cmUpDQo+ID4gIHsNCj4gPiAtCXN0cnVjdCBtdGtfdGhlcm1hbCAqbXQg PSBkYXRhOw0KPiA+ICsJc3RydWN0IG10a190aGVybWFsX3pvbmUgKnR6ID0gZGF0YTsNCj4gPiAr CXN0cnVjdCBtdGtfdGhlcm1hbCAqbXQgPSB0ei0+bXQ7DQo+ID4gIAlpbnQgaTsNCj4gPiAgCWlu dCB0ZW1wbWF4ID0gSU5UX01JTjsNCj4gPiAgDQo+ID4gQEAgLTY5OCwxMCArNzExLDI4IEBAIHN0 YXRpYyBpbnQgbXRrX3JlYWRfdGVtcCh2b2lkICpkYXRhLCBpbnQNCj4gPiAqdGVtcGVyYXR1cmUp DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIGludCBtdGtfcmVh ZF9zZW5zb3JfdGVtcCh2b2lkICpkYXRhLCBpbnQgKnRlbXBlcmF0dXJlKQ0KPiA+ICt7DQo+ID4g KwlzdHJ1Y3QgbXRrX3RoZXJtYWxfem9uZSAqdHogPSBkYXRhOw0KPiA+ICsJc3RydWN0IG10a190 aGVybWFsICptdCA9IHR6LT5tdDsNCj4gPiArCWludCBpZCA9IHR6LT5pZCAtIDE7DQo+ID4gKw0K PiA+ICsJaWYgKGlkIDwgMCkNCj4gPiArCQlyZXR1cm4gLUVBQ0NFUzsNCj4gDQo+IEhvdyB0aGlz IGNhbiBoYXBwZW4gPw0KPiANCg0KdHotPmlkID4gMCBpcyBhbHdheXMgdHJ1ZS4gSXQgd2lsbCBi ZSByZW1vdmVkIGluIG5leHQgdmVyc2lvbi4NCg0KDQo+ID4gDQo+ID4gKwkqdGVtcGVyYXR1cmUg PSBfZ2V0X3NlbnNvcl90ZW1wKG10LCBpZCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4g K30NCj4gPiArDQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGhlcm1hbF96b25lX29mX2Rldmlj ZV9vcHMgbXRrX3RoZXJtYWxfb3BzID0gew0KPiA+ICAJLmdldF90ZW1wID0gbXRrX3JlYWRfdGVt cCwNCj4gPiAgfTsNCj4gPiAgDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGhlcm1hbF96b25l X29mX2RldmljZV9vcHMNCj4gPiBtdGtfdGhlcm1hbF9zZW5zb3Jfb3BzID0gew0KPiA+ICsJLmdl dF90ZW1wID0gbXRrX3JlYWRfc2Vuc29yX3RlbXAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICBzdGF0 aWMgdm9pZCBtdGtfdGhlcm1hbF9pbml0X2Jhbmsoc3RydWN0IG10a190aGVybWFsICptdCwgaW50 IG51bSwNCj4gPiAgCQkJCSAgdTMyIGFwbWl4ZWRfcGh5c19iYXNlLCB1MzINCj4gPiBhdXhhZGNf cGh5c19iYXNlLA0KPiA+ICAJCQkJICBpbnQgY3RybF9pZCkNCj4gPiBAQCAtOTkyLDYgKzEwMjMs NyBAQCBzdGF0aWMgaW50IG10a190aGVybWFsX3Byb2JlKHN0cnVjdA0KPiA+IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCj4gPiAgCXU2NCBhdXhhZGNfcGh5c19iYXNlLCBhcG1peGVkX3BoeXNfYmFz ZTsNCj4gPiAgCXN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0emRldjsNCj4gPiAgCXZvaWQg X19pb21lbSAqYXBtaXhlZF9iYXNlLCAqYXV4YWRjX2Jhc2U7DQo+ID4gKwlzdHJ1Y3QgbXRrX3Ro ZXJtYWxfem9uZSAqdHo7DQo+ID4gIA0KPiA+ICAJbXQgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRl diwgc2l6ZW9mKCptdCksIEdGUF9LRVJORUwpOw0KPiA+ICAJaWYgKCFtdCkNCj4gPiBAQCAtMTA4 MCwxMSArMTExMiwyOSBAQCBzdGF0aWMgaW50IG10a190aGVybWFsX3Byb2JlKHN0cnVjdA0KPiA+ IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgDQo+ID4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0 YShwZGV2LCBtdCk7DQo+ID4gIA0KPiA+IC0JdHpkZXYgPSBkZXZtX3RoZXJtYWxfem9uZV9vZl9z ZW5zb3JfcmVnaXN0ZXIoJnBkZXYtPmRldiwgMCwgbXQsDQo+ID4gLQkJCQkJCSAgICAgJm10a190 aGVybWFsX29wcyk7DQo+ID4gLQlpZiAoSVNfRVJSKHR6ZGV2KSkgew0KPiA+IC0JCXJldCA9IFBU Ul9FUlIodHpkZXYpOw0KPiA+IC0JCWdvdG8gZXJyX2Rpc2FibGVfY2xrX3BlcmlfdGhlcm07DQo+ ID4gKwlmb3IgKGkgPSAwOyBpIDwgbXQtPmNvbmYtPm51bV9zZW5zb3JzICsgMTsgaSsrKSB7DQo+ ID4gKwkJdHogPSBkZXZtX2ttYWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCp0eiksIEdGUF9LRVJO RUwpOw0KPiA+ICsJCWlmICghdHopDQo+ID4gKwkJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4g PiArCQl0ei0+bXQgPSBtdDsNCj4gPiArCQl0ei0+aWQgPSBpOw0KPiA+ICsNCj4gPiArCQl0emRl diA9IGRldm1fdGhlcm1hbF96b25lX29mX3NlbnNvcl9yZWdpc3RlcigmcGRldi0NCj4gPiA+ZGV2 LCBpLCB0eiwgKGkgPT0gMCkgPw0KPiA+ICsJCQkJCQkJICAgICAmbXRrX3RoZXJtDQo+ID4gYWxf b3BzIDoNCj4gPiArCQkJCQkJCSAgICAgJm10a190aGVybQ0KPiA+IGFsX3NlbnNvcl9vcHMpOw0K PiA+ICsNCj4gPiArCQlpZiAoSVNfRVJSKHR6ZGV2KSkgew0KPiA+ICsJCQlpZiAoUFRSX0VSUih0 emRldikgPT0gLUVOT0RFVikgew0KPiA+ICsJCQkJZGV2X3dhcm4oJnBkZXYtPmRldiwNCj4gPiAr CQkJCQkgInNlbnNvciAlZCBub3QgcmVnaXN0ZXJlZCBpbg0KPiA+IHRoZXJtYWwgem9uZSBpbiBk dFxuIiwgaSk7DQo+ID4gKwkJCQljb250aW51ZTsNCj4gPiArCQkJfQ0KPiA+ICsJCQlpZiAoUFRS X0VSUih0emRldikgPT0gLUVBQ0NFUykgew0KPiA+ICsJCQkJcmV0ID0gUFRSX0VSUih0emRldik7 DQo+ID4gKwkJCQlnb3RvIGVycl9kaXNhYmxlX2Nsa19wZXJpX3RoZXJtOw0KPiA+ICsJCQl9DQo+ IA0KPiBJZiB0aGUgZXJyb3IgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBsb29wIGNvbnRpbnVl cy4gSXMgdGhhdCB3aGF0DQo+IHlvdQ0KPiB3YW50ID8NCg0KTmV4dCB2ZXJzaW9uLCBBcyBzb29u IGFzIHRoZXJtYWwgem9uZSByZWdpc3RlciBmYWlsLCBicmVhayBhbmQgcmV0dXJuLg0KDQo+ID4g KwkJfQ0KPiA+ICAJfQ0KPiA+ICANCj4gPiAgCXJldHVybiAwOw0KPiA+IA0KPiANCj4gDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6BBF7C4338F for ; Fri, 13 Aug 2021 12:04:48 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 25AC960E52 for ; Fri, 13 Aug 2021 12:04:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 25AC960E52 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IhUHpT+UPhOcOQKS7LY1qvhlw6ES/JWDhpfFDBwgDRo=; b=vCJMJUlO3+Bt3/ iSwgI8VtiLKlR8XR7gnHSVzFd/ojY/V/4CmguM5WIeVC64VRG2N9h+mBK6g1gVf4eIgCU2DO61JQx sCVkXab+OjbkOxIKqoerCs5dHQ4Rc1UWeoWGLhgnYtkjqy5eiRNm0Uci8HvfXvzbljoUq+aPCwvXd qoo1dgXjCjRtrzbN3Ptrch9rb0h9OmGzgyUy5ynqDW6k3GkuwNn4DqWgKa7rMRtztguX+4up5IQyV 8G5/Us96UEb9egq0emkeFDvGJK4Vk5XCLvN0AV3SQV8bQPkgQv4hT+Zi9fggAphuojhg+3wjvJuC3 vs/NfDzSEuEYlG6uwrBA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mEVvO-00CZVu-7Z; Fri, 13 Aug 2021 12:04:34 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mEVv7-00CZVG-O2; Fri, 13 Aug 2021 12:04:23 +0000 X-UUID: 29e114870980475bbddefad8c10f33b3-20210813 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=vUAOvzKSeucK2ubkFgtwhNsDy8US+nwjlSJMvKmjoe8=; b=hQubkYd+a3OpgIJwHBVknm8+dvHphOIcGFMDqSo4zyo/6JB+tKfLw9SmgzEgSNjPet5KqtJ/16GEfAx79A9xM1Fb40ye7+MelYFZc21gR75shZsn3CzlzcOkBTjM+6sCBIcsnLMZ1jaMmVzLgE0zaNLMk0RO5NkQbhvhb9CqKZM=; X-UUID: 29e114870980475bbddefad8c10f33b3-20210813 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1019925190; Fri, 13 Aug 2021 05:04:12 -0700 Received: from MTKMBS02N2.mediatek.inc (172.21.101.101) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 13 Aug 2021 04:54:10 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 13 Aug 2021 19:54:07 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 13 Aug 2021 19:54:08 +0800 Message-ID: Subject: Re: [PATCH v8] thermal: mediatek: add another get_temp ops for thermal sensors From: Ben Tseng To: Daniel Lezcano , Fan Chen , Zhang Rui , , CC: Eduardo Valentin , Rob Herring , Mark Rutland , Matthias Brugger , , , , , , , Michael Kao Date: Fri, 13 Aug 2021 19:54:08 +0800 In-Reply-To: References: <20210603110042.21688-1-ben.tseng@mediatek.com> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210813_050419_241288_9922D4EA X-CRM114-Status: GOOD ( 53.12 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Dear Daniel, Sorry for the late reply On Mon, 2021-06-14 at 18:58 +0200, Daniel Lezcano wrote: > On 03/06/2021 13:00, Ben Tseng wrote: > > From: Michael Kao > > > > Provide thermal zone to read thermal sensor > > in the SoC. We can read all the thermal sensors > > value in the SoC by the node /sys/class/thermal/ > > > > In mtk_thermal_bank_temperature, return -EAGAIN instead of -EACCESS > > on the first read of sensor that often are bogus values. > > This can avoid following warning on boot: > > > > thermal thermal_zone6: failed to read out thermal zone (-13) > > > > Signed-off-by: Michael Kao > > Signed-off-by: Ben Tseng > > > > --- > > > > This patchset supports for MT8183 chip to mtk_thermal.c. > > Add thermal zone of all the thermal sensor in SoC for > > another get temperatrue. They don't need to thermal throttle. > > And we bind coolers for thermal zone nodes of cpu_thermal. > > > > Changes in V8: > > - Rebase to kernel-v5.13-rc1 > > - Resend > > > > Changes in v7: > > - Fix build error in v6. > > > > Changes in v6: > > - Rebase to kernel-5.11-rc1. > > - [1/3] > > - add interrupts property. > > - [2/3] > > - add the Tested-by in the commit message. > > - [3/3] > > - use the mt->conf->msr[id] instead of conf->msr[id] in the > > _get_sensor_temp and mtk_thermal_bank_temperature. > > - remove the redundant space in _get_sensor_temp and > > mtk_read_sensor_temp. > > - change kmalloc to dev_kmalloc in mtk_thermal_probe. > > > > Changes in v5: > > - Rebase to kernel-5.9-rc1. > > - Revise the title of cover letter. > > - Drop "[v4,7/7] thermal: mediatek: use spinlock to protect > > PTPCORESEL" > > - [2/2] > > - Add the judgement to the version of raw_to_mcelsius. > > > > Changes in v4: > > - Rebase to kernel-5.6-rc1. > > - [1/7] > > - Squash thermal zone settings in the dtsi from [v3,5/8] > > arm64: dts: mt8183: Increase polling frequency for CPU > > thermal zone. > > - Remove the property of interrupts and mediatek,hw-reset- > > temp. > > - [2/7] > > - Correct commit message. > > - [4/7] > > - Change the target temperature to the 80C and change the > > commit message. > > - [6/7] > > - Adjust newline alignment. > > - Fix the judgement on the return value of registering > > thermal zone. > > > > Changes in v3: > > - Rebase to kernel-5.5-rc1. > > - [1/8] > > - Update sustainable power of cpu, tzts1~5 and tztsABB. > > - [7/8] > > - Bypass the failure that non cpu_thermal sensor is not > > find in thermal-zones > > in dts, which is normal for mt8173, so prompt a warning > > here instead of > > failing. > > > > Return -EAGAIN instead of -EACCESS on the first read of sensor > > that > > often are bogus values. This can avoid following warning on > > boot: > > > > thermal thermal_zone6: failed to read out thermal zone (- > > 13) > > > > Changes in v2: > > - [1/8] > > - Add the sustainable-power,trips,cooling-maps to the > > tzts1~tztsABB. > > - [4/8] > > - Add the min opp of cpu throttle. > > > > Matthias Kaehlcke (1): > > arm64: dts: mt8183: Configure CPU cooling > > > > Michael Kao (2): > > thermal: mediatek: add another get_temp ops for thermal sensors > > arm64: dts: mt8183: add thermal zone node > > --- > > drivers/thermal/mtk_thermal.c | 100 > > +++++++++++++++++++++++++++++++----------- > > 1 file changed, 75 insertions(+), 25 deletions(-) > > > > diff --git a/drivers/thermal/mtk_thermal.c > > b/drivers/thermal/mtk_thermal.c > > index 97e8678..b6bee451 100644 > > --- a/drivers/thermal/mtk_thermal.c > > +++ b/drivers/thermal/mtk_thermal.c > > @@ -245,6 +245,11 @@ enum mtk_thermal_version { > > > > struct mtk_thermal; > > > > +struct mtk_thermal_zone { > > + struct mtk_thermal *mt; > > + int id; > > +}; > > How does it differ from 'struct mtk_thermal_bank' ? "truct mtk_thermal_zone" is duplicated. It will be removed next version > > > struct thermal_bank_cfg { > > unsigned int num_sensors; > > const int *sensors; > > @@ -637,6 +642,30 @@ static void mtk_thermal_put_bank(struct > > mtk_thermal_bank *bank) > > mutex_unlock(&mt->lock); > > } > > > > +static u32 _get_sensor_temp(struct mtk_thermal *mt, int id) > > +{ > > + u32 raw; > > + int temp; > > + > > + raw = readl(mt->thermal_base + mt->conf->msr[id]); > > + > > + if (mt->conf->version == MTK_THERMAL_V1) > > + temp = raw_to_mcelsius_v1(mt, id, raw); > > + else > > + temp = raw_to_mcelsius_v2(mt, id, raw); > > Please add the proper conversion function as a callback and set it at > probe time, instead of checking at every call. > Thanks for your advisement. V1 or V2 will be assigned to a function pointer during probe. > > + /* > > + * The first read of a sensor often contains very high bogus > > + * temperature value. Filter these out so that the system does > > + * not immediately shut down. > > + */ > > If it happens only once, why not call this function at probe time so > this test won't be needed. > It's exist in previous upstream version, and old chips should be compatible. So we need to keep this filter to avoid wrong sensor reading. > > + if (temp > 200000) > > + return -EAGAIN; > > + else > > + return temp; > > +} > > + > > /** > > * mtk_thermal_bank_temperature - get the temperature of a bank > > * @bank: The bank > > @@ -647,28 +676,11 @@ static void mtk_thermal_put_bank(struct > > mtk_thermal_bank *bank) > > static int mtk_thermal_bank_temperature(struct mtk_thermal_bank > > *bank) > > { > > struct mtk_thermal *mt = bank->mt; > > - const struct mtk_thermal_data *conf = mt->conf; > > int i, temp = INT_MIN, max = INT_MIN; > > - u32 raw; > > - > > - for (i = 0; i < conf->bank_data[bank->id].num_sensors; i++) { > > - raw = readl(mt->thermal_base + conf->msr[i]); > > > > - if (mt->conf->version == MTK_THERMAL_V1) { > > - temp = raw_to_mcelsius_v1( > > - mt, conf->bank_data[bank- > > >id].sensors[i], raw); > > - } else { > > - temp = raw_to_mcelsius_v2( > > - mt, conf->bank_data[bank- > > >id].sensors[i], raw); > > - } > > + for (i = 0; i < mt->conf->bank_data[bank->id].num_sensors; i++) > > { > > > > - /* > > - * The first read of a sensor often contains very high > > bogus > > - * temperature value. Filter these out so that the > > system does > > - * not immediately shut down. > > - */ > > - if (temp > 200000) > > - temp = 0; > > + temp = _get_sensor_temp(mt, i); > > > > if (temp > max) > > max = temp; > > @@ -679,7 +691,8 @@ static int mtk_thermal_bank_temperature(struct > > mtk_thermal_bank *bank) > > > > static int mtk_read_temp(void *data, int *temperature) > > { > > - struct mtk_thermal *mt = data; > > + struct mtk_thermal_zone *tz = data; > > + struct mtk_thermal *mt = tz->mt; > > int i; > > int tempmax = INT_MIN; > > > > @@ -698,10 +711,28 @@ static int mtk_read_temp(void *data, int > > *temperature) > > return 0; > > } > > > > +static int mtk_read_sensor_temp(void *data, int *temperature) > > +{ > > + struct mtk_thermal_zone *tz = data; > > + struct mtk_thermal *mt = tz->mt; > > + int id = tz->id - 1; > > + > > + if (id < 0) > > + return -EACCES; > > How this can happen ? > tz->id > 0 is always true. It will be removed in next version. > > > > + *temperature = _get_sensor_temp(mt, id); > > + > > + return 0; > > +} > > + > > static const struct thermal_zone_of_device_ops mtk_thermal_ops = { > > .get_temp = mtk_read_temp, > > }; > > > > +static const struct thermal_zone_of_device_ops > > mtk_thermal_sensor_ops = { > > + .get_temp = mtk_read_sensor_temp, > > +}; > > + > > static void mtk_thermal_init_bank(struct mtk_thermal *mt, int num, > > u32 apmixed_phys_base, u32 > > auxadc_phys_base, > > int ctrl_id) > > @@ -992,6 +1023,7 @@ static int mtk_thermal_probe(struct > > platform_device *pdev) > > u64 auxadc_phys_base, apmixed_phys_base; > > struct thermal_zone_device *tzdev; > > void __iomem *apmixed_base, *auxadc_base; > > + struct mtk_thermal_zone *tz; > > > > mt = devm_kzalloc(&pdev->dev, sizeof(*mt), GFP_KERNEL); > > if (!mt) > > @@ -1080,11 +1112,29 @@ static int mtk_thermal_probe(struct > > platform_device *pdev) > > > > platform_set_drvdata(pdev, mt); > > > > - tzdev = devm_thermal_zone_of_sensor_register(&pdev->dev, 0, mt, > > - &mtk_thermal_ops); > > - if (IS_ERR(tzdev)) { > > - ret = PTR_ERR(tzdev); > > - goto err_disable_clk_peri_therm; > > + for (i = 0; i < mt->conf->num_sensors + 1; i++) { > > + tz = devm_kmalloc(&pdev->dev, sizeof(*tz), GFP_KERNEL); > > + if (!tz) > > + return -ENOMEM; > > + > > + tz->mt = mt; > > + tz->id = i; > > + > > + tzdev = devm_thermal_zone_of_sensor_register(&pdev- > > >dev, i, tz, (i == 0) ? > > + &mtk_therm > > al_ops : > > + &mtk_therm > > al_sensor_ops); > > + > > + if (IS_ERR(tzdev)) { > > + if (PTR_ERR(tzdev) == -ENODEV) { > > + dev_warn(&pdev->dev, > > + "sensor %d not registered in > > thermal zone in dt\n", i); > > + continue; > > + } > > + if (PTR_ERR(tzdev) == -EACCES) { > > + ret = PTR_ERR(tzdev); > > + goto err_disable_clk_peri_therm; > > + } > > If the error is none of the above, the loop continues. Is that what > you > want ? Next version, As soon as thermal zone register fail, break and return. > > + } > > } > > > > return 0; > > > > _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B302EC4338F for ; Fri, 13 Aug 2021 12:06:37 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6D5D060EFE for ; Fri, 13 Aug 2021 12:06:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6D5D060EFE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jiMhNc8YrdTr1UbkLl4ZWuDbtibRb1Sfv8XswlkFB5E=; b=W1zxAho5kLlzAM ueSHRa4jIVt7z/If1wg44cR+FCnit2q/xydlgy2QXagKLCQnMhsdLznAxRy+0iEaZRBcY/b3ahwN0 BQd4tBO/HyF2XfYsytDgWITFhOq3FcrWDYqIQNi9hUXJDjqoxi/piEYj2agg0uhv92vBVX3IOUi9W nXjTGBCXD2vqbEpDCfYdw0PDeVEGLNzVIVPNO/po23Hpn7daYB/I5mhcI0K0pd2f2SDIYpAYlMwTy Ex8MTRDEMVQ8pdRxAEj+q1fjmhIxF5j6yomY4WVQsiiCw93kUXHo1MpTqqqJfU/5cZ24WQE84SqYs myBdW3SeaIleRoDppflQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mEVvF-00CZVi-BO; Fri, 13 Aug 2021 12:04:25 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mEVv7-00CZVG-O2; Fri, 13 Aug 2021 12:04:23 +0000 X-UUID: 29e114870980475bbddefad8c10f33b3-20210813 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=vUAOvzKSeucK2ubkFgtwhNsDy8US+nwjlSJMvKmjoe8=; b=hQubkYd+a3OpgIJwHBVknm8+dvHphOIcGFMDqSo4zyo/6JB+tKfLw9SmgzEgSNjPet5KqtJ/16GEfAx79A9xM1Fb40ye7+MelYFZc21gR75shZsn3CzlzcOkBTjM+6sCBIcsnLMZ1jaMmVzLgE0zaNLMk0RO5NkQbhvhb9CqKZM=; X-UUID: 29e114870980475bbddefad8c10f33b3-20210813 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1019925190; Fri, 13 Aug 2021 05:04:12 -0700 Received: from MTKMBS02N2.mediatek.inc (172.21.101.101) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 13 Aug 2021 04:54:10 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 13 Aug 2021 19:54:07 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 13 Aug 2021 19:54:08 +0800 Message-ID: Subject: Re: [PATCH v8] thermal: mediatek: add another get_temp ops for thermal sensors From: Ben Tseng To: Daniel Lezcano , Fan Chen , Zhang Rui , , CC: Eduardo Valentin , Rob Herring , Mark Rutland , Matthias Brugger , , , , , , , Michael Kao Date: Fri, 13 Aug 2021 19:54:08 +0800 In-Reply-To: References: <20210603110042.21688-1-ben.tseng@mediatek.com> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210813_050419_241288_9922D4EA X-CRM114-Status: GOOD ( 53.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Dear Daniel, Sorry for the late reply On Mon, 2021-06-14 at 18:58 +0200, Daniel Lezcano wrote: > On 03/06/2021 13:00, Ben Tseng wrote: > > From: Michael Kao > > > > Provide thermal zone to read thermal sensor > > in the SoC. We can read all the thermal sensors > > value in the SoC by the node /sys/class/thermal/ > > > > In mtk_thermal_bank_temperature, return -EAGAIN instead of -EACCESS > > on the first read of sensor that often are bogus values. > > This can avoid following warning on boot: > > > > thermal thermal_zone6: failed to read out thermal zone (-13) > > > > Signed-off-by: Michael Kao > > Signed-off-by: Ben Tseng > > > > --- > > > > This patchset supports for MT8183 chip to mtk_thermal.c. > > Add thermal zone of all the thermal sensor in SoC for > > another get temperatrue. They don't need to thermal throttle. > > And we bind coolers for thermal zone nodes of cpu_thermal. > > > > Changes in V8: > > - Rebase to kernel-v5.13-rc1 > > - Resend > > > > Changes in v7: > > - Fix build error in v6. > > > > Changes in v6: > > - Rebase to kernel-5.11-rc1. > > - [1/3] > > - add interrupts property. > > - [2/3] > > - add the Tested-by in the commit message. > > - [3/3] > > - use the mt->conf->msr[id] instead of conf->msr[id] in the > > _get_sensor_temp and mtk_thermal_bank_temperature. > > - remove the redundant space in _get_sensor_temp and > > mtk_read_sensor_temp. > > - change kmalloc to dev_kmalloc in mtk_thermal_probe. > > > > Changes in v5: > > - Rebase to kernel-5.9-rc1. > > - Revise the title of cover letter. > > - Drop "[v4,7/7] thermal: mediatek: use spinlock to protect > > PTPCORESEL" > > - [2/2] > > - Add the judgement to the version of raw_to_mcelsius. > > > > Changes in v4: > > - Rebase to kernel-5.6-rc1. > > - [1/7] > > - Squash thermal zone settings in the dtsi from [v3,5/8] > > arm64: dts: mt8183: Increase polling frequency for CPU > > thermal zone. > > - Remove the property of interrupts and mediatek,hw-reset- > > temp. > > - [2/7] > > - Correct commit message. > > - [4/7] > > - Change the target temperature to the 80C and change the > > commit message. > > - [6/7] > > - Adjust newline alignment. > > - Fix the judgement on the return value of registering > > thermal zone. > > > > Changes in v3: > > - Rebase to kernel-5.5-rc1. > > - [1/8] > > - Update sustainable power of cpu, tzts1~5 and tztsABB. > > - [7/8] > > - Bypass the failure that non cpu_thermal sensor is not > > find in thermal-zones > > in dts, which is normal for mt8173, so prompt a warning > > here instead of > > failing. > > > > Return -EAGAIN instead of -EACCESS on the first read of sensor > > that > > often are bogus values. This can avoid following warning on > > boot: > > > > thermal thermal_zone6: failed to read out thermal zone (- > > 13) > > > > Changes in v2: > > - [1/8] > > - Add the sustainable-power,trips,cooling-maps to the > > tzts1~tztsABB. > > - [4/8] > > - Add the min opp of cpu throttle. > > > > Matthias Kaehlcke (1): > > arm64: dts: mt8183: Configure CPU cooling > > > > Michael Kao (2): > > thermal: mediatek: add another get_temp ops for thermal sensors > > arm64: dts: mt8183: add thermal zone node > > --- > > drivers/thermal/mtk_thermal.c | 100 > > +++++++++++++++++++++++++++++++----------- > > 1 file changed, 75 insertions(+), 25 deletions(-) > > > > diff --git a/drivers/thermal/mtk_thermal.c > > b/drivers/thermal/mtk_thermal.c > > index 97e8678..b6bee451 100644 > > --- a/drivers/thermal/mtk_thermal.c > > +++ b/drivers/thermal/mtk_thermal.c > > @@ -245,6 +245,11 @@ enum mtk_thermal_version { > > > > struct mtk_thermal; > > > > +struct mtk_thermal_zone { > > + struct mtk_thermal *mt; > > + int id; > > +}; > > How does it differ from 'struct mtk_thermal_bank' ? "truct mtk_thermal_zone" is duplicated. It will be removed next version > > > struct thermal_bank_cfg { > > unsigned int num_sensors; > > const int *sensors; > > @@ -637,6 +642,30 @@ static void mtk_thermal_put_bank(struct > > mtk_thermal_bank *bank) > > mutex_unlock(&mt->lock); > > } > > > > +static u32 _get_sensor_temp(struct mtk_thermal *mt, int id) > > +{ > > + u32 raw; > > + int temp; > > + > > + raw = readl(mt->thermal_base + mt->conf->msr[id]); > > + > > + if (mt->conf->version == MTK_THERMAL_V1) > > + temp = raw_to_mcelsius_v1(mt, id, raw); > > + else > > + temp = raw_to_mcelsius_v2(mt, id, raw); > > Please add the proper conversion function as a callback and set it at > probe time, instead of checking at every call. > Thanks for your advisement. V1 or V2 will be assigned to a function pointer during probe. > > + /* > > + * The first read of a sensor often contains very high bogus > > + * temperature value. Filter these out so that the system does > > + * not immediately shut down. > > + */ > > If it happens only once, why not call this function at probe time so > this test won't be needed. > It's exist in previous upstream version, and old chips should be compatible. So we need to keep this filter to avoid wrong sensor reading. > > + if (temp > 200000) > > + return -EAGAIN; > > + else > > + return temp; > > +} > > + > > /** > > * mtk_thermal_bank_temperature - get the temperature of a bank > > * @bank: The bank > > @@ -647,28 +676,11 @@ static void mtk_thermal_put_bank(struct > > mtk_thermal_bank *bank) > > static int mtk_thermal_bank_temperature(struct mtk_thermal_bank > > *bank) > > { > > struct mtk_thermal *mt = bank->mt; > > - const struct mtk_thermal_data *conf = mt->conf; > > int i, temp = INT_MIN, max = INT_MIN; > > - u32 raw; > > - > > - for (i = 0; i < conf->bank_data[bank->id].num_sensors; i++) { > > - raw = readl(mt->thermal_base + conf->msr[i]); > > > > - if (mt->conf->version == MTK_THERMAL_V1) { > > - temp = raw_to_mcelsius_v1( > > - mt, conf->bank_data[bank- > > >id].sensors[i], raw); > > - } else { > > - temp = raw_to_mcelsius_v2( > > - mt, conf->bank_data[bank- > > >id].sensors[i], raw); > > - } > > + for (i = 0; i < mt->conf->bank_data[bank->id].num_sensors; i++) > > { > > > > - /* > > - * The first read of a sensor often contains very high > > bogus > > - * temperature value. Filter these out so that the > > system does > > - * not immediately shut down. > > - */ > > - if (temp > 200000) > > - temp = 0; > > + temp = _get_sensor_temp(mt, i); > > > > if (temp > max) > > max = temp; > > @@ -679,7 +691,8 @@ static int mtk_thermal_bank_temperature(struct > > mtk_thermal_bank *bank) > > > > static int mtk_read_temp(void *data, int *temperature) > > { > > - struct mtk_thermal *mt = data; > > + struct mtk_thermal_zone *tz = data; > > + struct mtk_thermal *mt = tz->mt; > > int i; > > int tempmax = INT_MIN; > > > > @@ -698,10 +711,28 @@ static int mtk_read_temp(void *data, int > > *temperature) > > return 0; > > } > > > > +static int mtk_read_sensor_temp(void *data, int *temperature) > > +{ > > + struct mtk_thermal_zone *tz = data; > > + struct mtk_thermal *mt = tz->mt; > > + int id = tz->id - 1; > > + > > + if (id < 0) > > + return -EACCES; > > How this can happen ? > tz->id > 0 is always true. It will be removed in next version. > > > > + *temperature = _get_sensor_temp(mt, id); > > + > > + return 0; > > +} > > + > > static const struct thermal_zone_of_device_ops mtk_thermal_ops = { > > .get_temp = mtk_read_temp, > > }; > > > > +static const struct thermal_zone_of_device_ops > > mtk_thermal_sensor_ops = { > > + .get_temp = mtk_read_sensor_temp, > > +}; > > + > > static void mtk_thermal_init_bank(struct mtk_thermal *mt, int num, > > u32 apmixed_phys_base, u32 > > auxadc_phys_base, > > int ctrl_id) > > @@ -992,6 +1023,7 @@ static int mtk_thermal_probe(struct > > platform_device *pdev) > > u64 auxadc_phys_base, apmixed_phys_base; > > struct thermal_zone_device *tzdev; > > void __iomem *apmixed_base, *auxadc_base; > > + struct mtk_thermal_zone *tz; > > > > mt = devm_kzalloc(&pdev->dev, sizeof(*mt), GFP_KERNEL); > > if (!mt) > > @@ -1080,11 +1112,29 @@ static int mtk_thermal_probe(struct > > platform_device *pdev) > > > > platform_set_drvdata(pdev, mt); > > > > - tzdev = devm_thermal_zone_of_sensor_register(&pdev->dev, 0, mt, > > - &mtk_thermal_ops); > > - if (IS_ERR(tzdev)) { > > - ret = PTR_ERR(tzdev); > > - goto err_disable_clk_peri_therm; > > + for (i = 0; i < mt->conf->num_sensors + 1; i++) { > > + tz = devm_kmalloc(&pdev->dev, sizeof(*tz), GFP_KERNEL); > > + if (!tz) > > + return -ENOMEM; > > + > > + tz->mt = mt; > > + tz->id = i; > > + > > + tzdev = devm_thermal_zone_of_sensor_register(&pdev- > > >dev, i, tz, (i == 0) ? > > + &mtk_therm > > al_ops : > > + &mtk_therm > > al_sensor_ops); > > + > > + if (IS_ERR(tzdev)) { > > + if (PTR_ERR(tzdev) == -ENODEV) { > > + dev_warn(&pdev->dev, > > + "sensor %d not registered in > > thermal zone in dt\n", i); > > + continue; > > + } > > + if (PTR_ERR(tzdev) == -EACCES) { > > + ret = PTR_ERR(tzdev); > > + goto err_disable_clk_peri_therm; > > + } > > If the error is none of the above, the loop continues. Is that what > you > want ? Next version, As soon as thermal zone register fail, break and return. > > + } > > } > > > > return 0; > > > > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel