aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch')
-rw-r--r--target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch b/target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch
new file mode 100644
index 0000000000..ac39a3282d
--- /dev/null
+++ b/target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch
@@ -0,0 +1,73 @@
+From eb3742c4250c6a79e7080bdb6286e5df50c7f26a Mon Sep 17 00:00:00 2001
+From: Linus Walleij <linus.walleij@linaro.org>
+Date: Sat, 28 Oct 2017 15:37:17 +0200
+Subject: [PATCH 04/31] pinctrl: Add skew-delay pin config and bindings
+
+Some pin controllers (such as the Gemini) can control the
+expected clock skew and output delay on certain pins with a
+sub-nanosecond granularity. This is typically done by shunting
+in a number of double inverters in front of or behind the pin.
+Make it possible to configure this with a generic binding.
+
+Cc: devicetree@vger.kernel.org
+Acked-by: Rob Herring <robh@kernel.org>
+Acked-by: Hans Ulli Kroll <ulli.kroll@googlemail.com>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+---
+ Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt | 4 ++++
+ drivers/pinctrl/pinconf-generic.c | 2 ++
+ include/linux/pinctrl/pinconf-generic.h | 5 +++++
+ 3 files changed, 11 insertions(+)
+
+--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
++++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
+@@ -271,6 +271,10 @@ output-high - set the pin to output mod
+ sleep-hardware-state - indicate this is sleep related state which will be programmed
+ into the registers for the sleep state.
+ slew-rate - set the slew rate
++skew-delay - this affects the expected clock skew on input pins
++ and the delay before latching a value to an output
++ pin. Typically indicates how many double-inverters are
++ used to delay the signal.
+
+ For example:
+
+--- a/drivers/pinctrl/pinconf-generic.c
++++ b/drivers/pinctrl/pinconf-generic.c
+@@ -49,6 +49,7 @@ static const struct pin_config_item conf
+ PCONFDUMP(PIN_CONFIG_POWER_SOURCE, "pin power source", "selector", true),
+ PCONFDUMP(PIN_CONFIG_SLEEP_HARDWARE_STATE, "sleep hardware state", NULL, false),
+ PCONFDUMP(PIN_CONFIG_SLEW_RATE, "slew rate", NULL, true),
++ PCONFDUMP(PIN_CONFIG_SKEW_DELAY, "skew delay", NULL, true),
+ };
+
+ static void pinconf_generic_dump_one(struct pinctrl_dev *pctldev,
+@@ -181,6 +182,7 @@ static const struct pinconf_generic_para
+ { "power-source", PIN_CONFIG_POWER_SOURCE, 0 },
+ { "sleep-hardware-state", PIN_CONFIG_SLEEP_HARDWARE_STATE, 0 },
+ { "slew-rate", PIN_CONFIG_SLEW_RATE, 0 },
++ { "skew-delay", PIN_CONFIG_SKEW_DELAY, 0 },
+ };
+
+ /**
+--- a/include/linux/pinctrl/pinconf-generic.h
++++ b/include/linux/pinctrl/pinconf-generic.h
+@@ -90,6 +90,10 @@
+ * @PIN_CONFIG_SLEW_RATE: if the pin can select slew rate, the argument to
+ * this parameter (on a custom format) tells the driver which alternative
+ * slew rate to use.
++ * @PIN_CONFIG_SKEW_DELAY: if the pin has programmable skew rate (on inputs)
++ * or latch delay (on outputs) this parameter (in a custom format)
++ * specifies the clock skew or latch delay. It typically controls how
++ * many double inverters are put in front of the line.
+ * @PIN_CONFIG_END: this is the last enumerator for pin configurations, if
+ * you need to pass in custom configurations to the pin controller, use
+ * PIN_CONFIG_END+1 as the base offset.
+@@ -117,6 +121,7 @@ enum pin_config_param {
+ PIN_CONFIG_POWER_SOURCE,
+ PIN_CONFIG_SLEEP_HARDWARE_STATE,
+ PIN_CONFIG_SLEW_RATE,
++ PIN_CONFIG_SKEW_DELAY,
+ PIN_CONFIG_END = 0x7F,
+ PIN_CONFIG_MAX = 0xFF,
+ };