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

pinctrl: mediatek: paris: Unify probe function by using OF match data

All of the SoCs using Paris pinctrl are defining a custom probe
function that is simply calling mtk_paris_pinctrl_probe() passing
a pointer to the SoC specific mtk_pin_soc structure and nothing else.

Simplify the probe mechanism across all pinctrl drivers that are
using pinctrl-paris by passing the specific mtk_pin_soc as match
data and using function mtk_paris_pinctrl_probe as a common probe
function for all of them.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Link: https://lore.kernel.org/r/20220222111144.20796-2-angelogioacchino.delregno@collabora.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

AngeloGioacchino Del Regno and committed by
Linus Walleij
78df7bba 89388f87

+19 -47
+2 -7
drivers/pinctrl/mediatek/pinctrl-mt6765.c
··· 1082 1082 }; 1083 1083 1084 1084 static const struct of_device_id mt6765_pinctrl_of_match[] = { 1085 - { .compatible = "mediatek,mt6765-pinctrl", }, 1085 + { .compatible = "mediatek,mt6765-pinctrl", .data = &mt6765_data }, 1086 1086 { } 1087 1087 }; 1088 - 1089 - static int mt6765_pinctrl_probe(struct platform_device *pdev) 1090 - { 1091 - return mtk_paris_pinctrl_probe(pdev, &mt6765_data); 1092 - } 1093 1088 1094 1089 static struct platform_driver mt6765_pinctrl_driver = { 1095 1090 .driver = { 1096 1091 .name = "mt6765-pinctrl", 1097 1092 .of_match_table = mt6765_pinctrl_of_match, 1098 1093 }, 1099 - .probe = mt6765_pinctrl_probe, 1094 + .probe = mtk_paris_pinctrl_probe, 1100 1095 }; 1101 1096 1102 1097 static int __init mt6765_pinctrl_init(void)
+2 -7
drivers/pinctrl/mediatek/pinctrl-mt6779.c
··· 758 758 }; 759 759 760 760 static const struct of_device_id mt6779_pinctrl_of_match[] = { 761 - { .compatible = "mediatek,mt6779-pinctrl", }, 761 + { .compatible = "mediatek,mt6779-pinctrl", .data = &mt6779_data }, 762 762 { } 763 763 }; 764 - 765 - static int mt6779_pinctrl_probe(struct platform_device *pdev) 766 - { 767 - return mtk_paris_pinctrl_probe(pdev, &mt6779_data); 768 - } 769 764 770 765 static struct platform_driver mt6779_pinctrl_driver = { 771 766 .driver = { 772 767 .name = "mt6779-pinctrl", 773 768 .of_match_table = mt6779_pinctrl_of_match, 774 769 }, 775 - .probe = mt6779_pinctrl_probe, 770 + .probe = mtk_paris_pinctrl_probe, 776 771 }; 777 772 778 773 static int __init mt6779_pinctrl_init(void)
+2 -7
drivers/pinctrl/mediatek/pinctrl-mt6797.c
··· 58 58 }; 59 59 60 60 static const struct of_device_id mt6797_pinctrl_of_match[] = { 61 - { .compatible = "mediatek,mt6797-pinctrl", }, 61 + { .compatible = "mediatek,mt6797-pinctrl", .data = &mt6797_data }, 62 62 { } 63 63 }; 64 - 65 - static int mt6797_pinctrl_probe(struct platform_device *pdev) 66 - { 67 - return mtk_paris_pinctrl_probe(pdev, &mt6797_data); 68 - } 69 64 70 65 static struct platform_driver mt6797_pinctrl_driver = { 71 66 .driver = { 72 67 .name = "mt6797-pinctrl", 73 68 .of_match_table = mt6797_pinctrl_of_match, 74 69 }, 75 - .probe = mt6797_pinctrl_probe, 70 + .probe = mtk_paris_pinctrl_probe, 76 71 }; 77 72 78 73 static int __init mt6797_pinctrl_init(void)
+2 -7
drivers/pinctrl/mediatek/pinctrl-mt8183.c
··· 567 567 }; 568 568 569 569 static const struct of_device_id mt8183_pinctrl_of_match[] = { 570 - { .compatible = "mediatek,mt8183-pinctrl", }, 570 + { .compatible = "mediatek,mt8183-pinctrl", .data = &mt8183_data }, 571 571 { } 572 572 }; 573 - 574 - static int mt8183_pinctrl_probe(struct platform_device *pdev) 575 - { 576 - return mtk_paris_pinctrl_probe(pdev, &mt8183_data); 577 - } 578 573 579 574 static struct platform_driver mt8183_pinctrl_driver = { 580 575 .driver = { ··· 577 582 .of_match_table = mt8183_pinctrl_of_match, 578 583 .pm = &mtk_paris_pinctrl_pm_ops, 579 584 }, 580 - .probe = mt8183_pinctrl_probe, 585 + .probe = mtk_paris_pinctrl_probe, 581 586 }; 582 587 583 588 static int __init mt8183_pinctrl_init(void)
+2 -7
drivers/pinctrl/mediatek/pinctrl-mt8192.c
··· 1381 1381 }; 1382 1382 1383 1383 static const struct of_device_id mt8192_pinctrl_of_match[] = { 1384 - { .compatible = "mediatek,mt8192-pinctrl", }, 1384 + { .compatible = "mediatek,mt8192-pinctrl", .data = &mt8192_data }, 1385 1385 { } 1386 1386 }; 1387 - 1388 - static int mt8192_pinctrl_probe(struct platform_device *pdev) 1389 - { 1390 - return mtk_paris_pinctrl_probe(pdev, &mt8192_data); 1391 - } 1392 1387 1393 1388 static struct platform_driver mt8192_pinctrl_driver = { 1394 1389 .driver = { ··· 1391 1396 .of_match_table = mt8192_pinctrl_of_match, 1392 1397 .pm = &mtk_paris_pinctrl_pm_ops, 1393 1398 }, 1394 - .probe = mt8192_pinctrl_probe, 1399 + .probe = mtk_paris_pinctrl_probe, 1395 1400 }; 1396 1401 1397 1402 static int __init mt8192_pinctrl_init(void)
+2 -7
drivers/pinctrl/mediatek/pinctrl-mt8195.c
··· 959 959 }; 960 960 961 961 static const struct of_device_id mt8195_pinctrl_of_match[] = { 962 - { .compatible = "mediatek,mt8195-pinctrl", }, 962 + { .compatible = "mediatek,mt8195-pinctrl", .data = &mt8195_data }, 963 963 { } 964 964 }; 965 - 966 - static int mt8195_pinctrl_probe(struct platform_device *pdev) 967 - { 968 - return mtk_paris_pinctrl_probe(pdev, &mt8195_data); 969 - } 970 965 971 966 static struct platform_driver mt8195_pinctrl_driver = { 972 967 .driver = { ··· 969 974 .of_match_table = mt8195_pinctrl_of_match, 970 975 .pm = &mtk_paris_pinctrl_pm_ops, 971 976 }, 972 - .probe = mt8195_pinctrl_probe, 977 + .probe = mtk_paris_pinctrl_probe, 973 978 }; 974 979 975 980 static int __init mt8195_pinctrl_init(void)
+6 -3
drivers/pinctrl/mediatek/pinctrl-paris.c
··· 1021 1021 return 0; 1022 1022 } 1023 1023 1024 - int mtk_paris_pinctrl_probe(struct platform_device *pdev, 1025 - const struct mtk_pin_soc *soc) 1024 + int mtk_paris_pinctrl_probe(struct platform_device *pdev) 1026 1025 { 1027 1026 struct device *dev = &pdev->dev; 1028 1027 struct pinctrl_pin_desc *pins; ··· 1033 1034 return -ENOMEM; 1034 1035 1035 1036 platform_set_drvdata(pdev, hw); 1036 - hw->soc = soc; 1037 + 1038 + hw->soc = device_get_match_data(dev); 1039 + if (!hw->soc) 1040 + return -ENOENT; 1041 + 1037 1042 hw->dev = &pdev->dev; 1038 1043 1039 1044 if (!hw->soc->nbase_names)
+1 -2
drivers/pinctrl/mediatek/pinctrl-paris.h
··· 57 57 id##_funcs, \ 58 58 } 59 59 60 - int mtk_paris_pinctrl_probe(struct platform_device *pdev, 61 - const struct mtk_pin_soc *soc); 60 + int mtk_paris_pinctrl_probe(struct platform_device *pdev); 62 61 63 62 ssize_t mtk_pctrl_show_one_pin(struct mtk_pinctrl *hw, 64 63 unsigned int gpio, char *buf, unsigned int bufLen);