361c89a0da
Core changes: - Minor but nice and important documentation clean-ups. New drivers: - New subdriver for the Qualcomm SDM670 SoC. - New subdriver for the Intel Moorefield SoC. - New trivial support for the NXP Freescale i.MXRT1170 SoC. Other changes and improvements - A major clean-up of the Qualcomm pin control device tree bindings by Krzysztof. - A major header clean-up by Andy. - Some immutable irqchip clean-up for the Actions Semiconductor and Nuvoton drivers. - GPIO helpers for The Cypress cy8c95x0 driver. - Bias handling in the Mediatek MT7986 driver. - Remove the unused pins-are-numbered concept that never flew. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmOXJjQACgkQQRCzN7AZ XXOMaxAAuAv30XWa9sq5cMZKOlY3CLudZmxF5V7PSpFwAXiBPcPZu9ajxlaGJaAf +KOgJhNKYhTb4mBxsQR3X749qFFlxnbEXo9u7ka2bb5bCEkP6ZooqKSGclzAufrp azf1pmJYd2PoaZzwhpuosiWAzLNTeZBQPapU/d9KFIkNhvvY8dFG8YWrjV6YSMTr 6sPWj7/FCqxAzplrQRUXapS+k5JyihyY4aHcFgJwijN6qmSRCxc49SA4VQvkZQZ3 AP6NV1sX9JvbfgOm09Uk5doBnX4vyfeEshOq/c+XZVyr+ECzlGQARkgOXpPhPA8S 28bY6aDaiu5HzOBauM4bp0Z4W7m7YWKWo1cDZNPVEAMF/oATOj/h3YFhLAy66RtV 8BqEEXKvVwqGu0/utwlB1I+yLXvS0DN9C+TZ2y2aLfkgRHUonRrS1OKa0SSvvQp3 3eXmwTJgqf01bcK7kkdDr6+1H6lRmol27Gir6We5jdOCu0LqQcSIYhCr0RzSirWm CHIZQTfo7J4S7pOrz7lhsFciqEQeQfsKXmSorLHrVNcGamIZZEdRhEqVxufqRU4B 0hWoNqxjIDcqyZFFUe211OwNWNOUwMdvw5bCVkmhW5e7AylTrOi1ie1b/SlmDxRl k7NSVnIXdZmog0fYsSZy6qJM0FfTKXF7smnuZcBvgx61/MoCRDw= =PhTP -----END PGP SIGNATURE----- Merge tag 'pinctrl-v6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl Pull pin control updates from Linus Walleij: "The two large chunks is the header clean-up from Andy and the Qualcomm DT bindings clean-up from Krzysztof. Each which could give rise to conflicts, but I haven't seen any. The YAML conversions happening around the device tree is the biggest item in the series and is the result of Rob Herrings ambition to autovalidate these trees against strict schemas and it is paying off in lots of bugs found and ever prettier device trees. Sooner or later the transition will be complete, Krzysztof is fixing up all of the Qualcomm stuff, which is pretty voluminous. Core changes: - minor but nice and important documentation clean-ups New drivers: - subdriver for the Qualcomm SDM670 SoC - subdriver for the Intel Moorefield SoC - trivial support for the NXP Freescale i.MXRT1170 SoC Other changes and improvements - major clean-up of the Qualcomm pin control device tree bindings by Krzysztof - major header clean-up by Andy - some immutable irqchip clean-up for the Actions Semiconductor and Nuvoton drivers - GPIO helpers for The Cypress cy8c95x0 driver - bias handling in the Mediatek MT7986 driver - remove the unused pins-are-numbered concept that never flew" * tag 'pinctrl-v6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (231 commits) pinctrl: thunderbay: fix possible memory leak in thunderbay_build_functions() dt-bindings: pinctrl: st,stm32: Deprecate pins-are-numbered dt-bindings: pinctrl: mediatek,mt65xx: Deprecate pins-are-numbered pinctrl: stm32: Remove check for pins-are-numbered pinctrl: mediatek: common: Remove check for pins-are-numbered pinctrl: qcom: remove duplicate included header files pinctrl: sunxi: d1: Add CAN bus pinmuxes pinctrl: loongson2: Fix some const correctness pinctrl: pinconf-generic: add missing of_node_put() pinctrl: intel: Enumerate PWM device when community has a capability pwm: lpss: Rename pwm_lpss_probe() --> devm_pwm_lpss_probe() pwm: lpss: Allow other drivers to enable PWM LPSS pwm: lpss: Include headers we are the direct user of pwm: lpss: Rename MAX_PWMS --> LPSS_MAX_PWMS pwm: Add a stub for devm_pwmchip_add() pinctrl: k210: call of_node_put() pinctrl: starfive: Use existing variable gpio dt-bindings: pinctrl: semtech,sx150xq: fix match patterns for 16 GPIOs matching pinconf-generic: fix style issues in pin_config_param doc pinctrl: pinctrl-loongson2: fix Kconfig dependency ...
501 lines
18 KiB
C
501 lines
18 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (C) 2021 MediaTek Inc.
|
|
* Author: Zhiyong Tao <zhiyong.tao@mediatek.com>
|
|
*/
|
|
|
|
#include <dt-bindings/pinctrl/mt65xx.h>
|
|
#include <linux/of.h>
|
|
#include <linux/of_device.h>
|
|
#include <linux/module.h>
|
|
#include <linux/pinctrl/pinctrl.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/regmap.h>
|
|
|
|
#include "pinctrl-mtk-common.h"
|
|
#include "pinctrl-mtk-mt8365.h"
|
|
|
|
static const struct mtk_drv_group_desc mt8365_drv_grp[] = {
|
|
/* 0E4E8SR 4/8/12/16 */
|
|
MTK_DRV_GRP(4, 16, 1, 2, 4),
|
|
/* 0E2E4SR 2/4/6/8 */
|
|
MTK_DRV_GRP(2, 8, 1, 2, 2),
|
|
/* E8E4E2 2/4/6/8/10/12/14/16 */
|
|
MTK_DRV_GRP(2, 16, 0, 2, 2)
|
|
};
|
|
|
|
static const struct mtk_pin_drv_grp mt8365_pin_drv[] = {
|
|
|
|
MTK_PIN_DRV_GRP(0, 0x710, 0, 2),
|
|
MTK_PIN_DRV_GRP(1, 0x710, 0, 2),
|
|
MTK_PIN_DRV_GRP(2, 0x710, 0, 2),
|
|
MTK_PIN_DRV_GRP(3, 0x710, 0, 2),
|
|
MTK_PIN_DRV_GRP(4, 0x710, 4, 2),
|
|
MTK_PIN_DRV_GRP(5, 0x710, 4, 2),
|
|
MTK_PIN_DRV_GRP(6, 0x710, 4, 2),
|
|
MTK_PIN_DRV_GRP(7, 0x710, 4, 2),
|
|
MTK_PIN_DRV_GRP(8, 0x710, 8, 2),
|
|
MTK_PIN_DRV_GRP(9, 0x710, 8, 2),
|
|
MTK_PIN_DRV_GRP(10, 0x710, 8, 2),
|
|
MTK_PIN_DRV_GRP(11, 0x710, 8, 2),
|
|
MTK_PIN_DRV_GRP(12, 0x710, 12, 2),
|
|
MTK_PIN_DRV_GRP(13, 0x710, 12, 2),
|
|
MTK_PIN_DRV_GRP(14, 0x710, 12, 2),
|
|
MTK_PIN_DRV_GRP(15, 0x710, 12, 2),
|
|
MTK_PIN_DRV_GRP(16, 0x710, 16, 2),
|
|
MTK_PIN_DRV_GRP(17, 0x710, 16, 2),
|
|
MTK_PIN_DRV_GRP(18, 0x710, 16, 2),
|
|
MTK_PIN_DRV_GRP(19, 0x710, 20, 2),
|
|
MTK_PIN_DRV_GRP(20, 0x710, 24, 2),
|
|
MTK_PIN_DRV_GRP(21, 0x710, 24, 2),
|
|
MTK_PIN_DRV_GRP(22, 0x710, 28, 2),
|
|
MTK_PIN_DRV_GRP(23, 0x720, 0, 2),
|
|
MTK_PIN_DRV_GRP(24, 0x720, 0, 2),
|
|
MTK_PIN_DRV_GRP(25, 0x720, 0, 2),
|
|
MTK_PIN_DRV_GRP(26, 0x720, 4, 2),
|
|
MTK_PIN_DRV_GRP(27, 0x720, 4, 2),
|
|
MTK_PIN_DRV_GRP(28, 0x720, 4, 2),
|
|
MTK_PIN_DRV_GRP(29, 0x720, 4, 2),
|
|
MTK_PIN_DRV_GRP(30, 0x720, 8, 2),
|
|
MTK_PIN_DRV_GRP(31, 0x720, 8, 2),
|
|
MTK_PIN_DRV_GRP(32, 0x720, 8, 2),
|
|
MTK_PIN_DRV_GRP(33, 0x720, 8, 2),
|
|
MTK_PIN_DRV_GRP(34, 0x720, 8, 2),
|
|
MTK_PIN_DRV_GRP(35, 0x720, 12, 2),
|
|
MTK_PIN_DRV_GRP(36, 0x720, 12, 2),
|
|
MTK_PIN_DRV_GRP(37, 0x720, 12, 2),
|
|
MTK_PIN_DRV_GRP(38, 0x720, 12, 2),
|
|
MTK_PIN_DRV_GRP(39, 0x720, 12, 2),
|
|
MTK_PIN_DRV_GRP(40, 0x720, 12, 2),
|
|
MTK_PIN_DRV_GRP(41, 0x720, 16, 2),
|
|
MTK_PIN_DRV_GRP(42, 0x720, 16, 2),
|
|
MTK_PIN_DRV_GRP(43, 0x720, 16, 2),
|
|
MTK_PIN_DRV_GRP(44, 0x720, 16, 2),
|
|
MTK_PIN_DRV_GRP(45, 0x720, 20, 2),
|
|
MTK_PIN_DRV_GRP(46, 0x720, 20, 2),
|
|
MTK_PIN_DRV_GRP(47, 0x720, 20, 2),
|
|
MTK_PIN_DRV_GRP(48, 0x720, 20, 2),
|
|
MTK_PIN_DRV_GRP(49, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(50, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(51, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(52, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(53, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(54, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(55, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(56, 0x720, 24, 2),
|
|
MTK_PIN_DRV_GRP(57, 0x720, 28, 2),
|
|
MTK_PIN_DRV_GRP(58, 0x720, 28, 2),
|
|
MTK_PIN_DRV_GRP(59, 0x730, 0, 2),
|
|
MTK_PIN_DRV_GRP(60, 0x730, 0, 2),
|
|
MTK_PIN_DRV_GRP(61, 0x730, 4, 2),
|
|
MTK_PIN_DRV_GRP(62, 0x730, 4, 2),
|
|
MTK_PIN_DRV_GRP(63, 0x730, 8, 2),
|
|
MTK_PIN_DRV_GRP(64, 0x730, 8, 2),
|
|
MTK_PIN_DRV_GRP(65, 0x730, 12, 2),
|
|
MTK_PIN_DRV_GRP(66, 0x730, 12, 2),
|
|
MTK_PIN_DRV_GRP(67, 0x730, 12, 2),
|
|
MTK_PIN_DRV_GRP(68, 0x730, 12, 2),
|
|
MTK_PIN_DRV_GRP(69, 0x730, 12, 2),
|
|
MTK_PIN_DRV_GRP(70, 0x730, 12, 2),
|
|
MTK_PIN_DRV_GRP(71, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(72, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(73, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(74, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(75, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(76, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(77, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(78, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(79, 0x730, 16, 2),
|
|
MTK_PIN_DRV_GRP(80, 0x730, 20, 2),
|
|
MTK_PIN_DRV_GRP(81, 0x730, 24, 2),
|
|
MTK_PIN_DRV_GRP(82, 0x730, 28, 2),
|
|
MTK_PIN_DRV_GRP(83, 0x730, 28, 2),
|
|
MTK_PIN_DRV_GRP(84, 0x730, 28, 2),
|
|
MTK_PIN_DRV_GRP(85, 0x730, 28, 2),
|
|
MTK_PIN_DRV_GRP(86, 0x740, 12, 2),
|
|
MTK_PIN_DRV_GRP(87, 0x740, 16, 2),
|
|
MTK_PIN_DRV_GRP(88, 0x740, 20, 2),
|
|
MTK_PIN_DRV_GRP(89, 0x740, 24, 2),
|
|
MTK_PIN_DRV_GRP(90, 0x740, 24, 2),
|
|
MTK_PIN_DRV_GRP(91, 0x740, 24, 2),
|
|
MTK_PIN_DRV_GRP(92, 0x740, 24, 2),
|
|
MTK_PIN_DRV_GRP(93, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(94, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(95, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(96, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(97, 0x750, 24, 2),
|
|
MTK_PIN_DRV_GRP(98, 0x750, 28, 2),
|
|
MTK_PIN_DRV_GRP(99, 0x760, 0, 2),
|
|
MTK_PIN_DRV_GRP(100, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(101, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(102, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(103, 0x750, 8, 2),
|
|
MTK_PIN_DRV_GRP(104, 0x760, 20, 2),
|
|
MTK_PIN_DRV_GRP(105, 0x760, 24, 2),
|
|
MTK_PIN_DRV_GRP(106, 0x760, 24, 2),
|
|
MTK_PIN_DRV_GRP(107, 0x760, 24, 2),
|
|
MTK_PIN_DRV_GRP(108, 0x760, 24, 2),
|
|
MTK_PIN_DRV_GRP(109, 0x760, 24, 2),
|
|
MTK_PIN_DRV_GRP(110, 0x760, 28, 2),
|
|
MTK_PIN_DRV_GRP(111, 0x760, 28, 2),
|
|
MTK_PIN_DRV_GRP(112, 0x760, 28, 2),
|
|
MTK_PIN_DRV_GRP(113, 0x760, 28, 2),
|
|
MTK_PIN_DRV_GRP(114, 0x770, 0, 2),
|
|
MTK_PIN_DRV_GRP(115, 0x770, 0, 2),
|
|
MTK_PIN_DRV_GRP(116, 0x770, 0, 2),
|
|
MTK_PIN_DRV_GRP(117, 0x770, 4, 2),
|
|
MTK_PIN_DRV_GRP(118, 0x770, 4, 2),
|
|
MTK_PIN_DRV_GRP(119, 0x770, 4, 2),
|
|
MTK_PIN_DRV_GRP(120, 0x770, 8, 2),
|
|
MTK_PIN_DRV_GRP(121, 0x770, 8, 2),
|
|
MTK_PIN_DRV_GRP(122, 0x770, 8, 2),
|
|
MTK_PIN_DRV_GRP(123, 0x770, 12, 2),
|
|
MTK_PIN_DRV_GRP(124, 0x770, 12, 2),
|
|
MTK_PIN_DRV_GRP(125, 0x770, 12, 2),
|
|
MTK_PIN_DRV_GRP(126, 0x770, 16, 2),
|
|
MTK_PIN_DRV_GRP(127, 0x770, 16, 2),
|
|
MTK_PIN_DRV_GRP(128, 0x770, 16, 2),
|
|
MTK_PIN_DRV_GRP(129, 0x770, 20, 2),
|
|
MTK_PIN_DRV_GRP(130, 0x770, 20, 2),
|
|
MTK_PIN_DRV_GRP(131, 0x770, 20, 2),
|
|
MTK_PIN_DRV_GRP(132, 0x770, 20, 2),
|
|
MTK_PIN_DRV_GRP(133, 0x770, 20, 2),
|
|
MTK_PIN_DRV_GRP(134, 0x770, 20, 2),
|
|
MTK_PIN_DRV_GRP(135, 0x770, 20, 2),
|
|
MTK_PIN_DRV_GRP(136, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(137, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(138, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(139, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(140, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(141, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(142, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(143, 0x770, 24, 2),
|
|
MTK_PIN_DRV_GRP(144, 0x770, 24, 2),
|
|
};
|
|
|
|
static const struct mtk_pin_spec_pupd_set_samereg mt8365_spec_pupd[] = {
|
|
MTK_PIN_PUPD_SPEC_SR(22, 0x070, 0, 2, 1),
|
|
MTK_PIN_PUPD_SPEC_SR(23, 0x070, 3, 5, 4),
|
|
MTK_PIN_PUPD_SPEC_SR(24, 0x070, 6, 8, 7),
|
|
MTK_PIN_PUPD_SPEC_SR(25, 0x070, 9, 11, 10),
|
|
MTK_PIN_PUPD_SPEC_SR(80, 0x070, 14, 13, 12),
|
|
MTK_PIN_PUPD_SPEC_SR(81, 0x070, 17, 16, 15),
|
|
MTK_PIN_PUPD_SPEC_SR(82, 0x070, 20, 19, 18),
|
|
MTK_PIN_PUPD_SPEC_SR(83, 0x070, 23, 22, 21),
|
|
MTK_PIN_PUPD_SPEC_SR(84, 0x070, 26, 25, 24),
|
|
MTK_PIN_PUPD_SPEC_SR(85, 0x070, 29, 28, 27),
|
|
MTK_PIN_PUPD_SPEC_SR(86, 0x080, 2, 1, 0),
|
|
MTK_PIN_PUPD_SPEC_SR(87, 0x080, 5, 4, 3),
|
|
MTK_PIN_PUPD_SPEC_SR(88, 0x080, 8, 7, 6),
|
|
MTK_PIN_PUPD_SPEC_SR(89, 0x080, 11, 10, 9),
|
|
MTK_PIN_PUPD_SPEC_SR(90, 0x080, 14, 13, 12),
|
|
MTK_PIN_PUPD_SPEC_SR(91, 0x080, 17, 16, 15),
|
|
MTK_PIN_PUPD_SPEC_SR(92, 0x080, 20, 19, 18),
|
|
MTK_PIN_PUPD_SPEC_SR(93, 0x080, 23, 22, 21),
|
|
MTK_PIN_PUPD_SPEC_SR(94, 0x080, 26, 25, 24),
|
|
MTK_PIN_PUPD_SPEC_SR(95, 0x080, 29, 28, 27),
|
|
MTK_PIN_PUPD_SPEC_SR(96, 0x090, 2, 1, 0),
|
|
MTK_PIN_PUPD_SPEC_SR(97, 0x090, 5, 4, 3),
|
|
MTK_PIN_PUPD_SPEC_SR(98, 0x090, 8, 7, 6),
|
|
MTK_PIN_PUPD_SPEC_SR(99, 0x090, 11, 10, 9),
|
|
MTK_PIN_PUPD_SPEC_SR(100, 0x090, 14, 13, 12),
|
|
MTK_PIN_PUPD_SPEC_SR(101, 0x090, 17, 16, 15),
|
|
MTK_PIN_PUPD_SPEC_SR(102, 0x090, 20, 19, 18),
|
|
MTK_PIN_PUPD_SPEC_SR(103, 0x090, 23, 22, 21),
|
|
MTK_PIN_PUPD_SPEC_SR(104, 0x090, 26, 25, 24),
|
|
MTK_PIN_PUPD_SPEC_SR(105, 0x090, 29, 28, 27),
|
|
MTK_PIN_PUPD_SPEC_SR(106, 0x0F0, 2, 1, 0),
|
|
MTK_PIN_PUPD_SPEC_SR(107, 0x0F0, 5, 4, 3),
|
|
MTK_PIN_PUPD_SPEC_SR(108, 0x0F0, 8, 7, 6),
|
|
MTK_PIN_PUPD_SPEC_SR(109, 0x0F0, 11, 10, 9),
|
|
};
|
|
|
|
static const struct mtk_pin_ies_smt_set mt8365_ies_set[] = {
|
|
MTK_PIN_IES_SMT_SPEC(0, 3, 0x410, 0),
|
|
MTK_PIN_IES_SMT_SPEC(4, 7, 0x410, 1),
|
|
MTK_PIN_IES_SMT_SPEC(8, 11, 0x410, 2),
|
|
MTK_PIN_IES_SMT_SPEC(12, 15, 0x410, 3),
|
|
MTK_PIN_IES_SMT_SPEC(16, 18, 0x410, 4),
|
|
MTK_PIN_IES_SMT_SPEC(19, 19, 0x410, 5),
|
|
MTK_PIN_IES_SMT_SPEC(20, 21, 0x410, 6),
|
|
MTK_PIN_IES_SMT_SPEC(22, 22, 0x410, 7),
|
|
MTK_PIN_IES_SMT_SPEC(23, 25, 0x410, 8),
|
|
MTK_PIN_IES_SMT_SPEC(26, 29, 0x410, 9),
|
|
MTK_PIN_IES_SMT_SPEC(30, 34, 0x410, 10),
|
|
MTK_PIN_IES_SMT_SPEC(35, 40, 0x410, 11),
|
|
MTK_PIN_IES_SMT_SPEC(41, 44, 0x410, 12),
|
|
MTK_PIN_IES_SMT_SPEC(45, 48, 0x410, 13),
|
|
MTK_PIN_IES_SMT_SPEC(49, 56, 0x410, 14),
|
|
MTK_PIN_IES_SMT_SPEC(57, 58, 0x410, 15),
|
|
MTK_PIN_IES_SMT_SPEC(59, 60, 0x410, 16),
|
|
MTK_PIN_IES_SMT_SPEC(61, 62, 0x410, 17),
|
|
MTK_PIN_IES_SMT_SPEC(63, 64, 0x410, 18),
|
|
MTK_PIN_IES_SMT_SPEC(65, 70, 0x410, 19),
|
|
MTK_PIN_IES_SMT_SPEC(71, 79, 0x410, 20),
|
|
MTK_PIN_IES_SMT_SPEC(80, 80, 0x410, 21),
|
|
MTK_PIN_IES_SMT_SPEC(81, 81, 0x410, 22),
|
|
MTK_PIN_IES_SMT_SPEC(82, 82, 0x410, 23),
|
|
MTK_PIN_IES_SMT_SPEC(83, 83, 0x410, 24),
|
|
MTK_PIN_IES_SMT_SPEC(84, 84, 0x410, 25),
|
|
MTK_PIN_IES_SMT_SPEC(85, 85, 0x410, 26),
|
|
MTK_PIN_IES_SMT_SPEC(86, 86, 0x410, 27),
|
|
MTK_PIN_IES_SMT_SPEC(87, 87, 0x410, 28),
|
|
MTK_PIN_IES_SMT_SPEC(88, 88, 0x410, 29),
|
|
MTK_PIN_IES_SMT_SPEC(89, 89, 0x410, 30),
|
|
MTK_PIN_IES_SMT_SPEC(90, 90, 0x410, 31),
|
|
MTK_PIN_IES_SMT_SPEC(91, 91, 0x420, 0),
|
|
MTK_PIN_IES_SMT_SPEC(92, 92, 0x420, 1),
|
|
MTK_PIN_IES_SMT_SPEC(93, 93, 0x420, 2),
|
|
MTK_PIN_IES_SMT_SPEC(94, 94, 0x420, 3),
|
|
MTK_PIN_IES_SMT_SPEC(95, 95, 0x420, 4),
|
|
MTK_PIN_IES_SMT_SPEC(96, 96, 0x420, 5),
|
|
MTK_PIN_IES_SMT_SPEC(97, 97, 0x420, 6),
|
|
MTK_PIN_IES_SMT_SPEC(98, 98, 0x420, 7),
|
|
MTK_PIN_IES_SMT_SPEC(99, 99, 0x420, 8),
|
|
MTK_PIN_IES_SMT_SPEC(100, 100, 0x420, 9),
|
|
MTK_PIN_IES_SMT_SPEC(101, 101, 0x420, 10),
|
|
MTK_PIN_IES_SMT_SPEC(102, 102, 0x420, 11),
|
|
MTK_PIN_IES_SMT_SPEC(103, 103, 0x420, 12),
|
|
MTK_PIN_IES_SMT_SPEC(104, 104, 0x420, 13),
|
|
MTK_PIN_IES_SMT_SPEC(105, 109, 0x420, 14),
|
|
MTK_PIN_IES_SMT_SPEC(110, 113, 0x420, 15),
|
|
MTK_PIN_IES_SMT_SPEC(114, 116, 0x420, 16),
|
|
MTK_PIN_IES_SMT_SPEC(117, 119, 0x420, 17),
|
|
MTK_PIN_IES_SMT_SPEC(120, 122, 0x420, 18),
|
|
MTK_PIN_IES_SMT_SPEC(123, 125, 0x420, 19),
|
|
MTK_PIN_IES_SMT_SPEC(126, 128, 0x420, 20),
|
|
MTK_PIN_IES_SMT_SPEC(129, 135, 0x420, 21),
|
|
MTK_PIN_IES_SMT_SPEC(136, 144, 0x420, 22),
|
|
};
|
|
|
|
static const struct mtk_pin_ies_smt_set mt8365_smt_set[] = {
|
|
MTK_PIN_IES_SMT_SPEC(0, 0, 0x470, 0),
|
|
MTK_PIN_IES_SMT_SPEC(1, 1, 0x470, 0),
|
|
MTK_PIN_IES_SMT_SPEC(2, 2, 0x470, 0),
|
|
MTK_PIN_IES_SMT_SPEC(3, 3, 0x470, 0),
|
|
MTK_PIN_IES_SMT_SPEC(4, 4, 0x470, 1),
|
|
MTK_PIN_IES_SMT_SPEC(5, 5, 0x470, 1),
|
|
MTK_PIN_IES_SMT_SPEC(6, 6, 0x470, 1),
|
|
MTK_PIN_IES_SMT_SPEC(7, 7, 0x470, 1),
|
|
MTK_PIN_IES_SMT_SPEC(8, 8, 0x470, 2),
|
|
MTK_PIN_IES_SMT_SPEC(9, 9, 0x470, 2),
|
|
MTK_PIN_IES_SMT_SPEC(10, 10, 0x470, 2),
|
|
MTK_PIN_IES_SMT_SPEC(11, 11, 0x470, 2),
|
|
MTK_PIN_IES_SMT_SPEC(12, 12, 0x470, 3),
|
|
MTK_PIN_IES_SMT_SPEC(13, 13, 0x470, 3),
|
|
MTK_PIN_IES_SMT_SPEC(14, 14, 0x470, 3),
|
|
MTK_PIN_IES_SMT_SPEC(15, 15, 0x470, 3),
|
|
MTK_PIN_IES_SMT_SPEC(16, 16, 0x470, 4),
|
|
MTK_PIN_IES_SMT_SPEC(17, 17, 0x470, 4),
|
|
MTK_PIN_IES_SMT_SPEC(18, 18, 0x470, 4),
|
|
MTK_PIN_IES_SMT_SPEC(19, 19, 0x470, 5),
|
|
MTK_PIN_IES_SMT_SPEC(20, 20, 0x470, 6),
|
|
MTK_PIN_IES_SMT_SPEC(21, 21, 0x470, 6),
|
|
MTK_PIN_IES_SMT_SPEC(22, 22, 0x470, 7),
|
|
MTK_PIN_IES_SMT_SPEC(23, 23, 0x470, 8),
|
|
MTK_PIN_IES_SMT_SPEC(24, 24, 0x470, 8),
|
|
MTK_PIN_IES_SMT_SPEC(25, 25, 0x470, 8),
|
|
MTK_PIN_IES_SMT_SPEC(26, 26, 0x470, 9),
|
|
MTK_PIN_IES_SMT_SPEC(27, 27, 0x470, 9),
|
|
MTK_PIN_IES_SMT_SPEC(28, 28, 0x470, 9),
|
|
MTK_PIN_IES_SMT_SPEC(29, 29, 0x470, 9),
|
|
MTK_PIN_IES_SMT_SPEC(30, 30, 0x470, 10),
|
|
MTK_PIN_IES_SMT_SPEC(31, 31, 0x470, 10),
|
|
MTK_PIN_IES_SMT_SPEC(32, 32, 0x470, 10),
|
|
MTK_PIN_IES_SMT_SPEC(33, 33, 0x470, 10),
|
|
MTK_PIN_IES_SMT_SPEC(34, 34, 0x470, 10),
|
|
MTK_PIN_IES_SMT_SPEC(35, 35, 0x470, 11),
|
|
MTK_PIN_IES_SMT_SPEC(36, 36, 0x470, 11),
|
|
MTK_PIN_IES_SMT_SPEC(37, 37, 0x470, 11),
|
|
MTK_PIN_IES_SMT_SPEC(38, 38, 0x470, 11),
|
|
MTK_PIN_IES_SMT_SPEC(39, 39, 0x470, 11),
|
|
MTK_PIN_IES_SMT_SPEC(40, 40, 0x470, 11),
|
|
MTK_PIN_IES_SMT_SPEC(41, 41, 0x470, 12),
|
|
MTK_PIN_IES_SMT_SPEC(42, 42, 0x470, 12),
|
|
MTK_PIN_IES_SMT_SPEC(43, 43, 0x470, 12),
|
|
MTK_PIN_IES_SMT_SPEC(44, 44, 0x470, 12),
|
|
MTK_PIN_IES_SMT_SPEC(45, 45, 0x470, 13),
|
|
MTK_PIN_IES_SMT_SPEC(46, 46, 0x470, 13),
|
|
MTK_PIN_IES_SMT_SPEC(47, 47, 0x470, 13),
|
|
MTK_PIN_IES_SMT_SPEC(48, 48, 0x470, 13),
|
|
MTK_PIN_IES_SMT_SPEC(49, 49, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(50, 50, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(51, 51, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(52, 52, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(53, 53, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(54, 54, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(55, 55, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(56, 56, 0x470, 14),
|
|
MTK_PIN_IES_SMT_SPEC(57, 57, 0x470, 15),
|
|
MTK_PIN_IES_SMT_SPEC(58, 58, 0x470, 15),
|
|
MTK_PIN_IES_SMT_SPEC(59, 59, 0x470, 16),
|
|
MTK_PIN_IES_SMT_SPEC(60, 60, 0x470, 16),
|
|
MTK_PIN_IES_SMT_SPEC(61, 61, 0x470, 17),
|
|
MTK_PIN_IES_SMT_SPEC(62, 62, 0x470, 17),
|
|
MTK_PIN_IES_SMT_SPEC(63, 63, 0x470, 18),
|
|
MTK_PIN_IES_SMT_SPEC(64, 64, 0x470, 18),
|
|
MTK_PIN_IES_SMT_SPEC(65, 65, 0x470, 19),
|
|
MTK_PIN_IES_SMT_SPEC(66, 66, 0x470, 19),
|
|
MTK_PIN_IES_SMT_SPEC(67, 67, 0x470, 19),
|
|
MTK_PIN_IES_SMT_SPEC(68, 68, 0x470, 19),
|
|
MTK_PIN_IES_SMT_SPEC(69, 69, 0x470, 19),
|
|
MTK_PIN_IES_SMT_SPEC(70, 70, 0x470, 19),
|
|
MTK_PIN_IES_SMT_SPEC(71, 71, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(72, 72, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(73, 73, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(74, 74, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(75, 75, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(76, 76, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(77, 77, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(78, 78, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(79, 79, 0x470, 20),
|
|
MTK_PIN_IES_SMT_SPEC(80, 80, 0x470, 21),
|
|
MTK_PIN_IES_SMT_SPEC(81, 81, 0x470, 22),
|
|
MTK_PIN_IES_SMT_SPEC(82, 82, 0x470, 23),
|
|
MTK_PIN_IES_SMT_SPEC(83, 83, 0x470, 24),
|
|
MTK_PIN_IES_SMT_SPEC(84, 84, 0x470, 25),
|
|
MTK_PIN_IES_SMT_SPEC(85, 85, 0x470, 26),
|
|
MTK_PIN_IES_SMT_SPEC(86, 86, 0x470, 27),
|
|
MTK_PIN_IES_SMT_SPEC(87, 87, 0x470, 28),
|
|
MTK_PIN_IES_SMT_SPEC(88, 88, 0x470, 29),
|
|
MTK_PIN_IES_SMT_SPEC(89, 89, 0x470, 30),
|
|
MTK_PIN_IES_SMT_SPEC(90, 90, 0x470, 31),
|
|
MTK_PIN_IES_SMT_SPEC(91, 91, 0x480, 0),
|
|
MTK_PIN_IES_SMT_SPEC(92, 92, 0x480, 1),
|
|
MTK_PIN_IES_SMT_SPEC(93, 93, 0x480, 2),
|
|
MTK_PIN_IES_SMT_SPEC(94, 94, 0x480, 3),
|
|
MTK_PIN_IES_SMT_SPEC(95, 95, 0x480, 4),
|
|
MTK_PIN_IES_SMT_SPEC(96, 96, 0x480, 5),
|
|
MTK_PIN_IES_SMT_SPEC(97, 97, 0x480, 6),
|
|
MTK_PIN_IES_SMT_SPEC(98, 98, 0x480, 7),
|
|
MTK_PIN_IES_SMT_SPEC(99, 99, 0x480, 8),
|
|
MTK_PIN_IES_SMT_SPEC(100, 100, 0x480, 9),
|
|
MTK_PIN_IES_SMT_SPEC(101, 101, 0x480, 10),
|
|
MTK_PIN_IES_SMT_SPEC(102, 102, 0x480, 11),
|
|
MTK_PIN_IES_SMT_SPEC(103, 103, 0x480, 12),
|
|
MTK_PIN_IES_SMT_SPEC(104, 104, 0x480, 13),
|
|
MTK_PIN_IES_SMT_SPEC(105, 105, 0x480, 14),
|
|
MTK_PIN_IES_SMT_SPEC(106, 106, 0x480, 14),
|
|
MTK_PIN_IES_SMT_SPEC(107, 107, 0x480, 14),
|
|
MTK_PIN_IES_SMT_SPEC(108, 108, 0x480, 14),
|
|
MTK_PIN_IES_SMT_SPEC(109, 109, 0x480, 14),
|
|
MTK_PIN_IES_SMT_SPEC(110, 110, 0x480, 15),
|
|
MTK_PIN_IES_SMT_SPEC(111, 111, 0x480, 15),
|
|
MTK_PIN_IES_SMT_SPEC(112, 112, 0x480, 15),
|
|
MTK_PIN_IES_SMT_SPEC(113, 113, 0x480, 15),
|
|
MTK_PIN_IES_SMT_SPEC(114, 114, 0x480, 16),
|
|
MTK_PIN_IES_SMT_SPEC(115, 115, 0x480, 16),
|
|
MTK_PIN_IES_SMT_SPEC(116, 116, 0x480, 16),
|
|
MTK_PIN_IES_SMT_SPEC(117, 117, 0x480, 17),
|
|
MTK_PIN_IES_SMT_SPEC(118, 118, 0x480, 17),
|
|
MTK_PIN_IES_SMT_SPEC(119, 119, 0x480, 17),
|
|
MTK_PIN_IES_SMT_SPEC(120, 120, 0x480, 18),
|
|
MTK_PIN_IES_SMT_SPEC(121, 121, 0x480, 18),
|
|
MTK_PIN_IES_SMT_SPEC(122, 122, 0x480, 18),
|
|
MTK_PIN_IES_SMT_SPEC(123, 123, 0x480, 19),
|
|
MTK_PIN_IES_SMT_SPEC(124, 124, 0x480, 19),
|
|
MTK_PIN_IES_SMT_SPEC(125, 125, 0x480, 19),
|
|
MTK_PIN_IES_SMT_SPEC(126, 126, 0x480, 20),
|
|
MTK_PIN_IES_SMT_SPEC(127, 127, 0x480, 20),
|
|
MTK_PIN_IES_SMT_SPEC(128, 128, 0x480, 20),
|
|
MTK_PIN_IES_SMT_SPEC(129, 129, 0x480, 21),
|
|
MTK_PIN_IES_SMT_SPEC(130, 130, 0x480, 21),
|
|
MTK_PIN_IES_SMT_SPEC(131, 131, 0x480, 21),
|
|
MTK_PIN_IES_SMT_SPEC(132, 132, 0x480, 21),
|
|
MTK_PIN_IES_SMT_SPEC(133, 133, 0x480, 21),
|
|
MTK_PIN_IES_SMT_SPEC(134, 134, 0x480, 21),
|
|
MTK_PIN_IES_SMT_SPEC(135, 135, 0x480, 21),
|
|
MTK_PIN_IES_SMT_SPEC(136, 136, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(137, 137, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(138, 138, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(139, 139, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(140, 140, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(141, 141, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(142, 142, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(143, 143, 0x480, 22),
|
|
MTK_PIN_IES_SMT_SPEC(144, 144, 0x480, 22),
|
|
};
|
|
|
|
static int mt8365_set_clr_mode(struct regmap *regmap,
|
|
unsigned int bit, unsigned int reg_pullen, unsigned int reg_pullsel,
|
|
bool enable, bool isup)
|
|
{
|
|
int ret;
|
|
|
|
ret = regmap_update_bits(regmap, reg_pullen, BIT(bit), enable << bit);
|
|
if (ret)
|
|
return -EINVAL;
|
|
|
|
ret = regmap_update_bits(regmap, reg_pullsel, BIT(bit), isup << bit);
|
|
if (ret)
|
|
return -EINVAL;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static const struct mtk_pinctrl_devdata mt8365_pinctrl_data = {
|
|
.pins = mtk_pins_mt8365,
|
|
.npins = ARRAY_SIZE(mtk_pins_mt8365),
|
|
.grp_desc = mt8365_drv_grp,
|
|
.n_grp_cls = ARRAY_SIZE(mt8365_drv_grp),
|
|
.pin_drv_grp = mt8365_pin_drv,
|
|
.n_pin_drv_grps = ARRAY_SIZE(mt8365_pin_drv),
|
|
.spec_ies = mt8365_ies_set,
|
|
.n_spec_ies = ARRAY_SIZE(mt8365_ies_set),
|
|
.spec_smt = mt8365_smt_set,
|
|
.n_spec_smt = ARRAY_SIZE(mt8365_smt_set),
|
|
.spec_pupd = mt8365_spec_pupd,
|
|
.n_spec_pupd = ARRAY_SIZE(mt8365_spec_pupd),
|
|
.spec_pull_set = mtk_pctrl_spec_pull_set_samereg,
|
|
.spec_ies_smt_set = mtk_pconf_spec_set_ies_smt_range,
|
|
.mt8365_set_clr_mode = mt8365_set_clr_mode,
|
|
.dir_offset = 0x0140,
|
|
.dout_offset = 0x00A0,
|
|
.din_offset = 0x0000,
|
|
.pinmux_offset = 0x01E0,
|
|
.ies_offset = 0x0410,
|
|
.smt_offset = 0x0470,
|
|
.pullen_offset = 0x0860,
|
|
.pullsel_offset = 0x0900,
|
|
.drv_offset = 0x0710,
|
|
.type1_start = 145,
|
|
.type1_end = 145,
|
|
.port_shf = 4,
|
|
.port_mask = 0x1f,
|
|
.port_align = 4,
|
|
.mode_mask = 0x1f,
|
|
.mode_per_reg = 10,
|
|
.mode_shf = 5,
|
|
.eint_hw = {
|
|
.port_mask = 7,
|
|
.ports = 5,
|
|
.ap_num = 160,
|
|
.db_cnt = 160,
|
|
.db_time = debounce_time_mt6765,
|
|
},
|
|
};
|
|
|
|
static const struct of_device_id mt8365_pctrl_match[] = {
|
|
{ .compatible = "mediatek,mt8365-pinctrl", .data = &mt8365_pinctrl_data },
|
|
{}
|
|
};
|
|
|
|
static struct platform_driver mtk_pinctrl_driver = {
|
|
.probe = mtk_pctrl_common_probe,
|
|
.driver = {
|
|
.name = "mediatek-mt8365-pinctrl",
|
|
.of_match_table = mt8365_pctrl_match,
|
|
.pm = &mtk_eint_pm_ops,
|
|
},
|
|
};
|
|
|
|
static int __init mtk_pinctrl_init(void)
|
|
{
|
|
return platform_driver_register(&mtk_pinctrl_driver);
|
|
}
|
|
arch_initcall(mtk_pinctrl_init);
|
|
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_DESCRIPTION("MediaTek MT8365 Pinctrl Driver");
|
|
MODULE_AUTHOR("Zhiyong Tao <zhiyong.tao@mediatek.com>");
|