From 0457acee40729d790b44ff7b91e6dabc7531051d Mon Sep 17 00:00:00 2001 From: David P Date: Fri, 1 Nov 2019 14:11:08 -0300 Subject: addpkg: libre-testing/linux-libre-lts 4.19.81_gnu-1 Signed-off-by: David P --- ...RM-atags-add-support-for-Marvell-s-u-boot.patch | 51 + ...ctl-and-CONFIG-to-disallow-unprivileged-C.patch | 132 + ...gadget-no-TTY-hangup-on-USB-disconnect-WI.patch | 39 + ...dt-retrieve-MAC-addresses-from-Marvell-bo.patch | 47 + ...02-fix-Atmel-maXTouch-touchscreen-support.patch | 37 + .../0003-SMILE-Plug-device-tree-file.patch | 209 + .../0004-fix-mvsdio-eMMC-timing.patch | 38 + ...x-Allow-mac-address-to-be-set-as-a-parame.patch | 95 + .../0006-set-default-cubietruck-led-triggers.patch | 33 + ...odroid-set-higher-minimum-buck2-regulator.patch | 30 + .../0008-ARM-dove-enable-ethernet-on-D3Plug.patch | 31 + ...c2-disable-power_down-on-rockchip-devices.patch | 44 + libre-testing/linux-libre-lts/PKGBUILD | 348 + libre-testing/linux-libre-lts/config.armv7h | 8856 ++++++++++++++++++ libre-testing/linux-libre-lts/config.i686 | 9714 ++++++++++++++++++++ libre-testing/linux-libre-lts/config.x86_64 | 9706 +++++++++++++++++++ 16 files changed, 29410 insertions(+) create mode 100644 libre-testing/linux-libre-lts/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch create mode 100644 libre-testing/linux-libre-lts/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch create mode 100644 libre-testing/linux-libre-lts/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch create mode 100644 libre-testing/linux-libre-lts/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch create mode 100644 libre-testing/linux-libre-lts/0002-fix-Atmel-maXTouch-touchscreen-support.patch create mode 100644 libre-testing/linux-libre-lts/0003-SMILE-Plug-device-tree-file.patch create mode 100644 libre-testing/linux-libre-lts/0004-fix-mvsdio-eMMC-timing.patch create mode 100644 libre-testing/linux-libre-lts/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch create mode 100644 libre-testing/linux-libre-lts/0006-set-default-cubietruck-led-triggers.patch create mode 100644 libre-testing/linux-libre-lts/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch create mode 100644 libre-testing/linux-libre-lts/0008-ARM-dove-enable-ethernet-on-D3Plug.patch create mode 100644 libre-testing/linux-libre-lts/0009-usb-dwc2-disable-power_down-on-rockchip-devices.patch create mode 100644 libre-testing/linux-libre-lts/PKGBUILD create mode 100644 libre-testing/linux-libre-lts/config.armv7h create mode 100644 libre-testing/linux-libre-lts/config.i686 create mode 100644 libre-testing/linux-libre-lts/config.x86_64 (limited to 'libre-testing') diff --git a/libre-testing/linux-libre-lts/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch b/libre-testing/linux-libre-lts/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch new file mode 100644 index 000000000..35b77d3ec --- /dev/null +++ b/libre-testing/linux-libre-lts/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch @@ -0,0 +1,51 @@ +From 311f37a47e903b459dabc396494ac1621fb2d78b Mon Sep 17 00:00:00 2001 +From: Willy Tarreau +Date: Sun, 2 Dec 2012 19:59:28 +0100 +Subject: [PATCH 1/9] 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 +--- + 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.19.0 + diff --git a/libre-testing/linux-libre-lts/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/libre-testing/linux-libre-lts/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch new file mode 100644 index 000000000..f93022e50 --- /dev/null +++ b/libre-testing/linux-libre-lts/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch @@ -0,0 +1,132 @@ +From 6136ffb3d88e9f044260f8288d2d0a1edd64379e Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Mon, 16 Sep 2019 04:53:20 +0200 +Subject: [PATCH] ZEN: Add sysctl and CONFIG to disallow unprivileged + CLONE_NEWUSER + +Our default behavior continues to match the vanilla kernel. +--- + init/Kconfig | 16 ++++++++++++++++ + kernel/fork.c | 15 +++++++++++++++ + kernel/sysctl.c | 12 ++++++++++++ + kernel/user_namespace.c | 7 +++++++ + 4 files changed, 50 insertions(+) + +diff --git a/init/Kconfig b/init/Kconfig +index bd7d650d4a99..658f9c052151 100644 +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1091,6 +1091,22 @@ config USER_NS + + If unsure, say N. + ++config USER_NS_UNPRIVILEGED ++ bool "Allow unprivileged users to create namespaces" ++ default y ++ depends on USER_NS ++ help ++ When disabled, unprivileged users will not be able to create ++ new namespaces. Allowing users to create their own namespaces ++ has been part of several recent local privilege escalation ++ exploits, so if you need user namespaces but are ++ paranoid^Wsecurity-conscious you want to disable this. ++ ++ This setting can be overridden at runtime via the ++ kernel.unprivileged_userns_clone sysctl. ++ ++ If unsure, say Y. ++ + config PID_NS + bool "PID Namespaces" + default y +diff --git a/kernel/fork.c b/kernel/fork.c +index 541fd805fb88..ffd57c812153 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -106,6 +106,11 @@ + + #define CREATE_TRACE_POINTS + #include ++#ifdef CONFIG_USER_NS ++extern int unprivileged_userns_clone; ++#else ++#define unprivileged_userns_clone 0 ++#endif + + /* + * Minimum number of threads to boot the kernel +@@ -1788,6 +1793,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. +@@ -2819,6 +2828,12 @@ int ksys_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 078950d9605b..baead3605bbe 100644 +--- a/kernel/sysctl.c ++++ b/kernel/sysctl.c +@@ -110,6 +110,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; +@@ -545,6 +548,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 8eadadc478f9..c36ecd19562c 100644 +--- a/kernel/user_namespace.c ++++ b/kernel/user_namespace.c +@@ -21,6 +21,13 @@ + #include + #include + ++/* sysctl */ ++#ifdef CONFIG_USER_NS_UNPRIVILEGED ++int unprivileged_userns_clone = 1; ++#else ++int unprivileged_userns_clone; ++#endif ++ + static struct kmem_cache *user_ns_cachep __read_mostly; + static DEFINE_MUTEX(userns_state_mutex); + +-- +2.23.0 + diff --git a/libre-testing/linux-libre-lts/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch b/libre-testing/linux-libre-lts/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch new file mode 100644 index 000000000..e9de435fd --- /dev/null +++ b/libre-testing/linux-libre-lts/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch @@ -0,0 +1,39 @@ +From 716120e8010a7f400c6bed7384000e95e1465c94 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= +Date: Mon, 26 Aug 2013 19:19:44 +0300 +Subject: [PATCH 1/2] usb serial gadget: no TTY hangup on USB disconnect [WIP] +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We may want to maintain the TTY over USB disconnects. + +This is useful when we have a terminal console to a host which +power-cycles or for other reasons resets the USB host controller. + +Signed-off-by: Kyösti Mälkki +--- + drivers/usb/gadget/function/u_serial.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c +index b369292..d156a28 100644 +--- a/drivers/usb/gadget/function/u_serial.c ++++ b/drivers/usb/gadget/function/u_serial.c +@@ -1258,8 +1258,13 @@ void gserial_disconnect(struct gserial *gser) + gser->ioport = NULL; + if (port->port.count > 0 || port->openclose) { + wake_up_interruptible(&port->drain_wait); ++#if 0 + if (port->port.tty) + tty_hangup(port->port.tty); ++#else ++ if (port->port.tty) ++ stop_tty(port->port.tty); ++#endif + } + spin_unlock_irqrestore(&port->port_lock, flags); + +-- +1.8.1.1 + diff --git a/libre-testing/linux-libre-lts/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch b/libre-testing/linux-libre-lts/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch new file mode 100644 index 000000000..9ab38253d --- /dev/null +++ b/libre-testing/linux-libre-lts/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch @@ -0,0 +1,47 @@ +From 978d7f01eacdb7af7d87dc4c6811b9ff7f19f5cd Mon Sep 17 00:00:00 2001 +From: Willy Tarreau +Date: Sun, 2 Dec 2012 19:56:58 +0100 +Subject: [PATCH 2/9] 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 +--- + 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.19.0 + diff --git a/libre-testing/linux-libre-lts/0002-fix-Atmel-maXTouch-touchscreen-support.patch b/libre-testing/linux-libre-lts/0002-fix-Atmel-maXTouch-touchscreen-support.patch new file mode 100644 index 000000000..5ad26fc9e --- /dev/null +++ b/libre-testing/linux-libre-lts/0002-fix-Atmel-maXTouch-touchscreen-support.patch @@ -0,0 +1,37 @@ +From ab8cc1b2dc1b716d5c08f72dacbe1eded269f304 Mon Sep 17 00:00:00 2001 +From: André Silva +Date: Tue, 22 Mar 2016 17:58:59 -0300 +Subject: [PATCH 2/2] fix Atmel maXTouch touchscreen support + +The Atmel maXTouch touchscreen works with Linux-libre 3.13-gnu, +but not with the current longterm and mainline kernels in +Parabola. + +Now it needs to load nonfree firmware in mxt_initialize(), +which is in drivers/input/touchscreen/atmel_mxt_ts.c, and the +atmel_mxt_ts driver fails to work. + +This driver works if changing reject_firmware_nowait to +request_firmware_nowait in atmel_mxt_ts.c. This line is +requesting the file named MXT_CFG_NAME, and it's a config file, +not the firmware blob. + +Signed-off-by: André Silva +Signed-off-by: mytbk +--- + drivers/input/touchscreen/atmel_mxt_ts.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c +index 726a83e..d818834 100644 +--- a/drivers/input/touchscreen/atmel_mxt_ts.c ++++ b/drivers/input/touchscreen/atmel_mxt_ts.c +@@ -1989,7 +1989,7 @@ static int mxt_initialize(struct mxt_data *data) + if (error) + goto err_free_object_table; + +- error = reject_firmware_nowait(THIS_MODULE, true, MXT_CFG_NAME, ++ error = request_firmware_nowait(THIS_MODULE, true, MXT_CFG_NAME, + &client->dev, GFP_KERNEL, data, + mxt_config_cb); + if (error) { diff --git a/libre-testing/linux-libre-lts/0003-SMILE-Plug-device-tree-file.patch b/libre-testing/linux-libre-lts/0003-SMILE-Plug-device-tree-file.patch new file mode 100644 index 000000000..02eca7c31 --- /dev/null +++ b/libre-testing/linux-libre-lts/0003-SMILE-Plug-device-tree-file.patch @@ -0,0 +1,209 @@ +From 96a2824045c5dff3c3ccb5e01813f5ec6372bde0 Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich +Date: Fri, 5 Sep 2014 15:41:19 -0600 +Subject: [PATCH 3/9] 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 +--- + 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 b5bd3de87c33..547603bafae1 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -1138,6 +1138,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 ++ * Gregory CLEMENT ++ * ++ * 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 ++#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 = ; ++ ++ 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.19.0 + diff --git a/libre-testing/linux-libre-lts/0004-fix-mvsdio-eMMC-timing.patch b/libre-testing/linux-libre-lts/0004-fix-mvsdio-eMMC-timing.patch new file mode 100644 index 000000000..19ef6c0ac --- /dev/null +++ b/libre-testing/linux-libre-lts/0004-fix-mvsdio-eMMC-timing.patch @@ -0,0 +1,38 @@ +From 43be8213a90dae909f838dedbc5e8a1e82b9572d Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich +Date: Fri, 5 Sep 2014 15:43:56 -0600 +Subject: [PATCH 4/9] 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 +--- + 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.19.0 + diff --git a/libre-testing/linux-libre-lts/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch b/libre-testing/linux-libre-lts/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch new file mode 100644 index 000000000..18e2a7875 --- /dev/null +++ b/libre-testing/linux-libre-lts/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch @@ -0,0 +1,95 @@ +From 6e0372c8fec9db69e88a19c3a70a4c3a730fd743 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 18 Feb 2014 01:43:50 -0300 +Subject: [PATCH 5/9] 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 262e7a3c23cb..c2b3c5b6e1f3 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) + { +@@ -913,8 +918,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.19.0 + diff --git a/libre-testing/linux-libre-lts/0006-set-default-cubietruck-led-triggers.patch b/libre-testing/linux-libre-lts/0006-set-default-cubietruck-led-triggers.patch new file mode 100644 index 000000000..4bed39a6b --- /dev/null +++ b/libre-testing/linux-libre-lts/0006-set-default-cubietruck-led-triggers.patch @@ -0,0 +1,33 @@ +From b22d8cc1d2763b4abbc6587dff148be3be683ac0 Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich +Date: Sat, 14 Feb 2015 12:32:27 +0100 +Subject: [PATCH 6/9] set default cubietruck led triggers + +Signed-off-by: Kevin Mihelich +--- + 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.19.0 + diff --git a/libre-testing/linux-libre-lts/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch b/libre-testing/linux-libre-lts/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch new file mode 100644 index 000000000..5b5d345e7 --- /dev/null +++ b/libre-testing/linux-libre-lts/0007-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch @@ -0,0 +1,30 @@ +From eaea91920f1836c32a5cdb09eb7054af16b88a27 Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich +Date: Thu, 11 Aug 2016 00:42:37 -0600 +Subject: [PATCH 7/9] 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 +--- + 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.19.0 + diff --git a/libre-testing/linux-libre-lts/0008-ARM-dove-enable-ethernet-on-D3Plug.patch b/libre-testing/linux-libre-lts/0008-ARM-dove-enable-ethernet-on-D3Plug.patch new file mode 100644 index 000000000..6e2d97eab --- /dev/null +++ b/libre-testing/linux-libre-lts/0008-ARM-dove-enable-ethernet-on-D3Plug.patch @@ -0,0 +1,31 @@ +From a3aab9208da801924ba6211998b31571ed564fcd Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich +Date: Sun, 7 May 2017 13:32:25 -0600 +Subject: [PATCH 8/9] ARM: dove: enable ethernet on D3Plug + +Signed-off-by: Kevin Mihelich +--- + 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"; }; ++ð { status = "okay"; }; ++ ++ðphy { ++ compatible = "marvell,88e1310"; ++ reg = <1>; ++}; + + /* Samsung M8G2F eMMC */ + &sdio0 { +-- +2.19.0 + diff --git a/libre-testing/linux-libre-lts/0009-usb-dwc2-disable-power_down-on-rockchip-devices.patch b/libre-testing/linux-libre-lts/0009-usb-dwc2-disable-power_down-on-rockchip-devices.patch new file mode 100644 index 000000000..a91facd17 --- /dev/null +++ b/libre-testing/linux-libre-lts/0009-usb-dwc2-disable-power_down-on-rockchip-devices.patch @@ -0,0 +1,44 @@ +From 3379ffad8f5b3db47578cc4eadc3c0f22f7547f1 Mon Sep 17 00:00:00 2001 +From: Hal Emmerich +Date: Thu, 19 Jul 2018 21:48:08 -0500 +Subject: [PATCH 9/9] usb: dwc2: disable power_down on rockchip devices + + The bug would let the usb controller enter partial power down, + which was formally known as hibernate, upon boot if nothing was plugged + in to the port. Partial power down couldn't be exited properly, so any + usb devices plugged in after boot would not be usable. + + Before the name change, params.hibernation was false by default, so + _dwc2_hcd_suspend() would skip entering hibernation. With the + rename, _dwc2_hcd_suspend() was changed to use params.power_down + to decide whether or not to enter partial power down. + + Since params.power_down is non-zero by default, it needs to be set + to 0 for rockchip devices to restore functionality. + + This bug was reported in the linux-usb thread: + REGRESSION: usb: dwc2: USB device not seen after boot + + The commit that caused this regression is: + 6d23ee9caa6790aea047f9aca7f3c03cb8d96eb6 + +Signed-off-by: Hal Emmerich +--- + drivers/usb/dwc2/params.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c +index bf7052e037d6..09292dc977e4 100644 +--- a/drivers/usb/dwc2/params.c ++++ b/drivers/usb/dwc2/params.c +@@ -81,6 +81,7 @@ static void dwc2_set_rk_params(struct dwc2_hsotg *hsotg) + p->host_perio_tx_fifo_size = 256; + p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 << + GAHBCFG_HBSTLEN_SHIFT; ++ p->power_down = 0; + } + + static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg) +-- +2.19.0 + diff --git a/libre-testing/linux-libre-lts/PKGBUILD b/libre-testing/linux-libre-lts/PKGBUILD new file mode 100644 index 000000000..49161fd44 --- /dev/null +++ b/libre-testing/linux-libre-lts/PKGBUILD @@ -0,0 +1,348 @@ +# Maintainer: David P. +# Contributor: André Silva +# Contributor: Márcio Silva +# Contributor: fauno +# Contributor: Sorin-Mihai Vârgolici +# Contributor: Michał Masłowski +# Contributor: Luke R. +# Contributor: Andreas Grapentin + +# Based on linux-lts package + +_replacesarchkernel=('linux%') # '%' gets replaced with kernel suffix +_replacesoldkernels=() # '%' gets replaced with kernel suffix +_replacesoldmodules=() # '%' gets replaced with kernel suffix + +pkgbase=linux-libre-lts +_srcbasever=4.19-gnu +_srcver=4.19.81-gnu +_srcname=linux-${_srcbasever%-*} +pkgver=${_srcver//-/_} +pkgrel=1 +rcnver=4.19.72 +rcnrel=armv7-x39 +url='https://linux-libre.fsfla.org/' +arch=(i686 x86_64 armv7h) +license=(GPL2) +makedepends=( + xmlto kmod inetutils bc libelf + python-sphinx python-sphinx_rtd_theme graphviz imagemagick +) +options=('!strip') +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/linux-libre/logos/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm}{,.sig} + config.i686 config.x86_64 config.armv7h # the main kernel config files + + # maintain the TTY over USB disconnects + # http://www.coreboot.org/EHCI_Gadget_Debug + 0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch + # fix Atmel maXTouch touchscreen support + # https://labs.parabola.nu/issues/877 + # http://www.fsfla.org/pipermail/linux-libre/2015-November/003202.html + 0002-fix-Atmel-maXTouch-touchscreen-support.patch + + # Arch's custom linux patches + 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +) +source_armv7h=( + # armv7h patches, put in the source_armv7h variable just for a more comfortable loop patching + + # 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. + "https://repo.parabola.nu/other/rcn-libre/patches/${rcnver}/rcn-libre-${rcnver}-$rcnrel.patch"{,.sig} + + # Arch Linux ARM patches + 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-usb-dwc2-disable-power_down-on-rockchip-devices.patch +) +validpgpkeys=( + '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva + '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P. +) +sha512sums=('5bc800b3beff43a8c15bd5515f4e0babe2beb5fa600491b7b37110e22d9b739d293f1e38753ed681be289c51390e0e64b3e60ce0db0a3bfe1f94ee5c014579a3' + 'SKIP' + '93b5702c07394ccaa31b055fe24c0888a34bf09e7921fc0e8acad0bd3f5b49d0fdb73277a7a9b0abc6b54d14b7c61461a214c575517adf5f272907640d595eaf' + 'SKIP' + '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3' + 'SKIP' + '7a3716bfe3b9f546da309c7492f3e08f8f506813afeb1c737a474c83313d5c313cf4582b65215c2cfce3b74d9d1021c96e8badafe8f6e5b01fe28d2b5c61ae78' + 'SKIP' + '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1' + 'SKIP' + '32fddeab0ef9934fbbb2bbbfb416c40ae515b0bb3228655904edfd719e9a094044769938c33c8283c2f043a7b557737ce0a7910b2fd13fc6333d0c028a81f42b' + '78ce426957dfe14d3f0e58ad736489647b1930e8ad43eda27fbbae33bf53cda082295e3e33d6ddb9e58824a29fc069fcafeb8d9f8cd9aa32f3550e9e747f4a7d' + '309fead206abf03dd4832f720108974ecc935b376fab6fca0c1d9197aea44bf074348768ae469c82d30b388678b72017db5e4aebac0f2a85f8691bbf13fd00e7' + '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af' + 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168' + '5f196378d50dd737d727e424d8f31b7fa8a6b92ba88f0a1467ef79bc37a097160da1fc1fd5cfb4b8983f36f2afdf27eb229ec61b35a15ac2343d660eb416a230') +sha512sums_armv7h=('c08532b4246ef2f4c25a5b3358ceb5dbf294fadd7ede5711de92d6f9d8fae5ab0238e0d902c821c7cdcee39332db229f6df943b27fe63e66a96bac296808c174' + 'SKIP' + '60aa432465eb3ac10f565799d3dfecea21aaf08e83909c1161d9359e932626edbd1353e712d616c3d785c65a0f699e9c45df35bd9e86365c25399c6b2d45b9e4' + '86809feb5ae2759b449ec0cb7a6b3fb457874ed82a72dfda00607e8819c804a0714b5d6a17cbbba44996a36872224af42d1b85f1b3932f43bccb419041d25dc7' + '746acff348d62b3ed4e62cd9976ddf0af47f87bd3cffda90cbb00a6b57d589ccb681fcd9541ee5bdd179d95dad71d57c77cb1a60faee1c6cef518e4055c3456f' + 'c945e871fa456b521ced77cae9081bcdc47d836ecdabe6766e373681fe11fda3e5a7a3c16f70c586be64a1eb5c9136c43b0a44df897298940fd8703b50b0a543' + '054e98a2d1ea83cece1fe55ae087b282f25593022f252c74612d4aeb2a547f84ea626e3d982098ca798271af55f3b733ac2aea2fc0d9cad031802d2901dfe4ca' + '4433f9e780a72347313916c8a9cbcbce3a8c40e1b299e887dc748d257879fb5fab8f1683936339f73a4d4b4ef668b1ed6cc0d9a19ed4bd99039a1613ac08610e' + 'd1361d23ae79599e3fa94cba206bd40764f9eee0c584e639af13828dabb7f0dfa361792c098b5afae0bb350407b2dc47a1d67580daeade7a4f3e3e55e42c8470' + 'c1653f91067d31801a23450175e47968add147477caf20aec6092831739641312f4ad995af43c7e55545007279016b5f62a0720d31e4591b4421a65b8bd5b398' + 'a123747792417d3760ca40d7f913c2cdd194da2ea5778352eedebc80097b7b8dce4428a8fe8bd75cab92972f599c25bcf18a740856fc2990351234b0d7ebf9f5') + +_replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}") +_replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}") +_replacesoldmodules=("${_replacesoldmodules[@]/\%/${pkgbase#linux-libre}}") + +case "$CARCH" in + i686|x86_64) KARCH=x86;; + armv7h) KARCH=arm;; +esac + +export KBUILD_BUILD_HOST=parabola +export KBUILD_BUILD_USER=$pkgbase +export KBUILD_BUILD_TIMESTAMP="@${SOURCE_DATE_EPOCH:-$(date +%s)}" + +prepare() { + cd $_srcname + + # add upstream patch + if [ "$_srcbasever" != "$_srcver" ]; then + patch -p1 -i ../patch-$_srcbasever-$_srcver + 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 + echo "${pkgbase#linux}" > localversion.20-pkgname + + if [ "$CARCH" = "armv7h" ]; then + local src_armv7h + for src_armv7h in "${source_armv7h[@]}"; do + src_armv7h="${src_armv7h%%::*}" + src_armv7h="${src_armv7h##*/}" + [[ $src_armv7h = *.patch ]] || continue + msg2 "Applying patch $src_armv7h..." + patch -Np1 < "../$src_armv7h" + done + fi + + local src + for src in "${source[@]}"; do + src="${src%%::*}" + src="${src##*/}" + [[ $src = *.patch ]] || continue + msg2 "Applying patch $src..." + patch -Np1 < "../$src" + done + + msg2 "Setting config..." + cp ../config.$CARCH .config + make olddefconfig + + make -s kernelrelease > version + msg2 "Prepared %s version %s" "$pkgbase" "$(