summaryrefslogtreecommitdiff
path: root/libre/linux-libre-pck
diff options
context:
space:
mode:
Diffstat (limited to 'libre/linux-libre-pck')
-rw-r--r--libre/linux-libre-pck/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch51
-rw-r--r--libre/linux-libre-pck/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch47
-rw-r--r--libre/linux-libre-pck/0003-SMILE-Plug-device-tree-file.patch209
-rw-r--r--libre/linux-libre-pck/0004-fix-mvsdio-eMMC-timing.patch38
-rw-r--r--libre/linux-libre-pck/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch96
-rw-r--r--libre/linux-libre-pck/0006-set-default-cubietruck-led-triggers.patch33
-rw-r--r--libre/linux-libre-pck/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch30
-rw-r--r--libre/linux-libre-pck/0008-ARM-dove-enable-ethernet-on-D3Plug.patch31
-rw-r--r--libre/linux-libre-pck/0009-power-add-power-sequence-library.patch790
-rw-r--r--libre/linux-libre-pck/0010-usb-core-add-power-sequence-handling-for-USB-devices.patch164
-rw-r--r--libre/linux-libre-pck/0011-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch49
-rw-r--r--libre/linux-libre-pck/0012-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch80
-rw-r--r--libre/linux-libre-pck/0013-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch74
-rw-r--r--libre/linux-libre-pck/0014-ARM-mvebu-declare-asm-symbols-as-character-arrays-in.patch61
-rw-r--r--libre/linux-libre-pck/PKGBUILD84
-rw-r--r--libre/linux-libre-pck/config.armv7h4
-rw-r--r--libre/linux-libre-pck/config.i68612
-rw-r--r--libre/linux-libre-pck/config.x86_6451
18 files changed, 59 insertions, 1845 deletions
diff --git a/libre/linux-libre-pck/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch b/libre/linux-libre-pck/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
deleted file mode 100644
index f67e039da..000000000
--- a/libre/linux-libre-pck/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 6cd78f818001a5e2caac7cadc3ffff95d752a021 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@xxxxxx>
-Date: Sun, 2 Dec 2012 19:59:28 +0100
-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.
-
-Signed-off-by: Willy Tarreau <w@xxxxxx>
----
- arch/arm/include/uapi/asm/setup.h | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-diff --git a/arch/arm/include/uapi/asm/setup.h b/arch/arm/include/uapi/asm/setup.h
-index 6b335a9ff8c8..614150b53643 100644
---- a/arch/arm/include/uapi/asm/setup.h
-+++ b/arch/arm/include/uapi/asm/setup.h
-@@ -144,6 +144,18 @@ struct tag_memclk {
- __u32 fmemclk;
- };
-
-+/* Marvell uboot parameters */
-+#define ATAG_MV_UBOOT 0x41000403
-+struct tag_mv_uboot {
-+ __u32 uboot_version;
-+ __u32 tclk;
-+ __u32 sysclk;
-+ __u32 isUsbHost;
-+ __u8 macAddr[4][6];
-+ __u16 mtu[4];
-+ __u32 nand_ecc;
-+};
-+
- struct tag {
- struct tag_header hdr;
- union {
-@@ -166,6 +178,11 @@ struct tag {
- * DC21285 specific
- */
- struct tag_memclk memclk;
-+
-+ /*
-+ * Marvell specific
-+ */
-+ struct tag_mv_uboot mv_uboot;
- } u;
- };
-
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch b/libre/linux-libre-pck/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
deleted file mode 100644
index e834eae8e..000000000
--- a/libre/linux-libre-pck/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From a383c6aaa67e862797d380a5163e633637358568 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@xxxxxx>
-Date: Sun, 2 Dec 2012 19:56:58 +0100
-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
-with the name "mac-address".
-
-This was tested on my Mirabox and the two NICs had their correct
-address set.
-
-Signed-off-by: Willy Tarreau <w@xxxxxx>
----
- arch/arm/boot/compressed/atags_to_fdt.c | 8 +++++++-
- 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 41fa7316c52b..807ed160a4b9 100644
---- a/arch/arm/boot/compressed/atags_to_fdt.c
-+++ b/arch/arm/boot/compressed/atags_to_fdt.c
-@@ -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,
-- uint32_t *val_array, int size)
-+ void *val_array, int size)
- {
- int offset = node_offset(fdt, node_path);
- if (offset < 0)
-@@ -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);
-+ } else if (atag->hdr.tag == ATAG_MV_UBOOT) {
-+ /* This ATAG provides up to 4 MAC addresses */
-+ setprop(fdt, "eth0", "mac-address", atag->u.mv_uboot.macAddr[0], 6);
-+ setprop(fdt, "eth1", "mac-address", atag->u.mv_uboot.macAddr[1], 6);
-+ setprop(fdt, "eth2", "mac-address", atag->u.mv_uboot.macAddr[2], 6);
-+ setprop(fdt, "eth3", "mac-address", atag->u.mv_uboot.macAddr[3], 6);
- }
- }
-
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/0003-SMILE-Plug-device-tree-file.patch b/libre/linux-libre-pck/0003-SMILE-Plug-device-tree-file.patch
deleted file mode 100644
index 03af05aa9..000000000
--- a/libre/linux-libre-pck/0003-SMILE-Plug-device-tree-file.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-From 121aa156d4d107cf2b174c8eac89c7c473c43829 Mon Sep 17 00:00:00 2001
-From: Kevin Mihelich <kevin@archlinuxarm.org>
-Date: Fri, 5 Sep 2014 15:41:19 -0600
-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.
-
-Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
----
- arch/arm/boot/dts/Makefile | 1 +
- arch/arm/boot/dts/armada-370-smileplug.dts | 173 +++++++++++++++++++++
- 2 files changed, 174 insertions(+)
- 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 37a3de760d40..823a9ef2675d 100644
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -1115,6 +1115,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
- armada-370-db.dtb \
- armada-370-dlink-dns327l.dtb \
- armada-370-mirabox.dtb \
-+ armada-370-smileplug.dtb \
- armada-370-netgear-rn102.dtb \
- armada-370-netgear-rn104.dtb \
- armada-370-rd.dtb \
-diff --git a/arch/arm/boot/dts/armada-370-smileplug.dts b/arch/arm/boot/dts/armada-370-smileplug.dts
-new file mode 100644
-index 000000000000..d01308ab848b
---- /dev/null
-+++ b/arch/arm/boot/dts/armada-370-smileplug.dts
-@@ -0,0 +1,173 @@
-+/*
-+ * Device Tree file for Marvell SMILE Plug
-+ *
-+ * Kevin Mihelich <kevin@archlinuxarm.org>
-+ * Gregory CLEMENT <gregory.clement@free-electrons.com>
-+ *
-+ * This file is licensed under the terms of the GNU General Public
-+ * License version 2. This program is licensed "as is" without any
-+ * warranty of any kind, whether express or implied.
-+ */
-+
-+/dts-v1/;
-+#include <dt-bindings/gpio/gpio.h>
-+#include "armada-370.dtsi"
-+
-+/ {
-+ model = "Marvell SMILE Plug";
-+ compatible = "marvell,smileplug", "marvell,armada370", "marvell,armada-370-xp";
-+
-+ chosen {
-+ bootargs = "console=ttyS0,115200 earlyprintk";
-+ };
-+
-+ memory {
-+ device_type = "memory";
-+ reg = <0x00000000 0x20000000>; /* 512 MB */
-+ };
-+
-+ soc {
-+ ranges = <MBUS_ID(0xf0, 0x01) 0 0xd0000000 0x100000
-+ MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>;
-+
-+ pcie-controller {
-+ status = "okay";
-+
-+ /* Internal mini-PCIe connector */
-+ pcie@1,0 {
-+ /* Port 0, Lane 0 */
-+ status = "okay";
-+ };
-+
-+ /* Connected on the PCB to a USB 3.0 XHCI controller */
-+ pcie@2,0 {
-+ /* Port 1, Lane 0 */
-+ status = "okay";
-+ };
-+ };
-+
-+ internal-regs {
-+ serial@12000 {
-+ status = "okay";
-+ };
-+ timer@20300 {
-+ clock-frequency = <600000000>;
-+ status = "okay";
-+ };
-+
-+ gpio_leds {
-+ compatible = "gpio-leds";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&smile_led_pins>;
-+
-+ red_eyes_led {
-+ label = "smileplug:red:eyes";
-+ gpios = <&gpio1 31 0>;
-+ default-state = "off";
-+ };
-+
-+ green_eyes_led {
-+ label = "smileplug:green:eyes";
-+ gpios = <&gpio2 0 0>;
-+ linux,default-trigger = "default-on";
-+ };
-+
-+ red_smile_led {
-+ label = "smileplug:red:smile";
-+ gpios = <&gpio1 15 0>;
-+ default-state = "off";
-+ };
-+
-+ green_smile_led {
-+ label = "smileplug:green:smile";
-+ gpios = <&gpio1 27 0>;
-+ linux,default-trigger = "default-on";
-+ };
-+ };
-+
-+ mdio {
-+ pinctrl-0 = <&mdio_pins>;
-+ pinctrl-names = "default";
-+ phy0: ethernet-phy@0 {
-+ reg = <0>;
-+ };
-+
-+ phy1: ethernet-phy@1 {
-+ reg = <1>;
-+ };
-+ };
-+ ethernet@70000 {
-+ pinctrl-0 = <&ge0_rgmii_pins>;
-+ pinctrl-names = "default";
-+ status = "okay";
-+ phy = <&phy0>;
-+ phy-mode = "rgmii-id";
-+ };
-+ ethernet@74000 {
-+ pinctrl-0 = <&ge1_rgmii_pins>;
-+ pinctrl-names = "default";
-+ status = "okay";
-+ phy = <&phy1>;
-+ phy-mode = "rgmii-id";
-+ };
-+
-+ mvsdio@d4000 {
-+ pinctrl-0 = <&sdio_pins3>;
-+ pinctrl-names = "default";
-+ status = "okay";
-+ /*
-+ * No CD or WP GPIOs: SDIO interface used for
-+ * Wifi/Bluetooth chip
-+ */
-+ broken-cd;
-+ };
-+
-+ usb@50000 {
-+ status = "okay";
-+ };
-+
-+ usb@51000 {
-+ status = "okay";
-+ };
-+
-+ i2c@11000 {
-+ status = "okay";
-+ clock-frequency = <100000>;
-+ pca9505: pca9505@25 {
-+ compatible = "nxp,pca9505";
-+ gpio-controller;
-+ #gpio-cells = <2>;
-+ reg = <0x25>;
-+ };
-+ };
-+
-+ nand@d0000 {
-+ status = "okay";
-+ num-cs = <1>;
-+ marvell,nand-keep-config;
-+ marvell,nand-enable-arbiter;
-+ nand-on-flash-bbt;
-+
-+ partition@0 {
-+ label = "U-Boot";
-+ reg = <0 0x400000>;
-+ };
-+ partition@400000 {
-+ label = "Linux";
-+ reg = <0x400000 0x400000>;
-+ };
-+ partition@800000 {
-+ label = "Filesystem";
-+ reg = <0x800000 0x3f800000>;
-+ };
-+ };
-+ };
-+ };
-+};
-+
-+&pinctrl {
-+ smile_led_pins: smile-led-pins {
-+ marvell,pins = "mpp63", "mpp64", "mpp47", "mpp59";
-+ marvell,function = "gpio";
-+ };
-+};
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/0004-fix-mvsdio-eMMC-timing.patch b/libre/linux-libre-pck/0004-fix-mvsdio-eMMC-timing.patch
deleted file mode 100644
index 4669a97ab..000000000
--- a/libre/linux-libre-pck/0004-fix-mvsdio-eMMC-timing.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From bca0f6d98bb3003178d962f83ba795d524460346 Mon Sep 17 00:00:00 2001
-From: Kevin Mihelich <kevin@archlinuxarm.org>
-Date: Fri, 5 Sep 2014 15:43:56 -0600
-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.
-
-Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
----
- drivers/mmc/host/mvsdio.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
-index e22bbff89c8d..6b30c850ce07 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)
- tmout_index = fls(tmout - 1) - 12;
- if (tmout_index < 0)
- tmout_index = 0;
-- if (tmout_index > MVSD_HOST_CTRL_TMOUT_MAX)
-+// if (tmout_index > MVSD_HOST_CTRL_TMOUT_MAX) //by steven, try to setup the timeout to maximum value
- tmout_index = MVSD_HOST_CTRL_TMOUT_MAX;
-
- dev_dbg(host->dev, "data %s at 0x%08x: blocks=%d blksz=%d tmout=%u (%d)\n",
-@@ -616,6 +616,8 @@ static void mvsd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
- u32 m = DIV_ROUND_UP(host->base_clock, ios->clock) - 1;
- if (m > MVSD_BASE_DIV_MAX)
- m = MVSD_BASE_DIV_MAX;
-+ if(ios->clock==50000000 ) //by steven
-+ m=1;
- mvsd_write(MVSD_CLK_DIV, m);
- host->clock = ios->clock;
- host->ns_per_clk = 1000000000 / (host->base_clock / (m+1));
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch b/libre/linux-libre-pck/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
deleted file mode 100644
index fbbde259a..000000000
--- a/libre/linux-libre-pck/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 021b0a93050b75f56690bbe41fc470c77f7573c0 Mon Sep 17 00:00:00 2001
-From: popcornmix <popcornmix@gmail.com>
-Date: Tue, 18 Feb 2014 01:43:50 -0300
-Subject: [PATCH 05/14] net/smsc95xx: Allow mac address to be set as a
- parameter
-
----
- drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 56 insertions(+)
-
-diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index 06b4d290784d..3be3b5a4a176 100644
---- a/drivers/net/usb/smsc95xx.c
-+++ b/drivers/net/usb/smsc95xx.c
-@@ -60,6 +60,7 @@
- #define SUSPEND_SUSPEND3 (0x08)
- #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
- SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
-+#define MAC_ADDR_LEN (6)
-
- #define CARRIER_CHECK_DELAY (2 * HZ)
-
-@@ -82,6 +83,10 @@ static bool turbo_mode = true;
- module_param(turbo_mode, bool, 0644);
- MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
-
-+static char *macaddr = ":";
-+module_param(macaddr, charp, 0);
-+MODULE_PARM_DESC(macaddr, "MAC address");
-+
- static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
- u32 *data, int in_pm)
- {
-@@ -910,8 +915,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
- return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
- }
-
-+/* Check the macaddr module parameter for a MAC address */
-+static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac)
-+{
-+ int i, j, got_num, num;
-+ u8 mtbl[MAC_ADDR_LEN];
-+
-+ if (macaddr[0] == ':')
-+ return 0;
-+
-+ i = 0;
-+ j = 0;
-+ num = 0;
-+ got_num = 0;
-+ while (j < MAC_ADDR_LEN) {
-+ if (macaddr[i] && macaddr[i] != ':') {
-+ got_num++;
-+ if ('0' <= macaddr[i] && macaddr[i] <= '9')
-+ num = num * 16 + macaddr[i] - '0';
-+ else if ('A' <= macaddr[i] && macaddr[i] <= 'F')
-+ num = num * 16 + 10 + macaddr[i] - 'A';
-+ else if ('a' <= macaddr[i] && macaddr[i] <= 'f')
-+ num = num * 16 + 10 + macaddr[i] - 'a';
-+ else
-+ break;
-+ i++;
-+ } else if (got_num == 2) {
-+ mtbl[j++] = (u8) num;
-+ num = 0;
-+ got_num = 0;
-+ i++;
-+ } else {
-+ break;
-+ }
-+ }
-+
-+ if (j == MAC_ADDR_LEN) {
-+ netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: "
-+ "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2],
-+ mtbl[3], mtbl[4], mtbl[5]);
-+ for (i = 0; i < MAC_ADDR_LEN; i++)
-+ dev_mac[i] = mtbl[i];
-+ return 1;
-+ } else {
-+ return 0;
-+ }
-+}
-+
- static void smsc95xx_init_mac_address(struct usbnet *dev)
- {
-+ /* Check module parameters */
-+ if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr))
-+ return;
-+
- const u8 *mac_addr;
-
- /* maybe the boot loader passed the MAC address in devicetree */
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/0006-set-default-cubietruck-led-triggers.patch b/libre/linux-libre-pck/0006-set-default-cubietruck-led-triggers.patch
deleted file mode 100644
index ba60dea49..000000000
--- a/libre/linux-libre-pck/0006-set-default-cubietruck-led-triggers.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 529b0cbe182106ce8b52cf465f3c54c3e0f12e1c Mon Sep 17 00:00:00 2001
-From: Kevin Mihelich <kevin@archlinuxarm.org>
-Date: Sat, 14 Feb 2015 12:32:27 +0100
-Subject: [PATCH 06/14] set default cubietruck led triggers
-
-Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
----
- arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 2 ++
- 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 5649161de1d7..2be64a886555 100644
---- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
-+++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
-@@ -80,6 +80,7 @@
- blue {
- label = "cubietruck:blue:usr";
- gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
-+ linux,default-trigger = "heartbeat";
- };
-
- orange {
-@@ -95,6 +96,7 @@
- green {
- label = "cubietruck:green:usr";
- gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>;
-+ linux,default-trigger = "mmc0";
- };
- };
-
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch b/libre/linux-libre-pck/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
deleted file mode 100644
index ed7f4e596..000000000
--- a/libre/linux-libre-pck/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From adec3bf3f301ddb15994be72c92f43cc5569dd03 Mon Sep 17 00:00:00 2001
-From: Kevin Mihelich <kevin@archlinuxarm.org>
-Date: Thu, 11 Aug 2016 00:42:37 -0600
-Subject: [PATCH 07/14] exynos4412-odroid: set higher minimum buck2 regulator
- voltage
-
-Set a higher minimum voltage to help reboot issue.
-http://www.spinics.net/lists/linux-samsung-soc/msg54434.html
-
-Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
----
- arch/arm/boot/dts/exynos4412-odroid-common.dtsi | 2 +-
- 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 a09e46c9dbc0..d8117a820812 100644
---- a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
-+++ b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
-@@ -423,7 +423,7 @@
-
- buck2_reg: BUCK2 {
- regulator-name = "vdd_arm";
-- regulator-min-microvolt = <900000>;
-+ regulator-min-microvolt = <1100000>;
- regulator-max-microvolt = <1350000>;
- regulator-always-on;
- regulator-boot-on;
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/0008-ARM-dove-enable-ethernet-on-D3Plug.patch b/libre/linux-libre-pck/0008-ARM-dove-enable-ethernet-on-D3Plug.patch
deleted file mode 100644
index 5395e2b7d..000000000
--- a/libre/linux-libre-pck/0008-ARM-dove-enable-ethernet-on-D3Plug.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 58b7a9138a44bef39a860611354c3dac0f558b1f Mon Sep 17 00:00:00 2001
-From: Kevin Mihelich <kevin@archlinuxarm.org>
-Date: Sun, 7 May 2017 13:32:25 -0600
-Subject: [PATCH 08/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.18.0
-
diff --git a/libre/linux-libre-pck/0009-power-add-power-sequence-library.patch b/libre/linux-libre-pck/0009-power-add-power-sequence-library.patch
deleted file mode 100644
index c0da023ca..000000000
--- a/libre/linux-libre-pck/0009-power-add-power-sequence-library.patch
+++ /dev/null
@@ -1,790 +0,0 @@
-From 4ddcbb9ed40c97371724245d0b8d01d471bb6570 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 09/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 96e98e206b0d..99339375209c 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -11398,6 +11398,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.18.0
-
diff --git a/libre/linux-libre-pck/0010-usb-core-add-power-sequence-handling-for-USB-devices.patch b/libre/linux-libre-pck/0010-usb-core-add-power-sequence-handling-for-USB-devices.patch
deleted file mode 100644
index ddebef4f0..000000000
--- a/libre/linux-libre-pck/0010-usb-core-add-power-sequence-handling-for-USB-devices.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-From 1358757f34c7feff4aab541814c73f6cf3e83b69 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 10/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 987fc5ba6321..bd09fc8ff763 100644
---- a/drivers/usb/Kconfig
-+++ b/drivers/usb/Kconfig
-@@ -45,6 +45,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 fcae521df29b..0c708d3ef179 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>
-@@ -1654,6 +1655,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() */
-@@ -1700,11 +1702,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);
-@@ -1795,6 +1827,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);
-
-@@ -1808,11 +1841,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
-@@ -3653,14 +3689,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 4accfb63f7dc..abe71c5e84cb 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.18.0
-
diff --git a/libre/linux-libre-pck/0011-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch b/libre/linux-libre-pck/0011-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch
deleted file mode 100644
index f5f920626..000000000
--- a/libre/linux-libre-pck/0011-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0b61e501bdfb883df4211fdc47d246df6af06e5a Mon Sep 17 00:00:00 2001
-From: Joshua Clayton <stillcompiling@gmail.com>
-Date: Wed, 21 Jun 2017 14:42:06 +0800
-Subject: [PATCH 11/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 911141e24681..c74e9c7a83bf 100644
---- a/arch/arm/boot/dts/imx6qdl.dtsi
-+++ b/arch/arm/boot/dts/imx6qdl.dtsi
-@@ -965,6 +965,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>;
-@@ -979,6 +981,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>;
-@@ -992,6 +996,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.18.0
-
diff --git a/libre/linux-libre-pck/0012-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch b/libre/linux-libre-pck/0012-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch
deleted file mode 100644
index 6f8d546d4..000000000
--- a/libre/linux-libre-pck/0012-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 3e35057ab8b11c232a7c0edeea3299d53c6d600d 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 12/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 4f27861bbb32..dead14b0d4bf 100644
---- a/arch/arm/boot/dts/imx6qdl-udoo.dtsi
-+++ b/arch/arm/boot/dts/imx6qdl-udoo.dtsi
-@@ -5,6 +5,8 @@
- * Author: Fabio Estevam <fabio.estevam@freescale.com>
- */
-
-+#include <dt-bindings/gpio/gpio.h>
-+
- / {
- aliases {
- backlight = &backlight;
-@@ -61,17 +63,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>;
-@@ -197,7 +188,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
- >;
- };
-@@ -268,9 +259,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.18.0
-
diff --git a/libre/linux-libre-pck/0013-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch b/libre/linux-libre-pck/0013-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch
deleted file mode 100644
index 31023b56b..000000000
--- a/libre/linux-libre-pck/0013-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 9d40728e452daf4d77f8924e499814138dc5363c Mon Sep 17 00:00:00 2001
-From: Joshua Clayton <stillcompiling@gmail.com>
-Date: Wed, 21 Jun 2017 14:42:08 +0800
-Subject: [PATCH 13/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 fcd257bc5ac3..d32fa81bba95 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.18.0
-
diff --git a/libre/linux-libre-pck/0014-ARM-mvebu-declare-asm-symbols-as-character-arrays-in.patch b/libre/linux-libre-pck/0014-ARM-mvebu-declare-asm-symbols-as-character-arrays-in.patch
deleted file mode 100644
index d18e2dd8e..000000000
--- a/libre/linux-libre-pck/0014-ARM-mvebu-declare-asm-symbols-as-character-arrays-in.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From a877c2568fc96a7a7ba89dd4cf0df20341df2a37 Mon Sep 17 00:00:00 2001
-From: Ethan Tuttle <ethan@ethantuttle.com>
-Date: Tue, 19 Jun 2018 21:31:08 -0700
-Subject: [PATCH 14/14] ARM: mvebu: declare asm symbols as character arrays in
- pmsu.c
-
-With CONFIG_FORTIFY_SOURCE, memcpy uses the declared size of operands to
-detect buffer overflows. If src or dest is declared as a char, attempts to
-copy more than byte will result in a fortify_panic().
-
-Address this problem in mvebu_setup_boot_addr_wa() by declaring
-mvebu_boot_wa_start and mvebu_boot_wa_end as character arrays. Also remove
-a couple addressof operators to avoid "arithmetic on pointer to an
-incomplete type" compiler error.
-
-See commit 54a7d50b9205 ("x86: mark kprobe templates as character arrays,
-not single characters") for a similar fix.
-
-Fixes "detected buffer overflow in memcpy" error during init on some mvebu
-systems (armada-370-xp, armada-375):
-
-(fortify_panic) from (mvebu_setup_boot_addr_wa+0xb0/0xb4)
-(mvebu_setup_boot_addr_wa) from (mvebu_v7_cpu_pm_init+0x154/0x204)
-(mvebu_v7_cpu_pm_init) from (do_one_initcall+0x7c/0x1a8)
-(do_one_initcall) from (kernel_init_freeable+0x1bc/0x254)
-(kernel_init_freeable) from (kernel_init+0x8/0x114)
-(kernel_init) from (ret_from_fork+0x14/0x2c)
-
-Signed-off-by: Ethan Tuttle <ethan@ethantuttle.com>
-Tested-by: Ethan Tuttle <ethan@ethantuttle.com>
----
- arch/arm/mach-mvebu/pmsu.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c
-index 27a78c80e5b1..73d5d72dfc3e 100644
---- a/arch/arm/mach-mvebu/pmsu.c
-+++ b/arch/arm/mach-mvebu/pmsu.c
-@@ -116,8 +116,8 @@ void mvebu_pmsu_set_cpu_boot_addr(int hw_cpu, void *boot_addr)
- PMSU_BOOT_ADDR_REDIRECT_OFFSET(hw_cpu));
- }
-
--extern unsigned char mvebu_boot_wa_start;
--extern unsigned char mvebu_boot_wa_end;
-+extern unsigned char mvebu_boot_wa_start[];
-+extern unsigned char mvebu_boot_wa_end[];
-
- /*
- * This function sets up the boot address workaround needed for SMP
-@@ -130,7 +130,7 @@ int mvebu_setup_boot_addr_wa(unsigned int crypto_eng_target,
- phys_addr_t resume_addr_reg)
- {
- void __iomem *sram_virt_base;
-- u32 code_len = &mvebu_boot_wa_end - &mvebu_boot_wa_start;
-+ u32 code_len = mvebu_boot_wa_end - mvebu_boot_wa_start;
-
- mvebu_mbus_del_window(BOOTROM_BASE, BOOTROM_SIZE);
- mvebu_mbus_add_window_by_id(crypto_eng_target, crypto_eng_attribute,
---
-2.18.0
-
diff --git a/libre/linux-libre-pck/PKGBUILD b/libre/linux-libre-pck/PKGBUILD
index d877137d5..13b5d9b19 100644
--- a/libre/linux-libre-pck/PKGBUILD
+++ b/libre/linux-libre-pck/PKGBUILD
@@ -11,7 +11,7 @@
pkgbase=linux-libre-pck
_srcbasever=4.18-gnu
-_srcver=4.18.7-gnu
+_srcver=4.18.9-gnu
_pckver=pck1
_replacesarchkernel=('linux-zen')
@@ -22,7 +22,6 @@ _srcname=linux-${_srcbasever%-*}
_archpkgver=${_srcver%-*}
pkgver=${_srcver//-/.${_pckver}_}
pkgrel=1
-rcnrel=armv7-x7
arch=(i686 x86_64 armv7h)
url="https://wiki.parabola.nu/PCK"
license=(GPL2)
@@ -32,31 +31,12 @@ source=(
"https://linux-libre.fsfla.org/pub/linux-libre/releases/$_srcbasever/linux-libre-$_srcbasever.tar.xz"{,.sign}
"https://linux-libre.fsfla.org/pub/linux-libre/releases/$_srcver/patch-$_srcbasever-$_srcver.xz"{,.sign}
"https://repo.parabola.nu/other/pck/patches/$_srcver/patch-$_srcver-$_pckver.patch"{,.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/${_srcver%-*}/rcn-libre-${_srcver%-*}-$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-ARM-dove-enable-ethernet-on-D3Plug.patch'
- '0009-power-add-power-sequence-library.patch'
- '0010-usb-core-add-power-sequence-handling-for-USB-devices.patch'
- '0011-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch'
- '0012-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch'
- '0013-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch'
- '0014-ARM-mvebu-declare-asm-symbols-as-character-arrays-in.patch'
)
validpgpkeys=(
'474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
@@ -64,38 +44,16 @@ validpgpkeys=(
)
sha512sums=('0c221c6e84eb5bc270ef79454bf407079daed84534afb1d449d40fa46e42868a471d3063016a4eb3f68d42879e18ee314ab30716116805fee35b5084b23df2a9'
'SKIP'
- 'eb6ac128ed56fa9a499e32939d71d2c4f3afa3c064882c34222c6ac23e2ea0f323155a400525e007093ff9313045c677fbc2f9487d42fd4c3b23a09d8454991f'
+ '72486a515539b2420daa6fb41c41f5994dbc4572bdacd80f75fb965398b6e12ed06c491ddab263adc36c5d48da52e1b5cf1145f4f808665dffc64ba16bfc90d4'
'SKIP'
- '16bd5ea296c2ce1045ade8e85dd8d073575e480f499630cad9a1c4a3b71b8b812c1b80efec9f2e3c8aaa0d4d42d446bb1499617cbc38a07d45110ee853f20cb5'
+ '820b2e4d6e13152817674870b787af62425d2bdb9d2555b82334238b48500f7e0201a2ddc01f6db2a34008a5ba241f548cffe751876069cc7ff1ff986f6d05ab'
'SKIP'
- '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'
- 'SKIP'
- '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1'
- 'SKIP'
- '7a3716bfe3b9f546da309c7492f3e08f8f506813afeb1c737a474c83313d5c313cf4582b65215c2cfce3b74d9d1021c96e8badafe8f6e5b01fe28d2b5c61ae78'
- 'SKIP'
- '0168a5c4ac87199a9e9312164e38492d4d7dfc1bceb8cae4ad4024b60fb6d4f9e7fe5615027826e8ca4b11fd33d78610b138a86059744f1ebf50b11c1316a2a7'
- '5082962fd5d3af17e584198cf7731d40f4bd2f31dd7ebc5235bc19905fa7715d30c07be9a8f8efa29883124e2b54639ba4a5d6b3dd1e2eee4f7cf2ff77230cb0'
- 'fb2a6268dad39d2a84f90e90af31e133fb7c7bd0a20c9e82c7badcfab452b387ad51a0f13d885c6355dc869984385f42e5147a283b27dcc7af291794163c2883'
+ '8a10ff5806923acf49fa286a8060b892767398a3da5b7b8ff12a9904e6576e23d346519ef5dfaa1cd7e8c8fdb3a8e573968d30343e025362dd6b7fb2c72fec3c'
+ '7279a753afbbc7eedb5a5d4d98ed6300ef1014ae4666367a3a1040c6bd45c13c84bc187f90f9b04c9a32d6b6032319b42bf48dc650522c2fde1262891a121941'
+ 'a786de70e1e7106e26bec8afd67bc6a18c6124c6e3bfa9f7d1a794f1b0bce9b095e1806e79583a8c4f2e90424370fdafba77bed93215e62239fb4eda5dae257a'
'7ad5be75ee422dda3b80edd2eb614d8a9181e2c8228cd68b3881e2fb95953bf2dea6cbe7900ce1013c9de89b2802574b7b24869fc5d7a95d3cc3112c4d27063a'
'4a8b324aee4cccf3a512ad04ce1a272d14e5b05c8de90feb82075f55ea3845948d817e1b0c6f298f5816834ddd3e5ce0a0e2619866289f3c1ab8fd2f35f04f44'
- '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf'
- '41d00af3409e8ae91aa0423ef73a5d4c5ed4ba4e2244ef37d8b8a3c8d4e379c26e45fef21274d8e2c795ef545a3212b735fc1b5b5a8b6338c8a72ca29c5167c0'
- 'SKIP'
- '8a12b4477f716214266b83785335515bc0d1b1ee5c728803945e0db613caca2df02939a681716cbb51039f9a003c7e7048d882271691fd8c20f273a4a8b78f01'
- '47838b54f76595fd0dda8699bccf55aeefbe9031da965b50fadf2a8f8bb34c2e12b8c4b29cca5f6e6b3ce2704464dc1966565185641ab1b64ce2575591a79de7'
- '067ed33621353496c19b88746b9b1ab875e8a1bde3954f4aa4e8c353389e0d15551e4edaa173e98f8dfe48877b7edec40abc68f423511dcaf5db81d998560acf'
- 'cec08c029509c6c07f1addb6ac1338b61ded296eac5dd3d66449429090ae0743a09cf93d8da46082784e463ee44d42fea669d362cec8ef36aa0527a0a20f1271'
- '4cd1491b69a130f7e0a2bf93c542f962e50ed2b727a96b71bfe5c2444db1abf5dba559135feecc3c02e122f717a71982d73f7432fefa9da309ce2406add591e5'
- '796e6808297a9e037c9a8912d796347f83d2c17e0162920a792216e3d6ef0e860a93c1a2c41797f1fa59cbbcaa2ace7a088ebc36dcb699ee17b95a47e39f2dda'
- '41a5f8d2fd1d82fac38afb8b15631d35d9a15f779cf60963943af2807b8caf40461e212bd0081b46dd39e08d3a4ad94910700ab4bee8460fe99d725a22f7b1e2'
- 'e18ab92d1c4fcc9782ad9fdb456d3be397e17f9ec5e897242ba891c9cbb738bc616981447a7593bb907c5dd231035b000282e0e6f522cd6921a200d3b089aec8'
- '85551c55a66885d765808ceb2c7f31cd911ec7c42212a7801883cee35881171de4d26d053d6c62cbec4474c437061e05ac5857b5038e64b7c14e7df3bb5985b1'
- 'a690b4ae030fe9657b2629bbe8d38b74415db06f293d0413c74b5ef88f85693f61926ff9b83fbd099ae25a11bf03b9f7cdf947ae2c52434282b3a583b280d78c'
- '28d26ca6ffc095cac0574fadb7621ea0674d542deee3bb03d251ee3a6597107002cd24d88850ca9e0a987438c86b4c61b0d146d09f29bf57ca21f04e733b6865'
- 'e1b00e33bcdbc663041df21a2fa84743eebaf904204ea9b7458e4dde7bc61b17faa22c09038283e26291458427ebd9a53bf463b1bc8bc28d147d1a186426b232'
- 'c3a3ceed29b8513f478cad877507c7d2171453d24346c4d62ebf34c3f35ed13ebce2ca6f7200e97693ea900f504528685fe5b59c641ccfe36bc9bc257106f157'
- '073c48fea2989334451b9020e8151c0385b07affcb2bc5f778fd5f9d2d8182e40dcd04edde4d53648c1ed8cea4721afc04267a72e429be3612d2f77f5d0fd459')
+ '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf')
_kernelname=${pkgbase#linux-libre}
_replacesarchkernel=("${_replacesarchkernel[@]/\%/${_kernelname}}")
@@ -118,34 +76,6 @@ prepare() {
# add PCK patch
patch -p1 -i ../patch-$_srcver-$_pckver.patch
- if [ "$CARCH" = "armv7h" ]; then
- # RCN patch (CM3 firmware deblobbed and AUFS/WireGuard 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.
- patch -p1 -i ../rcn-libre-${_srcver%-*}-$rcnrel.patch
-
- # ALARM patches
- 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-ARM-dove-enable-ethernet-on-D3Plug.patch
- patch -p1 -i ../0009-power-add-power-sequence-library.patch
- patch -p1 -i ../0010-usb-core-add-power-sequence-handling-for-USB-devices.patch
- patch -p1 -i ../0011-ARM-dts-imx6qdl-Enable-usb-node-children-with-reg.patch
- patch -p1 -i ../0012-ARM-dts-imx6qdl-udoo.dtsi-fix-onboard-USB-HUB-proper.patch
- patch -p1 -i ../0013-ARM-dts-imx6q-evi-Fix-onboard-hub-reset-line.patch
- patch -p1 -i ../0014-ARM-mvebu-declare-asm-symbols-as-character-arrays-in.patch
- fi
-
- # add freedo as boot logo
- install -m644 -t drivers/video/logo \
- ../logo_linux_{clut224.ppm,vga16.ppm,mono.pbm}
-
msg2 "Setting version..."
scripts/setlocalversion --save-scmversion
echo "-$pkgrel" > localversion.10-pkgrel
diff --git a/libre/linux-libre-pck/config.armv7h b/libre/linux-libre-pck/config.armv7h
index 06b4b0006..75f506ec3 100644
--- a/libre/linux-libre-pck/config.armv7h
+++ b/libre/linux-libre-pck/config.armv7h
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.18.7-gnu-pck1 Kernel Configuration
+# Linux/arm 4.18.9-gnu-pck1 Kernel Configuration
#
#
@@ -59,7 +59,7 @@ CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_CROSS_MEMORY_ATTACH=y
-CONFIG_USELIB=y
+# CONFIG_USELIB is not set
CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y
diff --git a/libre/linux-libre-pck/config.i686 b/libre/linux-libre-pck/config.i686
index 7270468dc..53fd5993d 100644
--- a/libre/linux-libre-pck/config.i686
+++ b/libre/linux-libre-pck/config.i686
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.18.7-gnu-pck1 Kernel Configuration
+# Linux/x86 4.18.9-gnu-pck1 Kernel Configuration
#
#
@@ -1155,14 +1155,14 @@ CONFIG_NF_NAT_REDIRECT=y
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_OSF=m
CONFIG_NF_TABLES=m
-# CONFIG_NF_TABLES_SET is not set
+CONFIG_NF_TABLES_SET=m
CONFIG_NF_TABLES_INET=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_FLOW_OFFLOAD=m
CONFIG_NFT_COUNTER=m
-# CONFIG_NFT_CONNLIMIT is not set
+CONFIG_NFT_CONNLIMIT=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
@@ -1177,7 +1177,7 @@ CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_FIB=m
CONFIG_NFT_FIB_INET=m
-# CONFIG_NFT_SOCKET is not set
+CONFIG_NFT_SOCKET=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
@@ -4239,6 +4239,7 @@ CONFIG_GPIO_ACPI=y
CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+# CONFIG_GPIO_OF_HELPER is not set
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_MAX730X=m
@@ -4454,6 +4455,8 @@ CONFIG_CHARGER_TPS65217=m
CONFIG_BATTERY_GAUGE_LTC2941=m
CONFIG_BATTERY_RT5033=m
CONFIG_CHARGER_RT9455=m
+CONFIG_POWER_SEQUENCE=y
+# CONFIG_PWRSEQ_GENERIC is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -5790,6 +5793,7 @@ CONFIG_DRM_SCHED=m
#
# I2C encoder or helper chips
#
+# CONFIG_DRM_I2C_ADIHDMI is not set
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
CONFIG_DRM_I2C_NXP_TDA998X=m
diff --git a/libre/linux-libre-pck/config.x86_64 b/libre/linux-libre-pck/config.x86_64
index 8a1a330ba..928e56b22 100644
--- a/libre/linux-libre-pck/config.x86_64
+++ b/libre/linux-libre-pck/config.x86_64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.18.6-gnu-pck1 Kernel Configuration
+# Linux/x86 4.18.9-gnu-pck1 Kernel Configuration
#
#
@@ -57,7 +57,7 @@ CONFIG_THREAD_INFO_IN_TASK=y
# General setup
#
CONFIG_PCK_INTERACTIVE=y
-# CONFIG_SCHED_PDS is not set
+# CONFIG_SCHED_MUQSS is not set
CONFIG_INIT_ENV_ARG_LIMIT=32
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
@@ -385,7 +385,15 @@ CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
-# CONFIG_MODULE_SIG is not set
+CONFIG_MODULE_SIG=y
+# CONFIG_MODULE_SIG_FORCE is not set
+CONFIG_MODULE_SIG_ALL=y
+# CONFIG_MODULE_SIG_SHA1 is not set
+# CONFIG_MODULE_SIG_SHA224 is not set
+# CONFIG_MODULE_SIG_SHA256 is not set
+# CONFIG_MODULE_SIG_SHA384 is not set
+CONFIG_MODULE_SIG_SHA512=y
+CONFIG_MODULE_SIG_HASH="sha512"
CONFIG_MODULE_COMPRESS=y
# CONFIG_MODULE_COMPRESS_GZIP is not set
CONFIG_MODULE_COMPRESS_XZ=y
@@ -562,6 +570,8 @@ CONFIG_NR_CPUS=320
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
CONFIG_SCHED_MC_PRIO=y
+CONFIG_RQ_NONE=y
+CONFIG_SHARERQ=0
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
@@ -4250,6 +4260,7 @@ CONFIG_GPIO_ACPI=y
CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+# CONFIG_GPIO_OF_HELPER is not set
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_MAX730X=m
@@ -4462,6 +4473,8 @@ CONFIG_CHARGER_TPS65217=m
CONFIG_BATTERY_GAUGE_LTC2941=m
CONFIG_BATTERY_RT5033=m
CONFIG_CHARGER_RT9455=m
+CONFIG_POWER_SEQUENCE=y
+# CONFIG_PWRSEQ_GENERIC is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -5782,6 +5795,7 @@ CONFIG_DRM_SCHED=m
#
# I2C encoder or helper chips
#
+# CONFIG_DRM_I2C_ADIHDMI is not set
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
CONFIG_DRM_I2C_NXP_TDA998X=m
@@ -9173,9 +9187,10 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
CONFIG_EARLY_PRINTK_EFI=y
# CONFIG_EARLY_PRINTK_USB_XDBC is not set
+CONFIG_X86_PTDUMP_CORE=y
# CONFIG_X86_PTDUMP is not set
# CONFIG_EFI_PGT_DUMP is not set
-# CONFIG_DEBUG_WX is not set
+CONFIG_DEBUG_WX=y
CONFIG_DOUBLEFAULT=y
# CONFIG_DEBUG_TLBFLUSH is not set
# CONFIG_IOMMU_DEBUG is not set
@@ -9220,19 +9235,36 @@ 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_HARDENED_USERCOPY=y
CONFIG_HARDENED_USERCOPY_FALLBACK=y
# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set
CONFIG_FORTIFY_SOURCE=y
# CONFIG_STATIC_USERMODEHELPER is not set
-# CONFIG_SECURITY_SELINUX is not set
+CONFIG_SECURITY_SELINUX=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
+# CONFIG_SECURITY_SELINUX_DISABLE is not set
+CONFIG_SECURITY_SELINUX_DEVELOP=y
+CONFIG_SECURITY_SELINUX_AVC_STATS=y
+CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
-# CONFIG_SECURITY_APPARMOR is not set
+CONFIG_SECURITY_APPARMOR=y
+CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=0
+CONFIG_SECURITY_APPARMOR_HASH=y
+CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y
+# CONFIG_SECURITY_APPARMOR_DEBUG is not set
# CONFIG_SECURITY_LOADPIN is not set
CONFIG_SECURITY_YAMA=y
-# CONFIG_INTEGRITY is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
+# CONFIG_IMA is not set
+# CONFIG_EVM is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
CONFIG_XOR_BLOCKS=m
@@ -9352,7 +9384,7 @@ CONFIG_CRYPTO_SHA1_MB=m
CONFIG_CRYPTO_SHA256_MB=m
CONFIG_CRYPTO_SHA512_MB=m
CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_SHA3=m
CONFIG_CRYPTO_SM3=m
CONFIG_CRYPTO_TGR192=m
@@ -9393,7 +9425,7 @@ CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
CONFIG_CRYPTO_SM4=m
-CONFIG_CRYPTO_SPECK=m
+# CONFIG_CRYPTO_SPECK is not set
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
@@ -9460,6 +9492,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
#
# Certificates for signature checking
#
+CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_TRUSTED_KEYS=""
# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set