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 25 kB image not shown  

Quelle  pinctrl-mt8183.c

  Sprache: C
 

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


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

/* MT8183 have multiple bases to program pin configuration listed as the below:
 * iocfg[0]:0x10005000, iocfg[1]:0x11F20000, iocfg[2]:0x11E80000,
 * iocfg[3]:0x11E70000, iocfg[4]:0x11E90000, iocfg[5]:0x11D30000,
 * iocfg[6]:0x11D20000, iocfg[7]:0x11C50000, iocfg[8]:0x11F30000.
 * _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 mt8183_pin_mode_range[] = {
 PIN_FIELD(01920x300, 0x10, 04),
};

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

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

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

static const struct mtk_pin_field_calc mt8183_pin_ies_range[] = {
 PINS_FIELD_BASE(0360x000, 0x10, 31),
 PINS_FIELD_BASE(4760x000, 0x10, 51),
 PIN_FIELD_BASE(8860x000, 0x10, 01),
 PINS_FIELD_BASE(91060x000, 0x10, 121),
 PIN_FIELD_BASE(111110x000, 0x10, 31),
 PIN_FIELD_BASE(121210x000, 0x10, 71),
 PINS_FIELD_BASE(131620x000, 0x10, 21),
 PINS_FIELD_BASE(172020x000, 0x10, 31),
 PINS_FIELD_BASE(212420x000, 0x10, 41),
 PINS_FIELD_BASE(252820x000, 0x10, 51),
 PIN_FIELD_BASE(292920x000, 0x10, 61),
 PIN_FIELD_BASE(303020x000, 0x10, 71),
 PINS_FIELD_BASE(313120x000, 0x10, 81),
 PINS_FIELD_BASE(323420x000, 0x10, 71),
 PINS_FIELD_BASE(353730x000, 0x10, 01),
 PINS_FIELD_BASE(384030x000, 0x10, 11),
 PINS_FIELD_BASE(414230x000, 0x10, 21),
 PINS_FIELD_BASE(434530x000, 0x10, 31),
 PINS_FIELD_BASE(464730x000, 0x10, 41),
 PINS_FIELD_BASE(484930x000, 0x10, 51),
 PINS_FIELD_BASE(505140x000, 0x10, 01),
 PINS_FIELD_BASE(525740x000, 0x10, 11),
 PINS_FIELD_BASE(586040x000, 0x10, 21),
 PINS_FIELD_BASE(616450x000, 0x10, 01),
 PINS_FIELD_BASE(656650x000, 0x10, 11),
 PINS_FIELD_BASE(676850x000, 0x10, 21),
 PINS_FIELD_BASE(697150x000, 0x10, 31),
 PINS_FIELD_BASE(727650x000, 0x10, 41),
 PINS_FIELD_BASE(778050x000, 0x10, 51),
 PIN_FIELD_BASE(818150x000, 0x10, 61),
 PINS_FIELD_BASE(828350x000, 0x10, 71),
 PIN_FIELD_BASE(848450x000, 0x10, 61),
 PINS_FIELD_BASE(858850x000, 0x10, 81),
 PIN_FIELD_BASE(898960x000, 0x10, 111),
 PIN_FIELD_BASE(909060x000, 0x10, 11),
 PINS_FIELD_BASE(919460x000, 0x10, 21),
 PINS_FIELD_BASE(959660x000, 0x10, 61),
 PINS_FIELD_BASE(979860x000, 0x10, 71),
 PIN_FIELD_BASE(999960x000, 0x10, 81),
 PIN_FIELD_BASE(10010060x000, 0x10, 91),
 PINS_FIELD_BASE(10110260x000, 0x10, 101),
 PINS_FIELD_BASE(10310460x000, 0x10, 131),
 PINS_FIELD_BASE(10510660x000, 0x10, 141),
 PIN_FIELD_BASE(10710770x000, 0x10, 01),
 PIN_FIELD_BASE(10810870x000, 0x10, 11),
 PIN_FIELD_BASE(10910970x000, 0x10, 21),
 PIN_FIELD_BASE(11011070x000, 0x10, 01),
 PIN_FIELD_BASE(11111170x000, 0x10, 31),
 PIN_FIELD_BASE(11211270x000, 0x10, 21),
 PIN_FIELD_BASE(11311370x000, 0x10, 41),
 PIN_FIELD_BASE(11411470x000, 0x10, 51),
 PIN_FIELD_BASE(11511570x000, 0x10, 61),
 PIN_FIELD_BASE(11611670x000, 0x10, 71),
 PIN_FIELD_BASE(11711770x000, 0x10, 81),
 PIN_FIELD_BASE(11811870x000, 0x10, 91),
 PIN_FIELD_BASE(11911970x000, 0x10, 101),
 PIN_FIELD_BASE(12012070x000, 0x10, 111),
 PIN_FIELD_BASE(12112170x000, 0x10, 121),
 PIN_FIELD_BASE(12212280x000, 0x10, 01),
 PIN_FIELD_BASE(12312380x000, 0x10, 11),
 PIN_FIELD_BASE(12412480x000, 0x10, 21),
 PINS_FIELD_BASE(12513080x000, 0x10, 11),
 PIN_FIELD_BASE(13113180x000, 0x10, 31),
 PIN_FIELD_BASE(13213280x000, 0x10, 11),
 PIN_FIELD_BASE(13313380x000, 0x10, 41),
 PIN_FIELD_BASE(13413410x000, 0x10, 01),
 PIN_FIELD_BASE(13513510x000, 0x10, 11),
 PINS_FIELD_BASE(13614310x000, 0x10, 21),
 PINS_FIELD_BASE(14414710x000, 0x10, 41),
 PIN_FIELD_BASE(14814810x000, 0x10, 51),
 PIN_FIELD_BASE(14914910x000, 0x10, 61),
 PINS_FIELD_BASE(15015310x000, 0x10, 81),
 PIN_FIELD_BASE(15415410x000, 0x10, 91),
 PINS_FIELD_BASE(15515710x000, 0x10, 101),
 PINS_FIELD_BASE(15816010x000, 0x10, 81),
 PINS_FIELD_BASE(16116420x000, 0x10, 01),
 PINS_FIELD_BASE(16516620x000, 0x10, 11),
 PINS_FIELD_BASE(16716840x000, 0x10, 21),
 PIN_FIELD_BASE(16916940x000, 0x10, 31),
 PINS_FIELD_BASE(17017440x000, 0x10, 41),
 PINS_FIELD_BASE(17517640x000, 0x10, 31),
 PINS_FIELD_BASE(17717960x000, 0x10, 41),
};

static const struct mtk_pin_field_calc mt8183_pin_smt_range[] = {
 PINS_FIELD_BASE(0360x010, 0x10, 31),
 PINS_FIELD_BASE(4760x010, 0x10, 51),
 PIN_FIELD_BASE(8860x010, 0x10, 01),
 PINS_FIELD_BASE(91060x010, 0x10, 121),
 PIN_FIELD_BASE(111110x010, 0x10, 31),
 PIN_FIELD_BASE(121210x010, 0x10, 71),
 PINS_FIELD_BASE(131620x010, 0x10, 21),
 PINS_FIELD_BASE(172020x010, 0x10, 31),
 PINS_FIELD_BASE(212420x010, 0x10, 41),
 PINS_FIELD_BASE(252820x010, 0x10, 51),
 PIN_FIELD_BASE(292920x010, 0x10, 61),
 PIN_FIELD_BASE(303020x010, 0x10, 71),
 PINS_FIELD_BASE(313120x010, 0x10, 81),
 PINS_FIELD_BASE(323420x010, 0x10, 71),
 PINS_FIELD_BASE(353730x010, 0x10, 01),
 PINS_FIELD_BASE(384030x010, 0x10, 11),
 PINS_FIELD_BASE(414230x010, 0x10, 21),
 PINS_FIELD_BASE(434530x010, 0x10, 31),
 PINS_FIELD_BASE(464730x010, 0x10, 41),
 PINS_FIELD_BASE(484930x010, 0x10, 51),
 PINS_FIELD_BASE(505140x010, 0x10, 01),
 PINS_FIELD_BASE(525740x010, 0x10, 11),
 PINS_FIELD_BASE(586040x010, 0x10, 21),
 PINS_FIELD_BASE(616450x010, 0x10, 01),
 PINS_FIELD_BASE(656650x010, 0x10, 11),
 PINS_FIELD_BASE(676850x010, 0x10, 21),
 PINS_FIELD_BASE(697150x010, 0x10, 31),
 PINS_FIELD_BASE(727650x010, 0x10, 41),
 PINS_FIELD_BASE(778050x010, 0x10, 51),
 PIN_FIELD_BASE(818150x010, 0x10, 61),
 PINS_FIELD_BASE(828350x010, 0x10, 71),
 PIN_FIELD_BASE(848450x010, 0x10, 61),
 PINS_FIELD_BASE(858850x010, 0x10, 81),
 PIN_FIELD_BASE(898960x010, 0x10, 111),
 PIN_FIELD_BASE(909060x010, 0x10, 11),
 PINS_FIELD_BASE(919460x010, 0x10, 21),
 PINS_FIELD_BASE(959660x010, 0x10, 61),
 PINS_FIELD_BASE(979860x010, 0x10, 71),
 PIN_FIELD_BASE(999960x010, 0x10, 81),
 PIN_FIELD_BASE(10010060x010, 0x10, 91),
 PINS_FIELD_BASE(10110260x010, 0x10, 101),
 PINS_FIELD_BASE(10310460x010, 0x10, 131),
 PINS_FIELD_BASE(10510660x010, 0x10, 141),
 PIN_FIELD_BASE(10710770x010, 0x10, 01),
 PIN_FIELD_BASE(10810870x010, 0x10, 11),
 PIN_FIELD_BASE(10910970x010, 0x10, 21),
 PIN_FIELD_BASE(11011070x010, 0x10, 01),
 PIN_FIELD_BASE(11111170x010, 0x10, 31),
 PIN_FIELD_BASE(11211270x010, 0x10, 21),
 PIN_FIELD_BASE(11311370x010, 0x10, 41),
 PIN_FIELD_BASE(11411470x010, 0x10, 51),
 PIN_FIELD_BASE(11511570x010, 0x10, 61),
 PIN_FIELD_BASE(11611670x010, 0x10, 71),
 PIN_FIELD_BASE(11711770x010, 0x10, 81),
 PIN_FIELD_BASE(11811870x010, 0x10, 91),
 PIN_FIELD_BASE(11911970x010, 0x10, 101),
 PIN_FIELD_BASE(12012070x010, 0x10, 111),
 PIN_FIELD_BASE(12112170x010, 0x10, 121),
 PIN_FIELD_BASE(12212280x010, 0x10, 01),
 PIN_FIELD_BASE(12312380x010, 0x10, 11),
 PIN_FIELD_BASE(12412480x010, 0x10, 21),
 PINS_FIELD_BASE(12513080x010, 0x10, 11),
 PIN_FIELD_BASE(13113180x010, 0x10, 31),
 PIN_FIELD_BASE(13213280x010, 0x10, 11),
 PIN_FIELD_BASE(13313380x010, 0x10, 41),
 PIN_FIELD_BASE(13413410x010, 0x10, 01),
 PIN_FIELD_BASE(13513510x010, 0x10, 11),
 PINS_FIELD_BASE(13614310x010, 0x10, 21),
 PINS_FIELD_BASE(14414710x010, 0x10, 41),
 PIN_FIELD_BASE(14814810x010, 0x10, 51),
 PIN_FIELD_BASE(14914910x010, 0x10, 61),
 PINS_FIELD_BASE(15015310x010, 0x10, 81),
 PIN_FIELD_BASE(15415410x010, 0x10, 91),
 PINS_FIELD_BASE(15515710x010, 0x10, 101),
 PINS_FIELD_BASE(15816010x010, 0x10, 81),
 PINS_FIELD_BASE(16116420x010, 0x10, 01),
 PINS_FIELD_BASE(16516620x010, 0x10, 11),
 PINS_FIELD_BASE(16716840x010, 0x10, 21),
 PIN_FIELD_BASE(16916940x010, 0x10, 31),
 PINS_FIELD_BASE(17017440x010, 0x10, 41),
 PINS_FIELD_BASE(17517640x010, 0x10, 31),
 PINS_FIELD_BASE(17717960x010, 0x10, 41),
};

static const struct mtk_pin_field_calc mt8183_pin_pullen_range[] = {
 PIN_FIELD_BASE(0360x060, 0x10, 61),
 PIN_FIELD_BASE(4760x060, 0x10, 111),
 PIN_FIELD_BASE(8860x060, 0x10, 01),
 PIN_FIELD_BASE(91060x060, 0x10, 261),
 PIN_FIELD_BASE(111110x060, 0x10, 101),
 PIN_FIELD_BASE(121210x060, 0x10, 171),
 PIN_FIELD_BASE(132820x060, 0x10, 61),
 PIN_FIELD_BASE(434930x060, 0x10, 81),
 PIN_FIELD_BASE(506040x060, 0x10, 01),
 PIN_FIELD_BASE(618850x060, 0x10, 01),
 PIN_FIELD_BASE(898960x060, 0x10, 241),
 PIN_FIELD_BASE(909060x060, 0x10, 11),
 PIN_FIELD_BASE(959560x060, 0x10, 151),
 PIN_FIELD_BASE(9610260x060, 0x10, 171),
 PIN_FIELD_BASE(10310660x060, 0x10, 281),
 PIN_FIELD_BASE(10712170x060, 0x10, 01),
 PIN_FIELD_BASE(13414310x060, 0x10, 01),
 PIN_FIELD_BASE(14414910x060, 0x10, 111),
 PIN_FIELD_BASE(15016010x060, 0x10, 181),
 PIN_FIELD_BASE(16116620x060, 0x10, 01),
 PIN_FIELD_BASE(16717640x060, 0x10, 111),
 PIN_FIELD_BASE(17717760x060, 0x10, 101),
 PIN_FIELD_BASE(17817860x060, 0x10, 161),
 PIN_FIELD_BASE(17917960x060, 0x10, 251),
};

static const struct mtk_pin_field_calc mt8183_pin_pullsel_range[] = {
 PIN_FIELD_BASE(0360x080, 0x10, 61),
 PIN_FIELD_BASE(4760x080, 0x10, 111),
 PIN_FIELD_BASE(8860x080, 0x10, 01),
 PIN_FIELD_BASE(91060x080, 0x10, 261),
 PIN_FIELD_BASE(111110x080, 0x10, 101),
 PIN_FIELD_BASE(121210x080, 0x10, 171),
 PIN_FIELD_BASE(132820x080, 0x10, 61),
 PIN_FIELD_BASE(434930x080, 0x10, 81),
 PIN_FIELD_BASE(506040x080, 0x10, 01),
 PIN_FIELD_BASE(618850x080, 0x10, 01),
 PIN_FIELD_BASE(898960x080, 0x10, 241),
 PIN_FIELD_BASE(909060x080, 0x10, 11),
 PIN_FIELD_BASE(959560x080, 0x10, 151),
 PIN_FIELD_BASE(9610260x080, 0x10, 171),
 PIN_FIELD_BASE(10310660x080, 0x10, 281),
 PIN_FIELD_BASE(10712170x080, 0x10, 01),
 PIN_FIELD_BASE(13414310x080, 0x10, 01),
 PIN_FIELD_BASE(14414910x080, 0x10, 111),
 PIN_FIELD_BASE(15016010x080, 0x10, 181),
 PIN_FIELD_BASE(16116620x080, 0x10, 01),
 PIN_FIELD_BASE(16717640x080, 0x10, 111),
 PIN_FIELD_BASE(17717760x080, 0x10, 101),
 PIN_FIELD_BASE(17817860x080, 0x10, 161),
 PIN_FIELD_BASE(17917960x080, 0x10, 251),
};

static const struct mtk_pin_field_calc mt8183_pin_drv_range[] = {
 PINS_FIELD_BASE(0360x0A0, 0x10, 123),
 PINS_FIELD_BASE(4760x0A0, 0x10, 203),
 PIN_FIELD_BASE(8860x0A0, 0x10, 03),
 PINS_FIELD_BASE(91060x0B0, 0x10, 163),
 PIN_FIELD_BASE(111110x0A0, 0x10, 123),
 PIN_FIELD_BASE(121210x0A0, 0x10, 283),
 PINS_FIELD_BASE(131620x0A0, 0x10, 83),
 PINS_FIELD_BASE(172020x0A0, 0x10, 123),
 PINS_FIELD_BASE(212420x0A0, 0x10, 163),
 PINS_FIELD_BASE(252820x0A0, 0x10, 203),
 PIN_FIELD_BASE(292920x0A0, 0x10, 243),
 PIN_FIELD_BASE(303020x0A0, 0x10, 283),
 PINS_FIELD_BASE(313120x0B0, 0x10, 03),
 PINS_FIELD_BASE(323420x0A0, 0x10, 283),
 PINS_FIELD_BASE(353730x0A0, 0x10, 03),
 PINS_FIELD_BASE(384030x0A0, 0x10, 43),
 PINS_FIELD_BASE(414230x0A0, 0x10, 83),
 PINS_FIELD_BASE(434530x0A0, 0x10, 123),
 PINS_FIELD_BASE(464730x0A0, 0x10, 163),
 PINS_FIELD_BASE(484930x0A0, 0x10, 203),
 PINS_FIELD_BASE(505140x0A0, 0x10, 03),
 PINS_FIELD_BASE(525740x0A0, 0x10, 43),
 PINS_FIELD_BASE(586040x0A0, 0x10, 83),
 PINS_FIELD_BASE(616450x0A0, 0x10, 03),
 PINS_FIELD_BASE(656650x0A0, 0x10, 43),
 PINS_FIELD_BASE(676850x0A0, 0x10, 83),
 PINS_FIELD_BASE(697150x0A0, 0x10, 123),
 PINS_FIELD_BASE(727650x0A0, 0x10, 163),
 PINS_FIELD_BASE(778050x0A0, 0x10, 203),
 PIN_FIELD_BASE(818150x0A0, 0x10, 243),
 PINS_FIELD_BASE(828350x0A0, 0x10, 283),
 PIN_FIELD_BASE(848450x0A0, 0x10, 243),
 PINS_FIELD_BASE(858850x0B0, 0x10, 03),
 PIN_FIELD_BASE(898960x0B0, 0x10, 123),
 PIN_FIELD_BASE(909060x0A0, 0x10, 43),
 PINS_FIELD_BASE(919460x0A0, 0x10, 83),
 PINS_FIELD_BASE(959660x0A0, 0x10, 243),
 PINS_FIELD_BASE(979860x0A0, 0x10, 283),
 PIN_FIELD_BASE(999960x0B0, 0x10, 03),
 PIN_FIELD_BASE(10010060x0B0, 0x10, 43),
 PINS_FIELD_BASE(10110260x0B0, 0x10, 83),
 PINS_FIELD_BASE(10310460x0B0, 0x10, 203),
 PINS_FIELD_BASE(10510660x0B0, 0x10, 243),
 PIN_FIELD_BASE(10710770x0A0, 0x10, 03),
 PIN_FIELD_BASE(10810870x0A0, 0x10, 43),
 PIN_FIELD_BASE(10910970x0A0, 0x10, 83),
 PIN_FIELD_BASE(11011070x0A0, 0x10, 03),
 PIN_FIELD_BASE(11111170x0A0, 0x10, 43),
 PIN_FIELD_BASE(11211270x0A0, 0x10, 83),
 PIN_FIELD_BASE(11311370x0A0, 0x10, 163),
 PIN_FIELD_BASE(11411470x0A0, 0x10, 203),
 PIN_FIELD_BASE(11511570x0A0, 0x10, 243),
 PIN_FIELD_BASE(11611670x0A0, 0x10, 283),
 PIN_FIELD_BASE(11711770x0B0, 0x10, 03),
 PIN_FIELD_BASE(11811870x0B0, 0x10, 43),
 PIN_FIELD_BASE(11911970x0B0, 0x10, 83),
 PIN_FIELD_BASE(12012070x0B0, 0x10, 123),
 PIN_FIELD_BASE(12112170x0B0, 0x10, 163),
 PIN_FIELD_BASE(12212280x0A0, 0x10, 03),
 PIN_FIELD_BASE(12312380x0A0, 0x10, 43),
 PIN_FIELD_BASE(12412480x0A0, 0x10, 83),
 PINS_FIELD_BASE(12513080x0A0, 0x10, 43),
 PIN_FIELD_BASE(13113180x0A0, 0x10, 123),
 PIN_FIELD_BASE(13213280x0A0, 0x10, 43),
 PIN_FIELD_BASE(13313380x0A0, 0x10, 163),
 PIN_FIELD_BASE(13413410x0A0, 0x10, 03),
 PIN_FIELD_BASE(13513510x0A0, 0x10, 43),
 PINS_FIELD_BASE(13614310x0A0, 0x10, 83),
 PINS_FIELD_BASE(14414710x0A0, 0x10, 163),
 PIN_FIELD_BASE(14814810x0A0, 0x10, 203),
 PIN_FIELD_BASE(14914910x0A0, 0x10, 243),
 PINS_FIELD_BASE(15015310x0B0, 0x10, 03),
 PIN_FIELD_BASE(15415410x0B0, 0x10, 43),
 PINS_FIELD_BASE(15515710x0B0, 0x10, 83),
 PINS_FIELD_BASE(15816010x0B0, 0x10, 03),
 PINS_FIELD_BASE(16116420x0A0, 0x10, 03),
 PINS_FIELD_BASE(16516620x0A0, 0x10, 43),
 PINS_FIELD_BASE(16716840x0A0, 0x10, 83),
 PIN_FIELD_BASE(16916940x0A0, 0x10, 123),
 PINS_FIELD_BASE(17017440x0A0, 0x10, 163),
 PINS_FIELD_BASE(17517640x0A0, 0x10, 123),
 PINS_FIELD_BASE(17717960x0A0, 0x10, 163),
};

static const struct mtk_pin_field_calc mt8183_pin_pupd_range[] = {
 PIN_FIELD_BASE(292920x0C0, 0x10, 21),
 PIN_FIELD_BASE(303020x0C0, 0x10, 61),
 PIN_FIELD_BASE(313120x0C0, 0x10, 101),
 PIN_FIELD_BASE(323220x0C0, 0x10, 141),
 PIN_FIELD_BASE(333320x0C0, 0x10, 181),
 PIN_FIELD_BASE(343420x0C0, 0x10, 221),
 PIN_FIELD_BASE(353530x0C0, 0x10, 21),
 PIN_FIELD_BASE(363630x0C0, 0x10, 61),
 PIN_FIELD_BASE(373730x0C0, 0x10, 101),
 PIN_FIELD_BASE(383830x0C0, 0x10, 141),
 PIN_FIELD_BASE(393930x0C0, 0x10, 181),
 PIN_FIELD_BASE(404030x0C0, 0x10, 221),
 PIN_FIELD_BASE(414130x0C0, 0x10, 261),
 PIN_FIELD_BASE(424230x0C0, 0x10, 301),
 PIN_FIELD_BASE(919160x0C0, 0x10, 21),
 PIN_FIELD_BASE(929260x0C0, 0x10, 61),
 PIN_FIELD_BASE(939360x0C0, 0x10, 101),
 PIN_FIELD_BASE(949460x0C0, 0x10, 141),
 PIN_FIELD_BASE(12212280x0C0, 0x10, 21),
 PIN_FIELD_BASE(12312380x0C0, 0x10, 61),
 PIN_FIELD_BASE(12412480x0C0, 0x10, 101),
 PIN_FIELD_BASE(12512580x0C0, 0x10, 141),
 PIN_FIELD_BASE(12612680x0C0, 0x10, 181),
 PIN_FIELD_BASE(12712780x0C0, 0x10, 221),
 PIN_FIELD_BASE(12812880x0C0, 0x10, 261),
 PIN_FIELD_BASE(12912980x0C0, 0x10, 301),
 PIN_FIELD_BASE(13013080x0D0, 0x10, 21),
 PIN_FIELD_BASE(13113180x0D0, 0x10, 61),
 PIN_FIELD_BASE(13213280x0D0, 0x10, 101),
 PIN_FIELD_BASE(13313380x0D0, 0x10, 141),
};

static const struct mtk_pin_field_calc mt8183_pin_r0_range[] = {
 PIN_FIELD_BASE(292920x0C0, 0x10, 01),
 PIN_FIELD_BASE(303020x0C0, 0x10, 41),
 PIN_FIELD_BASE(313120x0C0, 0x10, 81),
 PIN_FIELD_BASE(323220x0C0, 0x10, 121),
 PIN_FIELD_BASE(333320x0C0, 0x10, 161),
 PIN_FIELD_BASE(343420x0C0, 0x10, 201),
 PIN_FIELD_BASE(353530x0C0, 0x10, 01),
 PIN_FIELD_BASE(363630x0C0, 0x10, 41),
 PIN_FIELD_BASE(373730x0C0, 0x10, 81),
 PIN_FIELD_BASE(383830x0C0, 0x10, 121),
 PIN_FIELD_BASE(393930x0C0, 0x10, 161),
 PIN_FIELD_BASE(404030x0C0, 0x10, 201),
 PIN_FIELD_BASE(414130x0C0, 0x10, 241),
 PIN_FIELD_BASE(424230x0C0, 0x10, 281),
 PIN_FIELD_BASE(484830x0F0, 0x10, 181),
 PIN_FIELD_BASE(494930x0F0, 0x10, 131),
 PIN_FIELD_BASE(505040x0F0, 0x10, 101),
 PIN_FIELD_BASE(515140x0F0, 0x10, 51),
 PIN_FIELD_BASE(818150x0F0, 0x10, 71),
 PIN_FIELD_BASE(828250x0F0, 0x10, 51),
 PIN_FIELD_BASE(838350x0F0, 0x10, 151),
 PIN_FIELD_BASE(848450x0F0, 0x10, 171),
 PIN_FIELD_BASE(919160x0C0, 0x10, 01),
 PIN_FIELD_BASE(929260x0C0, 0x10, 41),
 PIN_FIELD_BASE(939360x0C0, 0x10, 81),
 PIN_FIELD_BASE(949460x0C0, 0x10, 121),
 PIN_FIELD_BASE(10310360x0F0, 0x10, 201),
 PIN_FIELD_BASE(10410460x0F0, 0x10, 101),
 PIN_FIELD_BASE(10510560x0F0, 0x10, 221),
 PIN_FIELD_BASE(10610660x0F0, 0x10, 121),
 PIN_FIELD_BASE(12212280x0C0, 0x10, 01),
 PIN_FIELD_BASE(12312380x0C0, 0x10, 41),
 PIN_FIELD_BASE(12412480x0C0, 0x10, 81),
 PIN_FIELD_BASE(12512580x0C0, 0x10, 121),
 PIN_FIELD_BASE(12612680x0C0, 0x10, 161),
 PIN_FIELD_BASE(12712780x0C0, 0x10, 201),
 PIN_FIELD_BASE(12812880x0C0, 0x10, 241),
 PIN_FIELD_BASE(12912980x0C0, 0x10, 281),
 PIN_FIELD_BASE(13013080x0D0, 0x10, 01),
 PIN_FIELD_BASE(13113180x0D0, 0x10, 41),
 PIN_FIELD_BASE(13213280x0D0, 0x10, 81),
 PIN_FIELD_BASE(13313380x0D0, 0x10, 121),
};

static const struct mtk_pin_field_calc mt8183_pin_r1_range[] = {
 PIN_FIELD_BASE(292920x0C0, 0x10, 11),
 PIN_FIELD_BASE(303020x0C0, 0x10, 51),
 PIN_FIELD_BASE(313120x0C0, 0x10, 91),
 PIN_FIELD_BASE(323220x0C0, 0x10, 131),
 PIN_FIELD_BASE(333320x0C0, 0x10, 171),
 PIN_FIELD_BASE(343420x0C0, 0x10, 211),
 PIN_FIELD_BASE(353530x0C0, 0x10, 11),
 PIN_FIELD_BASE(363630x0C0, 0x10, 51),
 PIN_FIELD_BASE(373730x0C0, 0x10, 91),
 PIN_FIELD_BASE(383830x0C0, 0x10, 131),
 PIN_FIELD_BASE(393930x0C0, 0x10, 171),
 PIN_FIELD_BASE(404030x0C0, 0x10, 211),
 PIN_FIELD_BASE(414130x0C0, 0x10, 251),
 PIN_FIELD_BASE(424230x0C0, 0x10, 291),
 PIN_FIELD_BASE(484830x0F0, 0x10, 191),
 PIN_FIELD_BASE(494930x0F0, 0x10, 141),
 PIN_FIELD_BASE(505040x0F0, 0x10, 111),
 PIN_FIELD_BASE(515140x0F0, 0x10, 61),
 PIN_FIELD_BASE(818150x0F0, 0x10, 81),
 PIN_FIELD_BASE(828250x0F0, 0x10, 61),
 PIN_FIELD_BASE(838350x0F0, 0x10, 161),
 PIN_FIELD_BASE(848450x0F0, 0x10, 181),
 PIN_FIELD_BASE(919160x0C0, 0x10, 11),
 PIN_FIELD_BASE(929260x0C0, 0x10, 51),
 PIN_FIELD_BASE(939360x0C0, 0x10, 91),
 PIN_FIELD_BASE(949460x0C0, 0x10, 131),
 PIN_FIELD_BASE(10310360x0F0, 0x10, 211),
 PIN_FIELD_BASE(10410460x0F0, 0x10, 111),
 PIN_FIELD_BASE(10510560x0F0, 0x10, 231),
 PIN_FIELD_BASE(10610660x0F0, 0x10, 131),
 PIN_FIELD_BASE(12212280x0C0, 0x10, 11),
 PIN_FIELD_BASE(12312380x0C0, 0x10, 51),
 PIN_FIELD_BASE(12412480x0C0, 0x10, 91),
 PIN_FIELD_BASE(12512580x0C0, 0x10, 131),
 PIN_FIELD_BASE(12612680x0C0, 0x10, 171),
 PIN_FIELD_BASE(12712780x0C0, 0x10, 211),
 PIN_FIELD_BASE(12812880x0C0, 0x10, 251),
 PIN_FIELD_BASE(12912980x0C0, 0x10, 291),
 PIN_FIELD_BASE(13013080x0D0, 0x10, 11),
 PIN_FIELD_BASE(13113180x0D0, 0x10, 51),
 PIN_FIELD_BASE(13213280x0D0, 0x10, 91),
 PIN_FIELD_BASE(13313380x0D0, 0x10, 131),
};

static const struct mtk_pin_field_calc mt8183_pin_e1e0en_range[] = {
 PIN_FIELD_BASE(484830x0F0, 0x10, 201),
 PIN_FIELD_BASE(494930x0F0, 0x10, 151),
 PIN_FIELD_BASE(505040x0F0, 0x10, 121),
 PIN_FIELD_BASE(515140x0F0, 0x10, 71),
 PIN_FIELD_BASE(818150x0F0, 0x10, 121),
 PIN_FIELD_BASE(828250x0F0, 0x10, 91),
 PIN_FIELD_BASE(838350x0F0, 0x10, 191),
 PIN_FIELD_BASE(848450x0F0, 0x10, 221),
 PIN_FIELD_BASE(10310360x0F0, 0x10, 241),
 PIN_FIELD_BASE(10410460x0F0, 0x10, 141),
 PIN_FIELD_BASE(10510560x0F0, 0x10, 271),
 PIN_FIELD_BASE(10610660x0F0, 0x10, 171),
};

static const struct mtk_pin_field_calc mt8183_pin_e0_range[] = {
 PIN_FIELD_BASE(484830x0F0, 0x10, 211),
 PIN_FIELD_BASE(494930x0F0, 0x10, 161),
 PIN_FIELD_BASE(505040x0F0, 0x10, 131),
 PIN_FIELD_BASE(515140x0F0, 0x10, 81),
 PIN_FIELD_BASE(818150x0F0, 0x10, 131),
 PIN_FIELD_BASE(828250x0F0, 0x10, 101),
 PIN_FIELD_BASE(838350x0F0, 0x10, 201),
 PIN_FIELD_BASE(848450x0F0, 0x10, 231),
 PIN_FIELD_BASE(10310360x0F0, 0x10, 251),
 PIN_FIELD_BASE(10410460x0F0, 0x10, 151),
 PIN_FIELD_BASE(10510560x0F0, 0x10, 281),
 PIN_FIELD_BASE(10610660x0F0, 0x10, 181),
};

static const struct mtk_pin_field_calc mt8183_pin_e1_range[] = {
 PIN_FIELD_BASE(484830x0F0, 0x10, 221),
 PIN_FIELD_BASE(494930x0F0, 0x10, 171),
 PIN_FIELD_BASE(505040x0F0, 0x10, 141),
 PIN_FIELD_BASE(515140x0F0, 0x10, 91),
 PIN_FIELD_BASE(818150x0F0, 0x10, 141),
 PIN_FIELD_BASE(828250x0F0, 0x10, 111),
 PIN_FIELD_BASE(838350x0F0, 0x10, 211),
 PIN_FIELD_BASE(848450x0F0, 0x10, 241),
 PIN_FIELD_BASE(10310360x0F0, 0x10, 261),
 PIN_FIELD_BASE(10410460x0F0, 0x10, 161),
 PIN_FIELD_BASE(10510560x0F0, 0x10, 291),
 PIN_FIELD_BASE(10610660x0F0, 0x10, 191),
};

static const struct mtk_pin_reg_calc mt8183_reg_cals[PINCTRL_PIN_REG_MAX] = {
 [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt8183_pin_mode_range),
 [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt8183_pin_dir_range),
 [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt8183_pin_di_range),
 [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt8183_pin_do_range),
 [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt8183_pin_smt_range),
 [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt8183_pin_ies_range),
 [PINCTRL_PIN_REG_PULLEN] = MTK_RANGE(mt8183_pin_pullen_range),
 [PINCTRL_PIN_REG_PULLSEL] = MTK_RANGE(mt8183_pin_pullsel_range),
 [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt8183_pin_drv_range),
 [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8183_pin_pupd_range),
 [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8183_pin_r0_range),
 [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8183_pin_r1_range),
 [PINCTRL_PIN_REG_DRV_EN] = MTK_RANGE(mt8183_pin_e1e0en_range),
 [PINCTRL_PIN_REG_DRV_E0] = MTK_RANGE(mt8183_pin_e0_range),
 [PINCTRL_PIN_REG_DRV_E1] = MTK_RANGE(mt8183_pin_e1_range),
};

static const char * const mt8183_pinctrl_register_base_names[] = {
 "iocfg0""iocfg1""iocfg2""iocfg3""iocfg4""iocfg5",
 "iocfg6""iocfg7""iocfg8",
};

static const struct mtk_eint_hw mt8183_eint_hw = {
 .port_mask = 7,
 .ports     = 6,
 .ap_num    = 212,
 .db_cnt    = 13,
 .db_time   = debounce_time_mt6765,
};

static const struct mtk_pin_soc mt8183_data = {
 .reg_cal = mt8183_reg_cals,
 .pins = mtk_pins_mt8183,
 .npins = ARRAY_SIZE(mtk_pins_mt8183),
 .ngrps = ARRAY_SIZE(mtk_pins_mt8183),
 .eint_hw = &mt8183_eint_hw,
 .gpio_m = 0,
 .base_names = mt8183_pinctrl_register_base_names,
 .nbase_names = ARRAY_SIZE(mt8183_pinctrl_register_base_names),
 .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_pull_get = mtk_pinconf_adv_pull_get,
 .adv_pull_set = mtk_pinconf_adv_pull_set,
 .adv_drive_get = mtk_pinconf_adv_drive_get,
 .adv_drive_set = mtk_pinconf_adv_drive_set,
};

static const struct of_device_id mt8183_pinctrl_of_match[] = {
 { .compatible = "mediatek,mt8183-pinctrl", .data = &mt8183_data },
 { }
};

static struct platform_driver mt8183_pinctrl_driver = {
 .driver = {
  .name = "mt8183-pinctrl",
  .of_match_table = mt8183_pinctrl_of_match,
  .pm = pm_sleep_ptr(&mtk_paris_pinctrl_pm_ops),
 },
 .probe = mtk_paris_pinctrl_probe,
};

static int __init mt8183_pinctrl_init(void)
{
 return platform_driver_register(&mt8183_pinctrl_driver);
}
arch_initcall(mt8183_pinctrl_init);

Messung V0.5 in Prozent
C=97 H=92 G=94

¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet am  2026-06-07) ¤

*© 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.