162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2018 MediaTek Inc. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Author: Sean Wang <sean.wang@mediatek.com> 662306a36Sopenharmony_ci * Zhiyong Tao <zhiyong.tao@mediatek.com> 762306a36Sopenharmony_ci * Hongzhou.Yang <hongzhou.yang@mediatek.com> 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci#ifndef __PINCTRL_PARIS_H 1062306a36Sopenharmony_ci#define __PINCTRL_PARIS_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/io.h> 1362306a36Sopenharmony_ci#include <linux/init.h> 1462306a36Sopenharmony_ci#include <linux/of.h> 1562306a36Sopenharmony_ci#include <linux/of_platform.h> 1662306a36Sopenharmony_ci#include <linux/platform_device.h> 1762306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h> 1862306a36Sopenharmony_ci#include <linux/pinctrl/pinmux.h> 1962306a36Sopenharmony_ci#include <linux/pinctrl/pinconf.h> 2062306a36Sopenharmony_ci#include <linux/pinctrl/pinconf-generic.h> 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#include "../core.h" 2362306a36Sopenharmony_ci#include "../pinconf.h" 2462306a36Sopenharmony_ci#include "../pinctrl-utils.h" 2562306a36Sopenharmony_ci#include "../pinmux.h" 2662306a36Sopenharmony_ci#include "mtk-eint.h" 2762306a36Sopenharmony_ci#include "pinctrl-mtk-common-v2.h" 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#define MTK_RANGE(_a) { .range = (_a), .nranges = ARRAY_SIZE(_a), } 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define MTK_EINT_FUNCTION(_eintmux, _eintnum) \ 3262306a36Sopenharmony_ci { \ 3362306a36Sopenharmony_ci .eint_m = _eintmux, \ 3462306a36Sopenharmony_ci .eint_n = _eintnum, \ 3562306a36Sopenharmony_ci } 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define MTK_FUNCTION(_val, _name) \ 3862306a36Sopenharmony_ci { \ 3962306a36Sopenharmony_ci .muxval = _val, \ 4062306a36Sopenharmony_ci .name = _name, \ 4162306a36Sopenharmony_ci } 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#define MTK_PIN(_number, _name, _eint, _drv_n, ...) { \ 4462306a36Sopenharmony_ci .number = _number, \ 4562306a36Sopenharmony_ci .name = _name, \ 4662306a36Sopenharmony_ci .eint = _eint, \ 4762306a36Sopenharmony_ci .drv_n = _drv_n, \ 4862306a36Sopenharmony_ci .funcs = (struct mtk_func_desc[]){ \ 4962306a36Sopenharmony_ci __VA_ARGS__, { } }, \ 5062306a36Sopenharmony_ci } 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci#define PINCTRL_PIN_GROUP(name, id) \ 5362306a36Sopenharmony_ci { \ 5462306a36Sopenharmony_ci name, \ 5562306a36Sopenharmony_ci id##_pins, \ 5662306a36Sopenharmony_ci ARRAY_SIZE(id##_pins), \ 5762306a36Sopenharmony_ci id##_funcs, \ 5862306a36Sopenharmony_ci } 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ciint mtk_paris_pinctrl_probe(struct platform_device *pdev); 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cissize_t mtk_pctrl_show_one_pin(struct mtk_pinctrl *hw, 6362306a36Sopenharmony_ci unsigned int gpio, char *buf, unsigned int bufLen); 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ciextern const struct dev_pm_ops mtk_paris_pinctrl_pm_ops; 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci#endif /* __PINCTRL_PARIS_H */ 68