Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pinctrl: add drive for I2C related pins on MT8195

This patch provides the advanced drive raw data setting version
for I2C used pins on MT8195.

Signed-off-by: Zhiyong Tao <zhiyong.tao@mediatek.com>
Acked-by: Sean Wang <sean.wang@kernel.org>
Link: https://lore.kernel.org/r/20210413055702.27535-4-zhiyong.tao@mediatek.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

Zhiyong Tao and committed by
Linus Walleij
ea9d2ed4 6cf5e9ef

+41
+22
drivers/pinctrl/mediatek/pinctrl-mt8195.c
··· 760 760 PIN_FIELD_BASE(143, 143, 1, 0x020, 0x10, 24, 3), 761 761 }; 762 762 763 + static const struct mtk_pin_field_calc mt8195_pin_drv_adv_range[] = { 764 + PIN_FIELD_BASE(8, 8, 4, 0x020, 0x10, 15, 3), 765 + PIN_FIELD_BASE(9, 9, 4, 0x020, 0x10, 0, 3), 766 + PIN_FIELD_BASE(10, 10, 4, 0x020, 0x10, 18, 3), 767 + PIN_FIELD_BASE(11, 11, 4, 0x020, 0x10, 3, 3), 768 + PIN_FIELD_BASE(12, 12, 4, 0x020, 0x10, 21, 3), 769 + PIN_FIELD_BASE(13, 13, 4, 0x020, 0x10, 6, 3), 770 + PIN_FIELD_BASE(14, 14, 4, 0x020, 0x10, 24, 3), 771 + PIN_FIELD_BASE(15, 15, 4, 0x020, 0x10, 9, 3), 772 + PIN_FIELD_BASE(16, 16, 4, 0x020, 0x10, 27, 3), 773 + PIN_FIELD_BASE(17, 17, 4, 0x020, 0x10, 12, 3), 774 + PIN_FIELD_BASE(29, 29, 2, 0x020, 0x10, 0, 3), 775 + PIN_FIELD_BASE(30, 30, 2, 0x020, 0x10, 3, 3), 776 + PIN_FIELD_BASE(34, 34, 1, 0x040, 0x10, 0, 3), 777 + PIN_FIELD_BASE(35, 35, 1, 0x040, 0x10, 3, 3), 778 + PIN_FIELD_BASE(44, 44, 1, 0x040, 0x10, 6, 3), 779 + PIN_FIELD_BASE(45, 45, 1, 0x040, 0x10, 9, 3), 780 + }; 781 + 763 782 static const struct mtk_pin_reg_calc mt8195_reg_cals[PINCTRL_PIN_REG_MAX] = { 764 783 [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8195_pin_mode_range), 765 784 [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8195_pin_dir_range), ··· 792 773 [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8195_pin_pupd_range), 793 774 [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8195_pin_r0_range), 794 775 [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8195_pin_r1_range), 776 + [PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt8195_pin_drv_adv_range), 795 777 }; 796 778 797 779 static const char * const mt8195_pinctrl_register_base_names[] = { ··· 821 801 .bias_get_combo = mtk_pinconf_bias_get_combo, 822 802 .drive_set = mtk_pinconf_drive_set_rev1, 823 803 .drive_get = mtk_pinconf_drive_get_rev1, 804 + .adv_drive_get = mtk_pinconf_adv_drive_get_raw, 805 + .adv_drive_set = mtk_pinconf_adv_drive_set_raw, 824 806 }; 825 807 826 808 static const struct of_device_id mt8195_pinctrl_of_match[] = {
+14
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
··· 1031 1031 } 1032 1032 EXPORT_SYMBOL_GPL(mtk_pinconf_adv_drive_get); 1033 1033 1034 + int mtk_pinconf_adv_drive_set_raw(struct mtk_pinctrl *hw, 1035 + const struct mtk_pin_desc *desc, u32 arg) 1036 + { 1037 + return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_DRV_ADV, arg); 1038 + } 1039 + EXPORT_SYMBOL_GPL(mtk_pinconf_adv_drive_set_raw); 1040 + 1041 + int mtk_pinconf_adv_drive_get_raw(struct mtk_pinctrl *hw, 1042 + const struct mtk_pin_desc *desc, u32 *val) 1043 + { 1044 + return mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DRV_ADV, val); 1045 + } 1046 + EXPORT_SYMBOL_GPL(mtk_pinconf_adv_drive_get_raw); 1047 + 1034 1048 MODULE_LICENSE("GPL v2"); 1035 1049 MODULE_AUTHOR("Sean Wang <sean.wang@mediatek.com>"); 1036 1050 MODULE_DESCRIPTION("Pin configuration library module for mediatek SoCs");
+5
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
··· 66 66 PINCTRL_PIN_REG_DRV_EN, 67 67 PINCTRL_PIN_REG_DRV_E0, 68 68 PINCTRL_PIN_REG_DRV_E1, 69 + PINCTRL_PIN_REG_DRV_ADV, 69 70 PINCTRL_PIN_REG_MAX, 70 71 }; 71 72 ··· 317 316 const struct mtk_pin_desc *desc, u32 arg); 318 317 int mtk_pinconf_adv_drive_get(struct mtk_pinctrl *hw, 319 318 const struct mtk_pin_desc *desc, u32 *val); 319 + int mtk_pinconf_adv_drive_set_raw(struct mtk_pinctrl *hw, 320 + const struct mtk_pin_desc *desc, u32 arg); 321 + int mtk_pinconf_adv_drive_get_raw(struct mtk_pinctrl *hw, 322 + const struct mtk_pin_desc *desc, u32 *val); 320 323 321 324 bool mtk_is_virt_gpio(struct mtk_pinctrl *hw, unsigned int gpio_n); 322 325 #endif /* __PINCTRL_MTK_COMMON_V2_H */