From mboxrd@z Thu Jan 1 00:00:00 1970 From: Caesar Wang Subject: Re: [PATCH v2 4/9] thermal: rockchip: improve the conversion function Date: Sat, 07 Nov 2015 22:41:58 +0800 Message-ID: <563E0DB6.3010704@gmail.com> References: <1446700685-18017-1-git-send-email-wxt@rock-chips.com> <1446700685-18017-5-git-send-email-wxt@rock-chips.com> <20151106190006.GB8202@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20151106190006.GB8202-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Eduardo Valentin Cc: Heiko Stuebner , linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Zhang Rui , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Caesar Wang List-Id: linux-pm@vger.kernel.org SGVsbG8gRWR1YXJkbywKCuWcqCAyMDE15bm0MTHmnIgwN+aXpSAwMzowMCwgRWR1YXJkbyBWYWxl bnRpbiDlhpnpgZM6Cj4gSGVsbG8gQ2Flc2FyLAo+Cj4gT24gVGh1LCBOb3YgMDUsIDIwMTUgYXQg MDE6MTg6MDBQTSArMDgwMCwgQ2Flc2FyIFdhbmcgd3JvdGU6Cj4+IFdlIHNob3VsZCBtYWtlIHRo ZSBjb252ZXJzaW9uIHRhYmxlIGluIGFzIGEgcGFyYW1ldGVyIHNpbmNlIHRoZSBkaWZmZXJlbnQK Pj4gU29DcyBoYXZlIHRoZSBkaWZmZXJlbnQgY29udmVyc2lvbmlvbiB0YWJsZS4KPj4KPj4gU2ln bmVkLW9mZi1ieTogQ2Flc2FyIFdhbmcgPHd4dEByb2NrLWNoaXBzLmNvbT4KPj4gLS0tCj4+Cj4+ IENoYW5nZXMgaW4gdjI6Cj4+IC0gbWFrZSB0aGUgY29udmVyc2lvbiB0YWJsZSBpbiBhcyBhIHBh cmFtZXRlciBib3RoIGNvZGVfdG9fdGVtcAo+PiAgICBhbmQgdGVtcF90b19jb2RlIGZ1bmN0aW9u Lgo+Cj4gTm93IGl0IGxvb2tzIGNsZWFuZXIuIFRoYW5rcy4KPgo+IFRoZSBjb21tZW50cyBiZWxv dyBhcmUgcHJvYmFibHkgbm90IGRpcmVjdGx5IG9uIHRoaXMgY2hhbmdlLiBZb3UgbWF5Cj4gd2Fu dCB0byBhZGQgYSBkaWZmZXJlbnQgcGF0Y2ggdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBzdWdnZXN0 aW9ucyB0aGF0Cj4gZm9sbG93cy4KCk9rYXksIEkgd2lsbCBzZW5kIGEgYW5vdGhlciBwYXRjaCB0 byBmaXggaXQuClRoYW5rcyB5b3VyIHJldmlld2luZyB0aGlzIHBhdGNoLgoKCgoKPj4gU2VyaWVz LWNoYW5nZXM6IDEKPj4gLSBBcyBEbWl0cnkgY29tbWVudCwgbWFrZSB0aGUgY29udmVyc2lvbiB0 YWJsZSBpbiBhcyBhIHBhcmFtZXRlci4KPj4KPj4gQ2hhbmdlcyBpbiB2MTogTm9uZQo+Pgo+PiAg IGRyaXZlcnMvdGhlcm1hbC9yb2NrY2hpcF90aGVybWFsLmMgfCA4MiArKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA1NSBpbnNlcnRpb25z KCspLCAyNyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9y b2NrY2hpcF90aGVybWFsLmMgYi9kcml2ZXJzL3RoZXJtYWwvcm9ja2NoaXBfdGhlcm1hbC5jCj4+ IGluZGV4IGJkZjcwNjMuLmU4MjhmMTggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdGhlcm1hbC9y b2NrY2hpcF90aGVybWFsLmMKPj4gKysrIGIvZHJpdmVycy90aGVybWFsL3JvY2tjaGlwX3RoZXJt YWwuYwo+PiBAQCAtNTgsNiArNTgsMTYgQEAgZW51bSBzZW5zb3JfaWQgewo+PiAgICAqLwo+PiAg ICNkZWZpbmUgU09DX01BWF9TRU5TT1JTCTIKPj4gICAKPj4gK3N0cnVjdCBjaGlwX3RzYWRjX3Rh YmxlIHsKPj4gKwljb25zdCBzdHJ1Y3QgdHNhZGNfdGFibGUgKmlkOwo+PiArCj4+ICsJLyogdGhl IGFycmF5IHRhYmxlIHNpemUqLwo+PiArCXVuc2lnbmVkIGludCBsZW5ndGg7Cj4+ICsKPj4gKwkv KiB0aGF0IGFuYWxvZ2ljIG1hc2sgZGF0YSAqLwo+PiArCXVuc2lnbmVkIGxvbmcgZGF0YV9tYXNr Owo+IEFyZSB5b3Ugc3VyZSB0aGlzIG5lZWQgdG8gYmUgbG9uZz8KClNlZW0uLi4uLndlIHNob3Vs ZCBtYXJrIHRoZSAndW5zaWduZWQgaW50ICBvciB1MzInLgoKCj4+ICt9Owo+PiArCj4+ICAgc3Ry dWN0IHJvY2tjaGlwX3RzYWRjX2NoaXAgewo+PiAgIAkvKiBUaGUgc2Vuc29yIGlkIG9mIGNoaXAg Y29ycmVzcG9uZCB0byB0aGUgQURDIGNoYW5uZWwgKi8KPj4gICAJaW50IGNobl9pZFtTT0NfTUFY X1NFTlNPUlNdOwo+PiBAQCAtNzQsOSArODQsMTQgQEAgc3RydWN0IHJvY2tjaGlwX3RzYWRjX2No aXAgewo+PiAgIAl2b2lkICgqY29udHJvbCkodm9pZCBfX2lvbWVtICpyZWcsIGJvb2wgb24pOwo+ PiAgIAo+PiAgIAkvKiBQZXItc2Vuc29yIG1ldGhvZHMgKi8KPj4gLQlpbnQgKCpnZXRfdGVtcCko aW50IGNobiwgdm9pZCBfX2lvbWVtICpyZWcsIGludCAqdGVtcCk7Cj4+IC0Jdm9pZCAoKnNldF90 c2h1dF90ZW1wKShpbnQgY2huLCB2b2lkIF9faW9tZW0gKnJlZywgbG9uZyB0ZW1wKTsKPj4gKwlp bnQgKCpnZXRfdGVtcCkoc3RydWN0IGNoaXBfdHNhZGNfdGFibGUgdGFibGUsCj4+ICsJCQlpbnQg Y2huLCB2b2lkIF9faW9tZW0gKnJlZywgaW50ICp0ZW1wKTsKPj4gKwl2b2lkICgqc2V0X3RzaHV0 X3RlbXApKHN0cnVjdCBjaGlwX3RzYWRjX3RhYmxlIHRhYmxlLAo+PiArCQkJICAgICAgIGludCBj aG4sIHZvaWQgX19pb21lbSAqcmVnLCBsb25nIHRlbXApOwo+IFRlbXBlcmF0dXJlIGlzIGN1cnJl bnRseSByZXByZXNlbnRlZCBhcyBpbnQgbm90IGxvbmcgaW4gdGhlIHRoZXJtYWwKPiBmcmFtZXdv cmsuIFlvdSBtYXkgd2FudCB0byBzZW5kIGEgZGlmZmVyZW50IHBhdGNoIHRoYXQgbm9ybWFsaXpl IHRoZQo+IHRlbXBlcmF0dXJlIHJlcHJlc2VudGF0aW9uIGluIHlvdXIgZHJpdmVyIChsb25nIC0+ IGludCkuCgpPa2F5Cgo+PiAgIAl2b2lkICgqc2V0X3RzaHV0X21vZGUpKGludCBjaG4sIHZvaWQg X19pb21lbSAqcmVnLCBlbnVtIHRzaHV0X21vZGUgbSk7Cj4+ICsKPj4gKwkvKiBQZXItdGFibGUg bWV0aG9kcyAqLwo+PiArCXN0cnVjdCBjaGlwX3RzYWRjX3RhYmxlIHRhYmxlOwo+PiAgIH07Cj4+ ICAgCj4+ICAgc3RydWN0IHJvY2tjaGlwX3RoZXJtYWxfc2Vuc29yIHsKPj4gQEAgLTE3MiwyMSAr MTg3LDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHNhZGNfdGFibGUgdjJfY29kZV90YWJsZVtd ID0gewo+PiAgIAl7MzQyMSwgMTI1MDAwfSwKPj4gICB9Owo+PiAgIAo+PiAtc3RhdGljIHUzMiBy a190c2FkY3YyX3RlbXBfdG9fY29kZShsb25nIHRlbXApCj4+ICtzdGF0aWMgdTMyIHJrX3RzYWRj djJfdGVtcF90b19jb2RlKHN0cnVjdCBjaGlwX3RzYWRjX3RhYmxlIHRhYmxlLAo+PiArCQkJCSAg IGxvbmcgdGVtcCkKPiBTYW1lIGNvbW1lbnQgaGVyZS4KCk9rYXkKPj4gICB7Cj4+ICAgCWludCBo aWdoLCBsb3csIG1pZDsKPj4gICAKPj4gICAJbG93ID0gMDsKPj4gLQloaWdoID0gQVJSQVlfU0la RSh2Ml9jb2RlX3RhYmxlKSAtIDE7Cj4+ICsJaGlnaCA9IHRhYmxlLmxlbmd0aCAtIDE7Cj4+ICAg CW1pZCA9IChoaWdoICsgbG93KSAvIDI7Cj4+ICAgCj4+IC0JaWYgKHRlbXAgPCB2Ml9jb2RlX3Rh YmxlW2xvd10udGVtcCB8fCB0ZW1wID4gdjJfY29kZV90YWJsZVtoaWdoXS50ZW1wKQo+PiArCWlm ICh0ZW1wIDwgdGFibGUuaWRbbG93XS50ZW1wIHx8IHRlbXAgPiB0YWJsZS5pZFtoaWdoXS50ZW1w KQo+PiAgIAkJcmV0dXJuIDA7Cj4+ICAgCj4+ICAgCXdoaWxlIChsb3cgPD0gaGlnaCkgewo+PiAt CQlpZiAodGVtcCA9PSB2Ml9jb2RlX3RhYmxlW21pZF0udGVtcCkKPj4gLQkJCXJldHVybiB2Ml9j b2RlX3RhYmxlW21pZF0uY29kZTsKPj4gLQkJZWxzZSBpZiAodGVtcCA8IHYyX2NvZGVfdGFibGVb bWlkXS50ZW1wKQo+PiArCQlpZiAodGVtcCA9PSB0YWJsZS5pZFttaWRdLnRlbXApCj4+ICsJCQly ZXR1cm4gdGFibGUuaWRbbWlkXS5jb2RlOwo+PiArCQllbHNlIGlmICh0ZW1wIDwgdGFibGUuaWRb bWlkXS50ZW1wKQo+PiAgIAkJCWhpZ2ggPSBtaWQgLSAxOwo+PiAgIAkJZWxzZQo+PiAgIAkJCWxv dyA9IG1pZCArIDE7Cj4+IEBAIC0xOTYsMjUgKzIxMiwyNiBAQCBzdGF0aWMgdTMyIHJrX3RzYWRj djJfdGVtcF90b19jb2RlKGxvbmcgdGVtcCkKPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+ PiAtc3RhdGljIGludCBya190c2FkY3YyX2NvZGVfdG9fdGVtcCh1MzIgY29kZSwgaW50ICp0ZW1w KQo+PiArc3RhdGljIGludCBya190c2FkY3YyX2NvZGVfdG9fdGVtcChzdHJ1Y3QgY2hpcF90c2Fk Y190YWJsZSB0YWJsZSwgdTMyIGNvZGUsCj4+ICsJCQkJICAgaW50ICp0ZW1wKQo+IEhlcmUgeW91 IGFyZSBvayBhbHJlYWR5Lgo+Cj4+ICAgewo+PiAgIAl1bnNpZ25lZCBpbnQgbG93ID0gMTsKPj4g LQl1bnNpZ25lZCBpbnQgaGlnaCA9IEFSUkFZX1NJWkUodjJfY29kZV90YWJsZSkgLSAxOwo+PiAr CXVuc2lnbmVkIGludCBoaWdoID0gdGFibGUubGVuZ3RoIC0gMTsKPj4gICAJdW5zaWduZWQgaW50 IG1pZCA9IChsb3cgKyBoaWdoKSAvIDI7Cj4+ICAgCXVuc2lnbmVkIGludCBudW07Cj4+ICAgCXVu c2lnbmVkIGxvbmcgZGVub207Cj4+ICAgCj4+IC0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUodjJf Y29kZV90YWJsZSkgPCAyKTsKPj4gKwlXQVJOX09OKHRhYmxlLmxlbmd0aCA8IDIpOwo+PiAgIAo+ PiAtCWNvZGUgJj0gVFNBRENWMl9EQVRBX01BU0s7Cj4+IC0JaWYgKGNvZGUgPCB2Ml9jb2RlX3Rh YmxlW2hpZ2hdLmNvZGUpCj4+ICsJY29kZSAmPSB0YWJsZS5kYXRhX21hc2s7Cj4+ICsJaWYgKGNv ZGUgPCB0YWJsZS5pZFtoaWdoXS5jb2RlKQo+PiAgIAkJcmV0dXJuIC1FQUdBSU47CQkvKiBJbmNv cnJlY3QgcmVhZGluZyAqLwo+PiAgIAo+PiAgIAl3aGlsZSAobG93IDw9IGhpZ2gpIHsKPj4gLQkJ aWYgKGNvZGUgPj0gdjJfY29kZV90YWJsZVttaWRdLmNvZGUgJiYKPj4gLQkJICAgIGNvZGUgPCB2 Ml9jb2RlX3RhYmxlW21pZCAtIDFdLmNvZGUpCj4+ICsJCWlmIChjb2RlID49IHRhYmxlLmlkW21p ZF0uY29kZSAmJgo+PiArCQkgICAgY29kZSA8IHRhYmxlLmlkW21pZCAtIDFdLmNvZGUpCj4+ICAg CQkJYnJlYWs7Cj4+IC0JCWVsc2UgaWYgKGNvZGUgPCB2Ml9jb2RlX3RhYmxlW21pZF0uY29kZSkK Pj4gKwkJZWxzZSBpZiAoY29kZSA8IHRhYmxlLmlkW21pZF0uY29kZSkKPj4gICAJCQlsb3cgPSBt aWQgKyAxOwo+PiAgIAkJZWxzZQo+PiAgIAkJCWhpZ2ggPSBtaWQgLSAxOwo+PiBAQCAtMjI3LDEw ICsyNDQsMTAgQEAgc3RhdGljIGludCBya190c2FkY3YyX2NvZGVfdG9fdGVtcCh1MzIgY29kZSwg aW50ICp0ZW1wKQo+PiAgIAkgKiB0ZW1wZXJhdHVyZSBiZXR3ZWVuIDIgdGFibGUgZW50cmllcyBp cyBsaW5lYXIgYW5kIGludGVycG9sYXRlCj4+ICAgCSAqIHRvIHByb2R1Y2UgbGVzcyBncmFudWxh ciByZXN1bHQuCj4+ICAgCSAqLwo+PiAtCW51bSA9IHYyX2NvZGVfdGFibGVbbWlkXS50ZW1wIC0g djJfY29kZV90YWJsZVttaWQgLSAxXS50ZW1wOwo+PiAtCW51bSAqPSB2Ml9jb2RlX3RhYmxlW21p ZCAtIDFdLmNvZGUgLSBjb2RlOwo+PiAtCWRlbm9tID0gdjJfY29kZV90YWJsZVttaWQgLSAxXS5j b2RlIC0gdjJfY29kZV90YWJsZVttaWRdLmNvZGU7Cj4+IC0JKnRlbXAgPSB2Ml9jb2RlX3RhYmxl W21pZCAtIDFdLnRlbXAgKyAobnVtIC8gZGVub20pOwo+PiArCW51bSA9IHRhYmxlLmlkW21pZF0u dGVtcCAtIHYyX2NvZGVfdGFibGVbbWlkIC0gMV0udGVtcDsKPj4gKwludW0gKj0gdGFibGUuaWRb bWlkIC0gMV0uY29kZSAtIGNvZGU7Cj4+ICsJZGVub20gPSB0YWJsZS5pZFttaWQgLSAxXS5jb2Rl IC0gdGFibGUuaWRbbWlkXS5jb2RlOwo+PiArCSp0ZW1wID0gdGFibGUuaWRbbWlkIC0gMV0udGVt cCArIChudW0gLyBkZW5vbSk7Cj4+ICAgCj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4gQEAgLTI5 MCwyMCArMzA3LDIyIEBAIHN0YXRpYyB2b2lkIHJrX3RzYWRjdjJfY29udHJvbCh2b2lkIF9faW9t ZW0gKnJlZ3MsIGJvb2wgZW5hYmxlKQo+PiAgIAl3cml0ZWxfcmVsYXhlZCh2YWwsIHJlZ3MgKyBU U0FEQ1YyX0FVVE9fQ09OKTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgaW50IHJrX3RzYWRjdjJf Z2V0X3RlbXAoaW50IGNobiwgdm9pZCBfX2lvbWVtICpyZWdzLCBpbnQgKnRlbXApCj4+ICtzdGF0 aWMgaW50IHJrX3RzYWRjdjJfZ2V0X3RlbXAoc3RydWN0IGNoaXBfdHNhZGNfdGFibGUgdGFibGUs Cj4+ICsJCQkgICAgICAgaW50IGNobiwgdm9pZCBfX2lvbWVtICpyZWdzLCBpbnQgKnRlbXApCj4+ ICAgewo+PiAgIAl1MzIgdmFsOwo+PiAgIAo+PiAgIAl2YWwgPSByZWFkbF9yZWxheGVkKHJlZ3Mg KyBUU0FEQ1YyX0RBVEEoY2huKSk7Cj4+ICAgCj4+IC0JcmV0dXJuIHJrX3RzYWRjdjJfY29kZV90 b190ZW1wKHZhbCwgdGVtcCk7Cj4+ICsJcmV0dXJuIHJrX3RzYWRjdjJfY29kZV90b190ZW1wKHRh YmxlLCB2YWwsIHRlbXApOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyB2b2lkIHJrX3RzYWRjdjJf dHNodXRfdGVtcChpbnQgY2huLCB2b2lkIF9faW9tZW0gKnJlZ3MsIGxvbmcgdGVtcCkKPj4gK3N0 YXRpYyB2b2lkIHJrX3RzYWRjdjJfdHNodXRfdGVtcChzdHJ1Y3QgY2hpcF90c2FkY190YWJsZSB0 YWJsZSwKPj4gKwkJCQkgIGludCBjaG4sIHZvaWQgX19pb21lbSAqcmVncywgbG9uZyB0ZW1wKQo+ IEhlcmUgbmVlZHMgZml4aW5nLgoKT2theS4KCj4KPiBCUiwKPgo+IEVkdWFyZG8gVmFsZW50aW4K Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTGlu dXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0Cj4gTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFk Lm9yZwo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt cm9ja2NoaXAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LXJvY2tjaGlwCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: caesar.upstream@gmail.com (Caesar Wang) Date: Sat, 07 Nov 2015 22:41:58 +0800 Subject: [PATCH v2 4/9] thermal: rockchip: improve the conversion function In-Reply-To: <20151106190006.GB8202@localhost.localdomain> References: <1446700685-18017-1-git-send-email-wxt@rock-chips.com> <1446700685-18017-5-git-send-email-wxt@rock-chips.com> <20151106190006.GB8202@localhost.localdomain> Message-ID: <563E0DB6.3010704@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hello Eduardo, ? 2015?11?07? 03:00, Eduardo Valentin ??: > Hello Caesar, > > On Thu, Nov 05, 2015 at 01:18:00PM +0800, Caesar Wang wrote: >> We should make the conversion table in as a parameter since the different >> SoCs have the different conversionion table. >> >> Signed-off-by: Caesar Wang >> --- >> >> Changes in v2: >> - make the conversion table in as a parameter both code_to_temp >> and temp_to_code function. > > Now it looks cleaner. Thanks. > > The comments below are probably not directly on this change. You may > want to add a different patch that takes care of the suggestions that > follows. Okay, I will send a another patch to fix it. Thanks your reviewing this patch. >> Series-changes: 1 >> - As Dmitry comment, make the conversion table in as a parameter. >> >> Changes in v1: None >> >> drivers/thermal/rockchip_thermal.c | 82 +++++++++++++++++++++++++------------- >> 1 file changed, 55 insertions(+), 27 deletions(-) >> >> diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c >> index bdf7063..e828f18 100644 >> --- a/drivers/thermal/rockchip_thermal.c >> +++ b/drivers/thermal/rockchip_thermal.c >> @@ -58,6 +58,16 @@ enum sensor_id { >> */ >> #define SOC_MAX_SENSORS 2 >> >> +struct chip_tsadc_table { >> + const struct tsadc_table *id; >> + >> + /* the array table size*/ >> + unsigned int length; >> + >> + /* that analogic mask data */ >> + unsigned long data_mask; > Are you sure this need to be long? Seem.....we should mark the 'unsigned int or u32'. >> +}; >> + >> struct rockchip_tsadc_chip { >> /* The sensor id of chip correspond to the ADC channel */ >> int chn_id[SOC_MAX_SENSORS]; >> @@ -74,9 +84,14 @@ struct rockchip_tsadc_chip { >> void (*control)(void __iomem *reg, bool on); >> >> /* Per-sensor methods */ >> - int (*get_temp)(int chn, void __iomem *reg, int *temp); >> - void (*set_tshut_temp)(int chn, void __iomem *reg, long temp); >> + int (*get_temp)(struct chip_tsadc_table table, >> + int chn, void __iomem *reg, int *temp); >> + void (*set_tshut_temp)(struct chip_tsadc_table table, >> + int chn, void __iomem *reg, long temp); > Temperature is currently represented as int not long in the thermal > framework. You may want to send a different patch that normalize the > temperature representation in your driver (long -> int). Okay >> void (*set_tshut_mode)(int chn, void __iomem *reg, enum tshut_mode m); >> + >> + /* Per-table methods */ >> + struct chip_tsadc_table table; >> }; >> >> struct rockchip_thermal_sensor { >> @@ -172,21 +187,22 @@ static const struct tsadc_table v2_code_table[] = { >> {3421, 125000}, >> }; >> >> -static u32 rk_tsadcv2_temp_to_code(long temp) >> +static u32 rk_tsadcv2_temp_to_code(struct chip_tsadc_table table, >> + long temp) > Same comment here. Okay >> { >> int high, low, mid; >> >> low = 0; >> - high = ARRAY_SIZE(v2_code_table) - 1; >> + high = table.length - 1; >> mid = (high + low) / 2; >> >> - if (temp < v2_code_table[low].temp || temp > v2_code_table[high].temp) >> + if (temp < table.id[low].temp || temp > table.id[high].temp) >> return 0; >> >> while (low <= high) { >> - if (temp == v2_code_table[mid].temp) >> - return v2_code_table[mid].code; >> - else if (temp < v2_code_table[mid].temp) >> + if (temp == table.id[mid].temp) >> + return table.id[mid].code; >> + else if (temp < table.id[mid].temp) >> high = mid - 1; >> else >> low = mid + 1; >> @@ -196,25 +212,26 @@ static u32 rk_tsadcv2_temp_to_code(long temp) >> return 0; >> } >> >> -static int rk_tsadcv2_code_to_temp(u32 code, int *temp) >> +static int rk_tsadcv2_code_to_temp(struct chip_tsadc_table table, u32 code, >> + int *temp) > Here you are ok already. > >> { >> unsigned int low = 1; >> - unsigned int high = ARRAY_SIZE(v2_code_table) - 1; >> + unsigned int high = table.length - 1; >> unsigned int mid = (low + high) / 2; >> unsigned int num; >> unsigned long denom; >> >> - BUILD_BUG_ON(ARRAY_SIZE(v2_code_table) < 2); >> + WARN_ON(table.length < 2); >> >> - code &= TSADCV2_DATA_MASK; >> - if (code < v2_code_table[high].code) >> + code &= table.data_mask; >> + if (code < table.id[high].code) >> return -EAGAIN; /* Incorrect reading */ >> >> while (low <= high) { >> - if (code >= v2_code_table[mid].code && >> - code < v2_code_table[mid - 1].code) >> + if (code >= table.id[mid].code && >> + code < table.id[mid - 1].code) >> break; >> - else if (code < v2_code_table[mid].code) >> + else if (code < table.id[mid].code) >> low = mid + 1; >> else >> high = mid - 1; >> @@ -227,10 +244,10 @@ static int rk_tsadcv2_code_to_temp(u32 code, int *temp) >> * temperature between 2 table entries is linear and interpolate >> * to produce less granular result. >> */ >> - num = v2_code_table[mid].temp - v2_code_table[mid - 1].temp; >> - num *= v2_code_table[mid - 1].code - code; >> - denom = v2_code_table[mid - 1].code - v2_code_table[mid].code; >> - *temp = v2_code_table[mid - 1].temp + (num / denom); >> + num = table.id[mid].temp - v2_code_table[mid - 1].temp; >> + num *= table.id[mid - 1].code - code; >> + denom = table.id[mid - 1].code - table.id[mid].code; >> + *temp = table.id[mid - 1].temp + (num / denom); >> >> return 0; >> } >> @@ -290,20 +307,22 @@ static void rk_tsadcv2_control(void __iomem *regs, bool enable) >> writel_relaxed(val, regs + TSADCV2_AUTO_CON); >> } >> >> -static int rk_tsadcv2_get_temp(int chn, void __iomem *regs, int *temp) >> +static int rk_tsadcv2_get_temp(struct chip_tsadc_table table, >> + int chn, void __iomem *regs, int *temp) >> { >> u32 val; >> >> val = readl_relaxed(regs + TSADCV2_DATA(chn)); >> >> - return rk_tsadcv2_code_to_temp(val, temp); >> + return rk_tsadcv2_code_to_temp(table, val, temp); >> } >> >> -static void rk_tsadcv2_tshut_temp(int chn, void __iomem *regs, long temp) >> +static void rk_tsadcv2_tshut_temp(struct chip_tsadc_table table, >> + int chn, void __iomem *regs, long temp) > Here needs fixing. Okay. > > BR, > > Eduardo Valentin > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753571AbbKGOmM (ORCPT ); Sat, 7 Nov 2015 09:42:12 -0500 Received: from mail-pa0-f45.google.com ([209.85.220.45]:34579 "EHLO mail-pa0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753385AbbKGOmI (ORCPT ); Sat, 7 Nov 2015 09:42:08 -0500 Message-ID: <563E0DB6.3010704@gmail.com> Date: Sat, 07 Nov 2015 22:41:58 +0800 From: Caesar Wang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Eduardo Valentin CC: Caesar Wang , Heiko Stuebner , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Zhang Rui , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v2 4/9] thermal: rockchip: improve the conversion function References: <1446700685-18017-1-git-send-email-wxt@rock-chips.com> <1446700685-18017-5-git-send-email-wxt@rock-chips.com> <20151106190006.GB8202@localhost.localdomain> In-Reply-To: <20151106190006.GB8202@localhost.localdomain> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Eduardo, 在 2015年11月07日 03:00, Eduardo Valentin 写道: > Hello Caesar, > > On Thu, Nov 05, 2015 at 01:18:00PM +0800, Caesar Wang wrote: >> We should make the conversion table in as a parameter since the different >> SoCs have the different conversionion table. >> >> Signed-off-by: Caesar Wang >> --- >> >> Changes in v2: >> - make the conversion table in as a parameter both code_to_temp >> and temp_to_code function. > > Now it looks cleaner. Thanks. > > The comments below are probably not directly on this change. You may > want to add a different patch that takes care of the suggestions that > follows. Okay, I will send a another patch to fix it. Thanks your reviewing this patch. >> Series-changes: 1 >> - As Dmitry comment, make the conversion table in as a parameter. >> >> Changes in v1: None >> >> drivers/thermal/rockchip_thermal.c | 82 +++++++++++++++++++++++++------------- >> 1 file changed, 55 insertions(+), 27 deletions(-) >> >> diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c >> index bdf7063..e828f18 100644 >> --- a/drivers/thermal/rockchip_thermal.c >> +++ b/drivers/thermal/rockchip_thermal.c >> @@ -58,6 +58,16 @@ enum sensor_id { >> */ >> #define SOC_MAX_SENSORS 2 >> >> +struct chip_tsadc_table { >> + const struct tsadc_table *id; >> + >> + /* the array table size*/ >> + unsigned int length; >> + >> + /* that analogic mask data */ >> + unsigned long data_mask; > Are you sure this need to be long? Seem.....we should mark the 'unsigned int or u32'. >> +}; >> + >> struct rockchip_tsadc_chip { >> /* The sensor id of chip correspond to the ADC channel */ >> int chn_id[SOC_MAX_SENSORS]; >> @@ -74,9 +84,14 @@ struct rockchip_tsadc_chip { >> void (*control)(void __iomem *reg, bool on); >> >> /* Per-sensor methods */ >> - int (*get_temp)(int chn, void __iomem *reg, int *temp); >> - void (*set_tshut_temp)(int chn, void __iomem *reg, long temp); >> + int (*get_temp)(struct chip_tsadc_table table, >> + int chn, void __iomem *reg, int *temp); >> + void (*set_tshut_temp)(struct chip_tsadc_table table, >> + int chn, void __iomem *reg, long temp); > Temperature is currently represented as int not long in the thermal > framework. You may want to send a different patch that normalize the > temperature representation in your driver (long -> int). Okay >> void (*set_tshut_mode)(int chn, void __iomem *reg, enum tshut_mode m); >> + >> + /* Per-table methods */ >> + struct chip_tsadc_table table; >> }; >> >> struct rockchip_thermal_sensor { >> @@ -172,21 +187,22 @@ static const struct tsadc_table v2_code_table[] = { >> {3421, 125000}, >> }; >> >> -static u32 rk_tsadcv2_temp_to_code(long temp) >> +static u32 rk_tsadcv2_temp_to_code(struct chip_tsadc_table table, >> + long temp) > Same comment here. Okay >> { >> int high, low, mid; >> >> low = 0; >> - high = ARRAY_SIZE(v2_code_table) - 1; >> + high = table.length - 1; >> mid = (high + low) / 2; >> >> - if (temp < v2_code_table[low].temp || temp > v2_code_table[high].temp) >> + if (temp < table.id[low].temp || temp > table.id[high].temp) >> return 0; >> >> while (low <= high) { >> - if (temp == v2_code_table[mid].temp) >> - return v2_code_table[mid].code; >> - else if (temp < v2_code_table[mid].temp) >> + if (temp == table.id[mid].temp) >> + return table.id[mid].code; >> + else if (temp < table.id[mid].temp) >> high = mid - 1; >> else >> low = mid + 1; >> @@ -196,25 +212,26 @@ static u32 rk_tsadcv2_temp_to_code(long temp) >> return 0; >> } >> >> -static int rk_tsadcv2_code_to_temp(u32 code, int *temp) >> +static int rk_tsadcv2_code_to_temp(struct chip_tsadc_table table, u32 code, >> + int *temp) > Here you are ok already. > >> { >> unsigned int low = 1; >> - unsigned int high = ARRAY_SIZE(v2_code_table) - 1; >> + unsigned int high = table.length - 1; >> unsigned int mid = (low + high) / 2; >> unsigned int num; >> unsigned long denom; >> >> - BUILD_BUG_ON(ARRAY_SIZE(v2_code_table) < 2); >> + WARN_ON(table.length < 2); >> >> - code &= TSADCV2_DATA_MASK; >> - if (code < v2_code_table[high].code) >> + code &= table.data_mask; >> + if (code < table.id[high].code) >> return -EAGAIN; /* Incorrect reading */ >> >> while (low <= high) { >> - if (code >= v2_code_table[mid].code && >> - code < v2_code_table[mid - 1].code) >> + if (code >= table.id[mid].code && >> + code < table.id[mid - 1].code) >> break; >> - else if (code < v2_code_table[mid].code) >> + else if (code < table.id[mid].code) >> low = mid + 1; >> else >> high = mid - 1; >> @@ -227,10 +244,10 @@ static int rk_tsadcv2_code_to_temp(u32 code, int *temp) >> * temperature between 2 table entries is linear and interpolate >> * to produce less granular result. >> */ >> - num = v2_code_table[mid].temp - v2_code_table[mid - 1].temp; >> - num *= v2_code_table[mid - 1].code - code; >> - denom = v2_code_table[mid - 1].code - v2_code_table[mid].code; >> - *temp = v2_code_table[mid - 1].temp + (num / denom); >> + num = table.id[mid].temp - v2_code_table[mid - 1].temp; >> + num *= table.id[mid - 1].code - code; >> + denom = table.id[mid - 1].code - table.id[mid].code; >> + *temp = table.id[mid - 1].temp + (num / denom); >> >> return 0; >> } >> @@ -290,20 +307,22 @@ static void rk_tsadcv2_control(void __iomem *regs, bool enable) >> writel_relaxed(val, regs + TSADCV2_AUTO_CON); >> } >> >> -static int rk_tsadcv2_get_temp(int chn, void __iomem *regs, int *temp) >> +static int rk_tsadcv2_get_temp(struct chip_tsadc_table table, >> + int chn, void __iomem *regs, int *temp) >> { >> u32 val; >> >> val = readl_relaxed(regs + TSADCV2_DATA(chn)); >> >> - return rk_tsadcv2_code_to_temp(val, temp); >> + return rk_tsadcv2_code_to_temp(table, val, temp); >> } >> >> -static void rk_tsadcv2_tshut_temp(int chn, void __iomem *regs, long temp) >> +static void rk_tsadcv2_tshut_temp(struct chip_tsadc_table table, >> + int chn, void __iomem *regs, long temp) > Here needs fixing. Okay. > > BR, > > Eduardo Valentin > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip