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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_GIT 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 85629C2D0C2 for ; Tue, 31 Dec 2019 13:42:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4DC0E206E4 for ; Tue, 31 Dec 2019 13:42:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="A82eM1Cn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727130AbfLaNmE (ORCPT ); Tue, 31 Dec 2019 08:42:04 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:3222 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726060AbfLaNmE (ORCPT ); Tue, 31 Dec 2019 08:42:04 -0500 X-UUID: 899694e97fd14460a93cd45b9705dc64-20191231 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=x++Akfe5JkRpAPh9IOfWBiqdOpZR4O4wmNvzoxS/MP0=; b=A82eM1CnU2B9PRysa/XMc7FtaaNwH6ir6Q3V8+/2AWvzYzz7zZ39eDhT7TvJBpUBQT2lhcWM86mL/VsflugwL3BDKf4Wkb6EZgRIXFefjmuikZCSW5CGHltISb3OCPwTNDL6VK1yEdEdWxIy0c7kIjweQQc78MfsY3A94pd2PVo=; X-UUID: 899694e97fd14460a93cd45b9705dc64-20191231 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 401010651; Tue, 31 Dec 2019 21:41:56 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 31 Dec 2019 21:41:04 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 31 Dec 2019 21:41:16 +0800 From: Light Hsieh To: CC: , , , , , Light Hsieh Subject: [PATCH v7 1/6] Check gpio pin number and use binary search in mtk_hw_pin_field_lookup() Date: Tue, 31 Dec 2019 21:41:42 +0800 Message-ID: <1577799707-11855-1-git-send-email-light.hsieh@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: 5207F01DB3CE30980E9CA3D8E90B387874F153407A88F81A4AAE3662A242D8AA2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org MS4gQ2hlY2sgaWYgZ3BpbyBwaW4gbnVtYmVyIGlzIGluIHZhbGlkIHJhbmdlIHRvIHByZXZlbnQg ZnJvbSBnZXQgaW52YWxpZA0KICAgcG9pbnRlciAnZGVzYycgaW4gdGhlIGZvbGxvd2luZyBjb2Rl Og0KCWRlc2MgPSAoY29uc3Qgc3RydWN0IG10a19waW5fZGVzYyAqKSZody0+c29jLT5waW5zW2dw aW9dOw0KDQoyLiBJbXByb3ZlICBtdGtfaHdfcGluX2ZpZWxkX2xvb2t1cCgpDQoyLjEgTW9kaWZ5 IG10a19od19waW5fZmllbGRfbG9va3VwKCkgdG8gdXNlIGJpbmFyeSBzZWFyY2ggZm9yIGFjY2Vs ZXJhdGluZw0KICAgICBzZWFyY2guDQoyLjIgQ29ycmVjdCBtZXNzYWdlIGFmdGVyIHRoZSBmb2xs b3dpbmcgY2hlY2sgZmFpbDoNCiAgICBpZiAoaHctPnNvYy0+cmVnX2NhbCAmJiBody0+c29jLT5y ZWdfY2FsW2ZpZWxkXS5yYW5nZSkgew0KCQlyYyA9ICZody0+c29jLT5yZWdfY2FsW2ZpZWxkXTsN CiAgICBUaGUgb3JpZ2luYWwgbWVzc2FnZSBpczoNCiAgICAJIk5vdCBzdXBwb3J0IGZpZWxkICVk IGZvciBwaW4gJWQgKCVzKVxuIg0KICAgIEhvd2V2ZXIsIHRoZSBjaGVjayBpcyBvbiBzb2MgY2hp cCBsZXZlbCwgbm90IG9uIHBpbiBsZXZlbCB5ZXQuDQogICAgU28gdGhlIG1lc3NhZ2UgaXMgY29y cmVjdGVkIGFzOg0KICAgIAkiTm90IHN1cHBvcnQgZmllbGQgJWQgZm9yIHRoaXMgc29jXG4iDQoN CkNoYW5nZS1JZDogSTQ5OGExOGRmNzNlNmE2OTNlMGUzNTYzNWQ1YjkyYjhkYzljMDYzYWMNCi0t LQ0KIGRyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJsLW10ay1jb21tb24tdjIuYyB8IDI3 ICsrKysrKysrKysrKysrKysrKy0tLS0tLQ0KIGRyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5j dHJsLXBhcmlzLmMgICAgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysNCiAyIGZpbGVz IGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQg YS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmMgYi9kcml2 ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmMNCmluZGV4IDIwZTFj ODkuLmQ2M2UwNWUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3Ry bC1tdGstY29tbW9uLXYyLmMNCisrKyBiL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJs LW10ay1jb21tb24tdjIuYw0KQEAgLTY4LDMyICs2OCw0NCBAQCBzdGF0aWMgaW50IG10a19od19w aW5fZmllbGRfbG9va3VwKHN0cnVjdCBtdGtfcGluY3RybCAqaHcsDQogew0KIAljb25zdCBzdHJ1 Y3QgbXRrX3Bpbl9maWVsZF9jYWxjICpjLCAqZTsNCiAJY29uc3Qgc3RydWN0IG10a19waW5fcmVn X2NhbGMgKnJjOw0KKwlpbnQgc3RhcnQgPSAwLCBlbmQsIGNoZWNrOw0KKwlib29sIGZvdW5kID0g ZmFsc2U7DQogCXUzMiBiaXRzOw0KIA0KIAlpZiAoaHctPnNvYy0+cmVnX2NhbCAmJiBody0+c29j LT5yZWdfY2FsW2ZpZWxkXS5yYW5nZSkgew0KIAkJcmMgPSAmaHctPnNvYy0+cmVnX2NhbFtmaWVs ZF07DQogCX0gZWxzZSB7DQogCQlkZXZfZGJnKGh3LT5kZXYsDQotCQkJIk5vdCBzdXBwb3J0IGZp ZWxkICVkIGZvciBwaW4gJWQgKCVzKVxuIiwNCi0JCQlmaWVsZCwgZGVzYy0+bnVtYmVyLCBkZXNj LT5uYW1lKTsNCisJCQkiTm90IHN1cHBvcnQgZmllbGQgJWQgZm9yIHRoaXMgc29jXG4iLCBmaWVs ZCk7DQogCQlyZXR1cm4gLUVOT1RTVVBQOw0KIAl9DQogDQorCWVuZCA9IHJjLT5ucmFuZ2VzIC0g MTsNCiAJYyA9IHJjLT5yYW5nZTsNCiAJZSA9IGMgKyByYy0+bnJhbmdlczsNCiANCi0Jd2hpbGUg KGMgPCBlKSB7DQotCQlpZiAoZGVzYy0+bnVtYmVyID49IGMtPnNfcGluICYmIGRlc2MtPm51bWJl ciA8PSBjLT5lX3BpbikNCisJd2hpbGUgKHN0YXJ0IDw9IGVuZCkgew0KKwkJY2hlY2sgPSAoc3Rh cnQgKyBlbmQpID4+IDE7DQorCQlpZiAoZGVzYy0+bnVtYmVyID49IHJjLT5yYW5nZVtjaGVja10u c19waW4NCisJCSAmJiBkZXNjLT5udW1iZXIgPD0gcmMtPnJhbmdlW2NoZWNrXS5lX3Bpbikgew0K KwkJCWZvdW5kID0gdHJ1ZTsNCisJCQlicmVhazsNCisJCX0gZWxzZSBpZiAoc3RhcnQgPT0gZW5k KQ0KIAkJCWJyZWFrOw0KLQkJYysrOw0KKwkJZWxzZSBpZiAoZGVzYy0+bnVtYmVyIDwgcmMtPnJh bmdlW2NoZWNrXS5zX3BpbikNCisJCQllbmQgPSBjaGVjayAtIDE7DQorCQllbHNlDQorCQkJc3Rh cnQgPSBjaGVjayArIDE7DQogCX0NCiANCi0JaWYgKGMgPj0gZSkgew0KKwlpZiAoIWZvdW5kKSB7 DQogCQlkZXZfZGJnKGh3LT5kZXYsICJOb3Qgc3VwcG9ydCBmaWVsZCAlZCBmb3IgcGluID0gJWQg KCVzKVxuIiwNCiAJCQlmaWVsZCwgZGVzYy0+bnVtYmVyLCBkZXNjLT5uYW1lKTsNCiAJCXJldHVy biAtRU5PVFNVUFA7DQogCX0NCiANCisJYyA9IHJjLT5yYW5nZSArIGNoZWNrOw0KKw0KIAlpZiAo Yy0+aV9iYXNlID4gaHctPm5iYXNlIC0gMSkgew0KIAkJZGV2X2Vycihody0+ZGV2LA0KIAkJCSJJ bnZhbGlkIGJhc2UgZm9yIGZpZWxkICVkIGZvciBwaW4gPSAlZCAoJXMpXG4iLA0KQEAgLTE4Miw2 ICsxOTQsOSBAQCBpbnQgbXRrX2h3X3NldF92YWx1ZShzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LCBj b25zdCBzdHJ1Y3QgbXRrX3Bpbl9kZXNjICpkZXNjLA0KIAlpZiAoZXJyKQ0KIAkJcmV0dXJuIGVy cjsNCiANCisJaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IHBmLm1hc2spDQorCQlyZXR1cm4gLUVJ TlZBTDsNCisNCiAJaWYgKCFwZi5uZXh0KQ0KIAkJbXRrX3JtdyhodywgcGYuaW5kZXgsIHBmLm9m ZnNldCwgcGYubWFzayA8PCBwZi5iaXRwb3MsDQogCQkJKHZhbHVlICYgcGYubWFzaykgPDwgcGYu Yml0cG9zKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1w YXJpcy5jIGIvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtcGFyaXMuYw0KaW5kZXgg OTIzMjY0ZC4uM2UxM2FlNyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9w aW5jdHJsLXBhcmlzLmMNCisrKyBiL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJsLXBh cmlzLmMNCkBAIC04MSw2ICs4MSw4IEBAIHN0YXRpYyBpbnQgbXRrX3BpbmNvbmZfZ2V0KHN0cnVj dCBwaW5jdHJsX2RldiAqcGN0bGRldiwNCiAJaW50IHZhbCwgdmFsMiwgZXJyLCByZWcsIHJldCA9 IDE7DQogCWNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRlc2M7DQogDQorCWlmIChwaW4gPj0g aHctPnNvYy0+bnBpbnMpDQorCQlyZXR1cm4gLUVJTlZBTDsNCiAJZGVzYyA9IChjb25zdCBzdHJ1 Y3QgbXRrX3Bpbl9kZXNjICopJmh3LT5zb2MtPnBpbnNbcGluXTsNCiANCiAJc3dpdGNoIChwYXJh bSkgew0KQEAgLTIwNiw2ICsyMDgsMTAgQEAgc3RhdGljIGludCBtdGtfcGluY29uZl9zZXQoc3Ry dWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LCB1bnNpZ25lZCBpbnQgcGluLA0KIAlpbnQgZXJyID0g MDsNCiAJdTMyIHJlZzsNCiANCisJaWYgKHBpbiA+PSBody0+c29jLT5ucGlucykgew0KKwkJZXJy ID0gLUVJTlZBTDsNCisJCWdvdG8gZXJyOw0KKwl9DQogCWRlc2MgPSAoY29uc3Qgc3RydWN0IG10 a19waW5fZGVzYyAqKSZody0+c29jLT5waW5zW3Bpbl07DQogDQogCXN3aXRjaCAoKHUzMilwYXJh bSkgew0KQEAgLTY5Myw2ICs2OTksOSBAQCBzdGF0aWMgaW50IG10a19ncGlvX2dldF9kaXJlY3Rp b24oc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgaW50IGdwaW8pDQogCWNvbnN0IHN0 cnVjdCBtdGtfcGluX2Rlc2MgKmRlc2M7DQogCWludCB2YWx1ZSwgZXJyOw0KIA0KKwlpZiAoZ3Bp byA+IGh3LT5zb2MtPm5waW5zKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQogCWRlc2MgPSAoY29u c3Qgc3RydWN0IG10a19waW5fZGVzYyAqKSZody0+c29jLT5waW5zW2dwaW9dOw0KIA0KIAllcnIg PSBtdGtfaHdfZ2V0X3ZhbHVlKGh3LCBkZXNjLCBQSU5DVFJMX1BJTl9SRUdfRElSLCAmdmFsdWUp Ow0KQEAgLTcwOCw2ICs3MTcsOSBAQCBzdGF0aWMgaW50IG10a19ncGlvX2dldChzdHJ1Y3QgZ3Bp b19jaGlwICpjaGlwLCB1bnNpZ25lZCBpbnQgZ3BpbykNCiAJY29uc3Qgc3RydWN0IG10a19waW5f ZGVzYyAqZGVzYzsNCiAJaW50IHZhbHVlLCBlcnI7DQogDQorCWlmIChncGlvID4gaHctPnNvYy0+ bnBpbnMpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCiAJZGVzYyA9IChjb25zdCBzdHJ1Y3QgbXRr X3Bpbl9kZXNjICopJmh3LT5zb2MtPnBpbnNbZ3Bpb107DQogDQogCWVyciA9IG10a19od19nZXRf dmFsdWUoaHcsIGRlc2MsIFBJTkNUUkxfUElOX1JFR19ESSwgJnZhbHVlKTsNCkBAIC03MjIsNiAr NzM0LDkgQEAgc3RhdGljIHZvaWQgbXRrX2dwaW9fc2V0KHN0cnVjdCBncGlvX2NoaXAgKmNoaXAs IHVuc2lnbmVkIGludCBncGlvLCBpbnQgdmFsdWUpDQogCXN0cnVjdCBtdGtfcGluY3RybCAqaHcg PSBncGlvY2hpcF9nZXRfZGF0YShjaGlwKTsNCiAJY29uc3Qgc3RydWN0IG10a19waW5fZGVzYyAq ZGVzYzsNCiANCisJaWYgKGdwaW8gPiBody0+c29jLT5ucGlucykNCisJCXJldHVybjsNCisNCiAJ ZGVzYyA9IChjb25zdCBzdHJ1Y3QgbXRrX3Bpbl9kZXNjICopJmh3LT5zb2MtPnBpbnNbZ3Bpb107 DQogDQogCW10a19od19zZXRfdmFsdWUoaHcsIGRlc2MsIFBJTkNUUkxfUElOX1JFR19ETywgISF2 YWx1ZSk7DQpAQCAtNzI5LDEyICs3NDQsMjIgQEAgc3RhdGljIHZvaWQgbXRrX2dwaW9fc2V0KHN0 cnVjdCBncGlvX2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCBncGlvLCBpbnQgdmFsdWUpDQogDQog c3RhdGljIGludCBtdGtfZ3Bpb19kaXJlY3Rpb25faW5wdXQoc3RydWN0IGdwaW9fY2hpcCAqY2hp cCwgdW5zaWduZWQgaW50IGdwaW8pDQogew0KKwlzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3ID0gZ3Bp b2NoaXBfZ2V0X2RhdGEoY2hpcCk7DQorDQorCWlmIChncGlvID4gaHctPnNvYy0+bnBpbnMpDQor CQlyZXR1cm4gLUVJTlZBTDsNCisNCiAJcmV0dXJuIHBpbmN0cmxfZ3Bpb19kaXJlY3Rpb25faW5w dXQoY2hpcC0+YmFzZSArIGdwaW8pOw0KIH0NCiANCiBzdGF0aWMgaW50IG10a19ncGlvX2RpcmVj dGlvbl9vdXRwdXQoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgaW50IGdwaW8sDQog CQkJCSAgICAgaW50IHZhbHVlKQ0KIHsNCisJc3RydWN0IG10a19waW5jdHJsICpodyA9IGdwaW9j aGlwX2dldF9kYXRhKGNoaXApOw0KKw0KKwlpZiAoZ3BpbyA+IGh3LT5zb2MtPm5waW5zKQ0KKwkJ cmV0dXJuIC1FSU5WQUw7DQorDQogCW10a19ncGlvX3NldChjaGlwLCBncGlvLCB2YWx1ZSk7DQog DQogCXJldHVybiBwaW5jdHJsX2dwaW9fZGlyZWN0aW9uX291dHB1dChjaGlwLT5iYXNlICsgZ3Bp byk7DQotLSANCjEuOC4xLjEuZGlydHkNCg== 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=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_GIT 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 91364C2D0C2 for ; Tue, 31 Dec 2019 13:42:28 +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 6857F206E4 for ; Tue, 31 Dec 2019 13:42:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="WaTQXX/D"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="A82eM1Cn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6857F206E4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=WLf8xQ5BaczB6mHtbbi6SgGYVl7/KyJlW0s3qAsyTzk=; b=WaTQXX/DLV3co+ Thp+deRDSgR7RJyQyLI2FeoJ+ojgtWZdBz0SXCSImjkGd0hUBlOKBxe1uyP9U2sHE6QdGw1BxSRdg c5OhNKoQ2BczRM/Qdeq1Fm9DEdm7MMiubanwI4Cz6O3bZsJA9b84iILbqZrstVgtXXP9UYbVxqrmU GqRRnFXfdfnSCFB4l7wu0e0k+MykVSN4aZOPoN6Gq9R6YaQfplVGr79yjBWGhZkt1nJw7DbSUzJ+q lp8Zh+1czxZ6kptX+P5S4c3SkJwvpwT5emKW8y7vSIKP001xBWfZWsoC3jh9RFCkqlcItKB0CS9I7 kPpdARRuq16HdrupM/dA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1imHmp-00032G-SD; Tue, 31 Dec 2019 13:42:15 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1imHmm-0002yZ-D6 for linux-mediatek@lists.infradead.org; Tue, 31 Dec 2019 13:42:14 +0000 X-UUID: a9950117d11e420b960839620b6da25e-20191231 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=x++Akfe5JkRpAPh9IOfWBiqdOpZR4O4wmNvzoxS/MP0=; b=A82eM1CnU2B9PRysa/XMc7FtaaNwH6ir6Q3V8+/2AWvzYzz7zZ39eDhT7TvJBpUBQT2lhcWM86mL/VsflugwL3BDKf4Wkb6EZgRIXFefjmuikZCSW5CGHltISb3OCPwTNDL6VK1yEdEdWxIy0c7kIjweQQc78MfsY3A94pd2PVo=; X-UUID: a9950117d11e420b960839620b6da25e-20191231 Received: from mtkcas68.mediatek.inc [(172.29.94.19)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 777103489; Tue, 31 Dec 2019 05:42:04 -0800 Received: from MTKMBS02N2.mediatek.inc (172.21.101.101) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 31 Dec 2019 05:42:20 -0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 31 Dec 2019 21:41:04 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 31 Dec 2019 21:41:16 +0800 From: Light Hsieh To: Subject: [PATCH v7 1/6] Check gpio pin number and use binary search in mtk_hw_pin_field_lookup() Date: Tue, 31 Dec 2019 21:41:42 +0800 Message-ID: <1577799707-11855-1-git-send-email-light.hsieh@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty MIME-Version: 1.0 X-TM-SNTS-SMTP: 5207F01DB3CE30980E9CA3D8E90B387874F153407A88F81A4AAE3662A242D8AA2000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191231_054212_453639_7067ECC5 X-CRM114-Status: GOOD ( 12.33 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: sean.wang@kernel.org, kuohong.wang@mediatek.com, linux-kernel@vger.kernel.org, Light Hsieh , linux-gpio@vger.kernel.org, linux-mediatek@lists.infradead.org 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 1. Check if gpio pin number is in valid range to prevent from get invalid pointer 'desc' in the following code: desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio]; 2. Improve mtk_hw_pin_field_lookup() 2.1 Modify mtk_hw_pin_field_lookup() to use binary search for accelerating search. 2.2 Correct message after the following check fail: if (hw->soc->reg_cal && hw->soc->reg_cal[field].range) { rc = &hw->soc->reg_cal[field]; The original message is: "Not support field %d for pin %d (%s)\n" However, the check is on soc chip level, not on pin level yet. So the message is corrected as: "Not support field %d for this soc\n" Change-Id: I498a18df73e6a693e0e35635d5b92b8dc9c063ac --- drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c | 27 ++++++++++++++++++------ drivers/pinctrl/mediatek/pinctrl-paris.c | 25 ++++++++++++++++++++++ 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c index 20e1c89..d63e05e 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c @@ -68,32 +68,44 @@ static int mtk_hw_pin_field_lookup(struct mtk_pinctrl *hw, { const struct mtk_pin_field_calc *c, *e; const struct mtk_pin_reg_calc *rc; + int start = 0, end, check; + bool found = false; u32 bits; if (hw->soc->reg_cal && hw->soc->reg_cal[field].range) { rc = &hw->soc->reg_cal[field]; } else { dev_dbg(hw->dev, - "Not support field %d for pin %d (%s)\n", - field, desc->number, desc->name); + "Not support field %d for this soc\n", field); return -ENOTSUPP; } + end = rc->nranges - 1; c = rc->range; e = c + rc->nranges; - while (c < e) { - if (desc->number >= c->s_pin && desc->number <= c->e_pin) + while (start <= end) { + check = (start + end) >> 1; + if (desc->number >= rc->range[check].s_pin + && desc->number <= rc->range[check].e_pin) { + found = true; + break; + } else if (start == end) break; - c++; + else if (desc->number < rc->range[check].s_pin) + end = check - 1; + else + start = check + 1; } - if (c >= e) { + if (!found) { dev_dbg(hw->dev, "Not support field %d for pin = %d (%s)\n", field, desc->number, desc->name); return -ENOTSUPP; } + c = rc->range + check; + if (c->i_base > hw->nbase - 1) { dev_err(hw->dev, "Invalid base for field %d for pin = %d (%s)\n", @@ -182,6 +194,9 @@ int mtk_hw_set_value(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc, if (err) return err; + if (value < 0 || value > pf.mask) + return -EINVAL; + if (!pf.next) mtk_rmw(hw, pf.index, pf.offset, pf.mask << pf.bitpos, (value & pf.mask) << pf.bitpos); diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c index 923264d..3e13ae7 100644 --- a/drivers/pinctrl/mediatek/pinctrl-paris.c +++ b/drivers/pinctrl/mediatek/pinctrl-paris.c @@ -81,6 +81,8 @@ static int mtk_pinconf_get(struct pinctrl_dev *pctldev, int val, val2, err, reg, ret = 1; const struct mtk_pin_desc *desc; + if (pin >= hw->soc->npins) + return -EINVAL; desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin]; switch (param) { @@ -206,6 +208,10 @@ static int mtk_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin, int err = 0; u32 reg; + if (pin >= hw->soc->npins) { + err = -EINVAL; + goto err; + } desc = (const struct mtk_pin_desc *)&hw->soc->pins[pin]; switch ((u32)param) { @@ -693,6 +699,9 @@ static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio) const struct mtk_pin_desc *desc; int value, err; + if (gpio > hw->soc->npins) + return -EINVAL; + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio]; err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &value); @@ -708,6 +717,9 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned int gpio) const struct mtk_pin_desc *desc; int value, err; + if (gpio > hw->soc->npins) + return -EINVAL; + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio]; err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DI, &value); @@ -722,6 +734,9 @@ static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value) struct mtk_pinctrl *hw = gpiochip_get_data(chip); const struct mtk_pin_desc *desc; + if (gpio > hw->soc->npins) + return; + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio]; mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DO, !!value); @@ -729,12 +744,22 @@ static void mtk_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value) static int mtk_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio) { + struct mtk_pinctrl *hw = gpiochip_get_data(chip); + + if (gpio > hw->soc->npins) + return -EINVAL; + return pinctrl_gpio_direction_input(chip->base + gpio); } static int mtk_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio, int value) { + struct mtk_pinctrl *hw = gpiochip_get_data(chip); + + if (gpio > hw->soc->npins) + return -EINVAL; + mtk_gpio_set(chip, gpio, value); return pinctrl_gpio_direction_output(chip->base + gpio); -- 1.8.1.1.dirty _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek