Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/pinctrl/mediatek/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 44 kB image not shown  

Quelle  pinctrl-mt8195.c

  Sprache: C
 

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2020 MediaTek Inc.
 *
 * Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
 *
 */


#include "pinctrl-mtk-mt8195.h"
#include "pinctrl-paris.h"

/* MT8195 have multiple bases to program pin configuration listed as the below:
 * iocfg[0]:0x10005000, iocfg[1]:0x11d10000, iocfg[2]:0x11d30000,
 * iocfg[3]:0x11d40000, iocfg[4]:0x11e20000, iocfg[5]:0x11eb0000,
 * iocfg[6]:0x11f40000.
 * _i_based could be used to indicate what base the pin should be mapped into.
 */


#define PIN_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
 PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits, \
         320)

#define PINS_FIELD_BASE(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits) \
 PIN_FIELD_CALC(s_pin, e_pin, i_base, s_addr, x_addrs, s_bit, x_bits,  \
         321)

static const struct mtk_pin_field_calc mt8195_pin_mode_range[] = {
 PIN_FIELD(01440x300, 0x10, 04),
};

static const struct mtk_pin_field_calc mt8195_pin_dir_range[] = {
 PIN_FIELD(01440x0, 0x10, 01),
};

static const struct mtk_pin_field_calc mt8195_pin_di_range[] = {
 PIN_FIELD(01440x200, 0x10, 01),
};

static const struct mtk_pin_field_calc mt8195_pin_do_range[] = {
 PIN_FIELD(01440x100, 0x10, 01),
};

static const struct mtk_pin_field_calc mt8195_pin_ies_range[] = {
 PIN_FIELD_BASE(0040x040, 0x10, 01),
 PIN_FIELD_BASE(1140x040, 0x10, 11),
 PIN_FIELD_BASE(2240x040, 0x10, 21),
 PIN_FIELD_BASE(3340x040, 0x10, 31),
 PIN_FIELD_BASE(4440x040, 0x10, 41),
 PIN_FIELD_BASE(5540x040, 0x10, 51),
 PIN_FIELD_BASE(6640x040, 0x10, 61),
 PIN_FIELD_BASE(7740x040, 0x10, 71),
 PIN_FIELD_BASE(8840x040, 0x10, 131),
 PIN_FIELD_BASE(9940x040, 0x10, 81),
 PIN_FIELD_BASE(101040x040, 0x10, 141),
 PIN_FIELD_BASE(111140x040, 0x10, 91),
 PIN_FIELD_BASE(121240x040, 0x10, 151),
 PIN_FIELD_BASE(131340x040, 0x10, 101),
 PIN_FIELD_BASE(141440x040, 0x10, 161),
 PIN_FIELD_BASE(151540x040, 0x10, 111),
 PIN_FIELD_BASE(161640x040, 0x10, 171),
 PIN_FIELD_BASE(171740x040, 0x10, 121),
 PIN_FIELD_BASE(181820x040, 0x10, 51),
 PIN_FIELD_BASE(191920x040, 0x10, 121),
 PIN_FIELD_BASE(202020x040, 0x10, 111),
 PIN_FIELD_BASE(212120x040, 0x10, 101),
 PIN_FIELD_BASE(222220x040, 0x10, 01),
 PIN_FIELD_BASE(232320x040, 0x10, 11),
 PIN_FIELD_BASE(242420x040, 0x10, 21),
 PIN_FIELD_BASE(252520x040, 0x10, 41),
 PIN_FIELD_BASE(262620x040, 0x10, 31),
 PIN_FIELD_BASE(272720x040, 0x10, 61),
 PIN_FIELD_BASE(282820x040, 0x10, 71),
 PIN_FIELD_BASE(292920x040, 0x10, 81),
 PIN_FIELD_BASE(303020x040, 0x10, 91),
 PIN_FIELD_BASE(313110x060, 0x10, 131),
 PIN_FIELD_BASE(323210x060, 0x10, 121),
 PIN_FIELD_BASE(333310x060, 0x10, 111),
 PIN_FIELD_BASE(343410x060, 0x10, 141),
 PIN_FIELD_BASE(353510x060, 0x10, 151),
 PIN_FIELD_BASE(363610x070, 0x10, 31),
 PIN_FIELD_BASE(373710x070, 0x10, 61),
 PIN_FIELD_BASE(383810x070, 0x10, 41),
 PIN_FIELD_BASE(393910x070, 0x10, 51),
 PIN_FIELD_BASE(404010x070, 0x10, 81),
 PIN_FIELD_BASE(414110x070, 0x10, 71),
 PIN_FIELD_BASE(424210x070, 0x10, 101),
 PIN_FIELD_BASE(434310x070, 0x10, 91),
 PIN_FIELD_BASE(444410x070, 0x10, 201),
 PIN_FIELD_BASE(454510x070, 0x10, 211),
 PIN_FIELD_BASE(464610x060, 0x10, 181),
 PIN_FIELD_BASE(474710x060, 0x10, 161),
 PIN_FIELD_BASE(484810x060, 0x10, 191),
 PIN_FIELD_BASE(494910x060, 0x10, 171),
 PIN_FIELD_BASE(505010x060, 0x10, 251),
 PIN_FIELD_BASE(515110x060, 0x10, 201),
 PIN_FIELD_BASE(525210x060, 0x10, 261),
 PIN_FIELD_BASE(535310x060, 0x10, 211),
 PIN_FIELD_BASE(545410x060, 0x10, 221),
 PIN_FIELD_BASE(555510x060, 0x10, 231),
 PIN_FIELD_BASE(565610x060, 0x10, 241),
 PIN_FIELD_BASE(575710x060, 0x10, 291),
 PIN_FIELD_BASE(585810x060, 0x10, 271),
 PIN_FIELD_BASE(595910x060, 0x10, 301),
 PIN_FIELD_BASE(606010x060, 0x10, 281),
 PIN_FIELD_BASE(616110x060, 0x10, 81),
 PIN_FIELD_BASE(626210x060, 0x10, 71),
 PIN_FIELD_BASE(636310x060, 0x10, 101),
 PIN_FIELD_BASE(646410x060, 0x10, 91),
 PIN_FIELD_BASE(656510x070, 0x10, 11),
 PIN_FIELD_BASE(666610x060, 0x10, 311),
 PIN_FIELD_BASE(676710x070, 0x10, 01),
 PIN_FIELD_BASE(686810x070, 0x10, 21),
 PIN_FIELD_BASE(696910x060, 0x10, 01),
 PIN_FIELD_BASE(707010x060, 0x10, 61),
 PIN_FIELD_BASE(717110x060, 0x10, 41),
 PIN_FIELD_BASE(727210x060, 0x10, 51),
 PIN_FIELD_BASE(737310x060, 0x10, 11),
 PIN_FIELD_BASE(747410x060, 0x10, 21),
 PIN_FIELD_BASE(757510x060, 0x10, 31),
 PIN_FIELD_BASE(767610x070, 0x10, 111),
 PIN_FIELD_BASE(777730x030, 0x10, 11),
 PIN_FIELD_BASE(787830x030, 0x10, 21),
 PIN_FIELD_BASE(797930x030, 0x10, 91),
 PIN_FIELD_BASE(808030x030, 0x10, 101),
 PIN_FIELD_BASE(818130x030, 0x10, 111),
 PIN_FIELD_BASE(828230x030, 0x10, 121),
 PIN_FIELD_BASE(838330x030, 0x10, 131),
 PIN_FIELD_BASE(848430x030, 0x10, 141),
 PIN_FIELD_BASE(858530x030, 0x10, 151),
 PIN_FIELD_BASE(868630x030, 0x10, 161),
 PIN_FIELD_BASE(878730x030, 0x10, 31),
 PIN_FIELD_BASE(888830x030, 0x10, 41),
 PIN_FIELD_BASE(898930x030, 0x10, 51),
 PIN_FIELD_BASE(909030x030, 0x10, 61),
 PIN_FIELD_BASE(919130x030, 0x10, 71),
 PIN_FIELD_BASE(929230x030, 0x10, 81),
 PIN_FIELD_BASE(939330x030, 0x10, 181),
 PIN_FIELD_BASE(949430x030, 0x10, 191),
 PIN_FIELD_BASE(959530x030, 0x10, 171),
 PIN_FIELD_BASE(969630x030, 0x10, 01),
 PIN_FIELD_BASE(979730x030, 0x10, 201),
 PIN_FIELD_BASE(989830x030, 0x10, 281),
 PIN_FIELD_BASE(999930x030, 0x10, 271),
 PIN_FIELD_BASE(10010030x030, 0x10, 301),
 PIN_FIELD_BASE(10110130x030, 0x10, 291),
 PIN_FIELD_BASE(10210230x040, 0x10, 01),
 PIN_FIELD_BASE(10310330x030, 0x10, 311),
 PIN_FIELD_BASE(10410430x030, 0x10, 251),
 PIN_FIELD_BASE(10510530x030, 0x10, 261),
 PIN_FIELD_BASE(10610630x030, 0x10, 231),
 PIN_FIELD_BASE(10710730x030, 0x10, 241),
 PIN_FIELD_BASE(10810830x030, 0x10, 221),
 PIN_FIELD_BASE(10910930x030, 0x10, 211),
 PIN_FIELD_BASE(11011050x010, 0x10, 11),
 PIN_FIELD_BASE(11111150x010, 0x10, 01),
 PIN_FIELD_BASE(11211250x010, 0x10, 21),
 PIN_FIELD_BASE(11311350x010, 0x10, 31),
 PIN_FIELD_BASE(11411450x010, 0x10, 41),
 PIN_FIELD_BASE(11511550x010, 0x10, 51),
 PIN_FIELD_BASE(11611660x030, 0x10, 91),
 PIN_FIELD_BASE(11711760x030, 0x10, 81),
 PIN_FIELD_BASE(11811860x030, 0x10, 71),
 PIN_FIELD_BASE(11911960x030, 0x10, 61),
 PIN_FIELD_BASE(12012060x030, 0x10, 111),
 PIN_FIELD_BASE(12112160x030, 0x10, 11),
 PIN_FIELD_BASE(12212260x030, 0x10, 01),
 PIN_FIELD_BASE(12312360x030, 0x10, 51),
 PIN_FIELD_BASE(12412460x030, 0x10, 41),
 PIN_FIELD_BASE(12512560x030, 0x10, 31),
 PIN_FIELD_BASE(12612660x030, 0x10, 21),
 PIN_FIELD_BASE(12712760x030, 0x10, 101),
 PIN_FIELD_BASE(12812830x040, 0x10, 31),
 PIN_FIELD_BASE(12912930x040, 0x10, 11),
 PIN_FIELD_BASE(13013030x040, 0x10, 41),
 PIN_FIELD_BASE(13113130x040, 0x10, 21),
 PIN_FIELD_BASE(13213260x030, 0x10, 131),
 PIN_FIELD_BASE(13313360x030, 0x10, 121),
 PIN_FIELD_BASE(13413460x030, 0x10, 151),
 PIN_FIELD_BASE(13513560x030, 0x10, 141),
 PIN_FIELD_BASE(13613610x070, 0x10, 131),
 PIN_FIELD_BASE(13713710x070, 0x10, 121),
 PIN_FIELD_BASE(13813810x070, 0x10, 151),
 PIN_FIELD_BASE(13913910x070, 0x10, 141),
 PIN_FIELD_BASE(14014010x070, 0x10, 171),
 PIN_FIELD_BASE(14114110x070, 0x10, 161),
 PIN_FIELD_BASE(14214210x070, 0x10, 191),
 PIN_FIELD_BASE(14314310x070, 0x10, 181),
};

static const struct mtk_pin_field_calc mt8195_pin_smt_range[] = {
 PIN_FIELD_BASE(0040x0d0, 0x10, 01),
 PIN_FIELD_BASE(1140x0d0, 0x10, 11),
 PIN_FIELD_BASE(2240x0d0, 0x10, 21),
 PIN_FIELD_BASE(3340x0d0, 0x10, 31),
 PIN_FIELD_BASE(4440x0d0, 0x10, 41),
 PIN_FIELD_BASE(5540x0d0, 0x10, 51),
 PINS_FIELD_BASE(6740x0d0, 0x10, 61),
 PIN_FIELD_BASE(8840x0d0, 0x10, 121),
 PIN_FIELD_BASE(9940x0d0, 0x10, 71),
 PIN_FIELD_BASE(101040x0d0, 0x10, 131),
 PIN_FIELD_BASE(111140x0d0, 0x10, 81),
 PIN_FIELD_BASE(121240x0d0, 0x10, 141),
 PIN_FIELD_BASE(131340x0d0, 0x10, 91),
 PIN_FIELD_BASE(141440x0d0, 0x10, 151),
 PIN_FIELD_BASE(151540x0d0, 0x10, 101),
 PIN_FIELD_BASE(161640x0d0, 0x10, 161),
 PIN_FIELD_BASE(171740x0d0, 0x10, 111),
 PIN_FIELD_BASE(181820x090, 0x10, 111),
 PIN_FIELD_BASE(191920x090, 0x10, 101),
 PIN_FIELD_BASE(202020x090, 0x10, 91),
 PIN_FIELD_BASE(212120x090, 0x10, 111),
 PIN_FIELD_BASE(222220x090, 0x10, 01),
 PIN_FIELD_BASE(232320x090, 0x10, 11),
 PIN_FIELD_BASE(242420x090, 0x10, 21),
 PIN_FIELD_BASE(252520x090, 0x10, 41),
 PIN_FIELD_BASE(262620x090, 0x10, 31),
 PIN_FIELD_BASE(272720x090, 0x10, 51),
 PIN_FIELD_BASE(282820x090, 0x10, 61),
 PIN_FIELD_BASE(292920x090, 0x10, 71),
 PIN_FIELD_BASE(303020x090, 0x10, 81),
 PINS_FIELD_BASE(313310x0f0, 0x10, 41),
 PIN_FIELD_BASE(343410x0f0, 0x10, 01),
 PIN_FIELD_BASE(353510x0f0, 0x10, 11),
 PIN_FIELD_BASE(363610x0f0, 0x10, 41),
 PIN_FIELD_BASE(373710x0f0, 0x10, 21),
 PINS_FIELD_BASE(383910x0f0, 0x10, 51),
 PIN_FIELD_BASE(404010x0f0, 0x10, 141),
 PIN_FIELD_BASE(414110x0f0, 0x10, 131),
 PIN_FIELD_BASE(424210x0f0, 0x10, 161),
 PIN_FIELD_BASE(434310x0f0, 0x10, 151),
 PIN_FIELD_BASE(444410x0f0, 0x10, 251),
 PIN_FIELD_BASE(454510x0f0, 0x10, 261),
 PINS_FIELD_BASE(464710x0f0, 0x10, 51),
 PINS_FIELD_BASE(485110x0f0, 0x10, 61),
 PINS_FIELD_BASE(525510x0f0, 0x10, 71),
 PINS_FIELD_BASE(565910x0f0, 0x10, 81),
 PINS_FIELD_BASE(606310x0f0, 0x10, 91),
 PIN_FIELD_BASE(646410x0f0, 0x10, 101),
 PINS_FIELD_BASE(656810x0f0, 0x10, 31),
 PINS_FIELD_BASE(697110x0f0, 0x10, 101),
 PINS_FIELD_BASE(727510x0f0, 0x10, 111),
 PIN_FIELD_BASE(767610x0f0, 0x10, 121),
 PIN_FIELD_BASE(777730x0e0, 0x10, 01),
 PIN_FIELD_BASE(787830x0e0, 0x10, 11),
 PIN_FIELD_BASE(797930x0e0, 0x10, 61),
 PIN_FIELD_BASE(808030x0e0, 0x10, 71),
 PIN_FIELD_BASE(818130x0e0, 0x10, 81),
 PIN_FIELD_BASE(828230x0e0, 0x10, 91),
 PIN_FIELD_BASE(838330x0e0, 0x10, 101),
 PIN_FIELD_BASE(848430x0e0, 0x10, 111),
 PINS_FIELD_BASE(858830x0e0, 0x10, 141),
 PIN_FIELD_BASE(898930x0e0, 0x10, 21),
 PIN_FIELD_BASE(909030x0e0, 0x10, 31),
 PIN_FIELD_BASE(919130x0e0, 0x10, 41),
 PIN_FIELD_BASE(929230x0e0, 0x10, 51),
 PIN_FIELD_BASE(939330x0e0, 0x10, 121),
 PIN_FIELD_BASE(949430x0e0, 0x10, 131),
 PINS_FIELD_BASE(959830x0e0, 0x10, 151),
 PINS_FIELD_BASE(9910230x0e0, 0x10, 161),
 PINS_FIELD_BASE(10310430x0e0, 0x10, 171),
 PIN_FIELD_BASE(10510530x0e0, 0x10, 181),
 PINS_FIELD_BASE(10610730x0e0, 0x10, 171),
 PINS_FIELD_BASE(10810930x0e0, 0x10, 181),
 PIN_FIELD_BASE(11011050x070, 0x10, 11),
 PIN_FIELD_BASE(11111150x070, 0x10, 01),
 PIN_FIELD_BASE(11211250x070, 0x10, 21),
 PIN_FIELD_BASE(11311350x070, 0x10, 31),
 PIN_FIELD_BASE(11411450x070, 0x10, 41),
 PIN_FIELD_BASE(11511550x070, 0x10, 51),
 PIN_FIELD_BASE(11611660x0c0, 0x10, 91),
 PIN_FIELD_BASE(11711760x0c0, 0x10, 81),
 PIN_FIELD_BASE(11811860x0c0, 0x10, 71),
 PIN_FIELD_BASE(11911960x0c0, 0x10, 61),
 PIN_FIELD_BASE(12012060x0c0, 0x10, 111),
 PIN_FIELD_BASE(12112160x0c0, 0x10, 11),
 PIN_FIELD_BASE(12212260x0c0, 0x10, 01),
 PIN_FIELD_BASE(12312360x0c0, 0x10, 51),
 PIN_FIELD_BASE(12412460x0c0, 0x10, 41),
 PIN_FIELD_BASE(12512560x0c0, 0x10, 31),
 PIN_FIELD_BASE(12612660x0c0, 0x10, 21),
 PIN_FIELD_BASE(12712760x0c0, 0x10, 101),
 PIN_FIELD_BASE(12812830x0e0, 0x10, 181),
 PINS_FIELD_BASE(12913130x0e0, 0x10, 191),
 PIN_FIELD_BASE(13213260x0c0, 0x10, 131),
 PIN_FIELD_BASE(13313360x0c0, 0x10, 121),
 PIN_FIELD_BASE(13413460x0c0, 0x10, 151),
 PIN_FIELD_BASE(13513560x0c0, 0x10, 141),
 PIN_FIELD_BASE(13613610x0f0, 0x10, 181),
 PIN_FIELD_BASE(13713710x0f0, 0x10, 171),
 PIN_FIELD_BASE(13813810x0f0, 0x10, 201),
 PIN_FIELD_BASE(13913910x0f0, 0x10, 191),
 PIN_FIELD_BASE(14014010x0f0, 0x10, 221),
 PIN_FIELD_BASE(14114110x0f0, 0x10, 211),
 PIN_FIELD_BASE(14214210x0f0, 0x10, 241),
 PIN_FIELD_BASE(14314310x0f0, 0x10, 231),
};

static const struct mtk_pin_field_calc mt8195_pin_pu_range[] = {
 PIN_FIELD_BASE(6640x0070, 0x10, 01),
 PIN_FIELD_BASE(7740x0070, 0x10, 11),
 PIN_FIELD_BASE(8840x0070, 0x10, 71),
 PIN_FIELD_BASE(9940x0070, 0x10, 21),
 PIN_FIELD_BASE(101040x0070, 0x10, 81),
 PIN_FIELD_BASE(111140x0070, 0x10, 31),
 PIN_FIELD_BASE(121240x0070, 0x10, 91),
 PIN_FIELD_BASE(131340x0070, 0x10, 41),
 PIN_FIELD_BASE(141440x0070, 0x10, 101),
 PIN_FIELD_BASE(151540x0070, 0x10, 51),
 PIN_FIELD_BASE(161640x0070, 0x10, 111),
 PIN_FIELD_BASE(171740x0070, 0x10, 61),
 PIN_FIELD_BASE(181820x0060, 0x10, 51),
 PIN_FIELD_BASE(191920x0060, 0x10, 121),
 PIN_FIELD_BASE(202020x0060, 0x10, 111),
 PIN_FIELD_BASE(212120x0060, 0x10, 101),
 PIN_FIELD_BASE(222220x0060, 0x10, 01),
 PIN_FIELD_BASE(232320x0060, 0x10, 11),
 PIN_FIELD_BASE(242420x0060, 0x10, 21),
 PIN_FIELD_BASE(252520x0060, 0x10, 41),
 PIN_FIELD_BASE(262620x0060, 0x10, 31),
 PIN_FIELD_BASE(272720x0060, 0x10, 61),
 PIN_FIELD_BASE(282820x0060, 0x10, 71),
 PIN_FIELD_BASE(292920x0060, 0x10, 81),
 PIN_FIELD_BASE(303020x0060, 0x10, 91),
 PIN_FIELD_BASE(313110x00a0, 0x10, 131),
 PIN_FIELD_BASE(323210x00a0, 0x10, 121),
 PIN_FIELD_BASE(333310x00a0, 0x10, 111),
 PIN_FIELD_BASE(343410x00a0, 0x10, 141),
 PIN_FIELD_BASE(353510x00a0, 0x10, 151),
 PIN_FIELD_BASE(363610x00b0, 0x10, 31),
 PIN_FIELD_BASE(373710x00b0, 0x10, 61),
 PIN_FIELD_BASE(383810x00b0, 0x10, 41),
 PIN_FIELD_BASE(393910x00b0, 0x10, 51),
 PIN_FIELD_BASE(404010x00b0, 0x10, 81),
 PIN_FIELD_BASE(414110x00b0, 0x10, 71),
 PIN_FIELD_BASE(424210x00b0, 0x10, 101),
 PIN_FIELD_BASE(434310x00b0, 0x10, 91),
 PIN_FIELD_BASE(444410x00b0, 0x10, 211),
 PIN_FIELD_BASE(454510x00b0, 0x10, 221),
 PIN_FIELD_BASE(464610x00a0, 0x10, 181),
 PIN_FIELD_BASE(474710x00a0, 0x10, 161),
 PIN_FIELD_BASE(484810x00a0, 0x10, 191),
 PIN_FIELD_BASE(494910x00a0, 0x10, 171),
 PIN_FIELD_BASE(505010x00a0, 0x10, 251),
 PIN_FIELD_BASE(515110x00a0, 0x10, 201),
 PIN_FIELD_BASE(525210x00a0, 0x10, 261),
 PIN_FIELD_BASE(535310x00a0, 0x10, 211),
 PIN_FIELD_BASE(545410x00a0, 0x10, 221),
 PIN_FIELD_BASE(555510x00a0, 0x10, 231),
 PIN_FIELD_BASE(565610x00a0, 0x10, 241),
 PIN_FIELD_BASE(575710x00a0, 0x10, 291),
 PIN_FIELD_BASE(585810x00a0, 0x10, 271),
 PIN_FIELD_BASE(595910x00a0, 0x10, 301),
 PIN_FIELD_BASE(606010x00a0, 0x10, 281),
 PIN_FIELD_BASE(616110x00a0, 0x10, 81),
 PIN_FIELD_BASE(626210x00a0, 0x10, 71),
 PIN_FIELD_BASE(636310x00a0, 0x10, 101),
 PIN_FIELD_BASE(646410x00a0, 0x10, 91),
 PIN_FIELD_BASE(656510x00b0, 0x10, 11),
 PIN_FIELD_BASE(666610x00a0, 0x10, 311),
 PIN_FIELD_BASE(676710x00b0, 0x10, 01),
 PIN_FIELD_BASE(686810x00b0, 0x10, 21),
 PIN_FIELD_BASE(696910x00a0, 0x10, 01),
 PIN_FIELD_BASE(707010x00a0, 0x10, 61),
 PIN_FIELD_BASE(717110x00a0, 0x10, 41),
 PIN_FIELD_BASE(727210x00a0, 0x10, 51),
 PIN_FIELD_BASE(737310x00a0, 0x10, 11),
 PIN_FIELD_BASE(747410x00a0, 0x10, 21),
 PIN_FIELD_BASE(757510x00a0, 0x10, 31),
 PIN_FIELD_BASE(767610x00b0, 0x10, 111),
 PIN_FIELD_BASE(979730x0070, 0x10, 01),
 PIN_FIELD_BASE(989830x0070, 0x10, 41),
 PIN_FIELD_BASE(999930x0070, 0x10, 31),
 PIN_FIELD_BASE(10010030x0070, 0x10, 61),
 PIN_FIELD_BASE(10110130x0070, 0x10, 51),
 PIN_FIELD_BASE(10210230x0070, 0x10, 81),
 PIN_FIELD_BASE(10310330x0070, 0x10, 71),
 PIN_FIELD_BASE(10810830x0070, 0x10, 21),
 PIN_FIELD_BASE(10910930x0070, 0x10, 11),
 PIN_FIELD_BASE(12812830x0070, 0x10, 111),
 PIN_FIELD_BASE(12912930x0070, 0x10, 91),
 PIN_FIELD_BASE(13013030x0070, 0x10, 121),
 PIN_FIELD_BASE(13113130x0070, 0x10, 101),
 PIN_FIELD_BASE(13213260x0060, 0x10, 11),
 PIN_FIELD_BASE(13313360x0060, 0x10, 01),
 PIN_FIELD_BASE(13413460x0060, 0x10, 31),
 PIN_FIELD_BASE(13513560x0060, 0x10, 21),
 PIN_FIELD_BASE(13613610x00b0, 0x10, 141),
 PIN_FIELD_BASE(13713710x00b0, 0x10, 131),
 PIN_FIELD_BASE(13813810x00b0, 0x10, 161),
 PIN_FIELD_BASE(13913910x00b0, 0x10, 151),
 PIN_FIELD_BASE(14014010x00b0, 0x10, 181),
 PIN_FIELD_BASE(14114110x00b0, 0x10, 171),
 PIN_FIELD_BASE(14214210x00b0, 0x10, 201),
 PIN_FIELD_BASE(14314310x00b0, 0x10, 191),
};

static const struct mtk_pin_field_calc mt8195_pin_pd_range[] = {
 PIN_FIELD_BASE(6640x0050, 0x10, 01),
 PIN_FIELD_BASE(7740x0050, 0x10, 11),
 PIN_FIELD_BASE(8840x0050, 0x10, 71),
 PIN_FIELD_BASE(9940x0050, 0x10, 21),
 PIN_FIELD_BASE(101040x0050, 0x10, 81),
 PIN_FIELD_BASE(111140x0050, 0x10, 31),
 PIN_FIELD_BASE(121240x0050, 0x10, 91),
 PIN_FIELD_BASE(131340x0050, 0x10, 41),
 PIN_FIELD_BASE(141440x0050, 0x10, 101),
 PIN_FIELD_BASE(151540x0050, 0x10, 51),
 PIN_FIELD_BASE(161640x0050, 0x10, 111),
 PIN_FIELD_BASE(171740x0050, 0x10, 61),
 PIN_FIELD_BASE(181820x0050, 0x10, 51),
 PIN_FIELD_BASE(191920x0050, 0x10, 121),
 PIN_FIELD_BASE(202020x0050, 0x10, 111),
 PIN_FIELD_BASE(212120x0050, 0x10, 101),
 PIN_FIELD_BASE(222220x0050, 0x10, 01),
 PIN_FIELD_BASE(232320x0050, 0x10, 11),
 PIN_FIELD_BASE(242420x0050, 0x10, 21),
 PIN_FIELD_BASE(252520x0050, 0x10, 41),
 PIN_FIELD_BASE(262620x0050, 0x10, 31),
 PIN_FIELD_BASE(272720x0050, 0x10, 61),
 PIN_FIELD_BASE(282820x0050, 0x10, 71),
 PIN_FIELD_BASE(292920x0050, 0x10, 81),
 PIN_FIELD_BASE(303020x0050, 0x10, 91),
 PIN_FIELD_BASE(313110x0080, 0x10, 131),
 PIN_FIELD_BASE(323210x0080, 0x10, 121),
 PIN_FIELD_BASE(333310x0080, 0x10, 111),
 PIN_FIELD_BASE(343410x0080, 0x10, 141),
 PIN_FIELD_BASE(353510x0080, 0x10, 151),
 PIN_FIELD_BASE(363610x0090, 0x10, 31),
 PIN_FIELD_BASE(373710x0090, 0x10, 61),
 PIN_FIELD_BASE(383810x0090, 0x10, 41),
 PIN_FIELD_BASE(393910x0090, 0x10, 51),
 PIN_FIELD_BASE(404010x0090, 0x10, 81),
 PIN_FIELD_BASE(414110x0090, 0x10, 71),
 PIN_FIELD_BASE(424210x0090, 0x10, 101),
 PIN_FIELD_BASE(434310x0090, 0x10, 91),
 PIN_FIELD_BASE(444410x0090, 0x10, 211),
 PIN_FIELD_BASE(454510x0090, 0x10, 221),
 PIN_FIELD_BASE(464610x0080, 0x10, 181),
 PIN_FIELD_BASE(474710x0080, 0x10, 161),
 PIN_FIELD_BASE(484810x0080, 0x10, 191),
 PIN_FIELD_BASE(494910x0080, 0x10, 171),
 PIN_FIELD_BASE(505010x0080, 0x10, 251),
 PIN_FIELD_BASE(515110x0080, 0x10, 201),
 PIN_FIELD_BASE(525210x0080, 0x10, 261),
 PIN_FIELD_BASE(535310x0080, 0x10, 211),
 PIN_FIELD_BASE(545410x0080, 0x10, 221),
 PIN_FIELD_BASE(555510x0080, 0x10, 231),
 PIN_FIELD_BASE(565610x0080, 0x10, 241),
 PIN_FIELD_BASE(575710x0080, 0x10, 291),
 PIN_FIELD_BASE(585810x0080, 0x10, 271),
 PIN_FIELD_BASE(595910x0080, 0x10, 301),
 PIN_FIELD_BASE(606010x0080, 0x10, 281),
 PIN_FIELD_BASE(616110x0080, 0x10, 81),
 PIN_FIELD_BASE(626210x0080, 0x10, 71),
 PIN_FIELD_BASE(636310x0080, 0x10, 101),
 PIN_FIELD_BASE(646410x0080, 0x10, 91),
 PIN_FIELD_BASE(656510x0090, 0x10, 11),
 PIN_FIELD_BASE(666610x0080, 0x10, 311),
 PIN_FIELD_BASE(676710x0090, 0x10, 01),
 PIN_FIELD_BASE(686810x0090, 0x10, 21),
 PIN_FIELD_BASE(696910x0080, 0x10, 01),
 PIN_FIELD_BASE(707010x0080, 0x10, 61),
 PIN_FIELD_BASE(717110x0080, 0x10, 41),
 PIN_FIELD_BASE(727210x0080, 0x10, 51),
 PIN_FIELD_BASE(737310x0080, 0x10, 11),
 PIN_FIELD_BASE(747410x0080, 0x10, 21),
 PIN_FIELD_BASE(757510x0080, 0x10, 31),
 PIN_FIELD_BASE(767610x0090, 0x10, 111),
 PIN_FIELD_BASE(979730x0050, 0x10, 01),
 PIN_FIELD_BASE(989830x0050, 0x10, 41),
 PIN_FIELD_BASE(999930x0050, 0x10, 31),
 PIN_FIELD_BASE(10010030x0050, 0x10, 61),
 PIN_FIELD_BASE(10110130x0050, 0x10, 51),
 PIN_FIELD_BASE(10210230x0050, 0x10, 81),
 PIN_FIELD_BASE(10310330x0050, 0x10, 71),
 PIN_FIELD_BASE(10810830x0050, 0x10, 21),
 PIN_FIELD_BASE(10910930x0050, 0x10, 11),
 PIN_FIELD_BASE(12812830x0050, 0x10, 111),
 PIN_FIELD_BASE(12912930x0050, 0x10, 91),
 PIN_FIELD_BASE(13013030x0050, 0x10, 121),
 PIN_FIELD_BASE(13113130x0050, 0x10, 101),
 PIN_FIELD_BASE(13213260x0040, 0x10, 11),
 PIN_FIELD_BASE(13313360x0040, 0x10, 01),
 PIN_FIELD_BASE(13413460x0040, 0x10, 31),
 PIN_FIELD_BASE(13513560x0040, 0x10, 21),
 PIN_FIELD_BASE(13613610x0090, 0x10, 141),
 PIN_FIELD_BASE(13713710x0090, 0x10, 131),
 PIN_FIELD_BASE(13813810x0090, 0x10, 161),
 PIN_FIELD_BASE(13913910x0090, 0x10, 151),
 PIN_FIELD_BASE(14014010x0090, 0x10, 181),
 PIN_FIELD_BASE(14114110x0090, 0x10, 171),
 PIN_FIELD_BASE(14214210x0090, 0x10, 201),
 PIN_FIELD_BASE(14314310x0090, 0x10, 191),
};

static const struct mtk_pin_field_calc mt8195_pin_pupd_range[] = {
 PIN_FIELD_BASE(0040x0060, 0x10, 01),
 PIN_FIELD_BASE(1140x0060, 0x10, 11),
 PIN_FIELD_BASE(2240x0060, 0x10, 21),
 PIN_FIELD_BASE(3340x0060, 0x10, 31),
 PIN_FIELD_BASE(4440x0060, 0x10, 41),
 PIN_FIELD_BASE(5540x0060, 0x10, 51),
 PIN_FIELD_BASE(777730x0060, 0x10, 11),
 PIN_FIELD_BASE(787830x0060, 0x10, 21),
 PIN_FIELD_BASE(797930x0060, 0x10, 91),
 PIN_FIELD_BASE(808030x0060, 0x10, 101),
 PIN_FIELD_BASE(818130x0060, 0x10, 111),
 PIN_FIELD_BASE(828230x0060, 0x10, 121),
 PIN_FIELD_BASE(838330x0060, 0x10, 131),
 PIN_FIELD_BASE(848430x0060, 0x10, 141),
 PIN_FIELD_BASE(858530x0060, 0x10, 151),
 PIN_FIELD_BASE(868630x0060, 0x10, 161),
 PIN_FIELD_BASE(878730x0060, 0x10, 31),
 PIN_FIELD_BASE(888830x0060, 0x10, 41),
 PIN_FIELD_BASE(898930x0060, 0x10, 51),
 PIN_FIELD_BASE(909030x0060, 0x10, 61),
 PIN_FIELD_BASE(919130x0060, 0x10, 71),
 PIN_FIELD_BASE(929230x0060, 0x10, 81),
 PIN_FIELD_BASE(939330x0060, 0x10, 181),
 PIN_FIELD_BASE(949430x0060, 0x10, 191),
 PIN_FIELD_BASE(959530x0060, 0x10, 171),
 PIN_FIELD_BASE(969630x0060, 0x10, 01),
 PIN_FIELD_BASE(10410430x0060, 0x10, 221),
 PIN_FIELD_BASE(10510530x0060, 0x10, 231),
 PIN_FIELD_BASE(10610630x0060, 0x10, 201),
 PIN_FIELD_BASE(10710730x0060, 0x10, 211),
 PIN_FIELD_BASE(11011050x0020, 0x10, 11),
 PIN_FIELD_BASE(11111150x0020, 0x10, 01),
 PIN_FIELD_BASE(11211250x0020, 0x10, 21),
 PIN_FIELD_BASE(11311350x0020, 0x10, 31),
 PIN_FIELD_BASE(11411450x0020, 0x10, 41),
 PIN_FIELD_BASE(11511550x0020, 0x10, 51),
 PIN_FIELD_BASE(11611660x0050, 0x10, 91),
 PIN_FIELD_BASE(11711760x0050, 0x10, 81),
 PIN_FIELD_BASE(11811860x0050, 0x10, 71),
 PIN_FIELD_BASE(11911960x0050, 0x10, 61),
 PIN_FIELD_BASE(12012060x0050, 0x10, 111),
 PIN_FIELD_BASE(12112160x0050, 0x10, 11),
 PIN_FIELD_BASE(12212260x0050, 0x10, 01),
 PIN_FIELD_BASE(12312360x0050, 0x10, 51),
 PIN_FIELD_BASE(12412460x0050, 0x10, 41),
 PIN_FIELD_BASE(12512560x0050, 0x10, 31),
 PIN_FIELD_BASE(12612660x0050, 0x10, 21),
 PIN_FIELD_BASE(12712760x0050, 0x10, 101),
};

static const struct mtk_pin_field_calc mt8195_pin_r0_range[] = {
 PIN_FIELD_BASE(0040x0080, 0x10, 01),
 PIN_FIELD_BASE(1140x0080, 0x10, 11),
 PIN_FIELD_BASE(2240x0080, 0x10, 21),
 PIN_FIELD_BASE(3340x0080, 0x10, 31),
 PIN_FIELD_BASE(4440x0080, 0x10, 41),
 PIN_FIELD_BASE(5540x0080, 0x10, 51),
 PIN_FIELD_BASE(777730x0080, 0x10, 11),
 PIN_FIELD_BASE(787830x0080, 0x10, 21),
 PIN_FIELD_BASE(797930x0080, 0x10, 91),
 PIN_FIELD_BASE(808030x0080, 0x10, 101),
 PIN_FIELD_BASE(818130x0080, 0x10, 111),
 PIN_FIELD_BASE(828230x0080, 0x10, 121),
 PIN_FIELD_BASE(838330x0080, 0x10, 131),
 PIN_FIELD_BASE(848430x0080, 0x10, 141),
 PIN_FIELD_BASE(858530x0080, 0x10, 151),
 PIN_FIELD_BASE(868630x0080, 0x10, 161),
 PIN_FIELD_BASE(878730x0080, 0x10, 31),
 PIN_FIELD_BASE(888830x0080, 0x10, 41),
 PIN_FIELD_BASE(898930x0080, 0x10, 51),
 PIN_FIELD_BASE(909030x0080, 0x10, 61),
 PIN_FIELD_BASE(919130x0080, 0x10, 71),
 PIN_FIELD_BASE(929230x0080, 0x10, 81),
 PIN_FIELD_BASE(939330x0080, 0x10, 181),
 PIN_FIELD_BASE(949430x0080, 0x10, 191),
 PIN_FIELD_BASE(959530x0080, 0x10, 171),
 PIN_FIELD_BASE(969630x0080, 0x10, 01),
 PIN_FIELD_BASE(10410430x0080, 0x10, 221),
 PIN_FIELD_BASE(10510530x0080, 0x10, 231),
 PIN_FIELD_BASE(10610630x0080, 0x10, 201),
 PIN_FIELD_BASE(10710730x0080, 0x10, 211),
 PIN_FIELD_BASE(11011050x0030, 0x10, 11),
 PIN_FIELD_BASE(11111150x0030, 0x10, 01),
 PIN_FIELD_BASE(11211250x0030, 0x10, 21),
 PIN_FIELD_BASE(11311350x0030, 0x10, 31),
 PIN_FIELD_BASE(11411450x0030, 0x10, 41),
 PIN_FIELD_BASE(11511550x0030, 0x10, 51),
 PIN_FIELD_BASE(11611660x0070, 0x10, 91),
 PIN_FIELD_BASE(11711760x0070, 0x10, 81),
 PIN_FIELD_BASE(11811860x0070, 0x10, 71),
 PIN_FIELD_BASE(11911960x0070, 0x10, 61),
 PIN_FIELD_BASE(12012060x0070, 0x10, 111),
 PIN_FIELD_BASE(12112160x0070, 0x10, 11),
 PIN_FIELD_BASE(12212260x0070, 0x10, 01),
 PIN_FIELD_BASE(12312360x0070, 0x10, 51),
 PIN_FIELD_BASE(12412460x0070, 0x10, 41),
 PIN_FIELD_BASE(12512560x0070, 0x10, 31),
 PIN_FIELD_BASE(12612660x0070, 0x10, 21),
 PIN_FIELD_BASE(12712760x0070, 0x10, 101),
};

static const struct mtk_pin_field_calc mt8195_pin_r1_range[] = {
 PIN_FIELD_BASE(0040x0090, 0x10, 01),
 PIN_FIELD_BASE(1140x0090, 0x10, 11),
 PIN_FIELD_BASE(2240x0090, 0x10, 21),
 PIN_FIELD_BASE(3340x0090, 0x10, 31),
 PIN_FIELD_BASE(4440x0090, 0x10, 41),
 PIN_FIELD_BASE(5540x0090, 0x10, 51),
 PIN_FIELD_BASE(777730x0090, 0x10, 11),
 PIN_FIELD_BASE(787830x0090, 0x10, 21),
 PIN_FIELD_BASE(797930x0090, 0x10, 91),
 PIN_FIELD_BASE(808030x0090, 0x10, 101),
 PIN_FIELD_BASE(818130x0090, 0x10, 111),
 PIN_FIELD_BASE(828230x0090, 0x10, 121),
 PIN_FIELD_BASE(838330x0090, 0x10, 131),
 PIN_FIELD_BASE(848430x0090, 0x10, 141),
 PIN_FIELD_BASE(858530x0090, 0x10, 151),
 PIN_FIELD_BASE(868630x0090, 0x10, 161),
 PIN_FIELD_BASE(878730x0090, 0x10, 31),
 PIN_FIELD_BASE(888830x0090, 0x10, 41),
 PIN_FIELD_BASE(898930x0090, 0x10, 51),
 PIN_FIELD_BASE(909030x0090, 0x10, 61),
 PIN_FIELD_BASE(919130x0090, 0x10, 71),
 PIN_FIELD_BASE(929230x0090, 0x10, 81),
 PIN_FIELD_BASE(939330x0090, 0x10, 181),
 PIN_FIELD_BASE(949430x0090, 0x10, 191),
 PIN_FIELD_BASE(959530x0090, 0x10, 171),
 PIN_FIELD_BASE(969630x0090, 0x10, 01),
 PIN_FIELD_BASE(10410430x0090, 0x10, 221),
 PIN_FIELD_BASE(10510530x0090, 0x10, 231),
 PIN_FIELD_BASE(10610630x0090, 0x10, 201),
 PIN_FIELD_BASE(10710730x0090, 0x10, 211),
 PIN_FIELD_BASE(11011050x0040, 0x10, 11),
 PIN_FIELD_BASE(11111150x0040, 0x10, 01),
 PIN_FIELD_BASE(11211250x0040, 0x10, 21),
 PIN_FIELD_BASE(11311350x0040, 0x10, 31),
 PIN_FIELD_BASE(11411450x0040, 0x10, 41),
 PIN_FIELD_BASE(11511550x0040, 0x10, 51),
 PIN_FIELD_BASE(11611660x0080, 0x10, 91),
 PIN_FIELD_BASE(11711760x0080, 0x10, 81),
 PIN_FIELD_BASE(11811860x0080, 0x10, 71),
 PIN_FIELD_BASE(11911960x0080, 0x10, 61),
 PIN_FIELD_BASE(12012060x0080, 0x10, 111),
 PIN_FIELD_BASE(12112160x0080, 0x10, 11),
 PIN_FIELD_BASE(12212260x0080, 0x10, 01),
 PIN_FIELD_BASE(12312360x0080, 0x10, 51),
 PIN_FIELD_BASE(12412460x0080, 0x10, 41),
 PIN_FIELD_BASE(12512560x0080, 0x10, 31),
 PIN_FIELD_BASE(12612660x0080, 0x10, 21),
 PIN_FIELD_BASE(12712760x0080, 0x10, 101),
};

static const struct mtk_pin_field_calc mt8195_pin_drv_range[] = {
 PIN_FIELD_BASE(0040x000, 0x10, 03),
 PIN_FIELD_BASE(1140x000, 0x10, 33),
 PIN_FIELD_BASE(2240x000, 0x10, 63),
 PIN_FIELD_BASE(3340x000, 0x10, 93),
 PIN_FIELD_BASE(4440x000, 0x10, 123),
 PIN_FIELD_BASE(5540x000, 0x10, 153),
 PINS_FIELD_BASE(6740x000, 0x10, 183),
 PIN_FIELD_BASE(8840x010, 0x10, 63),
 PIN_FIELD_BASE(9940x000, 0x10, 213),
 PIN_FIELD_BASE(101040x010, 0x10, 93),
 PIN_FIELD_BASE(111140x000, 0x10, 243),
 PIN_FIELD_BASE(121240x010, 0x10, 123),
 PIN_FIELD_BASE(131340x000, 0x10, 273),
 PIN_FIELD_BASE(141440x010, 0x10, 153),
 PIN_FIELD_BASE(151540x010, 0x10, 03),
 PIN_FIELD_BASE(161640x010, 0x10, 183),
 PIN_FIELD_BASE(171740x010, 0x10, 33),
 PIN_FIELD_BASE(181820x010, 0x10, 63),
 PIN_FIELD_BASE(191920x010, 0x10, 33),
 PIN_FIELD_BASE(202020x010, 0x10, 03),
 PIN_FIELD_BASE(212120x000, 0x10, 273),
 PIN_FIELD_BASE(222220x000, 0x10, 03),
 PIN_FIELD_BASE(232320x000, 0x10, 33),
 PIN_FIELD_BASE(242420x000, 0x10, 63),
 PIN_FIELD_BASE(252520x000, 0x10, 123),
 PIN_FIELD_BASE(262620x000, 0x10, 93),
 PIN_FIELD_BASE(272720x000, 0x10, 153),
 PIN_FIELD_BASE(282820x000, 0x10, 183),
 PIN_FIELD_BASE(292920x000, 0x10, 213),
 PIN_FIELD_BASE(303020x000, 0x10, 243),
 PINS_FIELD_BASE(313310x010, 0x10, 03),
 PIN_FIELD_BASE(343410x000, 0x10, 213),
 PIN_FIELD_BASE(353510x000, 0x10, 243),
 PIN_FIELD_BASE(363610x010, 0x10, 03),
 PIN_FIELD_BASE(373710x010, 0x10, 213),
 PINS_FIELD_BASE(383910x010, 0x10, 33),
 PIN_FIELD_BASE(404010x010, 0x10, 273),
 PIN_FIELD_BASE(414110x010, 0x10, 243),
 PIN_FIELD_BASE(424210x020, 0x10, 33),
 PIN_FIELD_BASE(434310x020, 0x10, 03),
 PIN_FIELD_BASE(444410x030, 0x10, 03),
 PIN_FIELD_BASE(454510x030, 0x10, 33),
 PINS_FIELD_BASE(464710x010, 0x10, 33),
 PINS_FIELD_BASE(485110x010, 0x10, 63),
 PINS_FIELD_BASE(525510x010, 0x10, 93),
 PINS_FIELD_BASE(565910x010, 0x10, 123),
 PINS_FIELD_BASE(606310x010, 0x10, 153),
 PIN_FIELD_BASE(646410x010, 0x10, 183),
 PINS_FIELD_BASE(656810x000, 0x10, 273),
 PIN_FIELD_BASE(696910x000, 0x10, 03),
 PIN_FIELD_BASE(707010x000, 0x10, 183),
 PIN_FIELD_BASE(717110x000, 0x10, 123),
 PIN_FIELD_BASE(727210x000, 0x10, 153),
 PIN_FIELD_BASE(737310x000, 0x10, 33),
 PIN_FIELD_BASE(747410x000, 0x10, 63),
 PIN_FIELD_BASE(757510x000, 0x10, 93),
 PIN_FIELD_BASE(767610x010, 0x10, 183),
 PIN_FIELD_BASE(777730x000, 0x10, 03),
 PIN_FIELD_BASE(787830x000, 0x10, 153),
 PIN_FIELD_BASE(797930x000, 0x10, 183),
 PIN_FIELD_BASE(808030x000, 0x10, 213),
 PIN_FIELD_BASE(818130x000, 0x10, 243),
 PIN_FIELD_BASE(828230x000, 0x10, 273),
 PIN_FIELD_BASE(838330x010, 0x10, 03),
 PIN_FIELD_BASE(848430x010, 0x10, 33),
 PINS_FIELD_BASE(858830x010, 0x10, 153),
 PIN_FIELD_BASE(898930x000, 0x10, 33),
 PIN_FIELD_BASE(909030x000, 0x10, 63),
 PIN_FIELD_BASE(919130x000, 0x10, 93),
 PIN_FIELD_BASE(929230x000, 0x10, 123),
 PIN_FIELD_BASE(939330x010, 0x10, 63),
 PIN_FIELD_BASE(949430x010, 0x10, 93),
 PINS_FIELD_BASE(959830x010, 0x10, 183),
 PINS_FIELD_BASE(9910230x010, 0x10, 213),
 PINS_FIELD_BASE(10310430x010, 0x10, 243),
 PIN_FIELD_BASE(10510530x010, 0x10, 273),
 PINS_FIELD_BASE(10610730x010, 0x10, 243),
 PINS_FIELD_BASE(10810930x010, 0x10, 273),
 PIN_FIELD_BASE(11011050x000, 0x10, 33),
 PIN_FIELD_BASE(11111150x000, 0x10, 03),
 PIN_FIELD_BASE(11211250x000, 0x10, 63),
 PIN_FIELD_BASE(11311350x000, 0x10, 93),
 PIN_FIELD_BASE(11411450x000, 0x10, 123),
 PIN_FIELD_BASE(11511550x000, 0x10, 153),
 PIN_FIELD_BASE(11611660x000, 0x10, 273),
 PIN_FIELD_BASE(11711760x000, 0x10, 243),
 PIN_FIELD_BASE(11811860x000, 0x10, 213),
 PIN_FIELD_BASE(11911960x000, 0x10, 183),
 PIN_FIELD_BASE(12012060x010, 0x10, 33),
 PIN_FIELD_BASE(12112160x000, 0x10, 33),
 PIN_FIELD_BASE(12212260x000, 0x10, 03),
 PIN_FIELD_BASE(12312360x000, 0x10, 153),
 PIN_FIELD_BASE(12412460x000, 0x10, 123),
 PIN_FIELD_BASE(12512560x000, 0x10, 93),
 PIN_FIELD_BASE(12612660x000, 0x10, 63),
 PIN_FIELD_BASE(12712760x010, 0x10, 03),
 PIN_FIELD_BASE(12812830x010, 0x10, 273),
 PINS_FIELD_BASE(12913030x020, 0x10, 03),
 PINS_FIELD_BASE(13113130x010, 0x10, 123),
 PIN_FIELD_BASE(13213260x010, 0x10, 93),
 PIN_FIELD_BASE(13313360x010, 0x10, 63),
 PIN_FIELD_BASE(13413460x010, 0x10, 153),
 PIN_FIELD_BASE(13513560x010, 0x10, 123),
 PIN_FIELD_BASE(13613610x020, 0x10, 93),
 PIN_FIELD_BASE(13713710x020, 0x10, 63),
 PIN_FIELD_BASE(13813810x020, 0x10, 153),
 PIN_FIELD_BASE(13913910x020, 0x10, 123),
 PIN_FIELD_BASE(14014010x020, 0x10, 213),
 PIN_FIELD_BASE(14114110x020, 0x10, 183),
 PIN_FIELD_BASE(14214210x020, 0x10, 273),
 PIN_FIELD_BASE(14314310x020, 0x10, 243),
};

static const struct mtk_pin_field_calc mt8195_pin_drv_adv_range[] = {
 PIN_FIELD_BASE(8840x020, 0x10, 153),
 PIN_FIELD_BASE(9940x020, 0x10, 03),
 PIN_FIELD_BASE(101040x020, 0x10, 183),
 PIN_FIELD_BASE(111140x020, 0x10, 33),
 PIN_FIELD_BASE(121240x020, 0x10, 213),
 PIN_FIELD_BASE(131340x020, 0x10, 63),
 PIN_FIELD_BASE(141440x020, 0x10, 243),
 PIN_FIELD_BASE(151540x020, 0x10, 93),
 PIN_FIELD_BASE(161640x020, 0x10, 273),
 PIN_FIELD_BASE(171740x020, 0x10, 123),
 PIN_FIELD_BASE(292920x020, 0x10, 03),
 PIN_FIELD_BASE(303020x020, 0x10, 33),
 PIN_FIELD_BASE(343410x040, 0x10, 03),
 PIN_FIELD_BASE(353510x040, 0x10, 33),
 PIN_FIELD_BASE(444410x040, 0x10, 63),
 PIN_FIELD_BASE(454510x040, 0x10, 93),
};

static const struct mtk_pin_field_calc mt8195_pin_rsel_range[] = {
 PIN_FIELD_BASE(8840x0c0, 0x10, 153),
 PIN_FIELD_BASE(9940x0c0, 0x10, 03),
 PIN_FIELD_BASE(101040x0c0, 0x10, 183),
 PIN_FIELD_BASE(111140x0c0, 0x10, 33),
 PIN_FIELD_BASE(121240x0c0, 0x10, 213),
 PIN_FIELD_BASE(131340x0c0, 0x10, 63),
 PIN_FIELD_BASE(141440x0c0, 0x10, 243),
 PIN_FIELD_BASE(151540x0c0, 0x10, 93),
 PIN_FIELD_BASE(161640x0c0, 0x10, 273),
 PIN_FIELD_BASE(171740x0c0, 0x10, 123),
 PIN_FIELD_BASE(292920x080, 0x10, 03),
 PIN_FIELD_BASE(303020x080, 0x10, 33),
 PIN_FIELD_BASE(343410x0e0, 0x10, 03),
 PIN_FIELD_BASE(353510x0e0, 0x10, 33),
 PIN_FIELD_BASE(444410x0e0, 0x10, 63),
 PIN_FIELD_BASE(454510x0e0, 0x10, 93),
};

static const struct mtk_pin_rsel mt8195_pin_rsel_val_range[] = {
 PIN_RSEL(8170x0, 7500075000),
 PIN_RSEL(8170x1, 100005000),
 PIN_RSEL(8170x2, 500075000),
 PIN_RSEL(8170x3, 40005000),
 PIN_RSEL(8170x4, 300075000),
 PIN_RSEL(8170x5, 20005000),
 PIN_RSEL(8170x6, 150075000),
 PIN_RSEL(8170x7, 10005000),
 PIN_RSEL(29300x0, 7500075000),
 PIN_RSEL(29300x1, 100005000),
 PIN_RSEL(29300x2, 500075000),
 PIN_RSEL(29300x3, 40005000),
 PIN_RSEL(29300x4, 300075000),
 PIN_RSEL(29300x5, 20005000),
 PIN_RSEL(29300x6, 150075000),
 PIN_RSEL(29300x7, 10005000),
 PIN_RSEL(34350x0, 7500075000),
 PIN_RSEL(34350x1, 100005000),
 PIN_RSEL(34350x2, 500075000),
 PIN_RSEL(34350x3, 40005000),
 PIN_RSEL(34350x4, 300075000),
 PIN_RSEL(34350x5, 20005000),
 PIN_RSEL(34350x6, 150075000),
 PIN_RSEL(34350x7, 10005000),
 PIN_RSEL(44450x0, 7500075000),
 PIN_RSEL(44450x1, 100005000),
 PIN_RSEL(44450x2, 500075000),
 PIN_RSEL(44450x3, 40005000),
 PIN_RSEL(44450x4, 300075000),
 PIN_RSEL(44450x5, 20005000),
 PIN_RSEL(44450x6, 150075000),
 PIN_RSEL(44450x7, 10005000),
};

static const unsigned int mt8195_pull_type[] = {
 MTK_PULL_PUPD_R1R0_TYPE /* 0 */, MTK_PULL_PUPD_R1R0_TYPE /* 1 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 2 */, MTK_PULL_PUPD_R1R0_TYPE /* 3 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 4 */, MTK_PULL_PUPD_R1R0_TYPE /* 5 */,
 MTK_PULL_PU_PD_TYPE /* 6 */, MTK_PULL_PU_PD_TYPE /* 7 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 8 */, MTK_PULL_PU_PD_RSEL_TYPE /* 9 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 10 */, MTK_PULL_PU_PD_RSEL_TYPE /* 11 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 12 */, MTK_PULL_PU_PD_RSEL_TYPE /* 13 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 14 */, MTK_PULL_PU_PD_RSEL_TYPE /* 15 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 16 */, MTK_PULL_PU_PD_RSEL_TYPE /* 17 */,
 MTK_PULL_PU_PD_TYPE /* 18 */, MTK_PULL_PU_PD_TYPE /* 19 */,
 MTK_PULL_PU_PD_TYPE /* 20 */, MTK_PULL_PU_PD_TYPE /* 21 */,
 MTK_PULL_PU_PD_TYPE /* 22 */, MTK_PULL_PU_PD_TYPE /* 23 */,
 MTK_PULL_PU_PD_TYPE /* 24 */, MTK_PULL_PU_PD_TYPE /* 25 */,
 MTK_PULL_PU_PD_TYPE /* 26 */, MTK_PULL_PU_PD_TYPE /* 27 */,
 MTK_PULL_PU_PD_TYPE /* 28 */, MTK_PULL_PU_PD_RSEL_TYPE /* 29 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 30 */, MTK_PULL_PU_PD_TYPE /* 31 */,
 MTK_PULL_PU_PD_TYPE /* 32 */, MTK_PULL_PU_PD_TYPE /* 33 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 34 */, MTK_PULL_PU_PD_RSEL_TYPE /* 35 */,
 MTK_PULL_PU_PD_TYPE /* 36 */, MTK_PULL_PU_PD_TYPE /* 37 */,
 MTK_PULL_PU_PD_TYPE /* 38 */, MTK_PULL_PU_PD_TYPE /* 39 */,
 MTK_PULL_PU_PD_TYPE /* 40 */, MTK_PULL_PU_PD_TYPE /* 41 */,
 MTK_PULL_PU_PD_TYPE /* 42 */, MTK_PULL_PU_PD_TYPE /* 43 */,
 MTK_PULL_PU_PD_RSEL_TYPE /* 44 */, MTK_PULL_PU_PD_RSEL_TYPE /* 45 */,
 MTK_PULL_PU_PD_TYPE /* 46 */, MTK_PULL_PU_PD_TYPE /* 47 */,
 MTK_PULL_PU_PD_TYPE /* 48 */, MTK_PULL_PU_PD_TYPE /* 49 */,
 MTK_PULL_PU_PD_TYPE /* 50 */, MTK_PULL_PU_PD_TYPE /* 51 */,
 MTK_PULL_PU_PD_TYPE /* 52 */, MTK_PULL_PU_PD_TYPE /* 53 */,
 MTK_PULL_PU_PD_TYPE /* 54 */, MTK_PULL_PU_PD_TYPE /* 55 */,
 MTK_PULL_PU_PD_TYPE /* 56 */, MTK_PULL_PU_PD_TYPE /* 57 */,
 MTK_PULL_PU_PD_TYPE /* 58 */, MTK_PULL_PU_PD_TYPE /* 59 */,
 MTK_PULL_PU_PD_TYPE /* 60 */, MTK_PULL_PU_PD_TYPE /* 61 */,
 MTK_PULL_PU_PD_TYPE /* 62 */, MTK_PULL_PU_PD_TYPE /* 63 */,
 MTK_PULL_PU_PD_TYPE /* 64 */, MTK_PULL_PU_PD_TYPE /* 65 */,
 MTK_PULL_PU_PD_TYPE /* 66 */, MTK_PULL_PU_PD_TYPE /* 67 */,
 MTK_PULL_PU_PD_TYPE /* 68 */, MTK_PULL_PU_PD_TYPE /* 69 */,
 MTK_PULL_PU_PD_TYPE /* 70 */, MTK_PULL_PU_PD_TYPE /* 71 */,
 MTK_PULL_PU_PD_TYPE /* 72 */, MTK_PULL_PU_PD_TYPE /* 73 */,
 MTK_PULL_PU_PD_TYPE /* 74 */, MTK_PULL_PU_PD_TYPE /* 75 */,
 MTK_PULL_PU_PD_TYPE /* 76 */, MTK_PULL_PUPD_R1R0_TYPE /* 77 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 78 */, MTK_PULL_PUPD_R1R0_TYPE /* 79 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 80 */, MTK_PULL_PUPD_R1R0_TYPE /* 81 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 82 */, MTK_PULL_PUPD_R1R0_TYPE /* 83 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 84 */, MTK_PULL_PUPD_R1R0_TYPE /* 85 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 86 */, MTK_PULL_PUPD_R1R0_TYPE /* 87 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 88 */, MTK_PULL_PUPD_R1R0_TYPE /* 89 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 90 */, MTK_PULL_PUPD_R1R0_TYPE /* 91 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 92 */, MTK_PULL_PUPD_R1R0_TYPE /* 93 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 94 */, MTK_PULL_PUPD_R1R0_TYPE /* 95 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 96 */, MTK_PULL_PU_PD_TYPE /* 97 */,
 MTK_PULL_PU_PD_TYPE /* 98 */, MTK_PULL_PU_PD_TYPE /* 99 */,
 MTK_PULL_PU_PD_TYPE /* 100 */, MTK_PULL_PU_PD_TYPE /* 101 */,
 MTK_PULL_PU_PD_TYPE /* 102 */, MTK_PULL_PU_PD_TYPE /* 103 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 104 */, MTK_PULL_PUPD_R1R0_TYPE /* 105 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 106 */, MTK_PULL_PUPD_R1R0_TYPE /* 107 */,
 MTK_PULL_PU_PD_TYPE /* 108 */, MTK_PULL_PU_PD_TYPE /* 109 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 110 */, MTK_PULL_PUPD_R1R0_TYPE /* 111 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 112 */, MTK_PULL_PUPD_R1R0_TYPE /* 113 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 114 */, MTK_PULL_PUPD_R1R0_TYPE /* 115 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 116 */, MTK_PULL_PUPD_R1R0_TYPE /* 117 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 118 */, MTK_PULL_PUPD_R1R0_TYPE /* 119 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 120 */, MTK_PULL_PUPD_R1R0_TYPE /* 121 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 122 */, MTK_PULL_PUPD_R1R0_TYPE /* 123 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 124 */, MTK_PULL_PUPD_R1R0_TYPE /* 125 */,
 MTK_PULL_PUPD_R1R0_TYPE /* 126 */, MTK_PULL_PUPD_R1R0_TYPE /* 127 */,
 MTK_PULL_PU_PD_TYPE /* 128 */, MTK_PULL_PU_PD_TYPE /* 129 */,
 MTK_PULL_PU_PD_TYPE /* 130 */, MTK_PULL_PU_PD_TYPE /* 131 */,
 MTK_PULL_PU_PD_TYPE /* 132 */, MTK_PULL_PU_PD_TYPE /* 133 */,
 MTK_PULL_PU_PD_TYPE /* 134 */, MTK_PULL_PU_PD_TYPE /* 135 */,
 MTK_PULL_PU_PD_TYPE /* 136 */, MTK_PULL_PU_PD_TYPE /* 137 */,
 MTK_PULL_PU_PD_TYPE /* 138 */, MTK_PULL_PU_PD_TYPE /* 139 */,
 MTK_PULL_PU_PD_TYPE /* 140 */, MTK_PULL_PU_PD_TYPE /* 141 */,
 MTK_PULL_PU_PD_TYPE /* 142 */, MTK_PULL_PU_PD_TYPE /* 143 */,
};

static const struct mtk_pin_reg_calc mt8195_reg_cals[PINCTRL_PIN_REG_MAX] = {
 [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8195_pin_mode_range),
 [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8195_pin_dir_range),
 [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt8195_pin_di_range),
 [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt8195_pin_do_range),
 [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt8195_pin_smt_range),
 [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt8195_pin_ies_range),
 [PINCTRL_PIN_REG_PU] = MTK_RANGE(mt8195_pin_pu_range),
 [PINCTRL_PIN_REG_PD] = MTK_RANGE(mt8195_pin_pd_range),
 [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt8195_pin_drv_range),
 [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8195_pin_pupd_range),
 [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8195_pin_r0_range),
 [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8195_pin_r1_range),
 [PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt8195_pin_drv_adv_range),
 [PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt8195_pin_rsel_range),
};

static const char * const mt8195_pinctrl_register_base_names[] = {
 "iocfg0""iocfg_bm""iocfg_bl""iocfg_br""iocfg_lm",
 "iocfg_rb""iocfg_tl",
};

static const struct mtk_eint_hw mt8195_eint_hw = {
 .port_mask = 0xf,
 .ports     = 7,
 .ap_num    = 225,
 .db_cnt    = 32,
 .db_time   = debounce_time_mt6765,
};

static const struct mtk_pin_soc mt8195_data = {
 .reg_cal = mt8195_reg_cals,
 .pins = mtk_pins_mt8195,
 .npins = ARRAY_SIZE(mtk_pins_mt8195),
 .ngrps = ARRAY_SIZE(mtk_pins_mt8195),
 .eint_hw = &mt8195_eint_hw,
 .nfuncs = 8,
 .gpio_m = 0,
 .base_names = mt8195_pinctrl_register_base_names,
 .nbase_names = ARRAY_SIZE(mt8195_pinctrl_register_base_names),
 .pull_type = mt8195_pull_type,
 .pin_rsel = mt8195_pin_rsel_val_range,
 .npin_rsel = ARRAY_SIZE(mt8195_pin_rsel_val_range),
 .bias_set_combo = mtk_pinconf_bias_set_combo,
 .bias_get_combo = mtk_pinconf_bias_get_combo,
 .drive_set = mtk_pinconf_drive_set_rev1,
 .drive_get = mtk_pinconf_drive_get_rev1,
 .adv_drive_get = mtk_pinconf_adv_drive_get_raw,
 .adv_drive_set = mtk_pinconf_adv_drive_set_raw,
};

static const struct of_device_id mt8195_pinctrl_of_match[] = {
 { .compatible = "mediatek,mt8195-pinctrl", .data = &mt8195_data },
 { }
};

static struct platform_driver mt8195_pinctrl_driver = {
 .driver = {
  .name = "mt8195-pinctrl",
  .of_match_table = mt8195_pinctrl_of_match,
  .pm = pm_sleep_ptr(&mtk_paris_pinctrl_pm_ops),
 },
 .probe = mtk_paris_pinctrl_probe,
};

static int __init mt8195_pinctrl_init(void)
{
 return platform_driver_register(&mt8195_pinctrl_driver);
}
arch_initcall(mt8195_pinctrl_init);

Messung V0.5 in Prozent
C=95 H=96 G=95

¤ Dauer der Verarbeitung: 0.25 Sekunden  (vorverarbeitet am  2026-06-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.