]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
pinctrl: mediatek: Supporting driving setting without mapping current to register...
authorLight Hsieh <light.hsieh@mediatek.com>
Wed, 22 Jan 2020 06:53:10 +0000 (14:53 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2024 09:43:47 +0000 (11:43 +0200)
[ Upstream commit 5f755e1f1efe5ca3b475b14169e6e85bf1411bb5 ]

MediaTek's smartphone 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 practical for
MediaTek's smartphone usage.

Signed-off-by: Light Hsieh <light.hsieh@mediatek.com>
Link: https://lore.kernel.org/r/1579675994-7001-2-git-send-email-light.hsieh@mediatek.com
Acked-by: Sean Wang <sean.wang@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Stable-dep-of: c5d3b64c568a ("pinctrl: mediatek: paris: Rework support for PIN_CONFIG_{INPUT,OUTPUT}_ENABLE")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/pinctrl/mediatek/pinctrl-mt6765.c
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h

index 32451e8693be718ff47342949454f33374d4aad2..12122646bbc28c5dfc8a32e9af4f7a82eb2f1b04 100644 (file)
@@ -1077,8 +1077,8 @@ static const struct mtk_pin_soc mt6765_data = {
        .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_raw,
+       .drive_get = mtk_pinconf_drive_get_raw,
        .adv_pull_get = mtk_pinconf_adv_pull_get,
        .adv_pull_set = mtk_pinconf_adv_pull_set,
 };
index 2795d0fd0f5bdb577878286bbf9167db23f19565..fb87feec7bd3f1a49ab52fc3be274a23798a5126 100644 (file)
@@ -612,6 +612,18 @@ int mtk_pinconf_drive_get_rev1(struct mtk_pinctrl *hw,
        return 0;
 }
 
+int mtk_pinconf_drive_set_raw(struct mtk_pinctrl *hw,
+                              const struct mtk_pin_desc *desc, u32 arg)
+{
+       return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV, arg);
+}
+
+int mtk_pinconf_drive_get_raw(struct mtk_pinctrl *hw,
+                              const struct mtk_pin_desc *desc, int *val)
+{
+       return mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV, val);
+}
+
 int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw,
                             const struct mtk_pin_desc *desc, bool pullup,
                             u32 arg)
index 1b7da42aa1d53e4cfd5b7eefadd1f8b2ee13abea..75d0e0712c03f7729f80ae8160877f468c28aeb9 100644 (file)
@@ -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_raw(struct mtk_pinctrl *hw,
+                              const struct mtk_pin_desc *desc, u32 arg);
+int mtk_pinconf_drive_get_raw(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);