From 4f74957584cd50786d1d33a3f26867b06a58510f Mon Sep 17 00:00:00 2001 From: Roman Yeryomin Date: Sun, 29 Apr 2018 17:38:07 +0300 Subject: gemini: add 4.14 support This adds the patches to get fairly complete Gemini support using kernel v4.14. It is mainly a backport of patches from kernel v4.16 with omissions of things like graphics that require substantial changes and will be better handled once we move to the v4.16 kernel proper. On top of this are some WIP patches for USB support. Tested on Raidsonic NAS4220B and D-link DNS-313. ChangeLog v4->v5: - Fix ethernet single gmac usecase - Fix USB reset (patch from Hans) - Fix Raidsonic ethernet skew delay - Fix kernel config (bridge, squashfs, jffs2, usb) - Disable second usb port on Raidsonic board until fotg210_hcd is fixed ChangeLog v3->v4: - Make sure to use tabs rather than spaces in base-files. - Use the dns313 image tool from the firmware-utils. - Break out the addition of the v4.14 patches and the removal of the v4.4 patches to separate (big) patches. ChangeLog v2->v3: - Update the kernel config as indicated by Hauke Martens: - Regenerate again after rebasing using kernel_oldconfig dropping a few optimization settings that are now generic - Drop CFG80211 stuff (module) - Drop CIFS stuff (module) - Drop MAC80211 (module) - Drop wireless drivers (module) - Enabled OverlayFS - Added proper DNS-313 boot image generation with the special file header tool. - Disable CMA in the kernel - Enable LZMA compression of the kernel - Consequently name the nas4220b images nas4220b - Update preinit MAC detection script to handle also DNS-313 - Add board.d/03_hdparm to set the disk to spin down after 1 minute by default, if we have the hdparm tool installed ChangeLog v1->v2: - Processed config through kernel_oldconfig - Processed patches through make target/linux/{clean,refresh} V=99 Signed-off-by: Linus Walleij Signed-off-by: Roman Yeryomin --- ...rl-Add-skew-delay-pin-config-and-bindings.patch | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch (limited to 'target/linux/gemini/patches-4.14/0004-pinctrl-Add-skew-delay-pin-config-and-bindings.patch') 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 +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 +Acked-by: Hans Ulli Kroll +Signed-off-by: Linus Walleij +--- + 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, + }; -- cgit v1.2.3