summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--0001-HID-input-ignore-System-Control-application-usages-i.patch75
-rw-r--r--0001-efi-prune-invalid-memory-map-entries.patch141
-rw-r--r--0001-netfilter-ipv6-nf_defrag-drop-mangled-skb-on-ream-er.patch69
-rw-r--r--0001-platform-x86-ideapad-laptop-Add-Lenovo-Yoga-910-13IK.patch40
-rw-r--r--ARM-OMAP4-Fix-crashes.patch97
-rw-r--r--AllWinner-net-emac.patch97
-rw-r--r--MODSIGN-Don-t-try-secure-boot-if-EFI-runtime-is-disa.patch32
-rw-r--r--MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch32
-rw-r--r--Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch14
-rw-r--r--bcm2837-initial-support.patch66
-rw-r--r--bcm283x-fixes.patch964
-rw-r--r--bcm283x-mmc-imp-speed.patch176
-rw-r--r--bcm283x-vc4-fixes.patch639
-rw-r--r--config-arm-generic36
-rw-r--r--config-arm6450
-rw-r--r--config-armv712
-rw-r--r--config-armv7-generic52
-rw-r--r--config-armv7-lpae4
-rw-r--r--config-debug1
-rw-r--r--config-generic240
-rw-r--r--config-nodebug1
-rw-r--r--config-powerpc642
-rw-r--r--config-powerpc64-generic8
-rw-r--r--config-s390x8
-rw-r--r--config-x86-32-generic21
-rw-r--r--config-x86-generic51
-rw-r--r--config-x86_64-generic9
-rw-r--r--crash-driver.patch29
-rw-r--r--efi-Add-SHIM-and-image-security-database-GUID-defini.patch31
-rw-r--r--filter-aarch64.sh2
-rw-r--r--filter-armv7hl.sh2
-rw-r--r--filter-i686.sh2
-rwxr-xr-xfilter-modules.sh2
-rw-r--r--filter-ppc64.sh2
-rw-r--r--filter-ppc64le.sh2
-rw-r--r--filter-ppc64p7.sh2
-rw-r--r--geekbox-v4-device-tree-support.patch15
-rw-r--r--imx6sx-Add-UDOO-Neo-support.patch619
-rw-r--r--kbuild-AFTER_LINK.patch40
-rw-r--r--kernel.spec78
-rwxr-xr-xremove-binary-diff.pl34
-rw-r--r--selinux-namespace-fix.patch57
-rw-r--r--sources6
-rw-r--r--v3-vfio-pci-Fix-integer-overflows-bitmask-check.patch102
44 files changed, 2506 insertions, 1456 deletions
diff --git a/0001-HID-input-ignore-System-Control-application-usages-i.patch b/0001-HID-input-ignore-System-Control-application-usages-i.patch
deleted file mode 100644
index 9920598c2..000000000
--- a/0001-HID-input-ignore-System-Control-application-usages-i.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 1989dada7ce07848196991c9ebf25ff9c5f14d4e Mon Sep 17 00:00:00 2001
-From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Date: Tue, 13 Sep 2016 11:52:37 +0200
-Subject: [PATCH] HID: input: ignore System Control application usages if not
- System Controls
-
-Microsoft is reusing its report descriptor again and again, and part of it
-looks like this:
-
-0x05, 0x01, // Usage Page (Generic Desktop) 299
-0x09, 0x80, // Usage (System Control) 301
-0xa1, 0x01, // Collection (Application) 303
-0x85, 0x03, // Report ID (3) 305
-0x19, 0x00, // Usage Minimum (0) 307
-0x29, 0xff, // Usage Maximum (255) 309
-0x15, 0x00, // Logical Minimum (0) 311
-0x26, 0xff, 0x00, // Logical Maximum (255) 313
-0x81, 0x00, // Input (Data,Arr,Abs) 316
-0xc0, // End Collection 318
-
-While there is nothing wrong in term of processing, we do however blindly
-map the full usage range (it's an array) from 0x00 to 0xff, which creates
-some interesting axis, like ABS_X|Y, and a bunch of ABS_MISC + n.
-
-While libinput and other stacks don't care that much (we can detect them),
-joydev is very happy and attaches itself to the mouse or keyboard.
-
-The problem is that joydev now handles the device as a joystick, but given
-that we have a HID array, it sets all the ABS_* values to 0. And in its
-world, 0 means -32767 (minimum value), which sends spurious events to games
-(think Steam).
-
-It looks like hid-microsoft tries to tackle the very same problem with its
-.report_fixup callback. But fixing the report descriptor is an endless task
-and is quite obfuscated.
-
-So take the hammer, and decide that if the application is meant to be
-System Control, any other usage not in the System Control range should
-be ignored.
-
-Link: https://bugzilla.redhat.com/show_bug.cgi?id=1325354
-Link: https://bugzilla.kernel.org/show_bug.cgi?id=28912
-Link: https://github.com/ValveSoftware/steam-for-linux/issues/3384
-Link: https://bugzilla.redhat.com/show_bug.cgi?id=1325354
-Link: https://bugzilla.kernel.org/show_bug.cgi?id=37982
-
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Signed-off-by: Jiri Kosina <jkosina@suse.cz>
----
- drivers/hid/hid-input.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
-index bcfaf32..058919d 100644
---- a/drivers/hid/hid-input.c
-+++ b/drivers/hid/hid-input.c
-@@ -604,6 +604,15 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
- break;
- }
-
-+ /*
-+ * Some lazy vendors declare 255 usages for System Control,
-+ * leading to the creation of ABS_X|Y axis and too many others.
-+ * It wouldn't be a problem if joydev doesn't consider the
-+ * device as a joystick then.
-+ */
-+ if (field->application == HID_GD_SYSTEM_CONTROL)
-+ goto ignore;
-+
- if ((usage->hid & 0xf0) == 0x90) { /* D-pad */
- switch (usage->hid) {
- case HID_GD_UP: usage->hat_dir = 1; break;
---
-2.7.4
-
diff --git a/0001-efi-prune-invalid-memory-map-entries.patch b/0001-efi-prune-invalid-memory-map-entries.patch
new file mode 100644
index 000000000..4b65ef504
--- /dev/null
+++ b/0001-efi-prune-invalid-memory-map-entries.patch
@@ -0,0 +1,141 @@
+From c7c7030a020405d5826c03839e38986e0f78f2ea Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Tue, 13 Dec 2016 10:25:10 +0000
+Subject: [PATCH] efi: prune invalid memory map entries
+
+Some machines, such as the Lenovo ThinkPad W541 with firmware GNET80WW
+(2.28), include memory map entries with phys_addr=0x0 and num_pages=0.
+
+Currently the log output for this case (with efi=debug) looks like:
+
+[ 0.000000] efi: mem45: [Reserved | | | | | | | | | | | | ] range=[0x0000000000000000-0xffffffffffffffff] (0MB)
+
+This is clearly wrong, and also not as informative as it could be. This
+patch changes it so that if we find obviously invalid memory map
+entries, we print an error and those entries. It also detects the
+display of the address range calculation overflow, so the new output is:
+
+[ 0.000000] efi: [Firmware Bug]: Invalid EFI memory map entries:
+[ 0.000000] efi: mem45: [Reserved | | | | | | | | | | | | ] range=[0x0000000000000000-0x0000000000000000] (invalid)
+
+It also detects memory map sizes that would overflow the physical
+address, for example phys_addr=0xfffffffffffff000 and
+num_pages=0x0200000000000001, and prints:
+
+[ 0.000000] efi: [Firmware Bug]: Invalid EFI memory map entries:
+[ 0.000000] efi: mem45: [Reserved | | | | | | | | | | | | ] range=[phys_addr=0xfffffffffffff000-0x20ffffffffffffffff] (invalid)
+
+It then removes these entries from the memory map.
+
+Cc: Matt Fleming <matt@codeblueprint.co.uk>
+Signed-off-by: Peter Jones <pjones@redhat.com>
+[ardb: refactor for clarity with no functional changes, avoid PAGE_SHIFT]
+Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+---
+ arch/x86/platform/efi/efi.c | 70 +++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/efi.h | 1 +
+ 2 files changed, 71 insertions(+)
+
+diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
+index bf99aa7..0a1550b 100644
+--- a/arch/x86/platform/efi/efi.c
++++ b/arch/x86/platform/efi/efi.c
+@@ -210,6 +210,74 @@ int __init efi_memblock_x86_reserve_range(void)
+ return 0;
+ }
+
++#define OVERFLOW_ADDR_SHIFT (64 - EFI_PAGE_SHIFT)
++#define OVERFLOW_ADDR_MASK (U64_MAX << OVERFLOW_ADDR_SHIFT)
++#define U64_HIGH_BIT (~(U64_MAX >> 1))
++
++static bool __init efi_memmap_entry_valid(const efi_memory_desc_t *md, int i)
++{
++ static __initdata bool once = true;
++ u64 end = (md->num_pages << EFI_PAGE_SHIFT) + md->phys_addr - 1;
++ u64 end_hi = 0;
++ char buf[64];
++
++ if (md->num_pages == 0) {
++ end = 0;
++ } else if (md->num_pages > EFI_PAGES_MAX ||
++ EFI_PAGES_MAX - md->num_pages <
++ (md->phys_addr >> EFI_PAGE_SHIFT)) {
++ end_hi = (md->num_pages & OVERFLOW_ADDR_MASK)
++ >> OVERFLOW_ADDR_SHIFT;
++
++ if ((md->phys_addr & U64_HIGH_BIT) && !(end & U64_HIGH_BIT))
++ end_hi += 1;
++ } else {
++ return true;
++ }
++
++ if (once) {
++ pr_warn(FW_BUG "Invalid EFI memory map entries:\n");
++ once = false;
++ }
++
++ if (end_hi) {
++ pr_warn("mem%02u: %s range=[0x%016llx-0x%llx%016llx] (invalid)\n",
++ i, efi_md_typeattr_format(buf, sizeof(buf), md),
++ md->phys_addr, end_hi, end);
++ } else {
++ pr_warn("mem%02u: %s range=[0x%016llx-0x%016llx] (invalid)\n",
++ i, efi_md_typeattr_format(buf, sizeof(buf), md),
++ md->phys_addr, end);
++ }
++ return false;
++}
++
++static void __init efi_clean_memmap(void)
++{
++ efi_memory_desc_t *out = efi.memmap.map;
++ const efi_memory_desc_t *in = out;
++ const efi_memory_desc_t *end = efi.memmap.map_end;
++ int i, n_removal;
++
++ for (i = n_removal = 0; in < end; i++) {
++ if (efi_memmap_entry_valid(in, i)) {
++ if (out != in)
++ memcpy(out, in, efi.memmap.desc_size);
++ out = (void *)out + efi.memmap.desc_size;
++ } else {
++ n_removal++;
++ }
++ in = (void *)in + efi.memmap.desc_size;
++ }
++
++ if (n_removal > 0) {
++ u64 size = efi.memmap.nr_map - n_removal;
++
++ pr_warn("Removing %d invalid memory map entries.\n", n_removal);
++ efi_memmap_install(efi.memmap.phys_map, size);
++ }
++}
++
+ void __init efi_print_memmap(void)
+ {
+ efi_memory_desc_t *md;
+@@ -472,6 +540,8 @@ void __init efi_init(void)
+ }
+ }
+
++ efi_clean_memmap();
++
+ if (efi_enabled(EFI_DBG))
+ efi_print_memmap();
+ }
+diff --git a/include/linux/efi.h b/include/linux/efi.h
+index 4c1b3ea..712a3aa 100644
+--- a/include/linux/efi.h
++++ b/include/linux/efi.h
+@@ -103,6 +103,7 @@ typedef struct {
+
+ #define EFI_PAGE_SHIFT 12
+ #define EFI_PAGE_SIZE (1UL << EFI_PAGE_SHIFT)
++#define EFI_PAGES_MAX (U64_MAX >> EFI_PAGE_SHIFT)
+
+ typedef struct {
+ u32 type;
+--
+2.9.3
+
diff --git a/0001-netfilter-ipv6-nf_defrag-drop-mangled-skb-on-ream-er.patch b/0001-netfilter-ipv6-nf_defrag-drop-mangled-skb-on-ream-er.patch
deleted file mode 100644
index a5af1a3e9..000000000
--- a/0001-netfilter-ipv6-nf_defrag-drop-mangled-skb-on-ream-er.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 9b57da0630c9fd36ed7a20fc0f98dc82cc0777fa Mon Sep 17 00:00:00 2001
-From: Florian Westphal <fw@strlen.de>
-Date: Tue, 29 Nov 2016 02:17:34 +0100
-Subject: [PATCH] netfilter: ipv6: nf_defrag: drop mangled skb on ream error
-
-Dmitry Vyukov reported GPF in network stack that Andrey traced down to
-negative nh offset in nf_ct_frag6_queue().
-
-Problem is that all network headers before fragment header are pulled.
-Normal ipv6 reassembly will drop the skb when errors occur further down
-the line.
-
-netfilter doesn't do this, and instead passed the original fragment
-along. That was also fine back when netfilter ipv6 defrag worked with
-cloned fragments, as the original, pristine fragment was passed on.
-
-So we either have to undo the pull op, or discard such fragments.
-Since they're malformed after all (e.g. overlapping fragment) it seems
-preferrable to just drop them.
-
-Same for temporary errors -- it doesn't make sense to accept (and
-perhaps forward!) only some fragments of same datagram.
-
-Fixes: 029f7f3b8701cc7ac ("netfilter: ipv6: nf_defrag: avoid/free clone operations")
-Reported-by: Dmitry Vyukov <dvyukov@google.com>
-Debugged-by: Andrey Konovalov <andreyknvl@google.com>
-Diagnosed-by: Eric Dumazet <Eric Dumazet <edumazet@google.com>
-Signed-off-by: Florian Westphal <fw@strlen.de>
-Acked-by: Eric Dumazet <edumazet@google.com>
-Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
----
- net/ipv6/netfilter/nf_conntrack_reasm.c | 4 ++--
- net/ipv6/netfilter/nf_defrag_ipv6_hooks.c | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
-index e4347ae..9948b5c 100644
---- a/net/ipv6/netfilter/nf_conntrack_reasm.c
-+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
-@@ -576,11 +576,11 @@ int nf_ct_frag6_gather(struct net *net, struct sk_buff *skb, u32 user)
- /* Jumbo payload inhibits frag. header */
- if (ipv6_hdr(skb)->payload_len == 0) {
- pr_debug("payload len = 0\n");
-- return -EINVAL;
-+ return 0;
- }
-
- if (find_prev_fhdr(skb, &prevhdr, &nhoff, &fhoff) < 0)
-- return -EINVAL;
-+ return 0;
-
- if (!pskb_may_pull(skb, fhoff + sizeof(*fhdr)))
- return -ENOMEM;
-diff --git a/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c b/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
-index f7aab5a..f06b047 100644
---- a/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
-+++ b/net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
-@@ -69,7 +69,7 @@ static unsigned int ipv6_defrag(void *priv,
- if (err == -EINPROGRESS)
- return NF_STOLEN;
-
-- return NF_ACCEPT;
-+ return err == 0 ? NF_ACCEPT : NF_DROP;
- }
-
- static struct nf_hook_ops ipv6_defrag_ops[] = {
---
-2.9.3
-
diff --git a/0001-platform-x86-ideapad-laptop-Add-Lenovo-Yoga-910-13IK.patch b/0001-platform-x86-ideapad-laptop-Add-Lenovo-Yoga-910-13IK.patch
deleted file mode 100644
index 42e935206..000000000
--- a/0001-platform-x86-ideapad-laptop-Add-Lenovo-Yoga-910-13IK.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 40c30bbf3377babc4d6bb16b699184236a8bfa27 Mon Sep 17 00:00:00 2001
-From: Brian Masney <masneyb@onstation.org>
-Date: Tue, 11 Oct 2016 19:28:02 -0400
-Subject: [PATCH] platform/x86: ideapad-laptop: Add Lenovo Yoga 910-13IKB to
- no_hw_rfkill dmi list
-
-The Lenovo Yoga 910-13IKB does not have a hw rfkill switch, and trying
-to read the hw rfkill switch through the ideapad module causes it to
-always report as blocked.
-
-This commit adds the Lenovo Yoga 910-13IKB to the no_hw_rfkill dmi list,
-fixing the WiFI breakage.
-
-Signed-off-by: Brian Masney <masneyb@onstation.org>
-Signed-off-by: Darren Hart <dvhart@linux.intel.com>
----
- drivers/platform/x86/ideapad-laptop.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
-index d1a091b..a232394 100644
---- a/drivers/platform/x86/ideapad-laptop.c
-+++ b/drivers/platform/x86/ideapad-laptop.c
-@@ -933,6 +933,13 @@ static const struct dmi_system_id no_hw_rfkill_list[] = {
- DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 900"),
- },
- },
-+ {
-+ .ident = "Lenovo YOGA 910-13IKB",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-+ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 910-13IKB"),
-+ },
-+ },
- {}
- };
-
---
-2.7.4
-
diff --git a/ARM-OMAP4-Fix-crashes.patch b/ARM-OMAP4-Fix-crashes.patch
deleted file mode 100644
index 57e56e507..000000000
--- a/ARM-OMAP4-Fix-crashes.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From patchwork Wed Oct 26 15:17:01 2016
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [3/5] ARM: OMAP4+: Fix bad fallthrough for cpuidle
-From: Tony Lindgren <tony@atomide.com>
-X-Patchwork-Id: 9397501
-Message-Id: <20161026151703.24730-4-tony@atomide.com>
-To: linux-omap@vger.kernel.org
-Cc: Nishanth Menon <nm@ti.com>, Dmitry Lifshitz <lifshitz@compulab.co.il>,
- Dave Gerlach <d-gerlach@ti.com>,
- Enric Balletbo Serra <eballetbo@gmail.com>,
- "Dr . H . Nikolaus Schaller" <hns@goldelico.com>,
- Pau Pajuel <ppajuel@gmail.com>, Grazvydas Ignotas <notasas@gmail.com>,
- Benoit Cousson <bcousson@baylibre.com>,
- Santosh Shilimkar <ssantosh@kernel.org>,
- Javier Martinez Canillas <javier@dowhile0.org>,
- Robert Nelson <robertcnelson@gmail.com>,
- Marek Belisko <marek@goldelico.com>, linux-arm-kernel@lists.infradead.org
-Date: Wed, 26 Oct 2016 08:17:01 -0700
-
-We don't want to fall through to a bunch of errors for retention
-if PM_OMAP4_CPU_OSWR_DISABLE is not configured for a SoC.
-
-Fixes: 6099dd37c669 ("ARM: OMAP5 / DRA7: Enable CPU RET on suspend")
-Signed-off-by: Tony Lindgren <tony@atomide.com>
----
- arch/arm/mach-omap2/omap-mpuss-lowpower.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
---- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
-+++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
-@@ -244,10 +244,9 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state)
- save_state = 1;
- break;
- case PWRDM_POWER_RET:
-- if (IS_PM44XX_ERRATUM(PM_OMAP4_CPU_OSWR_DISABLE)) {
-+ if (IS_PM44XX_ERRATUM(PM_OMAP4_CPU_OSWR_DISABLE))
- save_state = 0;
-- break;
-- }
-+ break;
- default:
- /*
- * CPUx CSWR is invalid hardware state. Also CPUx OSWR
-From 5a78ff7bf7e25191144b550961001bbf6c734da4 Mon Sep 17 00:00:00 2001
-From: Peter Chen <peter.chen@nxp.com>
-Date: Thu, 11 Aug 2016 17:44:54 +0800
-Subject: [PATCH 04152/16809] Revert "gpu: drm: omapdrm: dss-of: add missing
- of_node_put after calling of_parse_phandle"
-
-This reverts
-commit 2ab9f5879162499e1c4e48613287e3f59e593c4f
-Author: Peter Chen <peter.chen@nxp.com>
-Date: Fri Jul 15 11:17:03 2016 +0800
- gpu: drm: omapdrm: dss-of: add missing of_node_put after calling of_parse_phandle
-
-The of_get_next_parent will drop refcount on the passed node, so the reverted
-patch is wrong, thanks for Tomi Valkeinen points it.
-
-Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
-Signed-off-by: Peter Chen <peter.chen@nxp.com>
-Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-Signed-off-by: Sean Paul <seanpaul@chromium.org>
-Link: http://patchwork.freedesktop.org/patch/msgid/1470908694-16362-1-git-send-email-peter.chen@nxp.com
----
- drivers/gpu/drm/omapdrm/dss/dss-of.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/omapdrm/dss/dss-of.c b/drivers/gpu/drm/omapdrm/dss/dss-of.c
-index e256d87..dfd4e96 100644
---- a/drivers/gpu/drm/omapdrm/dss/dss-of.c
-+++ b/drivers/gpu/drm/omapdrm/dss/dss-of.c
-@@ -125,16 +125,15 @@ u32 dss_of_port_get_port_number(struct device_node *port)
-
- static struct device_node *omapdss_of_get_remote_port(const struct device_node *node)
- {
-- struct device_node *np, *np_parent;
-+ struct device_node *np;
-
- np = of_parse_phandle(node, "remote-endpoint", 0);
- if (!np)
- return NULL;
-
-- np_parent = of_get_next_parent(np);
-- of_node_put(np);
-+ np = of_get_next_parent(np);
-
-- return np_parent;
-+ return np;
- }
-
- struct device_node *
---
-2.9.3
-
diff --git a/AllWinner-net-emac.patch b/AllWinner-net-emac.patch
index 7bcaecf4a..42dadabab 100644
--- a/AllWinner-net-emac.patch
+++ b/AllWinner-net-emac.patch
@@ -1,7 +1,7 @@
-From e90ba04ee5efbed6fc17dfa7f62702f268fc1bc4 Mon Sep 17 00:00:00 2001
+From fb909e29d6c073f4c5777a0db75df72b726e4314 Mon Sep 17 00:00:00 2001
From: Corentin LABBE <clabbe.montjoie@gmail.com>
Date: Fri, 7 Oct 2016 10:25:48 +0200
-Subject: [PATCH 1/9] ethernet: add sun8i-emac driver
+Subject: [PATCH 1/8] ethernet: add sun8i-emac driver
This patch add support for sun8i-emac ethernet MAC hardware.
It could be found in Allwinner H3/A83T/A64 SoCs.
@@ -2324,10 +2324,10 @@ index 0000000..bc74467
--
2.9.3
-From 7171a3584b7eb728d263f72876836dda933aa6a6 Mon Sep 17 00:00:00 2001
+From 1d9ea1f4df27f3a2e2ed7094852a23a4dd45e2be Mon Sep 17 00:00:00 2001
From: Corentin LABBE <clabbe.montjoie@gmail.com>
Date: Fri, 7 Oct 2016 10:25:49 +0200
-Subject: [PATCH 2/9] MAINTAINERS: Add myself as maintainer of sun8i-emac
+Subject: [PATCH 2/8] MAINTAINERS: Add myself as maintainer of sun8i-emac
This patch add myself as maintainer of the sun8i-emac driver.
@@ -2337,10 +2337,10 @@ Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
1 file changed, 6 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
-index f593300..94dac86 100644
+index 411e3b8..e99a087 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -582,6 +582,12 @@ S: Maintained
+@@ -590,6 +590,12 @@ S: Maintained
F: Documentation/i2c/busses/i2c-ali1563
F: drivers/i2c/busses/i2c-ali1563.c
@@ -2356,10 +2356,10 @@ index f593300..94dac86 100644
--
2.9.3
-From 0c21240a091e9553751845f2aa3be0b5a88d9ac7 Mon Sep 17 00:00:00 2001
+From 6b3093e31b877f39475454b5af3b820dbb3a4f73 Mon Sep 17 00:00:00 2001
From: Corentin LABBE <clabbe.montjoie@gmail.com>
Date: Fri, 7 Oct 2016 10:25:50 +0200
-Subject: [PATCH 3/9] ARM: sun8i: dt: Add DT bindings documentation for
+Subject: [PATCH 3/8] ARM: sun8i: dt: Add DT bindings documentation for
Allwinner sun8i-emac
This patch adds documentation for Device-Tree bindings for the
@@ -2450,10 +2450,10 @@ index 0000000..92e4ef3b
--
2.9.3
-From 95d456fcdd33eb7c1512956050faba648550e06f Mon Sep 17 00:00:00 2001
+From aa634aa1b0454befe54a14d03b9a3ba6f750dcfd Mon Sep 17 00:00:00 2001
From: Corentin LABBE <clabbe.montjoie@gmail.com>
Date: Fri, 7 Oct 2016 10:25:51 +0200
-Subject: [PATCH 4/9] ARM: dts: sun8i-h3: Add dt node for the syscon control
+Subject: [PATCH 4/8] ARM: dts: sun8i-h3: Add dt node for the syscon control
module
This patch add the dt node for the syscon register present on the
@@ -2468,7 +2468,7 @@ Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
1 file changed, 5 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3.dtsi b/arch/arm/boot/dts/sun8i-h3.dtsi
-index fdf9fdb..d658a596 100644
+index 75a8654..eac7d00 100644
--- a/arch/arm/boot/dts/sun8i-h3.dtsi
+++ b/arch/arm/boot/dts/sun8i-h3.dtsi
@@ -140,6 +140,11 @@
@@ -2486,10 +2486,10 @@ index fdf9fdb..d658a596 100644
--
2.9.3
-From 7837b66f2bce01da31ec4c005023c729ba3f17a7 Mon Sep 17 00:00:00 2001
-From: Corentin LABBE <clabbe.montjoie@gmail.com>
-Date: Fri, 7 Oct 2016 10:25:52 +0200
-Subject: [PATCH 5/9] ARM: dts: sun8i-h3: add sun8i-emac ethernet driver
+From 976cca2d4eb5bf85c26dfaad03ea70bff88981fd Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Tue, 8 Nov 2016 10:23:08 +0000
+Subject: [PATCH 5/8] ARM: dts: sun8i-h3: add sun8i-emac ethernet driver
The sun8i-emac is an ethernet MAC hardware that support 10/100/1000
speed.
@@ -2503,11 +2503,11 @@ Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
1 file changed, 24 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3.dtsi b/arch/arm/boot/dts/sun8i-h3.dtsi
-index d658a596..54174cf 100644
+index eac7d00..86a8665 100644
--- a/arch/arm/boot/dts/sun8i-h3.dtsi
+++ b/arch/arm/boot/dts/sun8i-h3.dtsi
-@@ -446,6 +446,30 @@
- status = "disabled";
+@@ -535,6 +535,30 @@
+ #size-cells = <0>;
};
+ emac: ethernet@1c30000 {
@@ -2540,10 +2540,10 @@ index d658a596..54174cf 100644
--
2.9.3
-From e9687b752a1551ae420a94ff44254831ef464557 Mon Sep 17 00:00:00 2001
+From 6e483713dda9e0d5e8e5f37d8b0367ff216c53db Mon Sep 17 00:00:00 2001
From: Corentin LABBE <clabbe.montjoie@gmail.com>
Date: Fri, 7 Oct 2016 10:25:53 +0200
-Subject: [PATCH 6/9] ARM: dts: sun8i: Enable sun8i-emac on the Orange PI PC
+Subject: [PATCH 6/8] ARM: dts: sun8i: Enable sun8i-emac on the Orange PI PC
The sun8i-emac hardware is present on the Orange PI PC.
It uses the internal PHY.
@@ -2556,7 +2556,7 @@ Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts
-index daf50b9a6..71717cc 100644
+index 3ec9712..1b8dbc0 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts
@@ -54,6 +54,7 @@
@@ -2567,7 +2567,7 @@ index daf50b9a6..71717cc 100644
};
chosen {
-@@ -165,3 +166,10 @@
+@@ -183,3 +184,10 @@
/* USB VBUS is always on */
status = "okay";
};
@@ -2581,10 +2581,10 @@ index daf50b9a6..71717cc 100644
--
2.9.3
-From 7df9f84ca65a398b1bb692344fa26c67235f19d3 Mon Sep 17 00:00:00 2001
+From 05cf4e2c77424ad5c9dc8495a65d6695d2831b0a Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Fri, 7 Oct 2016 10:25:54 +0200
-Subject: [PATCH 7/9] ARM: dts: sun8i: Enable sun8i-emac on the Orange PI One
+Subject: [PATCH 7/8] ARM: dts: sun8i: Enable sun8i-emac on the Orange PI One
The sun8i-emac hardware is present on the Orange PI One.
It uses the internal PHY.
@@ -2598,7 +2598,7 @@ Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts
-index 0adf932..25f2455 100644
+index 5c9b5bf..fa398cc 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-one.dts
@@ -54,6 +54,7 @@
@@ -2626,10 +2626,10 @@ index 0adf932..25f2455 100644
--
2.9.3
-From dd8a48a9d7250d4bfc501dd5a4e8179ffac27d11 Mon Sep 17 00:00:00 2001
-From: Corentin LABBE <clabbe.montjoie@gmail.com>
-Date: Fri, 7 Oct 2016 10:25:55 +0200
-Subject: [PATCH 8/9] ARM: dts: sun8i: Enable sun8i-emac on the Orange Pi 2
+From 52c300b614fcb29e81067aa7ed8aafa489b590b7 Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Tue, 8 Nov 2016 10:24:42 +0000
+Subject: [PATCH 8/8] ARM: dts: sun8i: Enable sun8i-emac on the Orange Pi 2
The sun8i-emac hardware is present on the Orange PI 2.
It uses the internal PHY.
@@ -2642,7 +2642,7 @@ Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts
-index f93f5d1..5608eb4 100644
+index e5bcaba..ad66b61 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts
@@ -54,6 +54,7 @@
@@ -2650,10 +2650,10 @@ index f93f5d1..5608eb4 100644
aliases {
serial0 = &uart0;
+ ethernet0 = &emac;
+ /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
+ ethernet1 = &rtl8189;
};
-
- chosen {
-@@ -184,3 +185,10 @@
+@@ -212,3 +213,10 @@
usb1_vbus-supply = <&reg_usb1_vbus>;
status = "okay";
};
@@ -2667,34 +2667,3 @@ index f93f5d1..5608eb4 100644
--
2.9.3
-From cc1f0d509ecebebe8b50c97b71c84fb082ce0e56 Mon Sep 17 00:00:00 2001
-From: Corentin LABBE <clabbe.montjoie@gmail.com>
-Date: Wed, 5 Oct 2016 11:48:24 +0200
-Subject: [PATCH 9/9] ARM: dt: sun8i-h3: Add sunxi-sid to dts for sun8i-h3
-
-This patch add support for the sunxi-sid driver to the device tree for sun8i-h3.
-
-Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
----
- arch/arm/boot/dts/sun8i-h3.dtsi | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/arch/arm/boot/dts/sun8i-h3.dtsi b/arch/arm/boot/dts/sun8i-h3.dtsi
-index 54174cf..8628b38 100644
---- a/arch/arm/boot/dts/sun8i-h3.dtsi
-+++ b/arch/arm/boot/dts/sun8i-h3.dtsi
-@@ -211,6 +211,11 @@
- #size-cells = <0>;
- };
-
-+ sid: eeprom@01c14200 {
-+ compatible = "allwinner,sun7i-a20-sid";
-+ reg = <0x01c14200 0x200>;
-+ };
-+
- usbphy: phy@01c19400 {
- compatible = "allwinner,sun8i-h3-usb-phy";
- reg = <0x01c19400 0x2c>,
---
-2.9.3
-
diff --git a/MODSIGN-Don-t-try-secure-boot-if-EFI-runtime-is-disa.patch b/MODSIGN-Don-t-try-secure-boot-if-EFI-runtime-is-disa.patch
new file mode 100644
index 000000000..6f5d8b6ab
--- /dev/null
+++ b/MODSIGN-Don-t-try-secure-boot-if-EFI-runtime-is-disa.patch
@@ -0,0 +1,32 @@
+From 71db1b222ecdf6cb4356f6f1e2bd45cd2f0e85e1 Mon Sep 17 00:00:00 2001
+From: Laura Abbott <labbott@redhat.com>
+Date: Tue, 18 Oct 2016 13:58:44 -0700
+Subject: [PATCH] MODSIGN: Don't try secure boot if EFI runtime is disabled
+
+Secure boot depends on having EFI runtime variable access. The code
+does not handle a lack of runtime variables gracefully. Add a check
+to just bail out of EFI runtime is disabled.
+
+Signed-off-by: Laura Abbott <labbott@redhat.com>
+---
+ kernel/modsign_uefi.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/kernel/modsign_uefi.c b/kernel/modsign_uefi.c
+index a41da14..2bdaf76 100644
+--- a/kernel/modsign_uefi.c
++++ b/kernel/modsign_uefi.c
+@@ -71,6 +71,10 @@ static int __init load_uefi_certs(void)
+ if (!efi_enabled(EFI_SECURE_BOOT))
+ return 0;
+
++ /* Things blow up if efi runtime is disabled */
++ if (efi_runtime_disabled())
++ return 0;
++
+ keyring = get_system_keyring();
+ if (!keyring) {
+ pr_err("MODSIGN: Couldn't get system keyring\n");
+--
+2.7.4
+
diff --git a/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch b/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
index 05be7a028..752ba4631 100644
--- a/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
+++ b/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
@@ -1,7 +1,7 @@
-From ba2b209daf984514229626803472e0b055832345 Mon Sep 17 00:00:00 2001
+From 8a4535bcfe24d317be675e53cdc8c61d22fdc7f3 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Fri, 26 Oct 2012 12:42:16 -0400
-Subject: [PATCH] MODSIGN: Import certificates from UEFI Secure Boot
+Subject: [PATCH 18/20] MODSIGN: Import certificates from UEFI Secure Boot
Secure Boot stores a list of allowed certificates in the 'db' variable.
This imports those certificates into the system trusted keyring. This
@@ -20,11 +20,10 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
---
certs/system_keyring.c | 13 ++++++
include/keys/system_keyring.h | 1 +
- include/linux/efi.h | 6 +++
init/Kconfig | 9 ++++
kernel/Makefile | 3 ++
kernel/modsign_uefi.c | 99 +++++++++++++++++++++++++++++++++++++++++++
- 6 files changed, 131 insertions(+)
+ 5 files changed, 125 insertions(+)
create mode 100644 kernel/modsign_uefi.c
diff --git a/certs/system_keyring.c b/certs/system_keyring.c
@@ -63,28 +62,11 @@ index 5bc291a3d261..56ff5715ab67 100644
#ifdef CONFIG_IMA_BLACKLIST_KEYRING
extern struct key *ima_blacklist_keyring;
-diff --git a/include/linux/efi.h b/include/linux/efi.h
-index ff1877145aa4..2483de19c719 100644
---- a/include/linux/efi.h
-+++ b/include/linux/efi.h
-@@ -658,6 +658,12 @@ typedef struct {
- u64 table;
- } efi_config_table_64_t;
-
-+#define EFI_IMAGE_SECURITY_DATABASE_GUID \
-+ EFI_GUID( 0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f )
-+
-+#define EFI_SHIM_LOCK_GUID \
-+ EFI_GUID( 0x605dab50, 0xe046, 0x4300, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23 )
-+
- typedef struct {
- efi_guid_t guid;
- u32 table;
diff --git a/init/Kconfig b/init/Kconfig
-index e5449d5aeff9..5408c96f6604 100644
+index 461ad575a608..93646fd7b1c8 100644
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1979,6 +1979,15 @@ config MODULE_SIG_ALL
+@@ -2009,6 +2009,15 @@ config MODULE_SIG_ALL
comment "Do not forget to sign required modules with scripts/sign-file"
depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
@@ -101,7 +83,7 @@ index e5449d5aeff9..5408c96f6604 100644
prompt "Which hash algorithm should modules be signed with?"
depends on MODULE_SIG
diff --git a/kernel/Makefile b/kernel/Makefile
-index e2ec54e2b952..8dab549985d8 100644
+index eb26e12c6c2a..e0c2268cb97e 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -57,6 +57,7 @@ endif
@@ -227,5 +209,5 @@ index 000000000000..fe4a6f2bf10a
+}
+late_initcall(load_uefi_certs);
--
-2.5.5
+2.9.3
diff --git a/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch b/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch
index acf28cf88..24f1d5b5d 100644
--- a/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch
+++ b/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch
@@ -1,4 +1,4 @@
-From d4ae417828427de74e9f857f9caa49580aecf1fe Mon Sep 17 00:00:00 2001
+From 9f31204f829da97f99f7aacf30f0ddc26e456df7 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Mar 2012 09:28:15 -0500
Subject: [PATCH 06/20] Restrict /dev/mem and /dev/kmem when module loading is
@@ -14,10 +14,10 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
1 file changed, 6 insertions(+)
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
-index 53fe675f9bd7..b52c88860532 100644
+index 7f1a7ab5850d..d6a6f05fbc1c 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
-@@ -167,6 +167,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
+@@ -164,6 +164,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
if (p != *ppos)
return -EFBIG;
@@ -27,9 +27,9 @@ index 53fe675f9bd7..b52c88860532 100644
if (!valid_phys_addr_range(p, count))
return -EFAULT;
-@@ -513,6 +516,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
- char *kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
- int err = 0;
+@@ -516,6 +519,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
+ if (!pfn_valid(PFN_DOWN(p)))
+ return -EIO;
+ if (secure_modules())
+ return -EPERM;
@@ -38,5 +38,5 @@ index 53fe675f9bd7..b52c88860532 100644
unsigned long to_write = min_t(unsigned long, count,
(unsigned long)high_memory - p);
--
-2.4.3
+2.9.3
diff --git a/bcm2837-initial-support.patch b/bcm2837-initial-support.patch
index 0e641d693..dd64598aa 100644
--- a/bcm2837-initial-support.patch
+++ b/bcm2837-initial-support.patch
@@ -1,4 +1,4 @@
-From a2858804c7f5f4585b718543236b7ba3b3ec813a Mon Sep 17 00:00:00 2001
+From cdb86691df26e0962f081981f4bfa97ee43bd391 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Mon, 29 Aug 2016 09:14:15 +0100
Subject: [PATCH] ARM: bcm283x: Add devicetree for the Raspberry Pi 3.
@@ -18,15 +18,15 @@ Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
create mode 100644 arch/arm/boot/dts/bcm2837.dtsi
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index faacd52..ec41888 100644
+index befcd26..c96fb38 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -69,7 +69,8 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
- bcm2835-rpi-b-rev2.dtb \
+@@ -70,7 +70,8 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
bcm2835-rpi-b-plus.dtb \
bcm2835-rpi-a-plus.dtb \
-- bcm2836-rpi-2-b.dtb
-+ bcm2836-rpi-2-b.dtb \
+ bcm2836-rpi-2-b.dtb \
+- bcm2835-rpi-zero.dtb
++ bcm2835-rpi-zero.dtb \
+ bcm2837-rpi-3-b.dtb
dtb-$(CONFIG_ARCH_BCM_5301X) += \
bcm4708-asus-rt-ac56u.dtb \
@@ -150,4 +150,58 @@ index 0000000..8216bbb
+ interrupts = <8>;
+};
--
+2.7.4
+
+From 345863374ebec9aa11ea97b99f5adbf97f99bbdf Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Mon, 16 Jan 2017 06:38:08 +0000
+Subject: [PATCH] add upstream RPi3 fixes from arm64 DT
+
+Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
+---
+ arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 8 +-------
+ arch/arm/boot/dts/bcm2837.dtsi | 8 +++++++-
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
+index 7841b72..c309633 100644
+--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
+@@ -2,6 +2,7 @@
+ #include "bcm2837.dtsi"
+ #include "bcm2835-rpi.dtsi"
+ #include "bcm283x-rpi-smsc9514.dtsi"
++#include "bcm283x-rpi-usb-host.dtsi"
+
+ / {
+ compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
+@@ -15,13 +16,6 @@
+ act {
+ gpios = <&gpio 47 0>;
+ };
+-
+- pwr {
+- label = "PWR";
+- gpios = <&gpio 35 0>;
+- default-state = "keep";
+- linux,default-trigger = "default-on";
+- };
+ };
+ };
+
+diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
+index 8216bbb..19f2fe6 100644
+--- a/arch/arm/boot/dts/bcm2837.dtsi
++++ b/arch/arm/boot/dts/bcm2837.dtsi
+@@ -1,7 +1,7 @@
+ #include "bcm283x.dtsi"
+
+ / {
+- compatible = "brcm,bcm2836";
++ compatible = "brcm,bcm2837";
+
+ soc {
+ ranges = <0x7e000000 0x3f000000 0x1000000>,
+--
2.9.3
+
diff --git a/bcm283x-fixes.patch b/bcm283x-fixes.patch
new file mode 100644
index 000000000..07abd3aa4
--- /dev/null
+++ b/bcm283x-fixes.patch
@@ -0,0 +1,964 @@
+From e2474541032db65d02bf88b6a8c2f954654b443f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
+Date: Mon, 3 Oct 2016 22:06:08 +0200
+Subject: [PATCH 31155/39886] i2c: bcm2835: Fix hang for writing messages
+ larger than 16 bytes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Writing messages larger than the FIFO size results in a hang, rendering
+the machine unusable. This is because the RXD status flag is set on the
+first interrupt which results in bcm2835_drain_rxfifo() stealing bytes
+from the buffer. The controller continues to trigger interrupts waiting
+for the missing bytes, but bcm2835_fill_txfifo() has none to give.
+In this situation wait_for_completion_timeout() apparently is unable to
+stop the madness.
+
+The BCM2835 ARM Peripherals datasheet has this to say about the flags:
+ TXD: is set when the FIFO has space for at least one byte of data.
+ RXD: is set when the FIFO contains at least one byte of data.
+ TXW: is set during a write transfer and the FIFO is less than full.
+ RXR: is set during a read transfer and the FIFO is or more full.
+
+Implementing the logic from the downstream i2c-bcm2708 driver solved
+the hang problem.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/busses/i2c-bcm2835.c | 22 ++++++++++++++--------
+ 1 file changed, 14 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
+index d4f3239..f283b71 100644
+--- a/drivers/i2c/busses/i2c-bcm2835.c
++++ b/drivers/i2c/busses/i2c-bcm2835.c
+@@ -64,6 +64,7 @@ struct bcm2835_i2c_dev {
+ int irq;
+ struct i2c_adapter adapter;
+ struct completion completion;
++ struct i2c_msg *curr_msg;
+ u32 msg_err;
+ u8 *msg_buf;
+ size_t msg_buf_remaining;
+@@ -126,14 +127,13 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+ return IRQ_HANDLED;
+ }
+
+- if (val & BCM2835_I2C_S_RXD) {
+- bcm2835_drain_rxfifo(i2c_dev);
+- if (!(val & BCM2835_I2C_S_DONE))
+- return IRQ_HANDLED;
+- }
+-
+ if (val & BCM2835_I2C_S_DONE) {
+- if (i2c_dev->msg_buf_remaining)
++ if (i2c_dev->curr_msg->flags & I2C_M_RD) {
++ bcm2835_drain_rxfifo(i2c_dev);
++ val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
++ }
++
++ if ((val & BCM2835_I2C_S_RXD) || i2c_dev->msg_buf_remaining)
+ i2c_dev->msg_err = BCM2835_I2C_S_LEN;
+ else
+ i2c_dev->msg_err = 0;
+@@ -141,11 +141,16 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+ return IRQ_HANDLED;
+ }
+
+- if (val & BCM2835_I2C_S_TXD) {
++ if (val & BCM2835_I2C_S_TXW) {
+ bcm2835_fill_txfifo(i2c_dev);
+ return IRQ_HANDLED;
+ }
+
++ if (val & BCM2835_I2C_S_RXR) {
++ bcm2835_drain_rxfifo(i2c_dev);
++ return IRQ_HANDLED;
++ }
++
+ return IRQ_NONE;
+ }
+
+@@ -155,6 +160,7 @@ static int bcm2835_i2c_xfer_msg(struct bcm2835_i2c_dev *i2c_dev,
+ u32 c;
+ unsigned long time_left;
+
++ i2c_dev->curr_msg = msg;
+ i2c_dev->msg_buf = msg->buf;
+ i2c_dev->msg_buf_remaining = msg->len;
+ reinit_completion(&i2c_dev->completion);
+--
+2.9.3
+
+From d4030d75c7cbb434b2a3e5f6af5065879d2615a5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
+Date: Mon, 3 Oct 2016 22:06:09 +0200
+Subject: [PATCH 31156/39886] i2c: bcm2835: Protect against unexpected TXW/RXR
+ interrupts
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+If an unexpected TXW or RXR interrupt occurs (msg_buf_remaining == 0),
+the driver has no way to fill/drain the FIFO to stop the interrupts.
+In this case the controller has to be disabled and the transfer
+completed to avoid hang.
+
+(CLKT | ERR) and DONE interrupts are completed in their own paths, and
+the controller is disabled in the transfer function after completion.
+Unite the code paths and do disabling inside the interrupt routine.
+
+Clear interrupt status bits in the united completion path instead of
+trying to do it on every interrupt which isn't necessary.
+Only CLKT, ERR and DONE can be cleared that way.
+
+Add the status value to the error value in case of TXW/RXR errors to
+distinguish them from the other S_LEN error.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/busses/i2c-bcm2835.c | 40 +++++++++++++++++++++++++++++++---------
+ 1 file changed, 31 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
+index f283b71..d2ba1a4 100644
+--- a/drivers/i2c/busses/i2c-bcm2835.c
++++ b/drivers/i2c/busses/i2c-bcm2835.c
+@@ -50,8 +50,6 @@
+ #define BCM2835_I2C_S_CLKT BIT(9)
+ #define BCM2835_I2C_S_LEN BIT(10) /* Fake bit for SW error reporting */
+
+-#define BCM2835_I2C_BITMSK_S 0x03FF
+-
+ #define BCM2835_I2C_CDIV_MIN 0x0002
+ #define BCM2835_I2C_CDIV_MAX 0xFFFE
+
+@@ -111,20 +109,26 @@ static void bcm2835_drain_rxfifo(struct bcm2835_i2c_dev *i2c_dev)
+ }
+ }
+
++/*
++ * Note about I2C_C_CLEAR on error:
++ * The I2C_C_CLEAR on errors will take some time to resolve -- if you were in
++ * non-idle state and I2C_C_READ, it sets an abort_rx flag and runs through
++ * the state machine to send a NACK and a STOP. Since we're setting CLEAR
++ * without I2CEN, that NACK will be hanging around queued up for next time
++ * we start the engine.
++ */
++
+ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+ {
+ struct bcm2835_i2c_dev *i2c_dev = data;
+ u32 val, err;
+
+ val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
+- val &= BCM2835_I2C_BITMSK_S;
+- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_S, val);
+
+ err = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR);
+ if (err) {
+ i2c_dev->msg_err = err;
+- complete(&i2c_dev->completion);
+- return IRQ_HANDLED;
++ goto complete;
+ }
+
+ if (val & BCM2835_I2C_S_DONE) {
+@@ -137,21 +141,38 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+ i2c_dev->msg_err = BCM2835_I2C_S_LEN;
+ else
+ i2c_dev->msg_err = 0;
+- complete(&i2c_dev->completion);
+- return IRQ_HANDLED;
++ goto complete;
+ }
+
+ if (val & BCM2835_I2C_S_TXW) {
++ if (!i2c_dev->msg_buf_remaining) {
++ i2c_dev->msg_err = val | BCM2835_I2C_S_LEN;
++ goto complete;
++ }
++
+ bcm2835_fill_txfifo(i2c_dev);
+ return IRQ_HANDLED;
+ }
+
+ if (val & BCM2835_I2C_S_RXR) {
++ if (!i2c_dev->msg_buf_remaining) {
++ i2c_dev->msg_err = val | BCM2835_I2C_S_LEN;
++ goto complete;
++ }
++
+ bcm2835_drain_rxfifo(i2c_dev);
+ return IRQ_HANDLED;
+ }
+
+ return IRQ_NONE;
++
++complete:
++ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR);
++ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_S, BCM2835_I2C_S_CLKT |
++ BCM2835_I2C_S_ERR | BCM2835_I2C_S_DONE);
++ complete(&i2c_dev->completion);
++
++ return IRQ_HANDLED;
+ }
+
+ static int bcm2835_i2c_xfer_msg(struct bcm2835_i2c_dev *i2c_dev,
+@@ -181,8 +202,9 @@ static int bcm2835_i2c_xfer_msg(struct bcm2835_i2c_dev *i2c_dev,
+
+ time_left = wait_for_completion_timeout(&i2c_dev->completion,
+ BCM2835_I2C_TIMEOUT);
+- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR);
+ if (!time_left) {
++ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C,
++ BCM2835_I2C_C_CLEAR);
+ dev_err(i2c_dev->dev, "i2c transfer timed out\n");
+ return -ETIMEDOUT;
+ }
+--
+2.9.3
+
+From 23c9540b3ad1d7473fe40df80074d0fb0bf04869 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
+Date: Mon, 3 Oct 2016 22:06:10 +0200
+Subject: [PATCH 31157/39886] i2c: bcm2835: Use dev_dbg logging on transfer
+ errors
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Writing to an AT24C32 generates on average 2x i2c transfer errors per
+32-byte page write. Which amounts to a lot for a 4k write. This is due
+to the fact that the chip doesn't respond during it's internal write
+cycle when the at24 driver tries and retries the next write.
+Only a handful drivers use dev_err() on transfer error, so switch to
+dev_dbg() instead.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/busses/i2c-bcm2835.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
+index d2ba1a4..54d510a 100644
+--- a/drivers/i2c/busses/i2c-bcm2835.c
++++ b/drivers/i2c/busses/i2c-bcm2835.c
+@@ -216,7 +216,7 @@ static int bcm2835_i2c_xfer_msg(struct bcm2835_i2c_dev *i2c_dev,
+ (msg->flags & I2C_M_IGNORE_NAK))
+ return 0;
+
+- dev_err(i2c_dev->dev, "i2c transfer failed: %x\n", i2c_dev->msg_err);
++ dev_dbg(i2c_dev->dev, "i2c transfer failed: %x\n", i2c_dev->msg_err);
+
+ if (i2c_dev->msg_err & BCM2835_I2C_S_ERR)
+ return -EREMOTEIO;
+--
+2.9.3
+
+From 8d2cc5cc6ee5c0fc48a96bb29af55fc700f66fdf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
+Date: Mon, 3 Oct 2016 22:06:11 +0200
+Subject: [PATCH 31158/39886] i2c: bcm2835: Can't support I2C_M_IGNORE_NAK
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The controller can't support this flag, so remove it.
+
+Documentation/i2c/i2c-protocol states that all of the message is sent:
+
+I2C_M_IGNORE_NAK:
+ Normally message is interrupted immediately if there is [NA] from the
+ client. Setting this flag treats any [NA] as [A], and all of
+ message is sent.
+
+>From the BCM2835 ARM Peripherals datasheet:
+
+ The ERR field is set when the slave fails to acknowledge either
+ its address or a data byte written to it.
+
+So when the controller doesn't receive an ack, it sets ERR and raises
+an interrupt. In other words, the whole message is not sent.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/busses/i2c-bcm2835.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
+index 54d510a..565ef69 100644
+--- a/drivers/i2c/busses/i2c-bcm2835.c
++++ b/drivers/i2c/busses/i2c-bcm2835.c
+@@ -212,10 +212,6 @@ static int bcm2835_i2c_xfer_msg(struct bcm2835_i2c_dev *i2c_dev,
+ if (likely(!i2c_dev->msg_err))
+ return 0;
+
+- if ((i2c_dev->msg_err & BCM2835_I2C_S_ERR) &&
+- (msg->flags & I2C_M_IGNORE_NAK))
+- return 0;
+-
+ dev_dbg(i2c_dev->dev, "i2c transfer failed: %x\n", i2c_dev->msg_err);
+
+ if (i2c_dev->msg_err & BCM2835_I2C_S_ERR)
+--
+2.9.3
+
+From ee05fea21b017b81a9477569b6a0c2d8e2946ac9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
+Date: Mon, 3 Oct 2016 22:06:12 +0200
+Subject: [PATCH 31159/39886] i2c: bcm2835: Add support for Repeated Start
+ Condition
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Documentation/i2c/i2c-protocol states that Combined transactions should
+separate messages with a Start bit and end the whole transaction with a
+Stop bit. This patch adds support for issuing only a Start between
+messages instead of a Stop followed by a Start.
+
+This implementation differs from downstream i2c-bcm2708 in 2 respects:
+- it uses an interrupt to detect that the transfer is active instead
+ of using polling. There is no interrupt for Transfer Active, but by
+ not prefilling the FIFO it's possible to use the TXW interrupt.
+- when resetting/disabling the controller between transfers it writes
+ CLEAR to the control register instead of just zero.
+ Using just zero gave many errors. This might be the reason why
+ downstream had to disable this feature and make it available with a
+ module parameter.
+
+I have run thousands of transfers to a DS1307 (rtc), MMA8451 (accel)
+and AT24C32 (eeprom) in parallel without problems.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Acked-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/busses/i2c-bcm2835.c | 101 ++++++++++++++++++++++++---------------
+ 1 file changed, 63 insertions(+), 38 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
+index 565ef69..241e08a 100644
+--- a/drivers/i2c/busses/i2c-bcm2835.c
++++ b/drivers/i2c/busses/i2c-bcm2835.c
+@@ -63,6 +63,7 @@ struct bcm2835_i2c_dev {
+ struct i2c_adapter adapter;
+ struct completion completion;
+ struct i2c_msg *curr_msg;
++ int num_msgs;
+ u32 msg_err;
+ u8 *msg_buf;
+ size_t msg_buf_remaining;
+@@ -110,6 +111,45 @@ static void bcm2835_drain_rxfifo(struct bcm2835_i2c_dev *i2c_dev)
+ }
+
+ /*
++ * Repeated Start Condition (Sr)
++ * The BCM2835 ARM Peripherals datasheet mentions a way to trigger a Sr when it
++ * talks about reading from a slave with 10 bit address. This is achieved by
++ * issuing a write, poll the I2CS.TA flag and wait for it to be set, and then
++ * issue a read.
++ * A comment in https://github.com/raspberrypi/linux/issues/254 shows how the
++ * firmware actually does it using polling and says that it's a workaround for
++ * a problem in the state machine.
++ * It turns out that it is possible to use the TXW interrupt to know when the
++ * transfer is active, provided the FIFO has not been prefilled.
++ */
++
++static void bcm2835_i2c_start_transfer(struct bcm2835_i2c_dev *i2c_dev)
++{
++ u32 c = BCM2835_I2C_C_ST | BCM2835_I2C_C_I2CEN;
++ struct i2c_msg *msg = i2c_dev->curr_msg;
++ bool last_msg = (i2c_dev->num_msgs == 1);
++
++ if (!i2c_dev->num_msgs)
++ return;
++
++ i2c_dev->num_msgs--;
++ i2c_dev->msg_buf = msg->buf;
++ i2c_dev->msg_buf_remaining = msg->len;
++
++ if (msg->flags & I2C_M_RD)
++ c |= BCM2835_I2C_C_READ | BCM2835_I2C_C_INTR;
++ else
++ c |= BCM2835_I2C_C_INTT;
++
++ if (last_msg)
++ c |= BCM2835_I2C_C_INTD;
++
++ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_A, msg->addr);
++ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DLEN, msg->len);
++ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, c);
++}
++
++/*
+ * Note about I2C_C_CLEAR on error:
+ * The I2C_C_CLEAR on errors will take some time to resolve -- if you were in
+ * non-idle state and I2C_C_READ, it sets an abort_rx flag and runs through
+@@ -151,6 +191,12 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+ }
+
+ bcm2835_fill_txfifo(i2c_dev);
++
++ if (i2c_dev->num_msgs && !i2c_dev->msg_buf_remaining) {
++ i2c_dev->curr_msg++;
++ bcm2835_i2c_start_transfer(i2c_dev);
++ }
++
+ return IRQ_HANDLED;
+ }
+
+@@ -175,30 +221,25 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+ return IRQ_HANDLED;
+ }
+
+-static int bcm2835_i2c_xfer_msg(struct bcm2835_i2c_dev *i2c_dev,
+- struct i2c_msg *msg)
++static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
++ int num)
+ {
+- u32 c;
++ struct bcm2835_i2c_dev *i2c_dev = i2c_get_adapdata(adap);
+ unsigned long time_left;
++ int i;
+
+- i2c_dev->curr_msg = msg;
+- i2c_dev->msg_buf = msg->buf;
+- i2c_dev->msg_buf_remaining = msg->len;
+- reinit_completion(&i2c_dev->completion);
+-
+- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR);
++ for (i = 0; i < (num - 1); i++)
++ if (msgs[i].flags & I2C_M_RD) {
++ dev_warn_once(i2c_dev->dev,
++ "only one read message supported, has to be last\n");
++ return -EOPNOTSUPP;
++ }
+
+- if (msg->flags & I2C_M_RD) {
+- c = BCM2835_I2C_C_READ | BCM2835_I2C_C_INTR;
+- } else {
+- c = BCM2835_I2C_C_INTT;
+- bcm2835_fill_txfifo(i2c_dev);
+- }
+- c |= BCM2835_I2C_C_ST | BCM2835_I2C_C_INTD | BCM2835_I2C_C_I2CEN;
++ i2c_dev->curr_msg = msgs;
++ i2c_dev->num_msgs = num;
++ reinit_completion(&i2c_dev->completion);
+
+- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_A, msg->addr);
+- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DLEN, msg->len);
+- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, c);
++ bcm2835_i2c_start_transfer(i2c_dev);
+
+ time_left = wait_for_completion_timeout(&i2c_dev->completion,
+ BCM2835_I2C_TIMEOUT);
+@@ -209,31 +250,15 @@ static int bcm2835_i2c_xfer_msg(struct bcm2835_i2c_dev *i2c_dev,
+ return -ETIMEDOUT;
+ }
+
+- if (likely(!i2c_dev->msg_err))
+- return 0;
++ if (!i2c_dev->msg_err)
++ return num;
+
+ dev_dbg(i2c_dev->dev, "i2c transfer failed: %x\n", i2c_dev->msg_err);
+
+ if (i2c_dev->msg_err & BCM2835_I2C_S_ERR)
+ return -EREMOTEIO;
+- else
+- return -EIO;
+-}
+-
+-static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+- int num)
+-{
+- struct bcm2835_i2c_dev *i2c_dev = i2c_get_adapdata(adap);
+- int i;
+- int ret = 0;
+-
+- for (i = 0; i < num; i++) {
+- ret = bcm2835_i2c_xfer_msg(i2c_dev, &msgs[i]);
+- if (ret)
+- break;
+- }
+
+- return ret ?: i;
++ return -EIO;
+ }
+
+ static u32 bcm2835_i2c_func(struct i2c_adapter *adap)
+--
+2.9.3
+
+From e13e19e12f66401ce1e21ab491715835852babe7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
+Date: Mon, 3 Oct 2016 22:06:13 +0200
+Subject: [PATCH 31160/39886] i2c: bcm2835: Support i2c-dev ioctl I2C_TIMEOUT
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Use i2c_adapter->timeout for the completion timeout value. The core
+default is 1 second.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/busses/i2c-bcm2835.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
+index 241e08a..d2085dd 100644
+--- a/drivers/i2c/busses/i2c-bcm2835.c
++++ b/drivers/i2c/busses/i2c-bcm2835.c
+@@ -53,8 +53,6 @@
+ #define BCM2835_I2C_CDIV_MIN 0x0002
+ #define BCM2835_I2C_CDIV_MAX 0xFFFE
+
+-#define BCM2835_I2C_TIMEOUT (msecs_to_jiffies(1000))
+-
+ struct bcm2835_i2c_dev {
+ struct device *dev;
+ void __iomem *regs;
+@@ -242,7 +240,7 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+ bcm2835_i2c_start_transfer(i2c_dev);
+
+ time_left = wait_for_completion_timeout(&i2c_dev->completion,
+- BCM2835_I2C_TIMEOUT);
++ adap->timeout);
+ if (!time_left) {
+ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C,
+ BCM2835_I2C_C_CLEAR);
+--
+2.9.3
+
+From 9446f62e8e18057fceb179d947508df2f7253b26 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
+Date: Mon, 3 Oct 2016 22:06:14 +0200
+Subject: [PATCH 31161/39886] i2c: bcm2835: Add support for dynamic clock
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Support a dynamic clock by reading the frequency and setting the
+divisor in the transfer function instead of during probe.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/busses/i2c-bcm2835.c | 51 +++++++++++++++++++++++++---------------
+ 1 file changed, 32 insertions(+), 19 deletions(-)
+
+diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
+index d2085dd..c3436f6 100644
+--- a/drivers/i2c/busses/i2c-bcm2835.c
++++ b/drivers/i2c/busses/i2c-bcm2835.c
+@@ -58,6 +58,7 @@ struct bcm2835_i2c_dev {
+ void __iomem *regs;
+ struct clk *clk;
+ int irq;
++ u32 bus_clk_rate;
+ struct i2c_adapter adapter;
+ struct completion completion;
+ struct i2c_msg *curr_msg;
+@@ -78,6 +79,30 @@ static inline u32 bcm2835_i2c_readl(struct bcm2835_i2c_dev *i2c_dev, u32 reg)
+ return readl(i2c_dev->regs + reg);
+ }
+
++static int bcm2835_i2c_set_divider(struct bcm2835_i2c_dev *i2c_dev)
++{
++ u32 divider;
++
++ divider = DIV_ROUND_UP(clk_get_rate(i2c_dev->clk),
++ i2c_dev->bus_clk_rate);
++ /*
++ * Per the datasheet, the register is always interpreted as an even
++ * number, by rounding down. In other words, the LSB is ignored. So,
++ * if the LSB is set, increment the divider to avoid any issue.
++ */
++ if (divider & 1)
++ divider++;
++ if ((divider < BCM2835_I2C_CDIV_MIN) ||
++ (divider > BCM2835_I2C_CDIV_MAX)) {
++ dev_err_ratelimited(i2c_dev->dev, "Invalid clock-frequency\n");
++ return -EINVAL;
++ }
++
++ bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DIV, divider);
++
++ return 0;
++}
++
+ static void bcm2835_fill_txfifo(struct bcm2835_i2c_dev *i2c_dev)
+ {
+ u32 val;
+@@ -224,7 +249,7 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+ {
+ struct bcm2835_i2c_dev *i2c_dev = i2c_get_adapdata(adap);
+ unsigned long time_left;
+- int i;
++ int i, ret;
+
+ for (i = 0; i < (num - 1); i++)
+ if (msgs[i].flags & I2C_M_RD) {
+@@ -233,6 +258,10 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+ return -EOPNOTSUPP;
+ }
+
++ ret = bcm2835_i2c_set_divider(i2c_dev);
++ if (ret)
++ return ret;
++
+ i2c_dev->curr_msg = msgs;
+ i2c_dev->num_msgs = num;
+ reinit_completion(&i2c_dev->completion);
+@@ -282,7 +311,6 @@ static int bcm2835_i2c_probe(struct platform_device *pdev)
+ {
+ struct bcm2835_i2c_dev *i2c_dev;
+ struct resource *mem, *irq;
+- u32 bus_clk_rate, divider;
+ int ret;
+ struct i2c_adapter *adap;
+
+@@ -306,27 +334,12 @@ static int bcm2835_i2c_probe(struct platform_device *pdev)
+ }
+
+ ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency",
+- &bus_clk_rate);
++ &i2c_dev->bus_clk_rate);
+ if (ret < 0) {
+ dev_warn(&pdev->dev,
+ "Could not read clock-frequency property\n");
+- bus_clk_rate = 100000;
+- }
+-
+- divider = DIV_ROUND_UP(clk_get_rate(i2c_dev->clk), bus_clk_rate);
+- /*
+- * Per the datasheet, the register is always interpreted as an even
+- * number, by rounding down. In other words, the LSB is ignored. So,
+- * if the LSB is set, increment the divider to avoid any issue.
+- */
+- if (divider & 1)
+- divider++;
+- if ((divider < BCM2835_I2C_CDIV_MIN) ||
+- (divider > BCM2835_I2C_CDIV_MAX)) {
+- dev_err(&pdev->dev, "Invalid clock-frequency\n");
+- return -ENODEV;
++ i2c_dev->bus_clk_rate = 100000;
+ }
+- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DIV, divider);
+
+ irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+ if (!irq) {
+--
+2.9.3
+
+From f2a46926aba1f0c33944901d2420a6a887455ddc Mon Sep 17 00:00:00 2001
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+Date: Tue, 22 Nov 2016 12:45:28 -0800
+Subject: [PATCH 08819/13183] clk: bcm2835: Fix ->fixed_divider of pllh_aux
+
+There is no fixed divider on pllh_aux.
+
+Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
+Signed-off-by: Eric Anholt <eric@anholt.net>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
+index 8c7763f..836d075 100644
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -1596,7 +1596,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
+ .a2w_reg = A2W_PLLH_AUX,
+ .load_mask = CM_PLLH_LOADAUX,
+ .hold_mask = 0,
+- .fixed_divider = 10),
++ .fixed_divider = 1),
+ [BCM2835_PLLH_PIX] = REGISTER_PLL_DIV(
+ .name = "pllh_pix",
+ .source_pll = "pllh",
+--
+2.9.3
+
+commit 84c39b8b7d46883f7a7514c7d55909831aa846fd
+Author: Arvind Yadav <arvind.yadav.cs@gmail.com>
+Date: Wed Sep 21 23:03:57 2016 +0530
+
+ clocksource/drivers/bcm2835_timer: Unmap region obtained by of_iomap
+
+ Free memory mapping, if bcm2835_timer_init is not successful.
+
+ Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
+ Reviewed-by: Eric Anholt <eric@anholt.net>
+ Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
+
+diff --git a/drivers/clocksource/bcm2835_timer.c b/drivers/clocksource/bcm2835_timer.c
+index e71acf2..f2f29d2 100644
+--- a/drivers/clocksource/bcm2835_timer.c
++++ b/drivers/clocksource/bcm2835_timer.c
+@@ -96,7 +96,7 @@ static int __init bcm2835_timer_init(struct device_node *node)
+ ret = of_property_read_u32(node, "clock-frequency", &freq);
+ if (ret) {
+ pr_err("Can't read clock-frequency");
+- return ret;
++ goto err_iounmap;
+ }
+
+ system_clock = base + REG_COUNTER_LO;
+@@ -108,13 +108,15 @@ static int __init bcm2835_timer_init(struct device_node *node)
+ irq = irq_of_parse_and_map(node, DEFAULT_TIMER);
+ if (irq <= 0) {
+ pr_err("Can't parse IRQ");
+- return -EINVAL;
++ ret = -EINVAL;
++ goto err_iounmap;
+ }
+
+ timer = kzalloc(sizeof(*timer), GFP_KERNEL);
+ if (!timer) {
+ pr_err("Can't allocate timer struct\n");
+- return -ENOMEM;
++ ret = -ENOMEM;
++ goto err_iounmap;
+ }
+
+ timer->control = base + REG_CONTROL;
+@@ -133,7 +135,7 @@ static int __init bcm2835_timer_init(struct device_node *node)
+ ret = setup_irq(irq, &timer->act);
+ if (ret) {
+ pr_err("Can't set up timer IRQ\n");
+- return ret;
++ goto err_iounmap;
+ }
+
+ clockevents_config_and_register(&timer->evt, freq, 0xf, 0xffffffff);
+@@ -141,6 +143,10 @@ static int __init bcm2835_timer_init(struct device_node *node)
+ pr_info("bcm2835: system timer (irq = %d)\n", irq);
+
+ return 0;
++
++err_iounmap:
++ iounmap(base);
++ return ret;
+ }
+ CLOCKSOURCE_OF_DECLARE(bcm2835, "brcm,bcm2835-system-timer",
+ bcm2835_timer_init);
+From 155e8b3b0ee320ae866b97dd31eba8a1f080a772 Mon Sep 17 00:00:00 2001
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+Date: Thu, 1 Dec 2016 22:00:19 +0100
+Subject: [PATCH 11733/13183] clk: bcm: Support rate change propagation on
+ bcm2835 clocks
+
+Some peripheral clocks, like the VEC (Video EnCoder) clock need to be set
+to a precise rate (in our case 108MHz). With the current implementation,
+where peripheral clocks are not allowed to forward rate change requests
+to their parents, it is impossible to match this requirement unless the
+bootloader has configured things correctly, or a specific rate has been
+assigned through the DT (with the assigned-clk-rates property).
+
+Add a new field to struct bcm2835_clock_data to specify which parent
+clocks accept rate change propagation, and support set rate propagation
+in bcm2835_clock_determine_rate().
+
+Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 67 ++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 63 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
+index 2acaa77..df96fe6 100644
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -436,6 +436,9 @@ struct bcm2835_clock_data {
+ const char *const *parents;
+ int num_mux_parents;
+
++ /* Bitmap encoding which parents accept rate change propagation. */
++ unsigned int set_rate_parent;
++
+ u32 ctl_reg;
+ u32 div_reg;
+
+@@ -1017,10 +1020,60 @@ bcm2835_clk_is_pllc(struct clk_hw *hw)
+ return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0;
+ }
+
++static unsigned long bcm2835_clock_choose_div_and_prate(struct clk_hw *hw,
++ int parent_idx,
++ unsigned long rate,
++ u32 *div,
++ unsigned long *prate)
++{
++ struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
++ struct bcm2835_cprman *cprman = clock->cprman;
++ const struct bcm2835_clock_data *data = clock->data;
++ unsigned long best_rate;
++ u32 curdiv, mindiv, maxdiv;
++ struct clk_hw *parent;
++
++ parent = clk_hw_get_parent_by_index(hw, parent_idx);
++
++ if (!(BIT(parent_idx) & data->set_rate_parent)) {
++ *prate = clk_hw_get_rate(parent);
++ *div = bcm2835_clock_choose_div(hw, rate, *prate, true);
++
++ return bcm2835_clock_rate_from_divisor(clock, *prate,
++ *div);
++ }
++
++ if (data->frac_bits)
++ dev_warn(cprman->dev,
++ "frac bits are not used when propagating rate change");
++
++ /* clamp to min divider of 2 if we're dealing with a mash clock */
++ mindiv = data->is_mash_clock ? 2 : 1;
++ maxdiv = BIT(data->int_bits) - 1;
++
++ /* TODO: Be smart, and only test a subset of the available divisors. */
++ for (curdiv = mindiv; curdiv <= maxdiv; curdiv++) {
++ unsigned long tmp_rate;
++
++ tmp_rate = clk_hw_round_rate(parent, rate * curdiv);
++ tmp_rate /= curdiv;
++ if (curdiv == mindiv ||
++ (tmp_rate > best_rate && tmp_rate <= rate))
++ best_rate = tmp_rate;
++
++ if (best_rate == rate)
++ break;
++ }
++
++ *div = curdiv << CM_DIV_FRAC_BITS;
++ *prate = curdiv * best_rate;
++
++ return best_rate;
++}
++
+ static int bcm2835_clock_determine_rate(struct clk_hw *hw,
+ struct clk_rate_request *req)
+ {
+- struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
+ struct clk_hw *parent, *best_parent = NULL;
+ bool current_parent_is_pllc;
+ unsigned long rate, best_rate = 0;
+@@ -1048,9 +1101,8 @@ static int bcm2835_clock_determine_rate(struct clk_hw *hw,
+ if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc)
+ continue;
+
+- prate = clk_hw_get_rate(parent);
+- div = bcm2835_clock_choose_div(hw, req->rate, prate, true);
+- rate = bcm2835_clock_rate_from_divisor(clock, prate, div);
++ rate = bcm2835_clock_choose_div_and_prate(hw, i, req->rate,
++ &div, &prate);
+ if (rate > best_rate && rate <= req->rate) {
+ best_parent = parent;
+ best_prate = prate;
+@@ -1262,6 +1314,13 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
+ init.name = data->name;
+ init.flags = data->flags | CLK_IGNORE_UNUSED;
+
++ /*
++ * Pass the CLK_SET_RATE_PARENT flag if we are allowed to propagate
++ * rate changes on at least of the parents.
++ */
++ if (data->set_rate_parent)
++ init.flags |= CLK_SET_RATE_PARENT;
++
+ if (data->is_vpu_clock) {
+ init.ops = &bcm2835_vpu_clock_clk_ops;
+ } else {
+--
+2.9.3
+
+From d86d46af84855403c00018be1c3e7bc190f2a6cd Mon Sep 17 00:00:00 2001
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+Date: Thu, 1 Dec 2016 22:00:20 +0100
+Subject: [PATCH 11734/13183] clk: bcm: Allow rate change propagation to
+ PLLH_AUX on VEC clock
+
+The VEC clock requires needs to be set at exactly 108MHz. Allow rate
+change propagation on PLLH_AUX to match this requirement wihtout
+impacting other IPs (PLLH is currently only used by the HDMI encoder,
+which cannot be enabled when the VEC encoder is enabled).
+
+Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
+index df96fe6..eaf82f4 100644
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -1861,7 +1861,12 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
+ .ctl_reg = CM_VECCTL,
+ .div_reg = CM_VECDIV,
+ .int_bits = 4,
+- .frac_bits = 0),
++ .frac_bits = 0,
++ /*
++ * Allow rate change propagation only on PLLH_AUX which is
++ * assigned index 7 in the parent array.
++ */
++ .set_rate_parent = BIT(7)),
+
+ /* dsi clocks */
+ [BCM2835_CLOCK_DSI0E] = REGISTER_PER_CLK(
+--
+2.9.3
+
+From 2aab7a2055a1705c9e30920d95a596226999eb21 Mon Sep 17 00:00:00 2001
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+Date: Mon, 12 Dec 2016 09:00:53 +0100
+Subject: [PATCH 12092/13183] clk: bcm: Fix 'maybe-uninitialized' warning in
+ bcm2835_clock_choose_div_and_prate()
+
+best_rate is reported as potentially uninitialized by gcc.
+
+Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
+Fixes: 155e8b3b0ee3 ("clk: bcm: Support rate change propagation on bcm2835 clocks")
+Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
+index eaf82f4..0d14409 100644
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -1029,7 +1029,7 @@ static unsigned long bcm2835_clock_choose_div_and_prate(struct clk_hw *hw,
+ struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
+ struct bcm2835_cprman *cprman = clock->cprman;
+ const struct bcm2835_clock_data *data = clock->data;
+- unsigned long best_rate;
++ unsigned long best_rate = 0;
+ u32 curdiv, mindiv, maxdiv;
+ struct clk_hw *parent;
+
+--
+2.9.3
+
diff --git a/bcm283x-mmc-imp-speed.patch b/bcm283x-mmc-imp-speed.patch
new file mode 100644
index 000000000..d50f0a33c
--- /dev/null
+++ b/bcm283x-mmc-imp-speed.patch
@@ -0,0 +1,176 @@
+From d11469e272ed1c28030d2f36ad6ac5a364a633d8 Mon Sep 17 00:00:00 2001
+From: Scott Branden <scott.branden@broadcom.com>
+Date: Tue, 1 Nov 2016 09:37:57 -0700
+Subject: [PATCH 1/3] mmc: sdhci-iproc: support standard byte register accesses
+
+Add bytewise register accesses support for newer versions of IPROC
+SDHCI controllers.
+Previous sdhci-iproc versions of SDIO controllers
+(such as Raspberry Pi and Cygnus) only allowed for 32-bit register
+accesses.
+
+Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
+Signed-off-by: Scott Branden <scott.branden@broadcom.com>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+---
+ drivers/mmc/host/sdhci-iproc.c | 35 +++++++++++++++++++++++++++++++++--
+ 1 file changed, 33 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
+index 7262466..d7046d6 100644
+--- a/drivers/mmc/host/sdhci-iproc.c
++++ b/drivers/mmc/host/sdhci-iproc.c
+@@ -143,6 +143,14 @@ static void sdhci_iproc_writeb(struct sdhci_host *host, u8 val, int reg)
+ }
+
+ static const struct sdhci_ops sdhci_iproc_ops = {
++ .set_clock = sdhci_set_clock,
++ .get_max_clock = sdhci_pltfm_clk_get_max_clock,
++ .set_bus_width = sdhci_set_bus_width,
++ .reset = sdhci_reset,
++ .set_uhs_signaling = sdhci_set_uhs_signaling,
++};
++
++static const struct sdhci_ops sdhci_iproc_32only_ops = {
+ .read_l = sdhci_iproc_readl,
+ .read_w = sdhci_iproc_readw,
+ .read_b = sdhci_iproc_readb,
+@@ -156,6 +164,28 @@ static const struct sdhci_ops sdhci_iproc_ops = {
+ .set_uhs_signaling = sdhci_set_uhs_signaling,
+ };
+
++static const struct sdhci_pltfm_data sdhci_iproc_cygnus_pltfm_data = {
++ .quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
++ .quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
++ .ops = &sdhci_iproc_32only_ops,
++};
++
++static const struct sdhci_iproc_data iproc_cygnus_data = {
++ .pdata = &sdhci_iproc_cygnus_pltfm_data,
++ .caps = ((0x1 << SDHCI_MAX_BLOCK_SHIFT)
++ & SDHCI_MAX_BLOCK_MASK) |
++ SDHCI_CAN_VDD_330 |
++ SDHCI_CAN_VDD_180 |
++ SDHCI_CAN_DO_SUSPEND |
++ SDHCI_CAN_DO_HISPD |
++ SDHCI_CAN_DO_ADMA2 |
++ SDHCI_CAN_DO_SDMA,
++ .caps1 = SDHCI_DRIVER_TYPE_C |
++ SDHCI_DRIVER_TYPE_D |
++ SDHCI_SUPPORT_DDR50,
++ .mmc_caps = MMC_CAP_1_8V_DDR,
++};
++
+ static const struct sdhci_pltfm_data sdhci_iproc_pltfm_data = {
+ .quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
+ .quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
+@@ -182,7 +212,7 @@ static const struct sdhci_pltfm_data sdhci_bcm2835_pltfm_data = {
+ .quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION |
+ SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
+ SDHCI_QUIRK_MISSING_CAPS,
+- .ops = &sdhci_iproc_ops,
++ .ops = &sdhci_iproc_32only_ops,
+ };
+
+ static const struct sdhci_iproc_data bcm2835_data = {
+@@ -194,7 +224,8 @@ static const struct sdhci_iproc_data bcm2835_data = {
+
+ static const struct of_device_id sdhci_iproc_of_match[] = {
+ { .compatible = "brcm,bcm2835-sdhci", .data = &bcm2835_data },
+- { .compatible = "brcm,sdhci-iproc-cygnus", .data = &iproc_data },
++ { .compatible = "brcm,sdhci-iproc-cygnus", .data = &iproc_cygnus_data},
++ { .compatible = "brcm,sdhci-iproc", .data = &iproc_data },
+ { }
+ };
+ MODULE_DEVICE_TABLE(of, sdhci_iproc_of_match);
+--
+2.9.3
+
+From 3dcb11900d7cde1fd378f154137272f99253a60c Mon Sep 17 00:00:00 2001
+From: Stefan Wahren <stefan.wahren@i2se.com>
+Date: Fri, 30 Dec 2016 15:24:32 +0000
+Subject: [PATCH 2/3] mmc: sdhci-iproc: Apply caps from bcm2835-mmc driver
+
+Since the mmc module on bcm2835 neither provide a capabilities register nor
+free documentation we must rely on the downstream implementation [1].
+
+So enable the following capabilities for bcm2835:
+
+MMC_CAP_MMC_HIGHSPEED
+MMC_CAP_SD_HIGHSPEED
+MMC_CAP_DRIVER_TYPE_A
+MMC_CAP_DRIVER_TYPE_C
+
+[1] - https://github.com/raspberrypi/linux/blob/rpi-4.4.y/drivers/mmc/host/bcm2835-mmc.c
+
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+---
+ drivers/mmc/host/sdhci-iproc.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
+index d7046d6..30b3fdf 100644
+--- a/drivers/mmc/host/sdhci-iproc.c
++++ b/drivers/mmc/host/sdhci-iproc.c
+@@ -211,14 +211,17 @@ static const struct sdhci_iproc_data iproc_data = {
+ static const struct sdhci_pltfm_data sdhci_bcm2835_pltfm_data = {
+ .quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION |
+ SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
+- SDHCI_QUIRK_MISSING_CAPS,
++ SDHCI_QUIRK_MISSING_CAPS |
++ SDHCI_QUIRK_NO_HISPD_BIT,
+ .ops = &sdhci_iproc_32only_ops,
+ };
+
+ static const struct sdhci_iproc_data bcm2835_data = {
+ .pdata = &sdhci_bcm2835_pltfm_data,
+- .caps = SDHCI_CAN_VDD_330,
+- .caps1 = 0x00000000,
++ .caps = SDHCI_CAN_VDD_330 |
++ SDHCI_CAN_DO_HISPD,
++ .caps1 = SDHCI_DRIVER_TYPE_A |
++ SDHCI_DRIVER_TYPE_C,
+ .mmc_caps = 0x00000000,
+ };
+
+--
+2.9.3
+
+From c43d8ee65e20df0672bd27238b11475dc3e8d447 Mon Sep 17 00:00:00 2001
+From: Stefan Wahren <stefan.wahren@i2se.com>
+Date: Fri, 30 Dec 2016 15:24:33 +0000
+Subject: [PATCH 3/3] mmc: sdhci-iproc: Increase max_blk_size for bcm2835
+
+According to the BCM2835 datasheet the maximum block size for the
+eMMC module is restricted to the internal data FIFO which is 1024 byte.
+But this is still an improvement to the default of 512 byte.
+
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Acked-by: Scott Branden <scott.branden@broadcom.com>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+---
+ drivers/mmc/host/sdhci-iproc.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
+index 30b3fdf..3275d49 100644
+--- a/drivers/mmc/host/sdhci-iproc.c
++++ b/drivers/mmc/host/sdhci-iproc.c
+@@ -218,7 +218,9 @@ static const struct sdhci_pltfm_data sdhci_bcm2835_pltfm_data = {
+
+ static const struct sdhci_iproc_data bcm2835_data = {
+ .pdata = &sdhci_bcm2835_pltfm_data,
+- .caps = SDHCI_CAN_VDD_330 |
++ .caps = ((0x1 << SDHCI_MAX_BLOCK_SHIFT)
++ & SDHCI_MAX_BLOCK_MASK) |
++ SDHCI_CAN_VDD_330 |
+ SDHCI_CAN_DO_HISPD,
+ .caps1 = SDHCI_DRIVER_TYPE_A |
+ SDHCI_DRIVER_TYPE_C,
+--
+2.9.3
+
diff --git a/bcm283x-vc4-fixes.patch b/bcm283x-vc4-fixes.patch
index 3f77b7485..d42ceb62a 100644
--- a/bcm283x-vc4-fixes.patch
+++ b/bcm283x-vc4-fixes.patch
@@ -1,642 +1,3 @@
-From 9db79f3a51c97e0cfcde1b25299e8db9ee3d64ab Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Wed, 14 Sep 2016 19:21:29 +0100
-Subject: [PATCH 1/4] drm/vc4: Fall back to using an EDID probe in the absence
- of a GPIO.
-
-On Pi0/1/2, we use an external GPIO line for hotplug detection, since
-the HDMI_HOTPLUG register isn't connected to anything. However, with
-the Pi3 the HPD GPIO line has moved off to a GPIO expander that will
-be tricky to get to (the firmware is constantly polling the expander
-using i2c0, so we'll need to coordinate with it).
-
-As a stop-gap, if we don't have a GPIO line, use an EDID probe to
-detect connection. Fixes HDMI display on the pi3.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- drivers/gpu/drm/vc4/vc4_hdmi.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 4452f36..5adc0c7 100644
---- a/drivers/gpu/drm/vc4/vc4_hdmi.c
-+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -174,6 +174,9 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
- return connector_status_disconnected;
- }
-
-+ if (drm_probe_ddc(vc4->hdmi->ddc))
-+ return connector_status_connected;
-+
- if (HDMI_READ(VC4_HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED)
- return connector_status_connected;
- else
---
-2.9.3
-
-From 7b4c39f34fbbdfe0cd0e626686ee01ab96601598 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Fri, 16 Sep 2016 10:59:45 +0100
-Subject: [PATCH 2/4] drm/vc4: Enable limited range RGB output on HDMI with CEA
- modes.
-
-Fixes broken grayscale ramps on many HDMI monitors, where large areas
-at the ends of the ramp would all appear as black or white.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- drivers/gpu/drm/vc4/vc4_hdmi.c | 31 +++++++++++++++++++++++++++++--
- drivers/gpu/drm/vc4/vc4_regs.h | 9 ++++++++-
- 2 files changed, 37 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 5adc0c7..5df4e74 100644
---- a/drivers/gpu/drm/vc4/vc4_hdmi.c
-+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -276,6 +276,7 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder,
- struct drm_display_mode *unadjusted_mode,
- struct drm_display_mode *mode)
- {
-+ struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
- struct drm_device *dev = encoder->dev;
- struct vc4_dev *vc4 = to_vc4_dev(dev);
- bool debug_dump_regs = false;
-@@ -291,6 +292,7 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder,
- u32 vertb = (VC4_SET_FIELD(0, VC4_HDMI_VERTB_VSPO) |
- VC4_SET_FIELD(mode->vtotal - mode->vsync_end,
- VC4_HDMI_VERTB_VBP));
-+ u32 csc_ctl;
-
- if (debug_dump_regs) {
- DRM_INFO("HDMI regs before:\n");
-@@ -329,9 +331,34 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder,
- (vsync_pos ? 0 : VC4_HD_VID_CTL_VSYNC_LOW) |
- (hsync_pos ? 0 : VC4_HD_VID_CTL_HSYNC_LOW));
-
-+ csc_ctl = VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR,
-+ VC4_HD_CSC_CTL_ORDER);
-+
-+ if (vc4_encoder->hdmi_monitor && drm_match_cea_mode(mode) > 1) {
-+ /* CEA VICs other than #1 requre limited range RGB
-+ * output. Apply a colorspace conversion to squash
-+ * 0-255 down to 16-235. The matrix here is:
-+ *
-+ * [ 0 0 0.8594 16]
-+ * [ 0 0.8594 0 16]
-+ * [ 0.8594 0 0 16]
-+ * [ 0 0 0 1]
-+ */
-+ csc_ctl |= VC4_HD_CSC_CTL_ENABLE;
-+ csc_ctl |= VC4_HD_CSC_CTL_RGB2YCC;
-+ csc_ctl |= VC4_SET_FIELD(VC4_HD_CSC_CTL_MODE_CUSTOM,
-+ VC4_HD_CSC_CTL_MODE);
-+
-+ HD_WRITE(VC4_HD_CSC_12_11, (0x000 << 16) | 0x000);
-+ HD_WRITE(VC4_HD_CSC_14_13, (0x100 << 16) | 0x6e0);
-+ HD_WRITE(VC4_HD_CSC_22_21, (0x6e0 << 16) | 0x000);
-+ HD_WRITE(VC4_HD_CSC_24_23, (0x100 << 16) | 0x000);
-+ HD_WRITE(VC4_HD_CSC_32_31, (0x000 << 16) | 0x6e0);
-+ HD_WRITE(VC4_HD_CSC_34_33, (0x100 << 16) | 0x000);
-+ }
-+
- /* The RGB order applies even when CSC is disabled. */
-- HD_WRITE(VC4_HD_CSC_CTL, VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR,
-- VC4_HD_CSC_CTL_ORDER));
-+ HD_WRITE(VC4_HD_CSC_CTL, csc_ctl);
-
- HDMI_WRITE(VC4_HDMI_FIFO_CTL, VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N);
-
-diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h
-index 160942a..9ecd6ff 100644
---- a/drivers/gpu/drm/vc4/vc4_regs.h
-+++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -528,10 +528,17 @@
- # define VC4_HD_CSC_CTL_MODE_SHIFT 2
- # define VC4_HD_CSC_CTL_MODE_RGB_TO_SD_YPRPB 0
- # define VC4_HD_CSC_CTL_MODE_RGB_TO_HD_YPRPB 1
--# define VC4_HD_CSC_CTL_MODE_CUSTOM 2
-+# define VC4_HD_CSC_CTL_MODE_CUSTOM 3
- # define VC4_HD_CSC_CTL_RGB2YCC BIT(1)
- # define VC4_HD_CSC_CTL_ENABLE BIT(0)
-
-+#define VC4_HD_CSC_12_11 0x044
-+#define VC4_HD_CSC_14_13 0x048
-+#define VC4_HD_CSC_22_21 0x04c
-+#define VC4_HD_CSC_24_23 0x050
-+#define VC4_HD_CSC_32_31 0x054
-+#define VC4_HD_CSC_34_33 0x058
-+
- #define VC4_HD_FRAME_COUNT 0x068
-
- /* HVS display list information. */
---
-2.9.3
-
-From f379f5432e4b74e3d1d894ce2fefbe1b8a3c24fd Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Wed, 28 Sep 2016 19:20:44 -0700
-Subject: [PATCH 4/4] drm/vc4: Increase timeout for HDMI_SCHEDULER_CONTROL
- changes.
-
-Fixes occasional debug spew at boot when connected directly through
-HDMI, and probably confusing the HDMI state machine when we go trying
-to poke registers for the enable sequence too soon.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- drivers/gpu/drm/vc4/vc4_hdmi.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 5df4e74..9a6883d 100644
---- a/drivers/gpu/drm/vc4/vc4_hdmi.c
-+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -399,7 +399,7 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
- VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
-
- ret = wait_for(HDMI_READ(VC4_HDMI_SCHEDULER_CONTROL) &
-- VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE, 1);
-+ VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE, 1000);
- WARN_ONCE(ret, "Timeout waiting for "
- "VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE\n");
- } else {
-@@ -411,7 +411,7 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
- ~VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
-
- ret = wait_for(!(HDMI_READ(VC4_HDMI_SCHEDULER_CONTROL) &
-- VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE), 1);
-+ VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE), 1000);
- WARN_ONCE(ret, "Timeout waiting for "
- "!VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE\n");
- }
---
-2.9.3
-
-From bd712d14886c37eb804036b2ac3036df79d33476 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Thu, 29 Sep 2016 15:34:43 -0700
-Subject: [PATCH] drm/vc4: Set up the AVI and SPD infoframes.
-
-Fixes a purple bar on the left side of the screen with my Dell
-2408WFP. It will also be required for supporting the double-clocked
-video modes.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- drivers/gpu/drm/vc4/vc4_hdmi.c | 136 +++++++++++++++++++++++++++++++++++++++--
- drivers/gpu/drm/vc4/vc4_regs.h | 5 ++
- 2 files changed, 136 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 9a6883d..f722334 100644
---- a/drivers/gpu/drm/vc4/vc4_hdmi.c
-+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -62,6 +62,8 @@ struct vc4_hdmi {
- struct vc4_hdmi_encoder {
- struct vc4_encoder base;
- bool hdmi_monitor;
-+ bool limited_rgb_range;
-+ bool rgb_range_selectable;
- };
-
- static inline struct vc4_hdmi_encoder *
-@@ -205,6 +207,12 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
- return -ENODEV;
-
- vc4_encoder->hdmi_monitor = drm_detect_hdmi_monitor(edid);
-+
-+ if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) {
-+ vc4_encoder->rgb_range_selectable =
-+ drm_rgb_quant_range_selectable(edid);
-+ }
-+
- drm_mode_connector_update_edid_property(connector, edid);
- ret = drm_add_edid_modes(connector, edid);
-
-@@ -272,6 +280,117 @@ static const struct drm_encoder_funcs vc4_hdmi_encoder_funcs = {
- .destroy = vc4_hdmi_encoder_destroy,
- };
-
-+static int vc4_hdmi_stop_packet(struct drm_encoder *encoder,
-+ enum hdmi_infoframe_type type)
-+{
-+ struct drm_device *dev = encoder->dev;
-+ struct vc4_dev *vc4 = to_vc4_dev(dev);
-+ u32 packet_id = type - 0x80;
-+
-+ HDMI_WRITE(VC4_HDMI_RAM_PACKET_CONFIG,
-+ HDMI_READ(VC4_HDMI_RAM_PACKET_CONFIG) & ~BIT(packet_id));
-+
-+ return wait_for(!(HDMI_READ(VC4_HDMI_RAM_PACKET_STATUS) &
-+ BIT(packet_id)), 100);
-+}
-+
-+static void vc4_hdmi_write_infoframe(struct drm_encoder *encoder,
-+ union hdmi_infoframe *frame)
-+{
-+ struct drm_device *dev = encoder->dev;
-+ struct vc4_dev *vc4 = to_vc4_dev(dev);
-+ u32 packet_id = frame->any.type - 0x80;
-+ u32 packet_reg = VC4_HDMI_GCP_0 + VC4_HDMI_PACKET_STRIDE * packet_id;
-+ uint8_t buffer[VC4_HDMI_PACKET_STRIDE];
-+ ssize_t len, i;
-+ int ret;
-+
-+ WARN_ONCE(!(HDMI_READ(VC4_HDMI_RAM_PACKET_CONFIG) &
-+ VC4_HDMI_RAM_PACKET_ENABLE),
-+ "Packet RAM has to be on to store the packet.");
-+
-+ len = hdmi_infoframe_pack(frame, buffer, sizeof(buffer));
-+ if (len < 0)
-+ return;
-+
-+ ret = vc4_hdmi_stop_packet(encoder, frame->any.type);
-+ if (ret) {
-+ DRM_ERROR("Failed to wait for infoframe to go idle: %d\n", ret);
-+ return;
-+ }
-+
-+ for (i = 0; i < len; i += 7) {
-+ HDMI_WRITE(packet_reg,
-+ buffer[i + 0] << 0 |
-+ buffer[i + 1] << 8 |
-+ buffer[i + 2] << 16);
-+ packet_reg += 4;
-+
-+ HDMI_WRITE(packet_reg,
-+ buffer[i + 3] << 0 |
-+ buffer[i + 4] << 8 |
-+ buffer[i + 5] << 16 |
-+ buffer[i + 6] << 24);
-+ packet_reg += 4;
-+ }
-+
-+ HDMI_WRITE(VC4_HDMI_RAM_PACKET_CONFIG,
-+ HDMI_READ(VC4_HDMI_RAM_PACKET_CONFIG) | BIT(packet_id));
-+ ret = wait_for((HDMI_READ(VC4_HDMI_RAM_PACKET_STATUS) &
-+ BIT(packet_id)), 100);
-+ if (ret)
-+ DRM_ERROR("Failed to wait for infoframe to start: %d\n", ret);
-+}
-+
-+static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder)
-+{
-+ struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
-+ struct drm_crtc *crtc = encoder->crtc;
-+ const struct drm_display_mode *mode = &crtc->state->adjusted_mode;
-+ union hdmi_infoframe frame;
-+ int ret;
-+
-+ ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, mode);
-+ if (ret < 0) {
-+ DRM_ERROR("couldn't fill AVI infoframe\n");
-+ return;
-+ }
-+
-+ if (vc4_encoder->rgb_range_selectable) {
-+ if (vc4_encoder->limited_rgb_range) {
-+ frame.avi.quantization_range =
-+ HDMI_QUANTIZATION_RANGE_LIMITED;
-+ } else {
-+ frame.avi.quantization_range =
-+ HDMI_QUANTIZATION_RANGE_FULL;
-+ }
-+ }
-+
-+ vc4_hdmi_write_infoframe(encoder, &frame);
-+}
-+
-+static void vc4_hdmi_set_spd_infoframe(struct drm_encoder *encoder)
-+{
-+ union hdmi_infoframe frame;
-+ int ret;
-+
-+ ret = hdmi_spd_infoframe_init(&frame.spd, "Broadcom", "Videocore");
-+ if (ret < 0) {
-+ DRM_ERROR("couldn't fill SPD infoframe\n");
-+ return;
-+ }
-+
-+ frame.spd.sdi = HDMI_SPD_SDI_PC;
-+
-+ vc4_hdmi_write_infoframe(encoder, &frame);
-+}
-+
-+static void vc4_hdmi_set_infoframes(struct drm_encoder *encoder)
-+{
-+ vc4_hdmi_set_avi_infoframe(encoder);
-+ vc4_hdmi_set_spd_infoframe(encoder);
-+}
-+
- static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder,
- struct drm_display_mode *unadjusted_mode,
- struct drm_display_mode *mode)
-@@ -336,8 +455,9 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder,
-
- if (vc4_encoder->hdmi_monitor && drm_match_cea_mode(mode) > 1) {
- /* CEA VICs other than #1 requre limited range RGB
-- * output. Apply a colorspace conversion to squash
-- * 0-255 down to 16-235. The matrix here is:
-+ * output unless overridden by an AVI infoframe.
-+ * Apply a colorspace conversion to squash 0-255 down
-+ * to 16-235. The matrix here is:
- *
- * [ 0 0 0.8594 16]
- * [ 0 0.8594 0 16]
-@@ -355,6 +475,9 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder,
- HD_WRITE(VC4_HD_CSC_24_23, (0x100 << 16) | 0x000);
- HD_WRITE(VC4_HD_CSC_32_31, (0x000 << 16) | 0x6e0);
- HD_WRITE(VC4_HD_CSC_34_33, (0x100 << 16) | 0x000);
-+ vc4_encoder->limited_rgb_range = true;
-+ } else {
-+ vc4_encoder->limited_rgb_range = false;
- }
-
- /* The RGB order applies even when CSC is disabled. */
-@@ -373,6 +496,8 @@ static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
- struct drm_device *dev = encoder->dev;
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-
-+ HDMI_WRITE(VC4_HDMI_RAM_PACKET_CONFIG, 0);
-+
- HDMI_WRITE(VC4_HDMI_TX_PHY_RESET_CTL, 0xf << 16);
- HD_WRITE(VC4_HD_VID_CTL,
- HD_READ(VC4_HD_VID_CTL) & ~VC4_HD_VID_CTL_ENABLE);
-@@ -425,9 +550,10 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
- HDMI_READ(VC4_HDMI_SCHEDULER_CONTROL) |
- VC4_HDMI_SCHEDULER_CONTROL_VERT_ALWAYS_KEEPOUT);
-
-- /* XXX: Set HDMI_RAM_PACKET_CONFIG (1 << 16) and set
-- * up the infoframe.
-- */
-+ HDMI_WRITE(VC4_HDMI_RAM_PACKET_CONFIG,
-+ VC4_HDMI_RAM_PACKET_ENABLE);
-+
-+ vc4_hdmi_set_infoframes(encoder);
-
- drift = HDMI_READ(VC4_HDMI_FIFO_CTL);
- drift &= VC4_HDMI_FIFO_VALID_WRITE_MASK;
-diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h
-index 9ecd6ff..a4b5370 100644
---- a/drivers/gpu/drm/vc4/vc4_regs.h
-+++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -438,6 +438,8 @@
- #define VC4_HDMI_RAM_PACKET_CONFIG 0x0a0
- # define VC4_HDMI_RAM_PACKET_ENABLE BIT(16)
-
-+#define VC4_HDMI_RAM_PACKET_STATUS 0x0a4
-+
- #define VC4_HDMI_HORZA 0x0c4
- # define VC4_HDMI_HORZA_VPOS BIT(14)
- # define VC4_HDMI_HORZA_HPOS BIT(13)
-@@ -499,6 +501,9 @@
-
- #define VC4_HDMI_TX_PHY_RESET_CTL 0x2c0
-
-+#define VC4_HDMI_GCP_0 0x400
-+#define VC4_HDMI_PACKET_STRIDE 0x24
-+
- #define VC4_HD_M_CTL 0x00c
- # define VC4_HD_M_REGISTER_FILE_STANDBY (3 << 6)
- # define VC4_HD_M_RAM_STANDBY (3 << 4)
---
-2.9.3
-
-From c4e634ce412d97f0e61223b2a5b3f8f9600cd4dc Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Fri, 30 Sep 2016 10:07:27 -0700
-Subject: clk: bcm2835: Clamp the PLL's requested rate to the hardware limits.
-
-Fixes setting low-resolution video modes on HDMI. Now the PLLH_PIX
-divider adjusts itself until the PLLH is within bounds.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 11 ++++-------
- 1 file changed, 4 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index b68bf57..8c7763f 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -502,8 +502,12 @@ static long bcm2835_pll_rate_from_divisors(unsigned long parent_rate,
- static long bcm2835_pll_round_rate(struct clk_hw *hw, unsigned long rate,
- unsigned long *parent_rate)
- {
-+ struct bcm2835_pll *pll = container_of(hw, struct bcm2835_pll, hw);
-+ const struct bcm2835_pll_data *data = pll->data;
- u32 ndiv, fdiv;
-
-+ rate = clamp(rate, data->min_rate, data->max_rate);
-+
- bcm2835_pll_choose_ndiv_and_fdiv(rate, *parent_rate, &ndiv, &fdiv);
-
- return bcm2835_pll_rate_from_divisors(*parent_rate, ndiv, fdiv, 1);
-@@ -608,13 +612,6 @@ static int bcm2835_pll_set_rate(struct clk_hw *hw,
- u32 ana[4];
- int i;
-
-- if (rate < data->min_rate || rate > data->max_rate) {
-- dev_err(cprman->dev, "%s: rate out of spec: %lu vs (%lu, %lu)\n",
-- clk_hw_get_name(hw), rate,
-- data->min_rate, data->max_rate);
-- return -EINVAL;
-- }
--
- if (rate > data->max_fb_rate) {
- use_fb_prediv = true;
- rate /= 2;
---
-cgit v0.12
-
-From e69fdcca836f0b81a2260b69429c8622a80ea891 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Wed, 1 Jun 2016 12:05:33 -0700
-Subject: clk: bcm2835: Mark the VPU clock as critical
-
-The VPU clock is also the clock for our AXI bus, so we really can't
-disable it. This might have happened during boot if, for example,
-uart1 (aux_uart clock) probed and was then disabled before the other
-consumers of the VPU clock had probed.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Acked-by: Martin Sperl <kernel@martin.sperl.org>
-Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 7a79708..d9db03c 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -443,6 +443,8 @@ struct bcm2835_clock_data {
- /* Number of fractional bits in the divider */
- u32 frac_bits;
-
-+ u32 flags;
-+
- bool is_vpu_clock;
- bool is_mash_clock;
- };
-@@ -1230,7 +1232,7 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman,
- init.parent_names = parents;
- init.num_parents = data->num_mux_parents;
- init.name = data->name;
-- init.flags = CLK_IGNORE_UNUSED;
-+ init.flags = data->flags | CLK_IGNORE_UNUSED;
-
- if (data->is_vpu_clock) {
- init.ops = &bcm2835_vpu_clock_clk_ops;
-@@ -1649,6 +1651,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
- .div_reg = CM_VPUDIV,
- .int_bits = 12,
- .frac_bits = 8,
-+ .flags = CLK_IS_CRITICAL,
- .is_vpu_clock = true),
-
- /* clocks with per parent mux */
---
-cgit v0.12
-
-From eddcbe8398fc7103fccd22aa6df6917caf0123bf Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Wed, 1 Jun 2016 12:05:34 -0700
-Subject: clk: bcm2835: Mark GPIO clocks enabled at boot as critical
-
-These divide off of PLLD_PER and are used for the ethernet and wifi
-PHYs source PLLs. Neither of them is currently represented by a phy
-device that would grab the clock for us.
-
-This keeps other drivers from killing the networking PHYs when they
-disable their own clocks and trigger PLLD_PER's refcount going to 0.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Acked-by: Martin Sperl <kernel@martin.sperl.org>
-Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index d9db03c..400615b 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1239,6 +1239,12 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman,
- } else {
- init.ops = &bcm2835_clock_clk_ops;
- init.flags |= CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE;
-+
-+ /* If the clock wasn't actually enabled at boot, it's not
-+ * critical.
-+ */
-+ if (!(cprman_read(cprman, data->ctl_reg) & CM_ENABLE))
-+ init.flags &= ~CLK_IS_CRITICAL;
- }
-
- clock = devm_kzalloc(cprman->dev, sizeof(*clock), GFP_KERNEL);
-@@ -1708,13 +1714,15 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
- .div_reg = CM_GP1DIV,
- .int_bits = 12,
- .frac_bits = 12,
-+ .flags = CLK_IS_CRITICAL,
- .is_mash_clock = true),
- [BCM2835_CLOCK_GP2] = REGISTER_PER_CLK(
- .name = "gp2",
- .ctl_reg = CM_GP2CTL,
- .div_reg = CM_GP2DIV,
- .int_bits = 12,
-- .frac_bits = 12),
-+ .frac_bits = 12,
-+ .flags = CLK_IS_CRITICAL),
-
- /* HDMI state machine */
- [BCM2835_CLOCK_HSM] = REGISTER_PER_CLK(
---
-cgit v0.12
-
-From 9e400c5cc5c105e35216ac59a346f20cdd7613be Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Wed, 1 Jun 2016 12:05:35 -0700
-Subject: clk: bcm2835: Mark the CM SDRAM clock's parent as critical
-
-While the SDRAM is being driven by its dedicated PLL most of the time,
-there is a little loop running in the firmware that periodically turns
-on the CM SDRAM clock (using its pre-initialized parent) and switches
-SDRAM to using the CM clock to do PVT recalibration.
-
-This avoids system hangs if we choose SDRAM's parent for some other
-clock, then disable that clock.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Acked-by: Martin Sperl <kernel@martin.sperl.org>
-Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 400615b..c6420b3 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -36,6 +36,7 @@
-
- #include <linux/clk-provider.h>
- #include <linux/clkdev.h>
-+#include <linux/clk.h>
- #include <linux/clk/bcm2835.h>
- #include <linux/debugfs.h>
- #include <linux/module.h>
-@@ -1801,6 +1802,25 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
- .ctl_reg = CM_PERIICTL),
- };
-
-+/*
-+ * Permanently take a reference on the parent of the SDRAM clock.
-+ *
-+ * While the SDRAM is being driven by its dedicated PLL most of the
-+ * time, there is a little loop running in the firmware that
-+ * periodically switches the SDRAM to using our CM clock to do PVT
-+ * recalibration, with the assumption that the previously configured
-+ * SDRAM parent is still enabled and running.
-+ */
-+static int bcm2835_mark_sdc_parent_critical(struct clk *sdc)
-+{
-+ struct clk *parent = clk_get_parent(sdc);
-+
-+ if (IS_ERR(parent))
-+ return PTR_ERR(parent);
-+
-+ return clk_prepare_enable(parent);
-+}
-+
- static int bcm2835_clk_probe(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
-@@ -1810,6 +1830,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
- const struct bcm2835_clk_desc *desc;
- const size_t asize = ARRAY_SIZE(clk_desc_array);
- size_t i;
-+ int ret;
-
- cprman = devm_kzalloc(dev,
- sizeof(*cprman) + asize * sizeof(*clks),
-@@ -1840,6 +1861,10 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
- clks[i] = desc->clk_register(cprman, desc->data);
- }
-
-+ ret = bcm2835_mark_sdc_parent_critical(clks[BCM2835_CLOCK_SDRAM]);
-+ if (ret)
-+ return ret;
-+
- return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get,
- &cprman->onecell);
- }
---
-cgit v0.12
-
From 30772942cc1095c3129eecfa182e2c568e566b9d Mon Sep 17 00:00:00 2001
From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Thu, 13 Oct 2016 11:54:31 +0300
diff --git a/config-arm-generic b/config-arm-generic
index 7a88c2d02..b14907566 100644
--- a/config-arm-generic
+++ b/config-arm-generic
@@ -21,6 +21,7 @@ CONFIG_CC_STACKPROTECTOR=y
# CONFIG_BIG_LITTLE is not set
# CONFIG_ARM_BIG_LITTLE_CPUIDLE is not set
# CONFIG_IWMMXT is not set
+# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
# https://fedoraproject.org/wiki/Features/Checkpoint_Restore
CONFIG_CHECKPOINT_RESTORE=y
@@ -65,9 +66,10 @@ CONFIG_ARM_GIC_V3_ITS=y
CONFIG_ARM_GLOBAL_TIMER=y
CONFIG_ARM_SMMU=y
CONFIG_MMC_ARMMMCI=y
+CONFIG_COMMON_CLK_SCPI=m
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_SERIO_AMBAKMI=y
+CONFIG_SERIO_AMBAKMI=m
CONFIG_FB_ARMCLCD=y
CONFIG_RTC_DRV_PL031=y
CONFIG_PL330_DMA=m
@@ -88,11 +90,6 @@ CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA512_ARM=y
CONFIG_TCG_TIS_I2C_ATMEL=m
-# EDAC
-CONFIG_EDAC=y
-CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_LEGACY_SYSFS=y
-
# Regulators
CONFIG_REGULATOR=y
CONFIG_RFKILL_REGULATOR=m
@@ -136,19 +133,20 @@ CONFIG_ARCH_BCM2835=y
# CONFIG_ARCH_BCM_21664 is not set
# CONFIG_ARCH_BCM_63XX is not set
# CONFIG_ARCH_BCM_23550 is not set
+# CONFIG_ARCH_BCM_53573 is not set
# CONFIG_ARCH_BRCMSTB is not set
# CONFIG_ARCH_BERLIN is not set
# BCM 283x
CONFIG_SERIAL_8250_BCM2835AUX=y
CONFIG_DMA_BCM2835=m
CONFIG_MMC_SDHCI_IPROC=m
-CONFIG_MMC_BCM2835_SDHOST=m
CONFIG_BCM2835_MBOX=y
CONFIG_PWM_BCM2835=m
CONFIG_HW_RANDOM_BCM2835=m
CONFIG_I2C_BCM2835=m
CONFIG_SPI_BCM2835=m
CONFIG_SPI_BCM2835AUX=m
+# CONFIG_SPI_BCM_QSPI is not set
CONFIG_BCM2835_WDT=m
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_DRM_VC4=m
@@ -236,6 +234,11 @@ CONFIG_ROCKCHIP_EFUSE=m
CONFIG_PHY_ROCKCHIP_EMMC=m
CONFIG_PHY_ROCKCHIP_DP=m
CONFIG_ROCKCHIP_MBOX=y
+# CONFIG_ARM_RK3399_DMC_DEVFREQ is not set
+CONFIG_PHY_ROCKCHIP_INNO_USB2=m
+CONFIG_PHY_ROCKCHIP_PCIE=m
+CONFIG_PHY_ROCKCHIP_TYPEC=m
+CONFIG_PCIE_ROCKCHIP=y
# Tegra
CONFIG_TEGRA_MC=y
@@ -311,6 +314,7 @@ CONFIG_DEVFREQ_THERMAL=y
CONFIG_SPMI=m
CONFIG_MFD_SPMI_PMIC=m
CONFIG_REGMAP_SPMI=m
+# CONFIG_QORIQ_THERMAL is not set
# Device tree
CONFIG_DTC=y
@@ -324,7 +328,6 @@ CONFIG_OF_FLATTREE=y
CONFIG_OF_GPIO=y
CONFIG_OF_IOMMU=y
CONFIG_OF_IRQ=y
-CONFIG_OF_MTD=y
CONFIG_OF_NET=y
CONFIG_OF_OVERLAY=y
CONFIG_OF_PCI_IRQ=m
@@ -344,6 +347,7 @@ CONFIG_THERMAL_OF=y
# Mailbox
CONFIG_MAILBOX=y
CONFIG_ARM_MHU=m
+# CONFIG_PLATFORM_MHU is not set
# CONFIG_PL320_MBOX is not set
CONFIG_ARM_SCPI_PROTOCOL=m
CONFIG_ARM_SCPI_POWER_DOMAIN=m
@@ -387,7 +391,6 @@ CONFIG_USB_MUSB_DUAL_ROLE=y
CONFIG_USB_MUSB_DSPS=m
# CONFIG_MUSB_PIO_ONLY is not set
# CONFIG_USB_MUSB_TUSB6010 is not set
-# CONFIG_USB_MUSB_UX500 is not set
CONFIG_USB_GPIO_VBUS=m
CONFIG_USB_CONFIGFS=m
CONFIG_USB_CONFIGFS_ACM=y
@@ -499,9 +502,6 @@ CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_WATCHDOG=m
-CONFIG_GPIOLIB=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_BACKLIGHT_GPIO=m
CONFIG_KEYBOARD_GPIO=m
CONFIG_KEYBOARD_GPIO_POLLED=m
@@ -575,13 +575,8 @@ CONFIG_VFIO_PLATFORM=m
CONFIG_VFIO_AMBA=m
# CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET is not set
-# CONFIG_CRYPTO_TEST is not set
# CONFIG_TRANSPARENT_HUGEPAGE is not set
# CONFIG_XEN is not set
-# CONFIG_DRM_RCAR_DU is not set
-# CONFIG_I2C_RCAR is not set
-# CONFIG_DRM_SHMOBILE is not set
-# CONFIG_I2C_SH_MOBILE is not set
# CONFIG_I2C_NOMADIK is not set
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_LOCK_STAT is not set
@@ -591,13 +586,10 @@ CONFIG_VFIO_AMBA=m
# CONFIG_DRM_ARMADA is not set
# CONFIG_COMMON_CLK_SI570 is not set
-# CONFIG_COMMON_CLK_QCOM is not set
-CONFIG_COMMON_CLK_SCPI=m
# CONFIG_ARM_PTDUMP is not set
# CONFIG_PATA_PLATFORM is not set
-# CONFIG_KEYBOARD_OMAP4 is not set
# CONFIG_KEYBOARD_BCM is not set
# CONFIG_PHY_SAMSUNG_USB2 is not set
# CONFIG_OMAP_GPMC_DEBUG is not set
@@ -683,6 +675,7 @@ CONFIG_NET_VENDOR_MELLANOX=y
# CONFIG_REGULATOR_TPS65023 is not set
# CONFIG_REGULATOR_TPS6507X is not set
# CONFIG_REGULATOR_TPS6524X is not set
+# CONFIG_REGULATOR_LTC3676 is not set
# drm
# CONFIG_DRM_VMWGFX is not set
@@ -702,6 +695,3 @@ CONFIG_NET_VENDOR_MELLANOX=y
# CONFIG_HISILICON_IRQ_MBIGEN is not set
# CONFIG_QRTR is not set
-
-# This Xilinx option is now built for arm64 as well as ARM
-CONFIG_XILINX_VDMA=m
diff --git a/config-arm64 b/config-arm64
index 0bc9b30bd..8cca6201c 100644
--- a/config-arm64
+++ b/config-arm64
@@ -23,6 +23,7 @@ CONFIG_ARCH_THUNDER=y
# CONFIG_ARCH_ZYNQMP is not set
# CONFIG_ARCH_UNIPHIER is not set
# CONFIG_ARCH_LG1K is not set
+# CONFIG_ARCH_ZX is not set
# Erratum
CONFIG_ARM64_ERRATUM_826319=y
@@ -36,6 +37,7 @@ CONFIG_CAVIUM_ERRATUM_22375=y
CONFIG_CAVIUM_ERRATUM_23144=y
CONFIG_CAVIUM_ERRATUM_23154=y
CONFIG_CAVIUM_ERRATUM_27456=y
+CONFIG_FSL_ERRATUM_A008585=y
# AMBA / VExpress
# CONFIG_RTC_DRV_PL030 is not set
@@ -45,9 +47,11 @@ CONFIG_ARM_SMMU_V3=y
CONFIG_NR_CPUS=256
CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_ARM64_64K_PAGES=y
+CONFIG_ARM64_VA_BITS_48=y
+CONFIG_ARM64_VA_BITS=48
+
CONFIG_ARM64_HW_AFDBM=y
CONFIG_ARM64_PAN=y
CONFIG_ARM64_LSE_ATOMICS=y
@@ -59,6 +63,7 @@ CONFIG_ARM64_UAO=y
# CONFIG_RANDOMIZE_BASE is not set
CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y
+CONFIG_ACPI_WATCHDOG=y
CONFIG_BCMA_POSSIBLE=y
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
@@ -75,7 +80,6 @@ CONFIG_HVC_DRIVER=y
CONFIG_HZ=100
CONFIG_KVM=y
-CONFIG_KVM_NEW_VGIC=y
CONFIG_RCU_FANOUT=64
CONFIG_SPARSE_IRQ=y
@@ -135,6 +139,7 @@ CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
# APM Xgene
CONFIG_POWER_RESET_XGENE=y
CONFIG_COMMON_CLK_XGENE=y
+CONFIG_XGENE_PMU=y
CONFIG_AHCI_XGENE=y
CONFIG_PHY_XGENE=y
CONFIG_NET_XGENE=m
@@ -149,6 +154,7 @@ CONFIG_PCI_XGENE_MSI=y
CONFIG_I2C_XGENE_SLIMPRO=m
CONFIG_XGENE_SLIMPRO_MBOX=m
CONFIG_MDIO_XGENE=m
+CONFIG_SENSORS_XGENE=m
# AMD Seattle
CONFIG_NET_SB1000=y
@@ -175,6 +181,8 @@ CONFIG_DRM_HISI_KIRIN=m
CONFIG_HISI_KIRIN_DW_DSI=m
CONFIG_MDIO_HISI_FEMAC=m
CONFIG_INPUT_HISI_POWERKEY=m
+# CONFIG_K3_DMA is not set
+# CONFIG_I2C_HIX5HD2 is not set
# Tegra
CONFIG_ARCH_TEGRA_132_SOC=y
@@ -184,19 +192,20 @@ CONFIG_MFD_MAX77620=y
CONFIG_PINCTRL_MAX77620=m
CONFIG_REGULATOR_MAX77620=m
CONFIG_GPIO_MAX77620=m
-CONFIG_TEGRA_ACONNECT=y
+CONFIG_TEGRA_ACONNECT=m
# AllWinner
-CONFIG_MACH_SUN50I=y
-CONFIG_SUNXI_RSB=m
CONFIG_AHCI_SUNXI=m
CONFIG_NET_VENDOR_ALLWINNER=y
-# CONFIG_SUN4I_EMAC is not set
CONFIG_SUN8I_EMAC=m
+# CONFIG_SUN4I_EMAC is not set
# CONFIG_MDIO_SUN4I is not set
# CONFIG_KEYBOARD_SUN4I_LRADC is not set
# CONFIG_TOUCHSCREEN_SUN4I is not set
# CONFIG_SERIO_SUN4I_PS2 is not set
+CONFIG_SUNXI_RSB=y
+CONFIG_MFD_AC100=m
+CONFIG_RTC_DRV_AC100=m
CONFIG_SUNXI_WATCHDOG=m
CONFIG_MFD_SUN6I_PRCM=y
CONFIG_IR_SUNXI=m
@@ -224,9 +233,26 @@ CONFIG_MFD_QCOM_RPM=m
CONFIG_PINCTRL_MSM=y
CONFIG_PINCTRL_MSM8916=y
CONFIG_PINCTRL_MSM8996=y
+CONFIG_PINCTRL_QDF2XXX=y
+CONFIG_COMMON_CLK_QCOM=m
+# CONFIG_MSM_GCC_8916 is not set
+# CONFIG_MSM_LCC_8960 is not set
+CONFIG_APQ_GCC_8084=m
+CONFIG_APQ_MMCC_8084=m
+CONFIG_MSM_GCC_8660=m
+CONFIG_MSM_GCC_8960=m
+CONFIG_MSM_MMCC_8960=m
+CONFIG_MSM_GCC_8974=m
+CONFIG_MSM_MMCC_8974=m
+CONFIG_MSM_GCC_8996=m
+CONFIG_MSM_MMCC_8996=m
+# CONFIG_MDM_GCC_9615 is not set
+# CONFIG_MDM_LCC_9615 is not set
CONFIG_REGULATOR_QCOM_RPM=m
CONFIG_REGULATOR_QCOM_SMD_RPM=m
CONFIG_QCOM_BAM_DMA=y
+CONFIG_QCOM_HIDMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
CONFIG_HWSPINLOCK_QCOM=m
CONFIG_HW_RANDOM_MSM=m
CONFIG_CRYPTO_DEV_QCE=m
@@ -264,12 +290,14 @@ CONFIG_QCOM_COINCELL=m
# CONFIG_PINCTRL_MSM8960 is not set
# CONFIG_PINCTRL_MDM9615 is not set
# CONFIG_PINCTRL_MSM8X74 is not set
-# CONFIG_PINCTRL_QDF2XXX is not set
# CONFIG_INPUT_PM8941_PWRKEY is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
# CONFIG_CHARGER_MANAGER is not set
# CONFIG_SENSORS_LTC2978_REGULATOR is not set
# CONFIG_QCOM_Q6V5_PIL is not set
+# CONFIG_QCOM_WCNSS_PIL is not set
+# CONFIG_QCOM_EBI2 is not set
+# CONFIG_QCOM_TSENS is not set
# mvebu
# CONFIG_MV_XOR_V2 is not set
@@ -283,7 +311,11 @@ CONFIG_NET_VENDOR_CAVIUM=y
CONFIG_THUNDER_NIC_PF=m
CONFIG_THUNDER_NIC_VF=m
CONFIG_THUNDER_NIC_BGX=m
+CONFIG_THUNDER_NIC_RGX=m
# CONFIG_LIQUIDIO is not set
+CONFIG_SPI_THUNDERX=m
+CONFIG_I2C_THUNDERX=m
+CONFIG_HW_RANDOM_CAVIUM=m
CONFIG_SATA_AHCI_PLATFORM=y
CONFIG_SATA_AHCI_SEATTLE=m
@@ -294,7 +326,7 @@ CONFIG_ND_BTT=m
CONFIG_ND_BLK=m
# CONFIG_PMIC_OPREGION is not set
-# CONFIG_DEBUG_RODATA is not set
+# CONFIG_DEBUG_ALIGN_RODATA is not set
CONFIG_DEBUG_SECTION_MISMATCH=y
@@ -310,9 +342,7 @@ CONFIG_DEBUG_SECTION_MISMATCH=y
# CONFIG_VGA_CONSOLE is not set
# CONFIG_HOTPLUG_PCI_SHPC is not set
-
# CONFIG_FSL_MC_BUS is not set
# CONFIG_FUJITSU_ES is not set
-# CONFIG_IMX_THERMAL is not set
# CONFIG_PNP_DEBUG_MESSAGES is not set
# CONFIG_BCM_PDC_MBOX is not set
diff --git a/config-armv7 b/config-armv7
index 0207f9ab9..ca762de9b 100644
--- a/config-armv7
+++ b/config-armv7
@@ -23,8 +23,6 @@ CONFIG_SOC_OMAP5=y
# CONFIG_SOC_DRA7XX is not set
CONFIG_SOC_OMAP3430=y
CONFIG_SOC_TI81XX=y
-# CONFIG_MACH_NOKIA_RX51 is not set
-# CONFIG_MACH_OMAP_LDP is not set
# CONFIG_MACH_OMAP3517EVM is not set
# CONFIG_MACH_OMAP3_PANDORA is not set
CONFIG_OMAP5_ERRATA_801819=y
@@ -146,8 +144,7 @@ CONFIG_PWM_OMAP_DMTIMER=m
# CONFIG_PWM_STMPE is not set
CONFIG_CRYPTO_DEV_OMAP_SHAM=m
-# Disable for the moment, terribly broken upstream
-# CONFIG_CRYPTO_DEV_OMAP_AES is not set
+CONFIG_CRYPTO_DEV_OMAP_AES=m
CONFIG_CRYPTO_DEV_OMAP_DES=m
CONFIG_HW_RANDOM_OMAP=m
CONFIG_HW_RANDOM_OMAP3_ROM=m
@@ -239,7 +236,6 @@ CONFIG_TI_CPSW_ALE=m
CONFIG_TI_CPTS=y
CONFIG_TI_EMIF=m
CONFIG_DRM_TILCDC=m
-# CONFIG_COMMON_CLK_TI_ADPLL is not set
# We only need this until the BBB dts is actually updated
CONFIG_DRM_TILCDC_SLAVE_COMPAT=y
CONFIG_SPI_DAVINCI=m
@@ -302,6 +298,8 @@ CONFIG_MSM_GCC_8974=m
CONFIG_MSM_MMCC_8974=m
CONFIG_MSM_GCC_8996=m
CONFIG_MSM_MMCC_8996=m
+# CONFIG_MDM_GCC_9615 is not set
+# CONFIG_MDM_LCC_9615 is not set
CONFIG_HW_RANDOM_MSM=m
CONFIG_I2C_QUP=m
CONFIG_SPI_QUP=m
@@ -313,7 +311,6 @@ CONFIG_QCOM_BAM_DMA=m
CONFIG_QCOM_GSBI=m
CONFIG_QCOM_PM=y
CONFIG_PHY_QCOM_APQ8064_SATA=m
-CONFIG_USB_DWC3_QCOM=m
CONFIG_CRYPTO_DEV_QCE=m
CONFIG_DRM_MSM=m
# CONFIG_DRM_MSM_DSI is not set
@@ -351,6 +348,8 @@ CONFIG_PCIE_QCOM=y
CONFIG_MTD_NAND_QCOM=m
# CONFIG_QCOM_Q6V5_PIL is not set
# CONFIG_MSM_IOMMU is not set
+# CONFIG_QCOM_WCNSS_PIL is not set
+# CONFIG_QCOM_TSENS is not set
# i.MX
# CONFIG_MXC_DEBUG_BOARD is not set
@@ -397,6 +396,7 @@ CONFIG_STMPE_I2C=y
CONFIG_SPI_IMX=m
CONFIG_SPI_FSL_QUADSPI=m
CONFIG_STMPE_SPI=y
+CONFIG_GPIO_TS4800=m
CONFIG_MFD_MC13XXX_SPI=m
CONFIG_MFD_STMPE=y
CONFIG_MTD_NAND_GPMI_NAND=m
diff --git a/config-armv7-generic b/config-armv7-generic
index f36ed38b0..ffc6b526a 100644
--- a/config-armv7-generic
+++ b/config-armv7-generic
@@ -21,9 +21,9 @@ CONFIG_ARM_THUMBEE=y
CONFIG_ARM_ASM_UNIFIED=y
CONFIG_ARM_PATCH_IDIV=y
CONFIG_ARM_CPU_TOPOLOGY=y
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
CONFIG_SWP_EMULATE=y
CONFIG_CACHE_L2X0=y
+CONFIG_CACHE_L2X0_PMU=y
CONFIG_HIGHPTE=y
CONFIG_AUTO_ZRELADDR=y
CONFIG_ATAGS=y
@@ -135,6 +135,7 @@ CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
+# CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
CONFIG_LSM_MMAP_MIN_ADDR=32768
@@ -166,10 +167,8 @@ CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_ARM_APPENDED_DTB=y
# General vexpress ARM drivers
-CONFIG_SERIO_AMBAKMI=m
CONFIG_SERIAL_AMBA_PL010=y
CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
-
CONFIG_RTC_DRV_PL030=y
CONFIG_AMBA_PL08X=y
CONFIG_SND_ARMAACI=m
@@ -191,6 +190,9 @@ CONFIG_MACH_SUN7I=y
CONFIG_MACH_SUN8I=y
CONFIG_MACH_SUN9I=y
CONFIG_SUNXI_CCU=y
+CONFIG_SUN6I_A31_CCU=y
+CONFIG_SUN8I_A23_CCU=y
+CONFIG_SUN8I_A33_CCU=y
CONFIG_SUN8I_H3_CCU=y
CONFIG_SUNXI_SRAM=y
CONFIG_DMA_SUN4I=m
@@ -235,7 +237,10 @@ CONFIG_CRYPTO_DEV_SUN4I_SS=m
CONFIG_SND_SUN4I_CODEC=m
CONFIG_SND_SUN4I_SPDIF=m
CONFIG_SND_SUN4I_I2S=m
-CONFIG_SUNXI_RSB=m
+CONFIG_SND_SOC_WM8978=m
+CONFIG_SUNXI_RSB=y
+CONFIG_MFD_AC100=m
+CONFIG_RTC_DRV_AC100=m
CONFIG_NVMEM_SUNXI_SID=m
# Exynos
@@ -254,7 +259,6 @@ CONFIG_SERIAL_SAMSUNG_CONSOLE=y
CONFIG_ARM_EXYNOS5440_CPUFREQ=m
CONFIG_ARM_EXYNOS_CPUIDLE=y
CONFIG_EXYNOS5420_MCPM=y
-CONFIG_ARM_EXYNOS5_BUS_DEVFREQ=m
# CONFIG_ARM_EXYNOS_BUS_DEVFREQ is not set
# CONFIG_EXYNOS5420_MCPM not set
CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU=y
@@ -319,19 +323,27 @@ CONFIG_VIDEO_EXYNOS4_FIMC_IS=m
CONFIG_VIDEO_EXYNOS4_ISP_DMA_CAPTURE=y
CONFIG_VIDEO_S5P_FIMC=m
CONFIG_VIDEO_S5P_MIPI_CSIS=m
+CONFIG_VIDEO_SAMSUNG_S5P_CEC=m
CONFIG_VIDEO_SAMSUNG_S5P_G2D=m
CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m
CONFIG_VIDEO_SAMSUNG_S5P_MFC=m
# CONFIG_VIDEO_SAMSUNG_S5P_TV is not set
CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m
+CONFIG_MFD_EXYNOS_LPASS=m
CONFIG_SND_SOC_SAMSUNG=m
CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF=m
CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=m
CONFIG_SND_SOC_SMDK_WM8994_PCM=m
CONFIG_SND_SOC_SNOW=m
CONFIG_SND_SOC_ODROIDX2=m
+CONFIG_SND_SOC_MAX98090=m
+CONFIG_SND_SOC_MAX98095=m
+CONFIG_SND_SAMSUNG_I2S=m
+CONFIG_SND_SAMSUNG_PCM=m
+CONFIG_SND_SAMSUNG_SPDIF=m
CONFIG_EXYNOS_AUDSS_CLK_CON=m
+CONFIG_MFD_EXYNOS_LPASS=m
# CONFIG_EXYNOS_IOMMU_DEBUG is not set
# CONFIG_SAMSUNG_PM_DEBUG is not set
# CONFIG_SAMSUNG_PM_CHECK is not set
@@ -446,17 +458,11 @@ CONFIG_MFD_TPS65912_SPI=y
# CONFIG_MFD_TPS80031 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_TWL6040_CORE is not set
-#
# Pin stuff
# CONFIG_PINCTRL_AMD is not set
# CONFIG_PINCTRL_SAMSUNG is not set
-# CONFIG_PINCTRL_MSM8X74 is not set
# CONFIG_PINCTRL_BCM281XX is not set
-# CONFIG_PINCTRL_APQ8064 is not set
-# CONFIG_PINCTRL_APQ8084 is not set
-# CONFIG_PINCTRL_MSM8960 is not set
-# CONFIG_PINCTRL_MSM8660 is not set
# CONFIG_PINCTRL_MDM9615 is not set
# CONFIG_PINCTRL_MSM8996 is not set
@@ -468,6 +474,7 @@ CONFIG_GPIO_MC33880=m
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
# CONFIG_GPIO_ZEVIO is not set
+CONFIG_GPIO_AXP209=m
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_GPIO_REGISTER=y
CONFIG_MDIO_BUS_MUX=m
@@ -478,7 +485,6 @@ CONFIG_INPUT_GPIO_BEEPER=m
CONFIG_INPUT_GPIO_TILT_POLLED=m
CONFIG_INPUT_MATRIXKMAP=m
CONFIG_KEYBOARD_MATRIX=m
-# CONFIG_GPIO_RCAR is not set
CONFIG_W1_MASTER_GPIO=m
# HW crypto and rng
@@ -526,6 +532,8 @@ CONFIG_EEPROM_93XX46=m
CONFIG_SND_ARM=y
CONFIG_SND_SOC_AC97_BUS=y
CONFIG_SND_SOC_AC97_CODEC=y
+# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set
+# CONFIG_SND_SOC_TEGRA_SGTL5000 is not set
# RTC
CONFIG_RTC_DRV_DS1305=m
@@ -592,16 +600,15 @@ CONFIG_GENERIC_ADC_BATTERY=m
CONFIG_BATTERY_SBS=m
# Sensors
+# non iio
CONFIG_SENSORS_AD7314=m
-CONFIG_SENSORS_ADCXX=m
CONFIG_SENSORS_ADS7871=m
-CONFIG_SENSORS_BH1780=m
CONFIG_SENSORS_GPIO_FAN=m
-CONFIG_SENSORS_ISL29018=m
-CONFIG_SENSORS_ISL29028=m
-CONFIG_SENSORS_LIS3_SPI=m
CONFIG_SENSORS_LM70=m
CONFIG_SENSORS_MAX1111=m
+# iio
+CONFIG_SENSORS_ISL29018=m
+CONFIG_SENSORS_ISL29028=m
CONFIG_MPL115=m
CONFIG_MPL3115=m
CONFIG_SI7005=m
@@ -634,7 +641,6 @@ CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_DAC124S085=m
CONFIG_LEDS_PWM=m
CONFIG_LEDS_SYSCON=y
-CONFIG_BMP085_SPI=m
CONFIG_MFD_SYSCON=y
CONFIG_GPIO_SYSCON=m
@@ -685,13 +691,8 @@ CONFIG_CROS_EC_CHARDEV=m
CONFIG_CROS_EC_PROTO=y
CONFIG_PWM_CROS_EC=m
-# This newly introduced mess needs to be fixed upstream :-(
CONFIG_STMMAC_PLATFORM=m
CONFIG_DWMAC_GENERIC=m
-# CONFIG_DWMAC_LPC18XX is not set
-# CONFIG_DWMAC_MESON is not set
-# CONFIG_DWMAC_SOCFPGA is not set
-# CONFIG_DWMAC_STI is not set
CONFIG_R8188EU=m
@@ -711,8 +712,6 @@ CONFIG_R8188EU=m
# CONFIG_DRM_IMX is not set
# CONFIG_DRM_STI is not set
# CONFIG_DRM_FSL_DCU is not set
-# CONFIG_AHCI_IMX is not set
-# CONFIG_IMX_THERMAL is not set
# CONFIG_TI_DAC7512 is not set
# Not needed on ARMv7
@@ -767,6 +766,7 @@ CONFIG_R8188EU=m
# CONFIG_QCOM_SPMI_TEMP_ALARM is not set
# CONFIG_SND_SOC_APQ8016_SBC is not set
# CONFIG_SND_SOC_TAS571X is not set
+# CONFIG_QCOM_EBI2 is not set
# CONFIG_VFIO_PLATFORM_AMDXGBE_RESET is not set
@@ -779,6 +779,4 @@ CONFIG_R8188EU=m
# CONFIG_DMADEVICES_DEBUG is not set
# CONFIG_SERIAL_SAMSUNG_DEBUG is not set
# CONFIG_OMAP2_DSS_DEBUG is not set
-# CONFIG_CRYPTO_DEV_UX500_DEBUG is not set
-# CONFIG_AB8500_DEBUG is not set
# CONFIG_DEBUG_LL is not set
diff --git a/config-armv7-lpae b/config-armv7-lpae
index fb7177b85..891087c3c 100644
--- a/config-armv7-lpae
+++ b/config-armv7-lpae
@@ -16,11 +16,9 @@ CONFIG_ARM_LPAE=y
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_ARM_VIRT_EXT=y
-CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
CONFIG_KVM=y
CONFIG_KVM_ARM_HOST=y
-CONFIG_KVM_NEW_VGIC=y
# CONFIG_XEN is not set
CONFIG_XEN_FBDEV_FRONTEND=y
@@ -43,9 +41,11 @@ CONFIG_XEN_WDT=m
# TI Keystone
CONFIG_KEYSTONE_USB_PHY=m
+CONFIG_TI_SYSCON_RESET=m
CONFIG_USB_DWC3_KEYSTONE=m
CONFIG_GPIO_DAVINCI=y
# CONFIG_I2C_DAVINCI is not set
+# CONFIG_MTD_NAND_OMAP2 is not set
CONFIG_TI_AEMIF=m
CONFIG_POWER_RESET_KEYSTONE=y
CONFIG_DAVINCI_WATCHDOG=m
diff --git a/config-debug b/config-debug
index a31d9076c..12abb86ab 100644
--- a/config-debug
+++ b/config-debug
@@ -50,6 +50,7 @@ CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_X86_PTDUMP=y
CONFIG_ARM64_PTDUMP=y
CONFIG_EFI_PGT_DUMP=y
+CONFIG_EFI_TEST=y
CONFIG_CAN_DEBUG_DEVICES=y
diff --git a/config-generic b/config-generic
index 1dcb2d71f..61e52e627 100644
--- a/config-generic
+++ b/config-generic
@@ -82,8 +82,6 @@ CONFIG_SLUB_CPU_PARTIAL=y
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_KASAN is not set
-# CONFIG_AD525X_DPOT is not set
-
#
# Loadable module support
#
@@ -115,11 +113,12 @@ CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_PCIE=y
# CONFIG_PCIE_DW_PLAT is not set
CONFIG_PCIE_DPC=y
+CONFIG_PCIE_PTM=y
+# CONFIG_NTB is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_ISA is not set
-# CONFIG_SCx200 is not set
#
# PCMCIA/CardBus support
@@ -200,6 +199,7 @@ CONFIG_INFINIBAND_USNIC=m
CONFIG_INFINIBAND_RDMAVT=m
CONFIG_RDMA_RXE=m
+# CONFIG_INFINIBAND_QEDR is not set
#
# Executable file formats
@@ -209,6 +209,7 @@ CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_SCRIPT=y
CONFIG_BINFMT_MISC=m
+# CONFIG_BINFMT_FLAT is not set
#
# Device Drivers
@@ -216,12 +217,13 @@ CONFIG_BINFMT_MISC=m
# CONFIG_COMMON_CLK_SI5351 is not set
# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_COMMON_CLK_CS2000_CP is not set
# CONFIG_COMMON_CLK_PWM is not set
-# CONFIG_COMMON_CLK_CDCE925 is not set
-# CONFIG_COMMON_CLK_OXNAS is not set
# CONFIG_COMMON_CLK_HI3519 is not set
-# CONFIG_SUNXI_CCU is not set
+# CONFIG_SUN6I_A31_CCU is not set
+# CONFIG_SUN8I_A23_CCU is not set
+# CONFIG_SUN8I_A33_CCU is not set
#
# Generic Driver Options
@@ -240,6 +242,11 @@ CONFIG_FW_CFG_SYSFS=m
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
+# EDAC
+CONFIG_EDAC=y
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_LEGACY_SYSFS=y
+
# CONFIG_CMA is not set
# CONFIG_DMA_CMA is not set
# CONFIG_FENCE_TRACE is not set
@@ -380,7 +387,6 @@ CONFIG_BLK_DEV_NULL_BLK=m
CONFIG_BLK_DEV_FD=m
# CONFIG_PARIDE is not set
CONFIG_ZRAM=m
-# CONFIG_ZRAM_LZ4_COMPRESS is not set
CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_CISS_SCSI_TAPE=y
@@ -457,6 +463,7 @@ CONFIG_SCSI_DH_RDAC=m
CONFIG_SCSI_DH_HP_SW=m
CONFIG_SCSI_DH_EMC=m
CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_SMARTPQI=m
#
# SCSI support type (disk, tape, CD-ROM)
@@ -604,11 +611,11 @@ CONFIG_SCSI_SNIC=m
CONFIG_ATA=y
CONFIG_ATA_BMDMA=y
+CONFIG_ATA_GENERIC=m
CONFIG_ATA_VERBOSE_ERROR=y
CONFIG_ATA_SFF=y
CONFIG_ATA_PIIX=y
# CONFIG_SATA_DWC is not set
-# CONFIG_SATA_HIGHBANK is not set
CONFIG_ATA_ACPI=y
CONFIG_BLK_DEV_SX8=m
CONFIG_PDC_ADMA=m
@@ -647,7 +654,6 @@ CONFIG_PATA_CS5535=m
CONFIG_PATA_CS5536=m
CONFIG_PATA_CYPRESS=m
CONFIG_PATA_EFAR=m
-CONFIG_ATA_GENERIC=m
CONFIG_PATA_HPT366=m
CONFIG_PATA_HPT37X=m
CONFIG_PATA_HPT3X2N=m
@@ -798,6 +804,7 @@ CONFIG_TCP_CONG_NV=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_YEAH=m
+CONFIG_TCP_CONG_BBR=m
CONFIG_TCP_MD5SIG=y
@@ -1114,6 +1121,7 @@ CONFIG_NFT_COMPAT=m
CONFIG_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_NUMGEN=m
CONFIG_NF_TABLES_IPV4=m
CONFIG_NF_DUP_IPV4=m
@@ -1129,6 +1137,10 @@ CONFIG_NF_TABLES_ARP=m
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_SET_RBTREE=m
+CONFIG_NFT_SET_HASH=m
+CONFIG_NFT_QUOTA=m
+
CONFIG_NF_TABLES_BRIDGE=m
#
@@ -1300,8 +1312,11 @@ CONFIG_NET_ACT_VLAN=m
CONFIG_NET_ACT_BPF=m
CONFIG_NET_ACT_CONNMARK=m
CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
CONFIG_NET_IFE_SKBMARK=m
CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
CONFIG_DCB=y
CONFIG_DNS_RESOLVER=m
@@ -1313,6 +1328,7 @@ CONFIG_BATMAN_ADV_MCAST=y
CONFIG_BATMAN_ADV_BATMAN_V=y
# CONFIG_BATMAN_ADV_DEBUG is not set
+# CONFIG_BATMAN_ADV_DEBUGFS is not set
CONFIG_OPENVSWITCH=m
CONFIG_OPENVSWITCH_GRE=y
CONFIG_OPENVSWITCH_VXLAN=y
@@ -1406,7 +1422,7 @@ CONFIG_L2TP_ETH=m
# CONFIG_CAIF is not set
-# CONFIG_AF_KCM is not set
+CONFIG_AF_KCM=m
CONFIG_LWTUNNEL=y
CONFIG_NET_DEVLINK=m
@@ -1433,6 +1449,8 @@ CONFIG_ACENIC=m
CONFIG_ALTERA_TSE=m
+# CONFIG_NET_VENDOR_AMAZON is not set
+
CONFIG_NET_VENDOR_AMD=y
CONFIG_PCNET32=m
CONFIG_AMD8111_ETH=m
@@ -1465,7 +1483,6 @@ CONFIG_CHELSIO_T4=m
CONFIG_CHELSIO_T4VF=m
CONFIG_CHELSIO_T4_DCB=y
# CONFIG_CHELSIO_T4_FCOE is not set
-# CONFIG_CHELSIO_T4_UWIRE is not set
CONFIG_NET_VENDOR_CISCO=y
CONFIG_ENIC=m
@@ -1496,7 +1513,6 @@ CONFIG_SUNDANCE=m
CONFIG_NET_VENDOR_EMULEX=y
CONFIG_BE2NET=m
-CONFIG_BE2NET_VXLAN=y
# CONFIG_BE2NET_HWMON is not set
CONFIG_NET_VENDOR_EXAR=y
@@ -1522,16 +1538,12 @@ CONFIG_IXGBEVF=m
CONFIG_IXGBE=m
CONFIG_IXGBE_DCA=y
CONFIG_IXGBE_DCB=y
-CONFIG_IXGBE_VXLAN=y
CONFIG_IXGBE_HWMON=y
CONFIG_I40E=m
-CONFIG_I40E_VXLAN=y
# CONFIG_I40E_DCB is not set
# CONFIG_I40E_FCOE is not set
-CONFIG_I40E_GENEVE=y
CONFIG_I40EVF=m
CONFIG_FM10K=m
-# CONFIG_FM10K_VXLAN is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_MARVELL=y
@@ -1582,15 +1594,12 @@ CONFIG_QLA3XXX=m
CONFIG_QLCNIC=m
CONFIG_QLCNIC_SRIOV=y
CONFIG_QLCNIC_DCB=y
-CONFIG_QLCNIC_VXLAN=y
CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
CONFIG_QED=m
CONFIG_QEDE=m
CONFIG_QED_SRIOV=y
-# CONFIG_QEDE_VXLAN is not set
-# CONFIG_QEDE_GENEVE is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
@@ -1673,6 +1682,7 @@ CONFIG_CICADA_PHY=m
CONFIG_DAVICOM_PHY=m
CONFIG_DP83640_PHY=m
CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=m
CONFIG_FIXED_PHY=y
CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_BCM_UNIMAC=m
@@ -1691,6 +1701,7 @@ CONFIG_REALTEK_PHY=m
CONFIG_SMSC_PHY=m
CONFIG_STE10XP=m
CONFIG_VITESSE_PHY=m
+CONFIG_XILINX_GMII2RGMII=m
CONFIG_MICREL_PHY=m
CONFIG_DP83867_PHY=m
CONFIG_DP83848_PHY=m
@@ -1711,8 +1722,6 @@ CONFIG_BCMGENET=m
CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
-CONFIG_BNX2X_VXLAN=y
-CONFIG_BNX2X_GENEVE=y
CONFIG_CNIC=m
CONFIG_FEALNX=m
CONFIG_ETHOC=m
@@ -1730,12 +1739,10 @@ CONFIG_JME=m
CONFIG_MLX4_CORE=m
CONFIG_MLX4_EN=m
CONFIG_MLX4_EN_DCB=y
-CONFIG_MLX4_EN_VXLAN=y
CONFIG_MLX4_INFINIBAND=m
CONFIG_MLX5_CORE=m
CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_EN_DCB=y
-CONFIG_MLX5_CORE_EN_VXLAN=y
CONFIG_MLX5_INFINIBAND=m
CONFIG_MLXSW_CORE=m
CONFIG_MLXSW_CORE_HWMON=y
@@ -1911,8 +1918,7 @@ CONFIG_IWLWIFI=m
CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
-# CONFIG_IWLWIFI_UAPSD is not set
-# CONFIG_IWLWIFI_PCIE_RTPM is not set
+CONFIG_IWLWIFI_PCIE_RTPM=y
CONFIG_IWLWIFI_DEBUG=y
CONFIG_IWLWIFI_DEBUGFS=y
@@ -1922,7 +1928,6 @@ CONFIG_IWLEGACY_DEBUGFS=y
CONFIG_IWL4965=y
CONFIG_IWL3945=m
# CONFIG_IWM is not set
-# CONFIG_IWLWIFI_DEBUG_EXPERIMENTAL_UCODE is not set
CONFIG_MAC80211_HWSIM=m
CONFIG_P54_COMMON=m
@@ -2005,6 +2010,7 @@ CONFIG_MWIFIEX_SDIO=m
CONFIG_MWIFIEX_PCIE=m
CONFIG_MWIFIEX_USB=m
+CONFIG_MAC802154=m
CONFIG_IEEE802154=m
CONFIG_IEEE802154_SOCKET=m
CONFIG_IEEE802154_6LOWPAN=m
@@ -2014,11 +2020,10 @@ CONFIG_IEEE802154_ATUSB=m
CONFIG_IEEE802154_CC2520=m
CONFIG_IEEE802154_AT86RF230=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
-# CONFIG_IEEE802154_ADF7242 is not set
-# CONFIG_IEEE802154_MRF24J40 is not set
+CONFIG_IEEE802154_ADF7242=m
+CONFIG_IEEE802154_MRF24J40=m
# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
-CONFIG_MAC802154=m
CONFIG_NET_MPLS_GSO=m
CONFIG_MPLS_ROUTING=m
CONFIG_MPLS_IPTUNNEL=m
@@ -2069,6 +2074,9 @@ CONFIG_HAMRADIO=y
CONFIG_AX25=m
CONFIG_AX25_DAMA_SLAVE=y
+#
+# Controller Area Network support
+#
CONFIG_CAN=m
CONFIG_CAN_RAW=m
CONFIG_CAN_BCM=m
@@ -2229,6 +2237,7 @@ CONFIG_BT_HCIUART_INTEL=y
CONFIG_BT_HCIUART_BCM=y
CONFIG_BT_HCIUART_QCA=y
CONFIG_BT_HCIUART_AG6XX=y
+CONFIG_BT_HCIUART_MRVL=y
CONFIG_BT_HCIDTL1=m
CONFIG_BT_HCIBT3C=m
CONFIG_BT_HCIBLUECARD=m
@@ -2244,6 +2253,7 @@ CONFIG_BT_MRVL_SDIO=m
CONFIG_BT_ATH3K=m
CONFIG_BT_QCA=m
CONFIG_BT_WILINK=m
+# CONFIG_BT_QCOMSMD is not set
#
# ISDN subsystem
@@ -2464,6 +2474,7 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_TCA8418 is not set
# CONFIG_KEYBOARD_OMAP4 is not set
# CONFIG_KEYBOARD_CAP11XX is not set
+# CONFIG_KEYBOARD_ADC is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
@@ -2575,6 +2586,8 @@ CONFIG_TOUCHSCREEN_ZFORCE=m
# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
# CONFIG_TOUCHSCREEN_TSC2004 is not set
# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set
+# CONFIG_TOUCHSCREEN_EKTF2127 is not set
+# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_E3X0_BUTTON=m
@@ -2599,6 +2612,7 @@ CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_KXTJ9=m
# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
# CONFIG_INPUT_PWM_BEEPER is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
CONFIG_RMI4_CORE=m
CONFIG_RMI4_I2C=m
@@ -2606,6 +2620,10 @@ CONFIG_RMI4_F11=y
CONFIG_RMI4_F12=y
CONFIG_RMI4_F30=y
CONFIG_RMI4_SPI=m
+# This throws off module filtering because it depends on V4L2 which is filtered
+# Leave this off until someone explicitly requests it and figure out what to
+# do then.
+# CONFIG_RMI4_F54 is not set
#
# Character devices
@@ -2623,7 +2641,6 @@ CONFIG_N_HDLC=m
CONFIG_N_GSM=m
# CONFIG_TRACE_SINK is not set
# CONFIG_DUMMY_IRQ is not set
-# CONFIG_IBM_ASM is not set
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
CONFIG_TCG_TPM=m
@@ -2660,7 +2677,7 @@ CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_8250_DW=y
# CONFIG_SERIAL_8250_INGENIC is not set
CONFIG_SERIAL_8250_RT288X=y
-CONFIG_SERIAL_8250_MID=y
+# CONFIG_SERIAL_8250_MID is not set
CONFIG_SERIAL_8250_MOXA=m
CONFIG_CYCLADES=m
# CONFIG_CYZ_INTR is not set
@@ -2696,7 +2713,6 @@ CONFIG_SERIAL_ARC_NR_PORTS=1
# CONFIG_SERIAL_IFX6X60 is not set
CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_PRINTER=m
CONFIG_LP_CONSOLE=y
@@ -2759,10 +2775,8 @@ CONFIG_I2C_NFORCE2=m
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
-CONFIG_I2C_PASEMI=m
CONFIG_I2C_PCA_PLATFORM=m
# CONFIG_I2C_PIIX4 is not set
-# CONFIG_SCx200_ACB is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
@@ -2783,9 +2797,6 @@ CONFIG_I2C_DIOLAN_U2C=m
#
# I2C Hardware Sensors Chip support
#
-CONFIG_SENSORS_ATK0110=m
-CONFIG_SENSORS_ABITUGURU=m
-CONFIG_SENSORS_ABITUGURU3=m
CONFIG_SENSORS_AD7414=m
CONFIG_SENSORS_AD7418=m
CONFIG_SENSORS_ADC128D818=m
@@ -2801,17 +2812,12 @@ CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_ADT7462=m
CONFIG_SENSORS_ADT7470=m
CONFIG_SENSORS_ADT7475=m
-CONFIG_SENSORS_APPLESMC=m
-CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
-CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DS1621=m
-# CONFIG_DS1682 is not set
CONFIG_SENSORS_F71805F=m
CONFIG_SENSORS_F71882FG=m
CONFIG_SENSORS_F75375S=m
-CONFIG_SENSORS_FSCHMD=m
CONFIG_SENSORS_FTSTEUTATES=m
CONFIG_SENSORS_G760A=m
CONFIG_SENSORS_G762=m
@@ -2825,9 +2831,6 @@ CONFIG_SENSORS_IBMAEM=m
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_IT87=m
-CONFIG_SENSORS_K8TEMP=m
-CONFIG_SENSORS_K10TEMP=m
-CONFIG_SENSORS_LIS3LV02D=m
CONFIG_SENSORS_LIS3_I2C=m
# CONFIG_SENSORS_LIS3_SPI is not set
CONFIG_SENSORS_LM63=m
@@ -2871,14 +2874,7 @@ CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_TC74=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_TMP401=m
-CONFIG_APDS9802ALS=m
-CONFIG_ISL29020=m
-CONFIG_ISL29003=m
-CONFIG_SENSORS_BH1770=m
-CONFIG_SENSORS_APDS990X=m
-CONFIG_SENSORS_TSL2550=m
CONFIG_SENSORS_VIA686A=m
-CONFIG_SENSORS_VIA_CPUTEMP=m
CONFIG_SENSORS_VT1211=m
CONFIG_SENSORS_VT8231=m
CONFIG_SENSORS_W83627HF=m
@@ -2905,7 +2901,6 @@ CONFIG_SENSORS_ASC7621=m
CONFIG_SENSORS_EMC1403=m
CONFIG_SENSORS_TMP102=m
CONFIG_SENSORS_LTC4261=m
-# CONFIG_SENSORS_BH1780 is not set
# CONFIG_SENSORS_JC42 is not set
# CONFIG_SENSORS_SMM665 is not set
# CONFIG_SENSORS_EMC2103 is not set
@@ -2937,6 +2932,7 @@ CONFIG_SENSORS_MAX1111=m
CONFIG_SENSORS_POWR1220=m
CONFIG_SENSORS_AD7314=m
+# PMbus sensors
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_MAX16064=m
@@ -2951,7 +2947,18 @@ CONFIG_SENSORS_MAX197=m
CONFIG_SENSORS_MAX31790=m
CONFIG_SENSORS_TPS40422=m
-# CONFIG_NTB is not set
+# Misc Sensors
+# CONFIG_AD525X_DPOT is not set
+CONFIG_APDS9802ALS=m
+CONFIG_ISL29003=m
+CONFIG_ISL29020=m
+CONFIG_SENSORS_BH1770=m
+CONFIG_SENSORS_APDS990X=m
+CONFIG_SENSORS_LIS3LV02D=m
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
# Industrial I/O subsystem configuration
CONFIG_IIO=m
@@ -3115,7 +3122,6 @@ CONFIG_PA12203001=m
# CONFIG_TSYS01 is not set
# CONFIG_TSYS02D is not set
# CONFIG_HI8435 is not set
-# CONFIG_IMX7D_ADC is not set
# CONFIG_AM2315 is not set
# CONFIG_BMI160_I2C is not set
# CONFIG_BMI160_SPI is not set
@@ -3129,6 +3135,17 @@ CONFIG_PA12203001=m
# CONFIG_MCP4131 is not set
# CONFIG_HP03 is not set
# CONFIG_HP206C is not set
+# CONFIG_DMARD06 is not set
+# CONFIG_DMARD09 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_TI_ADC12138 is not set
+# CONFIG_TI_ADC161S626 is not set
+# CONFIG_AD8801 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_AK8974 is not set
+# CONFIG_ZPA2326 is not set
+# CONFIG_MAXIM_THERMOCOUPLE is not set
+# CONFIG_LTC2485 is not set
# staging IIO drivers
# CONFIG_AD7291 is not set
@@ -3147,11 +3164,8 @@ CONFIG_PA12203001=m
# CONFIG_IIO_SIMPLE_DUMMY is not set
# CONFIG_ADIS16201 is not set
# CONFIG_ADIS16203 is not set
-# CONFIG_ADIS16204 is not set
# CONFIG_ADIS16209 is not set
-# CONFIG_ADIS16220 is not set
# CONFIG_ADIS16240 is not set
-# CONFIG_LIS3L02DQ is not set
# CONFIG_SCA3000 is not set
# CONFIG_AD7780 is not set
# CONFIG_AD7816 is not set
@@ -3168,16 +3182,10 @@ CONFIG_PA12203001=m
# CONFIG_AD2S1200 is not set
# CONFIG_AD2S1210 is not set
+# End sensors
-
-# CONFIG_HMC6352 is not set
-# CONFIG_BMP085 is not set
-# CONFIG_BMP085_I2C is not set
-# CONFIG_PCH_PHUB is not set
# CONFIG_USB_SWITCH_FSA9480 is not set
# CONFIG_SRAM is not set
-# CONFIG_TI_DAC7512 is not set
-# CONFIG_BMP085_SPI is not set
# CONFIG_MMA7455_SPI is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3215,7 +3223,6 @@ CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_SI=m
-# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set
CONFIG_IPMI_SSIF=m
CONFIG_IPMI_POWEROFF=m
@@ -3226,13 +3233,14 @@ CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_WATCHDOG_SYSFS=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
CONFIG_SOFT_WATCHDOG=m
+CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_EUROTECH_WDT is not set
CONFIG_IB700_WDT=m
-# CONFIG_SCx200_WDT is not set
# CONFIG_60XX_WDT is not set
CONFIG_W83877F_WDT=m
CONFIG_W83627HF_WDT=m
@@ -3289,6 +3297,7 @@ CONFIG_RTC_DRV_CMOS=y
CONFIG_RTC_DRV_ABX80X=m
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_DS1307_HWMON=y
+# CONFIG_RTC_DRV_DS1307_CENTURY is not set
CONFIG_RTC_DRV_DS1511=m
CONFIG_RTC_DRV_DS1553=m
CONFIG_RTC_DRV_DS1685_FAMILY=m
@@ -3365,25 +3374,9 @@ CONFIG_R3964=m
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
-#
-# AGP Support
-#
-CONFIG_AGP=y
-CONFIG_AGP_ALI=y
-CONFIG_AGP_ATI=y
-CONFIG_AGP_AMD=y
-CONFIG_AGP_AMD64=y
-CONFIG_AGP_INTEL=y
-CONFIG_AGP_NVIDIA=y
-CONFIG_AGP_SIS=y
-CONFIG_AGP_SWORKS=y
-CONFIG_AGP_VIA=y
-CONFIG_AGP_EFFICEON=y
-
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
-
CONFIG_DRM=m
CONFIG_DRM_ANALOGIX_ANX78XX=m
# CONFIG_DRM_ARCPGU is not set
@@ -3399,6 +3392,7 @@ CONFIG_DRM_RADEON_USERPTR=y
CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMD_ACP=y
# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
CONFIG_DRM_AMD_POWERPLAY=y
@@ -3431,12 +3425,15 @@ CONFIG_DRM_VIRTIO_GPU=m
# CONFIG_DRM_PANEL is not set
# CONFIG_DRM_PANEL_SIMPLE is not set
# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
+# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set
CONFIG_DRM_VGEM=m
-# CONFIG_DRM_MALI_DISPLAY is not set
# CONFIG_DRM_SII902X is not set
# CONFIG_DRM_TOSHIBA_TC358767 is not set
# CONFIG_DRM_I2C_ADV7533 is not set
+# CONFIG_DRM_DUMB_VGA_DAC is not set
+# CONFIG_DRM_LEGACY is not set
+# CONFIG_SW_SYNC is not set
#
# PCMCIA character devices
@@ -3551,7 +3548,6 @@ CONFIG_VIDEO_SAA7164=m
CONFIG_VIDEO_TM6000=m
CONFIG_VIDEO_TM6000_ALSA=m
CONFIG_VIDEO_TM6000_DVB=m
-# CONFIG_VIDEO_TIMBERDALE is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_TW68 is not set
# CONFIG_VIDEO_VIVID is not set
@@ -3560,6 +3556,7 @@ CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_TW686X=m
# Staging version?
# CONFIG_VIDEO_TW686X_KH is not set
+# CONFIG_VIDEO_TW5864 is not set
CONFIG_USB_VIDEO_CLASS=m
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
@@ -3849,12 +3846,10 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_SEQUENCER=y
CONFIG_SND_SEQUENCER_OSS=y
-CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_RTCTIMER=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_MAX_CARDS=32
# CONFIG_SND_SUPPORT_OLD_API is not set
@@ -4078,10 +4073,9 @@ CONFIG_USB_UAS=m
#
# USB Human Interface Devices (HID)
#
-CONFIG_USB_HID=y
-
CONFIG_HID=y
+CONFIG_USB_HID=y
CONFIG_I2C_HID=m
CONFIG_HID_BATTERY_STRENGTH=y
# debugging default is y upstream now
@@ -4423,6 +4417,7 @@ CONFIG_USB_ISIGHTFW=m
CONFIG_USB_YUREX=m
CONFIG_USB_EZUSB_FX2=m
CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_HSIC_USB4604=m
# CONFIG_USB_LINK_LAYER_TEST is not set
CONFIG_USB_CHAOSKEY=m
CONFIG_UCSI=m
@@ -4457,6 +4452,7 @@ CONFIG_USB_XUSBATM=m
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
CONFIG_USB_LED_TRIG=y
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -4549,6 +4545,7 @@ CONFIG_MFD_VIPERBOARD=m
# CONFIG_MFD_TC3589X is not set
# CONFIG_MFD_TC6393XB is not set
# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_TI_LP873X is not set
# CONFIG_MFD_TIMBERDALE is not set
# CONFIG_MFD_TPS65086 is not set
# CONFIG_MFD_TPS65090 is not set
@@ -4568,10 +4565,12 @@ CONFIG_MFD_VIPERBOARD=m
# CONFIG_MFD_WM8350 is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM8994 is not set
+# CONFIG_MFD_EXYNOS_LPASS is not set
# CONFIG_TPS6507X is not set
# CONFIG_TS4800_IRQ is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_TWL6040_CORE is not set
+# CONFIG_QCOM_EBI2 is not set
#
# File systems
@@ -4587,7 +4586,7 @@ CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
-# CONFIG_EXT4_ENCRYPTION is not set
+CONFIG_EXT4_ENCRYPTION=y
CONFIG_JBD2=y
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
@@ -4747,8 +4746,7 @@ CONFIG_NFSD_PNFS=y
CONFIG_NFSD_BLOCKLAYOUT=y
CONFIG_NFSD_SCSILAYOUT=y
CONFIG_NFSD_V4_SECURITY_LABEL=y
-# This is labeled as 'bare minimum' and 'not for production'
-# CONFIG_NFSD_FLEXFILELAYOUT is not set
+CONFIG_NFSD_FLEXFILELAYOUT=y
CONFIG_NFS_FSCACHE=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_PNFS_OBJLAYOUT=m
@@ -4841,11 +4839,10 @@ CONFIG_UNIXWARE_DISKLABEL=y
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_CMDLINE_PARTITION is not set
-CONFIG_NLS=y
-
#
# Native Language Support
#
+CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=m
@@ -4952,6 +4949,8 @@ CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_DEBUG_LIST=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DEBUG_DEVRES=y
+# This breaks so many things right now :(
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
CONFIG_DEBUG_RODATA_TEST=y
CONFIG_DEBUG_NX_TEST=m
CONFIG_DEBUG_SET_MODULE_RONX=y
@@ -4959,7 +4958,6 @@ CONFIG_DEBUG_BOOT_PARAMS=y
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_VM_VMACACHE is not set
# CONFIG_DEBUG_VM_RB is not set # revisit this if performance isn't horrible
-# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_LOCKUP_DETECTOR=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
@@ -5026,7 +5024,6 @@ CONFIG_SECCOMP=y
CONFIG_STRICT_DEVMEM=y
CONFIG_IO_STRICT_DEVMEM=y
-
#
# Cryptographic options
#
@@ -5103,6 +5100,7 @@ CONFIG_CRYPTO_ANSI_CPRNG=m
# CONFIG_CRYPTO_DRBG_MENU is not set
CONFIG_CRYPTO_DEV_HIFN_795X=m
CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_CRYPTO_DEV_CHELSIO=m
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_RSA=m
@@ -5117,10 +5115,6 @@ CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_KEYWRAP=m
-
-
-# Random number generation
-
#
# Library routines
#
@@ -5289,8 +5283,6 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-
-
# CONFIG_MOUSE_ATIXL is not set
CONFIG_RADIO_ADAPTERS=y
@@ -5355,7 +5347,6 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_SOC_PCM512x_SPI is not set
# CONFIG_SND_SOC_PCM179X_I2C is not set
# CONFIG_SND_SOC_PCM179X_SPI is not set
-# CONFIG_SND_SOC_QCOM is not set
# CONFIG_SND_SOC_SGTL5000 is not set
# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
# CONFIG_SND_SOC_TAS5086 is not set
@@ -5398,7 +5389,6 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_SOC_TLV320AIC31XX is not set
# CONFIG_SND_SOC_TAS2552 is not set
# CONFIG_SND_SOC_CS4265 is not set
-# CONFIG_SND_SOC_IMX_ES8328 is not set
# CONFIG_SND_SOC_FSL_ASOC_CARD is not set
# CONFIG_SND_EDMA_SOC is not set
# CONFIG_SND_SOC_ARNDALE_RT5631_ALC5631 is not set
@@ -5424,7 +5414,8 @@ CONFIG_SND_SOC_AMD_ACP=m
# CONFIG_SND_SOC_MAX98504 is not set
# CONFIG_SND_SOC_MAX9860 is not set
# CONFIG_SND_SOC_WM8985 is not set
-
+# CONFIG_SND_SOC_NAU8810 is not set
+# CONFIG_SND_SIMPLE_SCU_CARD is not set
CONFIG_BALLOON_COMPACTION=y
CONFIG_COMPACTION=y
@@ -5444,8 +5435,6 @@ CONFIG_LEDS_CLASS_FLASH=m
# CONFIG_LEDS_TLC591XX is not set
# CONFIG_LEDS_KTD2692 is not set
# CONFIG_LEDS_AAT1290 is not set
-#
-CONFIG_LEDS_DELL_NETBOOKS=m
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_LM355x is not set
# CONFIG_LEDS_OT200 is not set
@@ -5457,7 +5446,6 @@ CONFIG_LEDS_DELL_NETBOOKS=m
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
# CONFIG_LEDS_TRIGGER_CPU is not set
@@ -5481,11 +5469,14 @@ CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_WM8350=m
CONFIG_LEDS_WM831X_STATUS=m
# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_IS31FL319X is not set
# Do not enable the below. They selects the fw user helper, which we don't want
# CONFIG_LEDS_LP5521 is not set
# CONFIG_LEDS_LP5523 is not set
# CONFIG_LEDS_LP5562 is not set
# CONFIG_LEDS_LP55XX_COMMON is not set
+# CONFIG_LEDS_PM8058 is not set
+CONFIG_LEDS_MLXCPLD=m
CONFIG_DMADEVICES=y
CONFIG_DMA_ENGINE=y
@@ -5514,6 +5505,7 @@ CONFIG_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_SCHED_TRACER=y
+CONFIG_HWLAT_TRACER=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_TRACER_SNAPSHOT=y
# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
@@ -5532,7 +5524,7 @@ CONFIG_RING_BUFFER_BENCHMARK=m
CONFIG_FUNCTION_TRACER=y
CONFIG_STACK_TRACER=y
# CONFIG_FUNCTION_GRAPH_TRACER is not set
-# CONFIG_HIST_TRIGGERS is not set
+CONFIG_HIST_TRIGGERS=y
CONFIG_KPROBES=y
CONFIG_KPROBE_EVENT=y
@@ -5555,6 +5547,7 @@ CONFIG_KS0108_PORT=0x378
CONFIG_KS0108_DELAY=2
CONFIG_CFAG12864B=y
CONFIG_CFAG12864B_RATE=20
+# CONFIG_IMG_ASCII_LCD is not set
# CONFIG_PHANTOM is not set
@@ -5684,6 +5677,8 @@ CONFIG_NET_DSA_HWMON=y
CONFIG_NET_DSA_MV88E6060=m
CONFIG_NET_DSA_MV88E6XXX=m
CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_QCA8K=m
CONFIG_B53=m
CONFIG_B53_SPI_DRIVER=m
@@ -5721,9 +5716,12 @@ CONFIG_UWB_I1480U=m
CONFIG_STAGING=y
# CONFIG_ANDROID is not set
+# CONFIG_GREYBUS is not set
# CONFIG_STAGING_BOARD is not set
CONFIG_STAGING_MEDIA=y
-# CONFIG_MEDIA_CEC is not set
+CONFIG_MEDIA_CEC=y
+# CONFIG_MEDIA_CEC_DEBUG is not set
+CONFIG_USB_PULSE8_CEC=m
# CONFIG_DVB_AS102 is not set
# CONFIG_SLICOSS is not set
# CONFIG_VIDEO_DT3155 is not set
@@ -5763,8 +5761,9 @@ CONFIG_USBIP_CORE=m
CONFIG_USBIP_VHCI_HCD=m
CONFIG_USBIP_HOST=m
CONFIG_USBIP_VUDC=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
# CONFIG_USBIP_DEBUG is not set
-# CONFIG_INTEL_MEI is not set
# CONFIG_VT6655 is not set
# CONFIG_IPACK_BUS is not set
# CONFIG_LUSTRE_FS is not set
@@ -5779,7 +5778,6 @@ CONFIG_USBIP_VUDC=m
# CONFIG_DVB_MN88473 is not set
# CONFIG_FB_TFT is not set
# CONFIG_FB_SM750 is not set
-# CONFIG_STAGING_RDMA is not set
# CONFIG_WILC1000_SDIO is not set
# CONFIG_WILC1000_SPI is not set
# CONFIG_LNET is not set
@@ -5838,6 +5836,7 @@ CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
# CONFIG_EXTCON is not set
# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
# CONFIG_MEMORY is not set
CONFIG_PPS=m
@@ -5874,6 +5873,7 @@ CONFIG_I2C_DESIGNWARE_PCI=m
# CONFIG_W1_MASTER_GPIO is not set
# CONFIG_LEDS_GPIO is not set
CONFIG_GPIO_SYSFS=y
+# CONFIG_GPIO_MOCKUP is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
@@ -5899,8 +5899,6 @@ CONFIG_GPIO_VIPERBOARD=m
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_SX150X is not set
# CONFIG_GPIO_GRGPIO is not set
-# CONFIG_GPIO_PL061 is not set
-# CONFIG_GPIO_BCM_KONA is not set
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_74X164 is not set
@@ -5916,12 +5914,10 @@ CONFIG_GPIO_VIPERBOARD=m
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_MPC8XXX is not set
# CONFIG_GPIO_PISOSR is not set
-# CONFIG_GPIO_TS4800 is not set
# CONFIG_GPIO_TPS65218 is not set
# CONFIG_GPIO_104_DIO_48E is not set
# CONFIG_GPIO_WS16C48 is not set
-
-# FIXME: Why?
+# CONFIG_GPIO_TS4900 is not set
CONFIG_TEST_KSTRTOX=y
CONFIG_XZ_DEC=y
@@ -5976,6 +5972,7 @@ CONFIG_PSTORE_RAM=m
CONFIG_CHROME_PLATFORMS=y
# CONFIG_CROS_KBD_LED_BACKLIGHT is not set
+# CONFIG_GOOGLE_FIRMWARE is not set
CONFIG_BCMA=m
CONFIG_BCMA_BLOCKIO=y
@@ -5986,18 +5983,14 @@ CONFIG_BCMA_DRIVER_GMAC_CMN=y
CONFIG_BCMA_DRIVER_GPIO=y
# CONFIG_BCMA_DEBUG is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
-# CONFIG_INTEL_MID_PTI is not set
CONFIG_IOMMU_SUPPORT=y
-# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
-# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
# CONFIG_MAILBOX is not set
# CONFIG_ALTERA_MBOX is not set
# CONFIG_MAILBOX_TEST is not set
-# CONFIG_RESET_CONTROLLER is not set
# CONFIG_TI_SYSCON_RESET is not set
+
CONFIG_FMC=m
CONFIG_FMC_FAKEDEV=m
CONFIG_FMC_TRIVIAL=m
@@ -6015,9 +6008,6 @@ CONFIG_POWERCAP=y
CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
-# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
-# CONFIG_ASM9260_TIMER is not set
-
# CONFIG_HMC_DRV is not set
# CONFIG_PM_DEVFREQ is not set
diff --git a/config-nodebug b/config-nodebug
index 4bd461d8f..0adda7aa3 100644
--- a/config-nodebug
+++ b/config-nodebug
@@ -51,6 +51,7 @@ CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_X86_PTDUMP=y
# CONFIG_ARM64_PTDUMP is not set
# CONFIG_EFI_PGT_DUMP is not set
+# CONFIG_EFI_TEST is not set
# CONFIG_CAN_DEBUG_DEVICES is not set
diff --git a/config-powerpc64 b/config-powerpc64
index 0edf37b51..5729ee5d0 100644
--- a/config-powerpc64
+++ b/config-powerpc64
@@ -76,7 +76,6 @@ CONFIG_MACINTOSH_DRIVERS=y
CONFIG_ADB=y
CONFIG_ADB_PMU=y
CONFIG_ADB_PMU_LED=y
-CONFIG_ADB_PMU_LED_IDE=y
CONFIG_I2C_POWERMAC=y
CONFIG_PMAC_RACKMETER=m
CONFIG_PMAC_APM_EMU=m
@@ -97,6 +96,7 @@ CONFIG_WINDFARM_PM121=y
CONFIG_CPU_FREQ_PMAC64=y
CONFIG_SERIAL_PMACZILOG=m
# CONFIG_SERIAL_PMACZILOG_TTYS is not set
+CONFIG_AGP=y
CONFIG_AGP_UNINORTH=y
# CONFIG_PMAC_BACKLIGHT_LEGACY is not set
diff --git a/config-powerpc64-generic b/config-powerpc64-generic
index fcd3a49a4..d67acd95a 100644
--- a/config-powerpc64-generic
+++ b/config-powerpc64-generic
@@ -148,7 +148,6 @@ CONFIG_IO_EVENT_IRQ=y
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
-# CONFIG_GEN_RTC_X is not set
CONFIG_RTC_DRV_GENERIC=y
# CONFIG_CMDLINE_BOOL is not set
@@ -184,6 +183,7 @@ CONFIG_FB_MATROX_G=y
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
+# CONFIG_AGP is not set
# CONFIG_SND_SOC is not set
# CONFIG_INPUT_PCSPKR is not set
@@ -222,11 +222,6 @@ CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
# CONFIG_MACINTOSH_DRIVERS is not set
# CONFIG_EDAC_CPC925 is not set
-
-CONFIG_EDAC=y
-CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_LEGACY_SYSFS=y
-
# CONFIG_AXON_RAM is not set
CONFIG_SUSPEND_FREEZER=y
@@ -310,7 +305,6 @@ CONFIG_PPC_EMULATED_STATS=y
CONFIG_SWIOTLB=y
CONFIG_PPC_DISABLE_WERROR=y
-# CONFIG_STRICT_MM_TYPECHECKS is not set
# CONFIG_XILINX_LL_TEMAC is not set
# CONFIG_XILINX_EMACLITE is not set
diff --git a/config-s390x b/config-s390x
index e235e9e01..8ead330ec 100644
--- a/config-s390x
+++ b/config-s390x
@@ -1,7 +1,5 @@
CONFIG_64BIT=y
-# CONFIG_MARCH_Z900 is not set
-CONFIG_MARCH_Z9_109=y
-# CONFIG_MARCH_Z990 is not set
+CONFIG_MARCH_Z10=y
CONFIG_NR_CPUS=64
CONFIG_COMPAT=y
@@ -223,7 +221,6 @@ CONFIG_SCM_BLOCK_CLUSTER_WRITE=y
CONFIG_PCI=y
CONFIG_PCI_NR_FUNCTIONS=64
-CONFIG_PCI_NR_MSI=256
CONFIG_HOTPLUG_PCI_CPCI=y
CONFIG_HOTPLUG_PCI_SHPC=y
CONFIG_HOTPLUG_PCI_S390=y
@@ -253,8 +250,7 @@ CONFIG_HOTPLUG_PCI_S390=y
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
-# CONFIG_GAMEPORT_EMU10K1 is not set
-# CONFIG_GAMEPORT_FM801 is not set
+# CONFIG_GAMEPORT is not set
# CONFIG_SERIO is not set
# CONFIG_ACCESSIBILITY is not set
diff --git a/config-x86-32-generic b/config-x86-32-generic
index ddc9f3047..7cf7362e5 100644
--- a/config-x86-32-generic
+++ b/config-x86-32-generic
@@ -22,6 +22,7 @@ CONFIG_M686=y
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
+# CONFIG_SCx200 is not set
# CONFIG_STA2X11 is not set
CONFIG_NR_CPUS=32
@@ -56,8 +57,6 @@ CONFIG_FB_SSD1307=m
# CONFIG_PCI_GOMMCONFIG is not set
CONFIG_PCI_GOANY=y
-CONFIG_IBM_ASM=m
-
#
# APM (Advanced Power Management) BIOS Support
#
@@ -68,7 +67,6 @@ CONFIG_APM_CPU_IDLE=y
# CONFIG_APM_DISPLAY_BLANK is not set
# CONFIG_APM_ALLOW_INTS is not set
-
# CONFIG_X86_POWERNOW_K6 is not set
CONFIG_X86_POWERNOW_K7=y
# CONFIG_X86_GX_SUSPMOD is not set
@@ -82,7 +80,6 @@ CONFIG_X86_LONGRUN=y
# e_powersaver is dangerous
# CONFIG_X86_E_POWERSAVER is not set
-
# CONFIG_4KSTACKS is not set
CONFIG_PCI_DIRECT=y
@@ -98,7 +95,7 @@ CONFIG_I2C_ALI1563=m
CONFIG_I2C_SIS5595=m
CONFIG_I2C_SIS630=m
-CONFIG_SCx200_ACB=m
+# CONFIG_SCx200_ACB is not set
# CONFIG_X86_REBOOTFIXUPS is not set
@@ -118,19 +115,16 @@ CONFIG_PHYSICAL_START=0x400000
# CONFIG_KEXEC_JUMP is not set
CONFIG_CRYPTO_AES_586=y
-CONFIG_CRYPTO_DEV_GEODE=m
CONFIG_CRYPTO_TWOFISH_586=m
CONFIG_VIDEO_CAFE_CCIC=m
-
CONFIG_MTD_NAND_CAFE=m
CONFIG_LBDAF=y
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-
CONFIG_OLPC=y
CONFIG_BATTERY_OLPC=y
CONFIG_MOUSE_PS2_OLPC=y
@@ -138,17 +132,17 @@ CONFIG_OLPC_XO1_PM=y
CONFIG_OLPC_XO15_SCI=y
CONFIG_OLPC_XO1_RTC=y
CONFIG_OLPC_XO1_SCI=y
-# CONFIG_ALIX is not set
-# staging
+CONFIG_CRYPTO_DEV_GEODE=m
# CONFIG_FB_OLPC_DCON is not set
+# CONFIG_ALIX is not set
+
# CONFIG_SPARSE_IRQ is not set
CONFIG_RCU_FANOUT=32
# CONFIG_X86_ANCIENT_MCE is not set
-
CONFIG_I2C_PXA=m
# CONFIG_INTEL_TXT is not set
@@ -167,8 +161,6 @@ CONFIG_X86_32_IRIS=m
CONFIG_POWER_RESET_GPIO=y
# CONFIG_POWER_RESET_GPIO_RESTART is not set
-
-
CONFIG_MTD_OF_PARTS=y
CONFIG_MTD_PHYSMAP_OF=m
CONFIG_SERIAL_OF_PLATFORM=m
@@ -206,10 +198,7 @@ CONFIG_OF=y
# CONFIG_MLX5_INFINIBAND is not set
# CONFIG_PINCTRL_SINGLE is not set
# CONFIG_PINCTRL_BCM281XX is not set
-# CONFIG_PINCTRL_APQ8064 is not set
-# CONFIG_PINCTRL_IPQ8064 is not set
# CONFIG_COMMON_CLK_SI570 is not set
-# CONFIG_COMMON_CLK_QCOM is not set
# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
# CONFIG_KEYBOARD_BCM is not set
diff --git a/config-x86-generic b/config-x86-generic
index a44190bd7..8620085d3 100644
--- a/config-x86-generic
+++ b/config-x86-generic
@@ -19,7 +19,6 @@ CONFIG_MICROCODE_AMD=y
CONFIG_PERF_EVENTS_AMD_POWER=m
CONFIG_PERF_EVENTS_INTEL_UNCORE=m
CONFIG_PERF_EVENTS_INTEL_RAPL=m
-CONFIG_PERF_EVENTS_CSTATE=m
CONFIG_PERF_EVENTS_INTEL_CSTATE=m
CONFIG_X86_MSR=y
@@ -93,7 +92,6 @@ CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_TOSHIBA=m
CONFIG_ACPI_VIDEO=m
-CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
CONFIG_ACPI_CONFIGFS=m
# FIXME: Next two are deprecated. Remove them when they disappear upstream
# CONFIG_ACPI_PROCFS_POWER is not set
@@ -122,7 +120,7 @@ CONFIG_GPIO_CRYSTAL_COVE=y
CONFIG_AXP288_ADC=y
CONFIG_AXP288_FUEL_GAUGE=y
CONFIG_PWM_CRC=y
-
+CONFIG_GPIO_WHISKEY_COVE=y
CONFIG_X86_INTEL_PSTATE=y
CONFIG_X86_ACPI_CPUFREQ=m
@@ -156,9 +154,12 @@ CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_BIOS=y
CONFIG_VMD=m
+CONFIG_INTEL_BXT_PMIC_THERMAL=m
+
CONFIG_HOTPLUG_PCI_COMPAQ=m
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_IBM_ASM=m
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
@@ -193,10 +194,7 @@ CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
# CONFIG_DELL_RBU is not set
CONFIG_DCDBAS=m
-CONFIG_EDAC=y
-CONFIG_EDAC_MM_EDAC=m
-# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
-CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64 is not set
CONFIG_EDAC_AMD76X=m
CONFIG_EDAC_AMD8111=m
CONFIG_EDAC_AMD8131=m
@@ -215,7 +213,6 @@ CONFIG_EDAC_I7CORE=m
CONFIG_EDAC_R82600=m
CONFIG_EDAC_X38=m
CONFIG_EDAC_DECODE_MCE=m
-CONFIG_EDAC_LEGACY_SYSFS=y
CONFIG_EDAC_IE31200=m
CONFIG_SCHED_MC=y
@@ -279,6 +276,21 @@ CONFIG_PVPANIC=m
CONFIG_TOUCHSCREEN_GOODIX=m
CONFIG_TOUCHSCREEN_SURFACE3_SPI=m
+#
+# AGP Support
+#
+CONFIG_AGP=y
+CONFIG_AGP_ALI=y
+CONFIG_AGP_ATI=y
+CONFIG_AGP_AMD=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+CONFIG_AGP_NVIDIA=y
+CONFIG_AGP_SIS=y
+CONFIG_AGP_SWORKS=y
+CONFIG_AGP_VIA=y
+CONFIG_AGP_EFFICEON=y
+
# CONFIG_SMSC37B787_WDT is not set
CONFIG_VIA_WDT=m
CONFIG_IE6XX_WDT=m
@@ -353,6 +365,8 @@ CONFIG_THINKPAD_ACPI_VIDEO=y
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_LEDS_DELL_NETBOOKS=m
+
CONFIG_MACINTOSH_DRIVERS=y
CONFIG_DMIID=y
@@ -364,11 +378,21 @@ CONFIG_ISCSI_IBFT=m
CONFIG_INTEL_IOATDMA=m
CONFIG_INTEL_IDMA64=m
-CONFIG_SENSORS_I5K_AMB=m
-CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
CONFIG_SENSORS_ACPI_POWER=m
-CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_APPLESMC=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATK0110=m
+CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_DELL_SMM=m
+CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_I5500=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_VIA_CPUTEMP=m
# CONFIG_CPA_DEBUG is not set
@@ -564,11 +588,9 @@ CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH=m
CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=m
CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m
CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH=m
+CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m
CONFIG_SND_SOC_AC97_CODEC=m
# CONFIG_SND_SOC_TAS571X is not set
-# CONFIG_SND_SUN4I_CODEC is not set
-# CONFIG_SND_SUN4I_SPDIF is not set
-# CONFIG_SND_SUN4I_I2S is not set
CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
@@ -602,4 +624,3 @@ CONFIG_PCH_CAN=m
# CONFIG_X86_DEBUG_FPU is not set
# CONFIG_PUNIT_ATOM_DEBUG is not set
-# CONFIG_AMD_MCE_INJ is not set
diff --git a/config-x86_64-generic b/config-x86_64-generic
index 704dc30bd..2496f8539 100644
--- a/config-x86_64-generic
+++ b/config-x86_64-generic
@@ -4,6 +4,8 @@ CONFIG_64BIT=y
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
CONFIG_GENERIC_CPU=y
+# Turn this on to see what exciting things we find
+CONFIG_VMAP_STACK=y
# CONFIG_X86_VSMP is not set
CONFIG_X86_UV=y
@@ -19,6 +21,10 @@ CONFIG_X86_NUMACHIP=y
CONFIG_NUMA_BALANCING=y
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
+CONFIG_MLX_PLATFORM=m
+
+CONFIG_INTEL_ISH_HID=m
+
# https://lists.fedoraproject.org/pipermail/kernel/2013-November/004601.html
CONFIG_NR_CPUS=1024
CONFIG_PHYSICAL_START=0x1000000
@@ -37,7 +43,6 @@ CONFIG_IA32_EMULATION=y
# CONFIG_IA32_AOUT is not set
CONFIG_AMD_IOMMU=y
-CONFIG_AMD_IOMMU_STATS=y
CONFIG_AMD_IOMMU_V2=m
# CONFIG_IOMMU_DEBUG is not set
CONFIG_SWIOTLB=y
@@ -233,9 +238,9 @@ CONFIG_ND_PFN=m
CONFIG_DEV_DAX=m
CONFIG_DEV_DAX_PMEM=m
+CONFIG_NR_DEV_DAX=32768
# Staging
-CONFIG_STAGING_RDMA=y
CONFIG_INFINIBAND_HFI1=m
# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set
CONFIG_HFI1_VERBS_31BIT_PSN=y
diff --git a/crash-driver.patch b/crash-driver.patch
index 97ec4c4ec..715ec54e8 100644
--- a/crash-driver.patch
+++ b/crash-driver.patch
@@ -1,4 +1,4 @@
-From 3fbd61fbbbfa7ae15cd3f3e2ff7a97e106be2b43 Mon Sep 17 00:00:00 2001
+From 973e23bf27b0b2e5021321357fc570cccea3104c Mon Sep 17 00:00:00 2001
From: Dave Anderson <anderson@redhat.com>
Date: Tue, 26 Nov 2013 12:42:46 -0500
Subject: [PATCH] crash-driver
@@ -149,19 +149,16 @@ index 0000000..404bcb9
+
+#endif /* _ASM_IA64_CRASH_H */
diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
-index 0967310..e888878 100644
+index d111248..b14b4c6 100644
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ b/arch/ia64/kernel/ia64_ksyms.c
-@@ -84,6 +84,9 @@ EXPORT_SYMBOL(ia64_save_scratch_fpregs);
- #include <asm/unwind.h>
- EXPORT_SYMBOL(unw_init_running);
-
+@@ -9,3 +9,6 @@
+ EXPORT_SYMBOL(min_low_pfn); /* defined by bootmem.c, but not exported by generic code */
+ EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */
+ #endif
++
+#include <linux/efi.h>
+EXPORT_SYMBOL_GPL(efi_mem_type);
-+
- #if defined(CONFIG_IA64_ESI) || defined(CONFIG_IA64_ESI_MODULE)
- extern void esi_call_phys (void);
- EXPORT_SYMBOL_GPL(esi_call_phys);
diff --git a/arch/powerpc/include/asm/crash-driver.h b/arch/powerpc/include/asm/crash-driver.h
new file mode 100644
index 0000000..50092d9
@@ -270,7 +267,7 @@ index 0000000..fd4736e
+
+#endif /* _X86_CRASH_H */
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
-index fdb8f3e..7dd3a49 100644
+index dcc0973..99b99d5 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -4,6 +4,9 @@
@@ -284,10 +281,10 @@ index fdb8f3e..7dd3a49 100644
config DEVMEM
diff --git a/drivers/char/Makefile b/drivers/char/Makefile
-index 55d16bf..a40ace9 100644
+index 6e6c244..29cc9c8 100644
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
-@@ -61,3 +61,5 @@ js-rtc-y = rtc.o
+@@ -60,3 +60,5 @@ js-rtc-y = rtc.o
obj-$(CONFIG_TILE_SROM) += tile-srom.o
obj-$(CONFIG_XILLYBUS) += xillybus/
obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o
@@ -506,9 +503,9 @@ index 0000000..25ab986
+
+#endif /* __CRASH_H__ */
--
-2.9.2
+2.7.4
-From 7523c19e1d22fbabeaeae9520c16a78202c0eefe Mon Sep 17 00:00:00 2001
+From 23d8bd48303acda2d3a95a3e1a662784a4fa9fcd Mon Sep 17 00:00:00 2001
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
Date: Tue, 20 Sep 2016 19:39:46 +0200
Subject: [PATCH] Update of crash driver to handle CONFIG_HARDENED_USERCOPY and
@@ -601,7 +598,7 @@ index 085378a..0258bf8 100644
static struct miscdevice crash_dev = {
--
-2.9.3
+2.7.4
From: Dave Anderson <anderson@redhat.com>
Date: Fri, 18 Nov 2016 11:52:35 -0500
diff --git a/efi-Add-SHIM-and-image-security-database-GUID-defini.patch b/efi-Add-SHIM-and-image-security-database-GUID-defini.patch
new file mode 100644
index 000000000..4d380ea76
--- /dev/null
+++ b/efi-Add-SHIM-and-image-security-database-GUID-defini.patch
@@ -0,0 +1,31 @@
+From 3a9fe1504e08824d894bb3a804c6a313f5d1be8a Mon Sep 17 00:00:00 2001
+From: Josh Boyer <jwboyer@fedoraproject.org>
+Date: Tue, 25 Oct 2016 12:54:11 -0400
+Subject: [PATCH 11/20] efi: Add SHIM and image security database GUID
+ definitions
+
+Add the definitions for shim and image security database, both of which
+are used widely in various Linux distros.
+
+Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
+---
+ include/linux/efi.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/include/linux/efi.h b/include/linux/efi.h
+index 2d089487d2da..ce943d5accfd 100644
+--- a/include/linux/efi.h
++++ b/include/linux/efi.h
+@@ -592,6 +592,9 @@ void efi_native_runtime_setup(void);
+ #define EFI_MEMORY_ATTRIBUTES_TABLE_GUID EFI_GUID(0xdcfa911d, 0x26eb, 0x469f, 0xa2, 0x20, 0x38, 0xb7, 0xdc, 0x46, 0x12, 0x20)
+ #define EFI_CONSOLE_OUT_DEVICE_GUID EFI_GUID(0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
+
++#define EFI_IMAGE_SECURITY_DATABASE_GUID EFI_GUID(0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f)
++#define EFI_SHIM_LOCK_GUID EFI_GUID(0x605dab50, 0xe046, 0x4300, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23)
++
+ /*
+ * This GUID is used to pass to the kernel proper the struct screen_info
+ * structure that was populated by the stub based on the GOP protocol instance
+--
+2.9.3
+
diff --git a/filter-aarch64.sh b/filter-aarch64.sh
index 012d39724..ed0bb61a1 100644
--- a/filter-aarch64.sh
+++ b/filter-aarch64.sh
@@ -13,4 +13,4 @@ driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds medi
ethdrvs="3com adaptec arc alteon atheros broadcom cadence calxeda chelsio cisco dec dlink emulex icplus marvell micrel myricom neterion nvidia oki-semi packetengines qlogic rdc renesas sfc silan sis smsc stmicro sun tehuti ti via wiznet xircom"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr"
diff --git a/filter-armv7hl.sh b/filter-armv7hl.sh
index 6dc3efdfa..be07bd91c 100644
--- a/filter-armv7hl.sh
+++ b/filter-armv7hl.sh
@@ -15,4 +15,4 @@ ethdrvs="3com adaptec alteon altera amd atheros broadcom cadence chelsio cisco d
drmdrvs="amd armada bridge ast exynos i2c imx mgag200 msm omapdrm panel nouveau radeon rockchip tegra tilcdc via"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr"
diff --git a/filter-i686.sh b/filter-i686.sh
index 628e17c60..01b5bfcb6 100644
--- a/filter-i686.sh
+++ b/filter-i686.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick mfd mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub hid-sensor-magn-3d hid-sensor-incl-3d hid-sensor-gyro-3d hid-sensor-iio-common hid-sensor-accel-3d hid-sensor-trigger hid-sensor-als hid-sensor-rotation target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub hid-sensor-magn-3d hid-sensor-incl-3d hid-sensor-gyro-3d hid-sensor-iio-common hid-sensor-accel-3d hid-sensor-trigger hid-sensor-als hid-sensor-rotation target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr"
diff --git a/filter-modules.sh b/filter-modules.sh
index f9bfa100c..9db3f9d19 100755
--- a/filter-modules.sh
+++ b/filter-modules.sh
@@ -34,7 +34,7 @@ netprots="6lowpan appletalk atm ax25 batman-adv bluetooth can dccp dsa ieee80215
drmdrvs="amd ast gma500 i2c i915 mgag200 nouveau radeon via "
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr"
# Grab the arch-specific filter list overrides
source ./filter-$2.sh
diff --git a/filter-ppc64.sh b/filter-ppc64.sh
index 0df93835c..81397fbcf 100644
--- a/filter-ppc64.sh
+++ b/filter-ppc64.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr"
diff --git a/filter-ppc64le.sh b/filter-ppc64le.sh
index c14e5cc8c..f53af8e5c 100644
--- a/filter-ppc64le.sh
+++ b/filter-ppc64le.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr"
diff --git a/filter-ppc64p7.sh b/filter-ppc64p7.sh
index 6c9383ac0..c868ddafb 100644
--- a/filter-ppc64p7.sh
+++ b/filter-ppc64p7.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr"
diff --git a/geekbox-v4-device-tree-support.patch b/geekbox-v4-device-tree-support.patch
index 11f30e7b2..8408531bd 100644
--- a/geekbox-v4-device-tree-support.patch
+++ b/geekbox-v4-device-tree-support.patch
@@ -1,4 +1,4 @@
-From 277aa4c25655e8f746f02879d26298772244958a Mon Sep 17 00:00:00 2001
+From 11aa129d33635fb33304b6e9b945e502f5ba707a Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 17 Mar 2016 15:19:04 +0000
Subject: [PATCH] geekbox v4 patchset
@@ -13,10 +13,10 @@ Subject: [PATCH] geekbox v4 patchset
create mode 100644 arch/arm64/boot/dts/rockchip/rk3368-geekbox-landingship.dts
diff --git a/Documentation/devicetree/bindings/arm/rockchip.txt b/Documentation/devicetree/bindings/arm/rockchip.txt
-index 715d960..7cfadac 100644
+index 55f388f..989a039 100644
--- a/Documentation/devicetree/bindings/arm/rockchip.txt
+++ b/Documentation/devicetree/bindings/arm/rockchip.txt
-@@ -95,6 +95,15 @@ Rockchip platforms device tree bindings
+@@ -99,6 +99,15 @@ Rockchip platforms device tree bindings
Required root node properties:
- compatible = "mqmaker,miqi", "rockchip,rk3288";
@@ -33,12 +33,13 @@ index 715d960..7cfadac 100644
Required root node properties:
- compatible = "rockchip,rk3368-evb-act8846", "rockchip,rk3368";
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
-index 7037a16..e002ebe 100644
+index 87669f6..9aec54e 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
-@@ -1,5 +1,6 @@
+@@ -1,6 +1,7 @@
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb
+ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-orion-r68-meta.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox-landingship.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-r88.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-evb.dtb
@@ -120,7 +121,7 @@ index 0000000..a28ace9
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3368-r88.dts b/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
-index b56b720..5ea68c4 100644
+index eed1ef6..18e2b77 100644
--- a/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
@@ -52,7 +52,7 @@
@@ -133,5 +134,5 @@ index b56b720..5ea68c4 100644
reg = <0x0 0x0 0x0 0x40000000>;
};
--
-2.5.5
+2.7.4
diff --git a/imx6sx-Add-UDOO-Neo-support.patch b/imx6sx-Add-UDOO-Neo-support.patch
new file mode 100644
index 000000000..6d9fd99d4
--- /dev/null
+++ b/imx6sx-Add-UDOO-Neo-support.patch
@@ -0,0 +1,619 @@
+From 76e691fc7653b85d390e58710e5c7db73ca49367 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
+Date: Sun, 16 Oct 2016 16:44:23 +0200
+Subject: [PATCH 0732/2073] ARM: dts: imx6sx: Add UDOO Neo support
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add initial device trees for UDOO Neo Basic, Extended and Full boards:
+* Serial console is enabled, other serial ports are prepared.
+* I2C based PMIC is enabled.
+* Ethernet is enabled for Basic and Full.
+* SDHC is enabled, with the SDIO_PWR GPIO modeled as a regulator.
+* Both user LEDs are enabled, with the orange one reserved for the M4
+ and with the SD card as default trigger for the red LED.
+
+The decision on a board compatible string is deferred to later.
+
+Cc: Ettore Chimenti <ettore.chimenti@udoo.org>
+Signed-off-by: Andreas Färber <afaerber@suse.de>
+Signed-off-by: Shawn Guo <shawnguo@kernel.org>
+---
+ arch/arm/boot/dts/Makefile | 5 +-
+ arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts | 69 ++++++
+ arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts | 54 +++++
+ arch/arm/boot/dts/imx6sx-udoo-neo-full.dts | 69 ++++++
+ arch/arm/boot/dts/imx6sx-udoo-neo.dtsi | 293 +++++++++++++++++++++++++
+ 5 files changed, 489 insertions(+), 1 deletion(-)
+ create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts
+ create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts
+ create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo-full.dts
+ create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo.dtsi
+
+diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
+index 019976b..da0197d 100644
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -417,7 +417,10 @@ dtb-$(CONFIG_SOC_IMX6SX) += \
+ imx6sx-sabreauto.dtb \
+ imx6sx-sdb-reva.dtb \
+ imx6sx-sdb-sai.dtb \
+- imx6sx-sdb.dtb
++ imx6sx-sdb.dtb \
++ imx6sx-udoo-neo-basic.dtb \
++ imx6sx-udoo-neo-extended.dtb \
++ imx6sx-udoo-neo-full.dtb
+ dtb-$(CONFIG_SOC_IMX6UL) += \
+ imx6ul-14x14-evk.dtb \
+ imx6ul-geam-kit.dtb \
+diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts
+new file mode 100644
+index 0000000..0b88878
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts
+@@ -0,0 +1,69 @@
++/*
++ * Copyright (c) 2016 Andreas Färber
++ *
++ * This file is dual-licensed: you can use it either under the terms
++ * of the GPL or the X11 license, at your option. Note that this dual
++ * licensing only applies to this file, and not this project as a
++ * whole.
++ *
++ * a) This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This library 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.
++ *
++ * Or, alternatively,
++ *
++ * b) Permission is hereby granted, free of charge, to any person
++ * obtaining a copy of this software and associated documentation
++ * files (the "Software"), to deal in the Software without
++ * restriction, including without limitation the rights to use,
++ * copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following
++ * conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/dts-v1/;
++
++#include "imx6sx-udoo-neo.dtsi"
++
++/ {
++ model = "UDOO Neo Basic";
++ compatible = "fsl,imx6sx";
++
++ memory {
++ reg = <0x80000000 0x20000000>;
++ };
++};
++
++&fec1 {
++ phy-handle = <&ethphy1>;
++ status = "okay";
++
++ mdio {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ ethphy1: ethernet-phy@0 {
++ compatible = "ethernet-phy-ieee802.3-c22";
++ reg = <0>;
++ };
++ };
++};
+diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts
+new file mode 100644
+index 0000000..d6fdd17
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts
+@@ -0,0 +1,54 @@
++/*
++ * Copyright (c) 2016 Andreas Färber
++ *
++ * This file is dual-licensed: you can use it either under the terms
++ * of the GPL or the X11 license, at your option. Note that this dual
++ * licensing only applies to this file, and not this project as a
++ * whole.
++ *
++ * a) This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This library 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.
++ *
++ * Or, alternatively,
++ *
++ * b) Permission is hereby granted, free of charge, to any person
++ * obtaining a copy of this software and associated documentation
++ * files (the "Software"), to deal in the Software without
++ * restriction, including without limitation the rights to use,
++ * copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following
++ * conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/dts-v1/;
++
++#include "imx6sx-udoo-neo.dtsi"
++
++/ {
++ model = "UDOO Neo Extended";
++ compatible = "fsl,imx6sx";
++
++ memory {
++ reg = <0x80000000 0x40000000>;
++ };
++};
+diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts
+new file mode 100644
+index 0000000..d8c3577
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts
+@@ -0,0 +1,69 @@
++/*
++ * Copyright (c) 2016 Andreas Färber
++ *
++ * This file is dual-licensed: you can use it either under the terms
++ * of the GPL or the X11 license, at your option. Note that this dual
++ * licensing only applies to this file, and not this project as a
++ * whole.
++ *
++ * a) This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This library 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.
++ *
++ * Or, alternatively,
++ *
++ * b) Permission is hereby granted, free of charge, to any person
++ * obtaining a copy of this software and associated documentation
++ * files (the "Software"), to deal in the Software without
++ * restriction, including without limitation the rights to use,
++ * copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following
++ * conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/dts-v1/;
++
++#include "imx6sx-udoo-neo.dtsi"
++
++/ {
++ model = "UDOO Neo Full";
++ compatible = "fsl,imx6sx";
++
++ memory {
++ reg = <0x80000000 0x40000000>;
++ };
++};
++
++&fec1 {
++ phy-handle = <&ethphy1>;
++ status = "okay";
++
++ mdio {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ ethphy1: ethernet-phy@0 {
++ compatible = "ethernet-phy-ieee802.3-c22";
++ reg = <0>;
++ };
++ };
++};
+diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi
+new file mode 100644
+index 0000000..2b65d26
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi
+@@ -0,0 +1,293 @@
++/*
++ * Copyright (c) 2016 Andreas Färber
++ *
++ * This file is dual-licensed: you can use it either under the terms
++ * of the GPL or the X11 license, at your option. Note that this dual
++ * licensing only applies to this file, and not this project as a
++ * whole.
++ *
++ * a) This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This library 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.
++ *
++ * Or, alternatively,
++ *
++ * b) Permission is hereby granted, free of charge, to any person
++ * obtaining a copy of this software and associated documentation
++ * files (the "Software"), to deal in the Software without
++ * restriction, including without limitation the rights to use,
++ * copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following
++ * conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++#include "imx6sx.dtsi"
++
++/ {
++ compatible = "fsl,imx6sx";
++
++ chosen {
++ stdout-path = "serial0:115200n8";
++ };
++
++ leds {
++ compatible = "gpio-leds";
++
++ red {
++ label = "udoo-neo:red:mmc";
++ gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>;
++ default-state = "off";
++ linux,default-trigger = "mmc0";
++ };
++
++ orange {
++ label = "udoo-neo:orange:user";
++ gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;
++ default-state = "keep";
++ };
++ };
++
++ reg_sdio_pwr: regulator-sdio-pwr {
++ compatible = "regulator-fixed";
++ gpio = <&gpio6 1 GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ regulator-name = "SDIO_PWR";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-boot-on;
++ };
++};
++
++&cpu0 {
++ arm-supply = <&sw1a_reg>;
++ soc-supply = <&sw1c_reg>;
++};
++
++&fec1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_enet1>;
++ phy-mode = "rmii";
++ phy-reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
++};
++
++&i2c1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c1>;
++ clock-frequency = <100000>;
++ status = "okay";
++
++ pmic: pmic@08 {
++ compatible = "fsl,pfuze3000";
++ reg = <0x08>;
++
++ regulators {
++ sw1a_reg: sw1a {
++ regulator-min-microvolt = <700000>;
++ regulator-max-microvolt = <1475000>;
++ regulator-boot-on;
++ regulator-always-on;
++ regulator-ramp-delay = <6250>;
++ };
++
++ sw1c_reg: sw1b {
++ regulator-min-microvolt = <700000>;
++ regulator-max-microvolt = <1475000>;
++ regulator-boot-on;
++ regulator-always-on;
++ regulator-ramp-delay = <6250>;
++ };
++
++ sw2_reg: sw2 {
++ regulator-min-microvolt = <1500000>;
++ regulator-max-microvolt = <1850000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw3a_reg: sw3 {
++ regulator-min-microvolt = <900000>;
++ regulator-max-microvolt = <1650000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ swbst_reg: swbst {
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5150000>;
++ };
++
++ snvs_reg: vsnvs {
++ regulator-min-microvolt = <1000000>;
++ regulator-max-microvolt = <3000000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ vref_reg: vrefddr {
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ vgen1_reg: vldo1 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen2_reg: vldo2 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <1550000>;
++ };
++
++ vgen3_reg: vccsd {
++ regulator-min-microvolt = <2850000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen4_reg: v33 {
++ regulator-min-microvolt = <2850000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen5_reg: vldo3 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen6_reg: vldo4 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++ };
++ };
++};
++
++&iomuxc {
++ pinctrl_enet1: enet1grp {
++ fsl,pins =
++ <MX6SX_PAD_ENET1_CRS__GPIO2_IO_1 0xa0b1>,
++ <MX6SX_PAD_ENET1_MDC__ENET1_MDC 0xa0b1>,
++ <MX6SX_PAD_ENET1_MDIO__ENET1_MDIO 0xa0b1>,
++ <MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0 0xa0b1>,
++ <MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1 0xa0b1>,
++ <MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN 0xa0b1>,
++
++ <MX6SX_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x3081>,
++ <MX6SX_PAD_ENET2_TX_CLK__GPIO2_IO_9 0x3081>,
++ <MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0 0x3081>,
++ <MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1 0x3081>,
++ <MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081>,
++ <MX6SX_PAD_RGMII1_RXC__ENET1_RX_ER 0x3081>,
++
++ <MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M 0x91>;
++ };
++
++ pinctrl_i2c1: i2c1grp {
++ fsl,pins =
++ <MX6SX_PAD_GPIO1_IO00__I2C1_SCL 0x4001b8b1>,
++ <MX6SX_PAD_GPIO1_IO01__I2C1_SDA 0x4001b8b1>;
++ };
++
++ pinctrl_uart1: uart1grp {
++ fsl,pins =
++ <MX6SX_PAD_GPIO1_IO04__UART1_TX 0x1b0b1>,
++ <MX6SX_PAD_GPIO1_IO05__UART1_RX 0x1b0b1>;
++ };
++
++ pinctrl_uart2: uart2grp {
++ fsl,pins =
++ <MX6SX_PAD_GPIO1_IO06__UART2_TX 0x1b0b1>,
++ <MX6SX_PAD_GPIO1_IO07__UART2_RX 0x1b0b1>;
++ };
++
++ pinctrl_uart5: uart5grp {
++ fsl,pins =
++ <MX6SX_PAD_SD4_DATA4__UART5_RX 0x1b0b1>,
++ <MX6SX_PAD_SD4_DATA5__UART5_TX 0x1b0b1>;
++ };
++
++ pinctrl_uart6: uart6grp {
++ fsl,pins =
++ <MX6SX_PAD_CSI_DATA00__UART6_RI_B 0x1b0b1>,
++ <MX6SX_PAD_CSI_DATA01__UART6_DSR_B 0x1b0b1>,
++ <MX6SX_PAD_CSI_DATA02__UART6_DTR_B 0x1b0b1>,
++ <MX6SX_PAD_CSI_DATA03__UART6_DCD_B 0x1b0b1>,
++ <MX6SX_PAD_CSI_DATA04__UART6_RX 0x1b0b1>,
++ <MX6SX_PAD_CSI_DATA05__UART6_TX 0x1b0b1>,
++ <MX6SX_PAD_CSI_DATA06__UART6_RTS_B 0x1b0b1>,
++ <MX6SX_PAD_CSI_DATA07__UART6_CTS_B 0x1b0b1>;
++ };
++
++ pinctrl_usdhc2: usdhc2grp {
++ fsl,pins =
++ <MX6SX_PAD_SD2_CMD__USDHC2_CMD 0x17059>,
++ <MX6SX_PAD_SD2_CLK__USDHC2_CLK 0x10059>,
++ <MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x17059>,
++ <MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x17059>,
++ <MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x17059>,
++ <MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x17059>,
++ <MX6SX_PAD_SD1_DATA0__GPIO6_IO_2 0x17059>; /* CD */
++ };
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart1>;
++ status = "okay";
++};
++
++/* Cortex-M4 serial */
++&uart2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart2>;
++ status = "disabled";
++};
++
++/* Arduino serial */
++&uart5 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart5>;
++ status = "disabled";
++};
++
++&uart6 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart6>;
++ uart-has-rtscts;
++ status = "disabled";
++};
++
++&usdhc2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usdhc2>;
++ vmmc-supply = <&reg_sdio_pwr>;
++ bus-width = <4>;
++ cd-gpios = <&gpio6 2 GPIO_ACTIVE_LOW>;
++ no-1-8-v;
++ keep-power-in-suspend;
++ wakeup-source;
++ status = "okay";
++};
+--
+2.9.3
+
+From 841310d00a76800a8407ee214eb7242541aac178 Mon Sep 17 00:00:00 2001
+From: Fabio Estevam <fabio.estevam@nxp.com>
+Date: Tue, 1 Nov 2016 15:38:12 -0200
+Subject: [PATCH 1789/2073] ARM: dts: imx6sx-udoo: Add board specific
+ compatible strings
+
+Add a compatible entry for the specific board versions.
+
+Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
+Signed-off-by: Shawn Guo <shawnguo@kernel.org>
+---
+ arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts | 2 +-
+ arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts | 2 +-
+ arch/arm/boot/dts/imx6sx-udoo-neo-full.dts | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts
+index 0b88878..0c1fc1a 100644
+--- a/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts
++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts
+@@ -46,7 +46,7 @@
+
+ / {
+ model = "UDOO Neo Basic";
+- compatible = "fsl,imx6sx";
++ compatible = "udoo,neobasic", "fsl,imx6sx";
+
+ memory {
+ reg = <0x80000000 0x20000000>;
+diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts
+index d6fdd17..5d6c227 100644
+--- a/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts
++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts
+@@ -46,7 +46,7 @@
+
+ / {
+ model = "UDOO Neo Extended";
+- compatible = "fsl,imx6sx";
++ compatible = "udoo,neoextended", "fsl,imx6sx";
+
+ memory {
+ reg = <0x80000000 0x40000000>;
+diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts
+index d8c3577..653ceb2 100644
+--- a/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts
++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts
+@@ -46,7 +46,7 @@
+
+ / {
+ model = "UDOO Neo Full";
+- compatible = "fsl,imx6sx";
++ compatible = "udoo,neofull", "fsl,imx6sx";
+
+ memory {
+ reg = <0x80000000 0x40000000>;
+--
+2.9.3
+
diff --git a/kbuild-AFTER_LINK.patch b/kbuild-AFTER_LINK.patch
index d79a6186b..ab738c62b 100644
--- a/kbuild-AFTER_LINK.patch
+++ b/kbuild-AFTER_LINK.patch
@@ -1,4 +1,4 @@
-From a9488dbeccf188f0bd83b9d5704892f2c0f97fdc Mon Sep 17 00:00:00 2001
+From 649d991ca7737dd227f2a1ca4f30247daf6a7b4b Mon Sep 17 00:00:00 2001
From: Roland McGrath <roland@redhat.com>
Date: Mon, 6 Oct 2008 23:03:03 -0700
Subject: [PATCH] kbuild: AFTER_LINK
@@ -21,10 +21,10 @@ Signed-off-by: Roland McGrath <roland@redhat.com>
7 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile
-index b467fd0..feeff5e 100644
+index 62c84f7..f44236a 100644
--- a/arch/arm64/kernel/vdso/Makefile
+++ b/arch/arm64/kernel/vdso/Makefile
-@@ -55,7 +55,8 @@ $(obj-vdso): %.o: %.S FORCE
+@@ -54,7 +54,8 @@ $(obj-vdso): %.o: %.S FORCE
# Actual build commands
quiet_cmd_vdsold = VDSOL $@
@@ -35,10 +35,10 @@ index b467fd0..feeff5e 100644
cmd_vdsoas = $(CC) $(a_flags) -c -o $@ $<
diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
-index 6abffb7..7b103bb 100644
+index 78a7449..c9592c0 100644
--- a/arch/powerpc/kernel/vdso32/Makefile
+++ b/arch/powerpc/kernel/vdso32/Makefile
-@@ -43,7 +43,8 @@ $(obj-vdso32): %.o: %.S
+@@ -44,7 +44,8 @@ $(obj-vdso32): %.o: %.S FORCE
# actual build commands
quiet_cmd_vdso32ld = VDSO32L $@
@@ -49,24 +49,24 @@ index 6abffb7..7b103bb 100644
cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile
-index 8c8f2ae..a743ebe 100644
+index 31107bf..96aded3 100644
--- a/arch/powerpc/kernel/vdso64/Makefile
+++ b/arch/powerpc/kernel/vdso64/Makefile
-@@ -36,7 +36,8 @@ $(obj-vdso64): %.o: %.S
+@@ -33,7 +33,8 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
# actual build commands
quiet_cmd_vdso64ld = VDSO64L $@
- cmd_vdso64ld = $(CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^)
+ cmd_vdso64ld = $(CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^) \
-+ $(if $(AFTER_LINK),; $(AFTER_LINK))
- quiet_cmd_vdso64as = VDSO64A $@
- cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $<
++ $(if $(AFTER_LINK),; $(AFTER_LINK))
+ # install commands for the unstripped file
+ quiet_cmd_vdso_install = INSTALL $@
diff --git a/arch/s390/kernel/vdso32/Makefile b/arch/s390/kernel/vdso32/Makefile
-index ee8a18e..63e33fa 100644
+index 6cc9478..94fb536 100644
--- a/arch/s390/kernel/vdso32/Makefile
+++ b/arch/s390/kernel/vdso32/Makefile
-@@ -43,7 +43,8 @@ $(obj-vdso32): %.o: %.S
+@@ -46,7 +46,8 @@ $(obj-vdso32): %.o: %.S
# actual build commands
quiet_cmd_vdso32ld = VDSO32L $@
@@ -77,10 +77,10 @@ index ee8a18e..63e33fa 100644
cmd_vdso32as = $(CC) $(a_flags) -c -o $@ $<
diff --git a/arch/s390/kernel/vdso64/Makefile b/arch/s390/kernel/vdso64/Makefile
-index c4b03f9..550450f 100644
+index 2d54c18..a0e3e9d 100644
--- a/arch/s390/kernel/vdso64/Makefile
+++ b/arch/s390/kernel/vdso64/Makefile
-@@ -43,7 +43,8 @@ $(obj-vdso64): %.o: %.S
+@@ -46,7 +46,8 @@ $(obj-vdso64): %.o: %.S
# actual build commands
quiet_cmd_vdso64ld = VDSO64L $@
@@ -91,10 +91,10 @@ index c4b03f9..550450f 100644
cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $<
diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile
-index 265c0ed..fd90c7d 100644
+index d540966..eeb47b6 100644
--- a/arch/x86/entry/vdso/Makefile
+++ b/arch/x86/entry/vdso/Makefile
-@@ -159,8 +159,9 @@ $(obj)/vdso32.so.dbg: FORCE \
+@@ -167,8 +167,9 @@ $(obj)/vdso32.so.dbg: FORCE \
quiet_cmd_vdso = VDSO $@
cmd_vdso = $(CC) -nostdlib -o $@ \
$(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \
@@ -107,11 +107,11 @@ index 265c0ed..fd90c7d 100644
VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=both) \
$(call cc-ldoption, -Wl$(comma)--build-id) -Wl,-Bsymbolic $(LTO_CFLAGS)
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
-index dacf71a..72cbefd 100755
+index f742c65..526eee4 100755
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
-@@ -65,6 +65,10 @@ vmlinux_link()
- -lutil -lrt -lpthread ${1}
+@@ -111,6 +111,10 @@ vmlinux_link()
+ -lutil -lrt -lpthread
rm -f linux
fi
+ if [ -n "${AFTER_LINK}" ]; then
@@ -122,5 +122,5 @@ index dacf71a..72cbefd 100755
--
-2.5.0
+2.7.4
diff --git a/kernel.spec b/kernel.spec
index 98451cb1f..a43e7d027 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -44,13 +44,13 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
-%global baserelease 200
+%global baserelease 100
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
# which yields a base_sublevel of 0.
-%define base_sublevel 8
+%define base_sublevel 9
## If this is a released kernel ##
%if 0%{?released_kernel}
@@ -59,7 +59,7 @@ Summary: The Linux kernel
# Do we have a -stable update to apply?
-%define stable_update 17
+%define stable_update 4
# Set rpm version accordingly
%if 0%{?stable_update}
%define stablerev %{stable_update}
@@ -423,7 +423,7 @@ Source0: ftp://ftp.kernel.org/pub/linux/kernel/v4.x/linux-%{kversion}.tar.xz
Source10: perf-man-%{kversion}.tar.gz
Source11: x509.genkey
-
+Source12: remove-binary-diff.pl
Source15: merge.pl
Source16: mod-extra.list
Source17: mod-extra.sh
@@ -515,9 +515,6 @@ Source5005: kbuild-AFTER_LINK.patch
# Standalone patches
-# http://www.spinics.net/lists/arm-kernel/msg523359.html
-Patch420: arm64-ACPI-parse-SPCR-table.patch
-
# a tempory patch for QCOM hardware enablement. Will be gone by end of 2016/F-26 GA
Patch421: qcom-QDF2432-tmp-errata.patch
@@ -531,8 +528,12 @@ Patch425: arm64-pcie-quirks.patch
# http://www.spinics.net/lists/linux-tegra/msg26029.html
Patch426: usb-phy-tegra-Add-38.4MHz-clock-table-entry.patch
-Patch427: ARM-OMAP4-Fix-crashes.patch
-Patch428: arm-revert-mmc-omap_hsmmc-Use-dma_request_chan-for-reque.patch
+# Fix OMAP4 (pandaboard)
+Patch427: arm-revert-mmc-omap_hsmmc-Use-dma_request_chan-for-reque.patch
+
+# Not particularly happy we don't yet have a proper upstream resolution this is the right direction
+# https://www.spinics.net/lists/arm-kernel/msg535191.html
+Patch429: arm64-mm-Fix-memmap-to-be-initialized-for-the-entire-section.patch
# http://patchwork.ozlabs.org/patch/587554/
Patch430: ARM-tegra-usb-no-reset.patch
@@ -541,9 +542,16 @@ Patch431: bcm2837-initial-support.patch
Patch432: bcm283x-vc4-fixes.patch
-Patch433: AllWinner-net-emac.patch
+Patch433: bcm283x-fixes.patch
+
+# http://www.spinics.net/lists/linux-mmc/msg41151.html
+Patch434: bcm283x-mmc-imp-speed.patch
-Patch434: ARM-Drop-fixed-200-Hz-timer-requirement-from-Samsung-platforms.patch
+Patch440: AllWinner-net-emac.patch
+
+Patch442: ARM-Drop-fixed-200-Hz-timer-requirement-from-Samsung-platforms.patch
+
+Patch443: imx6sx-Add-UDOO-Neo-support.patch
Patch460: lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
@@ -579,7 +587,9 @@ Patch481: x86-Restrict-MSR-access-when-module-loading-is-restr.patch
Patch482: Add-option-to-automatically-enforce-module-signature.patch
-Patch483: efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch
+Patch483: efi-Add-SHIM-and-image-security-database-GUID-defini.patch
+
+Patch484: efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch
Patch485: efi-Add-EFI_SECURE_BOOT-bit.patch
@@ -625,38 +635,22 @@ Patch502: firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
Patch508: kexec-uefi-copy-secure_boot-flag-in-boot-params.patch
+Patch509: MODSIGN-Don-t-try-secure-boot-if-EFI-runtime-is-disa.patch
+
#CVE-2016-3134 rhbz 1317383 1317384
Patch665: netfilter-x_tables-deal-with-bogus-nextoffset-values.patch
-#rhbz 1200901 (There should be something better upstream at some point)
-Patch842: qxl-reapply-cursor-after-SetCrtc-calls.patch
-
-# From kernel list, currently in linux-next
-Patch845: HID-microsoft-Add-Surface-4-type-cover-pro-4-JP.patch
-
-# SELinux OverlayFS support (queued for 4.9)
-Patch846: security-selinux-overlayfs-support.patch
-
-#rhbz 1360688
-Patch847: rc-core-fix-repeat-events.patch
-
#ongoing complaint, full discussion delayed until ksummit/plumbers
Patch849: 0001-iio-Use-event-header-from-kernel-tree.patch
-# CVE-2016-9083 CVE-2016-9084 rhbz 1389258 1389259 1389285
-Patch850: v3-vfio-pci-Fix-integer-overflows-bitmask-check.patch
+# Work around thinkpad firmware memory layout issues and efi_mem_reserve()
+Patch850: 0001-efi-prune-invalid-memory-map-entries.patch
-#rhbz 1325354
-Patch852: 0001-HID-input-ignore-System-Control-application-usages-i.patch
+# Request from dwalsh
+Patch851: selinux-namespace-fix.patch
#rhbz 1390308
-Patch854: nouveau-add-maxwell-to-backlight-init.patch
-
-#rhbz 1385823
-Patch855: 0001-platform-x86-ideapad-laptop-Add-Lenovo-Yoga-910-13IK.patch
-
-# CVE-2016-9755 rhbz 1400904 1400905
-Patch856: 0001-netfilter-ipv6-nf_defrag-drop-mangled-skb-on-ream-er.patch
+Patch852: nouveau-add-maxwell-to-backlight-init.patch
# END OF PATCH DEFINITIONS
@@ -1172,17 +1166,19 @@ if [ ! -d kernel-%{kversion}%{?dist}/vanilla-%{vanillaversion} ]; then
cp -al vanilla-%{kversion} vanilla-%{vanillaversion}
cd vanilla-%{vanillaversion}
+cp %{SOURCE12} .
+
# Update vanilla to the latest upstream.
# (non-released_kernel case only)
%if 0%{?rcrev}
- xzcat %{SOURCE5000} | patch -p1 -F1 -s
+ xzcat %{SOURCE5000} | ./remove-binary-diff.pl | patch -p1 -F1 -s
%if 0%{?gitrev}
- xzcat %{SOURCE5001} | patch -p1 -F1 -s
+ xzcat %{SOURCE5001} | ./remove-binary-diff.pl | patch -p1 -F1 -s
%endif
%else
# pre-{base_sublevel+1}-rc1 case
%if 0%{?gitrev}
- xzcat %{SOURCE5000} | patch -p1 -F1 -s
+ xzcat %{SOURCE5000} | ./remove-binary-diff.pl | patch -p1 -F1 -s
%endif
%endif
git init
@@ -1702,7 +1698,7 @@ BuildKernel %make_target %kernel_image
%endif
%global perf_make \
- make -s EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} %{?_smp_mflags} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 prefix=%{_prefix}
+ make -s EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 prefix=%{_prefix}
%if %{with_perf}
# perf
%{perf_make} DESTDIR=$RPM_BUILD_ROOT all
@@ -2188,6 +2184,10 @@ fi
#
#
%changelog
+* Thu Jan 12 2017 Laura Abbott <labbott@fedoraproject.org> - 4.9.4-100
+- Linux v4.9.4 rebase
+- Minor updates for Raspberry Pi 3 support (thanks pbrobinson)
+
* Mon Jan 09 2017 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.17-200
- Linux v4.8.17
diff --git a/remove-binary-diff.pl b/remove-binary-diff.pl
new file mode 100755
index 000000000..9048490ca
--- /dev/null
+++ b/remove-binary-diff.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/perl -w
+# A script to remove those terrible binary diffs from the patches which
+# screw up everything and rain on my parade.
+
+use strict;
+
+my @args=@ARGV;
+my @current_patch;
+my $is_binary = 0;
+my $cnt = 0;
+
+while(my $row = <>) {
+ # diff marks the start of a new file to check
+ if ($row =~ /^diff --git.*?(\S+)$/) {
+ if (!$is_binary) {
+ foreach my $line (@current_patch) {
+ print $line;
+ }
+ }
+ $is_binary = 0;
+ @current_patch = ();
+ } elsif ($row =~ /Binary files (.)* differ$/) {
+ $is_binary = 1;
+ } elsif ($row =~ /GIT binary patch/) {
+ $is_binary = 1;
+ }
+ push (@current_patch, $row);
+}
+
+if (!$is_binary) {
+ foreach my $line (@current_patch) {
+ print $line;
+ }
+}
diff --git a/selinux-namespace-fix.patch b/selinux-namespace-fix.patch
new file mode 100644
index 000000000..f94ec15d8
--- /dev/null
+++ b/selinux-namespace-fix.patch
@@ -0,0 +1,57 @@
+From 4a49d45dd58994f4fc9b40c502252403caadee88 Mon Sep 17 00:00:00 2001
+From: Stephen Smalley <sds@tycho.nsa.gov>
+Date: Thu, 8 Dec 2016 09:14:47 -0500
+Subject: [PATCH] selinux: allow context mounts on tmpfs, ramfs, devpts within
+ user namespaces
+
+commit aad82892af261b9903cc11c55be3ecf5f0b0b4f8 ("selinux: Add support for
+unprivileged mounts from user namespaces") prohibited any use of context
+mount options within non-init user namespaces. However, this breaks
+use of context mount options for tmpfs mounts within user namespaces,
+which are being used by Docker/runc. There is no reason to block such
+usage for tmpfs, ramfs or devpts. Exempt these filesystem types
+from this restriction.
+
+Before:
+sh$ userns_child_exec -p -m -U -M '0 1000 1' -G '0 1000 1' bash
+sh# mount -t tmpfs -o context=system_u:object_r:user_tmp_t:s0:c13 none /tmp
+mount: tmpfs is write-protected, mounting read-only
+mount: cannot mount tmpfs read-only
+
+After:
+sh$ userns_child_exec -p -m -U -M '0 1000 1' -G '0 1000 1' bash
+sh# mount -t tmpfs -o context=system_u:object_r:user_tmp_t:s0:c13 none /tmp
+sh# ls -Zd /tmp
+unconfined_u:object_r:user_tmp_t:s0:c13 /tmp
+
+Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
+Signed-off-by: Paul Moore <paul@paul-moore.com>
+---
+ security/selinux/hooks.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
+index b508a5a..e7c5481 100644
+--- a/security/selinux/hooks.c
++++ b/security/selinux/hooks.c
+@@ -834,10 +834,14 @@ static int selinux_set_mnt_opts(struct super_block *sb,
+ }
+
+ /*
+- * If this is a user namespace mount, no contexts are allowed
+- * on the command line and security labels must be ignored.
++ * If this is a user namespace mount and the filesystem type is not
++ * explicitly whitelisted, then no contexts are allowed on the command
++ * line and security labels must be ignored.
+ */
+- if (sb->s_user_ns != &init_user_ns) {
++ if (sb->s_user_ns != &init_user_ns &&
++ strcmp(sb->s_type->name, "tmpfs") &&
++ strcmp(sb->s_type->name, "ramfs") &&
++ strcmp(sb->s_type->name, "devpts")) {
+ if (context_sid || fscontext_sid || rootcontext_sid ||
+ defcontext_sid) {
+ rc = -EACCES;
+--
+2.4.11
+
diff --git a/sources b/sources
index abfb30321..a60ea42a6 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (linux-4.8.tar.xz) = a48a065f21e1c7c4de4cf8ca47b8b8d9a70f86b64e7cfa6e01be490f78895745b9c8790734b1d22182cf1f930fb87eaaa84e62ec8cc1f64ac4be9b949e7c0358
-SHA512 (perf-man-4.8.tar.gz) = 1e9707f1e11808178c1953d4f46e1789a138e9aca7bec89af7a6e209cd91e5301bc582db72cf889baa31dcba8cd3d3b1ceb4e8999ac1544ef17d513e861f2b59
-SHA512 (patch-4.8.17.xz) = df239d990077cdf697fd487b4b8abb97fe442ac9fac4ed2e90c626560fc15058363310cf40580fd000d4ad55198486594a608544ce9c2bcaf03704415aa45441
+SHA512 (linux-4.9.tar.xz) = bf67ff812cc3cb7e5059e82cc5db0d9a7c5637f7ed9a42e4730c715bf7047c81ed3a571225f92a33ef0b6d65f35595bc32d773356646df2627da55e9bc7f1f1a
+SHA512 (perf-man-4.9.tar.gz) = d23bb3da1eadd6623fddbf4696948de7675f3dcf57c711a7427dd7ae111394f58d8f42752938bbea7cd219f1e7f6f116fc67a1c74f769711063940a065f37b99
+SHA512 (patch-4.9.4.xz) = d6a81ef416068a92bfa5a6a6156cfc50e9c4c44ac6343c076551376f0ce5be486147abf7aa1eed48c3f10ef5d97d3880924c56b70ff4b92faae106d994a25e48
diff --git a/v3-vfio-pci-Fix-integer-overflows-bitmask-check.patch b/v3-vfio-pci-Fix-integer-overflows-bitmask-check.patch
deleted file mode 100644
index 5278d4486..000000000
--- a/v3-vfio-pci-Fix-integer-overflows-bitmask-check.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From patchwork Wed Oct 12 16:51:24 2016
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [v3] vfio/pci: Fix integer overflows, bitmask check
-From: Vlad Tsyrklevich <vlad@tsyrklevich.net>
-X-Patchwork-Id: 9373631
-Message-Id: <1476291084-50737-1-git-send-email-vlad@tsyrklevich.net>
-To: kvm@vger.kernel.org
-Cc: alex.williamson@redhat.com, Vlad Tsyrklevich <vlad@tsyrklevich.net>
-Date: Wed, 12 Oct 2016 18:51:24 +0200
-
-The VFIO_DEVICE_SET_IRQS ioctl did not sufficiently sanitize
-user-supplied integers, potentially allowing memory corruption. This
-patch adds appropriate integer overflow checks, checks the range bounds
-for VFIO_IRQ_SET_DATA_NONE, and also verifies that only single element
-in the VFIO_IRQ_SET_DATA_TYPE_MASK bitmask is set.
-VFIO_IRQ_SET_ACTION_TYPE_MASK is already correctly checked later in
-vfio_pci_set_irqs_ioctl().
-
-Furthermore, a kzalloc is changed to a kcalloc because the use of a
-kzalloc with an integer multiplication allowed an integer overflow
-condition to be reached without this patch. kcalloc checks for overflow
-and should prevent a similar occurrence.
-
-Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
----
- drivers/vfio/pci/vfio_pci.c | 33 +++++++++++++++++++++------------
- drivers/vfio/pci/vfio_pci_intrs.c | 2 +-
- 2 files changed, 22 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
-index d624a52..031bc08 100644
---- a/drivers/vfio/pci/vfio_pci.c
-+++ b/drivers/vfio/pci/vfio_pci.c
-@@ -829,8 +829,9 @@ static long vfio_pci_ioctl(void *device_data,
-
- } else if (cmd == VFIO_DEVICE_SET_IRQS) {
- struct vfio_irq_set hdr;
-+ size_t size;
- u8 *data = NULL;
-- int ret = 0;
-+ int max, ret = 0;
-
- minsz = offsetofend(struct vfio_irq_set, count);
-
-@@ -838,23 +839,31 @@ static long vfio_pci_ioctl(void *device_data,
- return -EFAULT;
-
- if (hdr.argsz < minsz || hdr.index >= VFIO_PCI_NUM_IRQS ||
-+ hdr.count >= (U32_MAX - hdr.start) ||
- hdr.flags & ~(VFIO_IRQ_SET_DATA_TYPE_MASK |
- VFIO_IRQ_SET_ACTION_TYPE_MASK))
- return -EINVAL;
-
-- if (!(hdr.flags & VFIO_IRQ_SET_DATA_NONE)) {
-- size_t size;
-- int max = vfio_pci_get_irq_count(vdev, hdr.index);
-+ max = vfio_pci_get_irq_count(vdev, hdr.index);
-+ if (hdr.start >= max || hdr.start + hdr.count > max)
-+ return -EINVAL;
-
-- if (hdr.flags & VFIO_IRQ_SET_DATA_BOOL)
-- size = sizeof(uint8_t);
-- else if (hdr.flags & VFIO_IRQ_SET_DATA_EVENTFD)
-- size = sizeof(int32_t);
-- else
-- return -EINVAL;
-+ switch (hdr.flags & VFIO_IRQ_SET_DATA_TYPE_MASK) {
-+ case VFIO_IRQ_SET_DATA_NONE:
-+ size = 0;
-+ break;
-+ case VFIO_IRQ_SET_DATA_BOOL:
-+ size = sizeof(uint8_t);
-+ break;
-+ case VFIO_IRQ_SET_DATA_EVENTFD:
-+ size = sizeof(int32_t);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-
-- if (hdr.argsz - minsz < hdr.count * size ||
-- hdr.start >= max || hdr.start + hdr.count > max)
-+ if (size) {
-+ if (hdr.argsz - minsz < hdr.count * size)
- return -EINVAL;
-
- data = memdup_user((void __user *)(arg + minsz),
-diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
-index c2e6089..1c46045 100644
---- a/drivers/vfio/pci/vfio_pci_intrs.c
-+++ b/drivers/vfio/pci/vfio_pci_intrs.c
-@@ -256,7 +256,7 @@ static int vfio_msi_enable(struct vfio_pci_device *vdev, int nvec, bool msix)
- if (!is_irq_none(vdev))
- return -EINVAL;
-
-- vdev->ctx = kzalloc(nvec * sizeof(struct vfio_pci_irq_ctx), GFP_KERNEL);
-+ vdev->ctx = kcalloc(nvec, sizeof(struct vfio_pci_irq_ctx), GFP_KERNEL);
- if (!vdev->ctx)
- return -ENOMEM;
-