180525098SZhiyong Tao /* SPDX-License-Identifier: GPL-2.0 */ 280525098SZhiyong Tao /* 380525098SZhiyong Tao * Copyright (C) 2018 MediaTek Inc. 480525098SZhiyong Tao * 580525098SZhiyong Tao * Author: Sean Wang <sean.wang@mediatek.com> 680525098SZhiyong Tao * Zhiyong Tao <zhiyong.tao@mediatek.com> 780525098SZhiyong Tao * Hongzhou.Yang <hongzhou.yang@mediatek.com> 880525098SZhiyong Tao */ 980525098SZhiyong Tao #ifndef __PINCTRL_PARIS_H 1080525098SZhiyong Tao #define __PINCTRL_PARIS_H 1180525098SZhiyong Tao 1280525098SZhiyong Tao #include <linux/io.h> 1380525098SZhiyong Tao #include <linux/init.h> 1480525098SZhiyong Tao #include <linux/of.h> 1580525098SZhiyong Tao #include <linux/of_platform.h> 1680525098SZhiyong Tao #include <linux/platform_device.h> 1780525098SZhiyong Tao #include <linux/pinctrl/pinctrl.h> 1880525098SZhiyong Tao #include <linux/pinctrl/pinmux.h> 1980525098SZhiyong Tao #include <linux/pinctrl/pinconf.h> 2080525098SZhiyong Tao #include <linux/pinctrl/pinconf-generic.h> 2180525098SZhiyong Tao 2280525098SZhiyong Tao #include "../core.h" 2380525098SZhiyong Tao #include "../pinconf.h" 2480525098SZhiyong Tao #include "../pinctrl-utils.h" 2580525098SZhiyong Tao #include "../pinmux.h" 2680525098SZhiyong Tao #include "mtk-eint.h" 2780525098SZhiyong Tao #include "pinctrl-mtk-common-v2.h" 2880525098SZhiyong Tao 2980525098SZhiyong Tao #define MTK_RANGE(_a) { .range = (_a), .nranges = ARRAY_SIZE(_a), } 3080525098SZhiyong Tao 3180525098SZhiyong Tao #define MTK_EINT_FUNCTION(_eintmux, _eintnum) \ 3280525098SZhiyong Tao { \ 3380525098SZhiyong Tao .eint_m = _eintmux, \ 3480525098SZhiyong Tao .eint_n = _eintnum, \ 3580525098SZhiyong Tao } 3680525098SZhiyong Tao 3780525098SZhiyong Tao #define MTK_FUNCTION(_val, _name) \ 3880525098SZhiyong Tao { \ 3980525098SZhiyong Tao .muxval = _val, \ 4080525098SZhiyong Tao .name = _name, \ 4180525098SZhiyong Tao } 4280525098SZhiyong Tao 4380525098SZhiyong Tao #define MTK_PIN(_number, _name, _eint, _drv_n, ...) { \ 4480525098SZhiyong Tao .number = _number, \ 4580525098SZhiyong Tao .name = _name, \ 4680525098SZhiyong Tao .eint = _eint, \ 4780525098SZhiyong Tao .drv_n = _drv_n, \ 4880525098SZhiyong Tao .funcs = (struct mtk_func_desc[]){ \ 4980525098SZhiyong Tao __VA_ARGS__, { } }, \ 5080525098SZhiyong Tao } 5180525098SZhiyong Tao 5280525098SZhiyong Tao #define PINCTRL_PIN_GROUP(name, id) \ 5380525098SZhiyong Tao { \ 5480525098SZhiyong Tao name, \ 5580525098SZhiyong Tao id##_pins, \ 5680525098SZhiyong Tao ARRAY_SIZE(id##_pins), \ 5780525098SZhiyong Tao id##_funcs, \ 5880525098SZhiyong Tao } 5980525098SZhiyong Tao 60*78df7bbaSAngeloGioacchino Del Regno int mtk_paris_pinctrl_probe(struct platform_device *pdev); 6180525098SZhiyong Tao 62184d8e13SLight Hsieh ssize_t mtk_pctrl_show_one_pin(struct mtk_pinctrl *hw, 63184d8e13SLight Hsieh unsigned int gpio, char *buf, unsigned int bufLen); 64184d8e13SLight Hsieh 655c090448SNicolas Boichat extern const struct dev_pm_ops mtk_paris_pinctrl_pm_ops; 665c090448SNicolas Boichat 6780525098SZhiyong Tao #endif /* __PINCTRL_PARIS_H */ 68