Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp854825ybl; Tue, 13 Aug 2019 03:47:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqw2B9IRAg+6PvCqFuUff2ziPg5OOA/tuJAbHR8qMa597YijH1mLF5FL1bWQNp4HSB6HRWVX X-Received: by 2002:a17:90a:6097:: with SMTP id z23mr1615199pji.75.1565693226845; Tue, 13 Aug 2019 03:47:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565693226; cv=none; d=google.com; s=arc-20160816; b=iVYW3BzSgzDlxpUl9r32YQW2loseC8go1AgnRscapkg7ne8cSKCBiQjg6CZ0iBLdZF gkj0Nt9ADK7IIBQhmFxucOXC3lDb84RvJzk9yTjSQa0J2FHfTZmPzJeJq6F/zV5rLPQF UHoN+zYaOY2DvDNgmA3ooL7B8Zd+X/sz376FuGhSOF4hmk9HehhSmTZhUa4fqFi5/Acx qOAK/b3ABTan12qRbHo5wbK8vg19lREFRRXzvAxpUWhy+CQGVaaIwm/3kDHBr8pU0kCW KSWMHP9M0Am8cf9Woo1aDhwHz9wof2hd/kOk4UTtisyuSIs/3kh/EWugtcNVGFWP7XJo c84Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=sIu80cYtn+T225z2yI2LsYtLJMD2zKOcfXIeqUqAicI=; b=04+JsgvTi/oqRLwcC/ZeSWRbh9Q2XeVyr1G3zlE49bm8V8gJughAT2Ye4/FRmq+vs1 pY2GfMroSz405V+6CdKINVPCQo5iSKm4AdvfH0tZBBetB4m2QXLTwP/QhuYVoLHvVNGz mTZ6w/3ZzDVaJDUUkHgTswFIWg3lyQEjbGiXsWf4XJfA4O1QLLHGye8wnrnXFEybGkaz 2Qwzahl7eOhmvj3G6YYvqTUiCPIuyAas0eO/GNIZEmQKw/WPXNWE26hUA+SzutSf4FUk /Vim2XTW53l3Qp+Cw4tU67HXkCiJfX+Mq1b/YzAT7IEUHQyOdwc4HMD51bvcBU7jcIJ7 BVEw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id br18si750149pjb.52.2019.08.13.03.46.50; Tue, 13 Aug 2019 03:47:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728069AbfHMIxd (ORCPT + 99 others); Tue, 13 Aug 2019 04:53:33 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:24059 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727705AbfHMIx3 (ORCPT ); Tue, 13 Aug 2019 04:53:29 -0400 X-UUID: 207f83eaaac248eda72b8f4d70f4bedd-20190813 X-UUID: 207f83eaaac248eda72b8f4d70f4bedd-20190813 Received: from mtkmrs01.mediatek.inc [(172.21.131.159)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0707 with TLS) with ESMTP id 405668400; Tue, 13 Aug 2019 16:53:21 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs08n1.mediatek.inc (172.21.101.55) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 13 Aug 2019 16:53:20 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 13 Aug 2019 16:53:20 +0800 From: Light Hsieh To: CC: , , , , Light Hsieh Subject: [PATCH v1 2/5] pinctrl: mediatek: Supporting driving setting without mapping current to register value Date: Tue, 13 Aug 2019 16:53:17 +0800 Message-ID: <1565686400-5711-3-git-send-email-light.hsieh@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1565686400-5711-1-git-send-email-light.hsieh@mediatek.com> References: <1565686400-5711-1-git-send-email-light.hsieh@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Light Hsieh Mediatek's smarphone project actual usage does need to know current value (in mA) in procedure of finding the best driving setting. The steps in the procedure is like as follow: 1. set driving setting field in setting register as 0, measure waveform, perform test, and etc. 2. set driving setting field in setting register as 1, measure waveform, perform test, and etc. ... n. set driving setting field in setting register as n-1, measure waveform, perform test, and etc. Check the results of steps 1~n and adopt the setting that get best result. This procedure does need to know the mapping between current to register value. Therefore, setting driving without mapping current is more pratical for Mediatek's smartphone usage. Change-Id: Iacdabf0cada230fc5acad96673810c12a6c4556d --- drivers/pinctrl/mediatek/pinctrl-mt6765.c | 4 ++-- drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c | 21 +++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h | 5 +++++ drivers/pinctrl/mediatek/pinctrl-paris.c | 1 + 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6765.c b/drivers/pinctrl/mediatek/pinctrl-mt6765.c index 32451e8..e024ebc 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt6765.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt6765.c @@ -1077,8 +1077,8 @@ .bias_disable_get = mtk_pinconf_bias_disable_get, .bias_set = mtk_pinconf_bias_set, .bias_get = mtk_pinconf_bias_get, - .drive_set = mtk_pinconf_drive_set_rev1, - .drive_get = mtk_pinconf_drive_get_rev1, + .drive_set = mtk_pinconf_drive_set_direct_val, + .drive_get = mtk_pinconf_drive_get_direct_val, .adv_pull_get = mtk_pinconf_adv_pull_get, .adv_pull_set = mtk_pinconf_adv_pull_set, }; diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c index 4687f63..23a9529 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c @@ -607,6 +607,27 @@ int mtk_pinconf_drive_get_rev1(struct mtk_pinctrl *hw, return 0; } +/* Revision direct value */ +int mtk_pinconf_drive_set_direct_val(struct mtk_pinctrl *hw, + const struct mtk_pin_desc *desc, u32 arg) +{ + int err; + + err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV, arg); + + return err; +} + +int mtk_pinconf_drive_get_direct_val(struct mtk_pinctrl *hw, + const struct mtk_pin_desc *desc, int *val) +{ + int err; + + err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV, val); + + return err; +} + int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc, bool pullup, u32 arg) diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h index 1b7da42..b3bada0 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h @@ -288,6 +288,11 @@ int mtk_pinconf_drive_set_rev1(struct mtk_pinctrl *hw, int mtk_pinconf_drive_get_rev1(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc, int *val); +int mtk_pinconf_drive_set_direct_val(struct mtk_pinctrl *hw, + const struct mtk_pin_desc *desc, u32 arg); +int mtk_pinconf_drive_get_direct_val(struct mtk_pinctrl *hw, + const struct mtk_pin_desc *desc, int *val); + int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc, bool pullup, u32 arg); diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c index 28b4951..71c94b2 100644 --- a/drivers/pinctrl/mediatek/pinctrl-paris.c +++ b/drivers/pinctrl/mediatek/pinctrl-paris.c @@ -964,3 +964,4 @@ static int mtk_paris_pinctrl_resume(struct device *device) .suspend_noirq = mtk_paris_pinctrl_suspend, .resume_noirq = mtk_paris_pinctrl_resume, }; + -- 1.8.1.1.dirty