Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Impressum pinctrl-mt2701.c   Sprache: unbekannt

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2015 MediaTek Inc.
 * Author: Biao Huang <biao.huang@mediatek.com>
 */


#include <dt-bindings/pinctrl/mt65xx.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/regmap.h>

#include "pinctrl-mtk-common.h"
#include "pinctrl-mtk-mt2701.h"

/**
 * struct mtk_spec_pinmux_set
 * - For special pins' mode setting
 * @pin: The pin number.
 * @offset: The offset of extra setting register.
 * @bit: The bit of extra setting register.
 */

struct mtk_spec_pinmux_set {
 unsigned short pin;
 unsigned short offset;
 unsigned char bit;
};

#define MTK_PINMUX_SPEC(_pin, _offset, _bit) \
 {     \
  .pin = _pin,   \
  .offset = _offset,  \
  .bit = _bit,   \
 }

static const struct mtk_drv_group_desc mt2701_drv_grp[] =  {
 /* 0E4E8SR 4/8/12/16 */
 MTK_DRV_GRP(416124),
 /* 0E2E4SR  2/4/6/8 */
 MTK_DRV_GRP(28122),
 /* E8E4E2  2/4/6/8/10/12/14/16 */
 MTK_DRV_GRP(216022)
};

static const struct mtk_pin_drv_grp mt2701_pin_drv[] = {
 MTK_PIN_DRV_GRP(00xf50, 01),
 MTK_PIN_DRV_GRP(10xf50, 01),
 MTK_PIN_DRV_GRP(20xf50, 01),
 MTK_PIN_DRV_GRP(30xf50, 01),
 MTK_PIN_DRV_GRP(40xf50, 01),
 MTK_PIN_DRV_GRP(50xf50, 01),
 MTK_PIN_DRV_GRP(60xf50, 01),
 MTK_PIN_DRV_GRP(70xf50, 41),
 MTK_PIN_DRV_GRP(80xf50, 41),
 MTK_PIN_DRV_GRP(90xf50, 41),
 MTK_PIN_DRV_GRP(100xf50, 81),
 MTK_PIN_DRV_GRP(110xf50, 81),
 MTK_PIN_DRV_GRP(120xf50, 81),
 MTK_PIN_DRV_GRP(130xf50, 81),
 MTK_PIN_DRV_GRP(140xf50, 120),
 MTK_PIN_DRV_GRP(150xf50, 120),
 MTK_PIN_DRV_GRP(160xf60, 00),
 MTK_PIN_DRV_GRP(170xf60, 00),
 MTK_PIN_DRV_GRP(180xf60, 40),
 MTK_PIN_DRV_GRP(190xf60, 40),
 MTK_PIN_DRV_GRP(200xf60, 40),
 MTK_PIN_DRV_GRP(210xf60, 40),
 MTK_PIN_DRV_GRP(220xf60, 80),
 MTK_PIN_DRV_GRP(230xf60, 80),
 MTK_PIN_DRV_GRP(240xf60, 80),
 MTK_PIN_DRV_GRP(250xf60, 80),
 MTK_PIN_DRV_GRP(260xf60, 80),
 MTK_PIN_DRV_GRP(270xf60, 120),
 MTK_PIN_DRV_GRP(280xf60, 120),
 MTK_PIN_DRV_GRP(290xf60, 120),
 MTK_PIN_DRV_GRP(300xf60, 00),
 MTK_PIN_DRV_GRP(310xf60, 00),
 MTK_PIN_DRV_GRP(320xf60, 00),
 MTK_PIN_DRV_GRP(330xf70, 00),
 MTK_PIN_DRV_GRP(340xf70, 00),
 MTK_PIN_DRV_GRP(350xf70, 00),
 MTK_PIN_DRV_GRP(360xf70, 00),
 MTK_PIN_DRV_GRP(370xf70, 00),
 MTK_PIN_DRV_GRP(380xf70, 40),
 MTK_PIN_DRV_GRP(390xf70, 81),
 MTK_PIN_DRV_GRP(400xf70, 81),
 MTK_PIN_DRV_GRP(410xf70, 81),
 MTK_PIN_DRV_GRP(420xf70, 81),
 MTK_PIN_DRV_GRP(430xf70, 120),
 MTK_PIN_DRV_GRP(440xf70, 120),
 MTK_PIN_DRV_GRP(450xf70, 120),
 MTK_PIN_DRV_GRP(470xf80, 00),
 MTK_PIN_DRV_GRP(480xf80, 00),
 MTK_PIN_DRV_GRP(490xf80, 40),
 MTK_PIN_DRV_GRP(500xf70, 40),
 MTK_PIN_DRV_GRP(510xf70, 40),
 MTK_PIN_DRV_GRP(520xf70, 40),
 MTK_PIN_DRV_GRP(530xf80, 120),
 MTK_PIN_DRV_GRP(540xf80, 120),
 MTK_PIN_DRV_GRP(550xf80, 120),
 MTK_PIN_DRV_GRP(560xf80, 120),
 MTK_PIN_DRV_GRP(600xf90, 81),
 MTK_PIN_DRV_GRP(610xf90, 81),
 MTK_PIN_DRV_GRP(620xf90, 81),
 MTK_PIN_DRV_GRP(630xf90, 121),
 MTK_PIN_DRV_GRP(640xf90, 121),
 MTK_PIN_DRV_GRP(650xf90, 121),
 MTK_PIN_DRV_GRP(660xfa0, 01),
 MTK_PIN_DRV_GRP(670xfa0, 01),
 MTK_PIN_DRV_GRP(680xfa0, 01),
 MTK_PIN_DRV_GRP(690xfa0, 01),
 MTK_PIN_DRV_GRP(700xfa0, 01),
 MTK_PIN_DRV_GRP(710xfa0, 01),
 MTK_PIN_DRV_GRP(720xf80, 40),
 MTK_PIN_DRV_GRP(730xf80, 40),
 MTK_PIN_DRV_GRP(740xf80, 40),
 MTK_PIN_DRV_GRP(850xda0, 02),
 MTK_PIN_DRV_GRP(860xd90, 02),
 MTK_PIN_DRV_GRP(870xdb0, 02),
 MTK_PIN_DRV_GRP(880xdb0, 02),
 MTK_PIN_DRV_GRP(890xdb0, 02),
 MTK_PIN_DRV_GRP(900xdb0, 02),
 MTK_PIN_DRV_GRP(1050xd40, 02),
 MTK_PIN_DRV_GRP(1060xd30, 02),
 MTK_PIN_DRV_GRP(1070xd50, 02),
 MTK_PIN_DRV_GRP(1080xd50, 02),
 MTK_PIN_DRV_GRP(1090xd50, 02),
 MTK_PIN_DRV_GRP(1100xd50, 02),
 MTK_PIN_DRV_GRP(1110xce0, 02),
 MTK_PIN_DRV_GRP(1120xce0, 02),
 MTK_PIN_DRV_GRP(1130xce0, 02),
 MTK_PIN_DRV_GRP(1140xce0, 02),
 MTK_PIN_DRV_GRP(1150xce0, 02),
 MTK_PIN_DRV_GRP(1160xcd0, 02),
 MTK_PIN_DRV_GRP(1170xcc0, 02),
 MTK_PIN_DRV_GRP(1180xce0, 02),
 MTK_PIN_DRV_GRP(1190xce0, 02),
 MTK_PIN_DRV_GRP(1200xce0, 02),
 MTK_PIN_DRV_GRP(1210xce0, 02),
 MTK_PIN_DRV_GRP(1260xf80, 40),
 MTK_PIN_DRV_GRP(1880xf70, 40),
 MTK_PIN_DRV_GRP(1890xfe0, 80),
 MTK_PIN_DRV_GRP(1900xfe0, 80),
 MTK_PIN_DRV_GRP(1910xfe0, 80),
 MTK_PIN_DRV_GRP(1920xfe0, 80),
 MTK_PIN_DRV_GRP(1930xfe0, 80),
 MTK_PIN_DRV_GRP(1940xfe0, 120),
 MTK_PIN_DRV_GRP(1950xfe0, 120),
 MTK_PIN_DRV_GRP(1960xfe0, 120),
 MTK_PIN_DRV_GRP(1970xfe0, 120),
 MTK_PIN_DRV_GRP(1980xfe0, 120),
 MTK_PIN_DRV_GRP(1990xf50, 41),
 MTK_PIN_DRV_GRP(2000xfd0, 00),
 MTK_PIN_DRV_GRP(2010xfd0, 00),
 MTK_PIN_DRV_GRP(2020xfd0, 00),
 MTK_PIN_DRV_GRP(2030xfd0, 40),
 MTK_PIN_DRV_GRP(2040xfd0, 40),
 MTK_PIN_DRV_GRP(2050xfd0, 40),
 MTK_PIN_DRV_GRP(2060xfd0, 40),
 MTK_PIN_DRV_GRP(2070xfd0, 40),
 MTK_PIN_DRV_GRP(2080xfd0, 80),
 MTK_PIN_DRV_GRP(2090xfd0, 80),
 MTK_PIN_DRV_GRP(2100xfd0, 121),
 MTK_PIN_DRV_GRP(2110xff0, 01),
 MTK_PIN_DRV_GRP(2120xff0, 01),
 MTK_PIN_DRV_GRP(2130xff0, 01),
 MTK_PIN_DRV_GRP(2140xff0, 01),
 MTK_PIN_DRV_GRP(2150xff0, 01),
 MTK_PIN_DRV_GRP(2160xff0, 01),
 MTK_PIN_DRV_GRP(2170xff0, 01),
 MTK_PIN_DRV_GRP(2180xff0, 01),
 MTK_PIN_DRV_GRP(2190xff0, 01),
 MTK_PIN_DRV_GRP(2200xff0, 01),
 MTK_PIN_DRV_GRP(2210xff0, 01),
 MTK_PIN_DRV_GRP(2220xff0, 01),
 MTK_PIN_DRV_GRP(2230xff0, 01),
 MTK_PIN_DRV_GRP(2240xff0, 01),
 MTK_PIN_DRV_GRP(2250xff0, 01),
 MTK_PIN_DRV_GRP(2260xff0, 01),
 MTK_PIN_DRV_GRP(2270xff0, 01),
 MTK_PIN_DRV_GRP(2280xff0, 01),
 MTK_PIN_DRV_GRP(2290xff0, 01),
 MTK_PIN_DRV_GRP(2300xff0, 01),
 MTK_PIN_DRV_GRP(2310xff0, 01),
 MTK_PIN_DRV_GRP(2320xff0, 01),
 MTK_PIN_DRV_GRP(2330xff0, 01),
 MTK_PIN_DRV_GRP(2340xff0, 01),
 MTK_PIN_DRV_GRP(2350xff0, 01),
 MTK_PIN_DRV_GRP(2360xff0, 40),
 MTK_PIN_DRV_GRP(2370xff0, 40),
 MTK_PIN_DRV_GRP(2380xff0, 40),
 MTK_PIN_DRV_GRP(2390xff0, 40),
 MTK_PIN_DRV_GRP(2400xff0, 40),
 MTK_PIN_DRV_GRP(2410xff0, 40),
 MTK_PIN_DRV_GRP(2420xff0, 80),
 MTK_PIN_DRV_GRP(2430xff0, 80),
 MTK_PIN_DRV_GRP(2480xf00, 00),
 MTK_PIN_DRV_GRP(2490xfc0, 02),
 MTK_PIN_DRV_GRP(2500xfc0, 02),
 MTK_PIN_DRV_GRP(2510xfc0, 02),
 MTK_PIN_DRV_GRP(2520xfc0, 02),
 MTK_PIN_DRV_GRP(2530xfc0, 02),
 MTK_PIN_DRV_GRP(2540xfc0, 02),
 MTK_PIN_DRV_GRP(2550xfc0, 02),
 MTK_PIN_DRV_GRP(2560xfc0, 02),
 MTK_PIN_DRV_GRP(2570xce0, 02),
 MTK_PIN_DRV_GRP(2580xcb0, 02),
 MTK_PIN_DRV_GRP(2590xc90, 02),
 MTK_PIN_DRV_GRP(2600x3a0, 02),
 MTK_PIN_DRV_GRP(2610xd50, 02),
 MTK_PIN_DRV_GRP(2620xf00, 80),
 MTK_PIN_DRV_GRP(2630xf00, 80),
 MTK_PIN_DRV_GRP(2640xf00, 80),
 MTK_PIN_DRV_GRP(2650xf00, 80),
 MTK_PIN_DRV_GRP(2660xf00, 80),
 MTK_PIN_DRV_GRP(2670xf00, 80),
 MTK_PIN_DRV_GRP(2680xf00, 80),
 MTK_PIN_DRV_GRP(2690xf00, 80),
 MTK_PIN_DRV_GRP(2700xf00, 80),
 MTK_PIN_DRV_GRP(2710xf00, 80),
 MTK_PIN_DRV_GRP(2720xf00, 80),
 MTK_PIN_DRV_GRP(2730xf00, 80),
 MTK_PIN_DRV_GRP(2740xf00, 80),
 MTK_PIN_DRV_GRP(2750xf00, 80),
 MTK_PIN_DRV_GRP(2760xf00, 80),
 MTK_PIN_DRV_GRP(2770xf00, 80),
 MTK_PIN_DRV_GRP(2780xf70, 81),
};

static const struct mtk_pin_spec_pupd_set_samereg mt2701_spec_pupd[] = {
 MTK_PIN_PUPD_SPEC_SR(1110xd00, 121314), /* ms0 data7 */
 MTK_PIN_PUPD_SPEC_SR(1120xd00, 8910), /* ms0 data6 */
 MTK_PIN_PUPD_SPEC_SR(1130xd00, 456), /* ms0 data5 */
 MTK_PIN_PUPD_SPEC_SR(1140xd00, 012), /* ms0 data4 */
 MTK_PIN_PUPD_SPEC_SR(1150xd10, 012), /* ms0 rstb */
 MTK_PIN_PUPD_SPEC_SR(1160xcd0, 8910), /* ms0 cmd */
 MTK_PIN_PUPD_SPEC_SR(1170xcc0, 8910), /* ms0 clk */
 MTK_PIN_PUPD_SPEC_SR(1180xcf0, 121314), /* ms0 data3 */
 MTK_PIN_PUPD_SPEC_SR(1190xcf0, 8910), /* ms0 data2 */
 MTK_PIN_PUPD_SPEC_SR(1200xcf0, 456), /* ms0 data1 */
 MTK_PIN_PUPD_SPEC_SR(1210xcf0, 012), /* ms0 data0 */

 MTK_PIN_PUPD_SPEC_SR(1050xd40, 8910), /* ms1 cmd */
 MTK_PIN_PUPD_SPEC_SR(1060xd30, 8910), /* ms1 clk */
 MTK_PIN_PUPD_SPEC_SR(1070xd60, 012), /* ms1 dat0 */
 MTK_PIN_PUPD_SPEC_SR(1080xd60, 1098), /* ms1 dat1 */
 MTK_PIN_PUPD_SPEC_SR(1090xd60, 456), /* ms1 dat2 */
 MTK_PIN_PUPD_SPEC_SR(1100xc60, 121314), /* ms1 dat3 */

 MTK_PIN_PUPD_SPEC_SR(850xda0, 8910), /* ms2 cmd */
 MTK_PIN_PUPD_SPEC_SR(860xd90, 8910), /* ms2 clk */
 MTK_PIN_PUPD_SPEC_SR(870xdc0, 012), /* ms2 dat0 */
 MTK_PIN_PUPD_SPEC_SR(880xdc0, 1098), /* ms2 dat1 */
 MTK_PIN_PUPD_SPEC_SR(890xdc0, 456), /* ms2 dat2 */
 MTK_PIN_PUPD_SPEC_SR(900xdc0, 121314), /* ms2 dat3 */

 MTK_PIN_PUPD_SPEC_SR(2490x140, 012), /* ms0e rstb */
 MTK_PIN_PUPD_SPEC_SR(2500x130, 121314), /* ms0e dat7 */
 MTK_PIN_PUPD_SPEC_SR(2510x130, 8910), /* ms0e dat6 */
 MTK_PIN_PUPD_SPEC_SR(2520x130, 456), /* ms0e dat5 */
 MTK_PIN_PUPD_SPEC_SR(2530x130, 012), /* ms0e dat4 */
 MTK_PIN_PUPD_SPEC_SR(2540xf40, 121314), /* ms0e dat3 */
 MTK_PIN_PUPD_SPEC_SR(2550xf40, 8910), /* ms0e dat2 */
 MTK_PIN_PUPD_SPEC_SR(2560xf40, 456), /* ms0e dat1 */
 MTK_PIN_PUPD_SPEC_SR(2570xf40, 012), /* ms0e dat0 */
 MTK_PIN_PUPD_SPEC_SR(2580xcb0, 8910), /* ms0e cmd */
 MTK_PIN_PUPD_SPEC_SR(2590xc90, 8910), /* ms0e clk */
 MTK_PIN_PUPD_SPEC_SR(2610x140, 8910), /* ms1 ins */
};

static const struct mtk_pin_ies_smt_set mt2701_ies_set[] = {
 MTK_PIN_IES_SMT_SPEC(060xb20, 0),
 MTK_PIN_IES_SMT_SPEC(790xb20, 1),
 MTK_PIN_IES_SMT_SPEC(10130xb30, 3),
 MTK_PIN_IES_SMT_SPEC(14150xb30, 13),
 MTK_PIN_IES_SMT_SPEC(16170xb40, 7),
 MTK_PIN_IES_SMT_SPEC(18210xb40, 13),
 MTK_PIN_IES_SMT_SPEC(22260xb40, 13),
 MTK_PIN_IES_SMT_SPEC(27290xb40, 13),
 MTK_PIN_IES_SMT_SPEC(30320xb40, 7),
 MTK_PIN_IES_SMT_SPEC(33370xb40, 13),
 MTK_PIN_IES_SMT_SPEC(38380xb20, 13),
 MTK_PIN_IES_SMT_SPEC(39420xb40, 13),
 MTK_PIN_IES_SMT_SPEC(43450xb20, 10),
 MTK_PIN_IES_SMT_SPEC(47480xb20, 11),
 MTK_PIN_IES_SMT_SPEC(49490xb20, 12),
 MTK_PIN_IES_SMT_SPEC(50520xb20, 13),
 MTK_PIN_IES_SMT_SPEC(53560xb20, 14),
 MTK_PIN_IES_SMT_SPEC(57580xb20, 15),
 MTK_PIN_IES_SMT_SPEC(59590xb30, 10),
 MTK_PIN_IES_SMT_SPEC(60620xb30, 0),
 MTK_PIN_IES_SMT_SPEC(63650xb30, 1),
 MTK_PIN_IES_SMT_SPEC(66710xb30, 2),
 MTK_PIN_IES_SMT_SPEC(72740xb20, 12),
 MTK_PIN_IES_SMT_SPEC(75760xb30, 3),
 MTK_PIN_IES_SMT_SPEC(77780xb30, 4),
 MTK_PIN_IES_SMT_SPEC(79820xb30, 5),
 MTK_PIN_IES_SMT_SPEC(83840xb30, 2),
 MTK_PIN_IES_SMT_SPEC(85850xda0, 4),
 MTK_PIN_IES_SMT_SPEC(86860xd90, 4),
 MTK_PIN_IES_SMT_SPEC(87900xdb0, 4),
 MTK_PIN_IES_SMT_SPEC(1011040xb30, 6),
 MTK_PIN_IES_SMT_SPEC(1051050xd40, 4),
 MTK_PIN_IES_SMT_SPEC(1061060xd30, 4),
 MTK_PIN_IES_SMT_SPEC(1071100xd50, 4),
 MTK_PIN_IES_SMT_SPEC(1111150xce0, 4),
 MTK_PIN_IES_SMT_SPEC(1161160xcd0, 4),
 MTK_PIN_IES_SMT_SPEC(1171170xcc0, 4),
 MTK_PIN_IES_SMT_SPEC(1181210xce0, 4),
 MTK_PIN_IES_SMT_SPEC(1221250xb30, 7),
 MTK_PIN_IES_SMT_SPEC(1261260xb20, 12),
 MTK_PIN_IES_SMT_SPEC(1271420xb30, 9),
 MTK_PIN_IES_SMT_SPEC(1431600xb30, 10),
 MTK_PIN_IES_SMT_SPEC(1611680xb30, 12),
 MTK_PIN_IES_SMT_SPEC(1691830xb30, 10),
 MTK_PIN_IES_SMT_SPEC(1841860xb30, 9),
 MTK_PIN_IES_SMT_SPEC(1871870xb30, 14),
 MTK_PIN_IES_SMT_SPEC(1881880xb20, 13),
 MTK_PIN_IES_SMT_SPEC(1891930xb30, 15),
 MTK_PIN_IES_SMT_SPEC(1941980xb40, 0),
 MTK_PIN_IES_SMT_SPEC(1991990xb20, 1),
 MTK_PIN_IES_SMT_SPEC(2002020xb40, 1),
 MTK_PIN_IES_SMT_SPEC(2032070xb40, 2),
 MTK_PIN_IES_SMT_SPEC(2082090xb40, 3),
 MTK_PIN_IES_SMT_SPEC(2102100xb40, 4),
 MTK_PIN_IES_SMT_SPEC(2112350xb40, 5),
 MTK_PIN_IES_SMT_SPEC(2362410xb40, 6),
 MTK_PIN_IES_SMT_SPEC(2422430xb40, 7),
 MTK_PIN_IES_SMT_SPEC(2442470xb40, 8),
 MTK_PIN_IES_SMT_SPEC(2482480xb40, 9),
 MTK_PIN_IES_SMT_SPEC(2492570xfc0, 4),
 MTK_PIN_IES_SMT_SPEC(2582580xcb0, 4),
 MTK_PIN_IES_SMT_SPEC(2592590xc90, 4),
 MTK_PIN_IES_SMT_SPEC(2602600x3a0, 4),
 MTK_PIN_IES_SMT_SPEC(2612610xd50, 4),
 MTK_PIN_IES_SMT_SPEC(2622770xb40, 12),
 MTK_PIN_IES_SMT_SPEC(2782780xb40, 13),
};

static const struct mtk_pin_ies_smt_set mt2701_smt_set[] = {
 MTK_PIN_IES_SMT_SPEC(060xb50, 0),
 MTK_PIN_IES_SMT_SPEC(790xb50, 1),
 MTK_PIN_IES_SMT_SPEC(10130xb60, 3),
 MTK_PIN_IES_SMT_SPEC(14150xb60, 13),
 MTK_PIN_IES_SMT_SPEC(16170xb70, 7),
 MTK_PIN_IES_SMT_SPEC(18210xb70, 13),
 MTK_PIN_IES_SMT_SPEC(22260xb70, 13),
 MTK_PIN_IES_SMT_SPEC(27290xb70, 13),
 MTK_PIN_IES_SMT_SPEC(30320xb70, 7),
 MTK_PIN_IES_SMT_SPEC(33370xb70, 13),
 MTK_PIN_IES_SMT_SPEC(38380xb50, 13),
 MTK_PIN_IES_SMT_SPEC(39420xb70, 13),
 MTK_PIN_IES_SMT_SPEC(43450xb50, 10),
 MTK_PIN_IES_SMT_SPEC(47480xb50, 11),
 MTK_PIN_IES_SMT_SPEC(49490xb50, 12),
 MTK_PIN_IES_SMT_SPEC(50520xb50, 13),
 MTK_PIN_IES_SMT_SPEC(53560xb50, 14),
 MTK_PIN_IES_SMT_SPEC(57580xb50, 15),
 MTK_PIN_IES_SMT_SPEC(59590xb60, 10),
 MTK_PIN_IES_SMT_SPEC(60620xb60, 0),
 MTK_PIN_IES_SMT_SPEC(63650xb60, 1),
 MTK_PIN_IES_SMT_SPEC(66710xb60, 2),
 MTK_PIN_IES_SMT_SPEC(72740xb50, 12),
 MTK_PIN_IES_SMT_SPEC(75760xb60, 3),
 MTK_PIN_IES_SMT_SPEC(77780xb60, 4),
 MTK_PIN_IES_SMT_SPEC(79820xb60, 5),
 MTK_PIN_IES_SMT_SPEC(83840xb60, 2),
 MTK_PIN_IES_SMT_SPEC(85850xda0, 11),
 MTK_PIN_IES_SMT_SPEC(86860xd90, 11),
 MTK_PIN_IES_SMT_SPEC(87870xdc0, 3),
 MTK_PIN_IES_SMT_SPEC(88880xdc0, 7),
 MTK_PIN_IES_SMT_SPEC(89890xdc0, 11),
 MTK_PIN_IES_SMT_SPEC(90900xdc0, 15),
 MTK_PIN_IES_SMT_SPEC(1011040xb60, 6),
 MTK_PIN_IES_SMT_SPEC(1051050xd40, 11),
 MTK_PIN_IES_SMT_SPEC(1061060xd30, 11),
 MTK_PIN_IES_SMT_SPEC(1071070xd60, 3),
 MTK_PIN_IES_SMT_SPEC(1081080xd60, 7),
 MTK_PIN_IES_SMT_SPEC(1091090xd60, 11),
 MTK_PIN_IES_SMT_SPEC(1101100xd60, 15),
 MTK_PIN_IES_SMT_SPEC(1111110xd00, 15),
 MTK_PIN_IES_SMT_SPEC(1121120xd00, 11),
 MTK_PIN_IES_SMT_SPEC(1131130xd00, 7),
 MTK_PIN_IES_SMT_SPEC(1141140xd00, 3),
 MTK_PIN_IES_SMT_SPEC(1151150xd10, 3),
 MTK_PIN_IES_SMT_SPEC(1161160xcd0, 11),
 MTK_PIN_IES_SMT_SPEC(1171170xcc0, 11),
 MTK_PIN_IES_SMT_SPEC(1181180xcf0, 15),
 MTK_PIN_IES_SMT_SPEC(1191190xcf0, 11),
 MTK_PIN_IES_SMT_SPEC(1201200xcf0, 7),
 MTK_PIN_IES_SMT_SPEC(1211210xcf0, 3),
 MTK_PIN_IES_SMT_SPEC(1221250xb60, 7),
 MTK_PIN_IES_SMT_SPEC(1261260xb50, 12),
 MTK_PIN_IES_SMT_SPEC(1271420xb60, 9),
 MTK_PIN_IES_SMT_SPEC(1431600xb60, 10),
 MTK_PIN_IES_SMT_SPEC(1611680xb60, 12),
 MTK_PIN_IES_SMT_SPEC(1691830xb60, 10),
 MTK_PIN_IES_SMT_SPEC(1841860xb60, 9),
 MTK_PIN_IES_SMT_SPEC(1871870xb60, 14),
 MTK_PIN_IES_SMT_SPEC(1881880xb50, 13),
 MTK_PIN_IES_SMT_SPEC(1891930xb60, 15),
 MTK_PIN_IES_SMT_SPEC(1941980xb70, 0),
 MTK_PIN_IES_SMT_SPEC(1991990xb50, 1),
 MTK_PIN_IES_SMT_SPEC(2002020xb70, 1),
 MTK_PIN_IES_SMT_SPEC(2032070xb70, 2),
 MTK_PIN_IES_SMT_SPEC(2082090xb70, 3),
 MTK_PIN_IES_SMT_SPEC(2102100xb70, 4),
 MTK_PIN_IES_SMT_SPEC(2112350xb70, 5),
 MTK_PIN_IES_SMT_SPEC(2362410xb70, 6),
 MTK_PIN_IES_SMT_SPEC(2422430xb70, 7),
 MTK_PIN_IES_SMT_SPEC(2442470xb70, 8),
 MTK_PIN_IES_SMT_SPEC(2482480xb70, 9),
 MTK_PIN_IES_SMT_SPEC(2492490x140, 3),
 MTK_PIN_IES_SMT_SPEC(2502500x130, 15),
 MTK_PIN_IES_SMT_SPEC(2512510x130, 11),
 MTK_PIN_IES_SMT_SPEC(2522520x130, 7),
 MTK_PIN_IES_SMT_SPEC(2532530x130, 3),
 MTK_PIN_IES_SMT_SPEC(2542540xf40, 15),
 MTK_PIN_IES_SMT_SPEC(2552550xf40, 11),
 MTK_PIN_IES_SMT_SPEC(2562560xf40, 7),
 MTK_PIN_IES_SMT_SPEC(2572570xf40, 3),
 MTK_PIN_IES_SMT_SPEC(2582580xcb0, 11),
 MTK_PIN_IES_SMT_SPEC(2592590xc90, 11),
 MTK_PIN_IES_SMT_SPEC(2602600x3a0, 11),
 MTK_PIN_IES_SMT_SPEC(2612610x0b0, 3),
 MTK_PIN_IES_SMT_SPEC(2622770xb70, 12),
 MTK_PIN_IES_SMT_SPEC(2782780xb70, 13),
};

static const struct mtk_spec_pinmux_set mt2701_spec_pinmux[] = {
 MTK_PINMUX_SPEC(220xb10, 3),
 MTK_PINMUX_SPEC(230xb10, 4),
 MTK_PINMUX_SPEC(240xb10, 5),
 MTK_PINMUX_SPEC(290xb10, 9),
 MTK_PINMUX_SPEC(2080xb10, 7),
 MTK_PINMUX_SPEC(2090xb10, 8),
 MTK_PINMUX_SPEC(2030xf20, 0),
 MTK_PINMUX_SPEC(2040xf20, 1),
 MTK_PINMUX_SPEC(2490xef0, 0),
 MTK_PINMUX_SPEC(2500xef0, 0),
 MTK_PINMUX_SPEC(2510xef0, 0),
 MTK_PINMUX_SPEC(2520xef0, 0),
 MTK_PINMUX_SPEC(2530xef0, 0),
 MTK_PINMUX_SPEC(2540xef0, 0),
 MTK_PINMUX_SPEC(2550xef0, 0),
 MTK_PINMUX_SPEC(2560xef0, 0),
 MTK_PINMUX_SPEC(2570xef0, 0),
 MTK_PINMUX_SPEC(2580xef0, 0),
 MTK_PINMUX_SPEC(2590xef0, 0),
 MTK_PINMUX_SPEC(2600xef0, 0),
};

static void mt2701_spec_pinmux_set(struct regmap *reg, unsigned int pin,
   unsigned int mode)
{
 unsigned int i, value, mask;
 unsigned int info_num = ARRAY_SIZE(mt2701_spec_pinmux);
 unsigned int spec_flag;

 for (i = 0; i < info_num; i++) {
  if (pin == mt2701_spec_pinmux[i].pin)
   break;
 }

 if (i == info_num)
  return;

 spec_flag = (mode >> 3);
 mask = BIT(mt2701_spec_pinmux[i].bit);
 if (!spec_flag)
  value = mask;
 else
  value = 0;
 regmap_update_bits(reg, mt2701_spec_pinmux[i].offset, mask, value);
}

static void mt2701_spec_dir_set(unsigned int *reg_addr, unsigned int pin)
{
 if (pin > 175)
  *reg_addr += 0x10;
}

static const struct mtk_pinctrl_devdata mt2701_pinctrl_data = {
 .pins = mtk_pins_mt2701,
 .npins = ARRAY_SIZE(mtk_pins_mt2701),
 .grp_desc = mt2701_drv_grp,
 .n_grp_cls = ARRAY_SIZE(mt2701_drv_grp),
 .pin_drv_grp = mt2701_pin_drv,
 .n_pin_drv_grps = ARRAY_SIZE(mt2701_pin_drv),
 .spec_ies = mt2701_ies_set,
 .n_spec_ies = ARRAY_SIZE(mt2701_ies_set),
 .spec_pupd = mt2701_spec_pupd,
 .n_spec_pupd = ARRAY_SIZE(mt2701_spec_pupd),
 .spec_smt = mt2701_smt_set,
 .n_spec_smt = ARRAY_SIZE(mt2701_smt_set),
 .spec_pull_set = mtk_pctrl_spec_pull_set_samereg,
 .spec_ies_smt_set = mtk_pconf_spec_set_ies_smt_range,
 .spec_pinmux_set = mt2701_spec_pinmux_set,
 .spec_dir_set = mt2701_spec_dir_set,
 .dir_offset = 0x0000,
 .pullen_offset = 0x0150,
 .pullsel_offset = 0x0280,
 .dout_offset = 0x0500,
 .din_offset = 0x0630,
 .pinmux_offset = 0x0760,
 .type1_start = 280,
 .type1_end = 280,
 .port_shf = 4,
 .port_mask = 0x1f,
 .port_align = 4,
 .mode_mask = 0xf,
 .mode_per_reg = 5,
 .mode_shf = 4,
 .eint_hw = {
  .port_mask = 6,
  .ports     = 6,
  .ap_num    = 169,
  .db_cnt    = 16,
  .db_time   = debounce_time_mt2701,
 },
};

static const struct of_device_id mt2701_pctrl_match[] = {
 { .compatible = "mediatek,mt2701-pinctrl", .data = &mt2701_pinctrl_data },
 { .compatible = "mediatek,mt7623-pinctrl", .data = &mt2701_pinctrl_data },
 {}
};
MODULE_DEVICE_TABLE(of, mt2701_pctrl_match);

static struct platform_driver mtk_pinctrl_driver = {
 .probe = mtk_pctrl_common_probe,
 .driver = {
  .name = "mediatek-mt2701-pinctrl",
  .of_match_table = mt2701_pctrl_match,
  .pm = pm_sleep_ptr(&mtk_eint_pm_ops),
 },
};

static int __init mtk_pinctrl_init(void)
{
 return platform_driver_register(&mtk_pinctrl_driver);
}
arch_initcall(mtk_pinctrl_init);

Messung V0.5 in Prozent
C=96 H=100 G=97

[zur Elbe Produktseite wechseln0.28QuellennavigatorsAnalyse erneut starten2026-06-08]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002