arm64: dts: ti: Use local header for pinctrl register values
authorNishanth Menon <nm@ti.com>
Wed, 15 Mar 2023 15:52:27 +0000 (10:52 -0500)
committerNishanth Menon <nm@ti.com>
Mon, 20 Mar 2023 17:35:12 +0000 (12:35 -0500)
The DTS uses hardware register values directly in pin controller pin
configuration and not an abstraction of any form.

These definitions were previously put in the bindings header to avoid
code duplication and to provide some context meaning (name), but they
do not fit the purpose of bindings.

Store the constants in a header next to DTS and use them instead of
bindings.

Suggested-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Suggested-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/all/c4d53e9c-dac0-8ccc-dc86-faada324beba@linaro.org/
Link: https://lore.kernel.org/r/20230315155228.1566883-3-nm@ti.com
Signed-off-by: Nishanth Menon <nm@ti.com>
arch/arm64/boot/dts/ti/k3-am62.dtsi
arch/arm64/boot/dts/ti/k3-am62a.dtsi
arch/arm64/boot/dts/ti/k3-am64.dtsi
arch/arm64/boot/dts/ti/k3-am65.dtsi
arch/arm64/boot/dts/ti/k3-j7200.dtsi
arch/arm64/boot/dts/ti/k3-j721e.dtsi
arch/arm64/boot/dts/ti/k3-j721s2.dtsi
arch/arm64/boot/dts/ti/k3-j784s4.dtsi
arch/arm64/boot/dts/ti/k3-pinctrl.h [new file with mode: 0644]

index 37fcbe7a3c336d74844b24d8ac10b7298f290a23..a401f5225243930d141de80413a6530341ddd03c 100644 (file)
@@ -8,9 +8,10 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
        model = "Texas Instruments K3 AM625 SoC";
        compatible = "ti,am625";
index 6eb87c3f9f3cee40452bec6890685196d0cd105a..fe60c9ce21e3db2a9c6435d904e05e7a2d5ea8b6 100644 (file)
@@ -8,9 +8,10 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
        model = "Texas Instruments K3 AM62A SoC";
        compatible = "ti,am62a7";
index c858725133af49a27cd7f1535527d530dbb42f97..60fe95b48312005d0238d67b95017a0a60f5685f 100644 (file)
@@ -8,9 +8,10 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
        model = "Texas Instruments K3 AM642 SoC";
        compatible = "ti,am642";
index c538a0bf3cdda27f2adb8d2cf97b62bf0f909aad..3093ef6b9b23f6da280a82469630a1c9cb636a8f 100644 (file)
@@ -8,9 +8,10 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
        model = "Texas Instruments K3 AM654 SoC";
        compatible = "ti,am654";
index d74f86b0f62229786d81d76d679ffcbf3f535e11..bbe380c72a7ec513288e4def6aa003b4e65cdbc2 100644 (file)
@@ -7,9 +7,10 @@
 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
        model = "Texas Instruments K3 J7200 SoC";
        compatible = "ti,j7200";
index 6975cae644d9655ea216d38d30ab1e1a49d4dd55..4c7d5f9d61a80771c49af2fbad1cc54f14674d8a 100644 (file)
@@ -7,9 +7,10 @@
 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
        model = "Texas Instruments K3 J721E SoC";
        compatible = "ti,j721e";
index 78295ee0fee5b9c0b1ca4821cf858d9b653be8c2..376924726f1f36ac9fb5cd9d09c3745371dcb239 100644 (file)
 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
 
        model = "Texas Instruments K3 J721S2 SoC";
index 3eb0d0568959f83690b452d6f3c55e9e2ac704ae..2e03d84da7d2e79bab826b0d593c16762dc514c1 100644 (file)
 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
+#include "k3-pinctrl.h"
+
 / {
        model = "Texas Instruments K3 J784S4 SoC";
        compatible = "ti,j784s4";
diff --git a/arch/arm64/boot/dts/ti/k3-pinctrl.h b/arch/arm64/boot/dts/ti/k3-pinctrl.h
new file mode 100644 (file)
index 0000000..c97548a
--- /dev/null
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * This header provides constants for pinctrl bindings for TI's K3 SoC
+ * family.
+ *
+ * Copyright (C) 2018-2023 Texas Instruments Incorporated - https://www.ti.com/
+ */
+#ifndef DTS_ARM64_TI_K3_PINCTRL_H
+#define DTS_ARM64_TI_K3_PINCTRL_H
+
+#define PULLUDEN_SHIFT         (16)
+#define PULLTYPESEL_SHIFT      (17)
+#define RXACTIVE_SHIFT         (18)
+
+#define PULL_DISABLE           (1 << PULLUDEN_SHIFT)
+#define PULL_ENABLE            (0 << PULLUDEN_SHIFT)
+
+#define PULL_UP                        (1 << PULLTYPESEL_SHIFT | PULL_ENABLE)
+#define PULL_DOWN              (0 << PULLTYPESEL_SHIFT | PULL_ENABLE)
+
+#define INPUT_EN               (1 << RXACTIVE_SHIFT)
+#define INPUT_DISABLE          (0 << RXACTIVE_SHIFT)
+
+/* Only these macros are expected be used directly in device tree files */
+#define PIN_OUTPUT             (INPUT_DISABLE | PULL_DISABLE)
+#define PIN_OUTPUT_PULLUP      (INPUT_DISABLE | PULL_UP)
+#define PIN_OUTPUT_PULLDOWN    (INPUT_DISABLE | PULL_DOWN)
+#define PIN_INPUT              (INPUT_EN | PULL_DISABLE)
+#define PIN_INPUT_PULLUP       (INPUT_EN | PULL_UP)
+#define PIN_INPUT_PULLDOWN     (INPUT_EN | PULL_DOWN)
+
+#define AM62AX_IOPAD(pa, val, muxmode)         (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM62AX_MCU_IOPAD(pa, val, muxmode)     (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#define AM62X_IOPAD(pa, val, muxmode)          (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM62X_MCU_IOPAD(pa, val, muxmode)      (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#define AM64X_IOPAD(pa, val, muxmode)          (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM64X_MCU_IOPAD(pa, val, muxmode)      (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#define AM65X_IOPAD(pa, val, muxmode)          (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM65X_WKUP_IOPAD(pa, val, muxmode)     (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#define J721E_IOPAD(pa, val, muxmode)          (((pa) & 0x1fff)) ((val) | (muxmode))
+#define J721E_WKUP_IOPAD(pa, val, muxmode)     (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#define J721S2_IOPAD(pa, val, muxmode)         (((pa) & 0x1fff)) ((val) | (muxmode))
+#define J721S2_WKUP_IOPAD(pa, val, muxmode)    (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#define J784S4_IOPAD(pa, val, muxmode)         (((pa) & 0x1fff)) ((val) | (muxmode))
+#define J784S4_WKUP_IOPAD(pa, val, muxmode)    (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#endif