diff options
author | Thorsten Leemhuis <fedora@leemhuis.info> | 2017-01-16 20:17:22 +0100 |
---|---|---|
committer | Thorsten Leemhuis <fedora@leemhuis.info> | 2017-01-16 20:17:22 +0100 |
commit | ca75f110bc88c5fae16d2eb326d6b660966ed9a1 (patch) | |
tree | d73f747c943110665afb8442d66516be31364429 | |
parent | 11694b34819e3f7559a12f68f6c1b06fb9e0b977 (diff) | |
parent | 6f694dee179a7fb29f4fa2f9d47edd3a2ba9a73d (diff) | |
download | kernel-ca75f110bc88c5fae16d2eb326d6b660966ed9a1.tar.gz kernel-ca75f110bc88c5fae16d2eb326d6b660966ed9a1.tar.xz kernel-ca75f110bc88c5fae16d2eb326d6b660966ed9a1.zip |
Merge remote-tracking branch 'origin/f24' into f24-user-thl-vanilla-fedorakernel-4.9.4-100.vanilla.knurd.1.fc24
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 = <®_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 = <ðphy1>; ++ 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 = <ðphy1>; ++ 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 = <®_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 + @@ -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; - |