#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/regmap.h>
#include <dt-bindings/pinctrl/mt65xx.h>
#include "pinctrl-mtk-common.h"
#include "pinctrl-mtk-mt8135.h"
#define DRV_BASE1 …
#define DRV_BASE2 …
#define PUPD_BASE1 …
#define PUPD_BASE2 …
#define R0_BASE1 …
#define R1_BASE1 …
#define R1_BASE2 …
struct mtk_spec_pull_set { … };
#define SPEC_PULL(_pin, _pupd_offset, _pupd_bit, _r0_offset, \
_r0_bit, _r1_offset, _r1_bit) …
static const struct mtk_drv_group_desc mt8135_drv_grp[] = …;
static const struct mtk_pin_drv_grp mt8135_pin_drv[] = …;
static const struct mtk_spec_pull_set spec_pupd[] = …;
static int spec_pull_set(struct regmap *regmap,
const struct mtk_pinctrl_devdata *devdata,
unsigned int pin, bool isup, unsigned int r1r0)
{ … }
static const struct mtk_pinctrl_devdata mt8135_pinctrl_data = …;
static const struct of_device_id mt8135_pctrl_match[] = …;
static struct platform_driver mtk_pinctrl_driver = …;
static int __init mtk_pinctrl_init(void)
{ … }
arch_initcall(mtk_pinctrl_init);