summaryrefslogtreecommitdiff
path: root/kernels/linux-libre-lts-xtreme
diff options
context:
space:
mode:
authorDavid P <megver83@parabola.nu>2018-04-05 17:46:32 -0300
committerDavid P <megver83@parabola.nu>2018-04-05 17:46:32 -0300
commit027e78f5c797eba3df43e8b47c03f3ba7bc20e64 (patch)
tree6621c257f19c6aba170ebc53fb036fbcfba0973c /kernels/linux-libre-lts-xtreme
parent987eddcce2a77dd2f61090eceda91380f2ae38a7 (diff)
downloadabslibre-027e78f5c797eba3df43e8b47c03f3ba7bc20e64.tar.gz
abslibre-027e78f5c797eba3df43e8b47c03f3ba7bc20e64.tar.bz2
abslibre-027e78f5c797eba3df43e8b47c03f3ba7bc20e64.zip
upgpkg: kernels/linux-libre-lts-xtreme 4.9.92_gnu-1
This kernel will remain in the 4.9.x generation because it's the latest version supported by the TCP Stealth patch
Diffstat (limited to 'kernels/linux-libre-lts-xtreme')
-rw-r--r--kernels/linux-libre-lts-xtreme/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch12
-rw-r--r--kernels/linux-libre-lts-xtreme/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch103
-rw-r--r--kernels/linux-libre-lts-xtreme/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch14
-rw-r--r--kernels/linux-libre-lts-xtreme/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch42
-rw-r--r--kernels/linux-libre-lts-xtreme/0003-SMILE-Plug-device-tree-file.patch10
-rw-r--r--kernels/linux-libre-lts-xtreme/0004-fix-mvsdio-eMMC-timing.patch8
-rw-r--r--kernels/linux-libre-lts-xtreme/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch7
-rw-r--r--kernels/linux-libre-lts-xtreme/0006-set-default-cubietruck-led-triggers.patch12
-rw-r--r--kernels/linux-libre-lts-xtreme/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch10
-rw-r--r--kernels/linux-libre-lts-xtreme/0008-disable-USB3-port-on-ODROID-XU.patch27
-rw-r--r--kernels/linux-libre-lts-xtreme/0009-ARM-dove-enable-ethernet-on-D3Plug.patch31
-rw-r--r--kernels/linux-libre-lts-xtreme/0010-power-add-power-sequence-library.patch790
-rw-r--r--kernels/linux-libre-lts-xtreme/0011-usb-core-add-power-sequence-handling-for-USB-devices.patch164
-rw-r--r--kernels/linux-libre-lts-xtreme/0012-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch49
-rw-r--r--kernels/linux-libre-lts-xtreme/0013-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch80
-rw-r--r--kernels/linux-libre-lts-xtreme/0014-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch74
-rw-r--r--kernels/linux-libre-lts-xtreme/60-linux.hook12
-rw-r--r--kernels/linux-libre-lts-xtreme/90-linux.hook2
-rw-r--r--kernels/linux-libre-lts-xtreme/PKGBUILD434
-rw-r--r--kernels/linux-libre-lts-xtreme/change-default-console-loglevel.patch11
-rw-r--r--kernels/linux-libre-lts-xtreme/config.armv7h24
-rw-r--r--kernels/linux-libre-lts-xtreme/config.i68625
-rw-r--r--kernels/linux-libre-lts-xtreme/config.x86_6426
-rw-r--r--kernels/linux-libre-lts-xtreme/linux.install19
24 files changed, 1638 insertions, 348 deletions
diff --git a/kernels/linux-libre-lts-xtreme/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch b/kernels/linux-libre-lts-xtreme/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
index a63d09020..8df0c4761 100644
--- a/kernels/linux-libre-lts-xtreme/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
+++ b/kernels/linux-libre-lts-xtreme/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
@@ -1,7 +1,7 @@
-From 043141070b13388a29ce9f73d1378db6fee9ea00 Mon Sep 17 00:00:00 2001
+From e1c642a72eb85ec98e1903f9391fb29076234369 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@xxxxxx>
Date: Sun, 2 Dec 2012 19:59:28 +0100
-Subject: [PATCH 1/7] ARM: atags: add support for Marvell's u-boot
+Subject: [PATCH 01/14] ARM: atags: add support for Marvell's u-boot
Marvell uses a specific atag in its u-boot which includes among other
information the MAC addresses for up to 4 network interfaces.
@@ -12,10 +12,10 @@ Signed-off-by: Willy Tarreau <w@xxxxxx>
1 file changed, 17 insertions(+)
diff --git a/arch/arm/include/uapi/asm/setup.h b/arch/arm/include/uapi/asm/setup.h
-index 979ff4016404..d1d0c1950fa4 100644
+index 6b335a9ff8c8..614150b53643 100644
--- a/arch/arm/include/uapi/asm/setup.h
+++ b/arch/arm/include/uapi/asm/setup.h
-@@ -143,6 +143,18 @@ struct tag_memclk {
+@@ -144,6 +144,18 @@ struct tag_memclk {
__u32 fmemclk;
};
@@ -34,7 +34,7 @@ index 979ff4016404..d1d0c1950fa4 100644
struct tag {
struct tag_header hdr;
union {
-@@ -165,6 +177,11 @@ struct tag {
+@@ -166,6 +178,11 @@ struct tag {
* DC21285 specific
*/
struct tag_memclk memclk;
@@ -47,5 +47,5 @@ index 979ff4016404..d1d0c1950fa4 100644
};
--
-2.14.2
+2.16.1
diff --git a/kernels/linux-libre-lts-xtreme/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch b/kernels/linux-libre-lts-xtreme/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch
new file mode 100644
index 000000000..a989d666a
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch
@@ -0,0 +1,103 @@
+From 4e54373158caa50df5402fdd3db1794c5394026b Mon Sep 17 00:00:00 2001
+Message-Id: <4e54373158caa50df5402fdd3db1794c5394026b.1516188238.git.jan.steffens@gmail.com>
+From: Serge Hallyn <serge.hallyn@canonical.com>
+Date: Fri, 31 May 2013 19:12:12 +0100
+Subject: [PATCH 1/4] add sysctl to disallow unprivileged CLONE_NEWUSER by
+ default
+
+Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
+[bwh: Remove unneeded binary sysctl bits]
+Signed-off-by: Daniel Micay <danielmicay@gmail.com>
+---
+ kernel/fork.c | 15 +++++++++++++++
+ kernel/sysctl.c | 12 ++++++++++++
+ kernel/user_namespace.c | 3 +++
+ 3 files changed, 30 insertions(+)
+
+diff --git a/kernel/fork.c b/kernel/fork.c
+index 500ce64517d9..35f5860958b4 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -102,6 +102,11 @@
+
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/task.h>
++#ifdef CONFIG_USER_NS
++extern int unprivileged_userns_clone;
++#else
++#define unprivileged_userns_clone 0
++#endif
+
+ /*
+ * Minimum number of threads to boot the kernel
+@@ -1554,6 +1559,10 @@ static __latent_entropy struct task_struct *copy_process(
+ if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))
+ return ERR_PTR(-EINVAL);
+
++ if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone)
++ if (!capable(CAP_SYS_ADMIN))
++ return ERR_PTR(-EPERM);
++
+ /*
+ * Thread groups must share signals as well, and detached threads
+ * can only be started up within the thread group.
+@@ -2347,6 +2356,12 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
+ if (unshare_flags & CLONE_NEWNS)
+ unshare_flags |= CLONE_FS;
+
++ if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) {
++ err = -EPERM;
++ if (!capable(CAP_SYS_ADMIN))
++ goto bad_unshare_out;
++ }
++
+ err = check_unshare_flags(unshare_flags);
+ if (err)
+ goto bad_unshare_out;
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index 56aca862c4f5..e8402ba393c1 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -105,6 +105,9 @@ extern int core_uses_pid;
+ extern char core_pattern[];
+ extern unsigned int core_pipe_limit;
+ #endif
++#ifdef CONFIG_USER_NS
++extern int unprivileged_userns_clone;
++#endif
+ extern int pid_max;
+ extern int pid_max_min, pid_max_max;
+ extern int percpu_pagelist_fraction;
+@@ -513,6 +516,15 @@ static struct ctl_table kern_table[] = {
+ .proc_handler = proc_dointvec,
+ },
+ #endif
++#ifdef CONFIG_USER_NS
++ {
++ .procname = "unprivileged_userns_clone",
++ .data = &unprivileged_userns_clone,
++ .maxlen = sizeof(int),
++ .mode = 0644,
++ .proc_handler = proc_dointvec,
++ },
++#endif
+ #ifdef CONFIG_PROC_SYSCTL
+ {
+ .procname = "tainted",
+diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
+index c490f1e4313b..dd03bd39d7bf 100644
+--- a/kernel/user_namespace.c
++++ b/kernel/user_namespace.c
+@@ -24,6 +24,9 @@
+ #include <linux/projid.h>
+ #include <linux/fs_struct.h>
+
++/* sysctl */
++int unprivileged_userns_clone;
++
+ static struct kmem_cache *user_ns_cachep __read_mostly;
+ static DEFINE_MUTEX(userns_state_mutex);
+
+--
+2.15.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch b/kernels/linux-libre-lts-xtreme/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
index f7d3a9bc6..1f782d2b4 100644
--- a/kernels/linux-libre-lts-xtreme/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
+++ b/kernels/linux-libre-lts-xtreme/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
@@ -1,8 +1,8 @@
-From 278772450de941a06782c07a43e7511b6bdbf430 Mon Sep 17 00:00:00 2001
+From d52721ca6718ac91256b3073dd6a4749940bc0d3 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@xxxxxx>
Date: Sun, 2 Dec 2012 19:56:58 +0100
-Subject: [PATCH 2/7] ARM: atags/fdt: retrieve MAC addresses from Marvell boot
- loader
+Subject: [PATCH 02/14] ARM: atags/fdt: retrieve MAC addresses from Marvell
+ boot loader
The atags are parsed and if a Marvell atag is found, up to 4 MAC
addresses are extracted there and assigned to node aliases eth0..3
@@ -17,10 +17,10 @@ Signed-off-by: Willy Tarreau <w@xxxxxx>
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/compressed/atags_to_fdt.c b/arch/arm/boot/compressed/atags_to_fdt.c
-index 9448aa0c6686..ac7b6ae6c00f 100644
+index 41fa7316c52b..807ed160a4b9 100644
--- a/arch/arm/boot/compressed/atags_to_fdt.c
+++ b/arch/arm/boot/compressed/atags_to_fdt.c
-@@ -18,7 +18,7 @@ static int node_offset(void *fdt, const char *node_path)
+@@ -19,7 +19,7 @@ static int node_offset(void *fdt, const char *node_path)
}
static int setprop(void *fdt, const char *node_path, const char *property,
@@ -29,7 +29,7 @@ index 9448aa0c6686..ac7b6ae6c00f 100644
{
int offset = node_offset(fdt, node_path);
if (offset < 0)
-@@ -179,6 +179,12 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space)
+@@ -180,6 +180,12 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space)
initrd_start);
setprop_cell(fdt, "/chosen", "linux,initrd-end",
initrd_start + initrd_size);
@@ -43,5 +43,5 @@ index 9448aa0c6686..ac7b6ae6c00f 100644
}
--
-2.14.2
+2.16.1
diff --git a/kernels/linux-libre-lts-xtreme/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch b/kernels/linux-libre-lts-xtreme/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch
new file mode 100644
index 000000000..f77c9b5c1
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch
@@ -0,0 +1,42 @@
+From e722c8d112f0aa9621d7d4da5223cfc7aeb45e88 Mon Sep 17 00:00:00 2001
+Message-Id: <e722c8d112f0aa9621d7d4da5223cfc7aeb45e88.1516188238.git.jan.steffens@gmail.com>
+In-Reply-To: <4e54373158caa50df5402fdd3db1794c5394026b.1516188238.git.jan.steffens@gmail.com>
+References: <4e54373158caa50df5402fdd3db1794c5394026b.1516188238.git.jan.steffens@gmail.com>
+From: Jim Bride <jim.bride@linux.intel.com>
+Date: Mon, 6 Nov 2017 13:38:57 -0800
+Subject: [PATCH 4/4] drm/i915/edp: Only use the alternate fixed mode if it's
+ asked for
+
+In commit dc911f5bd8aa ("drm/i915/edp: Allow alternate fixed mode for
+eDP if available."), the patch allows for the use of an alternate fixed
+mode if it is available, but the patch was not ensuring that the only
+time the alternate mode is used is when it is specifically requested.
+This patch adds an additional comparison to intel_edp_compare_alt_mode
+to ensure that we only use the alternate mode if it is directly
+requested.
+
+Fixes: dc911f5bd8aac ("Allow alternate fixed mode for eDP if available.")
+Cc: David Weinehall <david.weinehall@linux.intel.com>
+Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
+Signed-off-by: Jim Bride <jim.bride@linux.intel.com>
+---
+ drivers/gpu/drm/i915/intel_dp.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
+index 09f274419eea..838cee312e8e 100644
+--- a/drivers/gpu/drm/i915/intel_dp.c
++++ b/drivers/gpu/drm/i915/intel_dp.c
+@@ -1632,7 +1632,8 @@ static bool intel_edp_compare_alt_mode(struct drm_display_mode *m1,
+ m1->vdisplay == m2->vdisplay &&
+ m1->vsync_start == m2->vsync_start &&
+ m1->vsync_end == m2->vsync_end &&
+- m1->vtotal == m2->vtotal);
++ m1->vtotal == m2->vtotal &&
++ m1->vrefresh == m2->vrefresh);
+ return bres;
+ }
+
+--
+2.15.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0003-SMILE-Plug-device-tree-file.patch b/kernels/linux-libre-lts-xtreme/0003-SMILE-Plug-device-tree-file.patch
index 980a1fc2d..e6cab4cd4 100644
--- a/kernels/linux-libre-lts-xtreme/0003-SMILE-Plug-device-tree-file.patch
+++ b/kernels/linux-libre-lts-xtreme/0003-SMILE-Plug-device-tree-file.patch
@@ -1,7 +1,7 @@
-From db678c33357f6349df02b0f4979fc8c9ee365697 Mon Sep 17 00:00:00 2001
+From f8f42603eeec186337ebab563de5b91ae6050de6 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Fri, 5 Sep 2014 15:41:19 -0600
-Subject: [PATCH 3/7] SMILE Plug device tree file
+Subject: [PATCH 03/14] SMILE Plug device tree file
This adds a dts file for the SMILE Plug, which only differs from the Mirabox
dts with the LED definitions.
@@ -14,10 +14,10 @@ Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
create mode 100644 arch/arm/boot/dts/armada-370-smileplug.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index faf46abaa4a2..aecdcfa7a67b 100644
+index d0381e9caf21..e142999e7cff 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -1010,6 +1010,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
+@@ -1046,6 +1046,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
armada-370-db.dtb \
armada-370-dlink-dns327l.dtb \
armada-370-mirabox.dtb \
@@ -205,5 +205,5 @@ index 000000000000..d01308ab848b
+ };
+};
--
-2.14.2
+2.16.1
diff --git a/kernels/linux-libre-lts-xtreme/0004-fix-mvsdio-eMMC-timing.patch b/kernels/linux-libre-lts-xtreme/0004-fix-mvsdio-eMMC-timing.patch
index 41b592420..842dfcd77 100644
--- a/kernels/linux-libre-lts-xtreme/0004-fix-mvsdio-eMMC-timing.patch
+++ b/kernels/linux-libre-lts-xtreme/0004-fix-mvsdio-eMMC-timing.patch
@@ -1,7 +1,7 @@
-From 1b4696de4df2ebd2d2a0da05a284705e11427e06 Mon Sep 17 00:00:00 2001
+From c6275cb1cf73c56e9c2e74ae7c41abf3b70cb5ae Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Fri, 5 Sep 2014 15:43:56 -0600
-Subject: [PATCH 4/7] fix mvsdio eMMC timing
+Subject: [PATCH 04/14] fix mvsdio eMMC timing
These changes from Globalscale change the MMC timing to allow the eMMC versions
of the Mirabox and SMILE Plug to work.
@@ -12,7 +12,7 @@ Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
-index 58d74b8d6c79..c9715530d676 100644
+index 210247b3d11a..1a1802dc9ef4 100644
--- a/drivers/mmc/host/mvsdio.c
+++ b/drivers/mmc/host/mvsdio.c
@@ -93,7 +93,7 @@ static int mvsd_setup_data(struct mvsd_host *host, struct mmc_data *data)
@@ -34,5 +34,5 @@ index 58d74b8d6c79..c9715530d676 100644
host->clock = ios->clock;
host->ns_per_clk = 1000000000 / (host->base_clock / (m+1));
--
-2.14.2
+2.16.1
diff --git a/kernels/linux-libre-lts-xtreme/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch b/kernels/linux-libre-lts-xtreme/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
index 788a14239..ad19d606d 100644
--- a/kernels/linux-libre-lts-xtreme/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
+++ b/kernels/linux-libre-lts-xtreme/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
@@ -1,7 +1,8 @@
-From ffd117b73c6a0185d3089ec9abee06122e88eecb Mon Sep 17 00:00:00 2001
+From 0764c77a4c04d9e7d770e62ac6f8edac76a39183 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 18 Feb 2014 01:43:50 -0300
-Subject: [PATCH 5/7] net/smsc95xx: Allow mac address to be set as a parameter
+Subject: [PATCH 05/14] net/smsc95xx: Allow mac address to be set as a
+ parameter
---
drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++
@@ -91,5 +92,5 @@ index 309b88acd3d0..7bc9feb891a1 100644
/* maybe the boot loader passed the MAC address in devicetree */
--
-2.14.2
+2.16.1
diff --git a/kernels/linux-libre-lts-xtreme/0006-set-default-cubietruck-led-triggers.patch b/kernels/linux-libre-lts-xtreme/0006-set-default-cubietruck-led-triggers.patch
index 4819bd700..ff270752a 100644
--- a/kernels/linux-libre-lts-xtreme/0006-set-default-cubietruck-led-triggers.patch
+++ b/kernels/linux-libre-lts-xtreme/0006-set-default-cubietruck-led-triggers.patch
@@ -1,7 +1,7 @@
-From e2567ba6352c663819406b73d4aa3aa31ad4ca06 Mon Sep 17 00:00:00 2001
+From 8049afc8467f9f7fdeb3b7db97e0e8c64805e867 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Sat, 14 Feb 2015 12:32:27 +0100
-Subject: [PATCH 6/7] set default cubietruck led triggers
+Subject: [PATCH 06/14] set default cubietruck led triggers
Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
---
@@ -9,10 +9,10 @@ Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
1 file changed, 2 insertions(+)
diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
-index 852a0aa24dce..82c963629a55 100644
+index 8c9bedc602ec..b3a765ba03fd 100644
--- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
+++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
-@@ -69,6 +69,7 @@
+@@ -80,6 +80,7 @@
blue {
label = "cubietruck:blue:usr";
gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
@@ -20,7 +20,7 @@ index 852a0aa24dce..82c963629a55 100644
};
orange {
-@@ -84,6 +85,7 @@
+@@ -95,6 +96,7 @@
green {
label = "cubietruck:green:usr";
gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>;
@@ -29,5 +29,5 @@ index 852a0aa24dce..82c963629a55 100644
};
--
-2.14.2
+2.16.1
diff --git a/kernels/linux-libre-lts-xtreme/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch b/kernels/linux-libre-lts-xtreme/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
index edc81ae30..a8836586a 100644
--- a/kernels/linux-libre-lts-xtreme/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
+++ b/kernels/linux-libre-lts-xtreme/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
@@ -1,7 +1,7 @@
-From dc9e6fcc9675737091fb99550b361aea81a94b90 Mon Sep 17 00:00:00 2001
+From fa5e1322788ebe804da87c671b6491b21d143d18 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Thu, 11 Aug 2016 00:42:37 -0600
-Subject: [PATCH 7/7] exynos4412-odroid: set higher minimum buck2 regulator
+Subject: [PATCH 07/14] exynos4412-odroid: set higher minimum buck2 regulator
voltage
Set a higher minimum voltage to help reboot issue.
@@ -13,10 +13,10 @@ Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
-index 102acd78be15..5b65992e5667 100644
+index a21be71000c1..65cdf0d9c512 100644
--- a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
+++ b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
-@@ -423,7 +423,7 @@
+@@ -421,7 +421,7 @@
buck2_reg: BUCK2 {
regulator-name = "vdd_arm";
@@ -26,5 +26,5 @@ index 102acd78be15..5b65992e5667 100644
regulator-always-on;
regulator-boot-on;
--
-2.14.2
+2.16.1
diff --git a/kernels/linux-libre-lts-xtreme/0008-disable-USB3-port-on-ODROID-XU.patch b/kernels/linux-libre-lts-xtreme/0008-disable-USB3-port-on-ODROID-XU.patch
new file mode 100644
index 000000000..868d3d5f1
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0008-disable-USB3-port-on-ODROID-XU.patch
@@ -0,0 +1,27 @@
+From f9e3db4a1d7ec8578be2012ca727c8a2259f8de8 Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Sat, 25 Feb 2017 19:39:51 -0700
+Subject: [PATCH 08/14] disable USB3 port on ODROID-XU
+
+Ports report over-current condition and are non-operable.
+
+Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
+---
+ arch/arm/boot/dts/exynos5410-odroidxu.dts | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm/boot/dts/exynos5410-odroidxu.dts b/arch/arm/boot/dts/exynos5410-odroidxu.dts
+index a45eaae33f8f..7f7de094724e 100644
+--- a/arch/arm/boot/dts/exynos5410-odroidxu.dts
++++ b/arch/arm/boot/dts/exynos5410-odroidxu.dts
+@@ -630,6 +630,7 @@
+
+ &usbdrd_dwc3_0 {
+ dr_mode = "host";
++ status = "disabled";
+ };
+
+ &usbdrd_dwc3_1 {
+--
+2.16.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0009-ARM-dove-enable-ethernet-on-D3Plug.patch b/kernels/linux-libre-lts-xtreme/0009-ARM-dove-enable-ethernet-on-D3Plug.patch
new file mode 100644
index 000000000..a1c658823
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0009-ARM-dove-enable-ethernet-on-D3Plug.patch
@@ -0,0 +1,31 @@
+From 0025f973fdfa0c4409439ee65a4c074241e1d210 Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Sun, 7 May 2017 13:32:25 -0600
+Subject: [PATCH 09/14] ARM: dove: enable ethernet on D3Plug
+
+Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
+---
+ arch/arm/boot/dts/dove-d3plug.dts | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/arch/arm/boot/dts/dove-d3plug.dts b/arch/arm/boot/dts/dove-d3plug.dts
+index 826026c28f90..a4c9963e1261 100644
+--- a/arch/arm/boot/dts/dove-d3plug.dts
++++ b/arch/arm/boot/dts/dove-d3plug.dts
+@@ -61,6 +61,13 @@
+ &uart0 { status = "okay"; };
+ &sata0 { status = "okay"; };
+ &i2c0 { status = "okay"; };
++&mdio { status = "okay"; };
++&eth { status = "okay"; };
++
++&ethphy {
++ compatible = "marvell,88e1310";
++ reg = <1>;
++};
+
+ /* Samsung M8G2F eMMC */
+ &sdio0 {
+--
+2.16.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0010-power-add-power-sequence-library.patch b/kernels/linux-libre-lts-xtreme/0010-power-add-power-sequence-library.patch
new file mode 100644
index 000000000..74d8a615d
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0010-power-add-power-sequence-library.patch
@@ -0,0 +1,790 @@
+From c63f0d2231c841534a30c60db102ad9afc835994 Mon Sep 17 00:00:00 2001
+From: Peter Chen <peter.chen@nxp.com>
+Date: Wed, 21 Jun 2017 14:42:03 +0800
+Subject: [PATCH 10/14] power: add power sequence library
+
+We have an well-known problem that the device needs to do some power
+sequence before it can be recognized by related host, the typical
+example like hard-wired mmc devices and usb devices.
+
+This power sequence is hard to be described at device tree and handled by
+related host driver, so we have created a common power sequence
+library to cover this requirement. The core code has supplied
+some common helpers for host driver, and individual power sequence
+libraries handle kinds of power sequence for devices. The pwrseq
+librares always need to allocate extra instance for compatible
+string match.
+
+pwrseq_generic is intended for general purpose of power sequence, which
+handles gpios and clocks currently, and can cover other controls in
+future. The host driver just needs to call of_pwrseq_on/of_pwrseq_off
+if only one power sequence is needed, else call of_pwrseq_on_list
+/of_pwrseq_off_list instead (eg, USB hub driver).
+
+For new power sequence library, it needs to add its compatible string
+and allocation function at pwrseq_match_table_list, then the pwrseq
+core will match it with DT's, and choose this library at runtime.
+
+Signed-off-by: Peter Chen <peter.chen@nxp.com>
+Tested-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
+Tested-by Joshua Clayton <stillcompiling@gmail.com>
+Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
+Tested-by: Matthias Kaehlcke <mka@chromium.org>
+---
+ Documentation/power/power-sequence/design.rst | 54 +++++
+ MAINTAINERS | 9 +
+ drivers/power/Kconfig | 1 +
+ drivers/power/Makefile | 1 +
+ drivers/power/pwrseq/Kconfig | 20 ++
+ drivers/power/pwrseq/Makefile | 2 +
+ drivers/power/pwrseq/core.c | 293 ++++++++++++++++++++++++++
+ drivers/power/pwrseq/pwrseq_generic.c | 210 ++++++++++++++++++
+ include/linux/power/pwrseq.h | 84 ++++++++
+ 9 files changed, 674 insertions(+)
+ create mode 100644 Documentation/power/power-sequence/design.rst
+ create mode 100644 drivers/power/pwrseq/Kconfig
+ create mode 100644 drivers/power/pwrseq/Makefile
+ create mode 100644 drivers/power/pwrseq/core.c
+ create mode 100644 drivers/power/pwrseq/pwrseq_generic.c
+ create mode 100644 include/linux/power/pwrseq.h
+
+diff --git a/Documentation/power/power-sequence/design.rst b/Documentation/power/power-sequence/design.rst
+new file mode 100644
+index 000000000000..554608e5f3b6
+--- /dev/null
++++ b/Documentation/power/power-sequence/design.rst
+@@ -0,0 +1,54 @@
++====================================
++Power Sequence Library
++====================================
++
++:Date: Feb, 2017
++:Author: Peter Chen <peter.chen@nxp.com>
++
++
++Introduction
++============
++
++We have an well-known problem that the device needs to do a power
++sequence before it can be recognized by related host, the typical
++examples are hard-wired mmc devices and usb devices. The host controller
++can't know what kinds of this device is in its bus if the power
++sequence has not done, since the related devices driver's probe calling
++is determined by runtime according to eunumeration results. Besides,
++the devices may have custom power sequence, so the power sequence library
++which is independent with the devices is needed.
++
++Design
++============
++
++The power sequence library includes the core file and customer power
++sequence library. The core file exports interfaces are called by
++host controller driver for power sequence and customer power sequence
++library files to register its power sequence instance to global
++power sequence list. The custom power sequence library creates power
++sequence instance and implement custom power sequence.
++
++Since the power sequence describes hardware design, the description is
++located at board description file, eg, device tree dts file. And
++a specific power sequence belongs to device, so its description
++is under the device node, please refer to:
++Documentation/devicetree/bindings/power/pwrseq/pwrseq-generic.txt
++
++Custom power sequence library allocates one power sequence instance at
++bootup periods using postcore_initcall, this static allocated instance is
++used to compare with device-tree (DT) node to see if this library can be
++used for the node or not. When the result is matched, the core API will
++try to get resourses (->get, implemented at each library) for power
++sequence, if all resources are got, it will try to allocate another
++instance for next possible request from host driver.
++
++Then, the host controller driver can carry out power sequence on for this
++DT node, the library will do corresponding operations, like open clocks,
++toggle gpio, etc. The power sequence off routine will close and free the
++resources, and is called when the parent is removed. And the power
++sequence suspend and resume routine can be called at host driver's
++suspend and resume routine if needed.
++
++The exported interfaces
++.. kernel-doc:: drivers/power/pwrseq/core.c
++ :export:
+diff --git a/MAINTAINERS b/MAINTAINERS
+index 845fc25812f1..c0925efb554c 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -10898,6 +10898,15 @@ F: drivers/firmware/psci*.c
+ F: include/linux/psci.h
+ F: include/uapi/linux/psci.h
+
++POWER SEQUENCE LIBRARY
++M: Peter Chen <Peter.Chen@nxp.com>
++T: git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
++L: linux-pm@vger.kernel.org
++S: Maintained
++F: Documentation/devicetree/bindings/power/pwrseq/
++F: drivers/power/pwrseq/
++F: include/linux/power/pwrseq.h
++
+ POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
+ M: Sebastian Reichel <sre@kernel.org>
+ L: linux-pm@vger.kernel.org
+diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
+index 63454b5cac27..c1bb0465f956 100644
+--- a/drivers/power/Kconfig
++++ b/drivers/power/Kconfig
+@@ -1,3 +1,4 @@
+ source "drivers/power/avs/Kconfig"
+ source "drivers/power/reset/Kconfig"
+ source "drivers/power/supply/Kconfig"
++source "drivers/power/pwrseq/Kconfig"
+diff --git a/drivers/power/Makefile b/drivers/power/Makefile
+index ff35c712d824..7db80354b691 100644
+--- a/drivers/power/Makefile
++++ b/drivers/power/Makefile
+@@ -1,3 +1,4 @@
+ obj-$(CONFIG_POWER_AVS) += avs/
+ obj-$(CONFIG_POWER_RESET) += reset/
+ obj-$(CONFIG_POWER_SUPPLY) += supply/
++obj-$(CONFIG_POWER_SEQUENCE) += pwrseq/
+diff --git a/drivers/power/pwrseq/Kconfig b/drivers/power/pwrseq/Kconfig
+new file mode 100644
+index 000000000000..c6b356926cca
+--- /dev/null
++++ b/drivers/power/pwrseq/Kconfig
+@@ -0,0 +1,20 @@
++#
++# Power Sequence library
++#
++
++menuconfig POWER_SEQUENCE
++ bool "Power sequence control"
++ help
++ It is used for drivers which needs to do power sequence
++ (eg, turn on clock, toggle reset gpio) before the related
++ devices can be found by hardware, eg, USB bus.
++
++if POWER_SEQUENCE
++
++config PWRSEQ_GENERIC
++ bool "Generic power sequence control"
++ depends on OF
++ help
++ This is the generic power sequence control library, and is
++ supposed to support common power sequence usage.
++endif
+diff --git a/drivers/power/pwrseq/Makefile b/drivers/power/pwrseq/Makefile
+new file mode 100644
+index 000000000000..ad82389028c2
+--- /dev/null
++++ b/drivers/power/pwrseq/Makefile
+@@ -0,0 +1,2 @@
++obj-$(CONFIG_POWER_SEQUENCE) += core.o
++obj-$(CONFIG_PWRSEQ_GENERIC) += pwrseq_generic.o
+diff --git a/drivers/power/pwrseq/core.c b/drivers/power/pwrseq/core.c
+new file mode 100644
+index 000000000000..6b78a6691683
+--- /dev/null
++++ b/drivers/power/pwrseq/core.c
+@@ -0,0 +1,293 @@
++/*
++ * core.c power sequence core file
++ *
++ * Copyright (C) 2016 Freescale Semiconductor, Inc.
++ * Author: Peter Chen <peter.chen@nxp.com>
++ *
++ * This program is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 of
++ * the License as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program.
++ */
++
++#include <linux/list.h>
++#include <linux/mutex.h>
++#include <linux/of.h>
++#include <linux/slab.h>
++#include <linux/power/pwrseq.h>
++
++/*
++ * Static power sequence match table
++ * - Add compatible (the same with dts node) and related allocation function.
++ * - Update related binding doc.
++ */
++static const struct of_device_id pwrseq_match_table_list[] = {
++ { .compatible = "usb424,2513", .data = &pwrseq_generic_alloc_instance},
++ { .compatible = "usb424,2514", .data = &pwrseq_generic_alloc_instance},
++ { /* sentinel */ }
++};
++
++static int pwrseq_get(struct device_node *np, struct pwrseq *p)
++{
++ if (p && p->get)
++ return p->get(np, p);
++
++ return -ENOTSUPP;
++}
++
++static int pwrseq_on(struct pwrseq *p)
++{
++ if (p && p->on)
++ return p->on(p);
++
++ return -ENOTSUPP;
++}
++
++static void pwrseq_off(struct pwrseq *p)
++{
++ if (p && p->off)
++ p->off(p);
++}
++
++static void pwrseq_put(struct pwrseq *p)
++{
++ if (p && p->put)
++ p->put(p);
++}
++
++/**
++ * of_pwrseq_on - Carry out power sequence on for device node
++ *
++ * @np: the device node would like to power on
++ *
++ * Carry out a single device power on. If multiple devices
++ * need to be handled, use of_pwrseq_on_list() instead.
++ *
++ * Return a pointer to the power sequence instance on success, or NULL if
++ * not exist, or an error code on failure.
++ */
++struct pwrseq *of_pwrseq_on(struct device_node *np)
++{
++ struct pwrseq *pwrseq;
++ int ret;
++ const struct of_device_id *of_id;
++ struct pwrseq *(*alloc_instance)(void);
++
++ of_id = of_match_node(pwrseq_match_table_list, np);
++ if (!of_id)
++ return NULL;
++
++ alloc_instance = of_id->data;
++ /* Allocate pwrseq instance */
++ pwrseq = alloc_instance();
++ if (IS_ERR(pwrseq))
++ return pwrseq;
++
++ ret = pwrseq_get(np, pwrseq);
++ if (ret)
++ goto pwr_put;
++
++ ret = pwrseq_on(pwrseq);
++ if (ret)
++ goto pwr_put;
++
++ return pwrseq;
++
++pwr_put:
++ pwrseq_put(pwrseq);
++ return ERR_PTR(ret);
++}
++EXPORT_SYMBOL_GPL(of_pwrseq_on);
++
++/**
++ * of_pwrseq_off - Carry out power sequence off for this pwrseq instance
++ *
++ * @pwrseq: the pwrseq instance which related device would like to be off
++ *
++ * This API is used to power off single device, it is the opposite
++ * operation for of_pwrseq_on.
++ */
++void of_pwrseq_off(struct pwrseq *pwrseq)
++{
++ pwrseq_off(pwrseq);
++ pwrseq_put(pwrseq);
++}
++EXPORT_SYMBOL_GPL(of_pwrseq_off);
++
++/**
++ * of_pwrseq_on_list - Carry out power sequence on for list
++ *
++ * @np: the device node would like to power on
++ * @head: the list head for pwrseq list on this bus
++ *
++ * This API is used to power on multiple devices at single bus.
++ * If there are several devices on bus (eg, USB bus), uses this
++ * this API. Otherwise, use of_pwrseq_on instead. After the device
++ * is powered on successfully, it will be added to pwrseq list for
++ * this bus. The caller needs to use mutex_lock for concurrent.
++ *
++ * Return 0 on success, or -ENOENT if not exist, or an error value on failure.
++ */
++int of_pwrseq_on_list(struct device_node *np, struct list_head *head)
++{
++ struct pwrseq *pwrseq;
++ struct pwrseq_list_per_dev *pwrseq_list_node;
++
++ pwrseq_list_node = kzalloc(sizeof(*pwrseq_list_node), GFP_KERNEL);
++ if (!pwrseq_list_node)
++ return -ENOMEM;
++
++ pwrseq = of_pwrseq_on(np);
++ if (!pwrseq)
++ return -ENOENT;
++
++ if (IS_ERR(pwrseq)) {
++ kfree(pwrseq_list_node);
++ return PTR_ERR(pwrseq);
++ }
++
++ pwrseq_list_node->pwrseq = pwrseq;
++ list_add(&pwrseq_list_node->list, head);
++
++ return 0;
++}
++EXPORT_SYMBOL_GPL(of_pwrseq_on_list);
++
++/**
++ * of_pwrseq_off_list - Carry out power sequence off for the list
++ *
++ * @head: the list head for pwrseq instance list on this bus
++ *
++ * This API is used to power off all devices on this bus, it is
++ * the opposite operation for of_pwrseq_on_list.
++ * The caller needs to use mutex_lock for concurrent.
++ */
++void of_pwrseq_off_list(struct list_head *head)
++{
++ struct pwrseq *pwrseq;
++ struct pwrseq_list_per_dev *pwrseq_list_node, *tmp_node;
++
++ list_for_each_entry_safe(pwrseq_list_node, tmp_node, head, list) {
++ pwrseq = pwrseq_list_node->pwrseq;
++ of_pwrseq_off(pwrseq);
++ list_del(&pwrseq_list_node->list);
++ kfree(pwrseq_list_node);
++ }
++}
++EXPORT_SYMBOL_GPL(of_pwrseq_off_list);
++
++/**
++ * pwrseq_suspend - Carry out power sequence suspend for this pwrseq instance
++ *
++ * @pwrseq: the pwrseq instance
++ *
++ * This API is used to do suspend operation on pwrseq instance.
++ *
++ * Return 0 on success, or an error value otherwise.
++ */
++int pwrseq_suspend(struct pwrseq *p)
++{
++ int ret = 0;
++
++ if (p && p->suspend)
++ ret = p->suspend(p);
++ else
++ return ret;
++
++ if (!ret)
++ p->suspended = true;
++ else
++ pr_err("%s failed\n", __func__);
++
++ return ret;
++}
++EXPORT_SYMBOL_GPL(pwrseq_suspend);
++
++/**
++ * pwrseq_resume - Carry out power sequence resume for this pwrseq instance
++ *
++ * @pwrseq: the pwrseq instance
++ *
++ * This API is used to do resume operation on pwrseq instance.
++ *
++ * Return 0 on success, or an error value otherwise.
++ */
++int pwrseq_resume(struct pwrseq *p)
++{
++ int ret = 0;
++
++ if (p && p->resume)
++ ret = p->resume(p);
++ else
++ return ret;
++
++ if (!ret)
++ p->suspended = false;
++ else
++ pr_err("%s failed\n", __func__);
++
++ return ret;
++}
++EXPORT_SYMBOL_GPL(pwrseq_resume);
++
++/**
++ * pwrseq_suspend_list - Carry out power sequence suspend for list
++ *
++ * @head: the list head for pwrseq instance list on this bus
++ *
++ * This API is used to do suspend on all power sequence instances on this bus.
++ * The caller needs to use mutex_lock for concurrent.
++ */
++int pwrseq_suspend_list(struct list_head *head)
++{
++ struct pwrseq *pwrseq;
++ struct pwrseq_list_per_dev *pwrseq_list_node;
++ int ret = 0;
++
++ list_for_each_entry(pwrseq_list_node, head, list) {
++ ret = pwrseq_suspend(pwrseq_list_node->pwrseq);
++ if (ret)
++ break;
++ }
++
++ if (ret) {
++ list_for_each_entry(pwrseq_list_node, head, list) {
++ pwrseq = pwrseq_list_node->pwrseq;
++ if (pwrseq->suspended)
++ pwrseq_resume(pwrseq);
++ }
++ }
++
++ return ret;
++}
++EXPORT_SYMBOL_GPL(pwrseq_suspend_list);
++
++/**
++ * pwrseq_resume_list - Carry out power sequence resume for the list
++ *
++ * @head: the list head for pwrseq instance list on this bus
++ *
++ * This API is used to do resume on all power sequence instances on this bus.
++ * The caller needs to use mutex_lock for concurrent.
++ */
++int pwrseq_resume_list(struct list_head *head)
++{
++ struct pwrseq_list_per_dev *pwrseq_list_node;
++ int ret = 0;
++
++ list_for_each_entry(pwrseq_list_node, head, list) {
++ ret = pwrseq_resume(pwrseq_list_node->pwrseq);
++ if (ret)
++ break;
++ }
++
++ return ret;
++}
++EXPORT_SYMBOL_GPL(pwrseq_resume_list);
+diff --git a/drivers/power/pwrseq/pwrseq_generic.c b/drivers/power/pwrseq/pwrseq_generic.c
+new file mode 100644
+index 000000000000..b7bbd6c5b47d
+--- /dev/null
++++ b/drivers/power/pwrseq/pwrseq_generic.c
+@@ -0,0 +1,210 @@
++/*
++ * pwrseq_generic.c Generic power sequence handling
++ *
++ * Copyright (C) 2016 Freescale Semiconductor, Inc.
++ * Author: Peter Chen <peter.chen@nxp.com>
++ *
++ * This program is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 of
++ * the License as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program.
++ */
++
++#include <linux/clk.h>
++#include <linux/delay.h>
++#include <linux/gpio.h>
++#include <linux/gpio/consumer.h>
++#include <linux/of.h>
++#include <linux/of_gpio.h>
++#include <linux/slab.h>
++
++#include <linux/power/pwrseq.h>
++
++struct pwrseq_generic {
++ struct pwrseq pwrseq;
++ struct gpio_desc *gpiod_reset;
++ struct clk *clks[PWRSEQ_MAX_CLKS];
++ u32 duration_us;
++ bool suspended;
++};
++
++#define to_generic_pwrseq(p) container_of(p, struct pwrseq_generic, pwrseq)
++
++static int pwrseq_generic_suspend(struct pwrseq *pwrseq)
++{
++ struct pwrseq_generic *pwrseq_gen = to_generic_pwrseq(pwrseq);
++ int clk;
++
++ for (clk = PWRSEQ_MAX_CLKS - 1; clk >= 0; clk--)
++ clk_disable_unprepare(pwrseq_gen->clks[clk]);
++
++ pwrseq_gen->suspended = true;
++ return 0;
++}
++
++static int pwrseq_generic_resume(struct pwrseq *pwrseq)
++{
++ struct pwrseq_generic *pwrseq_gen = to_generic_pwrseq(pwrseq);
++ int clk, ret = 0;
++
++ for (clk = 0; clk < PWRSEQ_MAX_CLKS && pwrseq_gen->clks[clk]; clk++) {
++ ret = clk_prepare_enable(pwrseq_gen->clks[clk]);
++ if (ret) {
++ pr_err("Can't enable clock, ret=%d\n", ret);
++ goto err_disable_clks;
++ }
++ }
++
++ pwrseq_gen->suspended = false;
++ return ret;
++
++err_disable_clks:
++ while (--clk >= 0)
++ clk_disable_unprepare(pwrseq_gen->clks[clk]);
++
++ return ret;
++}
++
++static void pwrseq_generic_put(struct pwrseq *pwrseq)
++{
++ struct pwrseq_generic *pwrseq_gen = to_generic_pwrseq(pwrseq);
++ int clk;
++
++ if (pwrseq_gen->gpiod_reset)
++ gpiod_put(pwrseq_gen->gpiod_reset);
++
++ for (clk = 0; clk < PWRSEQ_MAX_CLKS; clk++)
++ clk_put(pwrseq_gen->clks[clk]);
++
++ kfree(pwrseq_gen);
++}
++
++static void pwrseq_generic_off(struct pwrseq *pwrseq)
++{
++ struct pwrseq_generic *pwrseq_gen = to_generic_pwrseq(pwrseq);
++ int clk;
++
++ if (pwrseq_gen->suspended)
++ return;
++
++ for (clk = PWRSEQ_MAX_CLKS - 1; clk >= 0; clk--)
++ clk_disable_unprepare(pwrseq_gen->clks[clk]);
++}
++
++static int pwrseq_generic_on(struct pwrseq *pwrseq)
++{
++ struct pwrseq_generic *pwrseq_gen = to_generic_pwrseq(pwrseq);
++ int clk, ret = 0;
++ struct gpio_desc *gpiod_reset = pwrseq_gen->gpiod_reset;
++
++ for (clk = 0; clk < PWRSEQ_MAX_CLKS && pwrseq_gen->clks[clk]; clk++) {
++ ret = clk_prepare_enable(pwrseq_gen->clks[clk]);
++ if (ret) {
++ pr_err("Can't enable clock, ret=%d\n", ret);
++ goto err_disable_clks;
++ }
++ }
++
++ if (gpiod_reset) {
++ u32 duration_us = pwrseq_gen->duration_us;
++
++ if (duration_us <= 10)
++ udelay(10);
++ else
++ usleep_range(duration_us, duration_us + 100);
++ gpiod_set_value(gpiod_reset, 0);
++ }
++
++ return ret;
++
++err_disable_clks:
++ while (--clk >= 0)
++ clk_disable_unprepare(pwrseq_gen->clks[clk]);
++
++ return ret;
++}
++
++static int pwrseq_generic_get(struct device_node *np, struct pwrseq *pwrseq)
++{
++ struct pwrseq_generic *pwrseq_gen = to_generic_pwrseq(pwrseq);
++ enum of_gpio_flags flags;
++ int reset_gpio, clk, ret = 0;
++
++ for (clk = 0; clk < PWRSEQ_MAX_CLKS; clk++) {
++ pwrseq_gen->clks[clk] = of_clk_get(np, clk);
++ if (IS_ERR(pwrseq_gen->clks[clk])) {
++ ret = PTR_ERR(pwrseq_gen->clks[clk]);
++ if (ret != -ENOENT)
++ goto err_put_clks;
++ pwrseq_gen->clks[clk] = NULL;
++ break;
++ }
++ }
++
++ reset_gpio = of_get_named_gpio_flags(np, "reset-gpios", 0, &flags);
++ if (gpio_is_valid(reset_gpio)) {
++ unsigned long gpio_flags;
++
++ if (flags & OF_GPIO_ACTIVE_LOW)
++ gpio_flags = GPIOF_ACTIVE_LOW | GPIOF_OUT_INIT_LOW;
++ else
++ gpio_flags = GPIOF_OUT_INIT_HIGH;
++
++ ret = gpio_request_one(reset_gpio, gpio_flags,
++ "pwrseq-reset-gpios");
++ if (ret)
++ goto err_put_clks;
++
++ pwrseq_gen->gpiod_reset = gpio_to_desc(reset_gpio);
++ of_property_read_u32(np, "reset-duration-us",
++ &pwrseq_gen->duration_us);
++ } else if (reset_gpio == -ENOENT) {
++ ; /* no such gpio */
++ } else {
++ ret = reset_gpio;
++ pr_err("Failed to get reset gpio on %s, err = %d\n",
++ np->full_name, reset_gpio);
++ goto err_put_clks;
++ }
++
++ return 0;
++
++err_put_clks:
++ while (--clk >= 0)
++ clk_put(pwrseq_gen->clks[clk]);
++ return ret;
++}
++
++/**
++ * pwrseq_generic_alloc_instance - power sequence instance allocation
++ *
++ * This function is used to allocate one generic power sequence instance,
++ * it is called when the system boots up and after one power sequence
++ * instance is got successfully.
++ *
++ * Return zero on success or an error code otherwise.
++ */
++struct pwrseq *pwrseq_generic_alloc_instance(void)
++{
++ struct pwrseq_generic *pwrseq_gen;
++
++ pwrseq_gen = kzalloc(sizeof(*pwrseq_gen), GFP_KERNEL);
++ if (!pwrseq_gen)
++ return ERR_PTR(-ENOMEM);
++
++ pwrseq_gen->pwrseq.get = pwrseq_generic_get;
++ pwrseq_gen->pwrseq.on = pwrseq_generic_on;
++ pwrseq_gen->pwrseq.off = pwrseq_generic_off;
++ pwrseq_gen->pwrseq.put = pwrseq_generic_put;
++ pwrseq_gen->pwrseq.suspend = pwrseq_generic_suspend;
++ pwrseq_gen->pwrseq.resume = pwrseq_generic_resume;
++
++ return &pwrseq_gen->pwrseq;
++}
+diff --git a/include/linux/power/pwrseq.h b/include/linux/power/pwrseq.h
+new file mode 100644
+index 000000000000..c5b278f5f2ae
+--- /dev/null
++++ b/include/linux/power/pwrseq.h
+@@ -0,0 +1,84 @@
++#ifndef __LINUX_PWRSEQ_H
++#define __LINUX_PWRSEQ_H
++
++#include <linux/of.h>
++
++#define PWRSEQ_MAX_CLKS 3
++
++/**
++ * struct pwrseq - the power sequence structure
++ * @pwrseq_of_match_table: the OF device id table this pwrseq library supports
++ * @node: the list pointer to be added to pwrseq list
++ * @get: the API is used to get pwrseq instance from the device node
++ * @on: do power on for this pwrseq instance
++ * @off: do power off for this pwrseq instance
++ * @put: release the resources on this pwrseq instance
++ * @suspend: do suspend operation on this pwrseq instance
++ * @resume: do resume operation on this pwrseq instance
++ */
++struct pwrseq {
++ const struct of_device_id *pwrseq_of_match_table;
++ struct list_head node;
++ int (*get)(struct device_node *np, struct pwrseq *p);
++ int (*on)(struct pwrseq *p);
++ void (*off)(struct pwrseq *p);
++ void (*put)(struct pwrseq *p);
++ int (*suspend)(struct pwrseq *p);
++ int (*resume)(struct pwrseq *p);
++ bool suspended;
++};
++
++/* used for power sequence instance list in one driver */
++struct pwrseq_list_per_dev {
++ struct pwrseq *pwrseq;
++ struct list_head list;
++};
++
++#if IS_ENABLED(CONFIG_POWER_SEQUENCE)
++struct pwrseq *of_pwrseq_on(struct device_node *np);
++void of_pwrseq_off(struct pwrseq *pwrseq);
++int of_pwrseq_on_list(struct device_node *np, struct list_head *head);
++void of_pwrseq_off_list(struct list_head *head);
++int pwrseq_suspend(struct pwrseq *p);
++int pwrseq_resume(struct pwrseq *p);
++int pwrseq_suspend_list(struct list_head *head);
++int pwrseq_resume_list(struct list_head *head);
++#else
++static inline struct pwrseq *of_pwrseq_on(struct device_node *np)
++{
++ return NULL;
++}
++static void of_pwrseq_off(struct pwrseq *pwrseq) {}
++static int of_pwrseq_on_list(struct device_node *np, struct list_head *head)
++{
++ return 0;
++}
++static void of_pwrseq_off_list(struct list_head *head) {}
++static int pwrseq_suspend(struct pwrseq *p)
++{
++ return 0;
++}
++static int pwrseq_resume(struct pwrseq *p)
++{
++ return 0;
++}
++static int pwrseq_suspend_list(struct list_head *head)
++{
++ return 0;
++}
++static int pwrseq_resume_list(struct list_head *head)
++{
++ return 0;
++}
++#endif /* CONFIG_POWER_SEQUENCE */
++
++#if IS_ENABLED(CONFIG_PWRSEQ_GENERIC)
++extern struct pwrseq *pwrseq_generic_alloc_instance(void);
++#else
++static inline struct pwrseq *pwrseq_generic_alloc_instance(void)
++{
++ return ERR_PTR(-ENOTSUPP);
++}
++#endif /* CONFIG_PWRSEQ_GENERIC */
++
++#endif /* __LINUX_PWRSEQ_H */
+--
+2.16.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0011-usb-core-add-power-sequence-handling-for-USB-devices.patch b/kernels/linux-libre-lts-xtreme/0011-usb-core-add-power-sequence-handling-for-USB-devices.patch
new file mode 100644
index 000000000..ac86e626d
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0011-usb-core-add-power-sequence-handling-for-USB-devices.patch
@@ -0,0 +1,164 @@
+From 292560a839e5622bf2e071c1afe54bdb34209516 Mon Sep 17 00:00:00 2001
+From: Peter Chen <peter.chen@nxp.com>
+Date: Wed, 21 Jun 2017 14:42:05 +0800
+Subject: [PATCH 11/14] usb: core: add power sequence handling for USB devices
+
+Some hard-wired USB devices need to do power sequence to let the
+device work normally, the typical power sequence like: enable USB
+PHY clock, toggle reset pin, etc. But current Linux USB driver
+lacks of such code to do it, it may cause some hard-wired USB devices
+works abnormal or can't be recognized by controller at all.
+
+In this patch, it calls power sequence library APIs to finish
+the power sequence events. It will do power on sequence at hub's
+probe for all devices under this hub (includes root hub).
+At hub_disconnect, it will do power off sequence which is at powered
+on list.
+
+Signed-off-by: Peter Chen <peter.chen@nxp.com>
+Tested-by Joshua Clayton <stillcompiling@gmail.com>
+Tested-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
+Reviewed-by: Vaibhav Hiremath <hvaibhav.linux@gmail.com>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+---
+ drivers/usb/Kconfig | 1 +
+ drivers/usb/core/hub.c | 49 +++++++++++++++++++++++++++++++++++++++++++++----
+ drivers/usb/core/hub.h | 1 +
+ 3 files changed, 47 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
+index f699abab1787..67316ba6a84c 100644
+--- a/drivers/usb/Kconfig
++++ b/drivers/usb/Kconfig
+@@ -39,6 +39,7 @@ config USB
+ tristate "Support for Host-side USB"
+ depends on USB_ARCH_HAS_HCD
+ select USB_COMMON
++ select POWER_SEQUENCE
+ select NLS # for UTF-8 strings
+ ---help---
+ Universal Serial Bus (USB) is a specification for a serial bus
+diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
+index cf7bbcb9a63c..34f249f73757 100644
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -28,6 +28,7 @@
+ #include <linux/mutex.h>
+ #include <linux/random.h>
+ #include <linux/pm_qos.h>
++#include <linux/power/pwrseq.h>
+
+ #include <linux/uaccess.h>
+ #include <asm/byteorder.h>
+@@ -1634,6 +1635,7 @@ static void hub_disconnect(struct usb_interface *intf)
+ hub->error = 0;
+ hub_quiesce(hub, HUB_DISCONNECT);
+
++ of_pwrseq_off_list(&hub->pwrseq_list);
+ mutex_lock(&usb_port_peer_mutex);
+
+ /* Avoid races with recursively_mark_NOTATTACHED() */
+@@ -1680,11 +1682,41 @@ static bool hub_descriptor_is_sane(struct usb_host_interface *desc)
+ return true;
+ }
+
++#ifdef CONFIG_OF
++static int hub_of_pwrseq_on(struct usb_hub *hub)
++{
++ struct device *parent;
++ struct usb_device *hdev = hub->hdev;
++ struct device_node *np;
++ int ret;
++
++ if (hdev->parent)
++ parent = &hdev->dev;
++ else
++ parent = bus_to_hcd(hdev->bus)->self.sysdev;
++
++ for_each_child_of_node(parent->of_node, np) {
++ ret = of_pwrseq_on_list(np, &hub->pwrseq_list);
++ /* Maybe no power sequence library is chosen */
++ if (ret && ret != -ENOENT)
++ return ret;
++ }
++
++ return 0;
++}
++#else
++static int hub_of_pwrseq_on(struct usb_hub *hub)
++{
++ return 0;
++}
++#endif
++
+ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
+ {
+ struct usb_host_interface *desc;
+ struct usb_device *hdev;
+ struct usb_hub *hub;
++ int ret = -ENODEV;
+
+ desc = intf->cur_altsetting;
+ hdev = interface_to_usbdev(intf);
+@@ -1775,6 +1807,7 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
+ INIT_DELAYED_WORK(&hub->leds, led_work);
+ INIT_DELAYED_WORK(&hub->init_work, NULL);
+ INIT_WORK(&hub->events, hub_event);
++ INIT_LIST_HEAD(&hub->pwrseq_list);
+ usb_get_intf(intf);
+ usb_get_dev(hdev);
+
+@@ -1788,11 +1821,14 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
+ if (id->driver_info & HUB_QUIRK_CHECK_PORT_AUTOSUSPEND)
+ hub->quirk_check_port_auto_suspend = 1;
+
+- if (hub_configure(hub, &desc->endpoint[0].desc) >= 0)
+- return 0;
++ if (hub_configure(hub, &desc->endpoint[0].desc) >= 0) {
++ ret = hub_of_pwrseq_on(hub);
++ if (!ret)
++ return 0;
++ }
+
+ hub_disconnect(intf);
+- return -ENODEV;
++ return ret;
+ }
+
+ static int
+@@ -3606,14 +3642,19 @@ static int hub_suspend(struct usb_interface *intf, pm_message_t msg)
+
+ /* stop hub_wq and related activity */
+ hub_quiesce(hub, HUB_SUSPEND);
+- return 0;
++ return pwrseq_suspend_list(&hub->pwrseq_list);
+ }
+
+ static int hub_resume(struct usb_interface *intf)
+ {
+ struct usb_hub *hub = usb_get_intfdata(intf);
++ int ret;
+
+ dev_dbg(&intf->dev, "%s\n", __func__);
++ ret = pwrseq_resume_list(&hub->pwrseq_list);
++ if (ret)
++ return ret;
++
+ hub_activate(hub, HUB_RESUME);
+ return 0;
+ }
+diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
+index 2a700ccc868c..3a0e6e6b22b0 100644
+--- a/drivers/usb/core/hub.h
++++ b/drivers/usb/core/hub.h
+@@ -70,6 +70,7 @@ struct usb_hub {
+ struct delayed_work init_work;
+ struct work_struct events;
+ struct usb_port **ports;
++ struct list_head pwrseq_list; /* powered pwrseq node list */
+ };
+
+ /**
+--
+2.16.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0012-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch b/kernels/linux-libre-lts-xtreme/0012-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch
new file mode 100644
index 000000000..9631476bc
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0012-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch
@@ -0,0 +1,49 @@
+From 059a623ab52a9fdaccd7a5d1b189478d5e7a96be Mon Sep 17 00:00:00 2001
+From: Joshua Clayton <stillcompiling@gmail.com>
+Date: Wed, 21 Jun 2017 14:42:06 +0800
+Subject: [PATCH 12/14] ARM: dts: imx6qdl: Enable usb node children with <reg>
+
+Give usb nodes #address and #size attributes, so that a child node
+representing a permanently connected device such as an onboard hub may
+be addressed with a <reg> attribute
+
+Signed-off-by: Joshua Clayton <stillcompiling@gmail.com>
+Signed-off-by: Peter Chen <peter.chen@nxp.com>
+---
+ arch/arm/boot/dts/imx6qdl.dtsi | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
+index 1ce4eabf0590..3ff1ada590d1 100644
+--- a/arch/arm/boot/dts/imx6qdl.dtsi
++++ b/arch/arm/boot/dts/imx6qdl.dtsi
+@@ -969,6 +969,8 @@
+
+ usbh1: usb@2184200 {
+ compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
++ #address-cells = <1>;
++ #size-cells = <0>;
+ reg = <0x02184200 0x200>;
+ interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clks IMX6QDL_CLK_USBOH3>;
+@@ -983,6 +985,8 @@
+
+ usbh2: usb@2184400 {
+ compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
++ #address-cells = <1>;
++ #size-cells = <0>;
+ reg = <0x02184400 0x200>;
+ interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clks IMX6QDL_CLK_USBOH3>;
+@@ -996,6 +1000,8 @@
+
+ usbh3: usb@2184600 {
+ compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
++ #address-cells = <1>;
++ #size-cells = <0>;
+ reg = <0x02184600 0x200>;
+ interrupts = <0 42 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clks IMX6QDL_CLK_USBOH3>;
+--
+2.16.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0013-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch b/kernels/linux-libre-lts-xtreme/0013-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch
new file mode 100644
index 000000000..8e8a085c9
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0013-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch
@@ -0,0 +1,80 @@
+From 74bb546b27536c3f9bdd16080a915d98e8c1667f Mon Sep 17 00:00:00 2001
+From: Peter Chen <peter.chen@nxp.com>
+Date: Wed, 21 Jun 2017 14:42:07 +0800
+Subject: [PATCH 13/14] ARM: dts: imx6qdl-udoo.dtsi: fix onboard USB HUB
+ property
+
+The current dts describes USB HUB's property at USB controller's
+entry, it is improper. The USB HUB should be the child node
+under USB controller, and power sequence properties are under
+it. Besides, using gpio pinctrl setting for USB2415's reset pin.
+
+Signed-off-by: Peter Chen <peter.chen@nxp.com>
+Signed-off-by: Joshua Clayton <stillcompiling@gmail.com>
+Tested-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
+---
+ arch/arm/boot/dts/imx6qdl-udoo.dtsi | 26 ++++++++++++--------------
+ 1 file changed, 12 insertions(+), 14 deletions(-)
+
+diff --git a/arch/arm/boot/dts/imx6qdl-udoo.dtsi b/arch/arm/boot/dts/imx6qdl-udoo.dtsi
+index c96c91d83678..a173de20ee73 100644
+--- a/arch/arm/boot/dts/imx6qdl-udoo.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-udoo.dtsi
+@@ -9,6 +9,8 @@
+ *
+ */
+
++#include <dt-bindings/gpio/gpio.h>
++
+ / {
+ aliases {
+ backlight = &backlight;
+@@ -58,17 +60,6 @@
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+- reg_usb_h1_vbus: regulator@0 {
+- compatible = "regulator-fixed";
+- reg = <0>;
+- regulator-name = "usb_h1_vbus";
+- regulator-min-microvolt = <5000000>;
+- regulator-max-microvolt = <5000000>;
+- enable-active-high;
+- startup-delay-us = <2>; /* USB2415 requires a POR of 1 us minimum */
+- gpio = <&gpio7 12 0>;
+- };
+-
+ reg_panel: regulator@1 {
+ compatible = "regulator-fixed";
+ reg = <1>;
+@@ -188,7 +179,7 @@
+
+ pinctrl_usbh: usbhgrp {
+ fsl,pins = <
+- MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000
++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x1b0b0
+ MX6QDL_PAD_NANDF_CS2__CCM_CLKO2 0x130b0
+ >;
+ };
+@@ -259,9 +250,16 @@
+ &usbh1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usbh>;
+- vbus-supply = <&reg_usb_h1_vbus>;
+- clocks = <&clks IMX6QDL_CLK_CKO>;
+ status = "okay";
++
++ usb2415: hub@1 {
++ compatible = "usb424,2514";
++ reg = <1>;
++
++ clocks = <&clks IMX6QDL_CLK_CKO>;
++ reset-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
++ reset-duration-us = <3000>;
++ };
+ };
+
+ &usdhc3 {
+--
+2.16.1
+
diff --git a/kernels/linux-libre-lts-xtreme/0014-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch b/kernels/linux-libre-lts-xtreme/0014-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch
new file mode 100644
index 000000000..dbc7fce01
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/0014-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch
@@ -0,0 +1,74 @@
+From 47a3451ea61bc01753f71acfc011738f8681dc53 Mon Sep 17 00:00:00 2001
+From: Joshua Clayton <stillcompiling@gmail.com>
+Date: Wed, 21 Jun 2017 14:42:08 +0800
+Subject: [PATCH 14/14] ARM: dts: imx6q-evi: Fix onboard hub reset line
+
+Previously the onboard hub was made to work by treating its
+reset gpio as a regulator enable.
+Get rid of that kludge now that pwseq has added reset gpio support
+Move pin muxing the hub reset pin into the usbh1 group
+
+Signed-off-by: Joshua Clayton <stillcompiling@gmail.com>
+Signed-off-by: Peter Chen <peter.chen@nxp.com>
+---
+ arch/arm/boot/dts/imx6q-evi.dts | 25 +++++++------------------
+ 1 file changed, 7 insertions(+), 18 deletions(-)
+
+diff --git a/arch/arm/boot/dts/imx6q-evi.dts b/arch/arm/boot/dts/imx6q-evi.dts
+index e0aea782c666..6f3afffc8faa 100644
+--- a/arch/arm/boot/dts/imx6q-evi.dts
++++ b/arch/arm/boot/dts/imx6q-evi.dts
+@@ -54,18 +54,6 @@
+ reg = <0x10000000 0x40000000>;
+ };
+
+- reg_usbh1_vbus: regulator-usbhubreset {
+- compatible = "regulator-fixed";
+- regulator-name = "usbh1_vbus";
+- regulator-min-microvolt = <5000000>;
+- regulator-max-microvolt = <5000000>;
+- enable-active-high;
+- startup-delay-us = <2>;
+- pinctrl-names = "default";
+- pinctrl-0 = <&pinctrl_usbh1_hubreset>;
+- gpio = <&gpio7 12 GPIO_ACTIVE_HIGH>;
+- };
+-
+ reg_usb_otg_vbus: regulator-usbotgvbus {
+ compatible = "regulator-fixed";
+ regulator-name = "usb_otg_vbus";
+@@ -213,12 +201,18 @@
+ };
+
+ &usbh1 {
+- vbus-supply = <&reg_usbh1_vbus>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usbh1>;
+ dr_mode = "host";
+ disable-over-current;
+ status = "okay";
++
++ usb2415host: hub@1 {
++ compatible = "usb424,2513";
++ reg = <1>;
++ reset-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
++ reset-duration-us = <3000>;
++ };
+ };
+
+ &usbotg {
+@@ -481,11 +475,6 @@
+ MX6QDL_PAD_GPIO_3__USB_H1_OC 0x1b0b0
+ /* usbh1_b OC */
+ MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0
+- >;
+- };
+-
+- pinctrl_usbh1_hubreset: usbh1hubresetgrp {
+- fsl,pins = <
+ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x1b0b0
+ >;
+ };
+--
+2.16.1
+
diff --git a/kernels/linux-libre-lts-xtreme/60-linux.hook b/kernels/linux-libre-lts-xtreme/60-linux.hook
new file mode 100644
index 000000000..b33873c85
--- /dev/null
+++ b/kernels/linux-libre-lts-xtreme/60-linux.hook
@@ -0,0 +1,12 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/modules/%KERNVER%/*
+Target = usr/lib/modules/%EXTRAMODULES%/*
+
+[Action]
+Description = Updating %PKGBASE% module dependencies...
+When = PostTransaction
+Exec = /usr/bin/depmod %KERNVER%
diff --git a/kernels/linux-libre-lts-xtreme/90-linux.hook b/kernels/linux-libre-lts-xtreme/90-linux.hook
index 985115199..be0d88653 100644
--- a/kernels/linux-libre-lts-xtreme/90-linux.hook
+++ b/kernels/linux-libre-lts-xtreme/90-linux.hook
@@ -6,6 +6,6 @@ Target = boot/vmlinuz-%PKGBASE%
Target = usr/lib/initcpio/*
[Action]
-Description = Updating %PKGBASE% initcpios
+Description = Updating %PKGBASE% initcpios...
When = PostTransaction
Exec = /usr/bin/mkinitcpio -p %PKGBASE%
diff --git a/kernels/linux-libre-lts-xtreme/PKGBUILD b/kernels/linux-libre-lts-xtreme/PKGBUILD
index 2e0833eff..f173fbb58 100644
--- a/kernels/linux-libre-lts-xtreme/PKGBUILD
+++ b/kernels/linux-libre-lts-xtreme/PKGBUILD
@@ -1,7 +1,7 @@
# Maintainer: David P. <megver83@parabola.nu>
# Contributor: André Silva <emulatorman@hyperbola.info>
# Contributor: Márcio Silva <coadde@hyperbola.info>
-# Contributor: Nicolás Reynolds <fauno@kiwwwi.com.ar>
+# Contributor: fauno <fauno@parabola.nu>
# Contributor: Sorin-Mihai Vârgolici <smv@yobicore.org>
# Contributor: Michał Masłowski <mtjm@mtjm.eu>
# Contributor: Luke Shumaker <lukeshu@sbcglobal.net>
@@ -11,7 +11,7 @@
pkgbase=linux-libre-lts-xtreme
_pkgbasever=4.9-gnu
-_pkgver=4.9.75-gnu
+_pkgver=4.9.92-gnu
_knockpatchver=4.9_1
_replacesarchkernel=('linux%') # '%' gets replaced with _kernelname
@@ -23,41 +23,47 @@ _archpkgver=${_pkgver%-*}
pkgver=${_pkgver//-/_}
pkgrel=1
rcnrel=armv7-x6
-arch=('i686' 'x86_64' 'armv7h')
+arch=('x86_64' 'i686' 'armv7h')
url="https://wiki.parabola.nu/Xtreme"
license=('GPL2')
-makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'libelf')
+makedepends=('xmlto' 'kmod' 'inetutils' 'bc' 'libelf')
makedepends_armv7h=('git')
options=('!strip')
-source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz"{,.sign}
- "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz"{,.sign}
- #"https://gnunet.org/sites/default/files/tcp_stealth_${_knockpatchver}.diff"
- #"tcp_stealth_${_knockpatchver}.diff.sig::https://gnunet.org/sites/default/files/tcp_stealth_${_knockpatchver%_1}.diff_1.sig"
- "https://repo.parabola.nu/other/knock/patches/linux-libre/tcp_stealth_${_knockpatchver}.diff"{,.sig}
- "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_clut224.ppm"{,.sig}
- "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_mono.pbm"{,.sig}
- "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_vga16.ppm"{,.sig}
- # the main kernel config files
- 'config.i686' 'config.x86_64' 'config.armv7h'
- # pacman hook for initramfs regeneration
- '90-linux.hook'
- # standard config files for mkinitcpio ramdisk
- 'linux.preset'
- 'change-default-console-loglevel.patch'
- '0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch'
- '0002-fix-Atmel-maXTouch-touchscreen-support.patch'
- # armv7h patches
- "https://repo.parabola.nu/other/rcn-libre/patches/${_pkgver%-*}/rcn-libre-${_pkgver%-*}-${rcnrel}.patch"{,.sig}
- '0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch'
- '0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch'
- '0003-SMILE-Plug-device-tree-file.patch'
- '0004-fix-mvsdio-eMMC-timing.patch'
- '0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch'
- '0006-set-default-cubietruck-led-triggers.patch'
- '0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch')
+source=(
+ "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz"{,.sign}
+ "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz"{,.sign}
+ "https://repo.parabola.nu/other/knock/patches/linux-libre/tcp_stealth_${_knockpatchver}.diff"{,.sig}
+ "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_clut224.ppm"{,.sig}
+ "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_mono.pbm"{,.sig}
+ "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_vga16.ppm"{,.sig}
+ # the main kernel config files
+ 'config.i686' 'config.x86_64' 'config.armv7h'
+ # pacman hooks for depmod and initramfs regeneration
+ '60-linux.hook' '90-linux.hook'
+ # standard config files for mkinitcpio ramdisk
+ 'linux.preset'
+ # armv7h patches
+ "https://repo.parabola.nu/other/rcn-libre/patches/${_pkgver%-*}/rcn-libre-${_pkgver%-*}-${rcnrel}.patch"{,.sig}
+ '0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch'
+ '0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch'
+ '0003-SMILE-Plug-device-tree-file.patch'
+ '0004-fix-mvsdio-eMMC-timing.patch'
+ '0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch'
+ '0006-set-default-cubietruck-led-triggers.patch'
+ '0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch'
+ '0008-disable-USB3-port-on-ODROID-XU.patch'
+ '0009-ARM-dove-enable-ethernet-on-D3Plug.patch'
+ # other patches
+ '0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch'
+ '0002-fix-Atmel-maXTouch-touchscreen-support.patch'
+)
+validpgpkeys=(
+ '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
+ '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P.
+)
sha512sums=('885eb0a7fab45dc749acb4329b4330a43b704df2d5f2f5aac1811503c132ca53ca49452f9b1cc80b0826c7a4962dbe4937aecb697aa823b2543ba2cabc704816'
'SKIP'
- 'e3a18af2204b7f73985704ed78f21f05412868e320d9ede6c58229d5b14ff990c73cfb6c45f3311a19b63078c1838faad7bf3164da7351295421adb758b43261'
+ '1dfe3c74d450c0b1ecd73e84d34b71297bcaf70eb9a495dc8a501e809e35e4c962de4cffdf45c73a73fd3612a7a347e0ebe301d7e25ceb3649db99ae0fc462b3'
'SKIP'
'a00e9fc0b930021242b231dfdd15160eaefbfad4aaa0ba0426bb9a25dd14acc1825cbb1bc9c680a6d43baca797591dc219e232862f566457752ff378e03600a3'
'SKIP'
@@ -67,28 +73,25 @@ sha512sums=('885eb0a7fab45dc749acb4329b4330a43b704df2d5f2f5aac1811503c132ca53ca4
'SKIP'
'7a3716bfe3b9f546da309c7492f3e08f8f506813afeb1c737a474c83313d5c313cf4582b65215c2cfce3b74d9d1021c96e8badafe8f6e5b01fe28d2b5c61ae78'
'SKIP'
- '33da572427ccbd809bc06adb99483a0b56e7e420c651165fb9fe9f491b1891d695b952173c31dedfe06657e2bf81ea61591f08e2b6067baf132f8abc2392c82b'
- '37e106b6f5af18047d1a1f0e045e3379d7b105878e15c1a5a6e18d93860af9793423a2ea8c2054d14cd7f87b8566060aac90642ccadc62bf6214e61c0d9e7da9'
- '43cb3b8eddb3844db2adb72044dbc0520f1b8e31e1e34586834b7ec499a501d3404e68291f8296aa78657544848e725c12e9b722941e2d52625fce5e99cf4a47'
- 'd6faa67f3ef40052152254ae43fee031365d0b1524aa0718b659eb75afc21a3f79ea8d62d66ea311a800109bed545bc8f79e8752319cd378eef2cbd3a09aba22'
+ 'aaf88ac19f892dc0ab3e19582309c851baab296c7f3edfa47d18460fa12c25b9c08a08143b16d6780b7e5ca57d413c6890df6d3cc0926072dd6d1a476891122b'
+ 'a7ed96ca23a8c0d434514b8d379d17bad8f6db915f92cd982f3abbe70f0035ad190c0b4d1d29157e702ccc06789b1a1fe08e0d8c1cec90d943bc1f5007a9d4e6'
+ '469191c3ff5a458c8d708b1d791bcf0fc7d97446943354717675bed79f4a61f51a51b09f991c5bc71a7bbf3d5333879276a55f9ca8edb6caa9f12aae8ea73d1f'
+ '7ad5be75ee422dda3b80edd2eb614d8a9181e2c8228cd68b3881e2fb95953bf2dea6cbe7900ce1013c9de89b2802574b7b24869fc5d7a95d3cc3112c4d27063a'
+ '4a8b324aee4cccf3a512ad04ce1a272d14e5b05c8de90feb82075f55ea3845948d817e1b0c6f298f5816834ddd3e5ce0a0e2619866289f3c1ab8fd2f35f04f44'
'2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf'
- 'd9d28e02e964704ea96645a5107f8b65cae5f4fb4f537e224e5e3d087fd296cb770c29ac76e0ce95d173bc420ea87fb8f187d616672a60a0cae618b0ef15b8c8'
- '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'
- 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168'
- 'd5548e5afac67bec1d7bf754179ccad30beb453b3a5562b8c1ce34fc20b4b421528f2c90381803c8fdb8dc7757d801ee54a03f2631bab98e22f66c7d64c82b1e'
+ '5ff744265ad80f6d2bd310b247de86e98854db6d9134cd3a656ef4e90db4cf59c5dadc554e96a8ef8b7677447a0c9623b360cc34a6786078be09ab536f48d3f4'
'SKIP'
- '4fa96f6c40b34c2448be34e794cebbcbe3354c8376c5a305aae9b931bf52a818522ccc91e7c4683481e4d2ba411e928cf5f6c1481666b596993d6ae4ee28eb08'
- '6764e186cd5ba27817bf341cc7350309e14772c9ace5f34b05f10f42785158dc53509c58ae5961d75aae1d814190e8040c7bb2d0c6beee473725d6cc8d32c44e'
- 'cd7548cd7978eff2449a58bbdca40b89a573d8d9faed6f6cf7b4a6d8b45a432d84a2ef8a041524ebb6d89cfc6e2ac1eab88c6e398c0c9b31d31b7f0e8bbee3ac'
- 'ab649ebff6148df15eb6325acd2ddd0c99cc087e4722326bca8d13e70dfa60dbc40da3cb640c1ef2b67ee98b33fda79ee175519e7cc40c2d22def3c347519fd9'
- '95a5a508187ebd551a2931cf8b9848b34b340d8cf725861893c1db4e10e08d8b876a3024398db07be2d76b4c88acb719b60e3d3d52f7569f52d8a799944db742'
- '527fcd12a37bad8113e0fc389e10f665c16a894fa1d2ae3ed0809fe21d18164fd7590b34570f5999d8c1c569f212908db53ef9d8b3783e94eeba75666c5547d9'
- 'd34d69b936266da6c4d80a042f7613d368d97539457f8428727942fc196f32c932dc8dc97c522aa4793711e73b15b963dad9d18d85f930532d9491b4a2b37b96')
-validpgpkeys=(
- '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
- '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P.
- '76298B5BB60EDAD21B362E667585399992435BA4' # Mathias Krause
-)
+ 'ba44aa1252aa1b172e0bc8bbbff864ff60cad6739b2aed2f6a2402848aa65cdb8a8ca6bb9341569b089d60dfd83c3bdd744b5810061ac76b19f0d337afe4cc8d'
+ '738bc2874351d9e1b94319e6caf615b49753155c99dc9318a1ce9eced50f87627a7331762951f55e2bea8abdb97b80a617a08f3f0bc735e56ff831a8bbb19816'
+ 'f45d8d417eb3f4b6e02e337480bd99a8ebb4b9ac004c53a5432255e5841578fb64530663b6eacb3c8f40aaade8e1dc1e584aa1cf4b560103119e4b32e19b66c3'
+ '25ee5d9859d3df2d054fd6d53fe6b8931d6ac9f85533c54f3dd926fce917c81bd96cb3858189a20cf28a32b43efd1566cb5513f7db18a0bb8ead1a4e8a7be6fc'
+ 'a1aa8272760da0c8d2772cc8a57d8600f08db176206afd2a155055d2969bf0295f342a156841964a07de53fbf0356385b604ad75e5556569872dfad1863b2c27'
+ 'b58efc374344d10290371f3dfe8a124f855015d3ce169ccf538e6c1476092abf7ac689f0f10fb6a191fa19545b49ce13957ada066b37415f37dd5989ff93db37'
+ 'd2326e2e3ef6f2f5e911e6ad2fc3ac33b6f53fc5bb03e61d0e8371e6c7199028b226356926472ba676ca68a6cc57d33856c662615ed5b52566570670d0f96c89'
+ 'bc47549f2a79a79659d4d53f739e091c1e8f54cef8c1776be2034675cbb43f584a128607b1d4dd6a9f465706bb1470c6cb4277877dd3218e7280f503babf8300'
+ 'd90f3a3b74d65b84c4c2c229d10d2bb854e39e3429ba1469f8bb286819d559c68e00302de2be5043cf274b39a58686dc822c60afe1c553c4c967ef168d98af05'
+ '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'
+ 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168')
_kernelname=${pkgbase#linux-libre}
_replacesarchkernel=("${_replacesarchkernel[@]/\%/${_kernelname}}")
@@ -101,45 +104,44 @@ case "${CARCH}" in
esac
prepare() {
- cd "${srcdir}/${_srcname}"
+ cd ${_srcname}
# add upstream patch
if [ "${_pkgbasever}" != "${_pkgver}" ]; then
- patch -p1 -i "${srcdir}/patch-${_pkgbasever}-${_pkgver}"
+ patch -p1 -i ../patch-${_pkgbasever}-${_pkgver}
fi
-
- # add Knock patch
- patch -p1 -i "${srcdir}/tcp_stealth_${_knockpatchver}.diff"
+ # add Knock patch
+ patch -p1 -i ../tcp_stealth_${_knockpatchver}.diff
+
if [ "${CARCH}" = "armv7h" ]; then
- # RCN patch (CM3 firmware deblobbed, AUFS and RT removed)
- # Note: For stability reasons, AUFS and RT have been removed in the RCN patch.
- # We are supporting AUFS in linux-libre-pck through PCK patch and RT through its official
- # patch in linux-libre-rt. See https://wiki.parabola.nu/PCK for further details about PCK.
- git apply -v "${srcdir}/rcn-libre-${_pkgver%-*}-${rcnrel}.patch"
+ # RCN patch (CM3 firmware deblobbed and AUFS removed)
+ # Note: For stability reasons, AUFS has been removed in the RCN patch.
+ # We are supporting AUFS in linux-libre-pck through PCK patch.
+ # See https://wiki.parabola.nu/PCK for further details.
+ git apply -v ../rcn-libre-${_pkgver%-*}-${rcnrel}.patch
# ALARM patches
- patch -p1 -i "${srcdir}/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch"
- patch -p1 -i "${srcdir}/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch"
- patch -p1 -i "${srcdir}/0003-SMILE-Plug-device-tree-file.patch"
- patch -p1 -i "${srcdir}/0004-fix-mvsdio-eMMC-timing.patch"
- patch -p1 -i "${srcdir}/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch"
- patch -p1 -i "${srcdir}/0006-set-default-cubietruck-led-triggers.patch"
- patch -p1 -i "${srcdir}/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch"
+ patch -p1 -i ../0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
+ patch -p1 -i ../0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
+ patch -p1 -i ../0003-SMILE-Plug-device-tree-file.patch
+ patch -p1 -i ../0004-fix-mvsdio-eMMC-timing.patch
+ patch -p1 -i ../0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
+ patch -p1 -i ../0006-set-default-cubietruck-led-triggers.patch
+ patch -p1 -i ../0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
+ patch -p1 -i ../0008-disable-USB3-port-on-ODROID-XU.patch
+ patch -p1 -i ../0009-ARM-dove-enable-ethernet-on-D3Plug.patch
fi
-
+
# add freedo as boot logo
install -m644 -t drivers/video/logo \
- "${srcdir}/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm}
+ ../logo_linux_{clut224.ppm,vga16.ppm,mono.pbm}
+
+ # security patches
# add latest fixes from stable queue, if needed
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
-
- # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
- # remove this when a Kconfig knob is made available by upstream
- # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
- patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
-
+
# maintain the TTY over USB disconnects
# http://www.coreboot.org/EHCI_Gadget_Debug
patch -p1 -i "${srcdir}/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch"
@@ -149,7 +151,12 @@ prepare() {
# http://www.fsfla.org/pipermail/linux-libre/2015-November/003202.html
patch -p1 -i "${srcdir}/0002-fix-Atmel-maXTouch-touchscreen-support.patch"
- cat "${srcdir}/config.${CARCH}" > ./.config
+ cp -Tf ../config.$CARCH .config
+
+ if [ "${_kernelname}" != "" ]; then
+ sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
+ sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
+ fi
# append pkgrel to extraversion
sed -ri "s|^(EXTRAVERSION =.*\S).*|\1-${pkgrel}|" Makefile
@@ -173,7 +180,7 @@ prepare() {
}
build() {
- cd "${srcdir}/${_srcname}"
+ cd ${_srcname}
if [ "${CARCH}" = "armv7h" ]; then
make ${MAKEFLAGS} LOCALVERSION= zImage modules dtbs
@@ -183,27 +190,27 @@ build() {
}
_package() {
- pkgdesc="The ${pkgbase^} kernel and modules - stable longtime supported kernel package suitable for servers with handful of awesome security features [AppArmor, SMACK, TOMOYO, SELinux, YAMA, Knock]"
+pkgdesc="The ${pkgbase^} kernel and modules - stable longtime supported kernel package suitable for servers with handful of awesome security features [AppArmor, SMACK, TOMOYO, SELinux, YAMA, Knock]"
[ "${pkgbase}" = "linux-libre" ] && groups=('base' 'base-openrc')
depends=('coreutils' 'linux-libre-firmware' 'kmod' 'mkinitcpio>=0.7')
optdepends=('crda: to set the correct wireless channels of your country'
'apparmor: to configure and enable mandatory access control for programs'
'openssh-knock: to use SSH with TCP Stealth support')
- provides=("${_replacesarchkernel[@]/%/=${_archpkgver}}" "LINUX-ABI_VERSION=${_archpkgver}")
+ provides=("${_replacesarchkernel[@]/%/=${_archpkgver}}")
conflicts=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
replaces=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
install=linux.install
- cd "${srcdir}/${_srcname}"
+ cd ${_srcname}
# get kernel version
_kernver="$(make LOCALVERSION= kernelrelease)"
_basekernel=${_kernver%%-*}
_basekernel=${_basekernel%.*}
- mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
- make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
+ mkdir -p "${pkgdir}"/{boot,usr/lib/modules}
+ make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}/usr" modules_install
if [ "${CARCH}" = "armv7h" ]; then
make LOCALVERSION= INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs/${pkgbase}" dtbs_install
cp arch/$KARCH/boot/zImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
@@ -211,46 +218,52 @@ _package() {
cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
fi
- # set correct depmod command for install
- sed -e "s|%PKGBASE%|${pkgbase}|g;s|%KERNVER%|${_kernver}|g" \
- "${startdir}/${install}" > "${startdir}/${install}.pkg"
- true && install=${install}.pkg
-
- # install mkinitcpio preset file for kernel
- if [ "${CARCH}" = "armv7h" ]; then
- sed "s|/boot/vmlinuz-%PKGBASE%|${_kernver}|g
- s|%PKGBASE%|${pkgbase}|g" "${srcdir}/linux.preset" |
- install -D -m644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
- elif [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
- sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/linux.preset" |
- install -D -m644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
- fi
+ # make room for external modules
+ local _extramodules="extramodules-${_basekernel}${_kernelname:--lts}"
+ ln -s "../${_extramodules}" "${pkgdir}/usr/lib/modules/${_kernver}/extramodules"
- # install pacman hook for initramfs regeneration
- sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/99-linux.hook" |
- install -D -m644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/99-${pkgbase}.hook"
+ # add real version for building modules and running depmod from hook
+ echo "${_kernver}" |
+ install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modules/${_extramodules}/version"
# remove build and source links
- rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
- # remove the firmware
- rm -rf "${pkgdir}/lib/firmware"
- # make room for external modules
- ln -s "../extramodules-${_basekernel}${_kernelname}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
- # add real version for building modules and running depmod from post_install/upgrade
- mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname}"
- echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname}/version"
+ rm "${pkgdir}"/usr/lib/modules/${_kernver}/{source,build}
- # Now we call depmod...
- depmod -b "${pkgdir}" -F System.map "${_kernver}"
+ # now we call depmod...
+ depmod -b "${pkgdir}/usr" -F System.map "${_kernver}"
- # move module tree /lib -> /usr/lib
- mkdir -p "${pkgdir}/usr"
- mv "${pkgdir}/lib" "${pkgdir}/usr/"
+ # add vmlinux
+ install -Dt "${pkgdir}/usr/lib/modules/${_kernver}/build" -m644 vmlinux
- if [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
- # add vmlinux
- install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
+ # sed expression for following substitutions
+ if [ "${CARCH}" = "armv7h" ]; then
+ local _subst="
+ s|/boot/vmlinuz-%PKGBASE%|${_kernver}|g
+ s|%PKGBASE%|${pkgbase}|g
+ s|%KERNVER%|${_kernver}|g
+ s|%EXTRAMODULES%|${_extramodules}|g
+ "
+ elif [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
+ local _subst="
+ s|%PKGBASE%|${pkgbase}|g
+ s|%KERNVER%|${_kernver}|g
+ s|%EXTRAMODULES%|${_extramodules}|g
+ "
fi
+
+ # hack to allow specifying an initially nonexisting install file
+ sed "${_subst}" "${startdir}/${install}" > "${startdir}/${install}.pkg"
+ true && install=${install}.pkg
+
+ # install mkinitcpio preset file
+ sed "${_subst}" ../linux.preset |
+ install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
+
+ # install pacman hooks
+ sed "${_subst}" ../60-linux.hook |
+ install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/60-${pkgbase}.hook"
+ sed "${_subst}" ../90-linux.hook |
+ install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook"
}
_package-headers() {
@@ -259,139 +272,93 @@ _package-headers() {
conflicts=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}")
replaces=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}")
- install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
+ cd ${_srcname}
+ local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
- cd "${srcdir}/${_srcname}"
- install -D -m644 Makefile \
- "${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
- install -D -m644 kernel/Makefile \
- "${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
- install -D -m644 .config \
- "${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
+ install -Dt "${_builddir}" -m644 Makefile .config Module.symvers
+ install -Dt "${_builddir}/kernel" -m644 kernel/Makefile
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
+ mkdir "${_builddir}/.tmp_versions"
- for i in acpi asm-generic config crypto drm generated keys linux math-emu \
- media net pcmcia scsi soc sound trace uapi video xen; do
- cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
- done
+ cp -t "${_builddir}" -a include scripts
- # copy arch includes for external modules
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}"
- cp -a arch/${KARCH}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
- if [ "${CARCH}" = "armv7h" ]; then
- for i in dove exynos omap2; do
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/mach-${i}"
- cp -a arch/${KARCH}/mach-${i}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/mach-${i}/"
- done
- for i in omap orion samsung versatile; do
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/plat-${i}"
- cp -a arch/${KARCH}/plat-${i}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/plat-${i}/"
- done
- fi
-
- # copy files necessary for later builds
- cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
- cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
-
- # fix permissions on scripts dir
- chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
-
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
-
- cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
-
- if [ "${CARCH}" = "i686" ]; then
- cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
+ install -Dt "${_builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile
+ install -Dt "${_builddir}/arch/${KARCH}/kernel" -m644 arch/${KARCH}/kernel/asm-offsets.s
+
+ if [[ ${CARCH} = i686 ]]; then
+ install -t "${_builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile_32.cpu
fi
- cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
-
- # add docbook makefile
- install -D -m644 Documentation/DocBook/Makefile \
- "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
-
- # add dm headers
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
- cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
+ cp -t "${_builddir}/arch/${KARCH}" -a arch/${KARCH}/include
- # add inotify.h
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
- cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
+ install -Dt "${_builddir}/drivers/md" -m644 drivers/md/*.h
+ install -Dt "${_builddir}/net/mac80211" -m644 net/mac80211/*.h
- # add wireless headers
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
- cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
-
- # add dvb headers for external modules
- # in reference to:
# http://bugs.archlinux.org/task/9912
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
- cp drivers/media/dvb-core/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
- # and...
- # http://bugs.archlinux.org/task/11194
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
- cp include/config/dvb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
-
- # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
- # in reference to:
+ install -Dt "${_builddir}/drivers/media/dvb-core" -m644 drivers/media/dvb-core/*.h
+
# http://bugs.archlinux.org/task/13146
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
- cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
- cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
+ install -Dt "${_builddir}/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
- # add dvb headers
- # in reference to:
# http://bugs.archlinux.org/task/20402
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
- cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
- cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
- cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
+ install -Dt "${_builddir}/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
+ install -Dt "${_builddir}/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
+ install -Dt "${_builddir}/drivers/media/tuners" -m644 drivers/media/tuners/*.h
# add xfs and shmem for aufs building
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
- # removed in 3.17-gnu series
- # cp fs/xfs/xfs_sb.h "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs/xfs_sb.h"
+ mkdir -p "${_builddir}"/{fs/xfs,mm}
# copy in Kconfig files
- for i in $(find . -name "Kconfig*"); do
- mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
- cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
- done
+ find . -name Kconfig\* -exec install -Dm644 {} "${_builddir}/{}" \;
# add objtool for external module building and enabled VALIDATION_STACK option
- if [ -f tools/objtool/objtool ]; then
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/tools/objtool"
- cp -a tools/objtool/objtool ${pkgdir}/usr/lib/modules/${_kernver}/build/tools/objtool/
+ if [[ -e tools/objtool/objtool ]]; then
+ install -Dt "${_builddir}/tools/objtool" tools/objtool/objtool
fi
+
+ # remove unneeded architectures
+ local _arch
+ for _arch in "${_builddir}"/arch/*/; do
+ [[ ${_arch} == */${KARCH}/ ]] && continue
+ rm -r "${_arch}"
+ done
- chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
- find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
+ # remove files already in linux-docs package
+ rm -r "${_builddir}/Documentation"
+
+ # parabola changes
+ #
+ # since we don't want to diverge too much from arch's pkgbuild, we'll
+ # start marking our changes as such
+ if [ "${CARCH}" = "armv7h" ]; then
+ for i in dove exynos omap2; do
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/mach-${i}"
+ cp -a arch/${KARCH}/mach-${i}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/mach-${i}/"
+ done
+ for i in omap orion samsung versatile; do
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/plat-${i}"
+ cp -a arch/${KARCH}/plat-${i}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/plat-${i}/"
+ done
+ fi
+ # end of parabola changes
- # strip scripts directory
- find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
- case "$(file -bi "${binary}")" in
- *application/x-sharedlib*) # Libraries (.so)
- /usr/bin/strip ${STRIP_SHARED} "${binary}";;
- *application/x-archive*) # Libraries (.a)
- /usr/bin/strip ${STRIP_STATIC} "${binary}";;
- *application/x-executable*) # Binaries
- /usr/bin/strip ${STRIP_BINARIES} "${binary}";;
- esac
- done
+ # remove now broken symlinks
+ find -L "${_builddir}" -type l -printf 'Removing %P\n' -delete
- # remove unneeded architectures
- find "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch -mindepth 1 -maxdepth 1 -type d -not -name "$KARCH" -exec rm -rf {} +
+ # Fix permissions
+ chmod -R u=rwX,go=rX "${_builddir}"
- # remove files already in docs package
- rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.recursion-issue-01"
- rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.recursion-issue-02"
- rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.select-break"
+ # strip scripts directory
+ local _binary _strip
+ while read -rd '' _binary; do
+ case "$(file -bi "${_binary}")" in
+ *application/x-sharedlib*) _strip="${STRIP_SHARED}" ;; # Libraries (.so)
+ *application/x-archive*) _strip="${STRIP_STATIC}" ;; # Libraries (.a)
+ *application/x-executable*) _strip="${STRIP_BINARIES}" ;; # Binaries
+ *) continue ;;
+ esac
+ /usr/bin/strip ${_strip} "${_binary}"
+ done < <(find "${_builddir}/scripts" -type f -perm -u+w -print0 2>/dev/null)
}
_package-docs() {
@@ -400,15 +367,14 @@ _package-docs() {
conflicts=("${_replacesarchkernel[@]/%/-docs}" "${_replacesoldkernels[@]/%/-docs}")
replaces=("${_replacesarchkernel[@]/%/-docs}" "${_replacesoldkernels[@]/%/-docs}")
- cd "${srcdir}/${_srcname}"
+ cd ${_srcname}
+ local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
- mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build"
- cp -al Documentation "${pkgdir}/usr/lib/modules/${_kernver}/build"
- find "${pkgdir}" -type f -exec chmod 444 {} \;
- find "${pkgdir}" -type d -exec chmod 755 {} \;
+ mkdir -p "${_builddir}"
+ cp -t "${_builddir}" -a Documentation
- # remove a file already in kernel package
- rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
+ # Fix permissions
+ chmod -R u=rwX,go=rX "${_builddir}"
}
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
@@ -418,5 +384,3 @@ for _p in ${pkgname[@]}; do
_package${_p#${pkgbase}}
}"
done
-
-# vim:set ts=8 sts=2 sw=2 et:
diff --git a/kernels/linux-libre-lts-xtreme/change-default-console-loglevel.patch b/kernels/linux-libre-lts-xtreme/change-default-console-loglevel.patch
deleted file mode 100644
index 11da2a9d8..000000000
--- a/kernels/linux-libre-lts-xtreme/change-default-console-loglevel.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-3.16/include/linux/printk.h.old 2014-08-04 18:48:30.686043266 +0200
-+++ linux-3.16/include/linux/printk.h 2014-08-04 18:48:47.706218528 +0200
-@@ -37,7 +37,7 @@
- #define CONSOLE_LOGLEVEL_SILENT 0 /* Mum's the word */
- #define CONSOLE_LOGLEVEL_MIN 1 /* Minimum loglevel we let people use */
- #define CONSOLE_LOGLEVEL_QUIET 4 /* Shhh ..., when booted with "quiet" */
--#define CONSOLE_LOGLEVEL_DEFAULT 7 /* anything MORE serious than KERN_DEBUG */
-+#define CONSOLE_LOGLEVEL_DEFAULT 4 /* anything MORE serious than KERN_DEBUG */
- #define CONSOLE_LOGLEVEL_DEBUG 10 /* issue debug messages */
- #define CONSOLE_LOGLEVEL_MOTORMOUTH 15 /* You can't shut this one up */
-
diff --git a/kernels/linux-libre-lts-xtreme/config.armv7h b/kernels/linux-libre-lts-xtreme/config.armv7h
index 5c07906e5..12e69bf70 100644
--- a/kernels/linux-libre-lts-xtreme/config.armv7h
+++ b/kernels/linux-libre-lts-xtreme/config.armv7h
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.9.74-gnu-1-lts-xtreme Kernel Configuration
+# Linux/arm 4.9.92-gnu-1-lts-xtreme Kernel Configuration
#
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
@@ -57,8 +57,11 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
CONFIG_USELIB=y
-# CONFIG_AUDIT is not set
+CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
#
# IRQ subsystem
@@ -3660,7 +3663,6 @@ CONFIG_SPI_MASTER=y
# CONFIG_SPI_AXI_SPI_ENGINE is not set
CONFIG_SPI_BCM2835=m
CONFIG_SPI_BCM2835AUX=m
-# CONFIG_SPI_BCM_QSPI is not set
CONFIG_SPI_BITBANG=y
CONFIG_SPI_CADENCE=y
CONFIG_SPI_DAVINCI=y
@@ -7965,29 +7967,21 @@ CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
# Security options
#
CONFIG_KEYS=y
-CONFIG_KEYS_COMPAT=y
# CONFIG_PERSISTENT_KEYRINGS is not set
# CONFIG_BIG_KEYS is not set
# CONFIG_TRUSTED_KEYS is not set
-# CONFIG_ENCRYPTED_KEYS is not set
+CONFIG_ENCRYPTED_KEYS=y
# CONFIG_KEY_DH_OPERATIONS is not set
CONFIG_SECURITY_DMESG_RESTRICT=y
-CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
-CONFIG_SECURITY_TIOCSTI_RESTRICT=y
CONFIG_SECURITY=y
-CONFIG_PAGE_TABLE_ISOLATION=y
-# CONFIG_SECURITY_WRITABLE_HOOKS is not set
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
-# CONFIG_SECURITY_INFINIBAND is not set
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_PATH=y
CONFIG_LSM_MMAP_MIN_ADDR=65536
CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
# CONFIG_HARDENED_USERCOPY is not set
-CONFIG_PAGE_SANITIZE=y
-CONFIG_PAGE_SANITIZE_VERIFY=y
-# CONFIG_STATIC_USERMODEHELPER is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
@@ -8009,9 +8003,6 @@ CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
CONFIG_SECURITY_APPARMOR_HASH=y
CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y
-CONFIG_SECURITY_APPARMOR_DEBUG=y
-CONFIG_SECURITY_APPARMOR_DEBUG_ASSERTS=y
-CONFIG_SECURITY_APPARMOR_DEBUG_MESSAGES=y
# CONFIG_SECURITY_LOADPIN is not set
CONFIG_SECURITY_YAMA=y
CONFIG_INTEGRITY=y
@@ -8242,6 +8233,7 @@ CONFIG_CRC32_SLICEBY8=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=y
# CONFIG_CRC8 is not set
+CONFIG_AUDIT_GENERIC=y
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_ZLIB_INFLATE=y
diff --git a/kernels/linux-libre-lts-xtreme/config.i686 b/kernels/linux-libre-lts-xtreme/config.i686
index 7cc1cd539..c9081dc9e 100644
--- a/kernels/linux-libre-lts-xtreme/config.i686
+++ b/kernels/linux-libre-lts-xtreme/config.i686
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.9.74-gnu-1-lts-knock Kernel Configuration
+# Linux/x86 4.9.92-gnu-1-lts-xtreme Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -74,8 +74,11 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
# CONFIG_USELIB is not set
-# CONFIG_AUDIT is not set
+CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
#
# IRQ subsystem
@@ -397,6 +400,7 @@ CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_MPPARSE=y
# CONFIG_X86_BIGSMP is not set
# CONFIG_GOLDFISH is not set
+CONFIG_RETPOLINE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_X86_INTEL_LPSS=y
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
@@ -1787,6 +1791,7 @@ CONFIG_DEV_COREDUMP=y
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_SPI=y
@@ -5213,7 +5218,7 @@ CONFIG_FB_SYS_IMAGEBLIT=m
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=m
CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
+CONFIG_FB_SVGALIB=m
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
@@ -7869,17 +7874,13 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0
# Security options
#
CONFIG_KEYS=y
-CONFIG_KEYS_COMPAT=y
CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_BIG_KEYS is not set
CONFIG_TRUSTED_KEYS=m
CONFIG_ENCRYPTED_KEYS=m
CONFIG_KEY_DH_OPERATIONS=y
CONFIG_SECURITY_DMESG_RESTRICT=y
-CONFIG_SECURITY_TIOCSTI_RESTRICT=y
-CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
CONFIG_SECURITY=y
-CONFIG_PAGE_TABLE_ISOLATION=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
@@ -7889,10 +7890,6 @@ CONFIG_LSM_MMAP_MIN_ADDR=65536
CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
CONFIG_HARDENED_USERCOPY=y
-CONFIG_FORTIFY_SOURCE=y
-CONFIG_PAGE_SANITIZE=y
-CONFIG_PAGE_SANITIZE_VERIFY=y
-# CONFIG_STATIC_USERMODEHELPER is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
@@ -7911,9 +7908,6 @@ CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/usr/bin/tomoyo-init"
CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/usr/bin/init"
CONFIG_SECURITY_APPARMOR=y
-CONFIG_SECURITY_APPARMOR_DEBUG=y
-CONFIG_SECURITY_APPARMOR_DEBUG_ASSERTS=y
-CONFIG_SECURITY_APPARMOR_DEBUG_MESSAGES=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
CONFIG_SECURITY_APPARMOR_HASH=y
CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y
@@ -8021,7 +8015,7 @@ CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_SHA3=m
@@ -8165,6 +8159,7 @@ CONFIG_CRC32_SLICEBY8=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_CRC8=m
+CONFIG_AUDIT_GENERIC=y
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_842_COMPRESS=m
diff --git a/kernels/linux-libre-lts-xtreme/config.x86_64 b/kernels/linux-libre-lts-xtreme/config.x86_64
index d198ed106..a7059b556 100644
--- a/kernels/linux-libre-lts-xtreme/config.x86_64
+++ b/kernels/linux-libre-lts-xtreme/config.x86_64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.9.74-gnu-1-lts-xtreme Kernel Configuration
+# Linux/x86 4.9.92-gnu-1-lts-xtreme Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -77,8 +77,11 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_FHANDLE=y
# CONFIG_USELIB is not set
-# CONFIG_AUDIT is not set
+CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
#
# IRQ subsystem
@@ -222,6 +225,7 @@ CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_BPF_SYSCALL=y
+# CONFIG_BPF_JIT_ALWAYS_ON is not set
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
@@ -415,6 +419,7 @@ CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
# CONFIG_GOLDFISH is not set
+CONFIG_RETPOLINE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_X86_INTEL_LPSS=y
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
@@ -1789,6 +1794,7 @@ CONFIG_DEV_COREDUMP=y
CONFIG_SYS_HYPERVISOR=y
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_SPI=y
@@ -5047,7 +5053,7 @@ CONFIG_FB_SYS_IMAGEBLIT=m
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=m
CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
+CONFIG_FB_SVGALIB=m
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
@@ -7620,24 +7626,17 @@ CONFIG_TRUSTED_KEYS=m
CONFIG_ENCRYPTED_KEYS=m
CONFIG_KEY_DH_OPERATIONS=y
CONFIG_SECURITY_DMESG_RESTRICT=y
-CONFIG_SECURITY_TIOCSTI_RESTRICT=y
-CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
CONFIG_SECURITY=y
CONFIG_PAGE_TABLE_ISOLATION=y
-# CONFIG_SECURITY_WRITABLE_HOOKS is not set
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_INFINIBAND=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_PATH=y
# CONFIG_INTEL_TXT is not set
CONFIG_LSM_MMAP_MIN_ADDR=65536
CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
CONFIG_HARDENED_USERCOPY=y
-CONFIG_FORTIFY_SOURCE=y
-CONFIG_PAGE_SANITIZE=y
-CONFIG_PAGE_SANITIZE_VERIFY=y
-# CONFIG_STATIC_USERMODEHELPER is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
@@ -7656,9 +7655,6 @@ CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/usr/bin/tomoyo-init"
CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/usr/bin/init"
CONFIG_SECURITY_APPARMOR=y
-CONFIG_SECURITY_APPARMOR_DEBUG=y
-CONFIG_SECURITY_APPARMOR_DEBUG_ASSERTS=y
-CONFIG_SECURITY_APPARMOR_DEBUG_MESSAGES=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
CONFIG_SECURITY_APPARMOR_HASH=y
CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y
@@ -7768,7 +7764,7 @@ CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_SHA256_SSSE3=m
CONFIG_CRYPTO_SHA512_SSSE3=m
diff --git a/kernels/linux-libre-lts-xtreme/linux.install b/kernels/linux-libre-lts-xtreme/linux.install
index d13105b4b..f1f033b4e 100644
--- a/kernels/linux-libre-lts-xtreme/linux.install
+++ b/kernels/linux-libre-lts-xtreme/linux.install
@@ -1,31 +1,12 @@
-post_install () {
- # updating module dependencies
- echo ">>> Updating module dependencies. Please wait ..."
- depmod %KERNVER%
- if [ "$(uname -m)" = "armv7l" ]; then
- echo ">>> WARNING: Using this kernel requires an updated U-Boot!"
- fi
-}
-
post_upgrade() {
- # updating module dependencies
- echo ">>> Updating module dependencies. Please wait ..."
- depmod %KERNVER%
if [ "$(uname -m)" = "x86_64" ] || [ "$(uname -m)" = "i686" ]; then
if findmnt --fstab -uno SOURCE /boot &>/dev/null && ! mountpoint -q /boot; then
echo "WARNING: /boot appears to be a separate partition but is not mounted."
fi
-
- if [ $(vercmp $2 3.13) -lt 0 ]; then
- echo ">>> WARNING: AT keyboard support is no longer built into the kernel."
- echo ">>> In order to use your keyboard during early init, you MUST"
- echo ">>> include the 'keyboard' hook in your mkinitcpio.conf."
- fi
fi
}
post_remove() {
- # also remove the compat symlinks
rm -f boot/initramfs-%PKGBASE%.img
rm -f boot/initramfs-%PKGBASE%-fallback.img
}