summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2016-05-03 21:27:47 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2016-05-03 21:28:11 +0200
commit47c9cdf20e99a373730f702a2eb48d05e1ae8460 (patch)
tree41108b45c398dd4ce9d35994418287e137977525
parent56fec7e956163e9613e7af071aa9acc289415c40 (diff)
update rpi kernel patch, add mkknlimg back, more fixes
-rw-r--r--mk/kernel-ver.mk6
-rw-r--r--package/bcm28xx-bootloader/Makefile3
-rwxr-xr-xpackage/bcm28xx-bootloader/files/vcdbgbin0 -> 71804 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43430-sdio.binbin0 -> 368957 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt66
-rw-r--r--scripts/mkknlimg299
-rw-r--r--target/arm/Makefile5
-rw-r--r--target/arm/bcm28xx/patches/4.1.23/0001-raspberry-pi-github.patch (renamed from target/arm/bcm28xx/patches/4.1.22/0001-raspberry-pi-github.patch)14090
-rw-r--r--target/arm/solidrun-imx6/patches/4.1.23/0001-xbian.patch (renamed from target/arm/solidrun-imx6/patches/4.1.22/0001-xbian.patch)0
-rw-r--r--target/arm/solidrun-imx6/patches/4.1.23/0002-rt.patch (renamed from target/arm/solidrun-imx6/patches/4.1.22/0002-rt.patch)0
-rw-r--r--target/arm/systems/raspberry-pi32
-rw-r--r--target/avr32/atmel-ngw100/patches/4.1.23/0001-net-macb-improve-big-endian-CPU-support.patch (renamed from target/avr32/atmel-ngw100/patches/4.1.22/0001-net-macb-improve-big-endian-CPU-support.patch)0
-rw-r--r--target/config/Config.in.kernelversion4
-rw-r--r--target/cris/qemu-cris/patches/4.1.23/crisv32_ethernet_driver.patch (renamed from target/cris/qemu-cris/patches/4.1.22/crisv32_ethernet_driver.patch)0
-rw-r--r--target/linux/config/Config.in.bluetooth17
-rw-r--r--target/linux/config/Config.in.wireless29
-rw-r--r--target/linux/patches/4.1.23/aufs.patch (renamed from target/linux/patches/4.1.22/aufs.patch)0
-rw-r--r--target/linux/patches/4.1.23/cleankernel.patch (renamed from target/linux/patches/4.1.22/cleankernel.patch)0
-rw-r--r--target/linux/patches/4.1.23/cris-header.patch (renamed from target/linux/patches/4.1.22/cris-header.patch)0
-rw-r--r--target/linux/patches/4.1.23/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.1.22/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/4.1.23/j2-core.patch (renamed from target/linux/patches/4.1.22/j2-core.patch)0
-rw-r--r--target/linux/patches/4.1.23/mtd-rootfs.patch (renamed from target/linux/patches/4.1.22/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/4.1.23/realtime.patch (renamed from target/linux/patches/4.1.22/realtime.patch)0
-rw-r--r--target/linux/patches/4.1.23/regmap-default-on.patch (renamed from target/linux/patches/4.1.22/regmap-default-on.patch)0
-rw-r--r--target/linux/patches/4.1.23/remove-warn.patch (renamed from target/linux/patches/4.1.22/remove-warn.patch)0
-rw-r--r--target/linux/patches/4.1.23/startup.patch (renamed from target/linux/patches/4.1.22/startup.patch)0
-rw-r--r--target/linux/patches/4.1.23/use-gawk.patch (renamed from target/linux/patches/4.1.22/use-gawk.patch)0
-rw-r--r--target/linux/patches/4.1.23/use-libgcc-for-sh.patch (renamed from target/linux/patches/4.1.22/use-libgcc-for-sh.patch)0
-rw-r--r--target/m68k/qemu-m68k-mcf5208/patches/4.1.23/m68k-coldfire-fec.patch (renamed from target/m68k/qemu-m68k-mcf5208/patches/4.1.22/m68k-coldfire-fec.patch)0
-rw-r--r--target/mips/ath79/patches/4.1.23/0001-openwrt-ath79.patch (renamed from target/mips/ath79/patches/4.1.22/0001-openwrt-ath79.patch)0
-rw-r--r--target/or1k/patches/4.1.23/ld-or1k.patch (renamed from target/or1k/patches/4.1.22/ld-or1k.patch)0
31 files changed, 12293 insertions, 2228 deletions
diff --git a/mk/kernel-ver.mk b/mk/kernel-ver.mk
index e95c2c8b2..512f58332 100644
--- a/mk/kernel-ver.mk
+++ b/mk/kernel-ver.mk
@@ -31,11 +31,11 @@ KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
KERNEL_HASH:= d2a7a7536a5012cc2e6ab1ddf3d31320b4420cc4de3a4c2cda1daed8663bee09
endif
-ifeq ($(ADK_TARGET_KERNEL_VERSION_4_1_22),y)
-KERNEL_FILE_VER:= 4.1.22
+ifeq ($(ADK_TARGET_KERNEL_VERSION_4_1_23),y)
+KERNEL_FILE_VER:= 4.1.23
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
-KERNEL_HASH:= 8dcff55643f777277973979358d9ec41b621f7a15d415a0d029954ce21b67f2a
+KERNEL_HASH:= 15b13213052596f9af040dc25e01a88e950a0901cec38fabb8f38b6a661e8c74
endif
ifeq ($(ADK_TARGET_KERNEL_VERSION_3_18_31),y)
KERNEL_FILE_VER:= 3.18.31
diff --git a/package/bcm28xx-bootloader/Makefile b/package/bcm28xx-bootloader/Makefile
index 0d2828e9c..6c0fc0b5e 100644
--- a/package/bcm28xx-bootloader/Makefile
+++ b/package/bcm28xx-bootloader/Makefile
@@ -56,6 +56,7 @@ do-install:
$(CP) $(WRKBUILD)/boot/bootcode.bin $(IDIR_BCM28XX_BOOTLOADER)/boot/
printf "$(CMDLINE)\n" > $(IDIR_BCM28XX_BOOTLOADER)/boot/cmdline.txt
printf "kernel=kernel\n" > $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+ printf "dtdebug=on\n" >> $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
printf "dtparam=audio,i2s,spi,i2c\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
ifeq ($(ADK_PACKAGE_BCM28XX_BOOTLOADER_DEFAULT),y)
@@ -101,7 +102,7 @@ ifneq ($(ADK_KERNEL_SND_BCM2708_SOC_RPI_PROTO),)
endif
ifeq ($(ADK_PACKAGE_BCM28XX_DEBUGTOOL),y)
$(INSTALL_DIR) $(IDIR_BCM28XX_DEBUGTOOL)/opt/vc/bin
- $(INSTALL_BIN) $(WRKBUILD)/hardfp/opt/vc/bin/vcdbg \
+ $(INSTALL_BIN) ./files/vcdbg \
$(IDIR_BCM28XX_DEBUGTOOL)/opt/vc/bin
endif
diff --git a/package/bcm28xx-bootloader/files/vcdbg b/package/bcm28xx-bootloader/files/vcdbg
new file mode 100755
index 000000000..ba3e55e8e
--- /dev/null
+++ b/package/bcm28xx-bootloader/files/vcdbg
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43430-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac43430-sdio.bin
new file mode 100644
index 000000000..84ab5b0de
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcmfmac43430-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt b/package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt
new file mode 100644
index 000000000..ea4f648a1
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt
@@ -0,0 +1,66 @@
+# NVRAM file for BCM943430WLPTH
+# 2.4 GHz, 20 MHz BW mode
+
+# The following parameter values are just placeholders, need to be updated.
+manfid=0x2d0
+prodid=0x0727
+vendid=0x14e4
+devid=0x43e2
+boardtype=0x0727
+boardrev=0x1101
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+sromrev=11
+boardflags=0x00404201
+boardflags3=0x08000000
+xtalfreq=37400
+nocrc=1
+ag0=255
+aa2g=1
+ccode=ALL
+
+pa0itssit=0x20
+extpagain2g=0
+#PA parameters for 2.4GHz, measured at CHIP OUTPUT
+pa2ga0=-168,7161,-820
+AvVmid_c0=0x0,0xc8
+cckpwroffset0=5
+
+# PPR params
+maxp2ga0=84
+txpwrbckof=6
+cckbw202gpo=0
+legofdmbw202gpo=0x66111111
+mcsbw202gpo=0x77711111
+propbw202gpo=0xdd
+
+# OFDM IIR :
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+# PAPD mode:
+papdmode=1
+papdvalidtest=1
+pacalidx2g=42
+papdepsoffset=-22
+papdendidx=58
+
+# LTECX flags
+ltecxmux=0
+ltecxpadnum=0x0102
+ltecxfnsel=0x44
+ltecxgcigpio=0x01
+
+il0macaddr=00:90:4c:c5:12:38
+wl0id=0x431b
+
+deadman_to=0xffffffff
+# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG
+muxenab=0x1
+# CLDO PWM voltage settings - 0x4 - 1.1 volt
+#cldo_pwm=0x4
+
+#VCO freq 326.4MHz
+spurconfig=0x3
+
+edonthd20l=-75
+edoffthd20ul=-80
diff --git a/scripts/mkknlimg b/scripts/mkknlimg
new file mode 100644
index 000000000..33f81874b
--- /dev/null
+++ b/scripts/mkknlimg
@@ -0,0 +1,299 @@
+#!/usr/bin/env perl
+#
+# Originaly from: https://github.com/raspberrypi/tools/blob/master/mkimage/mkknlimg
+# Original cset : f5642106425d430e1f82ee064121a5fd0e05a386
+#
+# ----------------------------------------------------------------------
+# mkknlimg by Phil Elwell for Raspberry Pi
+# based on extract-ikconfig by Dick Streefland
+#
+# (c) 2009,2010 Dick Streefland <dick@streefland.net>
+# (c) 2014,2015 Raspberry Pi (Trading) Limited <info@raspberrypi.org>
+#
+# Licensed under the terms of the GNU General Public License.
+# ----------------------------------------------------------------------
+
+use strict;
+use warnings;
+use integer;
+
+use constant FLAG_PI => 1;
+use constant FLAG_DTOK => 2;
+use constant FLAG_DDTK => 4;
+use constant FLAG_283X => 8;
+
+my $trailer_magic = 'RPTL';
+
+my $tmpfile1 = "/tmp/mkknlimg_$$.1";
+my $tmpfile2 = "/tmp/mkknlimg_$$.2";
+
+my $dtok = 0;
+my $ddtk = 0;
+my $is_283x = 0;
+
+while (@ARGV && ($ARGV[0] =~ /^-/))
+{
+ my $arg = shift(@ARGV);
+ if ($arg eq '--dtok')
+ {
+ $dtok = 1;
+ }
+ elsif ($arg eq '--ddtk')
+ {
+ $ddtk = 1;
+ }
+ elsif ($arg eq '--283x')
+ {
+ $is_283x = 1;
+ }
+ else
+ {
+ print ("* Unknown option '$arg'\n");
+ usage();
+ }
+}
+
+usage() if (@ARGV != 2);
+
+my $kernel_file = $ARGV[0];
+my $out_file = $ARGV[1];
+
+if (! -r $kernel_file)
+{
+ print ("* File '$kernel_file' not found\n");
+ usage();
+}
+
+my $wanted_configs =
+{
+ 'CONFIG_BCM2708_DT' => FLAG_PI | FLAG_DTOK,
+ 'CONFIG_ARCH_BCM2835' => FLAG_PI | FLAG_DTOK | FLAG_283X,
+};
+
+my $wanted_strings =
+{
+ 'bcm2708_fb' => FLAG_PI,
+ 'brcm,bcm2835-mmc' => FLAG_PI,
+ 'brcm,bcm2835-sdhost' => FLAG_PI,
+ 'brcm,bcm2708-pinctrl' => FLAG_PI | FLAG_DTOK,
+ 'brcm,bcm2835-gpio' => FLAG_PI | FLAG_DTOK,
+ 'brcm,bcm2835-pm-wdt' => FLAG_PI | FLAG_DTOK | FLAG_283X,
+ 'of_overlay_apply' => FLAG_DTOK | FLAG_DDTK,
+};
+
+my $res = try_extract($kernel_file, $tmpfile1);
+$res ||= try_decompress('\037\213\010', 'xy', 'gunzip', 0,
+ $kernel_file, $tmpfile1, $tmpfile2);
+$res ||= try_decompress('\3757zXZ\000', 'abcde', 'unxz --single-stream', -1,
+ $kernel_file, $tmpfile1, $tmpfile2);
+$res ||= try_decompress('BZh', 'xy', 'bunzip2', 0,
+ $kernel_file, $tmpfile1, $tmpfile2);
+$res ||= try_decompress('\135\0\0\0', 'xxx', 'unlzma', 0,
+ $kernel_file, $tmpfile1, $tmpfile2);
+$res ||= try_decompress('\211\114\132', 'xy', 'lzop -d', 0,
+ $kernel_file, $tmpfile1, $tmpfile2);
+$res ||= try_decompress('\002\041\114\030', 'xy', 'lz4 -d', 1,
+ $kernel_file, $tmpfile1, $tmpfile2);
+
+my $append_trailer;
+my $trailer;
+my $kver = '?';
+
+$append_trailer = $dtok;
+
+if ($res)
+{
+ $kver = $res->{'kver'} || '?';
+ my $flags = $res->{'flags'};
+ print("Version: $kver\n");
+
+ if ($flags & FLAG_PI)
+ {
+ $append_trailer = 1;
+ $dtok ||= ($flags & FLAG_DTOK) != 0;
+ $is_283x ||= ($flags & FLAG_283X) != 0;
+ $ddtk ||= ($flags & FLAG_DDTK) != 0;
+ }
+ else
+ {
+ print ("* This doesn't look like a Raspberry Pi kernel. In pass-through mode.\n");
+ }
+}
+elsif (!$dtok)
+{
+ print ("* Is this a valid kernel? In pass-through mode.\n");
+}
+
+if ($append_trailer)
+{
+ printf("DT: %s\n", $dtok ? "y" : "n");
+ printf("DDT: %s\n", $ddtk ? "y" : "n");
+ printf("283x: %s\n", $is_283x ? "y" : "n");
+
+ my @atoms;
+
+ push @atoms, [ $trailer_magic, pack('V', 0) ];
+ push @atoms, [ 'KVer', $kver ];
+ push @atoms, [ 'DTOK', pack('V', $dtok) ];
+ push @atoms, [ 'DDTK', pack('V', $ddtk) ];
+ push @atoms, [ '283x', pack('V', $is_283x) ];
+
+ $trailer = pack_trailer(\@atoms);
+ $atoms[0]->[1] = pack('V', length($trailer));
+
+ $trailer = pack_trailer(\@atoms);
+}
+
+my $ofh;
+my $total_len = 0;
+
+if ($out_file eq $kernel_file)
+{
+ die "* Failed to open '$out_file' for append\n"
+ if (!open($ofh, '>>', $out_file));
+ $total_len = tell($ofh);
+}
+else
+{
+ die "* Failed to open '$kernel_file'\n"
+ if (!open(my $ifh, '<', $kernel_file));
+ die "* Failed to create '$out_file'\n"
+ if (!open($ofh, '>', $out_file));
+
+ my $copybuf;
+ while (1)
+ {
+ my $bytes = sysread($ifh, $copybuf, 64*1024);
+ last if (!$bytes);
+ syswrite($ofh, $copybuf, $bytes);
+ $total_len += $bytes;
+ }
+ close($ifh);
+}
+
+if ($trailer)
+{
+ # Pad to word-alignment
+ syswrite($ofh, "\x000\x000\x000", (-$total_len & 0x3));
+ syswrite($ofh, $trailer);
+}
+
+close($ofh);
+
+exit($trailer ? 0 : 1);
+
+END {
+ unlink($tmpfile1) if ($tmpfile1);
+ unlink($tmpfile2) if ($tmpfile2);
+}
+
+
+sub usage
+{
+ print ("Usage: mkknlimg [--dtok] [--283x] <vmlinux|zImage|bzImage> <outfile>\n");
+ exit(1);
+}
+
+sub try_extract
+{
+ my ($knl, $tmp) = @_;
+
+ my $ver = `strings "$knl" | grep -a -E "^Linux version [1-9]"`;
+
+ return undef if (!$ver);
+
+ chomp($ver);
+
+ my $res = { 'kver'=>$ver };
+ $res->{'flags'} = strings_to_flags($knl, $wanted_strings) |
+ configs_to_flags($knl, $tmp, $wanted_configs);
+
+ return $res;
+}
+
+
+sub try_decompress
+{
+ my ($magic, $subst, $zcat, $idx, $knl, $tmp1, $tmp2) = @_;
+
+ my $pos = `tr "$magic\n$subst" "\n$subst=" < "$knl" | grep -abo "^$subst"`;
+ if ($pos)
+ {
+ chomp($pos);
+ $pos = (split(/[\r\n]+/, $pos))[$idx];
+ return undef if (!defined($pos));
+ $pos =~ s/:.*[\r\n]*$//s;
+ my $cmd = "tail -c+$pos \"$knl\" | $zcat > $tmp2 2> /dev/null";
+ my $err = (system($cmd) >> 8);
+ return undef if (($err != 0) && ($err != 2));
+
+ return try_extract($tmp2, $tmp1);
+ }
+
+ return undef;
+}
+
+
+sub strings_to_flags
+{
+ my ($knl, $strings) = @_;
+ my $string_pattern = '^('.join('|', keys(%$strings)).')$';
+ my $flags = 0;
+
+ my @matches = `strings \"$knl\" | grep -E \"$string_pattern\"`;
+ foreach my $match (@matches)
+ {
+ chomp($match);
+ $flags |= $strings->{$match};
+ }
+
+ return $flags;
+}
+
+sub configs_to_flags
+{
+ my ($knl, $tmp, $configs) = @_;
+ my $config_pattern = '^('.join('|', keys(%$configs)).')=(.*)$';
+ my $cf1 = 'IKCFG_ST\037\213\010';
+ my $cf2 = '0123456789';
+ my $flags = 0;
+
+ my $pos = `tr "$cf1\n$cf2" "\n$cf2=" < "$knl" | grep -abo "^$cf2"`;
+ if ($pos)
+ {
+ $pos =~ s/:.*[\r\n]*$//s;
+ $pos += 8;
+ my $err = (system("tail -c+$pos \"$knl\" | zcat > $tmp 2> /dev/null") >> 8);
+ if (($err == 0) || ($err == 2))
+ {
+ if (open(my $fh, '<', $tmp))
+ {
+ while (my $line = <$fh>)
+ {
+ chomp($line);
+ if (($line =~ /$config_pattern/) &&
+ (($2 eq 'y') || ($2 eq 'm')))
+ {
+ $flags |= $configs->{$1};
+ }
+ }
+
+ close($fh);
+ }
+ }
+ }
+
+ return $flags;
+}
+
+sub pack_trailer
+{
+ my ($atoms) = @_;
+ my $trailer = pack('VV', 0, 0);
+ for (my $i = $#$atoms; $i>=0; $i--)
+ {
+ my $atom = $atoms->[$i];
+ $trailer .= pack('a*x!4Va4', $atom->[1], length($atom->[1]), $atom->[0]);
+ }
+ return $trailer;
+}
diff --git a/target/arm/Makefile b/target/arm/Makefile
index faa4b6cd7..eabe2a786 100644
--- a/target/arm/Makefile
+++ b/target/arm/Makefile
@@ -116,7 +116,12 @@ endif
endif
kernel-strip:
+ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
+ @echo adding DT trailer to kernel $(MAKE_TRACE)
+ PATH='$(HOST_PATH)' perl $(ADK_TOPDIR)/scripts/mkknlimg $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
+else
@cp $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
+endif
kernel-install: kernel-strip
@cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
diff --git a/target/arm/bcm28xx/patches/4.1.22/0001-raspberry-pi-github.patch b/target/arm/bcm28xx/patches/4.1.23/0001-raspberry-pi-github.patch
index 05ca0e043..6f9089b88 100644
--- a/target/arm/bcm28xx/patches/4.1.22/0001-raspberry-pi-github.patch
+++ b/target/arm/bcm28xx/patches/4.1.23/0001-raspberry-pi-github.patch
@@ -1,6 +1,6 @@
-diff -Nur linux-4.1.22.orig/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 linux-4.1.22/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00
---- linux-4.1.22.orig/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 linux-4.1.23/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00
+--- linux-4.1.23.orig/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 2016-05-02 22:53:49.000000000 +0200
@@ -0,0 +1,6 @@
+What: /sys/bus/w1/devices/.../w1_seq
+Date: Apr 2015
@@ -8,9 +8,9 @@ diff -Nur linux-4.1.22.orig/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 li
+Description: Support for the DS28EA00 chain sequence function
+ see Documentation/w1/slaves/w1_therm for detailed information
+Users: any user space application which wants to communicate with DS28EA00
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt linux-4.1.22/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt linux-4.1.23/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt 2016-05-02 22:53:49.000000000 +0200
@@ -0,0 +1,45 @@
+Broadcom BCM2835 CPRMAN clocks
+
@@ -57,9 +57,9 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/clock/brcm,bcm2835
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt linux-4.1.22/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt linux-4.1.23/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt 2016-05-02 22:53:49.000000000 +0200
@@ -48,8 +48,8 @@
bcm2835_i2s: i2s@7e203000 {
@@ -71,9 +71,9 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/dma/brcm,bcm2835-d
dmas = <&dma 2>,
<&dma 3>;
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt linux-4.1.22/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt linux-4.1.23/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/Documentation/devicetree/bindings/input/touchscreen/focaltech-ft6236.txt 2016-05-02 22:53:49.000000000 +0200
@@ -0,0 +1,35 @@
+* FocalTech FT6236 I2C touchscreen controller
+
@@ -110,9 +110,9 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/input/touchscreen/
+ touchscreen-inverted-x;
+ touchscreen-swapped-x-y;
+ };
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt linux-4.1.22/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt linux-4.1.23/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt 2016-05-02 22:53:49.000000000 +0200
@@ -0,0 +1,17 @@
+* Broadcom BCM2835 SMI character device driver.
+
@@ -131,9 +131,9 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-
+- None.
+
+
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt linux-4.1.22/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt linux-4.1.23/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt 2016-05-02 22:53:49.000000000 +0200
@@ -0,0 +1,48 @@
+* Broadcom BCM2835 SMI driver.
+
@@ -183,9 +183,9 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-
+ brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
+};
+
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt linux-4.1.22/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt linux-4.1.23/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt 2016-05-02 22:53:49.000000000 +0200
@@ -0,0 +1,42 @@
+* BCM2835 SMI NAND flash
+
@@ -230,9 +230,9 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/mtd/brcm,bcm2835-s
+ };
+};
\ No newline at end of file
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt linux-4.1.22/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt linux-4.1.23/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt 2016-05-02 22:53:49.000000000 +0200
@@ -16,8 +16,8 @@
bcm2835_i2s: i2s@7e203000 {
@@ -244,9 +244,9 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/sound/brcm,bcm2835
dmas = <&dma 2>,
<&dma 3>;
-diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/vendor-prefixes.txt linux-4.1.22/Documentation/devicetree/bindings/vendor-prefixes.txt
---- linux-4.1.22.orig/Documentation/devicetree/bindings/vendor-prefixes.txt 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/Documentation/devicetree/bindings/vendor-prefixes.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/devicetree/bindings/vendor-prefixes.txt linux-4.1.23/Documentation/devicetree/bindings/vendor-prefixes.txt
+--- linux-4.1.23.orig/Documentation/devicetree/bindings/vendor-prefixes.txt 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/Documentation/devicetree/bindings/vendor-prefixes.txt 2016-05-02 22:53:49.000000000 +0200
@@ -76,6 +76,7 @@
excito Excito
fcs Fairchild Semiconductor
@@ -255,9 +255,23 @@ diff -Nur linux-4.1.22.orig/Documentation/devicetree/bindings/vendor-prefixes.tx
fsl Freescale Semiconductor
GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc.
gef GE Fanuc Intelligent Platforms Embedded Systems, Inc.
-diff -Nur linux-4.1.22.orig/Documentation/video4linux/bcm2835-v4l2.txt linux-4.1.22/Documentation/video4linux/bcm2835-v4l2.txt
---- linux-4.1.22.orig/Documentation/video4linux/bcm2835-v4l2.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/Documentation/video4linux/bcm2835-v4l2.txt 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/filesystems/efivarfs.txt linux-4.1.23/Documentation/filesystems/efivarfs.txt
+--- linux-4.1.23.orig/Documentation/filesystems/efivarfs.txt 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/Documentation/filesystems/efivarfs.txt 2016-05-02 22:53:49.000000000 +0200
+@@ -14,10 +14,3 @@
+ efivarfs is typically mounted like this,
+
+ mount -t efivarfs none /sys/firmware/efi/efivars
+-
+-Due to the presence of numerous firmware bugs where removing non-standard
+-UEFI variables causes the system firmware to fail to POST, efivarfs
+-files that are not well-known standardized variables are created
+-as immutable files. This doesn't prevent removal - "chattr -i" will work -
+-but it does prevent this kind of failure from being accomplished
+-accidentally.
+diff -Nur linux-4.1.23.orig/Documentation/video4linux/bcm2835-v4l2.txt linux-4.1.23/Documentation/video4linux/bcm2835-v4l2.txt
+--- linux-4.1.23.orig/Documentation/video4linux/bcm2835-v4l2.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/Documentation/video4linux/bcm2835-v4l2.txt 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,60 @@
+
+BCM2835 (aka Raspberry Pi) V4L2 driver
@@ -319,9 +333,9 @@ diff -Nur linux-4.1.22.orig/Documentation/video4linux/bcm2835-v4l2.txt linux-4.1
+List of available formats:
+
+$ v4l2-ctl --list-formats
-diff -Nur linux-4.1.22.orig/Documentation/w1/slaves/w1_therm linux-4.1.22/Documentation/w1/slaves/w1_therm
---- linux-4.1.22.orig/Documentation/w1/slaves/w1_therm 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/Documentation/w1/slaves/w1_therm 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/Documentation/w1/slaves/w1_therm linux-4.1.23/Documentation/w1/slaves/w1_therm
+--- linux-4.1.23.orig/Documentation/w1/slaves/w1_therm 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/Documentation/w1/slaves/w1_therm 2016-05-02 22:53:50.000000000 +0200
@@ -11,12 +11,14 @@
Description
-----------
@@ -349,9 +363,25 @@ diff -Nur linux-4.1.22.orig/Documentation/w1/slaves/w1_therm linux-4.1.22/Docume
+knowledge of the bus ordering. Support is provided through the sysfs
+w1_seq file. The file will contain a single line with an integer value
+representing the device index in the bus starting at 0.
-diff -Nur linux-4.1.22.orig/arch/arm/Kconfig linux-4.1.22/arch/arm/Kconfig
---- linux-4.1.22.orig/arch/arm/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/Kconfig 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/MAINTAINERS linux-4.1.23/MAINTAINERS
+--- linux-4.1.23.orig/MAINTAINERS 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/MAINTAINERS 2016-05-02 22:53:50.000000000 +0200
+@@ -9533,11 +9533,9 @@
+ F: drivers/net/ethernet/dlink/sundance.c
+
+ SUPERH
+-M: Yoshinori Sato <ysato@users.sourceforge.jp>
+-M: Rich Felker <dalias@libc.org>
+ L: linux-sh@vger.kernel.org
+ Q: http://patchwork.kernel.org/project/linux-sh/list/
+-S: Maintained
++S: Orphan
+ F: Documentation/sh/
+ F: arch/sh/
+ F: drivers/sh/
+diff -Nur linux-4.1.23.orig/arch/arm/Kconfig linux-4.1.23/arch/arm/Kconfig
+--- linux-4.1.23.orig/arch/arm/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/Kconfig 2016-05-02 22:53:50.000000000 +0200
@@ -314,6 +314,42 @@
default ARCH_VERSATILE if !MMU
default ARCH_MULTIPLATFORM if MMU
@@ -405,9 +435,18 @@ diff -Nur linux-4.1.22.orig/arch/arm/Kconfig linux-4.1.22/arch/arm/Kconfig
source "arch/arm/mach-mvebu/Kconfig"
source "arch/arm/mach-alpine/Kconfig"
-diff -Nur linux-4.1.22.orig/arch/arm/Kconfig.debug linux-4.1.22/arch/arm/Kconfig.debug
---- linux-4.1.22.orig/arch/arm/Kconfig.debug 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/Kconfig.debug 2016-04-29 18:02:45.000000000 +0200
+@@ -1717,7 +1756,7 @@
+
+ config UACCESS_WITH_MEMCPY
+ bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
+- depends on MMU
++ depends on MMU && !CPU_SW_DOMAIN_PAN
+ default y if CPU_FEROCEON
+ help
+ Implement faster copy_to_user and clear_user methods for CPU
+diff -Nur linux-4.1.23.orig/arch/arm/Kconfig.debug linux-4.1.23/arch/arm/Kconfig.debug
+--- linux-4.1.23.orig/arch/arm/Kconfig.debug 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/Kconfig.debug 2016-05-02 22:53:50.000000000 +0200
@@ -1196,6 +1196,14 @@
options; the platform specific options are deprecated
and will be soon removed.
@@ -423,9 +462,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/Kconfig.debug linux-4.1.22/arch/arm/Kconfig
endchoice
config DEBUG_AT91_UART
-diff -Nur linux-4.1.22.orig/arch/arm/Makefile linux-4.1.22/arch/arm/Makefile
---- linux-4.1.22.orig/arch/arm/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/Makefile 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/Makefile linux-4.1.23/arch/arm/Makefile
+--- linux-4.1.23.orig/arch/arm/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/Makefile 2016-05-02 22:53:50.000000000 +0200
@@ -150,6 +150,8 @@
# Machine directory name. This list is sorted alphanumerically
@@ -435,9 +474,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/Makefile linux-4.1.22/arch/arm/Makefile
machine-$(CONFIG_ARCH_ALPINE) += alpine
machine-$(CONFIG_ARCH_AT91) += at91
machine-$(CONFIG_ARCH_AXXIA) += axxia
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/Makefile linux-4.1.22/arch/arm/boot/dts/Makefile
---- linux-4.1.22.orig/arch/arm/boot/dts/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/boot/dts/Makefile 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/Makefile linux-4.1.23/arch/arm/boot/dts/Makefile
+--- linux-4.1.23.orig/arch/arm/boot/dts/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/boot/dts/Makefile 2016-05-02 22:53:50.000000000 +0200
@@ -1,5 +1,25 @@
ifeq ($(CONFIG_OF),y)
@@ -482,9 +521,21 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/Makefile linux-4.1.22/arch/arm/boo
+ifeq ($(RPI_DT_OVERLAYS),y)
+ DTC_FLAGS ?= -@
+endif
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/armada-375.dtsi linux-4.1.23/arch/arm/boot/dts/armada-375.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/armada-375.dtsi 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/boot/dts/armada-375.dtsi 2016-05-02 22:53:50.000000000 +0200
+@@ -508,7 +508,7 @@
+ };
+
+ sata@a0000 {
+- compatible = "marvell,armada-370-sata";
++ compatible = "marvell,orion-sata";
+ reg = <0xa0000 0x5000>;
+ interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&gateclk 14>, <&gateclk 20>;
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,144 @@
+/dts-v1/;
+
@@ -630,9 +681,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-4.1.2
+ sd_debug = <&sdhost>,"brcm,debug";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-b.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-b.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-b.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-b.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-b.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-b.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,134 @@
+/dts-v1/;
+
@@ -768,9 +819,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-4.1.22/arc
+ sd_debug = <&sdhost>,"brcm,debug";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-cm.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-cm.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-cm.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-cm.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,96 @@
+/dts-v1/;
+
@@ -868,9 +919,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-4.1.22/ar
+ i2c2_baudrate = <&i2c2>,"clock-frequency:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,45 @@
+/include/ "bcm2708.dtsi"
+
@@ -917,9 +968,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-4.1.22/a
+ sd_overclock = <&mmc>,"brcm,overclock-50:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708.dtsi linux-4.1.22/arch/arm/boot/dts/bcm2708.dtsi
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2708.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2708.dtsi 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2708.dtsi linux-4.1.23/arch/arm/boot/dts/bcm2708.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2708.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2708.dtsi 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,25 @@
+/include/ "bcm2708_common.dtsi"
+
@@ -946,9 +997,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708.dtsi linux-4.1.22/arch/arm
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708_common.dtsi linux-4.1.22/arch/arm/boot/dts/bcm2708_common.dtsi
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2708_common.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2708_common.dtsi 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2708_common.dtsi linux-4.1.23/arch/arm/boot/dts/bcm2708_common.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2708_common.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2708_common.dtsi 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,347 @@
+/include/ "skeleton.dtsi"
+
@@ -1297,9 +1348,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2708_common.dtsi linux-4.1.22/a
+ cache_line_size = <&vchiq>, "cache-line-size:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-4.1.22/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-4.1.23/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,144 @@
+/dts-v1/;
+
@@ -1445,9 +1496,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-4.1.22/a
+ sd_debug = <&sdhost>,"brcm,debug";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2709.dtsi linux-4.1.22/arch/arm/boot/dts/bcm2709.dtsi
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2709.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2709.dtsi 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2709.dtsi linux-4.1.23/arch/arm/boot/dts/bcm2709.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2709.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2709.dtsi 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,76 @@
+/include/ "bcm2708_common.dtsi"
+
@@ -1525,9 +1576,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2709.dtsi linux-4.1.22/arch/arm
+ <&v7_cpu3>, "clock-frequency:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2710-rpi-3-b.dts linux-4.1.22/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2710-rpi-3-b.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2710-rpi-3-b.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2710-rpi-3-b.dts linux-4.1.23/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2710-rpi-3-b.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2710-rpi-3-b.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,191 @@
+/dts-v1/;
+
@@ -1582,9 +1633,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2710-rpi-3-b.dts linux-4.1.22/a
+ };
+
+ uart1_pins: uart1_pins {
-+ brcm,pins = <14 15>;
-+ brcm,function = <2>; /* alt5=UART1 */
-+ brcm,pull = <0 2>;
++ brcm,pins;
++ brcm,function;
++ brcm,pull;
+ };
+};
+
@@ -1720,9 +1771,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2710-rpi-3-b.dts linux-4.1.22/a
+ sd_debug = <&sdhost>,"brcm,debug";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2710.dtsi linux-4.1.22/arch/arm/boot/dts/bcm2710.dtsi
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2710.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2710.dtsi 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2710.dtsi linux-4.1.23/arch/arm/boot/dts/bcm2710.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2710.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/bcm2710.dtsi 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,76 @@
+/include/ "bcm2708_common.dtsi"
+
@@ -1800,9 +1851,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2710.dtsi linux-4.1.22/arch/arm
+ <&v7_cpu3>, "clock-frequency:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts linux-4.1.22/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts linux-4.1.23/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts 2016-05-02 22:53:50.000000000 +0200
@@ -4,27 +4,40 @@
/ {
compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
@@ -1861,9 +1912,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts linux-4.1.2
+ pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi-b.dts linux-4.1.22/arch/arm/boot/dts/bcm2835-rpi-b.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi-b.dts 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2835-rpi-b.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2835-rpi-b.dts linux-4.1.23/arch/arm/boot/dts/bcm2835-rpi-b.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2835-rpi-b.dts 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/boot/dts/bcm2835-rpi-b.dts 2016-05-02 22:53:50.000000000 +0200
@@ -5,19 +5,28 @@
compatible = "raspberrypi,model-b", "brcm,bcm2835";
model = "Raspberry Pi Model B";
@@ -1903,9 +1954,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi-b.dts linux-4.1.22/arc
+ act_led_activelow = <&act_led>,"gpios:8";
};
};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi.dtsi linux-4.1.22/arch/arm/boot/dts/bcm2835-rpi.dtsi
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi.dtsi 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2835-rpi.dtsi 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2835-rpi.dtsi linux-4.1.23/arch/arm/boot/dts/bcm2835-rpi.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2835-rpi.dtsi 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/boot/dts/bcm2835-rpi.dtsi 2016-05-02 22:53:50.000000000 +0200
@@ -1,51 +1,133 @@
/include/ "bcm2835.dtsi"
@@ -2058,9 +2109,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835-rpi.dtsi linux-4.1.22/arch
+ audio = <&audio>,"status";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835.dtsi linux-4.1.22/arch/arm/boot/dts/bcm2835.dtsi
---- linux-4.1.22.orig/arch/arm/boot/dts/bcm2835.dtsi 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/boot/dts/bcm2835.dtsi 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/bcm2835.dtsi linux-4.1.23/arch/arm/boot/dts/bcm2835.dtsi
+--- linux-4.1.23.orig/arch/arm/boot/dts/bcm2835.dtsi 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/boot/dts/bcm2835.dtsi 2016-05-02 22:53:50.000000000 +0200
@@ -6,14 +6,15 @@
interrupt-parent = <&intc>;
@@ -2177,10 +2228,10 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/bcm2835.dtsi linux-4.1.22/arch/arm
};
clk_i2c: clock@1 {
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/Makefile linux-4.1.22/arch/arm/boot/dts/overlays/Makefile
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/Makefile 2016-04-29 18:02:45.000000000 +0200
-@@ -0,0 +1,84 @@
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/Makefile linux-4.1.23/arch/arm/boot/dts/overlays/Makefile
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/Makefile 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,87 @@
+ifeq ($(CONFIG_OF),y)
+
+# Overlays for the Raspberry Pi platform
@@ -2198,6 +2249,8 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/Makefile linux-4.1.22/arc
+dtb-$(RPI_DT_OVERLAYS) += ads7846-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += at86rf233-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor-overlay.dtb
++dtb-$(RPI_DT_OVERLAYS) += boomberry-dac-overlay.dtb
++dtb-$(RPI_DT_OVERLAYS) += boomberry-digi-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += dht11-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += enc28j60-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += gpio-ir-overlay.dtb
@@ -2220,6 +2273,7 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/Makefile linux-4.1.22/arc
+dtb-$(RPI_DT_OVERLAYS) += mcp2515-can1-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb
++dtb-$(RPI_DT_OVERLAYS) += pi3-act-led-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += pi3-disable-bt-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += pi3-miniuart-bt-overlay.dtb
+dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb
@@ -2265,10 +2319,10 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/Makefile linux-4.1.22/arc
+ifeq ($(RPI_DT_OVERLAYS),y)
+ DTC_FLAGS ?= -@
+endif
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/README linux-4.1.22/arch/arm/boot/dts/overlays/README
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/README 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/README 2016-04-29 18:02:45.000000000 +0200
-@@ -0,0 +1,863 @@
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/README linux-4.1.23/arch/arm/boot/dts/overlays/README
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/README 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/README 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,914 @@
+Introduction
+============
+
@@ -2407,12 +2461,14 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/README linux-4.1.22/arch/
+
+ act_led_activelow Set to "on" to invert the sense of the LED
+ (default "off")
++ N.B. For Pi3 see pi3-act-led overlay.
+
+ act_led_gpio Set which GPIO to use for the activity LED
+ (in case you want to connect it to an external
+ device)
+ (default "16" on a non-Plus board, "47" on a
+ Plus or Pi 2)
++ N.B. For Pi3 see pi3-act-led overlay.
+
+ pwr_led_trigger
+ pwr_led_activelow
@@ -2474,6 +2530,32 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/README linux-4.1.22/arch/
+Params: <None>
+
+
++Name: boomberry-dac
++Info: Configures the BoomBerry DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
++ cards
++Load: dtoverlay=boomberry-dac,<param>=<val>
++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
++ Digital volume control. Enable with
++ "dtoverlay=boomberry-dac,24db_digital_gain"
++ (The default behaviour is that the Digital
++ volume control is limited to a maximum of
++ 0dB. ie. it can attenuate but not provide
++ gain. For most users, this will be desired
++ as it will prevent clipping. By appending
++ the 24dB_digital_gain parameter, the Digital
++ volume control will allow up to 24dB of
++ gain. If this parameter is enabled, it is the
++ responsibility of the user to ensure that
++ the Digital volume control is set to a value
++ that does not result in clipping/distortion!)
++
++
++Name: boomberry-digi
++Info: Configures the BoomBerry Digi HAT and Digi Zero audio cards
++Load: dtoverlay=boomberry-digi
++Params: <None>
++
++
+Name: dht11
+Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors
+ Also sometimes found with the part number(s) AM230x.
@@ -2613,8 +2695,12 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/README linux-4.1.22/arch/
+Load: dtoverlay=i2c-rtc,<param>=<val>
+Params: ds1307 Select the DS1307 device
+
++ ds1339 Select the DS1339 device
++
+ ds3231 Select the DS3231 device
+
++ mcp7940x Select the MCP7940x device
++
+ mcp7941x Select the MCP7941x device
+
+ pcf2127 Select the PCF2127 device
@@ -2623,6 +2709,8 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/README linux-4.1.22/arch/
+
+ pcf8563 Select the PCF8563 device
+
++ trickle-resistor-ohms Resistor value for trickle charge (DS1339-only)
++
+
+Name: i2c0-bcm2708
+Info: Enable the i2c_bcm2708 driver for the i2c0 bus
@@ -2749,6 +2837,23 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/README linux-4.1.22/arch/
+[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
+
+
++Name: pi3-act-led
++Info: Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
++ from the VPU. There is a special driver for this with a separate DT
++ node, which has the unfortunate consequence of breaking the
++ act_led_gpio and act_led_activelow dtparams.
++ This overlay changes the GPIO controller back to the standard one and
++ restores the dtparams.
++Load: dtoverlay=pi3-act-led,<param>=<val>
++Params: activelow Set to "on" to invert the sense of the LED
++ (default "off")
++
++ gpio Set which GPIO to use for the activity LED
++ (in case you want to connect it to an external
++ device)
++ REQUIRED
++
++
+Name: pi3-disable-bt
+Info: Disable Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15
+ N.B. To disable the systemd service that initialises the modem so it
@@ -3132,9 +3237,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/README linux-4.1.22/arch/
+Raspberry Pi. There is a more complete explanation here:
+
+http://www.raspberrypi.org/documentation/configuration/device-tree.md
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/ads7846-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/ads7846-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/ads7846-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/ads7846-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/ads7846-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/ads7846-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/ads7846-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/ads7846-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,83 @@
+/*
+ * Generic Device Tree overlay for the ADS7846 touch controller
@@ -3219,9 +3324,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/ads7846-overlay.dts linux
+ xohms = <&ads7846>,"ti,x-plate-ohms;0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/at86rf233-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/at86rf233-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/at86rf233-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/at86rf233-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/at86rf233-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/at86rf233-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,54 @@
+/dts-v1/;
+/plugin/;
@@ -3277,9 +3382,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/at86rf233-overlay.dts lin
+ trim = <&lowpan0>, "xtal-trim.0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,23 @@
+// Definitions for BMP085/BMP180 digital barometric pressure and temperature sensors from Bosch Sensortec
+/dts-v1/;
@@ -3304,9 +3409,99 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/dht11-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/dht11-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/dht11-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/dht11-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,43 @@
++// Definitions for BoomBerry DAC
++/dts-v1/;
++/plugin/;
++
++/ {
++ compatible = "brcm,bcm2708";
++
++ fragment@0 {
++ target = <&sound>;
++ frag0: __overlay__ {
++ compatible = "boomberry,boomberry-dac";
++ i2s-controller = <&i2s>;
++ status = "okay";
++ };
++ };
++
++ fragment@1 {
++ target = <&i2s>;
++ __overlay__ {
++ status = "okay";
++ };
++ };
++
++ fragment@2 {
++ target = <&i2c1>;
++ __overlay__ {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "okay";
++
++ pcm5122@4d {
++ #sound-dai-cells = <0>;
++ compatible = "ti,pcm5122";
++ reg = <0x4d>;
++ status = "okay";
++ };
++ };
++ };
++
++ __overrides__ {
++ 24db_digital_gain = <&frag0>,"boomberry,24db_digital_gain?";
++ };
++};
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,39 @@
++// Definitions for BoomBerry Digi
++/dts-v1/;
++/plugin/;
++
++/ {
++ compatible = "brcm,bcm2708";
++
++ fragment@0 {
++ target = <&sound>;
++ __overlay__ {
++ compatible = "boomberry,boomberry-digi";
++ i2s-controller = <&i2s>;
++ status = "okay";
++ };
++ };
++
++ fragment@1 {
++ target = <&i2s>;
++ __overlay__ {
++ status = "okay";
++ };
++ };
++
++ fragment@2 {
++ target = <&i2c1>;
++ __overlay__ {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "okay";
++
++ wm8804@3b {
++ #sound-dai-cells = <0>;
++ compatible = "wlf,wm8804";
++ reg = <0x3b>;
++ status = "okay";
++ };
++ };
++ };
++};
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/dht11-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/dht11-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/dht11-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/dht11-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,39 @@
+/*
+ * Overlay for the DHT11/21/22 humidity/temperature sensor modules.
@@ -3347,9 +3542,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/dht11-overlay.dts linux-4
+ <&dht11>,"gpios:4";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/enc28j60-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/enc28j60-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/enc28j60-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/enc28j60-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/enc28j60-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/enc28j60-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,50 @@
+// Overlay for the Microchip ENC28J60 Ethernet Controller
+/dts-v1/;
@@ -3401,9 +3596,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/enc28j60-overlay.dts linu
+ speed = <&eth1>, "spi-max-frequency:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,45 @@
+// Definitions for ir-gpio module
+/dts-v1/;
@@ -3450,9 +3645,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts linux
+ rc-map-name = <&gpio_ir>,"linux,rc-map-name"; // default rc map
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,34 @@
+// Definitions for gpio-poweroff module
+/dts-v1/;
@@ -3488,9 +3683,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
+ active_low = <&power_ctrl>,"gpios:8";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,39 @@
+// Definitions for HiFiBerry Amp/Amp+
+/dts-v1/;
@@ -3531,9 +3726,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,34 @@
+// Definitions for HiFiBerry DAC
+/dts-v1/;
@@ -3569,9 +3764,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,54 @@
+// Definitions for HiFiBerry DAC+
+/dts-v1/;
@@ -3627,9 +3822,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay
+ 24db_digital_gain = <&frag1>,"hifiberry,24db_digital_gain?";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,39 @@
+// Definitions for HiFiBerry Digi
+/dts-v1/;
@@ -3670,9 +3865,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dt
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hy28a-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/hy28a-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/hy28a-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/hy28a-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/hy28a-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/hy28a-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/hy28a-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/hy28a-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,87 @@
+/*
+ * Device Tree overlay for HY28A display
@@ -3761,9 +3956,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hy28a-overlay.dts linux-4
+ <&hy28a_pins>, "brcm,pins:2";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hy28b-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/hy28b-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/hy28b-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/hy28b-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/hy28b-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/hy28b-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/hy28b-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/hy28b-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,142 @@
+/*
+ * Device Tree overlay for HY28b display shield by Texy
@@ -3907,9 +4102,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/hy28b-overlay.dts linux-4
+ <&hy28b_pins>, "brcm,pins:2";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,28 @@
+// Overlay for i2c_gpio bitbanging host bus.
+/dts-v1/;
@@ -3939,10 +4134,10 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts linu
+ };
+};
+
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts 2016-04-29 18:02:45.000000000 +0200
-@@ -0,0 +1,55 @@
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,69 @@
+// Definitions for several I2C based Real Time Clocks
+/dts-v1/;
+/plugin/;
@@ -3962,6 +4157,17 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts linux
+ reg = <0x68>;
+ status = "disable";
+ };
++ ds1339: ds1339@68 {
++ compatible = "dallas,ds1339";
++ trickle-resistor-ohms = <0>;
++ reg = <0x68>;
++ status = "disable";
++ };
++ mcp7940x: mcp7940x@6f {
++ compatible = "microchip,mcp7940x";
++ reg = <0x6f>;
++ status = "disable";
++ };
+ mcp7941x: mcp7941x@6f {
+ compatible = "microchip,mcp7941x";
+ reg = <0x6f>;
@@ -3991,16 +4197,19 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts linux
+ };
+ __overrides__ {
+ ds1307 = <&ds1307>,"status";
++ ds1339 = <&ds1339>,"status";
+ ds3231 = <&ds3231>,"status";
++ mcp7940x = <&mcp7940x>,"status";
+ mcp7941x = <&mcp7941x>,"status";
+ pcf2127 = <&pcf2127>,"status";
+ pcf8523 = <&pcf8523>,"status";
+ pcf8563 = <&pcf8563>,"status";
++ trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,36 @@
+/*
+ * Device tree overlay for i2c_bcm2708, i2c0 bus
@@ -4038,9 +4247,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c0-bcm2708-overlay.dts
+ scl0_pin = <&i2c0_pins>,"brcm,pins:4";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,37 @@
+/*
+ * Device tree overlay for i2c_bcm2708, i2c1 bus
@@ -4079,9 +4288,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2c1-bcm2708-overlay.dts
+ pin_func = <&i2c1_pins>,"brcm,function:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,13 @@
+/dts-v1/;
+/plugin/;
@@ -4096,9 +4305,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts linu
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,39 @@
+// Definitions for IQaudIO DAC
+/dts-v1/;
@@ -4139,9 +4348,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts l
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,43 @@
+// Definitions for IQaudIO DAC+
+/dts-v1/;
@@ -4186,9 +4395,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.d
+ 24db_digital_gain = <&frag0>,"iqaudio,24db_digital_gain?";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,57 @@
+// Definitions for lirc-rpi module
+/dts-v1/;
@@ -4247,9 +4456,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts linu
+ debug = <&lirc_rpi>,"rpi,debug:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,69 @@
+/*
+ * Device tree overlay for mcp251x/can0 on spi0.0
@@ -4320,9 +4529,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
+ interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,69 @@
+/*
+ * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner
@@ -4393,9 +4602,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
+ interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mmc-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/mmc-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/mmc-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/mmc-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/mmc-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/mmc-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/mmc-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/mmc-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,47 @@
+/dts-v1/;
+/plugin/;
@@ -4444,9 +4653,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mmc-overlay.dts linux-4.1
+ overclock_50 = <&frag0>,"brcm,overclock-50:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mz61581-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/mz61581-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/mz61581-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/mz61581-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/mz61581-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/mz61581-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/mz61581-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/mz61581-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,111 @@
+/*
+ * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec
@@ -4559,10 +4768,41 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/mz61581-overlay.dts linux
+ xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts 2016-04-29 18:02:45.000000000 +0200
-@@ -0,0 +1,48 @@
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pi3-act-led-overlay.dts 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,27 @@
++/dts-v1/;
++/plugin/;
++
++/* Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
++ from the VPU. There is a special driver for this with a separate DT node,
++ which has the unfortunate consequence of breaking the act_led_gpio and
++ act_led_activelow dtparams.
++
++ This overlay changes the GPIO controller back to the standard one and
++ restores the dtparams.
++*/
++
++/{
++ compatible = "brcm,bcm2708";
++
++ fragment@0 {
++ target = <&act_led>;
++ frag0: __overlay__ {
++ gpios = <&gpio 0 0>;
++ };
++ };
++
++ __overrides__ {
++ gpio = <&frag0>,"gpios:4";
++ activelow = <&frag0>,"gpios:8";
++ };
++};
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,46 @@
+/dts-v1/;
+/plugin/;
+
@@ -4593,13 +4833,11 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dt
+ };
+
+ fragment@2 {
-+ target = <&gpio>;
++ target = <&uart0_pins>;
+ __overlay__ {
-+ uart0_pins: uart0_pins {
-+ brcm,pins = <14 15>;
-+ brcm,function = <4>; /* alt0 */
-+ brcm,pull = <0 2>;
-+ };
++ brcm,pins;
++ brcm,function;
++ brcm,pull;
+ };
+ };
+
@@ -4611,10 +4849,10 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dt
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts 2016-04-29 18:02:45.000000000 +0200
-@@ -0,0 +1,63 @@
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,64 @@
+/dts-v1/;
+/plugin/;
+
@@ -4654,23 +4892,24 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.d
+ };
+
+ fragment@2 {
-+ target = <&gpio>;
++ target = <&uart0_pins>;
+ __overlay__ {
-+ uart0_pins: uart0_pins {
-+ brcm,pins = <14 15>;
-+ brcm,function = <4>; /* alt0 */
-+ brcm,pull = <0 2>;
-+ };
-+
-+ uart1_pins: uart1_pins {
-+ brcm,pins = <32 33>;
-+ brcm,function = <2>; /* alt5=UART1 */
-+ brcm,pull = <0 2>;
-+ };
++ brcm,pins;
++ brcm,function;
++ brcm,pull;
+ };
+ };
+
+ fragment@3 {
++ target = <&uart1_pins>;
++ __overlay__ {
++ brcm,pins = <32 33>;
++ brcm,function = <2>; /* alt5=UART1 */
++ brcm,pull = <0 2>;
++ };
++ };
++
++ fragment@4 {
+ target-path = "/aliases";
+ __overlay__ {
+ serial0 = "/soc/uart@7e201000";
@@ -4678,9 +4917,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.d
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/piscreen-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/piscreen-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/piscreen-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/piscreen-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/piscreen-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/piscreen-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/piscreen-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/piscreen-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,96 @@
+/*
+ * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker
@@ -4778,9 +5017,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/piscreen-overlay.dts linu
+ xohms = <&piscreen_ts>,"ti,x-plate-ohms;0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,100 @@
+ /*
+ * Device Tree overlay for PiScreen2 3.5" TFT with resistive touch by Ozzmaker.com
@@ -4882,9 +5121,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts li
+ };
+};
+
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,88 @@
+/*
+ * Device Tree overlay for Adafruit PiTFT 2.8" capacitive touch screen
@@ -4974,9 +5213,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pitft28-capacitive-overla
+ touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,115 @@
+/*
+ * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen
@@ -5093,9 +5332,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pitft28-resistive-overlay
+ debug = <&pitft>,"debug:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,34 @@
+/dts-v1/;
+/plugin/;
@@ -5131,9 +5370,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts linu
+ <&pps_pins>,"brcm,pins:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,53 @@
+/dts-v1/;
+/plugin/;
@@ -5188,9 +5427,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts lin
+ clock = <&frag2>,"clock-frequency:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pwm-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/pwm-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/pwm-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/pwm-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/pwm-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/pwm-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/pwm-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/pwm-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,49 @@
+/dts-v1/;
+/plugin/;
@@ -5241,9 +5480,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/pwm-overlay.dts linux-4.1
+ clock = <&frag2>,"clock-frequency:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/qca7000-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/qca7000-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/qca7000-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/qca7000-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/qca7000-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/qca7000-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/qca7000-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/qca7000-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,52 @@
+// Overlay for the Qualcomm Atheros QCA7000 on I2SE's PLC Stamp micro EVK
+// Visit: https://www.i2se.com/product/plc-stamp-micro-evk for details
@@ -5297,9 +5536,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/qca7000-overlay.dts linux
+ speed = <&eth1>, "spi-max-frequency:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/raspidac3-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/raspidac3-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/raspidac3-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/raspidac3-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/raspidac3-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/raspidac3-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/raspidac3-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/raspidac3-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,45 @@
+// Definitions for RaspiDACv3
+/dts-v1/;
@@ -5346,9 +5585,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/raspidac3-overlay.dts lin
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,21 @@
+/*
+ * Devicetree overlay for mailbox-driven Raspberry Pi DSI Display
@@ -5371,9 +5610,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,34 @@
+// Definitions for RPi DAC
+/dts-v1/;
@@ -5409,9 +5648,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts linux
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-display-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-display-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/rpi-display-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-display-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-display-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/rpi-display-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,83 @@
+/*
+ * Device Tree overlay for rpi-display by Watterott
@@ -5496,9 +5735,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-display-overlay.dts l
+ swapxy = <&rpidisplay_ts>,"ti,swap-xy?";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,17 @@
+/dts-v1/;
+/plugin/;
@@ -5517,9 +5756,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts li
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,39 @@
+// Definitions for Rpi-Proto
+/dts-v1/;
@@ -5560,9 +5799,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts lin
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,47 @@
+// rpi-sense HAT
+/dts-v1/;
@@ -5611,9 +5850,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts lin
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdhost-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/sdhost-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdhost-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/sdhost-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/sdhost-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/sdhost-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/sdhost-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/sdhost-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,31 @@
+/dts-v1/;
+/plugin/;
@@ -5646,9 +5885,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdhost-overlay.dts linux-
+ debug = <&frag0>,"brcm,debug?";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,36 @@
+/* Enable 1-bit SDIO from MMC interface via GPIOs 22-25. Includes sdhost overlay. */
+
@@ -5686,9 +5925,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts lin
+ sdio_overclock = <&sdio_mmc>,"brcm,overclock-50:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdio-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/sdio-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/sdio-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/sdio-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/sdio-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/sdio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/sdio-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,37 @@
+/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */
+
@@ -5727,9 +5966,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/sdio-overlay.dts linux-4.
+ sdio_overclock = <&sdio_mmc>,"brcm,overclock-50:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-dev-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-dev-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/smi-dev-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/smi-dev-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/smi-dev-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/smi-dev-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,18 @@
+// Description: Overlay to enable character device interface for SMI.
+// Author: Luke Wren <luke@raspberrypi.org>
@@ -5749,9 +5988,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-dev-overlay.dts linux
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-nand-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-nand-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/smi-nand-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/smi-nand-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/smi-nand-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/smi-nand-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,69 @@
+// Description: Overlay to enable NAND flash through
+// the secondary memory interface
@@ -5822,9 +6061,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-nand-overlay.dts linu
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/smi-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/smi-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/smi-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/smi-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/smi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/smi-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,37 @@
+// Description: Overlay to enable the secondary memory interface peripheral
+// Author: Luke Wren
@@ -5863,9 +6102,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/smi-overlay.dts linux-4.1
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,18 @@
+/*
+ * Device tree overlay for spi-bcm2835
@@ -5885,9 +6124,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts l
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,18 @@
+/*
+ * Device tree overlay for spi-bcm2835
@@ -5907,9 +6146,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts l
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-dma-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/spi-dma-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-dma-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/spi-dma-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/spi-dma-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/spi-dma-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/spi-dma-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/spi-dma-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,20 @@
+/*
+ * Device tree overlay for spi-bcm2835 to allow dma
@@ -5931,9 +6170,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/spi-dma-overlay.dts linux
+ };
+ };
+ };
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,216 @@
+/*
+ * tinylcd35-overlay.dts
@@ -6151,9 +6390,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts lin
+ keypad = <&keypad>,"status";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/uart1-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/uart1-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/uart1-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/uart1-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/uart1-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/uart1-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/uart1-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/uart1-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,38 @@
+/dts-v1/;
+/plugin/;
@@ -6193,9 +6432,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/uart1-overlay.dts linux-4
+ rxd1_pin = <&uart1_pins>,"brcm,pins:4";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,95 @@
+/*
+ * vc4-kms-v3d-overlay.dts
@@ -6292,9 +6531,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts l
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/vga666-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/vga666-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/vga666-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/vga666-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/vga666-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/vga666-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/vga666-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/vga666-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,30 @@
+/dts-v1/;
+/plugin/;
@@ -6326,9 +6565,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/vga666-overlay.dts linux-
+ };
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,39 @@
+// Definitions for w1-gpio module (without external pullup)
+/dts-v1/;
@@ -6369,9 +6608,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts linux
+ pullup = <&w1>,"rpi,parasitic-power:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,41 @@
+// Definitions for w1-gpio module (with external pullup)
+/dts-v1/;
@@ -6414,9 +6653,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dt
+ pullup = <&w1>,"rpi,parasitic-power:0";
+ };
+};
-diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/wittypi-overlay.dts linux-4.1.22/arch/arm/boot/dts/overlays/wittypi-overlay.dts
---- linux-4.1.22.orig/arch/arm/boot/dts/overlays/wittypi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/boot/dts/overlays/wittypi-overlay.dts 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/boot/dts/overlays/wittypi-overlay.dts linux-4.1.23/arch/arm/boot/dts/overlays/wittypi-overlay.dts
+--- linux-4.1.23.orig/arch/arm/boot/dts/overlays/wittypi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/boot/dts/overlays/wittypi-overlay.dts 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,44 @@
+/*
+ * Device Tree overlay for Witty Pi extension board by UUGear
@@ -6462,10 +6701,10 @@ diff -Nur linux-4.1.22.orig/arch/arm/boot/dts/overlays/wittypi-overlay.dts linux
+ };
+
+};
-diff -Nur linux-4.1.22.orig/arch/arm/configs/bcm2709_defconfig linux-4.1.22/arch/arm/configs/bcm2709_defconfig
---- linux-4.1.22.orig/arch/arm/configs/bcm2709_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/configs/bcm2709_defconfig 2016-04-29 18:02:45.000000000 +0200
-@@ -0,0 +1,1267 @@
+diff -Nur linux-4.1.23.orig/arch/arm/configs/bcm2709_defconfig linux-4.1.23/arch/arm/configs/bcm2709_defconfig
+--- linux-4.1.23.orig/arch/arm/configs/bcm2709_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/configs/bcm2709_defconfig 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,1271 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_PHYS_OFFSET=0
+CONFIG_LOCALVERSION="-v7"
@@ -6573,6 +6812,7 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcm2709_defconfig linux-4.1.22/arch
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
++CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
@@ -7318,6 +7558,8 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcm2709_defconfig linux-4.1.22/arch
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m
++CONFIG_SND_BCM2708_SOC_BOOMBERRY_DAC=m
++CONFIG_SND_BCM2708_SOC_BOOMBERRY_DIGI=m
+CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
+CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
@@ -7332,6 +7574,7 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcm2709_defconfig linux-4.1.22/arch
+CONFIG_HID_ACRUX=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
++CONFIG_HID_BETOP_FF=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
@@ -7733,9 +7976,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcm2709_defconfig linux-4.1.22/arch
+CONFIG_CRYPTO_AES_ARM_BS=m
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-4.1.22.orig/arch/arm/configs/bcm2835_defconfig linux-4.1.22/arch/arm/configs/bcm2835_defconfig
---- linux-4.1.22.orig/arch/arm/configs/bcm2835_defconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/configs/bcm2835_defconfig 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/configs/bcm2835_defconfig linux-4.1.23/arch/arm/configs/bcm2835_defconfig
+--- linux-4.1.23.orig/arch/arm/configs/bcm2835_defconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/configs/bcm2835_defconfig 2016-05-02 22:53:50.000000000 +0200
@@ -1,105 +1,1075 @@
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SYSVIPC=y
@@ -8988,10 +9231,10 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcm2835_defconfig linux-4.1.22/arch
+CONFIG_LIBCRC32C=y
# CONFIG_XZ_DEC_ARM is not set
# CONFIG_XZ_DEC_ARMTHUMB is not set
-diff -Nur linux-4.1.22.orig/arch/arm/configs/bcmrpi_defconfig linux-4.1.22/arch/arm/configs/bcmrpi_defconfig
---- linux-4.1.22.orig/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/configs/bcmrpi_defconfig 2016-04-29 18:02:45.000000000 +0200
-@@ -0,0 +1,1261 @@
+diff -Nur linux-4.1.23.orig/arch/arm/configs/bcmrpi_defconfig linux-4.1.23/arch/arm/configs/bcmrpi_defconfig
+--- linux-4.1.23.orig/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/configs/bcmrpi_defconfig 2016-05-02 22:53:50.000000000 +0200
+@@ -0,0 +1,1265 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_PHYS_OFFSET=0
+# CONFIG_LOCALVERSION_AUTO is not set
@@ -9092,6 +9335,7 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcmrpi_defconfig linux-4.1.22/arch/
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
++CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
@@ -9836,6 +10080,8 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcmrpi_defconfig linux-4.1.22/arch/
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m
++CONFIG_SND_BCM2708_SOC_BOOMBERRY_DAC=m
++CONFIG_SND_BCM2708_SOC_BOOMBERRY_DIGI=m
+CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
+CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
@@ -9850,6 +10096,7 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcmrpi_defconfig linux-4.1.22/arch/
+CONFIG_HID_ACRUX=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
++CONFIG_HID_BETOP_FF=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
@@ -10253,9 +10500,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/configs/bcmrpi_defconfig linux-4.1.22/arch/
+CONFIG_CRYPTO_AES_ARM=m
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-4.1.22.orig/arch/arm/include/asm/entry-macro-multi.S linux-4.1.22/arch/arm/include/asm/entry-macro-multi.S
---- linux-4.1.22.orig/arch/arm/include/asm/entry-macro-multi.S 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/include/asm/entry-macro-multi.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/include/asm/entry-macro-multi.S linux-4.1.23/arch/arm/include/asm/entry-macro-multi.S
+--- linux-4.1.23.orig/arch/arm/include/asm/entry-macro-multi.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/include/asm/entry-macro-multi.S 2016-05-02 22:53:50.000000000 +0200
@@ -1,5 +1,6 @@
#include <asm/assembler.h>
@@ -10271,9 +10518,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/include/asm/entry-macro-multi.S linux-4.1.2
.macro arch_irq_handler, symbol_name
.align 5
-diff -Nur linux-4.1.22.orig/arch/arm/include/asm/irqflags.h linux-4.1.22/arch/arm/include/asm/irqflags.h
---- linux-4.1.22.orig/arch/arm/include/asm/irqflags.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/include/asm/irqflags.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/include/asm/irqflags.h linux-4.1.23/arch/arm/include/asm/irqflags.h
+--- linux-4.1.23.orig/arch/arm/include/asm/irqflags.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/include/asm/irqflags.h 2016-05-02 22:53:50.000000000 +0200
@@ -145,12 +145,22 @@
}
@@ -10300,9 +10547,21 @@ diff -Nur linux-4.1.22.orig/arch/arm/include/asm/irqflags.h linux-4.1.22/arch/ar
:
: "r" (flags)
: "memory", "cc");
-diff -Nur linux-4.1.22.orig/arch/arm/include/asm/string.h linux-4.1.22/arch/arm/include/asm/string.h
---- linux-4.1.22.orig/arch/arm/include/asm/string.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/include/asm/string.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/include/asm/psci.h linux-4.1.23/arch/arm/include/asm/psci.h
+--- linux-4.1.23.orig/arch/arm/include/asm/psci.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/include/asm/psci.h 2016-05-02 22:53:50.000000000 +0200
+@@ -37,7 +37,7 @@
+ extern struct psci_operations psci_ops;
+ extern struct smp_operations psci_smp_ops;
+
+-#if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI)
++#ifdef CONFIG_ARM_PSCI
+ int psci_init(void);
+ bool psci_smp_available(void);
+ #else
+diff -Nur linux-4.1.23.orig/arch/arm/include/asm/string.h linux-4.1.23/arch/arm/include/asm/string.h
+--- linux-4.1.23.orig/arch/arm/include/asm/string.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/include/asm/string.h 2016-05-02 22:53:50.000000000 +0200
@@ -24,6 +24,11 @@
#define __HAVE_ARCH_MEMSET
extern void * memset(void *, int, __kernel_size_t);
@@ -10315,9 +10574,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/include/asm/string.h linux-4.1.22/arch/arm/
extern void __memzero(void *ptr, __kernel_size_t n);
#define memset(p,v,n) \
-diff -Nur linux-4.1.22.orig/arch/arm/include/asm/uaccess.h linux-4.1.22/arch/arm/include/asm/uaccess.h
---- linux-4.1.22.orig/arch/arm/include/asm/uaccess.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/include/asm/uaccess.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/include/asm/uaccess.h linux-4.1.23/arch/arm/include/asm/uaccess.h
+--- linux-4.1.23.orig/arch/arm/include/asm/uaccess.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/include/asm/uaccess.h 2016-05-02 22:53:50.000000000 +0200
@@ -475,6 +475,7 @@
#ifdef CONFIG_MMU
@@ -10326,9 +10585,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/include/asm/uaccess.h linux-4.1.22/arch/arm
extern unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n);
extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n);
extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n);
-diff -Nur linux-4.1.22.orig/arch/arm/kernel/fiqasm.S linux-4.1.22/arch/arm/kernel/fiqasm.S
---- linux-4.1.22.orig/arch/arm/kernel/fiqasm.S 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/kernel/fiqasm.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/kernel/fiqasm.S linux-4.1.23/arch/arm/kernel/fiqasm.S
+--- linux-4.1.23.orig/arch/arm/kernel/fiqasm.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/kernel/fiqasm.S 2016-05-02 22:53:50.000000000 +0200
@@ -47,3 +47,7 @@
mov r0, r0 @ avoid hazard prior to ARMv4
ret lr
@@ -10337,9 +10596,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/kernel/fiqasm.S linux-4.1.22/arch/arm/kerne
+ENTRY(__FIQ_Branch)
+ mov pc, r8
+ENDPROC(__FIQ_Branch)
-diff -Nur linux-4.1.22.orig/arch/arm/kernel/head.S linux-4.1.22/arch/arm/kernel/head.S
---- linux-4.1.22.orig/arch/arm/kernel/head.S 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/kernel/head.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/kernel/head.S linux-4.1.23/arch/arm/kernel/head.S
+--- linux-4.1.23.orig/arch/arm/kernel/head.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/kernel/head.S 2016-05-02 22:53:50.000000000 +0200
@@ -680,6 +680,14 @@
ldrcc r7, [r4], #4 @ use branch for delay slot
bcc 1b
@@ -10355,9 +10614,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/kernel/head.S linux-4.1.22/arch/arm/kernel/
#endif
ENDPROC(__fixup_a_pv_table)
-diff -Nur linux-4.1.22.orig/arch/arm/kernel/process.c linux-4.1.22/arch/arm/kernel/process.c
---- linux-4.1.22.orig/arch/arm/kernel/process.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/kernel/process.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/kernel/process.c linux-4.1.23/arch/arm/kernel/process.c
+--- linux-4.1.23.orig/arch/arm/kernel/process.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/kernel/process.c 2016-05-02 22:53:50.000000000 +0200
@@ -98,6 +98,16 @@
}
#endif
@@ -10375,9 +10634,25 @@ diff -Nur linux-4.1.22.orig/arch/arm/kernel/process.c linux-4.1.22/arch/arm/kern
void __show_regs(struct pt_regs *regs)
{
unsigned long flags;
-diff -Nur linux-4.1.22.orig/arch/arm/lib/Makefile linux-4.1.22/arch/arm/lib/Makefile
---- linux-4.1.22.orig/arch/arm/lib/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/lib/Makefile 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/kernel/reboot.c linux-4.1.23/arch/arm/kernel/reboot.c
+--- linux-4.1.23.orig/arch/arm/kernel/reboot.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/kernel/reboot.c 2016-05-02 22:53:50.000000000 +0200
+@@ -102,11 +102,7 @@
+ */
+ void machine_halt(void)
+ {
+- local_irq_disable();
+- smp_send_stop();
+-
+- local_irq_disable();
+- while (1);
++ machine_power_off();
+ }
+
+ /*
+diff -Nur linux-4.1.23.orig/arch/arm/lib/Makefile linux-4.1.23/arch/arm/lib/Makefile
+--- linux-4.1.23.orig/arch/arm/lib/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/lib/Makefile 2016-05-02 22:53:50.000000000 +0200
@@ -6,9 +6,8 @@
lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
@@ -10407,9 +10682,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/Makefile linux-4.1.22/arch/arm/lib/Make
# using lib_ here won't override already available weak symbols
obj-$(CONFIG_UACCESS_WITH_MEMCPY) += uaccess_with_memcpy.o
-diff -Nur linux-4.1.22.orig/arch/arm/lib/arm-mem.h linux-4.1.22/arch/arm/lib/arm-mem.h
---- linux-4.1.22.orig/arch/arm/lib/arm-mem.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/lib/arm-mem.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/arm-mem.h linux-4.1.23/arch/arm/lib/arm-mem.h
+--- linux-4.1.23.orig/arch/arm/lib/arm-mem.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/lib/arm-mem.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,159 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -10570,9 +10845,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/arm-mem.h linux-4.1.22/arch/arm/lib/arm
+ .endif
+92:
+.endm
-diff -Nur linux-4.1.22.orig/arch/arm/lib/copy_from_user.S linux-4.1.22/arch/arm/lib/copy_from_user.S
---- linux-4.1.22.orig/arch/arm/lib/copy_from_user.S 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/lib/copy_from_user.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/copy_from_user.S linux-4.1.23/arch/arm/lib/copy_from_user.S
+--- linux-4.1.23.orig/arch/arm/lib/copy_from_user.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/lib/copy_from_user.S 2016-05-02 22:53:50.000000000 +0200
@@ -89,11 +89,13 @@
.text
@@ -10588,9 +10863,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/copy_from_user.S linux-4.1.22/arch/arm/
.pushsection .fixup,"ax"
.align 0
-diff -Nur linux-4.1.22.orig/arch/arm/lib/exports_rpi.c linux-4.1.22/arch/arm/lib/exports_rpi.c
---- linux-4.1.22.orig/arch/arm/lib/exports_rpi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/lib/exports_rpi.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/exports_rpi.c linux-4.1.23/arch/arm/lib/exports_rpi.c
+--- linux-4.1.23.orig/arch/arm/lib/exports_rpi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/lib/exports_rpi.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2014, Raspberry Pi (Trading) Ltd.
@@ -10629,9 +10904,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/exports_rpi.c linux-4.1.22/arch/arm/lib
+#include <linux/module.h>
+
+EXPORT_SYMBOL(memcmp);
-diff -Nur linux-4.1.22.orig/arch/arm/lib/memcmp_rpi.S linux-4.1.22/arch/arm/lib/memcmp_rpi.S
---- linux-4.1.22.orig/arch/arm/lib/memcmp_rpi.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/lib/memcmp_rpi.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/memcmp_rpi.S linux-4.1.23/arch/arm/lib/memcmp_rpi.S
+--- linux-4.1.23.orig/arch/arm/lib/memcmp_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/lib/memcmp_rpi.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,285 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -10918,9 +11193,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/memcmp_rpi.S linux-4.1.22/arch/arm/lib/
+ .unreq DAT7
+ .unreq OFF
+ENDPROC(memcmp)
-diff -Nur linux-4.1.22.orig/arch/arm/lib/memcpy_rpi.S linux-4.1.22/arch/arm/lib/memcpy_rpi.S
---- linux-4.1.22.orig/arch/arm/lib/memcpy_rpi.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/lib/memcpy_rpi.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/memcpy_rpi.S linux-4.1.23/arch/arm/lib/memcpy_rpi.S
+--- linux-4.1.23.orig/arch/arm/lib/memcpy_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/lib/memcpy_rpi.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,59 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -10981,9 +11256,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/memcpy_rpi.S linux-4.1.22/arch/arm/lib/
+ENTRY(memcpy)
+ memcpy 0
+ENDPROC(memcpy)
-diff -Nur linux-4.1.22.orig/arch/arm/lib/memcpymove.h linux-4.1.22/arch/arm/lib/memcpymove.h
---- linux-4.1.22.orig/arch/arm/lib/memcpymove.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/lib/memcpymove.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/memcpymove.h linux-4.1.23/arch/arm/lib/memcpymove.h
+--- linux-4.1.23.orig/arch/arm/lib/memcpymove.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/lib/memcpymove.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,506 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -11491,9 +11766,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/memcpymove.h linux-4.1.22/arch/arm/lib/
+ .unreq LAST
+ .unreq OFF
+.endm
-diff -Nur linux-4.1.22.orig/arch/arm/lib/memmove_rpi.S linux-4.1.22/arch/arm/lib/memmove_rpi.S
---- linux-4.1.22.orig/arch/arm/lib/memmove_rpi.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/lib/memmove_rpi.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/memmove_rpi.S linux-4.1.23/arch/arm/lib/memmove_rpi.S
+--- linux-4.1.23.orig/arch/arm/lib/memmove_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/lib/memmove_rpi.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,61 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -11556,9 +11831,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/memmove_rpi.S linux-4.1.22/arch/arm/lib
+ bpl memcpy /* pl works even over -1 - 0 and 0x7fffffff - 0x80000000 boundaries */
+ memcpy 1
+ENDPROC(memmove)
-diff -Nur linux-4.1.22.orig/arch/arm/lib/memset_rpi.S linux-4.1.22/arch/arm/lib/memset_rpi.S
---- linux-4.1.22.orig/arch/arm/lib/memset_rpi.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/lib/memset_rpi.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/memset_rpi.S linux-4.1.23/arch/arm/lib/memset_rpi.S
+--- linux-4.1.23.orig/arch/arm/lib/memset_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/lib/memset_rpi.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,121 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -11681,9 +11956,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/memset_rpi.S linux-4.1.22/arch/arm/lib/
+ .unreq DAT2
+ .unreq DAT3
+ENDPROC(memset)
-diff -Nur linux-4.1.22.orig/arch/arm/lib/uaccess_with_memcpy.c linux-4.1.22/arch/arm/lib/uaccess_with_memcpy.c
---- linux-4.1.22.orig/arch/arm/lib/uaccess_with_memcpy.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/lib/uaccess_with_memcpy.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/lib/uaccess_with_memcpy.c linux-4.1.23/arch/arm/lib/uaccess_with_memcpy.c
+--- linux-4.1.23.orig/arch/arm/lib/uaccess_with_memcpy.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/lib/uaccess_with_memcpy.c 2016-05-02 22:53:50.000000000 +0200
@@ -22,6 +22,14 @@
#include <asm/current.h>
#include <asm/page.h>
@@ -11827,9 +12102,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/lib/uaccess_with_memcpy.c linux-4.1.22/arch
static unsigned long noinline
__clear_user_memset(void __user *addr, unsigned long n)
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm/Kconfig linux-4.1.22/arch/arm/mach-bcm/Kconfig
---- linux-4.1.22.orig/arch/arm/mach-bcm/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/mach-bcm/Kconfig 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm/Kconfig linux-4.1.23/arch/arm/mach-bcm/Kconfig
+--- linux-4.1.23.orig/arch/arm/mach-bcm/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/mach-bcm/Kconfig 2016-05-02 22:53:50.000000000 +0200
@@ -114,6 +114,7 @@
select ARM_ERRATA_411920
select ARM_TIMER_SP804
@@ -11838,9 +12113,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm/Kconfig linux-4.1.22/arch/arm/mach
select PINCTRL
select PINCTRL_BCM2835
help
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm/board_bcm2835.c linux-4.1.22/arch/arm/mach-bcm/board_bcm2835.c
---- linux-4.1.22.orig/arch/arm/mach-bcm/board_bcm2835.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/mach-bcm/board_bcm2835.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm/board_bcm2835.c linux-4.1.23/arch/arm/mach-bcm/board_bcm2835.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm/board_bcm2835.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/mach-bcm/board_bcm2835.c 2016-05-02 22:53:50.000000000 +0200
@@ -18,6 +18,7 @@
#include <linux/of_address.h>
#include <linux/of_platform.h>
@@ -11871,9 +12146,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm/board_bcm2835.c linux-4.1.22/arch/
}
static const char * const bcm2835_compat[] = {
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/Kconfig linux-4.1.22/arch/arm/mach-bcm2708/Kconfig
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/Kconfig 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/Kconfig linux-4.1.23/arch/arm/mach-bcm2708/Kconfig
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/Kconfig 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,45 @@
+menu "Broadcom BCM2708 Implementations"
+ depends on ARCH_BCM2708
@@ -11920,9 +12195,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/Kconfig linux-4.1.22/arch/arm/
+ help
+ Binds spidev driver to the SPI0 master
+endmenu
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/Makefile linux-4.1.22/arch/arm/mach-bcm2708/Makefile
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/Makefile 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/Makefile linux-4.1.23/arch/arm/mach-bcm2708/Makefile
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/Makefile 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,6 @@
+#
+# Makefile for the linux kernel.
@@ -11930,16 +12205,16 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/Makefile linux-4.1.22/arch/arm
+
+obj-$(CONFIG_MACH_BCM2708) += bcm2708.o armctrl.o
+obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/Makefile.boot linux-4.1.22/arch/arm/mach-bcm2708/Makefile.boot
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/Makefile.boot 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/Makefile.boot linux-4.1.23/arch/arm/mach-bcm2708/Makefile.boot
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/Makefile.boot 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,3 @@
+ zreladdr-y := 0x00008000
+params_phys-y := 0x00000100
+initrd_phys-y := 0x00800000
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/armctrl.c linux-4.1.22/arch/arm/mach-bcm2708/armctrl.c
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/armctrl.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/armctrl.c linux-4.1.23/arch/arm/mach-bcm2708/armctrl.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/armctrl.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,315 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.c
@@ -12256,9 +12531,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/armctrl.c linux-4.1.22/arch/ar
+ armctrl_dt_init();
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/armctrl.h linux-4.1.22/arch/arm/mach-bcm2708/armctrl.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/armctrl.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/armctrl.h linux-4.1.23/arch/arm/mach-bcm2708/armctrl.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/armctrl.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,27 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.h
@@ -12287,9 +12562,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/armctrl.h linux-4.1.22/arch/ar
+ u32 armctrl_sources, u32 resume_sources);
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708.c linux-4.1.22/arch/arm/mach-bcm2708/bcm2708.c
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/bcm2708.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/bcm2708.c linux-4.1.23/arch/arm/mach-bcm2708/bcm2708.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/bcm2708.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,1162 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.c
@@ -13453,9 +13728,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708.c linux-4.1.22/arch/ar
+MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral.");
+module_param(pps_gpio_pin, int, 0644);
+MODULE_PARM_DESC(pps_gpio_pin, "Set GPIO pin to reserve for PPS");
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708.h linux-4.1.22/arch/arm/mach-bcm2708/bcm2708.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/bcm2708.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/bcm2708.h linux-4.1.23/arch/arm/mach-bcm2708/bcm2708.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/bcm2708.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,49 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.h
@@ -13506,9 +13781,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708.h linux-4.1.22/arch/ar
+}
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-4.1.22/arch/arm/mach-bcm2708/bcm2708_gpio.c
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/bcm2708_gpio.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-4.1.23/arch/arm/mach-bcm2708/bcm2708_gpio.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/bcm2708_gpio.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,426 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c
@@ -13936,9 +14211,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-4.1.22/ar
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/arm_control.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/arm_control.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/arm_control.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/arm_control.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,419 @@
+/*
+ * linux/arch/arm/mach-bcm2708/arm_control.h
@@ -14359,9 +14634,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/arm_control.h lin
+#define AJBTDO HW_REGISTER_RW(AJB_BASE+0x0c)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/clkdev.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/clkdev.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/clkdev.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/clkdev.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,7 @@
+#ifndef __ASM_MACH_CLKDEV_H
+#define __ASM_MACH_CLKDEV_H
@@ -14370,9 +14645,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-4.
+#define __clk_put(clk) do { } while (0)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-4.1.22/arch/arm/mach-bcm2708/include/mach/debug-macro.S
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/debug-macro.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-4.1.23/arch/arm/mach-bcm2708/include/mach/debug-macro.S
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/debug-macro.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,22 @@
+/* arch/arm/mach-bcm2708/include/mach/debug-macro.S
+ *
@@ -14396,9 +14671,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/debug-macro.S lin
+ .endm
+
+#include <debug/pl01x.S>
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-4.1.22/arch/arm/mach-bcm2708/include/mach/entry-macro.S
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/entry-macro.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-4.1.23/arch/arm/mach-bcm2708/include/mach/entry-macro.S
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/entry-macro.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,69 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/entry-macro.S
@@ -14469,9 +14744,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/entry-macro.S lin
+1020: @ EQ will be set if no irqs pending
+
+ .endm
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/frc.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/frc.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/frc.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/frc.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/frc.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/frc.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,38 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/timex.h
@@ -14511,9 +14786,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/frc.h linux-4.1.2
+extern unsigned long long frc_clock_ticks63(void);
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/gpio.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/gpio.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/gpio.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/gpio.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/gpio.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/gpio.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,17 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/gpio.h
@@ -14532,9 +14807,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/gpio.h linux-4.1.
+#define irq_to_gpio(x) ((x) - GPIO_IRQ_START)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/hardware.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/hardware.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/hardware.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/hardware.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/hardware.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/hardware.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,28 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/hardware.h
@@ -14564,9 +14839,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/hardware.h linux-
+#include <mach/platform.h>
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/io.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/io.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/io.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/io.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/io.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/io.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,27 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/io.h
@@ -14595,9 +14870,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/io.h linux-4.1.22
+#define __io(a) __typesafe_io(a)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/irqs.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/irqs.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/irqs.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/irqs.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/irqs.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/irqs.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,199 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/irqs.h
@@ -14798,9 +15073,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/irqs.h linux-4.1.
+#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS)
+
+#endif /* _BCM2708_IRQS_H_ */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/memory.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/memory.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/memory.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/memory.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/memory.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/memory.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,57 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/memory.h
@@ -14859,9 +15134,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/memory.h linux-4.
+#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET))
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/platform.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/platform.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/platform.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/platform.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/platform.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/platform.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,230 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/platform.h
@@ -15093,9 +15368,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/platform.h linux-
+#endif
+
+/* END */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/system.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/system.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/system.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/system.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/system.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/system.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,38 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/system.h
@@ -15135,9 +15410,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/system.h linux-4.
+}
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/timex.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/timex.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/timex.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/timex.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/timex.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/timex.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,23 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/timex.h
@@ -15162,9 +15437,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/timex.h linux-4.1
+ */
+
+#define CLOCK_TICK_RATE (1000000)
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/uncompress.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/uncompress.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/uncompress.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/uncompress.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,84 @@
+/*
+ * arch/arm/mach-bcn2708/include/mach/uncompress.h
@@ -15250,9 +15525,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/uncompress.h linu
+ * nothing to do
+ */
+#define arch_decomp_wdog()
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,181 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -15435,9 +15710,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h linu
+} VC_SM_MSG_UNION_T;
+
+#endif /* __VC_SM_DEFS_H__INCLUDED__ */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,55 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -15494,9 +15769,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h linux
+ long unsigned int *data);
+
+#endif /* __VC_SM_KNL_H__INCLUDED__ */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,82 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -15580,9 +15855,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h linu
+ VC_SM_ACTION_CLEAN_T *action_clean);
+
+#endif /* __VC_VCHI_SM_H__INCLUDED__ */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vmalloc.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vmalloc.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vmalloc.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vmalloc.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,20 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/vmalloc.h
@@ -15604,9 +15879,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-4
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#define VMALLOC_END (0xe8000000)
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,248 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -15856,9 +16131,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h l
+/* ---- Function Prototypes ---------------------------------------------- */
+
+#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/Kconfig linux-4.1.22/arch/arm/mach-bcm2709/Kconfig
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/Kconfig 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/Kconfig linux-4.1.23/arch/arm/mach-bcm2709/Kconfig
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/Kconfig 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,42 @@
+menu "Broadcom BCM2709 Implementations"
+ depends on ARCH_BCM2709
@@ -15902,9 +16177,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/Kconfig linux-4.1.22/arch/arm/
+ help
+ Binds spidev driver to the SPI0 master
+endmenu
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/Makefile linux-4.1.22/arch/arm/mach-bcm2709/Makefile
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/Makefile 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/Makefile linux-4.1.23/arch/arm/mach-bcm2709/Makefile
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/Makefile 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,6 @@
+#
+# Makefile for the linux kernel.
@@ -15912,16 +16187,16 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/Makefile linux-4.1.22/arch/arm
+
+obj-$(CONFIG_MACH_BCM2709) += bcm2709.o armctrl.o
+obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/Makefile.boot linux-4.1.22/arch/arm/mach-bcm2709/Makefile.boot
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/Makefile.boot 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/Makefile.boot linux-4.1.23/arch/arm/mach-bcm2709/Makefile.boot
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/Makefile.boot 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,3 @@
+ zreladdr-y := 0x00008000
+params_phys-y := 0x00000100
+initrd_phys-y := 0x00800000
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/armctrl.c linux-4.1.22/arch/arm/mach-bcm2709/armctrl.c
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/armctrl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/armctrl.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/armctrl.c linux-4.1.23/arch/arm/mach-bcm2709/armctrl.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/armctrl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/armctrl.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,384 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.c
@@ -16307,9 +16582,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/armctrl.c linux-4.1.22/arch/ar
+ armctrl_dt_init();
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/armctrl.h linux-4.1.22/arch/arm/mach-bcm2709/armctrl.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/armctrl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/armctrl.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/armctrl.h linux-4.1.23/arch/arm/mach-bcm2709/armctrl.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/armctrl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/armctrl.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,27 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.h
@@ -16338,9 +16613,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/armctrl.h linux-4.1.22/arch/ar
+ u32 armctrl_sources, u32 resume_sources);
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2708_gpio.c linux-4.1.22/arch/arm/mach-bcm2709/bcm2708_gpio.c
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/bcm2708_gpio.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/bcm2708_gpio.c linux-4.1.23/arch/arm/mach-bcm2709/bcm2708_gpio.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/bcm2708_gpio.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,426 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c
@@ -16768,9 +17043,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2708_gpio.c linux-4.1.22/ar
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2709.c linux-4.1.22/arch/arm/mach-bcm2709/bcm2709.c
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2709.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/bcm2709.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/bcm2709.c linux-4.1.23/arch/arm/mach-bcm2709/bcm2709.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/bcm2709.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/bcm2709.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,1332 @@
+/*
+ * linux/arch/arm/mach-bcm2709/bcm2709.c
@@ -18104,9 +18379,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2709.c linux-4.1.22/arch/ar
+MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral.");
+module_param(pps_gpio_pin, int, 0644);
+MODULE_PARM_DESC(pps_gpio_pin, "Set GPIO pin to reserve for PPS");
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2709.h linux-4.1.22/arch/arm/mach-bcm2709/bcm2709.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2709.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/bcm2709.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/bcm2709.h linux-4.1.23/arch/arm/mach-bcm2709/bcm2709.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/bcm2709.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/bcm2709.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,49 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.h
@@ -18157,9 +18432,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/bcm2709.h linux-4.1.22/arch/ar
+}
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/delay.S linux-4.1.22/arch/arm/mach-bcm2709/delay.S
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/delay.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/delay.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/delay.S linux-4.1.23/arch/arm/mach-bcm2709/delay.S
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/delay.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/delay.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,21 @@
+/*
+ * linux/arch/arm/lib/delay.S
@@ -18182,9 +18457,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/delay.S linux-4.1.22/arch/arm/
+ bhi bcm2708_delay
+ mov pc, lr
+ENDPROC(bcm2708_delay)
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/arm_control.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/arm_control.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/arm_control.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/arm_control.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/arm_control.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/arm_control.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,493 @@
+/*
+ * linux/arch/arm/mach-bcm2708/arm_control.h
@@ -18679,16 +18954,16 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/arm_control.h lin
+#define ARM_LOCAL_MAILBOX3_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0FC)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/barriers.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/barriers.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/barriers.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/barriers.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/barriers.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/barriers.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/barriers.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/barriers.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,3 @@
+#define mb() dsb()
+#define rmb() dsb()
+#define wmb() mb()
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/clkdev.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/clkdev.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/clkdev.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/clkdev.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/clkdev.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/clkdev.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,7 @@
+#ifndef __ASM_MACH_CLKDEV_H
+#define __ASM_MACH_CLKDEV_H
@@ -18697,9 +18972,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/clkdev.h linux-4.
+#define __clk_put(clk) do { } while (0)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/debug-macro.S linux-4.1.22/arch/arm/mach-bcm2709/include/mach/debug-macro.S
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/debug-macro.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/debug-macro.S linux-4.1.23/arch/arm/mach-bcm2709/include/mach/debug-macro.S
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/debug-macro.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,22 @@
+/* arch/arm/mach-bcm2708/include/mach/debug-macro.S
+ *
@@ -18723,9 +18998,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/debug-macro.S lin
+ .endm
+
+#include <debug/pl01x.S>
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/entry-macro.S linux-4.1.22/arch/arm/mach-bcm2709/include/mach/entry-macro.S
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/entry-macro.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/entry-macro.S linux-4.1.23/arch/arm/mach-bcm2709/include/mach/entry-macro.S
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/entry-macro.S 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,120 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/entry-macro.S
@@ -18847,9 +19122,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/entry-macro.S lin
+ .macro arch_irq_handler_default
+1: get_irqnr_and_base r0, r2, r6, lr
+ .endm
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/frc.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/frc.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/frc.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/frc.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/frc.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/frc.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,38 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/timex.h
@@ -18889,9 +19164,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/frc.h linux-4.1.2
+extern unsigned long long frc_clock_ticks63(void);
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/gpio.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/gpio.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/gpio.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/gpio.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/gpio.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/gpio.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,17 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/gpio.h
@@ -18910,9 +19185,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/gpio.h linux-4.1.
+#define irq_to_gpio(x) ((x) - GPIO_IRQ_START)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/hardware.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/hardware.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/hardware.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/hardware.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/hardware.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/hardware.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,28 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/hardware.h
@@ -18942,9 +19217,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/hardware.h linux-
+#include <mach/platform.h>
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/io.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/io.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/io.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/io.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/io.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/io.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,27 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/io.h
@@ -18973,9 +19248,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/io.h linux-4.1.22
+#define __io(a) __typesafe_io(a)
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/irqs.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/irqs.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/irqs.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/irqs.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/irqs.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/irqs.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,225 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/irqs.h
@@ -19202,9 +19477,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/irqs.h linux-4.1.
+#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS)
+
+#endif /* _BCM2708_IRQS_H_ */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/memory.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/memory.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/memory.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/memory.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/memory.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/memory.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,57 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/memory.h
@@ -19263,9 +19538,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/memory.h linux-4.
+#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET))
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/platform.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/platform.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/platform.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/platform.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/platform.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/platform.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,227 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/platform.h
@@ -19494,9 +19769,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/platform.h linux-
+#endif
+
+/* END */
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/system.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/system.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/system.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/system.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/system.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/system.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,38 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/system.h
@@ -19536,9 +19811,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/system.h linux-4.
+}
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/timex.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/timex.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/timex.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/timex.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/timex.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/timex.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,23 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/timex.h
@@ -19563,9 +19838,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/timex.h linux-4.1
+ */
+
+#define CLOCK_TICK_RATE (1000000)
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/uncompress.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/uncompress.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/uncompress.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/uncompress.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/uncompress.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/uncompress.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,84 @@
+/*
+ * arch/arm/mach-bcn2708/include/mach/uncompress.h
@@ -19651,9 +19926,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/uncompress.h linu
+ * nothing to do
+ */
+#define arch_decomp_wdog()
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/vc_support.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/vc_support.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/vc_support.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/vc_support.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/vc_support.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/vc_support.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/vc_support.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/vc_support.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,69 @@
+#ifndef _VC_SUPPORT_H_
+#define _VC_SUPPORT_H_
@@ -19724,9 +19999,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/vc_support.h linu
+ unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5);
+
+#endif
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/vmalloc.h linux-4.1.22/arch/arm/mach-bcm2709/include/mach/vmalloc.h
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/include/mach/vmalloc.h 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/vmalloc.h linux-4.1.23/arch/arm/mach-bcm2709/include/mach/vmalloc.h
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/include/mach/vmalloc.h 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,20 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/vmalloc.h
@@ -19748,9 +20023,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/include/mach/vmalloc.h linux-4
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#define VMALLOC_END (0xff000000)
-diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/vc_support.c linux-4.1.22/arch/arm/mach-bcm2709/vc_support.c
---- linux-4.1.22.orig/arch/arm/mach-bcm2709/vc_support.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/arch/arm/mach-bcm2709/vc_support.c 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-bcm2709/vc_support.c linux-4.1.23/arch/arm/mach-bcm2709/vc_support.c
+--- linux-4.1.23.orig/arch/arm/mach-bcm2709/vc_support.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/arch/arm/mach-bcm2709/vc_support.c 2016-05-02 22:53:50.000000000 +0200
@@ -0,0 +1,318 @@
+/*
+ * vc_support.c
@@ -20070,9 +20345,50 @@ diff -Nur linux-4.1.22.orig/arch/arm/mach-bcm2709/vc_support.c linux-4.1.22/arch
+ return 1;
+ }
+}
-diff -Nur linux-4.1.22.orig/arch/arm/mm/Kconfig linux-4.1.22/arch/arm/mm/Kconfig
---- linux-4.1.22.orig/arch/arm/mm/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/mm/Kconfig 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mach-omap2/sleep34xx.S linux-4.1.23/arch/arm/mach-omap2/sleep34xx.S
+--- linux-4.1.23.orig/arch/arm/mach-omap2/sleep34xx.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/mach-omap2/sleep34xx.S 2016-05-02 22:53:50.000000000 +0200
+@@ -436,14 +436,12 @@
+ and r1, #0x700
+ cmp r1, #0x300
+ beq l2_inv_gp
+- adr r0, l2_inv_api_params_offset
+- ldr r3, [r0]
+- add r3, r3, r0 @ r3 points to dummy parameters
+ mov r0, #40 @ set service ID for PPA
+ mov r12, r0 @ copy secure Service ID in r12
+ mov r1, #0 @ set task id for ROM code in r1
+ mov r2, #4 @ set some flags in r2, r6
+ mov r6, #0xff
++ adr r3, l2_inv_api_params @ r3 points to dummy parameters
+ dsb @ data write barrier
+ dmb @ data memory barrier
+ smc #1 @ call SMI monitor (smi #1)
+@@ -477,8 +475,8 @@
+ b logic_l1_restore
+
+ .align
+-l2_inv_api_params_offset:
+- .long l2_inv_api_params - .
++l2_inv_api_params:
++ .word 0x1, 0x00
+ l2_inv_gp:
+ /* Execute smi to invalidate L2 cache */
+ mov r12, #0x1 @ set up to invalidate L2
+@@ -533,10 +531,6 @@
+ l2dis_3630:
+ .word 0
+
+- .data
+-l2_inv_api_params:
+- .word 0x1, 0x00
+-
+ /*
+ * Internal functions
+ */
+diff -Nur linux-4.1.23.orig/arch/arm/mm/Kconfig linux-4.1.23/arch/arm/mm/Kconfig
+--- linux-4.1.23.orig/arch/arm/mm/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/mm/Kconfig 2016-05-02 22:53:50.000000000 +0200
@@ -358,7 +358,7 @@
# ARMv6
@@ -20082,9 +20398,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mm/Kconfig linux-4.1.22/arch/arm/mm/Kconfig
select CPU_32v6
select CPU_ABRT_EV6
select CPU_CACHE_V6
-diff -Nur linux-4.1.22.orig/arch/arm/mm/proc-v6.S linux-4.1.22/arch/arm/mm/proc-v6.S
---- linux-4.1.22.orig/arch/arm/mm/proc-v6.S 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/mm/proc-v6.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mm/proc-v6.S linux-4.1.23/arch/arm/mm/proc-v6.S
+--- linux-4.1.23.orig/arch/arm/mm/proc-v6.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/mm/proc-v6.S 2016-05-02 22:53:50.000000000 +0200
@@ -73,10 +73,19 @@
*
* IRQs are already disabled.
@@ -20108,9 +20424,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mm/proc-v6.S linux-4.1.22/arch/arm/mm/proc-
ret lr
ENTRY(cpu_v6_dcache_clean_area)
-diff -Nur linux-4.1.22.orig/arch/arm/mm/proc-v7.S linux-4.1.22/arch/arm/mm/proc-v7.S
---- linux-4.1.22.orig/arch/arm/mm/proc-v7.S 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/mm/proc-v7.S 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/mm/proc-v7.S linux-4.1.23/arch/arm/mm/proc-v7.S
+--- linux-4.1.23.orig/arch/arm/mm/proc-v7.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/mm/proc-v7.S 2016-05-02 22:53:50.000000000 +0200
@@ -460,6 +460,7 @@
orr r0, r0, r6 @ set them
THUMB( orr r0, r0, #1 << 30 ) @ Thumb exceptions
@@ -20119,9 +20435,9 @@ diff -Nur linux-4.1.22.orig/arch/arm/mm/proc-v7.S linux-4.1.22/arch/arm/mm/proc-
ENDPROC(__v7_setup)
.align 2
-diff -Nur linux-4.1.22.orig/arch/arm/tools/mach-types linux-4.1.22/arch/arm/tools/mach-types
---- linux-4.1.22.orig/arch/arm/tools/mach-types 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/arch/arm/tools/mach-types 2016-04-29 18:02:45.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm/tools/mach-types linux-4.1.23/arch/arm/tools/mach-types
+--- linux-4.1.23.orig/arch/arm/tools/mach-types 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm/tools/mach-types 2016-05-02 22:53:50.000000000 +0200
@@ -522,6 +522,8 @@
prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103
paz00 MACH_PAZ00 PAZ00 3128
@@ -20131,9 +20447,1538 @@ diff -Nur linux-4.1.22.orig/arch/arm/tools/mach-types linux-4.1.22/arch/arm/tool
ag5evm MACH_AG5EVM AG5EVM 3189
ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206
wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207
-diff -Nur linux-4.1.22.orig/drivers/bluetooth/hci_h5.c linux-4.1.22/drivers/bluetooth/hci_h5.c
---- linux-4.1.22.orig/drivers/bluetooth/hci_h5.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/bluetooth/hci_h5.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/arch/arm64/Makefile linux-4.1.23/arch/arm64/Makefile
+--- linux-4.1.23.orig/arch/arm64/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm64/Makefile 2016-05-02 22:53:50.000000000 +0200
+@@ -18,8 +18,6 @@
+ KBUILD_DEFCONFIG := defconfig
+
+ KBUILD_CFLAGS += -mgeneral-regs-only
+-KBUILD_CFLAGS += $(call cc-option, -mpc-relative-literal-loads)
+-
+ ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
+ KBUILD_CPPFLAGS += -mbig-endian
+ AS += -EB
+diff -Nur linux-4.1.23.orig/arch/arm64/include/asm/pgtable.h linux-4.1.23/arch/arm64/include/asm/pgtable.h
+--- linux-4.1.23.orig/arch/arm64/include/asm/pgtable.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm64/include/asm/pgtable.h 2016-05-02 22:53:50.000000000 +0200
+@@ -33,7 +33,7 @@
+ /*
+ * VMALLOC and SPARSEMEM_VMEMMAP ranges.
+ *
+- * VMEMAP_SIZE: allows the whole linear region to be covered by a struct page array
++ * VMEMAP_SIZE: allows the whole VA space to be covered by a struct page array
+ * (rounded up to PUD_SIZE).
+ * VMALLOC_START: beginning of the kernel VA space
+ * VMALLOC_END: extends to the available space below vmmemmap, PCI I/O space,
+@@ -43,9 +43,7 @@
+ #define VMALLOC_START (UL(0xffffffffffffffff) << VA_BITS)
+ #define VMALLOC_END (PAGE_OFFSET - PUD_SIZE - VMEMMAP_SIZE - SZ_64K)
+
+-#define VMEMMAP_START (VMALLOC_END + SZ_64K)
+-#define vmemmap ((struct page *)VMEMMAP_START - \
+- SECTION_ALIGN_DOWN(memstart_addr >> PAGE_SHIFT))
++#define vmemmap ((struct page *)(VMALLOC_END + SZ_64K))
+
+ #define FIRST_USER_ADDRESS 0UL
+
+diff -Nur linux-4.1.23.orig/arch/arm64/mm/init.c linux-4.1.23/arch/arm64/mm/init.c
+--- linux-4.1.23.orig/arch/arm64/mm/init.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/arm64/mm/init.c 2016-05-02 22:53:50.000000000 +0200
+@@ -312,8 +312,8 @@
+ " .data : 0x%p" " - 0x%p" " (%6ld KB)\n",
+ MLG(VMALLOC_START, VMALLOC_END),
+ #ifdef CONFIG_SPARSEMEM_VMEMMAP
+- MLG(VMEMMAP_START,
+- VMEMMAP_START + VMEMMAP_SIZE),
++ MLG((unsigned long)vmemmap,
++ (unsigned long)vmemmap + VMEMMAP_SIZE),
+ MLM((unsigned long)virt_to_page(PAGE_OFFSET),
+ (unsigned long)virt_to_page(high_memory)),
+ #endif
+diff -Nur linux-4.1.23.orig/arch/avr32/mach-at32ap/at32ap700x.c linux-4.1.23/arch/avr32/mach-at32ap/at32ap700x.c
+--- linux-4.1.23.orig/arch/avr32/mach-at32ap/at32ap700x.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/avr32/mach-at32ap/at32ap700x.c 2016-05-02 22:53:51.000000000 +0200
+@@ -1328,21 +1328,6 @@
+ .index = 9,
+ };
+
+-static bool at32_mci_dma_filter(struct dma_chan *chan, void *pdata)
+-{
+- struct mci_dma_data *sl = pdata;
+-
+- if (!sl)
+- return false;
+-
+- if (find_slave_dev(sl) == chan->device->dev) {
+- chan->private = slave_data_ptr(sl);
+- return true;
+- }
+-
+- return false;
+-}
+-
+ struct platform_device *__init
+ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
+ {
+@@ -1377,7 +1362,6 @@
+ slave->sdata.dst_master = 0;
+
+ data->dma_slave = slave;
+- data->dma_filter = at32_mci_dma_filter;
+
+ if (platform_device_add_data(pdev, data,
+ sizeof(struct mci_platform_data)))
+diff -Nur linux-4.1.23.orig/arch/mips/kernel/smp.c linux-4.1.23/arch/mips/kernel/smp.c
+--- linux-4.1.23.orig/arch/mips/kernel/smp.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/mips/kernel/smp.c 2016-05-02 22:53:51.000000000 +0200
+@@ -120,7 +120,6 @@
+ cpumask_t temp_foreign_map;
+
+ /* Re-calculate the mask */
+- cpumask_clear(&temp_foreign_map);
+ for_each_online_cpu(i) {
+ core_present = 0;
+ for_each_cpu(k, &temp_foreign_map)
+diff -Nur linux-4.1.23.orig/arch/powerpc/kernel/module_64.c linux-4.1.23/arch/powerpc/kernel/module_64.c
+--- linux-4.1.23.orig/arch/powerpc/kernel/module_64.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/powerpc/kernel/module_64.c 2016-05-02 22:53:51.000000000 +0200
+@@ -335,7 +335,7 @@
+ if (syms[i].st_shndx == SHN_UNDEF) {
+ char *name = strtab + syms[i].st_name;
+ if (name[0] == '.')
+- syms[i].st_name++;
++ memmove(name, name+1, strlen(name));
+ }
+ }
+ }
+diff -Nur linux-4.1.23.orig/arch/s390/include/asm/pci.h linux-4.1.23/arch/s390/include/asm/pci.h
+--- linux-4.1.23.orig/arch/s390/include/asm/pci.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/s390/include/asm/pci.h 2016-05-02 22:53:51.000000000 +0200
+@@ -45,7 +45,7 @@
+ u64 rpcit_ops;
+ u64 dma_rbytes;
+ u64 dma_wbytes;
+-} __packed __aligned(64);
++} __packed __aligned(16);
+
+ enum zpci_state {
+ ZPCI_FN_STATE_RESERVED,
+diff -Nur linux-4.1.23.orig/arch/s390/pci/pci.c linux-4.1.23/arch/s390/pci/pci.c
+--- linux-4.1.23.orig/arch/s390/pci/pci.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/s390/pci/pci.c 2016-05-02 22:53:51.000000000 +0200
+@@ -871,11 +871,8 @@
+
+ static int zpci_mem_init(void)
+ {
+- BUILD_BUG_ON(!is_power_of_2(__alignof__(struct zpci_fmb)) ||
+- __alignof__(struct zpci_fmb) < sizeof(struct zpci_fmb));
+-
+ zdev_fmb_cache = kmem_cache_create("PCI_FMB_cache", sizeof(struct zpci_fmb),
+- __alignof__(struct zpci_fmb), 0, NULL);
++ 16, 0, NULL);
+ if (!zdev_fmb_cache)
+ goto error_zdev;
+
+diff -Nur linux-4.1.23.orig/arch/um/drivers/mconsole_kern.c linux-4.1.23/arch/um/drivers/mconsole_kern.c
+--- linux-4.1.23.orig/arch/um/drivers/mconsole_kern.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/um/drivers/mconsole_kern.c 2016-05-02 22:53:51.000000000 +0200
+@@ -133,7 +133,7 @@
+ ptr += strlen("proc");
+ ptr = skip_spaces(ptr);
+
+- file = file_open_root(mnt->mnt_root, mnt, ptr, O_RDONLY, 0);
++ file = file_open_root(mnt->mnt_root, mnt, ptr, O_RDONLY);
+ if (IS_ERR(file)) {
+ mconsole_reply(req, "Failed to open file", 1, 0);
+ printk(KERN_ERR "open /proc/%s: %ld\n", ptr, PTR_ERR(file));
+diff -Nur linux-4.1.23.orig/arch/x86/ia32/ia32entry.S linux-4.1.23/arch/x86/ia32/ia32entry.S
+--- linux-4.1.23.orig/arch/x86/ia32/ia32entry.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/ia32/ia32entry.S 2016-05-02 22:53:51.000000000 +0200
+@@ -511,7 +511,6 @@
+ * it is too small to ever cause noticeable irq latency.
+ */
+ PARAVIRT_ADJUST_EXCEPTION_FRAME
+- ASM_CLAC /* Do this early to minimize exposure */
+ SWAPGS
+ ENABLE_INTERRUPTS(CLBR_NONE)
+
+diff -Nur linux-4.1.23.orig/arch/x86/include/asm/apic.h linux-4.1.23/arch/x86/include/asm/apic.h
+--- linux-4.1.23.orig/arch/x86/include/asm/apic.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/include/asm/apic.h 2016-05-02 22:53:51.000000000 +0200
+@@ -640,8 +640,8 @@
+
+ static inline void entering_ack_irq(void)
+ {
+- entering_irq();
+ ack_APIC_irq();
++ entering_irq();
+ }
+
+ static inline void exiting_irq(void)
+diff -Nur linux-4.1.23.orig/arch/x86/include/asm/perf_event.h linux-4.1.23/arch/x86/include/asm/perf_event.h
+--- linux-4.1.23.orig/arch/x86/include/asm/perf_event.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/include/asm/perf_event.h 2016-05-02 22:53:51.000000000 +0200
+@@ -159,14 +159,6 @@
+ */
+ #define INTEL_PMC_IDX_FIXED_BTS (INTEL_PMC_IDX_FIXED + 16)
+
+-#define GLOBAL_STATUS_COND_CHG BIT_ULL(63)
+-#define GLOBAL_STATUS_BUFFER_OVF BIT_ULL(62)
+-#define GLOBAL_STATUS_UNC_OVF BIT_ULL(61)
+-#define GLOBAL_STATUS_ASIF BIT_ULL(60)
+-#define GLOBAL_STATUS_COUNTERS_FROZEN BIT_ULL(59)
+-#define GLOBAL_STATUS_LBRS_FROZEN BIT_ULL(58)
+-#define GLOBAL_STATUS_TRACE_TOPAPMI BIT_ULL(55)
+-
+ /*
+ * IBS cpuid feature detection
+ */
+diff -Nur linux-4.1.23.orig/arch/x86/include/asm/xen/hypervisor.h linux-4.1.23/arch/x86/include/asm/xen/hypervisor.h
+--- linux-4.1.23.orig/arch/x86/include/asm/xen/hypervisor.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/include/asm/xen/hypervisor.h 2016-05-02 22:53:51.000000000 +0200
+@@ -57,6 +57,4 @@
+ }
+ #endif
+
+-extern void xen_set_iopl_mask(unsigned mask);
+-
+ #endif /* _ASM_X86_XEN_HYPERVISOR_H */
+diff -Nur linux-4.1.23.orig/arch/x86/include/uapi/asm/msr-index.h linux-4.1.23/arch/x86/include/uapi/asm/msr-index.h
+--- linux-4.1.23.orig/arch/x86/include/uapi/asm/msr-index.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/include/uapi/asm/msr-index.h 2016-05-02 22:53:51.000000000 +0200
+@@ -72,12 +72,6 @@
+ #define MSR_LBR_CORE_FROM 0x00000040
+ #define MSR_LBR_CORE_TO 0x00000060
+
+-#define MSR_LBR_INFO_0 0x00000dc0 /* ... 0xddf for _31 */
+-#define LBR_INFO_MISPRED BIT_ULL(63)
+-#define LBR_INFO_IN_TX BIT_ULL(62)
+-#define LBR_INFO_ABORT BIT_ULL(61)
+-#define LBR_INFO_CYCLES 0xffff
+-
+ #define MSR_IA32_PEBS_ENABLE 0x000003f1
+ #define MSR_IA32_DS_AREA 0x00000600
+ #define MSR_IA32_PERF_CAPABILITIES 0x00000345
+diff -Nur linux-4.1.23.orig/arch/x86/kernel/ioport.c linux-4.1.23/arch/x86/kernel/ioport.c
+--- linux-4.1.23.orig/arch/x86/kernel/ioport.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/kernel/ioport.c 2016-05-02 22:53:51.000000000 +0200
+@@ -96,14 +96,9 @@
+ SYSCALL_DEFINE1(iopl, unsigned int, level)
+ {
+ struct pt_regs *regs = current_pt_regs();
++ unsigned int old = (regs->flags >> 12) & 3;
+ struct thread_struct *t = &current->thread;
+
+- /*
+- * Careful: the IOPL bits in regs->flags are undefined under Xen PV
+- * and changing them has no effect.
+- */
+- unsigned int old = t->iopl >> X86_EFLAGS_IOPL_BIT;
+-
+ if (level > 3)
+ return -EINVAL;
+ /* Trying to gain more privileges? */
+@@ -111,9 +106,8 @@
+ if (!capable(CAP_SYS_RAWIO))
+ return -EPERM;
+ }
+- regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) |
+- (level << X86_EFLAGS_IOPL_BIT);
+- t->iopl = level << X86_EFLAGS_IOPL_BIT;
++ regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12);
++ t->iopl = level << 12;
+ set_iopl_mask(t->iopl);
+
+ return 0;
+diff -Nur linux-4.1.23.orig/arch/x86/kernel/process_64.c linux-4.1.23/arch/x86/kernel/process_64.c
+--- linux-4.1.23.orig/arch/x86/kernel/process_64.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/kernel/process_64.c 2016-05-02 22:53:51.000000000 +0200
+@@ -49,7 +49,6 @@
+ #include <asm/syscalls.h>
+ #include <asm/debugreg.h>
+ #include <asm/switch_to.h>
+-#include <asm/xen/hypervisor.h>
+
+ asmlinkage extern void ret_from_fork(void);
+
+@@ -420,17 +419,6 @@
+ task_thread_info(prev_p)->flags & _TIF_WORK_CTXSW_PREV))
+ __switch_to_xtra(prev_p, next_p, tss);
+
+-#ifdef CONFIG_XEN
+- /*
+- * On Xen PV, IOPL bits in pt_regs->flags have no effect, and
+- * current_pt_regs()->flags may not match the current task's
+- * intended IOPL. We need to switch it manually.
+- */
+- if (unlikely(xen_pv_domain() &&
+- prev->iopl != next->iopl))
+- xen_set_iopl_mask(next->iopl);
+-#endif
+-
+ if (static_cpu_has_bug(X86_BUG_SYSRET_SS_ATTRS)) {
+ /*
+ * AMD CPUs have a misfeature: SYSRET sets the SS selector but
+diff -Nur linux-4.1.23.orig/arch/x86/kvm/i8254.c linux-4.1.23/arch/x86/kvm/i8254.c
+--- linux-4.1.23.orig/arch/x86/kvm/i8254.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/kvm/i8254.c 2016-05-02 22:53:51.000000000 +0200
+@@ -244,7 +244,7 @@
+ * PIC is being reset. Handle it gracefully here
+ */
+ atomic_inc(&ps->pending);
+- else if (value > 0 && ps->reinject)
++ else if (value > 0)
+ /* in this case, we had multiple outstanding pit interrupts
+ * that we needed to inject. Reinject
+ */
+@@ -287,9 +287,7 @@
+ * last one has been acked.
+ */
+ spin_lock(&ps->inject_lock);
+- if (!ps->reinject)
+- inject = 1;
+- else if (ps->irq_ack) {
++ if (ps->irq_ack) {
+ ps->irq_ack = 0;
+ inject = 1;
+ }
+@@ -318,10 +316,10 @@
+ struct kvm_kpit_state *ps = container_of(data, struct kvm_kpit_state, timer);
+ struct kvm_pit *pt = ps->kvm->arch.vpit;
+
+- if (ps->reinject)
++ if (ps->reinject || !atomic_read(&ps->pending)) {
+ atomic_inc(&ps->pending);
+-
+- queue_kthread_work(&pt->worker, &pt->expired);
++ queue_kthread_work(&pt->worker, &pt->expired);
++ }
+
+ if (ps->is_periodic) {
+ hrtimer_add_expires_ns(&ps->timer, ps->period);
+diff -Nur linux-4.1.23.orig/arch/x86/kvm/vmx.c linux-4.1.23/arch/x86/kvm/vmx.c
+--- linux-4.1.23.orig/arch/x86/kvm/vmx.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/kvm/vmx.c 2016-05-02 22:53:51.000000000 +0200
+@@ -7210,7 +7210,6 @@
+ if (!(types & (1UL << type))) {
+ nested_vmx_failValid(vcpu,
+ VMXERR_INVALID_OPERAND_TO_INVEPT_INVVPID);
+- skip_emulated_instruction(vcpu);
+ return 1;
+ }
+
+diff -Nur linux-4.1.23.orig/arch/x86/kvm/x86.c linux-4.1.23/arch/x86/kvm/x86.c
+--- linux-4.1.23.orig/arch/x86/kvm/x86.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/kvm/x86.c 2016-05-02 22:53:51.000000000 +0200
+@@ -3731,13 +3731,13 @@
+
+ static int kvm_vm_ioctl_set_pit(struct kvm *kvm, struct kvm_pit_state *ps)
+ {
+- int i;
++ int r = 0;
++
+ mutex_lock(&kvm->arch.vpit->pit_state.lock);
+ memcpy(&kvm->arch.vpit->pit_state, ps, sizeof(struct kvm_pit_state));
+- for (i = 0; i < 3; i++)
+- kvm_pit_load_count(kvm, i, ps->channels[i].count, 0);
++ kvm_pit_load_count(kvm, 0, ps->channels[0].count, 0);
+ mutex_unlock(&kvm->arch.vpit->pit_state.lock);
+- return 0;
++ return r;
+ }
+
+ static int kvm_vm_ioctl_get_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps)
+@@ -3756,7 +3756,6 @@
+ static int kvm_vm_ioctl_set_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps)
+ {
+ int r = 0, start = 0;
+- int i;
+ u32 prev_legacy, cur_legacy;
+ mutex_lock(&kvm->arch.vpit->pit_state.lock);
+ prev_legacy = kvm->arch.vpit->pit_state.flags & KVM_PIT_FLAGS_HPET_LEGACY;
+@@ -3766,8 +3765,7 @@
+ memcpy(&kvm->arch.vpit->pit_state.channels, &ps->channels,
+ sizeof(kvm->arch.vpit->pit_state.channels));
+ kvm->arch.vpit->pit_state.flags = ps->flags;
+- for (i = 0; i < 3; i++)
+- kvm_pit_load_count(kvm, i, kvm->arch.vpit->pit_state.channels[i].count, start);
++ kvm_pit_load_count(kvm, 0, kvm->arch.vpit->pit_state.channels[0].count, start);
+ mutex_unlock(&kvm->arch.vpit->pit_state.lock);
+ return r;
+ }
+diff -Nur linux-4.1.23.orig/arch/x86/pci/fixup.c linux-4.1.23/arch/x86/pci/fixup.c
+--- linux-4.1.23.orig/arch/x86/pci/fixup.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/pci/fixup.c 2016-05-02 22:53:51.000000000 +0200
+@@ -553,10 +553,3 @@
+ }
+ }
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27B9, twinhead_reserve_killing_zone);
+-
+-static void pci_bdwep_bar(struct pci_dev *dev)
+-{
+- dev->non_compliant_bars = 1;
+-}
+-DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fa0, pci_bdwep_bar);
+-DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fc0, pci_bdwep_bar);
+diff -Nur linux-4.1.23.orig/arch/x86/xen/enlighten.c linux-4.1.23/arch/x86/xen/enlighten.c
+--- linux-4.1.23.orig/arch/x86/xen/enlighten.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/x86/xen/enlighten.c 2016-05-02 22:53:51.000000000 +0200
+@@ -959,7 +959,7 @@
+ tss->x86_tss.sp0 = thread->sp0;
+ }
+
+-void xen_set_iopl_mask(unsigned mask)
++static void xen_set_iopl_mask(unsigned mask)
+ {
+ struct physdev_set_iopl set_iopl;
+
+diff -Nur linux-4.1.23.orig/arch/xtensa/kernel/head.S linux-4.1.23/arch/xtensa/kernel/head.S
+--- linux-4.1.23.orig/arch/xtensa/kernel/head.S 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/xtensa/kernel/head.S 2016-05-02 22:53:51.000000000 +0200
+@@ -128,7 +128,7 @@
+ wsr a0, icountlevel
+
+ .set _index, 0
+- .rept XCHAL_NUM_DBREAK
++ .rept XCHAL_NUM_DBREAK - 1
+ wsr a0, SREG_DBREAKC + _index
+ .set _index, _index + 1
+ .endr
+diff -Nur linux-4.1.23.orig/arch/xtensa/mm/cache.c linux-4.1.23/arch/xtensa/mm/cache.c
+--- linux-4.1.23.orig/arch/xtensa/mm/cache.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/xtensa/mm/cache.c 2016-05-02 22:53:51.000000000 +0200
+@@ -97,11 +97,11 @@
+ unsigned long paddr;
+ void *kvaddr = coherent_kvaddr(page, TLBTEMP_BASE_1, vaddr, &paddr);
+
+- preempt_disable();
++ pagefault_disable();
+ kmap_invalidate_coherent(page, vaddr);
+ set_bit(PG_arch_1, &page->flags);
+ clear_page_alias(kvaddr, paddr);
+- preempt_enable();
++ pagefault_enable();
+ }
+
+ void copy_user_highpage(struct page *dst, struct page *src,
+@@ -113,11 +113,11 @@
+ void *src_vaddr = coherent_kvaddr(src, TLBTEMP_BASE_2, vaddr,
+ &src_paddr);
+
+- preempt_disable();
++ pagefault_disable();
+ kmap_invalidate_coherent(dst, vaddr);
+ set_bit(PG_arch_1, &dst->flags);
+ copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr);
+- preempt_enable();
++ pagefault_enable();
+ }
+
+ #endif /* DCACHE_WAY_SIZE > PAGE_SIZE */
+diff -Nur linux-4.1.23.orig/arch/xtensa/platforms/iss/console.c linux-4.1.23/arch/xtensa/platforms/iss/console.c
+--- linux-4.1.23.orig/arch/xtensa/platforms/iss/console.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/arch/xtensa/platforms/iss/console.c 2016-05-02 22:53:51.000000000 +0200
+@@ -100,23 +100,21 @@
+ {
+ struct tty_port *port = (struct tty_port *)priv;
+ int i = 0;
+- int rd = 1;
+ unsigned char c;
+
+ spin_lock(&timer_lock);
+
+ while (simc_poll(0)) {
+- rd = simc_read(0, &c, 1);
+- if (rd <= 0)
+- break;
++ simc_read(0, &c, 1);
+ tty_insert_flip_char(port, c, TTY_NORMAL);
+ i++;
+ }
+
+ if (i)
+ tty_flip_buffer_push(port);
+- if (rd)
+- mod_timer(&serial_timer, jiffies + SERIAL_TIMER_VALUE);
++
++
++ mod_timer(&serial_timer, jiffies + SERIAL_TIMER_VALUE);
+ spin_unlock(&timer_lock);
+ }
+
+diff -Nur linux-4.1.23.orig/block/blk-core.c linux-4.1.23/block/blk-core.c
+--- linux-4.1.23.orig/block/blk-core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/block/blk-core.c 2016-05-02 22:53:51.000000000 +0200
+@@ -2067,7 +2067,7 @@
+ if (q->mq_ops) {
+ if (blk_queue_io_stat(q))
+ blk_account_io_start(rq, true);
+- blk_mq_insert_request(rq, false, true, false);
++ blk_mq_insert_request(rq, false, true, true);
+ return 0;
+ }
+
+diff -Nur linux-4.1.23.orig/crypto/asymmetric_keys/Makefile linux-4.1.23/crypto/asymmetric_keys/Makefile
+--- linux-4.1.23.orig/crypto/asymmetric_keys/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/crypto/asymmetric_keys/Makefile 2016-05-02 22:53:51.000000000 +0200
+@@ -15,21 +15,15 @@
+ obj-$(CONFIG_X509_CERTIFICATE_PARSER) += x509_key_parser.o
+ x509_key_parser-y := \
+ x509-asn1.o \
+- x509_akid-asn1.o \
+ x509_rsakey-asn1.o \
+ x509_cert_parser.o \
+ x509_public_key.o
+
+-$(obj)/x509_cert_parser.o: \
+- $(obj)/x509-asn1.h \
+- $(obj)/x509_akid-asn1.h \
+- $(obj)/x509_rsakey-asn1.h
++$(obj)/x509_cert_parser.o: $(obj)/x509-asn1.h $(obj)/x509_rsakey-asn1.h
+ $(obj)/x509-asn1.o: $(obj)/x509-asn1.c $(obj)/x509-asn1.h
+-$(obj)/x509_akid-asn1.o: $(obj)/x509_akid-asn1.c $(obj)/x509_akid-asn1.h
+ $(obj)/x509_rsakey-asn1.o: $(obj)/x509_rsakey-asn1.c $(obj)/x509_rsakey-asn1.h
+
+ clean-files += x509-asn1.c x509-asn1.h
+-clean-files += x509_akid-asn1.c x509_akid-asn1.h
+ clean-files += x509_rsakey-asn1.c x509_rsakey-asn1.h
+
+ #
+diff -Nur linux-4.1.23.orig/crypto/asymmetric_keys/pkcs7_trust.c linux-4.1.23/crypto/asymmetric_keys/pkcs7_trust.c
+--- linux-4.1.23.orig/crypto/asymmetric_keys/pkcs7_trust.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/crypto/asymmetric_keys/pkcs7_trust.c 2016-05-02 22:53:51.000000000 +0200
+@@ -85,8 +85,8 @@
+ /* No match - see if the root certificate has a signer amongst the
+ * trusted keys.
+ */
+- if (last && last->akid_skid) {
+- key = x509_request_asymmetric_key(trust_keyring, last->akid_skid,
++ if (last && last->authority) {
++ key = x509_request_asymmetric_key(trust_keyring, last->authority,
+ false);
+ if (!IS_ERR(key)) {
+ x509 = last;
+diff -Nur linux-4.1.23.orig/crypto/asymmetric_keys/pkcs7_verify.c linux-4.1.23/crypto/asymmetric_keys/pkcs7_verify.c
+--- linux-4.1.23.orig/crypto/asymmetric_keys/pkcs7_verify.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/crypto/asymmetric_keys/pkcs7_verify.c 2016-05-02 22:53:52.000000000 +0200
+@@ -187,11 +187,11 @@
+ goto maybe_missing_crypto_in_x509;
+
+ pr_debug("- issuer %s\n", x509->issuer);
+- if (x509->akid_skid)
++ if (x509->authority)
+ pr_debug("- authkeyid %*phN\n",
+- x509->akid_skid->len, x509->akid_skid->data);
++ x509->authority->len, x509->authority->data);
+
+- if (!x509->akid_skid ||
++ if (!x509->authority ||
+ strcmp(x509->subject, x509->issuer) == 0) {
+ /* If there's no authority certificate specified, then
+ * the certificate must be self-signed and is the root
+@@ -216,13 +216,13 @@
+ * list to see if the next one is there.
+ */
+ pr_debug("- want %*phN\n",
+- x509->akid_skid->len, x509->akid_skid->data);
++ x509->authority->len, x509->authority->data);
+ for (p = pkcs7->certs; p; p = p->next) {
+ if (!p->skid)
+ continue;
+ pr_debug("- cmp [%u] %*phN\n",
+ p->index, p->skid->len, p->skid->data);
+- if (asymmetric_key_id_same(p->skid, x509->akid_skid))
++ if (asymmetric_key_id_same(p->skid, x509->authority))
+ goto found_issuer;
+ }
+
+@@ -338,6 +338,8 @@
+ ret = x509_get_sig_params(x509);
+ if (ret < 0)
+ return ret;
++ pr_debug("X.509[%u] %*phN\n",
++ n, x509->authority->len, x509->authority->data);
+ }
+
+ for (sinfo = pkcs7->signed_infos; sinfo; sinfo = sinfo->next) {
+diff -Nur linux-4.1.23.orig/crypto/asymmetric_keys/x509_akid.asn1 linux-4.1.23/crypto/asymmetric_keys/x509_akid.asn1
+--- linux-4.1.23.orig/crypto/asymmetric_keys/x509_akid.asn1 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/crypto/asymmetric_keys/x509_akid.asn1 1970-01-01 01:00:00.000000000 +0100
+@@ -1,35 +0,0 @@
+--- X.509 AuthorityKeyIdentifier
+--- rfc5280 section 4.2.1.1
+-
+-AuthorityKeyIdentifier ::= SEQUENCE {
+- keyIdentifier [0] IMPLICIT KeyIdentifier OPTIONAL,
+- authorityCertIssuer [1] IMPLICIT GeneralNames OPTIONAL,
+- authorityCertSerialNumber [2] IMPLICIT CertificateSerialNumber OPTIONAL
+- }
+-
+-KeyIdentifier ::= OCTET STRING ({ x509_akid_note_kid })
+-
+-CertificateSerialNumber ::= INTEGER ({ x509_akid_note_serial })
+-
+-GeneralNames ::= SEQUENCE OF GeneralName
+-
+-GeneralName ::= CHOICE {
+- otherName [0] ANY,
+- rfc822Name [1] IA5String,
+- dNSName [2] IA5String,
+- x400Address [3] ANY,
+- directoryName [4] Name ({ x509_akid_note_name }),
+- ediPartyName [5] ANY,
+- uniformResourceIdentifier [6] IA5String,
+- iPAddress [7] OCTET STRING,
+- registeredID [8] OBJECT IDENTIFIER
+- }
+-
+-Name ::= SEQUENCE OF RelativeDistinguishedName
+-
+-RelativeDistinguishedName ::= SET OF AttributeValueAssertion
+-
+-AttributeValueAssertion ::= SEQUENCE {
+- attributeType OBJECT IDENTIFIER ({ x509_note_OID }),
+- attributeValue ANY ({ x509_extract_name_segment })
+- }
+diff -Nur linux-4.1.23.orig/crypto/asymmetric_keys/x509_cert_parser.c linux-4.1.23/crypto/asymmetric_keys/x509_cert_parser.c
+--- linux-4.1.23.orig/crypto/asymmetric_keys/x509_cert_parser.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/crypto/asymmetric_keys/x509_cert_parser.c 2016-05-02 22:53:52.000000000 +0200
+@@ -18,7 +18,6 @@
+ #include "public_key.h"
+ #include "x509_parser.h"
+ #include "x509-asn1.h"
+-#include "x509_akid-asn1.h"
+ #include "x509_rsakey-asn1.h"
+
+ struct x509_parse_context {
+@@ -36,10 +35,6 @@
+ u16 o_offset; /* Offset of organizationName (O) */
+ u16 cn_offset; /* Offset of commonName (CN) */
+ u16 email_offset; /* Offset of emailAddress */
+- unsigned raw_akid_size;
+- const void *raw_akid; /* Raw authorityKeyId in ASN.1 */
+- const void *akid_raw_issuer; /* Raw directoryName in authorityKeyId */
+- unsigned akid_raw_issuer_size;
+ };
+
+ /*
+@@ -53,8 +48,7 @@
+ kfree(cert->subject);
+ kfree(cert->id);
+ kfree(cert->skid);
+- kfree(cert->akid_id);
+- kfree(cert->akid_skid);
++ kfree(cert->authority);
+ kfree(cert->sig.digest);
+ mpi_free(cert->sig.rsa.s);
+ kfree(cert);
+@@ -91,18 +85,6 @@
+ if (ret < 0)
+ goto error_decode;
+
+- /* Decode the AuthorityKeyIdentifier */
+- if (ctx->raw_akid) {
+- pr_devel("AKID: %u %*phN\n",
+- ctx->raw_akid_size, ctx->raw_akid_size, ctx->raw_akid);
+- ret = asn1_ber_decoder(&x509_akid_decoder, ctx,
+- ctx->raw_akid, ctx->raw_akid_size);
+- if (ret < 0) {
+- pr_warn("Couldn't decode AuthKeyIdentifier\n");
+- goto error_decode;
+- }
+- }
+-
+ /* Decode the public key */
+ ret = asn1_ber_decoder(&x509_rsakey_decoder, ctx,
+ ctx->key, ctx->key_size);
+@@ -440,6 +422,7 @@
+ struct x509_parse_context *ctx = context;
+ struct asymmetric_key_id *kid;
+ const unsigned char *v = value;
++ int i;
+
+ pr_debug("Extension: %u\n", ctx->last_oid);
+
+@@ -466,113 +449,117 @@
+
+ if (ctx->last_oid == OID_authorityKeyIdentifier) {
+ /* Get hold of the CA key fingerprint */
+- ctx->raw_akid = v;
+- ctx->raw_akid_size = vlen;
++ if (ctx->cert->authority || vlen < 5)
++ return -EBADMSG;
++
++ /* Authority Key Identifier must be a Constructed SEQUENCE */
++ if (v[0] != (ASN1_SEQ | (ASN1_CONS << 5)))
++ return -EBADMSG;
++
++ /* Authority Key Identifier is not indefinite length */
++ if (unlikely(vlen == ASN1_INDEFINITE_LENGTH))
++ return -EBADMSG;
++
++ if (vlen < ASN1_INDEFINITE_LENGTH) {
++ /* Short Form length */
++ if (v[1] != vlen - 2 ||
++ v[2] != SEQ_TAG_KEYID ||
++ v[3] > vlen - 4)
++ return -EBADMSG;
++
++ vlen = v[3];
++ v += 4;
++ } else {
++ /* Long Form length */
++ size_t seq_len = 0;
++ size_t sub = v[1] - ASN1_INDEFINITE_LENGTH;
++
++ if (sub > 2)
++ return -EBADMSG;
++
++ /* calculate the length from subsequent octets */
++ v += 2;
++ for (i = 0; i < sub; i++) {
++ seq_len <<= 8;
++ seq_len |= v[i];
++ }
++
++ if (seq_len != vlen - 2 - sub ||
++ v[sub] != SEQ_TAG_KEYID ||
++ v[sub + 1] > vlen - 4 - sub)
++ return -EBADMSG;
++
++ vlen = v[sub + 1];
++ v += (sub + 2);
++ }
++
++ kid = asymmetric_key_generate_id(ctx->cert->raw_issuer,
++ ctx->cert->raw_issuer_size,
++ v, vlen);
++ if (IS_ERR(kid))
++ return PTR_ERR(kid);
++ pr_debug("authkeyid %*phN\n", kid->len, kid->data);
++ ctx->cert->authority = kid;
+ return 0;
+ }
+
+ return 0;
+ }
+
+-/**
+- * x509_decode_time - Decode an X.509 time ASN.1 object
+- * @_t: The time to fill in
+- * @hdrlen: The length of the object header
+- * @tag: The object tag
+- * @value: The object value
+- * @vlen: The size of the object value
+- *
+- * Decode an ASN.1 universal time or generalised time field into a struct the
+- * kernel can handle and check it for validity. The time is decoded thus:
+- *
+- * [RFC5280 §4.1.2.5]
+- * CAs conforming to this profile MUST always encode certificate validity
+- * dates through the year 2049 as UTCTime; certificate validity dates in
+- * 2050 or later MUST be encoded as GeneralizedTime. Conforming
+- * applications MUST be able to process validity dates that are encoded in
+- * either UTCTime or GeneralizedTime.
++/*
++ * Record a certificate time.
+ */
+-int x509_decode_time(time64_t *_t, size_t hdrlen,
+- unsigned char tag,
+- const unsigned char *value, size_t vlen)
++static int x509_note_time(struct tm *tm, size_t hdrlen,
++ unsigned char tag,
++ const unsigned char *value, size_t vlen)
+ {
+- static const unsigned char month_lengths[] = { 31, 28, 31, 30, 31, 30,
+- 31, 31, 30, 31, 30, 31 };
+ const unsigned char *p = value;
+- unsigned year, mon, day, hour, min, sec, mon_len;
+
+-#define dec2bin(X) ({ unsigned char x = (X) - '0'; if (x > 9) goto invalid_time; x; })
++#define dec2bin(X) ((X) - '0')
+ #define DD2bin(P) ({ unsigned x = dec2bin(P[0]) * 10 + dec2bin(P[1]); P += 2; x; })
+
+ if (tag == ASN1_UNITIM) {
+ /* UTCTime: YYMMDDHHMMSSZ */
+ if (vlen != 13)
+ goto unsupported_time;
+- year = DD2bin(p);
+- if (year >= 50)
+- year += 1900;
++ tm->tm_year = DD2bin(p);
++ if (tm->tm_year >= 50)
++ tm->tm_year += 1900;
+ else
+- year += 2000;
++ tm->tm_year += 2000;
+ } else if (tag == ASN1_GENTIM) {
+ /* GenTime: YYYYMMDDHHMMSSZ */
+ if (vlen != 15)
+ goto unsupported_time;
+- year = DD2bin(p) * 100 + DD2bin(p);
+- if (year >= 1950 && year <= 2049)
+- goto invalid_time;
++ tm->tm_year = DD2bin(p) * 100 + DD2bin(p);
+ } else {
+ goto unsupported_time;
+ }
+
+- mon = DD2bin(p);
+- day = DD2bin(p);
+- hour = DD2bin(p);
+- min = DD2bin(p);
+- sec = DD2bin(p);
++ tm->tm_year -= 1900;
++ tm->tm_mon = DD2bin(p) - 1;
++ tm->tm_mday = DD2bin(p);
++ tm->tm_hour = DD2bin(p);
++ tm->tm_min = DD2bin(p);
++ tm->tm_sec = DD2bin(p);
+
+ if (*p != 'Z')
+ goto unsupported_time;
+
+- mon_len = month_lengths[mon];
+- if (mon == 2) {
+- if (year % 4 == 0) {
+- mon_len = 29;
+- if (year % 100 == 0) {
+- mon_len = 28;
+- if (year % 400 == 0)
+- mon_len = 29;
+- }
+- }
+- }
+-
+- if (year < 1970 ||
+- mon < 1 || mon > 12 ||
+- day < 1 || day > mon_len ||
+- hour < 0 || hour > 23 ||
+- min < 0 || min > 59 ||
+- sec < 0 || sec > 59)
+- goto invalid_time;
+-
+- *_t = mktime64(year, mon, day, hour, min, sec);
+ return 0;
+
+ unsupported_time:
+- pr_debug("Got unsupported time [tag %02x]: '%*phN'\n",
+- tag, (int)vlen, value);
+- return -EBADMSG;
+-invalid_time:
+- pr_debug("Got invalid time [tag %02x]: '%*phN'\n",
+- tag, (int)vlen, value);
++ pr_debug("Got unsupported time [tag %02x]: '%*.*s'\n",
++ tag, (int)vlen, (int)vlen, value);
+ return -EBADMSG;
+ }
+-EXPORT_SYMBOL_GPL(x509_decode_time);
+
+ int x509_note_not_before(void *context, size_t hdrlen,
+ unsigned char tag,
+ const void *value, size_t vlen)
+ {
+ struct x509_parse_context *ctx = context;
+- return x509_decode_time(&ctx->cert->valid_from, hdrlen, tag, value, vlen);
++ return x509_note_time(&ctx->cert->valid_from, hdrlen, tag, value, vlen);
+ }
+
+ int x509_note_not_after(void *context, size_t hdrlen,
+@@ -580,73 +567,5 @@
+ const void *value, size_t vlen)
+ {
+ struct x509_parse_context *ctx = context;
+- return x509_decode_time(&ctx->cert->valid_to, hdrlen, tag, value, vlen);
+-}
+-
+-/*
+- * Note a key identifier-based AuthorityKeyIdentifier
+- */
+-int x509_akid_note_kid(void *context, size_t hdrlen,
+- unsigned char tag,
+- const void *value, size_t vlen)
+-{
+- struct x509_parse_context *ctx = context;
+- struct asymmetric_key_id *kid;
+-
+- pr_debug("AKID: keyid: %*phN\n", (int)vlen, value);
+-
+- if (ctx->cert->akid_skid)
+- return 0;
+-
+- kid = asymmetric_key_generate_id(ctx->cert->raw_issuer,
+- ctx->cert->raw_issuer_size,
+- value, vlen);
+- if (IS_ERR(kid))
+- return PTR_ERR(kid);
+- pr_debug("authkeyid %*phN\n", kid->len, kid->data);
+- ctx->cert->akid_skid = kid;
+- return 0;
+-}
+-
+-/*
+- * Note a directoryName in an AuthorityKeyIdentifier
+- */
+-int x509_akid_note_name(void *context, size_t hdrlen,
+- unsigned char tag,
+- const void *value, size_t vlen)
+-{
+- struct x509_parse_context *ctx = context;
+-
+- pr_debug("AKID: name: %*phN\n", (int)vlen, value);
+-
+- ctx->akid_raw_issuer = value;
+- ctx->akid_raw_issuer_size = vlen;
+- return 0;
+-}
+-
+-/*
+- * Note a serial number in an AuthorityKeyIdentifier
+- */
+-int x509_akid_note_serial(void *context, size_t hdrlen,
+- unsigned char tag,
+- const void *value, size_t vlen)
+-{
+- struct x509_parse_context *ctx = context;
+- struct asymmetric_key_id *kid;
+-
+- pr_debug("AKID: serial: %*phN\n", (int)vlen, value);
+-
+- if (!ctx->akid_raw_issuer || ctx->cert->akid_id)
+- return 0;
+-
+- kid = asymmetric_key_generate_id(value,
+- vlen,
+- ctx->akid_raw_issuer,
+- ctx->akid_raw_issuer_size);
+- if (IS_ERR(kid))
+- return PTR_ERR(kid);
+-
+- pr_debug("authkeyid %*phN\n", kid->len, kid->data);
+- ctx->cert->akid_id = kid;
+- return 0;
++ return x509_note_time(&ctx->cert->valid_to, hdrlen, tag, value, vlen);
+ }
+diff -Nur linux-4.1.23.orig/crypto/asymmetric_keys/x509_parser.h linux-4.1.23/crypto/asymmetric_keys/x509_parser.h
+--- linux-4.1.23.orig/crypto/asymmetric_keys/x509_parser.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/crypto/asymmetric_keys/x509_parser.h 2016-05-02 22:53:52.000000000 +0200
+@@ -19,12 +19,11 @@
+ struct public_key_signature sig; /* Signature parameters */
+ char *issuer; /* Name of certificate issuer */
+ char *subject; /* Name of certificate subject */
+- struct asymmetric_key_id *id; /* Issuer + Serial number */
++ struct asymmetric_key_id *id; /* Serial number + issuer */
+ struct asymmetric_key_id *skid; /* Subject + subjectKeyId (optional) */
+- struct asymmetric_key_id *akid_id; /* CA AuthKeyId matching ->id (optional) */
+- struct asymmetric_key_id *akid_skid; /* CA AuthKeyId matching ->skid (optional) */
+- time64_t valid_from;
+- time64_t valid_to;
++ struct asymmetric_key_id *authority; /* Authority key identifier (optional) */
++ struct tm valid_from;
++ struct tm valid_to;
+ const void *tbs; /* Signed data */
+ unsigned tbs_size; /* Size of signed data */
+ unsigned raw_sig_size; /* Size of sigature */
+@@ -49,9 +48,6 @@
+ */
+ extern void x509_free_certificate(struct x509_certificate *cert);
+ extern struct x509_certificate *x509_cert_parse(const void *data, size_t datalen);
+-extern int x509_decode_time(time64_t *_t, size_t hdrlen,
+- unsigned char tag,
+- const unsigned char *value, size_t vlen);
+
+ /*
+ * x509_public_key.c
+diff -Nur linux-4.1.23.orig/crypto/asymmetric_keys/x509_public_key.c linux-4.1.23/crypto/asymmetric_keys/x509_public_key.c
+--- linux-4.1.23.orig/crypto/asymmetric_keys/x509_public_key.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/crypto/asymmetric_keys/x509_public_key.c 2016-05-02 22:53:52.000000000 +0200
+@@ -227,10 +227,10 @@
+ if (!trust_keyring)
+ return -EOPNOTSUPP;
+
+- if (ca_keyid && !asymmetric_key_id_partial(cert->akid_skid, ca_keyid))
++ if (ca_keyid && !asymmetric_key_id_partial(cert->authority, ca_keyid))
+ return -EPERM;
+
+- key = x509_request_asymmetric_key(trust_keyring, cert->akid_skid,
++ key = x509_request_asymmetric_key(trust_keyring, cert->authority,
+ false);
+ if (!IS_ERR(key)) {
+ if (!use_builtin_keys
+@@ -271,7 +271,14 @@
+ }
+
+ pr_devel("Cert Key Algo: %s\n", pkey_algo_name[cert->pub->pkey_algo]);
+- pr_devel("Cert Valid period: %lld-%lld\n", cert->valid_from, cert->valid_to);
++ pr_devel("Cert Valid From: %04ld-%02d-%02d %02d:%02d:%02d\n",
++ cert->valid_from.tm_year + 1900, cert->valid_from.tm_mon + 1,
++ cert->valid_from.tm_mday, cert->valid_from.tm_hour,
++ cert->valid_from.tm_min, cert->valid_from.tm_sec);
++ pr_devel("Cert Valid To: %04ld-%02d-%02d %02d:%02d:%02d\n",
++ cert->valid_to.tm_year + 1900, cert->valid_to.tm_mon + 1,
++ cert->valid_to.tm_mday, cert->valid_to.tm_hour,
++ cert->valid_to.tm_min, cert->valid_to.tm_sec);
+ pr_devel("Cert Signature: %s + %s\n",
+ pkey_algo_name[cert->sig.pkey_algo],
+ hash_algo_name[cert->sig.pkey_hash_algo]);
+@@ -280,8 +287,8 @@
+ cert->pub->id_type = PKEY_ID_X509;
+
+ /* Check the signature on the key if it appears to be self-signed */
+- if (!cert->akid_skid ||
+- asymmetric_key_id_same(cert->skid, cert->akid_skid)) {
++ if (!cert->authority ||
++ asymmetric_key_id_same(cert->skid, cert->authority)) {
+ ret = x509_check_signature(cert->pub, cert); /* self-signed */
+ if (ret < 0)
+ goto error_free_cert;
+diff -Nur linux-4.1.23.orig/drivers/acpi/video_detect.c linux-4.1.23/drivers/acpi/video_detect.c
+--- linux-4.1.23.orig/drivers/acpi/video_detect.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/acpi/video_detect.c 2016-05-02 22:53:52.000000000 +0200
+@@ -166,6 +166,14 @@
+ DMI_MATCH(DMI_PRODUCT_NAME, "UL30A"),
+ },
+ },
++ {
++ .callback = video_detect_force_vendor,
++ .ident = "Dell Inspiron 5737",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5737"),
++ },
++ },
+ { },
+ };
+
+diff -Nur linux-4.1.23.orig/drivers/block/mtip32xx/mtip32xx.c linux-4.1.23/drivers/block/mtip32xx/mtip32xx.c
+--- linux-4.1.23.orig/drivers/block/mtip32xx/mtip32xx.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/block/mtip32xx/mtip32xx.c 2016-05-02 22:53:52.000000000 +0200
+@@ -705,7 +705,7 @@
+ fail_reason = "thermal shutdown";
+ }
+ if (buf[288] == 0xBF) {
+- set_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag);
++ set_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag);
+ dev_info(&dd->pdev->dev,
+ "Drive indicates rebuild has failed. Secure erase required.\n");
+ fail_all_ncq_cmds = 1;
+@@ -896,10 +896,6 @@
+
+ /* Acknowledge the interrupt status on the port.*/
+ port_stat = readl(port->mmio + PORT_IRQ_STAT);
+- if (unlikely(port_stat == 0xFFFFFFFF)) {
+- mtip_check_surprise_removal(dd->pdev);
+- return IRQ_HANDLED;
+- }
+ writel(port_stat, port->mmio + PORT_IRQ_STAT);
+
+ /* Demux port status */
+@@ -995,11 +991,15 @@
+ reply = port->rxfis + RX_FIS_D2H_REG;
+ task_file_data = readl(port->mmio+PORT_TFDATA);
+
++ if (fis->command == ATA_CMD_SEC_ERASE_UNIT)
++ clear_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag);
++
+ if ((task_file_data & 1))
+ return false;
+
+ if (fis->command == ATA_CMD_SEC_ERASE_PREP) {
+ set_bit(MTIP_PF_SE_ACTIVE_BIT, &port->flags);
++ set_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag);
+ port->ic_pause_timer = jiffies;
+ return true;
+ } else if ((fis->command == ATA_CMD_DOWNLOAD_MICRO) &&
+@@ -1011,8 +1011,6 @@
+ ((fis->command == 0xFC) &&
+ (fis->features == 0x27 || fis->features == 0x72 ||
+ fis->features == 0x62 || fis->features == 0x26))) {
+- clear_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag);
+- clear_bit(MTIP_DDF_REBUILD_FAILED_BIT, &port->dd->dd_flag);
+ /* Com reset after secure erase or lowlevel format */
+ mtip_restart_port(port);
+ return false;
+@@ -1104,7 +1102,6 @@
+ struct mtip_cmd *int_cmd;
+ struct driver_data *dd = port->dd;
+ int rv = 0;
+- unsigned long start;
+
+ /* Make sure the buffer is 8 byte aligned. This is asic specific. */
+ if (buffer & 0x00000007) {
+@@ -1167,8 +1164,6 @@
+ /* Populate the command header */
+ int_cmd->command_header->byte_count = 0;
+
+- start = jiffies;
+-
+ /* Issue the command to the hardware */
+ mtip_issue_non_ncq_command(port, MTIP_TAG_INTERNAL);
+
+@@ -1177,12 +1172,10 @@
+ if ((rv = wait_for_completion_interruptible_timeout(
+ &wait,
+ msecs_to_jiffies(timeout))) <= 0) {
+-
+ if (rv == -ERESTARTSYS) { /* interrupted */
+ dev_err(&dd->pdev->dev,
+- "Internal command [%02X] was interrupted after %u ms\n",
+- fis->command,
+- jiffies_to_msecs(jiffies - start));
++ "Internal command [%02X] was interrupted after %lu ms\n",
++ fis->command, timeout);
+ rv = -EINTR;
+ goto exec_ic_exit;
+ } else if (rv == 0) /* timeout */
+@@ -2787,6 +2780,48 @@
+ debugfs_remove_recursive(dd->dfs_node);
+ }
+
++static int mtip_free_orphan(struct driver_data *dd)
++{
++ struct kobject *kobj;
++
++ if (dd->bdev) {
++ if (dd->bdev->bd_holders >= 1)
++ return -2;
++
++ bdput(dd->bdev);
++ dd->bdev = NULL;
++ }
++
++ mtip_hw_debugfs_exit(dd);
++
++ spin_lock(&rssd_index_lock);
++ ida_remove(&rssd_index_ida, dd->index);
++ spin_unlock(&rssd_index_lock);
++
++ if (!test_bit(MTIP_DDF_INIT_DONE_BIT, &dd->dd_flag) &&
++ test_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag)) {
++ put_disk(dd->disk);
++ } else {
++ if (dd->disk) {
++ kobj = kobject_get(&disk_to_dev(dd->disk)->kobj);
++ if (kobj) {
++ mtip_hw_sysfs_exit(dd, kobj);
++ kobject_put(kobj);
++ }
++ del_gendisk(dd->disk);
++ dd->disk = NULL;
++ }
++ if (dd->queue) {
++ dd->queue->queuedata = NULL;
++ blk_cleanup_queue(dd->queue);
++ blk_mq_free_tag_set(&dd->tags);
++ dd->queue = NULL;
++ }
++ }
++ kfree(dd);
++ return 0;
++}
++
+ /*
+ * Perform any init/resume time hardware setup
+ *
+@@ -2934,6 +2969,7 @@
+ unsigned long slot, slot_start, slot_wrap;
+ unsigned int num_cmd_slots = dd->slot_groups * 32;
+ struct mtip_port *port = dd->port;
++ int ret;
+
+ while (1) {
+ if (kthread_should_stop() ||
+@@ -3019,6 +3055,18 @@
+ if (kthread_should_stop())
+ goto st_out;
+ }
++
++ while (1) {
++ ret = mtip_free_orphan(dd);
++ if (!ret) {
++ /* NOTE: All data structures are invalid, do not
++ * access any here */
++ return 0;
++ }
++ msleep_interruptible(1000);
++ if (kthread_should_stop())
++ goto st_out;
++ }
+ st_out:
+ return 0;
+ }
+@@ -3130,7 +3178,7 @@
+ if (buf[288] == 0xBF) {
+ dev_info(&dd->pdev->dev,
+ "Drive indicates rebuild has failed.\n");
+- set_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag);
++ /* TODO */
+ }
+ }
+
+@@ -3304,25 +3352,20 @@
+ return rv;
+ }
+
+-static int mtip_standby_drive(struct driver_data *dd)
++static void mtip_standby_drive(struct driver_data *dd)
+ {
+- int rv = 0;
++ if (dd->sr)
++ return;
+
+- if (dd->sr || !dd->port)
+- return -ENODEV;
+ /*
+ * Send standby immediate (E0h) to the drive so that it
+ * saves its state.
+ */
+ if (!test_bit(MTIP_PF_REBUILD_BIT, &dd->port->flags) &&
+- !test_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag) &&
+- !test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag)) {
+- rv = mtip_standby_immediate(dd->port);
+- if (rv)
++ !test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag))
++ if (mtip_standby_immediate(dd->port))
+ dev_warn(&dd->pdev->dev,
+ "STANDBY IMMEDIATE failed\n");
+- }
+- return rv;
+ }
+
+ /*
+@@ -3351,7 +3394,6 @@
+ /* Release the IRQ. */
+ irq_set_affinity_hint(dd->pdev->irq, NULL);
+ devm_free_irq(&dd->pdev->dev, dd->pdev->irq, dd);
+- msleep(1000);
+
+ /* Free dma regions */
+ mtip_dma_free(dd);
+@@ -3380,7 +3422,8 @@
+ * Send standby immediate (E0h) to the drive so that it
+ * saves its state.
+ */
+- mtip_standby_drive(dd);
++ if (!dd->sr && dd->port)
++ mtip_standby_immediate(dd->port);
+
+ return 0;
+ }
+@@ -3403,7 +3446,7 @@
+ * Send standby immediate (E0h) to the drive
+ * so that it saves its state.
+ */
+- if (mtip_standby_drive(dd) != 0) {
++ if (mtip_standby_immediate(dd->port) != 0) {
+ dev_err(&dd->pdev->dev,
+ "Failed standby-immediate command\n");
+ return -EFAULT;
+@@ -3641,28 +3684,6 @@
+ return 0;
+ }
+
+-static int mtip_block_open(struct block_device *dev, fmode_t mode)
+-{
+- struct driver_data *dd;
+-
+- if (dev && dev->bd_disk) {
+- dd = (struct driver_data *) dev->bd_disk->private_data;
+-
+- if (dd) {
+- if (test_bit(MTIP_DDF_REMOVAL_BIT,
+- &dd->dd_flag)) {
+- return -ENODEV;
+- }
+- return 0;
+- }
+- }
+- return -ENODEV;
+-}
+-
+-void mtip_block_release(struct gendisk *disk, fmode_t mode)
+-{
+-}
+-
+ /*
+ * Block device operation function.
+ *
+@@ -3670,8 +3691,6 @@
+ * layer.
+ */
+ static const struct block_device_operations mtip_block_ops = {
+- .open = mtip_block_open,
+- .release = mtip_block_release,
+ .ioctl = mtip_block_ioctl,
+ #ifdef CONFIG_COMPAT
+ .compat_ioctl = mtip_block_compat_ioctl,
+@@ -3710,9 +3729,10 @@
+ rq_data_dir(rq))) {
+ return -ENODATA;
+ }
+- if (unlikely(test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag) ||
+- test_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag)))
++ if (unlikely(test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag)))
+ return -ENODATA;
++ if (test_bit(MTIP_DDF_REBUILD_FAILED_BIT, &dd->dd_flag))
++ return -ENXIO;
+ }
+
+ if (rq->cmd_flags & REQ_DISCARD) {
+@@ -4046,51 +4066,52 @@
+ {
+ struct kobject *kobj;
+
+- mtip_hw_debugfs_exit(dd);
++ if (!dd->sr) {
++ mtip_hw_debugfs_exit(dd);
+
+- if (dd->mtip_svc_handler) {
+- set_bit(MTIP_PF_SVC_THD_STOP_BIT, &dd->port->flags);
+- wake_up_interruptible(&dd->port->svc_wait);
+- kthread_stop(dd->mtip_svc_handler);
+- }
++ if (dd->mtip_svc_handler) {
++ set_bit(MTIP_PF_SVC_THD_STOP_BIT, &dd->port->flags);
++ wake_up_interruptible(&dd->port->svc_wait);
++ kthread_stop(dd->mtip_svc_handler);
++ }
+
+- /* Clean up the sysfs attributes, if created */
+- if (test_bit(MTIP_DDF_INIT_DONE_BIT, &dd->dd_flag)) {
+- kobj = kobject_get(&disk_to_dev(dd->disk)->kobj);
+- if (kobj) {
+- mtip_hw_sysfs_exit(dd, kobj);
+- kobject_put(kobj);
++ /* Clean up the sysfs attributes, if created */
++ if (test_bit(MTIP_DDF_INIT_DONE_BIT, &dd->dd_flag)) {
++ kobj = kobject_get(&disk_to_dev(dd->disk)->kobj);
++ if (kobj) {
++ mtip_hw_sysfs_exit(dd, kobj);
++ kobject_put(kobj);
++ }
+ }
+- }
+
+- if (!dd->sr)
+ mtip_standby_drive(dd);
+- else
+- dev_info(&dd->pdev->dev, "device %s surprise removal\n",
+- dd->disk->disk_name);
+
+- /*
+- * Delete our gendisk structure. This also removes the device
+- * from /dev
+- */
+- if (dd->bdev) {
+- bdput(dd->bdev);
+- dd->bdev = NULL;
+- }
+- if (dd->disk) {
+- del_gendisk(dd->disk);
+- if (dd->disk->queue) {
+- blk_cleanup_queue(dd->queue);
+- blk_mq_free_tag_set(&dd->tags);
+- dd->queue = NULL;
++ /*
++ * Delete our gendisk structure. This also removes the device
++ * from /dev
++ */
++ if (dd->bdev) {
++ bdput(dd->bdev);
++ dd->bdev = NULL;
++ }
++ if (dd->disk) {
++ if (dd->disk->queue) {
++ del_gendisk(dd->disk);
++ blk_cleanup_queue(dd->queue);
++ blk_mq_free_tag_set(&dd->tags);
++ dd->queue = NULL;
++ } else
++ put_disk(dd->disk);
+ }
+- put_disk(dd->disk);
+- }
+- dd->disk = NULL;
++ dd->disk = NULL;
+
+- spin_lock(&rssd_index_lock);
+- ida_remove(&rssd_index_ida, dd->index);
+- spin_unlock(&rssd_index_lock);
++ spin_lock(&rssd_index_lock);
++ ida_remove(&rssd_index_ida, dd->index);
++ spin_unlock(&rssd_index_lock);
++ } else {
++ dev_info(&dd->pdev->dev, "device %s surprise removal\n",
++ dd->disk->disk_name);
++ }
+
+ /* De-initialize the protocol layer. */
+ mtip_hw_exit(dd);
+@@ -4119,12 +4140,12 @@
+ dev_info(&dd->pdev->dev,
+ "Shutting down %s ...\n", dd->disk->disk_name);
+
+- del_gendisk(dd->disk);
+ if (dd->disk->queue) {
++ del_gendisk(dd->disk);
+ blk_cleanup_queue(dd->queue);
+ blk_mq_free_tag_set(&dd->tags);
+- }
+- put_disk(dd->disk);
++ } else
++ put_disk(dd->disk);
+ dd->disk = NULL;
+ dd->queue = NULL;
+ }
+@@ -4464,7 +4485,7 @@
+ struct driver_data *dd = pci_get_drvdata(pdev);
+ unsigned long flags, to;
+
+- set_bit(MTIP_DDF_REMOVAL_BIT, &dd->dd_flag);
++ set_bit(MTIP_DDF_REMOVE_PENDING_BIT, &dd->dd_flag);
+
+ spin_lock_irqsave(&dev_lock, flags);
+ list_del_init(&dd->online_list);
+@@ -4481,18 +4502,11 @@
+ } while (atomic_read(&dd->irq_workers_active) != 0 &&
+ time_before(jiffies, to));
+
+- fsync_bdev(dd->bdev);
+-
+ if (atomic_read(&dd->irq_workers_active) != 0) {
+ dev_warn(&dd->pdev->dev,
+ "Completion workers still active!\n");
+ }
+
+- if (dd->sr)
+- blk_mq_stop_hw_queues(dd->queue);
+-
+- set_bit(MTIP_DDF_REMOVE_PENDING_BIT, &dd->dd_flag);
+-
+ /* Clean up the block layer. */
+ mtip_block_remove(dd);
+
+@@ -4510,8 +4524,10 @@
+ list_del_init(&dd->remove_list);
+ spin_unlock_irqrestore(&dev_lock, flags);
+
+- kfree(dd);
+- set_bit(MTIP_DDF_REMOVE_DONE_BIT, &dd->dd_flag);
++ if (!dd->sr)
++ kfree(dd);
++ else
++ set_bit(MTIP_DDF_REMOVE_DONE_BIT, &dd->dd_flag);
+
+ pcim_iounmap_regions(pdev, 1 << MTIP_ABAR);
+ pci_set_drvdata(pdev, NULL);
+diff -Nur linux-4.1.23.orig/drivers/block/mtip32xx/mtip32xx.h linux-4.1.23/drivers/block/mtip32xx/mtip32xx.h
+--- linux-4.1.23.orig/drivers/block/mtip32xx/mtip32xx.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/block/mtip32xx/mtip32xx.h 2016-05-02 22:53:52.000000000 +0200
+@@ -155,7 +155,6 @@
+ MTIP_DDF_RESUME_BIT = 6,
+ MTIP_DDF_INIT_DONE_BIT = 7,
+ MTIP_DDF_REBUILD_FAILED_BIT = 8,
+- MTIP_DDF_REMOVAL_BIT = 9,
+
+ MTIP_DDF_STOP_IO = ((1 << MTIP_DDF_REMOVE_PENDING_BIT) |
+ (1 << MTIP_DDF_SEC_LOCK_BIT) |
+diff -Nur linux-4.1.23.orig/drivers/bluetooth/ath3k.c linux-4.1.23/drivers/bluetooth/ath3k.c
+--- linux-4.1.23.orig/drivers/bluetooth/ath3k.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/bluetooth/ath3k.c 2016-05-02 22:53:52.000000000 +0200
+@@ -82,7 +82,6 @@
+ { USB_DEVICE(0x0489, 0xe05f) },
+ { USB_DEVICE(0x0489, 0xe076) },
+ { USB_DEVICE(0x0489, 0xe078) },
+- { USB_DEVICE(0x0489, 0xe095) },
+ { USB_DEVICE(0x04c5, 0x1330) },
+ { USB_DEVICE(0x04CA, 0x3004) },
+ { USB_DEVICE(0x04CA, 0x3005) },
+@@ -93,7 +92,6 @@
+ { USB_DEVICE(0x04CA, 0x300d) },
+ { USB_DEVICE(0x04CA, 0x300f) },
+ { USB_DEVICE(0x04CA, 0x3010) },
+- { USB_DEVICE(0x04CA, 0x3014) },
+ { USB_DEVICE(0x0930, 0x0219) },
+ { USB_DEVICE(0x0930, 0x021c) },
+ { USB_DEVICE(0x0930, 0x0220) },
+@@ -115,12 +113,10 @@
+ { USB_DEVICE(0x13d3, 0x3362) },
+ { USB_DEVICE(0x13d3, 0x3375) },
+ { USB_DEVICE(0x13d3, 0x3393) },
+- { USB_DEVICE(0x13d3, 0x3395) },
+ { USB_DEVICE(0x13d3, 0x3402) },
+ { USB_DEVICE(0x13d3, 0x3408) },
+ { USB_DEVICE(0x13d3, 0x3423) },
+ { USB_DEVICE(0x13d3, 0x3432) },
+- { USB_DEVICE(0x13d3, 0x3472) },
+ { USB_DEVICE(0x13d3, 0x3474) },
+
+ /* Atheros AR5BBU12 with sflash firmware */
+@@ -148,7 +144,6 @@
+ { USB_DEVICE(0x0489, 0xe05f), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0489, 0xe076), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0489, 0xe078), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x0489, 0xe095), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
+@@ -159,7 +154,6 @@
+ { USB_DEVICE(0x04ca, 0x300d), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x300f), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x04ca, 0x3014), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x021c), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 },
+@@ -181,12 +175,10 @@
+ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x13d3, 0x3395), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3423), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x13d3, 0x3472), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3474), .driver_info = BTUSB_ATH3012 },
+
+ /* Atheros AR5BBU22 with sflash firmware */
+diff -Nur linux-4.1.23.orig/drivers/bluetooth/btusb.c linux-4.1.23/drivers/bluetooth/btusb.c
+--- linux-4.1.23.orig/drivers/bluetooth/btusb.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/bluetooth/btusb.c 2016-05-02 22:53:52.000000000 +0200
+@@ -184,7 +184,6 @@
+ { USB_DEVICE(0x0489, 0xe05f), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0489, 0xe076), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0489, 0xe078), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x0489, 0xe095), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
+@@ -195,7 +194,6 @@
+ { USB_DEVICE(0x04ca, 0x300d), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x300f), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x04ca, 0x3014), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x021c), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 },
+@@ -217,12 +215,10 @@
+ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x13d3, 0x3395), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3408), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3423), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3432), .driver_info = BTUSB_ATH3012 },
+- { USB_DEVICE(0x13d3, 0x3472), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x13d3, 0x3474), .driver_info = BTUSB_ATH3012 },
+
+ /* Atheros AR5BBU12 with sflash firmware */
+diff -Nur linux-4.1.23.orig/drivers/bluetooth/hci_h5.c linux-4.1.23/drivers/bluetooth/hci_h5.c
+--- linux-4.1.23.orig/drivers/bluetooth/hci_h5.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/bluetooth/hci_h5.c 2016-05-02 22:53:52.000000000 +0200
@@ -314,7 +314,8 @@
h5_link_control(hu, conf_req, 3);
} else if (memcmp(data, conf_req, 2) == 0) {
@@ -20144,9 +21989,21 @@ diff -Nur linux-4.1.22.orig/drivers/bluetooth/hci_h5.c linux-4.1.22/drivers/blue
} else if (memcmp(data, conf_rsp, 2) == 0) {
if (H5_HDR_LEN(hdr) > 2)
h5->tx_win = (data[2] & 7);
-diff -Nur linux-4.1.22.orig/drivers/char/Kconfig linux-4.1.22/drivers/char/Kconfig
---- linux-4.1.22.orig/drivers/char/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/char/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/bus/imx-weim.c linux-4.1.23/drivers/bus/imx-weim.c
+--- linux-4.1.23.orig/drivers/bus/imx-weim.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/bus/imx-weim.c 2016-05-02 22:53:52.000000000 +0200
+@@ -150,7 +150,7 @@
+ return ret;
+ }
+
+- for_each_available_child_of_node(pdev->dev.of_node, child) {
++ for_each_child_of_node(pdev->dev.of_node, child) {
+ if (!child->name)
+ continue;
+
+diff -Nur linux-4.1.23.orig/drivers/char/Kconfig linux-4.1.23/drivers/char/Kconfig
+--- linux-4.1.23.orig/drivers/char/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/char/Kconfig 2016-05-02 22:53:52.000000000 +0200
@@ -590,6 +590,8 @@
source "drivers/s390/char/Kconfig"
@@ -20156,17 +22013,17 @@ diff -Nur linux-4.1.22.orig/drivers/char/Kconfig linux-4.1.22/drivers/char/Kconf
config MSM_SMD_PKT
bool "Enable device interface for some SMD packet ports"
default n
-diff -Nur linux-4.1.22.orig/drivers/char/Makefile linux-4.1.22/drivers/char/Makefile
---- linux-4.1.22.orig/drivers/char/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/char/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/Makefile linux-4.1.23/drivers/char/Makefile
+--- linux-4.1.23.orig/drivers/char/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/char/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -62,3 +62,4 @@
obj-$(CONFIG_TILE_SROM) += tile-srom.o
obj-$(CONFIG_XILLYBUS) += xillybus/
+obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/Kconfig linux-4.1.22/drivers/char/broadcom/Kconfig
---- linux-4.1.22.orig/drivers/char/broadcom/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/Kconfig linux-4.1.23/drivers/char/broadcom/Kconfig
+--- linux-4.1.23.orig/drivers/char/broadcom/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/Kconfig 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,57 @@
+#
+# Broadcom char driver config
@@ -20225,9 +22082,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/Kconfig linux-4.1.22/drivers/c
+ This driver provides a character device interface (ioctl + read/write) to
+ Broadcom's Secondary Memory interface. The low-level functionality is provided
+ by the SMI driver itself.
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/Makefile linux-4.1.22/drivers/char/broadcom/Makefile
---- linux-4.1.22.orig/drivers/char/broadcom/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/Makefile linux-4.1.23/drivers/char/broadcom/Makefile
+--- linux-4.1.23.orig/drivers/char/broadcom/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,7 @@
+obj-$(CONFIG_BCM_VC_CMA) += vc_cma/
+obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
@@ -20236,9 +22093,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/Makefile linux-4.1.22/drivers/
+
+obj-$(CONFIG_BCM2835_DEVGPIOMEM)+= bcm2835-gpiomem.o
+obj-$(CONFIG_BCM2835_SMI_DEV) += bcm2835_smi_dev.o
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/bcm2835-gpiomem.c linux-4.1.22/drivers/char/broadcom/bcm2835-gpiomem.c
---- linux-4.1.22.orig/drivers/char/broadcom/bcm2835-gpiomem.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/bcm2835-gpiomem.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/bcm2835-gpiomem.c linux-4.1.23/drivers/char/broadcom/bcm2835-gpiomem.c
+--- linux-4.1.23.orig/drivers/char/broadcom/bcm2835-gpiomem.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/bcm2835-gpiomem.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,260 @@
+/**
+ * GPIO memory device driver
@@ -20500,9 +22357,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/bcm2835-gpiomem.c linux-4.1.22
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace");
+MODULE_AUTHOR("Luke Wren <luke@raspberrypi.org>");
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/bcm2835_smi_dev.c linux-4.1.22/drivers/char/broadcom/bcm2835_smi_dev.c
---- linux-4.1.22.orig/drivers/char/broadcom/bcm2835_smi_dev.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/bcm2835_smi_dev.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/bcm2835_smi_dev.c linux-4.1.23/drivers/char/broadcom/bcm2835_smi_dev.c
+--- linux-4.1.23.orig/drivers/char/broadcom/bcm2835_smi_dev.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/bcm2835_smi_dev.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,402 @@
+/**
+ * Character device driver for Broadcom Secondary Memory Interface
@@ -20906,9 +22763,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/bcm2835_smi_dev.c linux-4.1.22
+MODULE_DESCRIPTION(
+ "Character device driver for BCM2835's secondary memory interface");
+MODULE_AUTHOR("Luke Wren <luke@raspberrypi.org>");
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_cma/Makefile linux-4.1.22/drivers/char/broadcom/vc_cma/Makefile
---- linux-4.1.22.orig/drivers/char/broadcom/vc_cma/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/vc_cma/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/vc_cma/Makefile linux-4.1.23/drivers/char/broadcom/vc_cma/Makefile
+--- linux-4.1.23.orig/drivers/char/broadcom/vc_cma/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/vc_cma/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,14 @@
+ccflags-y += -Wall -Wstrict-prototypes -Wno-trigraphs
+ccflags-y += -Werror
@@ -20924,9 +22781,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_cma/Makefile linux-4.1.22/d
+obj-$(CONFIG_BCM_VC_CMA) += vc-cma.o
+
+vc-cma-objs := vc_cma.o
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_cma/vc_cma.c linux-4.1.22/drivers/char/broadcom/vc_cma/vc_cma.c
---- linux-4.1.22.orig/drivers/char/broadcom/vc_cma/vc_cma.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/vc_cma/vc_cma.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/vc_cma/vc_cma.c linux-4.1.23/drivers/char/broadcom/vc_cma/vc_cma.c
+--- linux-4.1.23.orig/drivers/char/broadcom/vc_cma/vc_cma.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/vc_cma/vc_cma.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,1193 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -22121,9 +23978,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_cma/vc_cma.c linux-4.1.22/d
+module_exit(vc_cma_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Broadcom Corporation");
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_mem.c linux-4.1.22/drivers/char/broadcom/vc_mem.c
---- linux-4.1.22.orig/drivers/char/broadcom/vc_mem.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/vc_mem.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/vc_mem.c linux-4.1.23/drivers/char/broadcom/vc_mem.c
+--- linux-4.1.23.orig/drivers/char/broadcom/vc_mem.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/vc_mem.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,422 @@
+/*****************************************************************************
+* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved.
@@ -22547,9 +24404,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_mem.c linux-4.1.22/drivers/
+module_param(phys_addr, uint, 0644);
+module_param(mem_size, uint, 0644);
+module_param(mem_base, uint, 0644);
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_sm/Makefile linux-4.1.22/drivers/char/broadcom/vc_sm/Makefile
---- linux-4.1.22.orig/drivers/char/broadcom/vc_sm/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/vc_sm/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/vc_sm/Makefile linux-4.1.23/drivers/char/broadcom/vc_sm/Makefile
+--- linux-4.1.23.orig/drivers/char/broadcom/vc_sm/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/vc_sm/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,21 @@
+EXTRA_CFLAGS += -Wall -Wstrict-prototypes -Wno-trigraphs -O2
+
@@ -22572,9 +24429,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_sm/Makefile linux-4.1.22/dr
+vc-sm-objs := \
+ vmcs_sm.o \
+ vc_vchi_sm.o
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_sm/vc_vchi_sm.c linux-4.1.22/drivers/char/broadcom/vc_sm/vc_vchi_sm.c
---- linux-4.1.22.orig/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/vc_sm/vc_vchi_sm.c linux-4.1.23/drivers/char/broadcom/vc_sm/vc_vchi_sm.c
+--- linux-4.1.23.orig/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,492 @@
+/*****************************************************************************
+* Copyright 2011-2012 Broadcom Corporation. All rights reserved.
@@ -23068,9 +24925,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_sm/vc_vchi_sm.c linux-4.1.2
+ return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_ACTION_CLEAN,
+ msg, sizeof(*msg), 0, 0, 0, 0);
+}
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_sm/vmcs_sm.c linux-4.1.22/drivers/char/broadcom/vc_sm/vmcs_sm.c
---- linux-4.1.22.orig/drivers/char/broadcom/vc_sm/vmcs_sm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/vc_sm/vmcs_sm.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/vc_sm/vmcs_sm.c linux-4.1.23/drivers/char/broadcom/vc_sm/vmcs_sm.c
+--- linux-4.1.23.orig/drivers/char/broadcom/vc_sm/vmcs_sm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/vc_sm/vmcs_sm.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,3211 @@
+/*****************************************************************************
+* Copyright 2011-2012 Broadcom Corporation. All rights reserved.
@@ -26283,9 +28140,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vc_sm/vmcs_sm.c linux-4.1.22/d
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("VideoCore SharedMemory Driver");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vcio.c linux-4.1.22/drivers/char/broadcom/vcio.c
---- linux-4.1.22.orig/drivers/char/broadcom/vcio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/broadcom/vcio.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/broadcom/vcio.c linux-4.1.23/drivers/char/broadcom/vcio.c
+--- linux-4.1.23.orig/drivers/char/broadcom/vcio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/broadcom/vcio.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2010 Broadcom
@@ -26462,9 +28319,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/broadcom/vcio.c linux-4.1.22/drivers/ch
+MODULE_AUTHOR("Noralf Trønnes");
+MODULE_DESCRIPTION("Mailbox userspace access");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/drivers/char/hw_random/Kconfig linux-4.1.22/drivers/char/hw_random/Kconfig
---- linux-4.1.22.orig/drivers/char/hw_random/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/char/hw_random/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/hw_random/Kconfig linux-4.1.23/drivers/char/hw_random/Kconfig
+--- linux-4.1.23.orig/drivers/char/hw_random/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/char/hw_random/Kconfig 2016-05-02 22:53:52.000000000 +0200
@@ -90,7 +90,7 @@
config HW_RANDOM_BCM2835
@@ -26492,9 +28349,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/hw_random/Kconfig linux-4.1.22/drivers/
config HW_RANDOM_MSM
tristate "Qualcomm SoCs Random Number Generator support"
depends on HW_RANDOM && ARCH_QCOM
-diff -Nur linux-4.1.22.orig/drivers/char/hw_random/Makefile linux-4.1.22/drivers/char/hw_random/Makefile
---- linux-4.1.22.orig/drivers/char/hw_random/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/char/hw_random/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/hw_random/Makefile linux-4.1.23/drivers/char/hw_random/Makefile
+--- linux-4.1.23.orig/drivers/char/hw_random/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/char/hw_random/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -4,6 +4,7 @@
obj-$(CONFIG_HW_RANDOM) += rng-core.o
@@ -26503,9 +28360,9 @@ diff -Nur linux-4.1.22.orig/drivers/char/hw_random/Makefile linux-4.1.22/drivers
obj-$(CONFIG_HW_RANDOM_TIMERIOMEM) += timeriomem-rng.o
obj-$(CONFIG_HW_RANDOM_INTEL) += intel-rng.o
obj-$(CONFIG_HW_RANDOM_AMD) += amd-rng.o
-diff -Nur linux-4.1.22.orig/drivers/char/hw_random/bcm2708-rng.c linux-4.1.22/drivers/char/hw_random/bcm2708-rng.c
---- linux-4.1.22.orig/drivers/char/hw_random/bcm2708-rng.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/char/hw_random/bcm2708-rng.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/hw_random/bcm2708-rng.c linux-4.1.23/drivers/char/hw_random/bcm2708-rng.c
+--- linux-4.1.23.orig/drivers/char/hw_random/bcm2708-rng.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/char/hw_random/bcm2708-rng.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -26625,9 +28482,26 @@ diff -Nur linux-4.1.22.orig/drivers/char/hw_random/bcm2708-rng.c linux-4.1.22/dr
+
+MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver");
+MODULE_LICENSE("GPL and additional rights");
-diff -Nur linux-4.1.22.orig/drivers/clk/Makefile linux-4.1.22/drivers/clk/Makefile
---- linux-4.1.22.orig/drivers/clk/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/clk/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/char/tpm/tpm_crb.c linux-4.1.23/drivers/char/tpm/tpm_crb.c
+--- linux-4.1.23.orig/drivers/char/tpm/tpm_crb.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/char/tpm/tpm_crb.c 2016-05-02 22:53:52.000000000 +0200
+@@ -309,11 +309,11 @@
+ struct device *dev = &device->dev;
+ struct tpm_chip *chip = dev_get_drvdata(dev);
+
++ tpm_chip_unregister(chip);
++
+ if (chip->flags & TPM_CHIP_FLAG_TPM2)
+ tpm2_shutdown(chip, TPM2_SU_CLEAR);
+
+- tpm_chip_unregister(chip);
+-
+ return 0;
+ }
+
+diff -Nur linux-4.1.23.orig/drivers/clk/Makefile linux-4.1.23/drivers/clk/Makefile
+--- linux-4.1.23.orig/drivers/clk/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/clk/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -19,11 +19,11 @@
obj-$(CONFIG_MACH_ASM9260) += clk-asm9260.o
obj-$(CONFIG_COMMON_CLK_AXI_CLKGEN) += clk-axi-clkgen.o
@@ -26650,17 +28524,17 @@ diff -Nur linux-4.1.22.orig/drivers/clk/Makefile linux-4.1.22/drivers/clk/Makefi
obj-$(CONFIG_ARCH_BERLIN) += berlin/
obj-$(CONFIG_ARCH_HI3xxx) += hisilicon/
obj-$(CONFIG_ARCH_HIP04) += hisilicon/
-diff -Nur linux-4.1.22.orig/drivers/clk/bcm/Makefile linux-4.1.22/drivers/clk/bcm/Makefile
---- linux-4.1.22.orig/drivers/clk/bcm/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/clk/bcm/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/clk/bcm/Makefile linux-4.1.23/drivers/clk/bcm/Makefile
+--- linux-4.1.23.orig/drivers/clk/bcm/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/clk/bcm/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -2,3 +2,4 @@
obj-$(CONFIG_CLK_BCM_KONA) += clk-kona-setup.o
obj-$(CONFIG_CLK_BCM_KONA) += clk-bcm281xx.o
obj-$(CONFIG_CLK_BCM_KONA) += clk-bcm21664.o
+obj-$(CONFIG_ARCH_BCM2835)$(CONFIG_ARCH_BCM2708)$(CONFIG_ARCH_BCM2709) += clk-bcm2835.o
-diff -Nur linux-4.1.22.orig/drivers/clk/bcm/clk-bcm2835.c linux-4.1.22/drivers/clk/bcm/clk-bcm2835.c
---- linux-4.1.22.orig/drivers/clk/bcm/clk-bcm2835.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/clk/bcm/clk-bcm2835.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/clk/bcm/clk-bcm2835.c linux-4.1.23/drivers/clk/bcm/clk-bcm2835.c
+--- linux-4.1.23.orig/drivers/clk/bcm/clk-bcm2835.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/clk/bcm/clk-bcm2835.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,1581 @@
+/*
+ * Copyright (C) 2010,2015 Broadcom
@@ -28243,9 +30117,9 @@ diff -Nur linux-4.1.22.orig/drivers/clk/bcm/clk-bcm2835.c linux-4.1.22/drivers/c
+MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
+MODULE_DESCRIPTION("BCM2835 clock driver");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/drivers/clk/clk-bcm2835.c linux-4.1.22/drivers/clk/clk-bcm2835.c
---- linux-4.1.22.orig/drivers/clk/clk-bcm2835.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/clk/clk-bcm2835.c 1970-01-01 01:00:00.000000000 +0100
+diff -Nur linux-4.1.23.orig/drivers/clk/clk-bcm2835.c linux-4.1.23/drivers/clk/clk-bcm2835.c
+--- linux-4.1.23.orig/drivers/clk/clk-bcm2835.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/clk/clk-bcm2835.c 1970-01-01 01:00:00.000000000 +0100
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2010 Broadcom
@@ -28307,9 +30181,9 @@ diff -Nur linux-4.1.22.orig/drivers/clk/clk-bcm2835.c linux-4.1.22/drivers/clk/c
- if (ret)
- pr_err("uart1_pclk alias not registered\n");
-}
-diff -Nur linux-4.1.22.orig/drivers/clk/clk-hifiberry-dacpro.c linux-4.1.22/drivers/clk/clk-hifiberry-dacpro.c
---- linux-4.1.22.orig/drivers/clk/clk-hifiberry-dacpro.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/clk/clk-hifiberry-dacpro.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/clk/clk-hifiberry-dacpro.c linux-4.1.23/drivers/clk/clk-hifiberry-dacpro.c
+--- linux-4.1.23.orig/drivers/clk/clk-hifiberry-dacpro.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/clk/clk-hifiberry-dacpro.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,160 @@
+/*
+ * Clock Driver for HiFiBerry DAC Pro
@@ -28471,9 +30345,22 @@ diff -Nur linux-4.1.22.orig/drivers/clk/clk-hifiberry-dacpro.c linux-4.1.22/driv
+MODULE_DESCRIPTION("HiFiBerry DAC Pro clock driver");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:clk-hifiberry-dacpro");
-diff -Nur linux-4.1.22.orig/drivers/clocksource/arm_arch_timer.c linux-4.1.22/drivers/clocksource/arm_arch_timer.c
---- linux-4.1.22.orig/drivers/clocksource/arm_arch_timer.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/clocksource/arm_arch_timer.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/clk/rockchip/clk-rk3188.c linux-4.1.23/drivers/clk/rockchip/clk-rk3188.c
+--- linux-4.1.23.orig/drivers/clk/rockchip/clk-rk3188.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/clk/rockchip/clk-rk3188.c 2016-05-02 22:53:52.000000000 +0200
+@@ -708,9 +708,6 @@
+ "aclk_cpu",
+ "aclk_peri",
+ "hclk_peri",
+- "pclk_cpu",
+- "pclk_peri",
+- "hclk_cpubus"
+ };
+
+ static void __init rk3188_common_clk_init(struct device_node *np)
+diff -Nur linux-4.1.23.orig/drivers/clocksource/arm_arch_timer.c linux-4.1.23/drivers/clocksource/arm_arch_timer.c
+--- linux-4.1.23.orig/drivers/clocksource/arm_arch_timer.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/clocksource/arm_arch_timer.c 2016-05-02 22:53:52.000000000 +0200
@@ -882,3 +882,39 @@
acpi_table_parse(ACPI_SIG_GTDT, arch_timer_acpi_init);
}
@@ -28514,9 +30401,9 @@ diff -Nur linux-4.1.22.orig/drivers/clocksource/arm_arch_timer.c linux-4.1.22/dr
+ arch_timer_common_init();
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/cpufreq/Kconfig.arm linux-4.1.22/drivers/cpufreq/Kconfig.arm
---- linux-4.1.22.orig/drivers/cpufreq/Kconfig.arm 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/cpufreq/Kconfig.arm 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/cpufreq/Kconfig.arm linux-4.1.23/drivers/cpufreq/Kconfig.arm
+--- linux-4.1.23.orig/drivers/cpufreq/Kconfig.arm 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/cpufreq/Kconfig.arm 2016-05-02 22:53:52.000000000 +0200
@@ -258,6 +258,15 @@
help
This adds the CPUFreq driver support for SPEAr SOCs.
@@ -28533,9 +30420,9 @@ diff -Nur linux-4.1.22.orig/drivers/cpufreq/Kconfig.arm linux-4.1.22/drivers/cpu
config ARM_TEGRA_CPUFREQ
bool "TEGRA CPUFreq support"
depends on ARCH_TEGRA
-diff -Nur linux-4.1.22.orig/drivers/cpufreq/Makefile linux-4.1.22/drivers/cpufreq/Makefile
---- linux-4.1.22.orig/drivers/cpufreq/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/cpufreq/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/cpufreq/Makefile linux-4.1.23/drivers/cpufreq/Makefile
+--- linux-4.1.23.orig/drivers/cpufreq/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/cpufreq/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -77,6 +77,7 @@
obj-$(CONFIG_ARM_SA1100_CPUFREQ) += sa1100-cpufreq.o
obj-$(CONFIG_ARM_SA1110_CPUFREQ) += sa1110-cpufreq.o
@@ -28544,9 +30431,9 @@ diff -Nur linux-4.1.22.orig/drivers/cpufreq/Makefile linux-4.1.22/drivers/cpufre
obj-$(CONFIG_ARM_TEGRA_CPUFREQ) += tegra-cpufreq.o
obj-$(CONFIG_ARM_VEXPRESS_SPC_CPUFREQ) += vexpress-spc-cpufreq.o
-diff -Nur linux-4.1.22.orig/drivers/cpufreq/bcm2835-cpufreq.c linux-4.1.22/drivers/cpufreq/bcm2835-cpufreq.c
---- linux-4.1.22.orig/drivers/cpufreq/bcm2835-cpufreq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/cpufreq/bcm2835-cpufreq.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/cpufreq/bcm2835-cpufreq.c linux-4.1.23/drivers/cpufreq/bcm2835-cpufreq.c
+--- linux-4.1.23.orig/drivers/cpufreq/bcm2835-cpufreq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/cpufreq/bcm2835-cpufreq.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,213 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -28761,9 +30648,199 @@ diff -Nur linux-4.1.22.orig/drivers/cpufreq/bcm2835-cpufreq.c linux-4.1.22/drive
+
+module_init(bcm2835_cpufreq_module_init);
+module_exit(bcm2835_cpufreq_module_exit);
-diff -Nur linux-4.1.22.orig/drivers/dma/Kconfig linux-4.1.22/drivers/dma/Kconfig
---- linux-4.1.22.orig/drivers/dma/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/dma/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/cpufreq/cpufreq_ondemand.c linux-4.1.23/drivers/cpufreq/cpufreq_ondemand.c
+--- linux-4.1.23.orig/drivers/cpufreq/cpufreq_ondemand.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/cpufreq/cpufreq_ondemand.c 2016-05-02 22:53:52.000000000 +0200
+@@ -321,7 +321,12 @@
+ ret = sscanf(buf, "%u", &input);
+ if (ret != 1)
+ return -EINVAL;
+- od_tuners->io_is_busy = !!input;
++ // XXX temporary hack
++ if (input > 1)
++ input = 1;
++ else
++ input = 0;
++ od_tuners->io_is_busy = input;
+
+ /* we need to re-evaluate prev_cpu_idle */
+ for_each_online_cpu(j) {
+diff -Nur linux-4.1.23.orig/drivers/crypto/atmel-sha.c linux-4.1.23/drivers/crypto/atmel-sha.c
+--- linux-4.1.23.orig/drivers/crypto/atmel-sha.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/crypto/atmel-sha.c 2016-05-02 22:53:52.000000000 +0200
+@@ -1492,6 +1492,13 @@
+
+ clk_unprepare(sha_dd->iclk);
+
++ iounmap(sha_dd->io_base);
++
++ clk_put(sha_dd->iclk);
++
++ if (sha_dd->irq >= 0)
++ free_irq(sha_dd->irq, sha_dd);
++
+ return 0;
+ }
+
+diff -Nur linux-4.1.23.orig/drivers/crypto/ccp/ccp-crypto-aes-cmac.c linux-4.1.23/drivers/crypto/ccp/ccp-crypto-aes-cmac.c
+--- linux-4.1.23.orig/drivers/crypto/ccp/ccp-crypto-aes-cmac.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/crypto/ccp/ccp-crypto-aes-cmac.c 2016-05-02 22:53:52.000000000 +0200
+@@ -202,39 +202,6 @@
+ return ccp_aes_cmac_finup(req);
+ }
+
+-static int ccp_aes_cmac_export(struct ahash_request *req, void *out)
+-{
+- struct ccp_aes_cmac_req_ctx *rctx = ahash_request_ctx(req);
+- struct ccp_aes_cmac_exp_ctx state;
+-
+- state.null_msg = rctx->null_msg;
+- memcpy(state.iv, rctx->iv, sizeof(state.iv));
+- state.buf_count = rctx->buf_count;
+- memcpy(state.buf, rctx->buf, sizeof(state.buf));
+-
+- /* 'out' may not be aligned so memcpy from local variable */
+- memcpy(out, &state, sizeof(state));
+-
+- return 0;
+-}
+-
+-static int ccp_aes_cmac_import(struct ahash_request *req, const void *in)
+-{
+- struct ccp_aes_cmac_req_ctx *rctx = ahash_request_ctx(req);
+- struct ccp_aes_cmac_exp_ctx state;
+-
+- /* 'in' may not be aligned so memcpy to local variable */
+- memcpy(&state, in, sizeof(state));
+-
+- memset(rctx, 0, sizeof(*rctx));
+- rctx->null_msg = state.null_msg;
+- memcpy(rctx->iv, state.iv, sizeof(rctx->iv));
+- rctx->buf_count = state.buf_count;
+- memcpy(rctx->buf, state.buf, sizeof(rctx->buf));
+-
+- return 0;
+-}
+-
+ static int ccp_aes_cmac_setkey(struct crypto_ahash *tfm, const u8 *key,
+ unsigned int key_len)
+ {
+@@ -367,13 +334,10 @@
+ alg->final = ccp_aes_cmac_final;
+ alg->finup = ccp_aes_cmac_finup;
+ alg->digest = ccp_aes_cmac_digest;
+- alg->export = ccp_aes_cmac_export;
+- alg->import = ccp_aes_cmac_import;
+ alg->setkey = ccp_aes_cmac_setkey;
+
+ halg = &alg->halg;
+ halg->digestsize = AES_BLOCK_SIZE;
+- halg->statesize = sizeof(struct ccp_aes_cmac_exp_ctx);
+
+ base = &halg->base;
+ snprintf(base->cra_name, CRYPTO_MAX_ALG_NAME, "cmac(aes)");
+diff -Nur linux-4.1.23.orig/drivers/crypto/ccp/ccp-crypto-sha.c linux-4.1.23/drivers/crypto/ccp/ccp-crypto-sha.c
+--- linux-4.1.23.orig/drivers/crypto/ccp/ccp-crypto-sha.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/crypto/ccp/ccp-crypto-sha.c 2016-05-02 22:53:52.000000000 +0200
+@@ -194,43 +194,6 @@
+ return ccp_sha_finup(req);
+ }
+
+-static int ccp_sha_export(struct ahash_request *req, void *out)
+-{
+- struct ccp_sha_req_ctx *rctx = ahash_request_ctx(req);
+- struct ccp_sha_exp_ctx state;
+-
+- state.type = rctx->type;
+- state.msg_bits = rctx->msg_bits;
+- state.first = rctx->first;
+- memcpy(state.ctx, rctx->ctx, sizeof(state.ctx));
+- state.buf_count = rctx->buf_count;
+- memcpy(state.buf, rctx->buf, sizeof(state.buf));
+-
+- /* 'out' may not be aligned so memcpy from local variable */
+- memcpy(out, &state, sizeof(state));
+-
+- return 0;
+-}
+-
+-static int ccp_sha_import(struct ahash_request *req, const void *in)
+-{
+- struct ccp_sha_req_ctx *rctx = ahash_request_ctx(req);
+- struct ccp_sha_exp_ctx state;
+-
+- /* 'in' may not be aligned so memcpy to local variable */
+- memcpy(&state, in, sizeof(state));
+-
+- memset(rctx, 0, sizeof(*rctx));
+- rctx->type = state.type;
+- rctx->msg_bits = state.msg_bits;
+- rctx->first = state.first;
+- memcpy(rctx->ctx, state.ctx, sizeof(rctx->ctx));
+- rctx->buf_count = state.buf_count;
+- memcpy(rctx->buf, state.buf, sizeof(rctx->buf));
+-
+- return 0;
+-}
+-
+ static int ccp_sha_setkey(struct crypto_ahash *tfm, const u8 *key,
+ unsigned int key_len)
+ {
+@@ -427,12 +390,9 @@
+ alg->final = ccp_sha_final;
+ alg->finup = ccp_sha_finup;
+ alg->digest = ccp_sha_digest;
+- alg->export = ccp_sha_export;
+- alg->import = ccp_sha_import;
+
+ halg = &alg->halg;
+ halg->digestsize = def->digest_size;
+- halg->statesize = sizeof(struct ccp_sha_exp_ctx);
+
+ base = &halg->base;
+ snprintf(base->cra_name, CRYPTO_MAX_ALG_NAME, "%s", def->name);
+diff -Nur linux-4.1.23.orig/drivers/crypto/ccp/ccp-crypto.h linux-4.1.23/drivers/crypto/ccp/ccp-crypto.h
+--- linux-4.1.23.orig/drivers/crypto/ccp/ccp-crypto.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/crypto/ccp/ccp-crypto.h 2016-05-02 22:53:52.000000000 +0200
+@@ -129,15 +129,6 @@
+ struct ccp_cmd cmd;
+ };
+
+-struct ccp_aes_cmac_exp_ctx {
+- unsigned int null_msg;
+-
+- u8 iv[AES_BLOCK_SIZE];
+-
+- unsigned int buf_count;
+- u8 buf[AES_BLOCK_SIZE];
+-};
+-
+ /***** SHA related defines *****/
+ #define MAX_SHA_CONTEXT_SIZE SHA256_DIGEST_SIZE
+ #define MAX_SHA_BLOCK_SIZE SHA256_BLOCK_SIZE
+@@ -180,19 +171,6 @@
+ struct ccp_cmd cmd;
+ };
+
+-struct ccp_sha_exp_ctx {
+- enum ccp_sha_type type;
+-
+- u64 msg_bits;
+-
+- unsigned int first;
+-
+- u8 ctx[MAX_SHA_CONTEXT_SIZE];
+-
+- unsigned int buf_count;
+- u8 buf[MAX_SHA_BLOCK_SIZE];
+-};
+-
+ /***** Common Context Structure *****/
+ struct ccp_ctx {
+ int (*complete)(struct crypto_async_request *req, int ret);
+diff -Nur linux-4.1.23.orig/drivers/dma/Kconfig linux-4.1.23/drivers/dma/Kconfig
+--- linux-4.1.23.orig/drivers/dma/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/dma/Kconfig 2016-05-02 22:53:52.000000000 +0200
@@ -337,6 +337,17 @@
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
@@ -28791,9 +30868,9 @@ diff -Nur linux-4.1.22.orig/drivers/dma/Kconfig linux-4.1.22/drivers/dma/Kconfig
config FSL_EDMA
tristate "Freescale eDMA engine support"
depends on OF
-diff -Nur linux-4.1.22.orig/drivers/dma/Makefile linux-4.1.22/drivers/dma/Makefile
---- linux-4.1.22.orig/drivers/dma/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/dma/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/dma/Makefile linux-4.1.23/drivers/dma/Makefile
+--- linux-4.1.23.orig/drivers/dma/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/dma/Makefile 2016-05-02 22:53:52.000000000 +0200
@@ -39,6 +39,7 @@
obj-$(CONFIG_MMP_TDMA) += mmp_tdma.o
obj-$(CONFIG_DMA_OMAP) += omap-dma.o
@@ -28802,9 +30879,9 @@ diff -Nur linux-4.1.22.orig/drivers/dma/Makefile linux-4.1.22/drivers/dma/Makefi
obj-$(CONFIG_MMP_PDMA) += mmp_pdma.o
obj-$(CONFIG_DMA_JZ4740) += dma-jz4740.o
obj-$(CONFIG_DMA_JZ4780) += dma-jz4780.o
-diff -Nur linux-4.1.22.orig/drivers/dma/bcm2708-dmaengine.c linux-4.1.22/drivers/dma/bcm2708-dmaengine.c
---- linux-4.1.22.orig/drivers/dma/bcm2708-dmaengine.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/dma/bcm2708-dmaengine.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/dma/bcm2708-dmaengine.c linux-4.1.23/drivers/dma/bcm2708-dmaengine.c
+--- linux-4.1.23.orig/drivers/dma/bcm2708-dmaengine.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/dma/bcm2708-dmaengine.c 2016-05-02 22:53:52.000000000 +0200
@@ -0,0 +1,1314 @@
+/*
+ * BCM2835 DMA engine support
@@ -30120,9 +32197,78 @@ diff -Nur linux-4.1.22.orig/drivers/dma/bcm2708-dmaengine.c linux-4.1.22/drivers
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_AUTHOR("Gellert Weisz <gellert@raspberrypi.org>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/drivers/firmware/Kconfig linux-4.1.22/drivers/firmware/Kconfig
---- linux-4.1.22.orig/drivers/firmware/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/firmware/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/edac/amd64_edac.c linux-4.1.23/drivers/edac/amd64_edac.c
+--- linux-4.1.23.orig/drivers/edac/amd64_edac.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/edac/amd64_edac.c 2016-05-02 22:53:53.000000000 +0200
+@@ -1437,7 +1437,7 @@
+ u64 chan_off;
+ u64 dram_base = get_dram_base(pvt, range);
+ u64 hole_off = f10_dhar_offset(pvt);
+- u64 dct_sel_base_off = (u64)(pvt->dct_sel_hi & 0xFFFFFC00) << 16;
++ u64 dct_sel_base_off = (pvt->dct_sel_hi & 0xFFFFFC00) << 16;
+
+ if (hi_rng) {
+ /*
+diff -Nur linux-4.1.23.orig/drivers/edac/sb_edac.c linux-4.1.23/drivers/edac/sb_edac.c
+--- linux-4.1.23.orig/drivers/edac/sb_edac.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/edac/sb_edac.c 2016-05-02 22:53:53.000000000 +0200
+@@ -1043,8 +1043,8 @@
+ edac_dbg(0, "TAD#%d: up to %u.%03u GB (0x%016Lx), socket interleave %d, memory interleave %d, TGT: %d, %d, %d, %d, reg=0x%08x\n",
+ n_tads, gb, (mb*1000)/1024,
+ ((u64)tmp_mb) << 20L,
+- (u32)(1 << TAD_SOCK(reg)),
+- (u32)TAD_CH(reg) + 1,
++ (u32)TAD_SOCK(reg),
++ (u32)TAD_CH(reg),
+ (u32)TAD_TGT0(reg),
+ (u32)TAD_TGT1(reg),
+ (u32)TAD_TGT2(reg),
+@@ -1316,7 +1316,7 @@
+ }
+
+ ch_way = TAD_CH(reg) + 1;
+- sck_way = 1 << TAD_SOCK(reg);
++ sck_way = TAD_SOCK(reg) + 1;
+
+ if (ch_way == 3)
+ idx = addr >> 6;
+@@ -1373,7 +1373,7 @@
+ n_tads,
+ addr,
+ limit,
+- sck_way,
++ (u32)TAD_SOCK(reg),
+ ch_way,
+ offset,
+ idx,
+@@ -1388,12 +1388,18 @@
+ offset, addr);
+ return -EINVAL;
+ }
+-
+- ch_addr = addr - offset;
+- ch_addr >>= (6 + shiftup);
+- ch_addr /= ch_way * sck_way;
+- ch_addr <<= (6 + shiftup);
+- ch_addr |= addr & ((1 << (6 + shiftup)) - 1);
++ addr -= offset;
++ /* Store the low bits [0:6] of the addr */
++ ch_addr = addr & 0x7f;
++ /* Remove socket wayness and remove 6 bits */
++ addr >>= 6;
++ addr = div_u64(addr, sck_xch);
++#if 0
++ /* Divide by channel way */
++ addr = addr / ch_way;
++#endif
++ /* Recover the last 6 bits */
++ ch_addr |= addr << 6;
+
+ /*
+ * Step 3) Decode rank
+diff -Nur linux-4.1.23.orig/drivers/firmware/Kconfig linux-4.1.23/drivers/firmware/Kconfig
+--- linux-4.1.23.orig/drivers/firmware/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/firmware/Kconfig 2016-05-02 22:53:53.000000000 +0200
@@ -136,6 +136,13 @@
bool
depends on ARM || ARM64
@@ -30137,9 +32283,9 @@ diff -Nur linux-4.1.22.orig/drivers/firmware/Kconfig linux-4.1.22/drivers/firmwa
source "drivers/firmware/google/Kconfig"
source "drivers/firmware/efi/Kconfig"
-diff -Nur linux-4.1.22.orig/drivers/firmware/Makefile linux-4.1.22/drivers/firmware/Makefile
---- linux-4.1.22.orig/drivers/firmware/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/firmware/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/firmware/Makefile linux-4.1.23/drivers/firmware/Makefile
+--- linux-4.1.23.orig/drivers/firmware/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/firmware/Makefile 2016-05-02 22:53:53.000000000 +0200
@@ -13,6 +13,7 @@
obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o
obj-$(CONFIG_QCOM_SCM) += qcom_scm.o
@@ -30148,9 +32294,283 @@ diff -Nur linux-4.1.22.orig/drivers/firmware/Makefile linux-4.1.22/drivers/firmw
obj-$(CONFIG_GOOGLE_FIRMWARE) += google/
obj-$(CONFIG_EFI) += efi/
-diff -Nur linux-4.1.22.orig/drivers/firmware/raspberrypi.c linux-4.1.22/drivers/firmware/raspberrypi.c
---- linux-4.1.22.orig/drivers/firmware/raspberrypi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/firmware/raspberrypi.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/firmware/efi/efivars.c linux-4.1.23/drivers/firmware/efi/efivars.c
+--- linux-4.1.23.orig/drivers/firmware/efi/efivars.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/firmware/efi/efivars.c 2016-05-02 22:53:53.000000000 +0200
+@@ -221,7 +221,7 @@
+ }
+
+ if ((attributes & ~EFI_VARIABLE_MASK) != 0 ||
+- efivar_validate(vendor, name, data, size) == false) {
++ efivar_validate(name, data, size) == false) {
+ printk(KERN_ERR "efivars: Malformed variable content\n");
+ return -EINVAL;
+ }
+@@ -447,8 +447,7 @@
+ }
+
+ if ((attributes & ~EFI_VARIABLE_MASK) != 0 ||
+- efivar_validate(new_var->VendorGuid, name, data,
+- size) == false) {
++ efivar_validate(name, data, size) == false) {
+ printk(KERN_ERR "efivars: Malformed variable content\n");
+ return -EINVAL;
+ }
+@@ -536,43 +535,50 @@
+ * efivar_create_sysfs_entry - create a new entry in sysfs
+ * @new_var: efivar entry to create
+ *
+- * Returns 0 on success, negative error code on failure
++ * Returns 1 on failure, 0 on success
+ */
+ static int
+ efivar_create_sysfs_entry(struct efivar_entry *new_var)
+ {
+- int short_name_size;
++ int i, short_name_size;
+ char *short_name;
+- unsigned long utf8_name_size;
+- efi_char16_t *variable_name = new_var->var.VariableName;
+- int ret;
++ unsigned long variable_name_size;
++ efi_char16_t *variable_name;
++
++ variable_name = new_var->var.VariableName;
++ variable_name_size = ucs2_strlen(variable_name) * sizeof(efi_char16_t);
+
+ /*
+- * Length of the variable bytes in UTF8, plus the '-' separator,
++ * Length of the variable bytes in ASCII, plus the '-' separator,
+ * plus the GUID, plus trailing NUL
+ */
+- utf8_name_size = ucs2_utf8size(variable_name);
+- short_name_size = utf8_name_size + 1 + EFI_VARIABLE_GUID_LEN + 1;
++ short_name_size = variable_name_size / sizeof(efi_char16_t)
++ + 1 + EFI_VARIABLE_GUID_LEN + 1;
+
+- short_name = kmalloc(short_name_size, GFP_KERNEL);
+- if (!short_name)
+- return -ENOMEM;
++ short_name = kzalloc(short_name_size, GFP_KERNEL);
+
+- ucs2_as_utf8(short_name, variable_name, short_name_size);
++ if (!short_name)
++ return 1;
+
++ /* Convert Unicode to normal chars (assume top bits are 0),
++ ala UTF-8 */
++ for (i=0; i < (int)(variable_name_size / sizeof(efi_char16_t)); i++) {
++ short_name[i] = variable_name[i] & 0xFF;
++ }
+ /* This is ugly, but necessary to separate one vendor's
+ private variables from another's. */
+- short_name[utf8_name_size] = '-';
++
++ *(short_name + strlen(short_name)) = '-';
+ efi_guid_to_str(&new_var->var.VendorGuid,
+- short_name + utf8_name_size + 1);
++ short_name + strlen(short_name));
+
+ new_var->kobj.kset = efivars_kset;
+
+- ret = kobject_init_and_add(&new_var->kobj, &efivar_ktype,
++ i = kobject_init_and_add(&new_var->kobj, &efivar_ktype,
+ NULL, "%s", short_name);
+ kfree(short_name);
+- if (ret)
+- return ret;
++ if (i)
++ return 1;
+
+ kobject_uevent(&new_var->kobj, KOBJ_ADD);
+ efivar_entry_add(new_var, &efivar_sysfs_list);
+diff -Nur linux-4.1.23.orig/drivers/firmware/efi/vars.c linux-4.1.23/drivers/firmware/efi/vars.c
+--- linux-4.1.23.orig/drivers/firmware/efi/vars.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/firmware/efi/vars.c 2016-05-02 22:53:53.000000000 +0200
+@@ -165,132 +165,66 @@
+ }
+
+ struct variable_validate {
+- efi_guid_t vendor;
+ char *name;
+ bool (*validate)(efi_char16_t *var_name, int match, u8 *data,
+ unsigned long len);
+ };
+
+-/*
+- * This is the list of variables we need to validate, as well as the
+- * whitelist for what we think is safe not to default to immutable.
+- *
+- * If it has a validate() method that's not NULL, it'll go into the
+- * validation routine. If not, it is assumed valid, but still used for
+- * whitelisting.
+- *
+- * Note that it's sorted by {vendor,name}, but globbed names must come after
+- * any other name with the same prefix.
+- */
+ static const struct variable_validate variable_validate[] = {
+- { EFI_GLOBAL_VARIABLE_GUID, "BootNext", validate_uint16 },
+- { EFI_GLOBAL_VARIABLE_GUID, "BootOrder", validate_boot_order },
+- { EFI_GLOBAL_VARIABLE_GUID, "Boot*", validate_load_option },
+- { EFI_GLOBAL_VARIABLE_GUID, "DriverOrder", validate_boot_order },
+- { EFI_GLOBAL_VARIABLE_GUID, "Driver*", validate_load_option },
+- { EFI_GLOBAL_VARIABLE_GUID, "ConIn", validate_device_path },
+- { EFI_GLOBAL_VARIABLE_GUID, "ConInDev", validate_device_path },
+- { EFI_GLOBAL_VARIABLE_GUID, "ConOut", validate_device_path },
+- { EFI_GLOBAL_VARIABLE_GUID, "ConOutDev", validate_device_path },
+- { EFI_GLOBAL_VARIABLE_GUID, "ErrOut", validate_device_path },
+- { EFI_GLOBAL_VARIABLE_GUID, "ErrOutDev", validate_device_path },
+- { EFI_GLOBAL_VARIABLE_GUID, "Lang", validate_ascii_string },
+- { EFI_GLOBAL_VARIABLE_GUID, "OsIndications", NULL },
+- { EFI_GLOBAL_VARIABLE_GUID, "PlatformLang", validate_ascii_string },
+- { EFI_GLOBAL_VARIABLE_GUID, "Timeout", validate_uint16 },
+- { LINUX_EFI_CRASH_GUID, "*", NULL },
+- { NULL_GUID, "", NULL },
++ { "BootNext", validate_uint16 },
++ { "BootOrder", validate_boot_order },
++ { "DriverOrder", validate_boot_order },
++ { "Boot*", validate_load_option },
++ { "Driver*", validate_load_option },
++ { "ConIn", validate_device_path },
++ { "ConInDev", validate_device_path },
++ { "ConOut", validate_device_path },
++ { "ConOutDev", validate_device_path },
++ { "ErrOut", validate_device_path },
++ { "ErrOutDev", validate_device_path },
++ { "Timeout", validate_uint16 },
++ { "Lang", validate_ascii_string },
++ { "PlatformLang", validate_ascii_string },
++ { "", NULL },
+ };
+
+-static bool
+-variable_matches(const char *var_name, size_t len, const char *match_name,
+- int *match)
+-{
+- for (*match = 0; ; (*match)++) {
+- char c = match_name[*match];
+- char u = var_name[*match];
+-
+- /* Wildcard in the matching name means we've matched */
+- if (c == '*')
+- return true;
+-
+- /* Case sensitive match */
+- if (!c && *match == len)
+- return true;
+-
+- if (c != u)
+- return false;
+-
+- if (!c)
+- return true;
+- }
+- return true;
+-}
+-
+ bool
+-efivar_validate(efi_guid_t vendor, efi_char16_t *var_name, u8 *data,
+- unsigned long data_size)
++efivar_validate(efi_char16_t *var_name, u8 *data, unsigned long len)
+ {
+ int i;
+- unsigned long utf8_size;
+- u8 *utf8_name;
+-
+- utf8_size = ucs2_utf8size(var_name);
+- utf8_name = kmalloc(utf8_size + 1, GFP_KERNEL);
+- if (!utf8_name)
+- return false;
+-
+- ucs2_as_utf8(utf8_name, var_name, utf8_size);
+- utf8_name[utf8_size] = '\0';
++ u16 *unicode_name = var_name;
+
+- for (i = 0; variable_validate[i].name[0] != '\0'; i++) {
++ for (i = 0; variable_validate[i].validate != NULL; i++) {
+ const char *name = variable_validate[i].name;
+- int match = 0;
++ int match;
+
+- if (efi_guidcmp(vendor, variable_validate[i].vendor))
+- continue;
++ for (match = 0; ; match++) {
++ char c = name[match];
++ u16 u = unicode_name[match];
++
++ /* All special variables are plain ascii */
++ if (u > 127)
++ return true;
++
++ /* Wildcard in the matching name means we've matched */
++ if (c == '*')
++ return variable_validate[i].validate(var_name,
++ match, data, len);
+
+- if (variable_matches(utf8_name, utf8_size+1, name, &match)) {
+- if (variable_validate[i].validate == NULL)
++ /* Case sensitive match */
++ if (c != u)
+ break;
+- kfree(utf8_name);
+- return variable_validate[i].validate(var_name, match,
+- data, data_size);
+- }
+- }
+- kfree(utf8_name);
+- return true;
+-}
+-EXPORT_SYMBOL_GPL(efivar_validate);
+-
+-bool
+-efivar_variable_is_removable(efi_guid_t vendor, const char *var_name,
+- size_t len)
+-{
+- int i;
+- bool found = false;
+- int match = 0;
+-
+- /*
+- * Check if our variable is in the validated variables list
+- */
+- for (i = 0; variable_validate[i].name[0] != '\0'; i++) {
+- if (efi_guidcmp(variable_validate[i].vendor, vendor))
+- continue;
+
+- if (variable_matches(var_name, len,
+- variable_validate[i].name, &match)) {
+- found = true;
+- break;
++ /* Reached the end of the string while matching */
++ if (!c)
++ return variable_validate[i].validate(var_name,
++ match, data, len);
+ }
+ }
+
+- /*
+- * If it's in our list, it is removable.
+- */
+- return found;
++ return true;
+ }
+-EXPORT_SYMBOL_GPL(efivar_variable_is_removable);
++EXPORT_SYMBOL_GPL(efivar_validate);
+
+ static efi_status_t
+ check_var_size(u32 attributes, unsigned long size)
+@@ -918,7 +852,7 @@
+
+ *set = false;
+
+- if (efivar_validate(*vendor, name, data, *size) == false)
++ if (efivar_validate(name, data, *size) == false)
+ return -EINVAL;
+
+ /*
+diff -Nur linux-4.1.23.orig/drivers/firmware/raspberrypi.c linux-4.1.23/drivers/firmware/raspberrypi.c
+--- linux-4.1.23.orig/drivers/firmware/raspberrypi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/firmware/raspberrypi.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,297 @@
+/*
+ * Defines interfaces for interacting wtih the Raspberry Pi firmware's
@@ -30449,9 +32869,9 @@ diff -Nur linux-4.1.22.orig/drivers/firmware/raspberrypi.c linux-4.1.22/drivers/
+MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
+MODULE_DESCRIPTION("Raspberry Pi firmware driver");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/drivers/gpio/Kconfig linux-4.1.22/drivers/gpio/Kconfig
---- linux-4.1.22.orig/drivers/gpio/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpio/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpio/Kconfig linux-4.1.23/drivers/gpio/Kconfig
+--- linux-4.1.23.orig/drivers/gpio/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpio/Kconfig 2016-05-02 22:53:53.000000000 +0200
@@ -126,6 +126,12 @@
help
Turn on GPIO support for Broadcom "Kona" chips.
@@ -30465,9 +32885,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpio/Kconfig linux-4.1.22/drivers/gpio/Kconf
config GPIO_CLPS711X
tristate "CLPS711X GPIO support"
depends on ARCH_CLPS711X || COMPILE_TEST
-diff -Nur linux-4.1.22.orig/drivers/gpio/Makefile linux-4.1.22/drivers/gpio/Makefile
---- linux-4.1.22.orig/drivers/gpio/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpio/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpio/Makefile linux-4.1.23/drivers/gpio/Makefile
+--- linux-4.1.23.orig/drivers/gpio/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpio/Makefile 2016-05-02 22:53:53.000000000 +0200
@@ -21,6 +21,7 @@
obj-$(CONFIG_GPIO_AMD8111) += gpio-amd8111.o
obj-$(CONFIG_GPIO_ARIZONA) += gpio-arizona.o
@@ -30476,9 +32896,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpio/Makefile linux-4.1.22/drivers/gpio/Make
obj-$(CONFIG_GPIO_BT8XX) += gpio-bt8xx.o
obj-$(CONFIG_GPIO_CLPS711X) += gpio-clps711x.o
obj-$(CONFIG_GPIO_CS5535) += gpio-cs5535.o
-diff -Nur linux-4.1.22.orig/drivers/gpio/gpio-bcm-virt.c linux-4.1.22/drivers/gpio/gpio-bcm-virt.c
---- linux-4.1.22.orig/drivers/gpio/gpio-bcm-virt.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpio/gpio-bcm-virt.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpio/gpio-bcm-virt.c linux-4.1.23/drivers/gpio/gpio-bcm-virt.c
+--- linux-4.1.23.orig/drivers/gpio/gpio-bcm-virt.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpio/gpio-bcm-virt.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,180 @@
+/*
+ * brcmvirt GPIO driver
@@ -30660,18 +33080,18 @@ diff -Nur linux-4.1.22.orig/drivers/gpio/gpio-bcm-virt.c linux-4.1.22/drivers/gp
+MODULE_AUTHOR("Dom Cobley <popcornmix@gmail.com>");
+MODULE_DESCRIPTION("brcmvirt GPIO driver");
+MODULE_ALIAS("platform:brcmvirt-gpio");
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/Kconfig linux-4.1.22/drivers/gpu/drm/Kconfig
---- linux-4.1.22.orig/drivers/gpu/drm/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/Kconfig linux-4.1.23/drivers/gpu/drm/Kconfig
+--- linux-4.1.23.orig/drivers/gpu/drm/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/Kconfig 2016-05-02 22:53:53.000000000 +0200
@@ -217,3 +217,5 @@
source "drivers/gpu/drm/amd/amdkfd/Kconfig"
source "drivers/gpu/drm/imx/Kconfig"
+
+source "drivers/gpu/drm/vc4/Kconfig"
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/Makefile linux-4.1.22/drivers/gpu/drm/Makefile
---- linux-4.1.22.orig/drivers/gpu/drm/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/Makefile linux-4.1.23/drivers/gpu/drm/Makefile
+--- linux-4.1.23.orig/drivers/gpu/drm/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/Makefile 2016-05-02 22:53:53.000000000 +0200
@@ -46,6 +46,7 @@
obj-$(CONFIG_DRM_CIRRUS_QEMU) += cirrus/
obj-$(CONFIG_DRM_SIS) += sis/
@@ -30680,9 +33100,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/Makefile linux-4.1.22/drivers/gpu/dr
obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/
obj-$(CONFIG_DRM_VIA) +=via/
obj-$(CONFIG_DRM_VGEM) += vgem/
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_atomic_helper.c linux-4.1.22/drivers/gpu/drm/drm_atomic_helper.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_atomic_helper.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_atomic_helper.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_atomic_helper.c linux-4.1.23/drivers/gpu/drm/drm_atomic_helper.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_atomic_helper.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_atomic_helper.c 2016-05-02 22:53:53.000000000 +0200
@@ -280,6 +280,8 @@
*/
encoder = conn_state->best_encoder;
@@ -30711,9 +33131,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_atomic_helper.c linux-4.1.22/dri
ret = funcs->mode_fixup(crtc, &crtc_state->mode,
&crtc_state->adjusted_mode);
if (!ret) {
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_crtc.c linux-4.1.22/drivers/gpu/drm/drm_crtc.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_crtc.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_crtc.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_crtc.c linux-4.1.23/drivers/gpu/drm/drm_crtc.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_crtc.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_crtc.c 2016-05-02 22:53:53.000000000 +0200
@@ -613,7 +613,7 @@
if (atomic_read(&fb->refcount.refcount) > 1) {
drm_modeset_lock_all(dev);
@@ -30815,9 +33235,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_crtc.c linux-4.1.22/drivers/gpu/
}
EXPORT_SYMBOL(drm_mode_config_reset);
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_crtc_helper.c linux-4.1.22/drivers/gpu/drm/drm_crtc_helper.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_crtc_helper.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_crtc_helper.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_crtc_helper.c linux-4.1.23/drivers/gpu/drm/drm_crtc_helper.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_crtc_helper.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_crtc_helper.c 2016-05-02 22:53:53.000000000 +0200
@@ -182,7 +182,7 @@
drm_warn_on_modeset_not_all_locked(dev);
@@ -30961,9 +33381,329 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_crtc_helper.c linux-4.1.22/drive
if(encoder->crtc != crtc)
continue;
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_fb_cma_helper.c linux-4.1.22/drivers/gpu/drm/drm_fb_cma_helper.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_fb_cma_helper.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_fb_cma_helper.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_dp_mst_topology.c linux-4.1.23/drivers/gpu/drm/drm_dp_mst_topology.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_dp_mst_topology.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_dp_mst_topology.c 2016-05-02 22:53:53.000000000 +0200
+@@ -798,18 +798,6 @@
+ return mstb;
+ }
+
+-static void drm_dp_free_mst_port(struct kref *kref);
+-
+-static void drm_dp_free_mst_branch_device(struct kref *kref)
+-{
+- struct drm_dp_mst_branch *mstb = container_of(kref, struct drm_dp_mst_branch, kref);
+- if (mstb->port_parent) {
+- if (list_empty(&mstb->port_parent->next))
+- kref_put(&mstb->port_parent->kref, drm_dp_free_mst_port);
+- }
+- kfree(mstb);
+-}
+-
+ static void drm_dp_destroy_mst_branch_device(struct kref *kref)
+ {
+ struct drm_dp_mst_branch *mstb = container_of(kref, struct drm_dp_mst_branch, kref);
+@@ -817,15 +805,6 @@
+ bool wake_tx = false;
+
+ /*
+- * init kref again to be used by ports to remove mst branch when it is
+- * not needed anymore
+- */
+- kref_init(kref);
+-
+- if (mstb->port_parent && list_empty(&mstb->port_parent->next))
+- kref_get(&mstb->port_parent->kref);
+-
+- /*
+ * destroy all ports - don't need lock
+ * as there are no more references to the mst branch
+ * device at this point.
+@@ -851,8 +830,7 @@
+
+ if (wake_tx)
+ wake_up(&mstb->mgr->tx_waitq);
+-
+- kref_put(kref, drm_dp_free_mst_branch_device);
++ kfree(mstb);
+ }
+
+ static void drm_dp_put_mst_branch_device(struct drm_dp_mst_branch *mstb)
+@@ -900,7 +878,6 @@
+ * from an EDID retrieval */
+
+ mutex_lock(&mgr->destroy_connector_lock);
+- kref_get(&port->parent->kref);
+ list_add(&port->next, &mgr->destroy_connector_list);
+ mutex_unlock(&mgr->destroy_connector_lock);
+ schedule_work(&mgr->destroy_connector_work);
+@@ -1036,27 +1013,18 @@
+ return send_link;
+ }
+
+-static void drm_dp_check_mstb_guid(struct drm_dp_mst_branch *mstb, u8 *guid)
++static void drm_dp_check_port_guid(struct drm_dp_mst_branch *mstb,
++ struct drm_dp_mst_port *port)
+ {
+ int ret;
+-
+- memcpy(mstb->guid, guid, 16);
+-
+- if (!drm_dp_validate_guid(mstb->mgr, mstb->guid)) {
+- if (mstb->port_parent) {
+- ret = drm_dp_send_dpcd_write(
+- mstb->mgr,
+- mstb->port_parent,
+- DP_GUID,
+- 16,
+- mstb->guid);
+- } else {
+-
+- ret = drm_dp_dpcd_write(
+- mstb->mgr->aux,
+- DP_GUID,
+- mstb->guid,
+- 16);
++ if (port->dpcd_rev >= 0x12) {
++ port->guid_valid = drm_dp_validate_guid(mstb->mgr, port->guid);
++ if (!port->guid_valid) {
++ ret = drm_dp_send_dpcd_write(mstb->mgr,
++ port,
++ DP_GUID,
++ 16, port->guid);
++ port->guid_valid = true;
+ }
+ }
+ }
+@@ -1113,6 +1081,7 @@
+ port->dpcd_rev = port_msg->dpcd_revision;
+ port->num_sdp_streams = port_msg->num_sdp_streams;
+ port->num_sdp_stream_sinks = port_msg->num_sdp_stream_sinks;
++ memcpy(port->guid, port_msg->peer_guid, 16);
+
+ /* manage mstb port lists with mgr lock - take a reference
+ for this list */
+@@ -1125,9 +1094,11 @@
+
+ if (old_ddps != port->ddps) {
+ if (port->ddps) {
++ drm_dp_check_port_guid(mstb, port);
+ if (!port->input)
+ drm_dp_send_enum_path_resources(mstb->mgr, mstb, port);
+ } else {
++ port->guid_valid = false;
+ port->available_pbn = 0;
+ }
+ }
+@@ -1185,8 +1156,10 @@
+
+ if (old_ddps != port->ddps) {
+ if (port->ddps) {
++ drm_dp_check_port_guid(mstb, port);
+ dowork = true;
+ } else {
++ port->guid_valid = false;
+ port->available_pbn = 0;
+ }
+ }
+@@ -1243,14 +1216,13 @@
+ struct drm_dp_mst_branch *found_mstb;
+ struct drm_dp_mst_port *port;
+
+- if (memcmp(mstb->guid, guid, 16) == 0)
+- return mstb;
+-
+-
+ list_for_each_entry(port, &mstb->ports, next) {
+ if (!port->mstb)
+ continue;
+
++ if (port->guid_valid && memcmp(port->guid, guid, 16) == 0)
++ return port->mstb;
++
+ found_mstb = get_mst_branch_device_by_guid_helper(port->mstb, guid);
+
+ if (found_mstb)
+@@ -1269,7 +1241,10 @@
+ /* find the port by iterating down */
+ mutex_lock(&mgr->lock);
+
+- mstb = get_mst_branch_device_by_guid_helper(mgr->mst_primary, guid);
++ if (mgr->guid_valid && memcmp(mgr->guid, guid, 16) == 0)
++ mstb = mgr->mst_primary;
++ else
++ mstb = get_mst_branch_device_by_guid_helper(mgr->mst_primary, guid);
+
+ if (mstb)
+ kref_get(&mstb->kref);
+@@ -1574,9 +1549,6 @@
+ txmsg->reply.u.link_addr.ports[i].num_sdp_streams,
+ txmsg->reply.u.link_addr.ports[i].num_sdp_stream_sinks);
+ }
+-
+- drm_dp_check_mstb_guid(mstb, txmsg->reply.u.link_addr.guid);
+-
+ for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) {
+ drm_dp_add_port(mstb, mgr->dev, &txmsg->reply.u.link_addr.ports[i]);
+ }
+@@ -1623,37 +1595,6 @@
+ return 0;
+ }
+
+-static struct drm_dp_mst_port *drm_dp_get_last_connected_port_to_mstb(struct drm_dp_mst_branch *mstb)
+-{
+- if (!mstb->port_parent)
+- return NULL;
+-
+- if (mstb->port_parent->mstb != mstb)
+- return mstb->port_parent;
+-
+- return drm_dp_get_last_connected_port_to_mstb(mstb->port_parent->parent);
+-}
+-
+-static struct drm_dp_mst_branch *drm_dp_get_last_connected_port_and_mstb(struct drm_dp_mst_topology_mgr *mgr,
+- struct drm_dp_mst_branch *mstb,
+- int *port_num)
+-{
+- struct drm_dp_mst_branch *rmstb = NULL;
+- struct drm_dp_mst_port *found_port;
+- mutex_lock(&mgr->lock);
+- if (mgr->mst_primary) {
+- found_port = drm_dp_get_last_connected_port_to_mstb(mstb);
+-
+- if (found_port) {
+- rmstb = found_port->parent;
+- kref_get(&rmstb->kref);
+- *port_num = found_port->port_num;
+- }
+- }
+- mutex_unlock(&mgr->lock);
+- return rmstb;
+-}
+-
+ static int drm_dp_payload_send_msg(struct drm_dp_mst_topology_mgr *mgr,
+ struct drm_dp_mst_port *port,
+ int id,
+@@ -1661,16 +1602,11 @@
+ {
+ struct drm_dp_sideband_msg_tx *txmsg;
+ struct drm_dp_mst_branch *mstb;
+- int len, ret, port_num;
++ int len, ret;
+
+- port_num = port->port_num;
+ mstb = drm_dp_get_validated_mstb_ref(mgr, port->parent);
+- if (!mstb) {
+- mstb = drm_dp_get_last_connected_port_and_mstb(mgr, port->parent, &port_num);
+-
+- if (!mstb)
+- return -EINVAL;
+- }
++ if (!mstb)
++ return -EINVAL;
+
+ txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL);
+ if (!txmsg) {
+@@ -1679,7 +1615,7 @@
+ }
+
+ txmsg->dst = mstb;
+- len = build_allocate_payload(txmsg, port_num,
++ len = build_allocate_payload(txmsg, port->port_num,
+ id,
+ pbn);
+
+@@ -2033,12 +1969,6 @@
+ mgr->mst_primary = mstb;
+ kref_get(&mgr->mst_primary->kref);
+
+- ret = drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL,
+- DP_MST_EN | DP_UP_REQ_EN | DP_UPSTREAM_IS_SRC);
+- if (ret < 0) {
+- goto out_unlock;
+- }
+-
+ {
+ struct drm_dp_payload reset_pay;
+ reset_pay.start_slot = 0;
+@@ -2046,6 +1976,26 @@
+ drm_dp_dpcd_write_payload(mgr, 0, &reset_pay);
+ }
+
++ ret = drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL,
++ DP_MST_EN | DP_UP_REQ_EN | DP_UPSTREAM_IS_SRC);
++ if (ret < 0) {
++ goto out_unlock;
++ }
++
++
++ /* sort out guid */
++ ret = drm_dp_dpcd_read(mgr->aux, DP_GUID, mgr->guid, 16);
++ if (ret != 16) {
++ DRM_DEBUG_KMS("failed to read DP GUID %d\n", ret);
++ goto out_unlock;
++ }
++
++ mgr->guid_valid = drm_dp_validate_guid(mgr, mgr->guid);
++ if (!mgr->guid_valid) {
++ ret = drm_dp_dpcd_write(mgr->aux, DP_GUID, mgr->guid, 16);
++ mgr->guid_valid = true;
++ }
++
+ queue_work(system_long_wq, &mgr->work);
+
+ ret = 0;
+@@ -2267,7 +2217,6 @@
+ }
+
+ drm_dp_update_port(mstb, &msg.u.conn_stat);
+-
+ DRM_DEBUG_KMS("Got CSN: pn: %d ldps:%d ddps: %d mcs: %d ip: %d pdt: %d\n", msg.u.conn_stat.port_number, msg.u.conn_stat.legacy_device_plug_status, msg.u.conn_stat.displayport_device_plug_status, msg.u.conn_stat.message_capability_status, msg.u.conn_stat.input_port, msg.u.conn_stat.peer_device_type);
+ (*mgr->cbs->hotplug)(mgr);
+
+@@ -2800,13 +2749,6 @@
+ mutex_unlock(&mgr->qlock);
+ }
+
+-static void drm_dp_free_mst_port(struct kref *kref)
+-{
+- struct drm_dp_mst_port *port = container_of(kref, struct drm_dp_mst_port, kref);
+- kref_put(&port->parent->kref, drm_dp_free_mst_branch_device);
+- kfree(port);
+-}
+-
+ static void drm_dp_destroy_connector_work(struct work_struct *work)
+ {
+ struct drm_dp_mst_topology_mgr *mgr = container_of(work, struct drm_dp_mst_topology_mgr, destroy_connector_work);
+@@ -2827,22 +2769,13 @@
+ list_del(&port->next);
+ mutex_unlock(&mgr->destroy_connector_lock);
+
+- kref_init(&port->kref);
+- INIT_LIST_HEAD(&port->next);
+-
+ mgr->cbs->destroy_connector(mgr, port->connector);
+
+ drm_dp_port_teardown_pdt(port, port->pdt);
+
+- if (!port->input && port->vcpi.vcpi > 0) {
+- if (mgr->mst_state) {
+- drm_dp_mst_reset_vcpi_slots(mgr, port);
+- drm_dp_update_payload_part1(mgr);
+- drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi);
+- }
+- }
+-
+- kref_put(&port->kref, drm_dp_free_mst_port);
++ if (!port->input && port->vcpi.vcpi > 0)
++ drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi);
++ kfree(port);
+ send_hotplug = true;
+ }
+ if (send_hotplug)
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_fb_cma_helper.c linux-4.1.23/drivers/gpu/drm/drm_fb_cma_helper.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_fb_cma_helper.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_fb_cma_helper.c 2016-05-02 22:53:53.000000000 +0200
@@ -279,7 +279,7 @@
if (!fbi) {
dev_err(dev->dev, "Failed to allocate framebuffer info.\n");
@@ -30984,9 +33724,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_fb_cma_helper.c linux-4.1.22/dri
return ret;
}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_fb_helper.c linux-4.1.22/drivers/gpu/drm/drm_fb_helper.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_fb_helper.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_fb_helper.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_fb_helper.c linux-4.1.23/drivers/gpu/drm/drm_fb_helper.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_fb_helper.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_fb_helper.c 2016-05-02 22:53:53.000000000 +0200
@@ -98,7 +98,7 @@
struct drm_connector *connector;
int i;
@@ -31032,9 +33772,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_fb_helper.c linux-4.1.22/drivers
fb_helper->crtc_info[i].mode_set.crtc = crtc;
i++;
}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_gem_cma_helper.c linux-4.1.22/drivers/gpu/drm/drm_gem_cma_helper.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_gem_cma_helper.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_gem_cma_helper.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_gem_cma_helper.c linux-4.1.23/drivers/gpu/drm/drm_gem_cma_helper.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_gem_cma_helper.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_gem_cma_helper.c 2016-05-02 22:53:53.000000000 +0200
@@ -59,11 +59,13 @@
struct drm_gem_object *gem_obj;
int ret;
@@ -31071,9 +33811,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_gem_cma_helper.c linux-4.1.22/dr
return ERR_PTR(ret);
}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_of.c linux-4.1.22/drivers/gpu/drm/drm_of.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_of.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_of.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_of.c linux-4.1.23/drivers/gpu/drm/drm_of.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_of.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_of.c 2016-05-02 22:53:53.000000000 +0200
@@ -19,7 +19,7 @@
unsigned int index = 0;
struct drm_crtc *tmp;
@@ -31083,9 +33823,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_of.c linux-4.1.22/drivers/gpu/dr
if (tmp->port == port)
return 1 << index;
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_probe_helper.c linux-4.1.22/drivers/gpu/drm/drm_probe_helper.c
---- linux-4.1.22.orig/drivers/gpu/drm/drm_probe_helper.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/gpu/drm/drm_probe_helper.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/drm_probe_helper.c linux-4.1.23/drivers/gpu/drm/drm_probe_helper.c
+--- linux-4.1.23.orig/drivers/gpu/drm/drm_probe_helper.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/drm_probe_helper.c 2016-05-02 22:53:53.000000000 +0200
@@ -313,7 +313,7 @@
goto out;
@@ -31113,9 +33853,158 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/drm_probe_helper.c linux-4.1.22/driv
/* Only handle HPD capable connectors. */
if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/Kconfig linux-4.1.22/drivers/gpu/drm/vc4/Kconfig
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/gma500/gem.c linux-4.1.23/drivers/gpu/drm/gma500/gem.c
+--- linux-4.1.23.orig/drivers/gpu/drm/gma500/gem.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/gma500/gem.c 2016-05-02 22:53:53.000000000 +0200
+@@ -130,7 +130,7 @@
+ return ret;
+ }
+ /* We have the initial and handle reference but need only one now */
+- drm_gem_object_unreference_unlocked(&r->gem);
++ drm_gem_object_unreference(&r->gem);
+ *handlep = handle;
+ return 0;
+ }
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/radeon/atombios_encoders.c linux-4.1.23/drivers/gpu/drm/radeon/atombios_encoders.c
+--- linux-4.1.23.orig/drivers/gpu/drm/radeon/atombios_encoders.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/radeon/atombios_encoders.c 2016-05-02 22:53:53.000000000 +0200
+@@ -892,6 +892,8 @@
+ else
+ args.v1.ucLaneNum = 4;
+
++ if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode) && (dp_clock == 270000))
++ args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
+ switch (radeon_encoder->encoder_id) {
+ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
+ args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER1;
+@@ -908,10 +910,6 @@
+ args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB;
+ else
+ args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA;
+-
+- if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode) && (dp_clock == 270000))
+- args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
+-
+ break;
+ case 2:
+ case 3:
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/radeon/radeon_atpx_handler.c linux-4.1.23/drivers/gpu/drm/radeon/radeon_atpx_handler.c
+--- linux-4.1.23.orig/drivers/gpu/drm/radeon/radeon_atpx_handler.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/radeon/radeon_atpx_handler.c 2016-05-02 22:53:53.000000000 +0200
+@@ -62,10 +62,6 @@
+ return radeon_atpx_priv.atpx_detected;
+ }
+
+-bool radeon_has_atpx_dgpu_power_cntl(void) {
+- return radeon_atpx_priv.atpx.functions.power_cntl;
+-}
+-
+ /**
+ * radeon_atpx_call - call an ATPX method
+ *
+@@ -145,6 +141,10 @@
+ */
+ static int radeon_atpx_validate(struct radeon_atpx *atpx)
+ {
++ /* make sure required functions are enabled */
++ /* dGPU power control is required */
++ atpx->functions.power_cntl = true;
++
+ if (atpx->functions.px_params) {
+ union acpi_object *info;
+ struct atpx_px_params output;
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/radeon/radeon_device.c linux-4.1.23/drivers/gpu/drm/radeon/radeon_device.c
+--- linux-4.1.23.orig/drivers/gpu/drm/radeon/radeon_device.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/radeon/radeon_device.c 2016-05-02 22:53:53.000000000 +0200
+@@ -103,12 +103,6 @@
+ "LAST",
+ };
+
+-#if defined(CONFIG_VGA_SWITCHEROO)
+-bool radeon_has_atpx_dgpu_power_cntl(void);
+-#else
+-static inline bool radeon_has_atpx_dgpu_power_cntl(void) { return false; }
+-#endif
+-
+ #define RADEON_PX_QUIRK_DISABLE_PX (1 << 0)
+ #define RADEON_PX_QUIRK_LONG_WAKEUP (1 << 1)
+
+@@ -1433,7 +1427,7 @@
+ * ignore it */
+ vga_client_register(rdev->pdev, rdev, NULL, radeon_vga_set_decode);
+
+- if ((rdev->flags & RADEON_IS_PX) && radeon_has_atpx_dgpu_power_cntl())
++ if (rdev->flags & RADEON_IS_PX)
+ runtime = true;
+ vga_switcheroo_register_client(rdev->pdev, &radeon_switcheroo_ops, runtime);
+ if (runtime)
+@@ -1740,6 +1734,7 @@
+ }
+
+ drm_kms_helper_poll_enable(dev);
++ drm_helper_hpd_irq_event(dev);
+
+ /* set the power state here in case we are a PX system or headless */
+ if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled)
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/radeon/radeon_fb.c linux-4.1.23/drivers/gpu/drm/radeon/radeon_fb.c
+--- linux-4.1.23.orig/drivers/gpu/drm/radeon/radeon_fb.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/gpu/drm/radeon/radeon_fb.c 2016-05-02 22:53:53.000000000 +0200
+@@ -333,8 +333,7 @@
+
+ void radeon_fb_output_poll_changed(struct radeon_device *rdev)
+ {
+- if (rdev->mode_info.rfbdev)
+- drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper);
++ drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper);
+ }
+
+ static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfbdev)
+@@ -374,10 +373,6 @@
+ int bpp_sel = 32;
+ int ret;
+
+- /* don't enable fbdev if no connectors */
+- if (list_empty(&rdev->ddev->mode_config.connector_list))
+- return 0;
+-
+ /* select 8 bpp console on RN50 or 16MB cards */
+ if (ASIC_IS_RN50(rdev) || rdev->mc.real_vram_size <= (32*1024*1024))
+ bpp_sel = 8;
+@@ -430,15 +425,11 @@
+
+ void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state)
+ {
+- if (rdev->mode_info.rfbdev)
+- fb_set_suspend(rdev->mode_info.rfbdev->helper.fbdev, state);
++ fb_set_suspend(rdev->mode_info.rfbdev->helper.fbdev, state);
+ }
+
+ bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
+ {
+- if (!rdev->mode_info.rfbdev)
+- return false;
+-
+ if (robj == gem_to_radeon_bo(rdev->mode_info.rfbdev->rfb.obj))
+ return true;
+ return false;
+@@ -446,12 +437,10 @@
+
+ void radeon_fb_add_connector(struct radeon_device *rdev, struct drm_connector *connector)
+ {
+- if (rdev->mode_info.rfbdev)
+- drm_fb_helper_add_one_connector(&rdev->mode_info.rfbdev->helper, connector);
++ drm_fb_helper_add_one_connector(&rdev->mode_info.rfbdev->helper, connector);
+ }
+
+ void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector *connector)
+ {
+- if (rdev->mode_info.rfbdev)
+- drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector);
++ drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector);
+ }
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/Kconfig linux-4.1.23/drivers/gpu/drm/vc4/Kconfig
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/Kconfig 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,14 @@
+config DRM_VC4
+ tristate "Broadcom VC4 Graphics"
@@ -31131,9 +34020,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/Kconfig linux-4.1.22/drivers/gpu
+ This driver requires that "avoid_warnings=2" be present in
+ the config.txt for the firmware, to keep it from smashing
+ our display setup.
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/Makefile linux-4.1.22/drivers/gpu/drm/vc4/Makefile
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/Makefile linux-4.1.23/drivers/gpu/drm/vc4/Makefile
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/Makefile 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,26 @@
+ccflags-y := -Iinclude/drm
+
@@ -31161,9 +34050,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/Makefile linux-4.1.22/drivers/gp
+obj-$(CONFIG_DRM_VC4) += vc4.o
+
+CFLAGS_vc4_trace_points.o := -I$(src)
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_bo.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_bo.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_bo.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_bo.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_bo.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_bo.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_bo.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_bo.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,577 @@
+/*
+ * Copyright © 2015 Broadcom
@@ -31742,9 +34631,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_bo.c linux-4.1.22/drivers/gp
+ vc4_bo_stats_dump(vc4);
+ }
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_crtc.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_crtc.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_crtc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_crtc.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_crtc.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_crtc.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_crtc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_crtc.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,769 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -32515,9 +35404,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_crtc.c linux-4.1.22/drivers/
+ .of_match_table = vc4_crtc_dt_match,
+ },
+};
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_debugfs.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_debugfs.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_debugfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_debugfs.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_debugfs.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_debugfs.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_debugfs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_debugfs.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright © 2014 Broadcom
@@ -32562,9 +35451,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_debugfs.c linux-4.1.22/drive
+{
+ drm_debugfs_remove_files(vc4_debugfs_list, VC4_DEBUGFS_ENTRIES, minor);
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_drv.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_drv.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_drv.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_drv.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_drv.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_drv.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_drv.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_drv.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,331 @@
+/*
+ * Copyright (C) 2014-2015 Broadcom
@@ -32897,9 +35786,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_drv.c linux-4.1.22/drivers/g
+MODULE_DESCRIPTION("Broadcom VC4 DRM Driver");
+MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_drv.h linux-4.1.22/drivers/gpu/drm/vc4/vc4_drv.h
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_drv.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_drv.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_drv.h linux-4.1.23/drivers/gpu/drm/vc4/vc4_drv.h
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_drv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_drv.h 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,463 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -33364,9 +36253,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_drv.h linux-4.1.22/drivers/g
+/* vc4_validate_shader.c */
+struct vc4_validated_shader_info *
+vc4_validate_shader(struct drm_gem_cma_object *shader_obj);
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_gem.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_gem.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_gem.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_gem.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_gem.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_gem.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_gem.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_gem.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,879 @@
+/*
+ * Copyright © 2014 Broadcom
@@ -34247,9 +37136,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_gem.c linux-4.1.22/drivers/g
+ if (vc4->hang_state)
+ vc4_free_hang_state(dev, vc4->hang_state);
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_hdmi.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_hdmi.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_hdmi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_hdmi.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_hdmi.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_hdmi.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_hdmi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_hdmi.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,592 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -34843,9 +37732,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_hdmi.c linux-4.1.22/drivers/
+ .of_match_table = vc4_hdmi_dt_match,
+ },
+};
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_hvs.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_hvs.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_hvs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_hvs.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_hvs.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_hvs.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_hvs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_hvs.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -35010,9 +37899,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_hvs.c linux-4.1.22/drivers/g
+ .of_match_table = vc4_hvs_dt_match,
+ },
+};
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_irq.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_irq.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_irq.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_irq.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_irq.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_irq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_irq.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,210 @@
+/*
+ * Copyright © 2014 Broadcom
@@ -35224,9 +38113,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_irq.c linux-4.1.22/drivers/g
+ vc4_irq_finish_job(dev);
+ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_kms.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_kms.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_kms.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_kms.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_kms.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_kms.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_kms.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_kms.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -35442,9 +38331,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_kms.c linux-4.1.22/drivers/g
+
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_packet.h linux-4.1.22/drivers/gpu/drm/vc4/vc4_packet.h
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_packet.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_packet.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_packet.h linux-4.1.23/drivers/gpu/drm/vc4/vc4_packet.h
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_packet.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_packet.h 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,399 @@
+/*
+ * Copyright © 2014 Broadcom
@@ -35845,9 +38734,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_packet.h linux-4.1.22/driver
+#define VC4_TEX_P2_CXOFF_SHIFT 0
+
+#endif /* VC4_PACKET_H */
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_plane.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_plane.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_plane.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_plane.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_plane.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_plane.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_plane.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_plane.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,386 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -36235,9 +39124,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_plane.c linux-4.1.22/drivers
+
+ return ERR_PTR(ret);
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_qpu_defines.h linux-4.1.22/drivers/gpu/drm/vc4/vc4_qpu_defines.h
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_qpu_defines.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_qpu_defines.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_qpu_defines.h linux-4.1.23/drivers/gpu/drm/vc4/vc4_qpu_defines.h
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_qpu_defines.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_qpu_defines.h 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,264 @@
+/*
+ * Copyright © 2014 Broadcom
@@ -36503,9 +39392,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_qpu_defines.h linux-4.1.22/d
+#define QPU_OP_ADD_MASK QPU_MASK(28, 24)
+
+#endif /* VC4_QPU_DEFINES_H */
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_regs.h linux-4.1.22/drivers/gpu/drm/vc4/vc4_regs.h
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_regs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_regs.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_regs.h linux-4.1.23/drivers/gpu/drm/vc4/vc4_regs.h
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_regs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_regs.h 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,570 @@
+/*
+ * Copyright © 2014-2015 Broadcom
@@ -37077,9 +39966,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_regs.h linux-4.1.22/drivers/
+#define SCALER_SRC_PITCH_SHIFT 0
+
+#endif /* VC4_REGS_H */
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_render_cl.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_render_cl.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_render_cl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_render_cl.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_render_cl.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_render_cl.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_render_cl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_render_cl.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,634 @@
+/*
+ * Copyright © 2014-2015 Broadcom
@@ -37715,9 +40604,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_render_cl.c linux-4.1.22/dri
+
+ return vc4_create_rcl_bo(dev, exec, &setup);
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_trace.h linux-4.1.22/drivers/gpu/drm/vc4/vc4_trace.h
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_trace.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_trace.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_trace.h linux-4.1.23/drivers/gpu/drm/vc4/vc4_trace.h
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_trace.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_trace.h 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -37782,9 +40671,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_trace.h linux-4.1.22/drivers
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH .
+#include <trace/define_trace.h>
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_trace_points.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_trace_points.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_trace_points.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_trace_points.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_trace_points.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_trace_points.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_trace_points.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_trace_points.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2015 Broadcom
@@ -37800,9 +40689,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_trace_points.c linux-4.1.22/
+#define CREATE_TRACE_POINTS
+#include "vc4_trace.h"
+#endif
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_v3d.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_v3d.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_v3d.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_v3d.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_v3d.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_v3d.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_v3d.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_v3d.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2014 The Linux Foundation. All rights reserved.
@@ -38074,9 +40963,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_v3d.c linux-4.1.22/drivers/g
+ .of_match_table = vc4_v3d_dt_match,
+ },
+};
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_validate.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_validate.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_validate.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_validate.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_validate.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_validate.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_validate.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_validate.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,900 @@
+/*
+ * Copyright © 2014 Broadcom
@@ -38978,9 +41867,9 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_validate.c linux-4.1.22/driv
+
+ return ret;
+}
-diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_validate_shaders.c linux-4.1.22/drivers/gpu/drm/vc4/vc4_validate_shaders.c
---- linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_validate_shaders.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/gpu/drm/vc4/vc4_validate_shaders.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_validate_shaders.c linux-4.1.23/drivers/gpu/drm/vc4/vc4_validate_shaders.c
+--- linux-4.1.23.orig/drivers/gpu/drm/vc4/vc4_validate_shaders.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/gpu/drm/vc4/vc4_validate_shaders.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,513 @@
+/*
+ * Copyright © 2014 Broadcom
@@ -39495,9 +42384,82 @@ diff -Nur linux-4.1.22.orig/drivers/gpu/drm/vc4/vc4_validate_shaders.c linux-4.1
+ }
+ return NULL;
+}
-diff -Nur linux-4.1.22.orig/drivers/hid/usbhid/hid-core.c linux-4.1.22/drivers/hid/usbhid/hid-core.c
---- linux-4.1.22.orig/drivers/hid/usbhid/hid-core.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/hid/usbhid/hid-core.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/hid/hid-core.c linux-4.1.23/drivers/hid/hid-core.c
+--- linux-4.1.23.orig/drivers/hid/hid-core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/hid/hid-core.c 2016-05-02 22:53:53.000000000 +0200
+@@ -2584,10 +2584,9 @@
+ /*
+ * Scan generic devices for group information
+ */
+- if (hid_ignore_special_drivers) {
+- hdev->group = HID_GROUP_GENERIC;
+- } else if (!hdev->group &&
+- !hid_match_id(hdev, hid_have_special_driver)) {
++ if (hid_ignore_special_drivers ||
++ (!hdev->group &&
++ !hid_match_id(hdev, hid_have_special_driver))) {
+ ret = hid_scan_report(hdev);
+ if (ret)
+ hid_warn(hdev, "bad device descriptor (%d)\n", ret);
+diff -Nur linux-4.1.23.orig/drivers/hid/hid-multitouch.c linux-4.1.23/drivers/hid/hid-multitouch.c
+--- linux-4.1.23.orig/drivers/hid/hid-multitouch.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/hid/hid-multitouch.c 2016-05-02 22:53:53.000000000 +0200
+@@ -322,19 +322,8 @@
+ break;
+ }
+
+- if (td->inputmode < 0) {
+- td->inputmode = field->report->id;
+- td->inputmode_index = usage->usage_index;
+- } else {
+- /*
+- * Some elan panels wrongly declare 2 input mode
+- * features, and silently ignore when we set the
+- * value in the second field. Skip the second feature
+- * and hope for the best.
+- */
+- dev_info(&hdev->dev,
+- "Ignoring the extra HID_DG_INPUTMODE\n");
+- }
++ td->inputmode = field->report->id;
++ td->inputmode_index = usage->usage_index;
+
+ break;
+ case HID_DG_CONTACTMAX:
+diff -Nur linux-4.1.23.orig/drivers/hid/i2c-hid/i2c-hid.c linux-4.1.23/drivers/hid/i2c-hid/i2c-hid.c
+--- linux-4.1.23.orig/drivers/hid/i2c-hid/i2c-hid.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/hid/i2c-hid/i2c-hid.c 2016-05-02 22:53:53.000000000 +0200
+@@ -280,21 +280,17 @@
+ u16 dataRegister = le16_to_cpu(ihid->hdesc.wDataRegister);
+ u16 outputRegister = le16_to_cpu(ihid->hdesc.wOutputRegister);
+ u16 maxOutputLength = le16_to_cpu(ihid->hdesc.wMaxOutputLength);
+- u16 size;
+- int args_len;
+- int index = 0;
+-
+- i2c_hid_dbg(ihid, "%s\n", __func__);
+-
+- if (data_len > ihid->bufsize)
+- return -EINVAL;
+
+- size = 2 /* size */ +
++ /* hid_hw_* already checked that data_len < HID_MAX_BUFFER_SIZE */
++ u16 size = 2 /* size */ +
+ (reportID ? 1 : 0) /* reportID */ +
+ data_len /* buf */;
+- args_len = (reportID >= 0x0F ? 1 : 0) /* optional third byte */ +
++ int args_len = (reportID >= 0x0F ? 1 : 0) /* optional third byte */ +
+ 2 /* dataRegister */ +
+ size /* args */;
++ int index = 0;
++
++ i2c_hid_dbg(ihid, "%s\n", __func__);
+
+ if (!use_data && maxOutputLength == 0)
+ return -ENOSYS;
+diff -Nur linux-4.1.23.orig/drivers/hid/usbhid/hid-core.c linux-4.1.23/drivers/hid/usbhid/hid-core.c
+--- linux-4.1.23.orig/drivers/hid/usbhid/hid-core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/hid/usbhid/hid-core.c 2016-05-02 22:53:53.000000000 +0200
@@ -49,7 +49,7 @@
* Module parameters.
*/
@@ -39507,7 +42469,25 @@ diff -Nur linux-4.1.22.orig/drivers/hid/usbhid/hid-core.c linux-4.1.22/drivers/h
module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
MODULE_PARM_DESC(mousepoll, "Polling interval of mice");
-@@ -1090,8 +1090,12 @@
+@@ -477,6 +477,8 @@
+ struct usbhid_device *usbhid = hid->driver_data;
+ int unplug = 0, status = urb->status;
+
++ spin_lock(&usbhid->lock);
++
+ switch (status) {
+ case 0: /* success */
+ if (usbhid->ctrl[usbhid->ctrltail].dir == USB_DIR_IN)
+@@ -496,8 +498,6 @@
+ hid_warn(urb->dev, "ctrl urb status %d received\n", status);
+ }
+
+- spin_lock(&usbhid->lock);
+-
+ if (unplug) {
+ usbhid->ctrltail = usbhid->ctrlhead;
+ } else {
+@@ -1082,8 +1082,12 @@
}
/* Change the polling interval of mice. */
@@ -39522,9 +42502,9 @@ diff -Nur linux-4.1.22.orig/drivers/hid/usbhid/hid-core.c linux-4.1.22/drivers/h
ret = -ENOMEM;
if (usb_endpoint_dir_in(endpoint)) {
-diff -Nur linux-4.1.22.orig/drivers/i2c/busses/Kconfig linux-4.1.22/drivers/i2c/busses/Kconfig
---- linux-4.1.22.orig/drivers/i2c/busses/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/i2c/busses/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/i2c/busses/Kconfig linux-4.1.23/drivers/i2c/busses/Kconfig
+--- linux-4.1.23.orig/drivers/i2c/busses/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/i2c/busses/Kconfig 2016-05-02 22:53:53.000000000 +0200
@@ -8,6 +8,25 @@
comment "PC SMBus host controller drivers"
depends on PCI
@@ -39560,9 +42540,9 @@ diff -Nur linux-4.1.22.orig/drivers/i2c/busses/Kconfig linux-4.1.22/drivers/i2c/
help
If you say yes to this option, support will be included for the
BCM2835 I2C controller.
-diff -Nur linux-4.1.22.orig/drivers/i2c/busses/Makefile linux-4.1.22/drivers/i2c/busses/Makefile
---- linux-4.1.22.orig/drivers/i2c/busses/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/i2c/busses/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/i2c/busses/Makefile linux-4.1.23/drivers/i2c/busses/Makefile
+--- linux-4.1.23.orig/drivers/i2c/busses/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/i2c/busses/Makefile 2016-05-02 22:53:53.000000000 +0200
@@ -2,6 +2,8 @@
# Makefile for the i2c bus drivers.
#
@@ -39572,9 +42552,9 @@ diff -Nur linux-4.1.22.orig/drivers/i2c/busses/Makefile linux-4.1.22/drivers/i2c
# ACPI drivers
obj-$(CONFIG_I2C_SCMI) += i2c-scmi.o
-diff -Nur linux-4.1.22.orig/drivers/i2c/busses/i2c-bcm2708.c linux-4.1.22/drivers/i2c/busses/i2c-bcm2708.c
---- linux-4.1.22.orig/drivers/i2c/busses/i2c-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/i2c/busses/i2c-bcm2708.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/i2c/busses/i2c-bcm2708.c linux-4.1.23/drivers/i2c/busses/i2c-bcm2708.c
+--- linux-4.1.23.orig/drivers/i2c/busses/i2c-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/i2c/busses/i2c-bcm2708.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,539 @@
+/*
+ * Driver for Broadcom BCM2708 BSC Controllers
@@ -40115,9 +43095,242 @@ diff -Nur linux-4.1.22.orig/drivers/i2c/busses/i2c-bcm2708.c linux-4.1.22/driver
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
-diff -Nur linux-4.1.22.orig/drivers/input/joystick/Kconfig linux-4.1.22/drivers/input/joystick/Kconfig
---- linux-4.1.22.orig/drivers/input/joystick/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/input/joystick/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/iio/dac/mcp4725.c linux-4.1.23/drivers/iio/dac/mcp4725.c
+--- linux-4.1.23.orig/drivers/iio/dac/mcp4725.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/iio/dac/mcp4725.c 2016-05-02 22:53:53.000000000 +0200
+@@ -300,7 +300,6 @@
+ data->client = client;
+
+ indio_dev->dev.parent = &client->dev;
+- indio_dev->name = id->name;
+ indio_dev->info = &mcp4725_info;
+ indio_dev->channels = &mcp4725_channel;
+ indio_dev->num_channels = 1;
+diff -Nur linux-4.1.23.orig/drivers/iio/imu/adis_buffer.c linux-4.1.23/drivers/iio/imu/adis_buffer.c
+--- linux-4.1.23.orig/drivers/iio/imu/adis_buffer.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/iio/imu/adis_buffer.c 2016-05-02 22:53:53.000000000 +0200
+@@ -43,7 +43,7 @@
+ return -ENOMEM;
+
+ rx = adis->buffer;
+- tx = rx + scan_count;
++ tx = rx + indio_dev->scan_bytes;
+
+ spi_message_init(&adis->msg);
+
+diff -Nur linux-4.1.23.orig/drivers/iio/pressure/mpl115.c linux-4.1.23/drivers/iio/pressure/mpl115.c
+--- linux-4.1.23.orig/drivers/iio/pressure/mpl115.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/iio/pressure/mpl115.c 2016-05-02 22:53:53.000000000 +0200
+@@ -117,7 +117,7 @@
+ *val = ret >> 6;
+ return IIO_VAL_INT;
+ case IIO_CHAN_INFO_OFFSET:
+- *val = -605;
++ *val = 605;
+ *val2 = 750000;
+ return IIO_VAL_INT_PLUS_MICRO;
+ case IIO_CHAN_INFO_SCALE:
+diff -Nur linux-4.1.23.orig/drivers/infiniband/hw/cxgb3/iwch_cm.c linux-4.1.23/drivers/infiniband/hw/cxgb3/iwch_cm.c
+--- linux-4.1.23.orig/drivers/infiniband/hw/cxgb3/iwch_cm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/infiniband/hw/cxgb3/iwch_cm.c 2016-05-02 22:53:53.000000000 +0200
+@@ -149,7 +149,7 @@
+ error = l2t_send(tdev, skb, l2e);
+ if (error < 0)
+ kfree_skb(skb);
+- return error < 0 ? error : 0;
++ return error;
+ }
+
+ int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb)
+@@ -165,7 +165,7 @@
+ error = cxgb3_ofld_send(tdev, skb);
+ if (error < 0)
+ kfree_skb(skb);
+- return error < 0 ? error : 0;
++ return error;
+ }
+
+ static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
+diff -Nur linux-4.1.23.orig/drivers/infiniband/ulp/isert/ib_isert.c linux-4.1.23/drivers/infiniband/ulp/isert/ib_isert.c
+--- linux-4.1.23.orig/drivers/infiniband/ulp/isert/ib_isert.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/infiniband/ulp/isert/ib_isert.c 2016-05-02 22:53:53.000000000 +0200
+@@ -865,7 +865,7 @@
+ * @isert_conn: isert connection struct
+ *
+ * Notes:
+- * In case the connection state is BOUND, move state
++ * In case the connection state is FULL_FEATURE, move state
+ * to TEMINATING and start teardown sequence (rdma_disconnect).
+ * In case the connection state is UP, complete flush as well.
+ *
+@@ -881,7 +881,6 @@
+ case ISER_CONN_TERMINATING:
+ break;
+ case ISER_CONN_UP:
+- case ISER_CONN_BOUND:
+ case ISER_CONN_FULL_FEATURE: /* FALLTHRU */
+ isert_info("Terminating conn %p state %d\n",
+ isert_conn, isert_conn->state);
+@@ -928,9 +927,14 @@
+ enum rdma_cm_event_type event)
+ {
+ struct isert_np *isert_np = cma_id->context;
+- struct isert_conn *isert_conn = cma_id->qp->qp_context;
++ struct isert_conn *isert_conn;
+ bool terminating = false;
+
++ if (isert_np->np_cm_id == cma_id)
++ return isert_np_cma_handler(cma_id->context, event);
++
++ isert_conn = cma_id->qp->qp_context;
++
+ mutex_lock(&isert_conn->mutex);
+ terminating = (isert_conn->state == ISER_CONN_TERMINATING);
+ isert_conn_terminate(isert_conn);
+@@ -968,15 +972,11 @@
+ static int
+ isert_cma_handler(struct rdma_cm_id *cma_id, struct rdma_cm_event *event)
+ {
+- struct isert_np *isert_np = cma_id->context;
+ int ret = 0;
+
+ isert_info("event %d status %d id %p np %p\n", event->event,
+ event->status, cma_id, cma_id->context);
+
+- if (isert_np->np_cm_id == cma_id)
+- return isert_np_cma_handler(cma_id->context, event->event);
+-
+ switch (event->event) {
+ case RDMA_CM_EVENT_CONNECT_REQUEST:
+ ret = isert_connect_request(cma_id, event);
+@@ -2059,8 +2059,7 @@
+ void *start = isert_conn->rx_descs;
+ int len = ISERT_QP_MAX_RECV_DTOS * sizeof(*isert_conn->rx_descs);
+
+- if ((wr_id >= start && wr_id < start + len) ||
+- (wr_id == isert_conn->login_req_buf))
++ if (wr_id >= start && wr_id < start + len)
+ return false;
+
+ return true;
+@@ -2086,8 +2085,7 @@
+ isert_completion_put(desc, isert_cmd, ib_dev, true);
+ } else {
+ isert_conn->post_recv_buf_count--;
+- if (!isert_conn->post_recv_buf_count &&
+- isert_conn->state >= ISER_CONN_BOUND)
++ if (!isert_conn->post_recv_buf_count)
+ iscsit_cause_connection_reinstatement(isert_conn->conn, 0);
+ }
+ }
+@@ -3270,7 +3268,6 @@
+
+ conn->context = isert_conn;
+ isert_conn->conn = conn;
+- isert_conn->state = ISER_CONN_BOUND;
+
+ isert_set_conn_info(np, conn, isert_conn);
+
+diff -Nur linux-4.1.23.orig/drivers/infiniband/ulp/isert/ib_isert.h linux-4.1.23/drivers/infiniband/ulp/isert/ib_isert.h
+--- linux-4.1.23.orig/drivers/infiniband/ulp/isert/ib_isert.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/infiniband/ulp/isert/ib_isert.h 2016-05-02 22:53:53.000000000 +0200
+@@ -50,7 +50,6 @@
+ enum iser_conn_state {
+ ISER_CONN_INIT,
+ ISER_CONN_UP,
+- ISER_CONN_BOUND,
+ ISER_CONN_FULL_FEATURE,
+ ISER_CONN_TERMINATING,
+ ISER_CONN_DOWN,
+diff -Nur linux-4.1.23.orig/drivers/infiniband/ulp/srpt/ib_srpt.c linux-4.1.23/drivers/infiniband/ulp/srpt/ib_srpt.c
+--- linux-4.1.23.orig/drivers/infiniband/ulp/srpt/ib_srpt.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/infiniband/ulp/srpt/ib_srpt.c 2016-05-02 22:53:53.000000000 +0200
+@@ -1742,6 +1742,47 @@
+ return -1;
+ }
+
++/**
++ * srpt_rx_mgmt_fn_tag() - Process a task management function by tag.
++ * @ch: RDMA channel of the task management request.
++ * @fn: Task management function to perform.
++ * @req_tag: Tag of the SRP task management request.
++ * @mgmt_ioctx: I/O context of the task management request.
++ *
++ * Returns zero if the target core will process the task management
++ * request asynchronously.
++ *
++ * Note: It is assumed that the initiator serializes tag-based task management
++ * requests.
++ */
++static int srpt_rx_mgmt_fn_tag(struct srpt_send_ioctx *ioctx, u64 tag)
++{
++ struct srpt_device *sdev;
++ struct srpt_rdma_ch *ch;
++ struct srpt_send_ioctx *target;
++ int ret, i;
++
++ ret = -EINVAL;
++ ch = ioctx->ch;
++ BUG_ON(!ch);
++ BUG_ON(!ch->sport);
++ sdev = ch->sport->sdev;
++ BUG_ON(!sdev);
++ spin_lock_irq(&sdev->spinlock);
++ for (i = 0; i < ch->rq_size; ++i) {
++ target = ch->ioctx_ring[i];
++ if (target->cmd.se_lun == ioctx->cmd.se_lun &&
++ target->tag == tag &&
++ srpt_get_cmd_state(target) != SRPT_STATE_DONE) {
++ ret = 0;
++ /* now let the target core abort &target->cmd; */
++ break;
++ }
++ }
++ spin_unlock_irq(&sdev->spinlock);
++ return ret;
++}
++
+ static int srp_tmr_to_tcm(int fn)
+ {
+ switch (fn) {
+@@ -1776,6 +1817,7 @@
+ struct se_cmd *cmd;
+ struct se_session *sess = ch->sess;
+ uint64_t unpacked_lun;
++ uint32_t tag = 0;
+ int tcm_tmr;
+ int rc;
+
+@@ -1791,10 +1833,25 @@
+ srpt_set_cmd_state(send_ioctx, SRPT_STATE_MGMT);
+ send_ioctx->tag = srp_tsk->tag;
+ tcm_tmr = srp_tmr_to_tcm(srp_tsk->tsk_mgmt_func);
++ if (tcm_tmr < 0) {
++ send_ioctx->cmd.se_tmr_req->response =
++ TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED;
++ goto fail;
++ }
+ unpacked_lun = srpt_unpack_lun((uint8_t *)&srp_tsk->lun,
+ sizeof(srp_tsk->lun));
++
++ if (srp_tsk->tsk_mgmt_func == SRP_TSK_ABORT_TASK) {
++ rc = srpt_rx_mgmt_fn_tag(send_ioctx, srp_tsk->task_tag);
++ if (rc < 0) {
++ send_ioctx->cmd.se_tmr_req->response =
++ TMR_TASK_DOES_NOT_EXIST;
++ goto fail;
++ }
++ tag = srp_tsk->task_tag;
++ }
+ rc = target_submit_tmr(&send_ioctx->cmd, sess, NULL, unpacked_lun,
+- srp_tsk, tcm_tmr, GFP_KERNEL, srp_tsk->task_tag,
++ srp_tsk, tcm_tmr, GFP_KERNEL, tag,
+ TARGET_SCF_ACK_KREF);
+ if (rc != 0) {
+ send_ioctx->cmd.se_tmr_req->response = TMR_FUNCTION_REJECTED;
+diff -Nur linux-4.1.23.orig/drivers/input/joystick/Kconfig linux-4.1.23/drivers/input/joystick/Kconfig
+--- linux-4.1.23.orig/drivers/input/joystick/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/joystick/Kconfig 2016-05-02 22:53:53.000000000 +0200
@@ -329,4 +329,12 @@
To compile this as a module choose M here: the module will be called
maplecontrol.
@@ -40131,18 +43344,18 @@ diff -Nur linux-4.1.22.orig/drivers/input/joystick/Kconfig linux-4.1.22/drivers/
+ This is the joystick driver for the Raspberry Pi Sense HAT
+
endif
-diff -Nur linux-4.1.22.orig/drivers/input/joystick/Makefile linux-4.1.22/drivers/input/joystick/Makefile
---- linux-4.1.22.orig/drivers/input/joystick/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/input/joystick/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/input/joystick/Makefile linux-4.1.23/drivers/input/joystick/Makefile
+--- linux-4.1.23.orig/drivers/input/joystick/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/joystick/Makefile 2016-05-02 22:53:53.000000000 +0200
@@ -32,4 +32,5 @@
obj-$(CONFIG_JOYSTICK_XPAD) += xpad.o
obj-$(CONFIG_JOYSTICK_ZHENHUA) += zhenhua.o
obj-$(CONFIG_JOYSTICK_WALKERA0701) += walkera0701.o
+obj-$(CONFIG_JOYSTICK_RPISENSE) += rpisense-js.o
-diff -Nur linux-4.1.22.orig/drivers/input/joystick/rpisense-js.c linux-4.1.22/drivers/input/joystick/rpisense-js.c
---- linux-4.1.22.orig/drivers/input/joystick/rpisense-js.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/input/joystick/rpisense-js.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/input/joystick/rpisense-js.c linux-4.1.23/drivers/input/joystick/rpisense-js.c
+--- linux-4.1.23.orig/drivers/input/joystick/rpisense-js.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/input/joystick/rpisense-js.c 2016-05-02 22:53:53.000000000 +0200
@@ -0,0 +1,153 @@
+/*
+ * Raspberry Pi Sense HAT joystick driver
@@ -40297,9 +43510,141 @@ diff -Nur linux-4.1.22.orig/drivers/input/joystick/rpisense-js.c linux-4.1.22/dr
+MODULE_DESCRIPTION("Raspberry Pi Sense HAT joystick driver");
+MODULE_AUTHOR("Serge Schneider <serge@raspberrypi.org>");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/Kconfig linux-4.1.22/drivers/input/touchscreen/Kconfig
---- linux-4.1.22.orig/drivers/input/touchscreen/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/input/touchscreen/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/input/misc/ati_remote2.c linux-4.1.23/drivers/input/misc/ati_remote2.c
+--- linux-4.1.23.orig/drivers/input/misc/ati_remote2.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/misc/ati_remote2.c 2016-05-02 22:53:54.000000000 +0200
+@@ -817,49 +817,26 @@
+
+ ar2->udev = udev;
+
+- /* Sanity check, first interface must have an endpoint */
+- if (alt->desc.bNumEndpoints < 1 || !alt->endpoint) {
+- dev_err(&interface->dev,
+- "%s(): interface 0 must have an endpoint\n", __func__);
+- r = -ENODEV;
+- goto fail1;
+- }
+ ar2->intf[0] = interface;
+ ar2->ep[0] = &alt->endpoint[0].desc;
+
+- /* Sanity check, the device must have two interfaces */
+ ar2->intf[1] = usb_ifnum_to_if(udev, 1);
+- if ((udev->actconfig->desc.bNumInterfaces < 2) || !ar2->intf[1]) {
+- dev_err(&interface->dev, "%s(): need 2 interfaces, found %d\n",
+- __func__, udev->actconfig->desc.bNumInterfaces);
+- r = -ENODEV;
+- goto fail1;
+- }
+-
+ r = usb_driver_claim_interface(&ati_remote2_driver, ar2->intf[1], ar2);
+ if (r)
+ goto fail1;
+-
+- /* Sanity check, second interface must have an endpoint */
+ alt = ar2->intf[1]->cur_altsetting;
+- if (alt->desc.bNumEndpoints < 1 || !alt->endpoint) {
+- dev_err(&interface->dev,
+- "%s(): interface 1 must have an endpoint\n", __func__);
+- r = -ENODEV;
+- goto fail2;
+- }
+ ar2->ep[1] = &alt->endpoint[0].desc;
+
+ r = ati_remote2_urb_init(ar2);
+ if (r)
+- goto fail3;
++ goto fail2;
+
+ ar2->channel_mask = channel_mask;
+ ar2->mode_mask = mode_mask;
+
+ r = ati_remote2_setup(ar2, ar2->channel_mask);
+ if (r)
+- goto fail3;
++ goto fail2;
+
+ usb_make_path(udev, ar2->phys, sizeof(ar2->phys));
+ strlcat(ar2->phys, "/input0", sizeof(ar2->phys));
+@@ -868,11 +845,11 @@
+
+ r = sysfs_create_group(&udev->dev.kobj, &ati_remote2_attr_group);
+ if (r)
+- goto fail3;
++ goto fail2;
+
+ r = ati_remote2_input_init(ar2);
+ if (r)
+- goto fail4;
++ goto fail3;
+
+ usb_set_intfdata(interface, ar2);
+
+@@ -880,11 +857,10 @@
+
+ return 0;
+
+- fail4:
+- sysfs_remove_group(&udev->dev.kobj, &ati_remote2_attr_group);
+ fail3:
+- ati_remote2_urb_cleanup(ar2);
++ sysfs_remove_group(&udev->dev.kobj, &ati_remote2_attr_group);
+ fail2:
++ ati_remote2_urb_cleanup(ar2);
+ usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]);
+ fail1:
+ kfree(ar2);
+diff -Nur linux-4.1.23.orig/drivers/input/misc/ims-pcu.c linux-4.1.23/drivers/input/misc/ims-pcu.c
+--- linux-4.1.23.orig/drivers/input/misc/ims-pcu.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/misc/ims-pcu.c 2016-05-02 22:53:54.000000000 +0200
+@@ -1663,8 +1663,6 @@
+
+ pcu->ctrl_intf = usb_ifnum_to_if(pcu->udev,
+ union_desc->bMasterInterface0);
+- if (!pcu->ctrl_intf)
+- return -EINVAL;
+
+ alt = pcu->ctrl_intf->cur_altsetting;
+ pcu->ep_ctrl = &alt->endpoint[0].desc;
+@@ -1672,8 +1670,6 @@
+
+ pcu->data_intf = usb_ifnum_to_if(pcu->udev,
+ union_desc->bSlaveInterface0);
+- if (!pcu->data_intf)
+- return -EINVAL;
+
+ alt = pcu->data_intf->cur_altsetting;
+ if (alt->desc.bNumEndpoints != 2) {
+diff -Nur linux-4.1.23.orig/drivers/input/misc/powermate.c linux-4.1.23/drivers/input/misc/powermate.c
+--- linux-4.1.23.orig/drivers/input/misc/powermate.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/misc/powermate.c 2016-05-02 22:53:54.000000000 +0200
+@@ -307,9 +307,6 @@
+ int error = -ENOMEM;
+
+ interface = intf->cur_altsetting;
+- if (interface->desc.bNumEndpoints < 1)
+- return -EINVAL;
+-
+ endpoint = &interface->endpoint[0].desc;
+ if (!usb_endpoint_is_int_in(endpoint))
+ return -EIO;
+diff -Nur linux-4.1.23.orig/drivers/input/mouse/synaptics.c linux-4.1.23/drivers/input/mouse/synaptics.c
+--- linux-4.1.23.orig/drivers/input/mouse/synaptics.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/mouse/synaptics.c 2016-05-02 22:53:54.000000000 +0200
+@@ -862,9 +862,8 @@
+ if (!SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap))
+ return;
+
+- /* Bug in FW 8.1 & 8.2, buttons are reported only when ExtBit is 1 */
+- if ((SYN_ID_FULL(priv->identity) == 0x801 ||
+- SYN_ID_FULL(priv->identity) == 0x802) &&
++ /* Bug in FW 8.1, buttons are reported only when ExtBit is 1 */
++ if (SYN_ID_FULL(priv->identity) == 0x801 &&
+ !((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02))
+ return;
+
+diff -Nur linux-4.1.23.orig/drivers/input/touchscreen/Kconfig linux-4.1.23/drivers/input/touchscreen/Kconfig
+--- linux-4.1.23.orig/drivers/input/touchscreen/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/touchscreen/Kconfig 2016-05-02 22:53:54.000000000 +0200
@@ -295,6 +295,19 @@
To compile this driver as a module, choose M here: the
module will be called egalax_ts.
@@ -40334,9 +43679,9 @@ diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/Kconfig linux-4.1.22/drive
config TOUCHSCREEN_MIGOR
tristate "Renesas MIGO-R touchscreen"
depends on SH_MIGOR && I2C
-diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/Makefile linux-4.1.22/drivers/input/touchscreen/Makefile
---- linux-4.1.22.orig/drivers/input/touchscreen/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/input/touchscreen/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/input/touchscreen/Makefile linux-4.1.23/drivers/input/touchscreen/Makefile
+--- linux-4.1.23.orig/drivers/input/touchscreen/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/input/touchscreen/Makefile 2016-05-02 22:53:54.000000000 +0200
@@ -29,12 +29,14 @@
obj-$(CONFIG_TOUCHSCREEN_DA9052) += da9052_tsi.o
obj-$(CONFIG_TOUCHSCREEN_DYNAPRO) += dynapro.o
@@ -40352,9 +43697,9 @@ diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/Makefile linux-4.1.22/driv
obj-$(CONFIG_TOUCHSCREEN_FUJITSU) += fujitsu_ts.o
obj-$(CONFIG_TOUCHSCREEN_GOODIX) += goodix.o
obj-$(CONFIG_TOUCHSCREEN_ILI210X) += ili210x.o
-diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/ft6236.c linux-4.1.22/drivers/input/touchscreen/ft6236.c
---- linux-4.1.22.orig/drivers/input/touchscreen/ft6236.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/input/touchscreen/ft6236.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/input/touchscreen/ft6236.c linux-4.1.23/drivers/input/touchscreen/ft6236.c
+--- linux-4.1.23.orig/drivers/input/touchscreen/ft6236.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/input/touchscreen/ft6236.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,326 @@
+/*
+ * FocalTech FT6236 TouchScreen driver.
@@ -40682,9 +44027,9 @@ diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/ft6236.c linux-4.1.22/driv
+MODULE_AUTHOR("Noralf Trønnes <noralf@tronnes.org>");
+MODULE_DESCRIPTION("FocalTech FT6236 TouchScreen driver");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/rpi-ft5406.c linux-4.1.22/drivers/input/touchscreen/rpi-ft5406.c
---- linux-4.1.22.orig/drivers/input/touchscreen/rpi-ft5406.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/input/touchscreen/rpi-ft5406.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/input/touchscreen/rpi-ft5406.c linux-4.1.23/drivers/input/touchscreen/rpi-ft5406.c
+--- linux-4.1.23.orig/drivers/input/touchscreen/rpi-ft5406.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/input/touchscreen/rpi-ft5406.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,246 @@
+/*
+ * Driver for memory based ft5406 touchscreen
@@ -40932,9 +44277,9 @@ diff -Nur linux-4.1.22.orig/drivers/input/touchscreen/rpi-ft5406.c linux-4.1.22/
+MODULE_AUTHOR("Gordon Hollingworth");
+MODULE_DESCRIPTION("Touchscreen driver for memory based FT5406");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/drivers/irqchip/irq-bcm2835.c linux-4.1.22/drivers/irqchip/irq-bcm2835.c
---- linux-4.1.22.orig/drivers/irqchip/irq-bcm2835.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/irqchip/irq-bcm2835.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/irqchip/irq-bcm2835.c linux-4.1.23/drivers/irqchip/irq-bcm2835.c
+--- linux-4.1.23.orig/drivers/irqchip/irq-bcm2835.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/irqchip/irq-bcm2835.c 2016-05-02 22:53:54.000000000 +0200
@@ -56,7 +56,7 @@
#include "irqchip.h"
@@ -41033,9 +44378,83 @@ diff -Nur linux-4.1.22.orig/drivers/irqchip/irq-bcm2835.c linux-4.1.22/drivers/i
return 0;
}
-diff -Nur linux-4.1.22.orig/drivers/leds/leds-gpio.c linux-4.1.22/drivers/leds/leds-gpio.c
---- linux-4.1.22.orig/drivers/leds/leds-gpio.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/leds/leds-gpio.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/irqchip/irq-omap-intc.c linux-4.1.23/drivers/irqchip/irq-omap-intc.c
+--- linux-4.1.23.orig/drivers/irqchip/irq-omap-intc.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/irqchip/irq-omap-intc.c 2016-05-02 22:53:54.000000000 +0200
+@@ -48,7 +48,6 @@
+ #define INTC_ILR0 0x0100
+
+ #define ACTIVEIRQ_MASK 0x7f /* omap2/3 active interrupt bits */
+-#define SPURIOUSIRQ_MASK (0x1ffffff << 7)
+ #define INTCPS_NR_ILR_REGS 128
+ #define INTCPS_NR_MIR_REGS 4
+
+@@ -332,36 +331,37 @@
+ static asmlinkage void __exception_irq_entry
+ omap_intc_handle_irq(struct pt_regs *regs)
+ {
+- extern unsigned long irq_err_count;
+- u32 irqnr;
++ u32 irqnr = 0;
++ int handled_irq = 0;
++ int i;
+
+- irqnr = intc_readl(INTC_SIR);
++ do {
++ for (i = 0; i < omap_nr_pending; i++) {
++ irqnr = intc_readl(INTC_PENDING_IRQ0 + (0x20 * i));
++ if (irqnr)
++ goto out;
++ }
++
++out:
++ if (!irqnr)
++ break;
++
++ irqnr = intc_readl(INTC_SIR);
++ irqnr &= ACTIVEIRQ_MASK;
++
++ if (irqnr) {
++ handle_domain_irq(domain, irqnr, regs);
++ handled_irq = 1;
++ }
++ } while (irqnr);
+
+ /*
+- * A spurious IRQ can result if interrupt that triggered the
+- * sorting is no longer active during the sorting (10 INTC
+- * functional clock cycles after interrupt assertion). Or a
+- * change in interrupt mask affected the result during sorting
+- * time. There is no special handling required except ignoring
+- * the SIR register value just read and retrying.
+- * See section 6.2.5 of AM335x TRM Literature Number: SPRUH73K
+- *
+- * Many a times, a spurious interrupt situation has been fixed
+- * by adding a flush for the posted write acking the IRQ in
+- * the device driver. Typically, this is going be the device
+- * driver whose interrupt was handled just before the spurious
+- * IRQ occurred. Pay attention to those device drivers if you
+- * run into hitting the spurious IRQ condition below.
++ * If an irq is masked or deasserted while active, we will
++ * keep ending up here with no irq handled. So remove it from
++ * the INTC with an ack.
+ */
+- if (unlikely((irqnr & SPURIOUSIRQ_MASK) == SPURIOUSIRQ_MASK)) {
+- pr_err_once("%s: spurious irq!\n", __func__);
+- irq_err_count++;
++ if (!handled_irq)
+ omap_ack_irq(NULL);
+- return;
+- }
+-
+- irqnr &= ACTIVEIRQ_MASK;
+- handle_domain_irq(domain, irqnr, regs);
+ }
+
+ void __init omap3_init_irq(void)
+diff -Nur linux-4.1.23.orig/drivers/leds/leds-gpio.c linux-4.1.23/drivers/leds/leds-gpio.c
+--- linux-4.1.23.orig/drivers/leds/leds-gpio.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/leds/leds-gpio.c 2016-05-02 22:53:54.000000000 +0200
@@ -41,6 +41,13 @@
led_dat->platform_gpio_blink_set(led_dat->gpiod,
led_dat->new_level, NULL, NULL);
@@ -41082,9 +44501,9 @@ diff -Nur linux-4.1.22.orig/drivers/leds/leds-gpio.c linux-4.1.22/drivers/leds/l
if (template->default_state == LEDS_GPIO_DEFSTATE_KEEP)
state = !!gpiod_get_value_cansleep(led_dat->gpiod);
else
-diff -Nur linux-4.1.22.orig/drivers/leds/trigger/Kconfig linux-4.1.22/drivers/leds/trigger/Kconfig
---- linux-4.1.22.orig/drivers/leds/trigger/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/leds/trigger/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/leds/trigger/Kconfig linux-4.1.23/drivers/leds/trigger/Kconfig
+--- linux-4.1.23.orig/drivers/leds/trigger/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/leds/trigger/Kconfig 2016-05-02 22:53:54.000000000 +0200
@@ -108,4 +108,11 @@
This enables direct flash/torch on/off by the driver, kernel space.
If unsure, say Y.
@@ -41097,17 +44516,17 @@ diff -Nur linux-4.1.22.orig/drivers/leds/trigger/Kconfig linux-4.1.22/drivers/le
+ If unsure, say Y.
+
endif # LEDS_TRIGGERS
-diff -Nur linux-4.1.22.orig/drivers/leds/trigger/Makefile linux-4.1.22/drivers/leds/trigger/Makefile
---- linux-4.1.22.orig/drivers/leds/trigger/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/leds/trigger/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/leds/trigger/Makefile linux-4.1.23/drivers/leds/trigger/Makefile
+--- linux-4.1.23.orig/drivers/leds/trigger/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/leds/trigger/Makefile 2016-05-02 22:53:54.000000000 +0200
@@ -8,3 +8,4 @@
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o
+obj-$(CONFIG_LEDS_TRIGGER_INPUT) += ledtrig-input.o
-diff -Nur linux-4.1.22.orig/drivers/leds/trigger/ledtrig-input.c linux-4.1.22/drivers/leds/trigger/ledtrig-input.c
---- linux-4.1.22.orig/drivers/leds/trigger/ledtrig-input.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/leds/trigger/ledtrig-input.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/leds/trigger/ledtrig-input.c linux-4.1.23/drivers/leds/trigger/ledtrig-input.c
+--- linux-4.1.23.orig/drivers/leds/trigger/ledtrig-input.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/leds/trigger/ledtrig-input.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,54 @@
+/*
+ * Set LED GPIO to Input "Trigger"
@@ -41163,9 +44582,9 @@ diff -Nur linux-4.1.22.orig/drivers/leds/trigger/ledtrig-input.c linux-4.1.22/dr
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.org>");
+MODULE_DESCRIPTION("Set LED GPIO to Input \"trigger\"");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/drivers/mailbox/Kconfig linux-4.1.22/drivers/mailbox/Kconfig
---- linux-4.1.22.orig/drivers/mailbox/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mailbox/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mailbox/Kconfig linux-4.1.23/drivers/mailbox/Kconfig
+--- linux-4.1.23.orig/drivers/mailbox/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mailbox/Kconfig 2016-05-02 22:53:54.000000000 +0200
@@ -60,4 +60,13 @@
An implementation of the Altera Mailbox soft core. It is used
to send message between processors. Say Y here if you want to use the
@@ -41180,18 +44599,18 @@ diff -Nur linux-4.1.22.orig/drivers/mailbox/Kconfig linux-4.1.22/drivers/mailbox
+ BCM2835 Mailbox.
+
endif
-diff -Nur linux-4.1.22.orig/drivers/mailbox/Makefile linux-4.1.22/drivers/mailbox/Makefile
---- linux-4.1.22.orig/drivers/mailbox/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mailbox/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mailbox/Makefile linux-4.1.23/drivers/mailbox/Makefile
+--- linux-4.1.23.orig/drivers/mailbox/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mailbox/Makefile 2016-05-02 22:53:54.000000000 +0200
@@ -11,3 +11,5 @@
obj-$(CONFIG_PCC) += pcc.o
obj-$(CONFIG_ALTERA_MBOX) += mailbox-altera.o
+
+obj-$(CONFIG_BCM2835_MBOX) += bcm2835-mailbox.o
-diff -Nur linux-4.1.22.orig/drivers/mailbox/bcm2835-mailbox.c linux-4.1.22/drivers/mailbox/bcm2835-mailbox.c
---- linux-4.1.22.orig/drivers/mailbox/bcm2835-mailbox.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/mailbox/bcm2835-mailbox.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mailbox/bcm2835-mailbox.c linux-4.1.23/drivers/mailbox/bcm2835-mailbox.c
+--- linux-4.1.23.orig/drivers/mailbox/bcm2835-mailbox.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/mailbox/bcm2835-mailbox.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2010,2015 Broadcom
@@ -41424,9 +44843,9 @@ diff -Nur linux-4.1.22.orig/drivers/mailbox/bcm2835-mailbox.c linux-4.1.22/drive
+MODULE_AUTHOR("Lubomir Rintel <lkundrak@v3.sk>");
+MODULE_DESCRIPTION("BCM2835 mailbox IPC driver");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/drivers/mailbox/mailbox.c linux-4.1.22/drivers/mailbox/mailbox.c
---- linux-4.1.22.orig/drivers/mailbox/mailbox.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mailbox/mailbox.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mailbox/mailbox.c linux-4.1.23/drivers/mailbox/mailbox.c
+--- linux-4.1.23.orig/drivers/mailbox/mailbox.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mailbox/mailbox.c 2016-05-02 22:53:54.000000000 +0200
@@ -304,13 +304,23 @@
unsigned long flags;
int ret;
@@ -41460,9 +44879,435 @@ diff -Nur linux-4.1.22.orig/drivers/mailbox/mailbox.c linux-4.1.22/drivers/mailb
if (!chan || chan->cl || !try_module_get(mbox->dev->driver->owner)) {
dev_dbg(dev, "%s: mailbox not free\n", __func__);
mutex_unlock(&con_mutex);
-diff -Nur linux-4.1.22.orig/drivers/media/platform/Kconfig linux-4.1.22/drivers/media/platform/Kconfig
---- linux-4.1.22.orig/drivers/media/platform/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/media/platform/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/md/bcache/super.c linux-4.1.23/drivers/md/bcache/super.c
+--- linux-4.1.23.orig/drivers/md/bcache/super.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/md/bcache/super.c 2016-05-02 22:53:54.000000000 +0200
+@@ -1046,12 +1046,8 @@
+ */
+ atomic_set(&dc->count, 1);
+
+- /* Block writeback thread, but spawn it */
+- down_write(&dc->writeback_lock);
+- if (bch_cached_dev_writeback_start(dc)) {
+- up_write(&dc->writeback_lock);
++ if (bch_cached_dev_writeback_start(dc))
+ return -ENOMEM;
+- }
+
+ if (BDEV_STATE(&dc->sb) == BDEV_STATE_DIRTY) {
+ bch_sectors_dirty_init(dc);
+@@ -1063,9 +1059,6 @@
+ bch_cached_dev_run(dc);
+ bcache_device_link(&dc->disk, c, "bdev");
+
+- /* Allow the writeback thread to proceed */
+- up_write(&dc->writeback_lock);
+-
+ pr_info("Caching %s as %s on set %pU",
+ bdevname(dc->bdev, buf), dc->disk.disk->disk_name,
+ dc->disk.c->sb.set_uuid);
+@@ -1404,9 +1397,6 @@
+ struct btree *b;
+ unsigned i;
+
+- if (!c)
+- closure_return(cl);
+-
+ bch_cache_accounting_destroy(&c->accounting);
+
+ kobject_put(&c->internal);
+@@ -1872,12 +1862,11 @@
+ return 0;
+ }
+
+-static int register_cache(struct cache_sb *sb, struct page *sb_page,
++static void register_cache(struct cache_sb *sb, struct page *sb_page,
+ struct block_device *bdev, struct cache *ca)
+ {
+ char name[BDEVNAME_SIZE];
+- const char *err = NULL;
+- int ret = 0;
++ const char *err = "cannot allocate memory";
+
+ memcpy(&ca->sb, sb, sizeof(struct cache_sb));
+ ca->bdev = bdev;
+@@ -1892,35 +1881,27 @@
+ if (blk_queue_discard(bdev_get_queue(ca->bdev)))
+ ca->discard = CACHE_DISCARD(&ca->sb);
+
+- ret = cache_alloc(sb, ca);
+- if (ret != 0)
++ if (cache_alloc(sb, ca) != 0)
+ goto err;
+
+- if (kobject_add(&ca->kobj, &part_to_dev(bdev->bd_part)->kobj, "bcache")) {
+- err = "error calling kobject_add";
+- ret = -ENOMEM;
+- goto out;
+- }
++ err = "error creating kobject";
++ if (kobject_add(&ca->kobj, &part_to_dev(bdev->bd_part)->kobj, "bcache"))
++ goto err;
+
+ mutex_lock(&bch_register_lock);
+ err = register_cache_set(ca);
+ mutex_unlock(&bch_register_lock);
+
+- if (err) {
+- ret = -ENODEV;
+- goto out;
+- }
++ if (err)
++ goto err;
+
+ pr_info("registered cache device %s", bdevname(bdev, name));
+-
+ out:
+ kobject_put(&ca->kobj);
+-
++ return;
+ err:
+- if (err)
+- pr_notice("error opening %s: %s", bdevname(bdev, name), err);
+-
+- return ret;
++ pr_notice("error opening %s: %s", bdevname(bdev, name), err);
++ goto out;
+ }
+
+ /* Global interfaces/init */
+@@ -2018,8 +1999,7 @@
+ if (!ca)
+ goto err_close;
+
+- if (register_cache(sb, sb_page, bdev, ca) != 0)
+- goto err_close;
++ register_cache(sb, sb_page, bdev, ca);
+ }
+ out:
+ if (sb_page)
+diff -Nur linux-4.1.23.orig/drivers/md/dm-thin-metadata.c linux-4.1.23/drivers/md/dm-thin-metadata.c
+--- linux-4.1.23.orig/drivers/md/dm-thin-metadata.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/md/dm-thin-metadata.c 2016-05-02 22:53:54.000000000 +0200
+@@ -1803,8 +1803,5 @@
+
+ void dm_pool_issue_prefetches(struct dm_pool_metadata *pmd)
+ {
+- down_read(&pmd->root_lock);
+- if (!pmd->fail_io)
+- dm_tm_issue_prefetches(pmd->tm);
+- up_read(&pmd->root_lock);
++ dm_tm_issue_prefetches(pmd->tm);
+ }
+diff -Nur linux-4.1.23.orig/drivers/md/dm.c linux-4.1.23/drivers/md/dm.c
+--- linux-4.1.23.orig/drivers/md/dm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/md/dm.c 2016-05-02 22:53:54.000000000 +0200
+@@ -1065,8 +1065,12 @@
+ * back into ->request_fn() could deadlock attempting to grab the
+ * queue lock again.
+ */
+- if (!md->queue->mq_ops && run_queue)
+- blk_run_queue_async(md->queue);
++ if (run_queue) {
++ if (md->queue->mq_ops)
++ blk_mq_run_hw_queues(md->queue, true);
++ else
++ blk_run_queue_async(md->queue);
++ }
+
+ /*
+ * dm_put() must be at the end of this function. See the comment above
+@@ -1292,10 +1296,7 @@
+ struct dm_rq_target_io *tio = tio_from_request(rq);
+
+ tio->error = error;
+- if (!rq->q->mq_ops)
+- blk_complete_request(rq);
+- else
+- blk_mq_complete_request(rq);
++ blk_complete_request(rq);
+ }
+
+ /*
+diff -Nur linux-4.1.23.orig/drivers/md/multipath.c linux-4.1.23/drivers/md/multipath.c
+--- linux-4.1.23.orig/drivers/md/multipath.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/md/multipath.c 2016-05-02 22:53:54.000000000 +0200
+@@ -129,9 +129,7 @@
+ }
+ multipath = conf->multipaths + mp_bh->path;
+
+- bio_init(&mp_bh->bio);
+- __bio_clone_fast(&mp_bh->bio, bio);
+-
++ mp_bh->bio = *bio;
+ mp_bh->bio.bi_iter.bi_sector += multipath->rdev->data_offset;
+ mp_bh->bio.bi_bdev = multipath->rdev->bdev;
+ mp_bh->bio.bi_rw |= REQ_FAILFAST_TRANSPORT;
+diff -Nur linux-4.1.23.orig/drivers/md/raid5.c linux-4.1.23/drivers/md/raid5.c
+--- linux-4.1.23.orig/drivers/md/raid5.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/md/raid5.c 2016-05-02 22:53:54.000000000 +0200
+@@ -2080,14 +2080,6 @@
+ unsigned long cpu;
+ int err = 0;
+
+- /*
+- * Never shrink. And mddev_suspend() could deadlock if this is called
+- * from raid5d. In that case, scribble_disks and scribble_sectors
+- * should equal to new_disks and new_sectors
+- */
+- if (conf->scribble_disks >= new_disks &&
+- conf->scribble_sectors >= new_sectors)
+- return 0;
+ mddev_suspend(conf->mddev);
+ get_online_cpus();
+ for_each_present_cpu(cpu) {
+@@ -2109,10 +2101,6 @@
+ }
+ put_online_cpus();
+ mddev_resume(conf->mddev);
+- if (!err) {
+- conf->scribble_disks = new_disks;
+- conf->scribble_sectors = new_sectors;
+- }
+ return err;
+ }
+
+@@ -4232,6 +4220,7 @@
+ WARN_ON_ONCE(sh->state & ((1 << STRIPE_ACTIVE) |
+ (1 << STRIPE_SYNCING) |
+ (1 << STRIPE_REPLACED) |
++ (1 << STRIPE_PREREAD_ACTIVE) |
+ (1 << STRIPE_DELAYED) |
+ (1 << STRIPE_BIT_DELAY) |
+ (1 << STRIPE_FULL_WRITE) |
+@@ -4246,7 +4235,6 @@
+ (1 << STRIPE_REPLACED)));
+
+ set_mask_bits(&sh->state, ~(STRIPE_EXPAND_SYNC_FLAGS |
+- (1 << STRIPE_PREREAD_ACTIVE) |
+ (1 << STRIPE_DEGRADED)),
+ head_sh->state & (1 << STRIPE_INSYNC));
+
+@@ -6378,12 +6366,6 @@
+ }
+ put_online_cpus();
+
+- if (!err) {
+- conf->scribble_disks = max(conf->raid_disks,
+- conf->previous_raid_disks);
+- conf->scribble_sectors = max(conf->chunk_sectors,
+- conf->prev_chunk_sectors);
+- }
+ return err;
+ }
+
+@@ -6960,8 +6942,8 @@
+ }
+
+ if (discard_supported &&
+- mddev->queue->limits.max_discard_sectors >= (stripe >> 9) &&
+- mddev->queue->limits.discard_granularity >= stripe)
++ mddev->queue->limits.max_discard_sectors >= stripe &&
++ mddev->queue->limits.discard_granularity >= stripe)
+ queue_flag_set_unlocked(QUEUE_FLAG_DISCARD,
+ mddev->queue);
+ else
+diff -Nur linux-4.1.23.orig/drivers/md/raid5.h linux-4.1.23/drivers/md/raid5.h
+--- linux-4.1.23.orig/drivers/md/raid5.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/md/raid5.h 2016-05-02 22:53:54.000000000 +0200
+@@ -501,8 +501,6 @@
+ * conversions
+ */
+ } __percpu *percpu;
+- int scribble_disks;
+- int scribble_sectors;
+ #ifdef CONFIG_HOTPLUG_CPU
+ struct notifier_block cpu_notify;
+ #endif
+diff -Nur linux-4.1.23.orig/drivers/media/i2c/adv7511.c linux-4.1.23/drivers/media/i2c/adv7511.c
+--- linux-4.1.23.orig/drivers/media/i2c/adv7511.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/i2c/adv7511.c 2016-05-02 22:53:54.000000000 +0200
+@@ -1048,23 +1048,12 @@
+ }
+ }
+
+-static void adv7511_notify_no_edid(struct v4l2_subdev *sd)
+-{
+- struct adv7511_state *state = get_adv7511_state(sd);
+- struct adv7511_edid_detect ed;
+-
+- /* We failed to read the EDID, so send an event for this. */
+- ed.present = false;
+- ed.segment = adv7511_rd(sd, 0xc4);
+- v4l2_subdev_notify(sd, ADV7511_EDID_DETECT, (void *)&ed);
+- v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, 0x0);
+-}
+-
+ static void adv7511_edid_handler(struct work_struct *work)
+ {
+ struct delayed_work *dwork = to_delayed_work(work);
+ struct adv7511_state *state = container_of(dwork, struct adv7511_state, edid_handler);
+ struct v4l2_subdev *sd = &state->sd;
++ struct adv7511_edid_detect ed;
+
+ v4l2_dbg(1, debug, sd, "%s:\n", __func__);
+
+@@ -1089,7 +1078,9 @@
+ }
+
+ /* We failed to read the EDID, so send an event for this. */
+- adv7511_notify_no_edid(sd);
++ ed.present = false;
++ ed.segment = adv7511_rd(sd, 0xc4);
++ v4l2_subdev_notify(sd, ADV7511_EDID_DETECT, (void *)&ed);
+ v4l2_dbg(1, debug, sd, "%s: no edid found\n", __func__);
+ }
+
+@@ -1160,6 +1151,7 @@
+ /* update read only ctrls */
+ v4l2_ctrl_s_ctrl(state->hotplug_ctrl, adv7511_have_hotplug(sd) ? 0x1 : 0x0);
+ v4l2_ctrl_s_ctrl(state->rx_sense_ctrl, adv7511_have_rx_sense(sd) ? 0x1 : 0x0);
++ v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, state->edid.segments ? 0x1 : 0x0);
+
+ if ((status & MASK_ADV7511_HPD_DETECT) && ((status & MASK_ADV7511_MSEN_DETECT) || state->edid.segments)) {
+ v4l2_dbg(1, debug, sd, "%s: hotplug and (rx-sense or edid)\n", __func__);
+@@ -1189,7 +1181,6 @@
+ }
+ adv7511_s_power(sd, false);
+ memset(&state->edid, 0, sizeof(struct adv7511_state_edid));
+- adv7511_notify_no_edid(sd);
+ }
+ }
+
+@@ -1266,7 +1257,6 @@
+ }
+ /* one more segment read ok */
+ state->edid.segments = segment + 1;
+- v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, 0x1);
+ if (((state->edid.data[0x7e] >> 1) + 1) > state->edid.segments) {
+ /* Request next EDID segment */
+ v4l2_dbg(1, debug, sd, "%s: request segment %d\n", __func__, state->edid.segments);
+@@ -1286,6 +1276,7 @@
+ ed.present = true;
+ ed.segment = 0;
+ state->edid_detect_counter++;
++ v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, state->edid.segments ? 0x1 : 0x0);
+ v4l2_subdev_notify(sd, ADV7511_EDID_DETECT, (void *)&ed);
+ return ed.present;
+ }
+diff -Nur linux-4.1.23.orig/drivers/media/pci/bt8xx/bttv-driver.c linux-4.1.23/drivers/media/pci/bt8xx/bttv-driver.c
+--- linux-4.1.23.orig/drivers/media/pci/bt8xx/bttv-driver.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/pci/bt8xx/bttv-driver.c 2016-05-02 22:53:54.000000000 +0200
+@@ -2334,19 +2334,6 @@
+ return 0;
+ }
+
+-static void bttv_get_width_mask_vid_cap(const struct bttv_format *fmt,
+- unsigned int *width_mask,
+- unsigned int *width_bias)
+-{
+- if (fmt->flags & FORMAT_FLAGS_PLANAR) {
+- *width_mask = ~15; /* width must be a multiple of 16 pixels */
+- *width_bias = 8; /* nearest */
+- } else {
+- *width_mask = ~3; /* width must be a multiple of 4 pixels */
+- *width_bias = 2; /* nearest */
+- }
+-}
+-
+ static int bttv_try_fmt_vid_cap(struct file *file, void *priv,
+ struct v4l2_format *f)
+ {
+@@ -2356,7 +2343,6 @@
+ enum v4l2_field field;
+ __s32 width, height;
+ __s32 height2;
+- unsigned int width_mask, width_bias;
+ int rc;
+
+ fmt = format_by_fourcc(f->fmt.pix.pixelformat);
+@@ -2389,9 +2375,9 @@
+ width = f->fmt.pix.width;
+ height = f->fmt.pix.height;
+
+- bttv_get_width_mask_vid_cap(fmt, &width_mask, &width_bias);
+ rc = limit_scaled_size_lock(fh, &width, &height, field,
+- width_mask, width_bias,
++ /* width_mask: 4 pixels */ ~3,
++ /* width_bias: nearest */ 2,
+ /* adjust_size */ 1,
+ /* adjust_crop */ 0);
+ if (0 != rc)
+@@ -2424,7 +2410,6 @@
+ struct bttv_fh *fh = priv;
+ struct bttv *btv = fh->btv;
+ __s32 width, height;
+- unsigned int width_mask, width_bias;
+ enum v4l2_field field;
+
+ retval = bttv_switch_type(fh, f->type);
+@@ -2439,10 +2424,9 @@
+ height = f->fmt.pix.height;
+ field = f->fmt.pix.field;
+
+- fmt = format_by_fourcc(f->fmt.pix.pixelformat);
+- bttv_get_width_mask_vid_cap(fmt, &width_mask, &width_bias);
+ retval = limit_scaled_size_lock(fh, &width, &height, f->fmt.pix.field,
+- width_mask, width_bias,
++ /* width_mask: 4 pixels */ ~3,
++ /* width_bias: nearest */ 2,
+ /* adjust_size */ 1,
+ /* adjust_crop */ 1);
+ if (0 != retval)
+@@ -2450,6 +2434,8 @@
+
+ f->fmt.pix.field = field;
+
++ fmt = format_by_fourcc(f->fmt.pix.pixelformat);
++
+ /* update our state informations */
+ fh->fmt = fmt;
+ fh->cap.field = f->fmt.pix.field;
+diff -Nur linux-4.1.23.orig/drivers/media/pci/saa7134/saa7134-video.c linux-4.1.23/drivers/media/pci/saa7134/saa7134-video.c
+--- linux-4.1.23.orig/drivers/media/pci/saa7134/saa7134-video.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/pci/saa7134/saa7134-video.c 2016-05-02 22:53:54.000000000 +0200
+@@ -1211,13 +1211,10 @@
+ f->fmt.pix.height = dev->height;
+ f->fmt.pix.field = dev->field;
+ f->fmt.pix.pixelformat = dev->fmt->fourcc;
+- if (dev->fmt->planar)
+- f->fmt.pix.bytesperline = f->fmt.pix.width;
+- else
+- f->fmt.pix.bytesperline =
+- (f->fmt.pix.width * dev->fmt->depth) / 8;
++ f->fmt.pix.bytesperline =
++ (f->fmt.pix.width * dev->fmt->depth) >> 3;
+ f->fmt.pix.sizeimage =
+- (f->fmt.pix.height * f->fmt.pix.width * dev->fmt->depth) / 8;
++ f->fmt.pix.height * f->fmt.pix.bytesperline;
+ f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
+ return 0;
+ }
+@@ -1293,13 +1290,10 @@
+ if (f->fmt.pix.height > maxh)
+ f->fmt.pix.height = maxh;
+ f->fmt.pix.width &= ~0x03;
+- if (fmt->planar)
+- f->fmt.pix.bytesperline = f->fmt.pix.width;
+- else
+- f->fmt.pix.bytesperline =
+- (f->fmt.pix.width * fmt->depth) / 8;
++ f->fmt.pix.bytesperline =
++ (f->fmt.pix.width * fmt->depth) >> 3;
+ f->fmt.pix.sizeimage =
+- (f->fmt.pix.height * f->fmt.pix.width * fmt->depth) / 8;
++ f->fmt.pix.height * f->fmt.pix.bytesperline;
+ f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
+
+ return 0;
+diff -Nur linux-4.1.23.orig/drivers/media/platform/Kconfig linux-4.1.23/drivers/media/platform/Kconfig
+--- linux-4.1.23.orig/drivers/media/platform/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/platform/Kconfig 2016-05-02 22:53:54.000000000 +0200
@@ -11,6 +11,8 @@
if V4L_PLATFORM_DRIVERS
@@ -41472,9 +45317,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/Kconfig linux-4.1.22/drivers/
source "drivers/media/platform/marvell-ccic/Kconfig"
config VIDEO_VIA_CAMERA
-diff -Nur linux-4.1.22.orig/drivers/media/platform/Makefile linux-4.1.22/drivers/media/platform/Makefile
---- linux-4.1.22.orig/drivers/media/platform/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/media/platform/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/Makefile linux-4.1.23/drivers/media/platform/Makefile
+--- linux-4.1.23.orig/drivers/media/platform/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/platform/Makefile 2016-05-02 22:53:54.000000000 +0200
@@ -2,6 +2,8 @@
# Makefile for the video capture/playback device drivers.
#
@@ -41484,9 +45329,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/Makefile linux-4.1.22/drivers
obj-$(CONFIG_VIDEO_TIMBERDALE) += timblogiw.o
obj-$(CONFIG_VIDEO_M32R_AR_M64278) += arv.o
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/Kconfig linux-4.1.22/drivers/media/platform/bcm2835/Kconfig
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/Kconfig linux-4.1.23/drivers/media/platform/bcm2835/Kconfig
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/Kconfig 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,25 @@
+# Broadcom VideoCore IV v4l2 camera support
+
@@ -41513,18 +45358,18 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/Kconfig linux-4.1.22/
+
+
+endif # VIDEO_BM2835
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/Makefile linux-4.1.22/drivers/media/platform/bcm2835/Makefile
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/Makefile linux-4.1.23/drivers/media/platform/bcm2835/Makefile
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/Makefile 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,5 @@
+bcm2835-v4l2-objs := bcm2835-camera.o controls.o mmal-vchiq.o
+
+obj-$(CONFIG_VIDEO_BCM2835_MMAL) += bcm2835-v4l2.o
+
+ccflags-$(CONFIG_VIDEO_BCM2835) += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/bcm2835-camera.c linux-4.1.22/drivers/media/platform/bcm2835/bcm2835-camera.c
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/bcm2835-camera.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/bcm2835-camera.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/bcm2835-camera.c linux-4.1.23/drivers/media/platform/bcm2835/bcm2835-camera.c
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/bcm2835-camera.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/bcm2835-camera.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,1842 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -43368,9 +47213,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/bcm2835-camera.c linu
+
+module_init(bm2835_mmal_init);
+module_exit(bm2835_mmal_exit);
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/bcm2835-camera.h linux-4.1.22/drivers/media/platform/bcm2835/bcm2835-camera.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/bcm2835-camera.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/bcm2835-camera.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/bcm2835-camera.h linux-4.1.23/drivers/media/platform/bcm2835/bcm2835-camera.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/bcm2835-camera.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/bcm2835-camera.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,126 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -43498,9 +47343,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/bcm2835-camera.h linu
+ (pix_fmt)->pixelformat, (pix_fmt)->bytesperline, \
+ (pix_fmt)->sizeimage, (pix_fmt)->colorspace, (pix_fmt)->priv); \
+}
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/controls.c linux-4.1.22/drivers/media/platform/bcm2835/controls.c
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/controls.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/controls.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/controls.c linux-4.1.23/drivers/media/platform/bcm2835/controls.c
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/controls.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/controls.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,1324 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -44826,9 +48671,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/controls.c linux-4.1.
+
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-common.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-common.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-common.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-common.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-common.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-common.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,53 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -44883,9 +48728,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-common.h linux-4
+ u32 u;
+ u32 v;
+};
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-encodings.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-encodings.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-encodings.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-encodings.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-encodings.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-encodings.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-encodings.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-encodings.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,127 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -45014,9 +48859,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-encodings.h linu
+/* @} MmalColorSpace List */
+
+#endif /* MMAL_ENCODINGS_H */
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-common.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg-common.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg-common.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg-common.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg-common.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg-common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg-common.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,50 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -45068,9 +48913,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-common.h lin
+};
+
+#endif /* MMAL_MSG_COMMON_H */
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-format.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg-format.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-format.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg-format.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg-format.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg-format.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg-format.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg-format.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,81 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -45153,9 +48998,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-format.h lin
+};
+
+#endif /* MMAL_MSG_FORMAT_H */
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-port.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg-port.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-port.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg-port.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg-port.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg-port.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg-port.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg-port.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,107 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -45264,9 +49109,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg-port.h linux
+ */
+
+};
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-msg.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-msg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-msg.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,404 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -45672,9 +49517,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-msg.h linux-4.1.
+ u8 payload[MMAL_MSG_MAX_PAYLOAD];
+ } u;
+};
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-parameters.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-parameters.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-parameters.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-parameters.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-parameters.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-parameters.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-parameters.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-parameters.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,656 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -46332,9 +50177,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-parameters.h lin
+ u32 num_effect_params;
+ u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS];
+};
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-vchiq.c linux-4.1.22/drivers/media/platform/bcm2835/mmal-vchiq.c
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-vchiq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-vchiq.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-vchiq.c linux-4.1.23/drivers/media/platform/bcm2835/mmal-vchiq.c
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-vchiq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-vchiq.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,1916 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -48252,9 +52097,9 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-vchiq.c linux-4.
+ kfree(instance);
+ return -ENODEV;
+}
-diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-vchiq.h linux-4.1.22/drivers/media/platform/bcm2835/mmal-vchiq.h
---- linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-vchiq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/media/platform/bcm2835/mmal-vchiq.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-vchiq.h linux-4.1.23/drivers/media/platform/bcm2835/mmal-vchiq.h
+--- linux-4.1.23.orig/drivers/media/platform/bcm2835/mmal-vchiq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/media/platform/bcm2835/mmal-vchiq.h 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,178 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -48434,9 +52279,20 @@ diff -Nur linux-4.1.22.orig/drivers/media/platform/bcm2835/mmal-vchiq.h linux-4.
+ struct mmal_buffer *buf);
+
+#endif /* MMAL_VCHIQ_H */
-diff -Nur linux-4.1.22.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-4.1.22/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
---- linux-4.1.22.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/tuners/si2157.c linux-4.1.23/drivers/media/tuners/si2157.c
+--- linux-4.1.23.orig/drivers/media/tuners/si2157.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/tuners/si2157.c 2016-05-02 22:53:54.000000000 +0200
+@@ -167,7 +167,6 @@
+ len = fw->data[fw->size - remaining];
+ if (len > SI2157_ARGLEN) {
+ dev_err(&client->dev, "Bad firmware length\n");
+- ret = -EINVAL;
+ goto err_release_firmware;
+ }
+ memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len);
+diff -Nur linux-4.1.23.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-4.1.23/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+--- linux-4.1.23.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2016-05-02 22:53:54.000000000 +0200
@@ -1755,6 +1755,10 @@
&rtl28xxu_props, "Compro VideoMate U620F", NULL) },
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
@@ -48448,9 +52304,128 @@ diff -Nur linux-4.1.22.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-4.1.22
{ DVB_USB_DEVICE(USB_VID_LEADTEK, 0x6a03,
&rtl28xxu_props, "Leadtek WinFast DTV Dongle mini", NULL) },
{ DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A,
-diff -Nur linux-4.1.22.orig/drivers/mfd/Kconfig linux-4.1.22/drivers/mfd/Kconfig
---- linux-4.1.22.orig/drivers/mfd/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mfd/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/media/usb/pwc/pwc-if.c linux-4.1.23/drivers/media/usb/pwc/pwc-if.c
+--- linux-4.1.23.orig/drivers/media/usb/pwc/pwc-if.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/usb/pwc/pwc-if.c 2016-05-02 22:53:54.000000000 +0200
+@@ -91,7 +91,6 @@
+ { USB_DEVICE(0x0471, 0x0312) },
+ { USB_DEVICE(0x0471, 0x0313) }, /* the 'new' 720K */
+ { USB_DEVICE(0x0471, 0x0329) }, /* Philips SPC 900NC PC Camera */
+- { USB_DEVICE(0x0471, 0x032C) }, /* Philips SPC 880NC PC Camera */
+ { USB_DEVICE(0x069A, 0x0001) }, /* Askey */
+ { USB_DEVICE(0x046D, 0x08B0) }, /* Logitech QuickCam Pro 3000 */
+ { USB_DEVICE(0x046D, 0x08B1) }, /* Logitech QuickCam Notebook Pro */
+@@ -803,11 +802,6 @@
+ name = "Philips SPC 900NC webcam";
+ type_id = 740;
+ break;
+- case 0x032C:
+- PWC_INFO("Philips SPC 880NC USB webcam detected.\n");
+- name = "Philips SPC 880NC webcam";
+- type_id = 740;
+- break;
+ default:
+ return -ENODEV;
+ break;
+diff -Nur linux-4.1.23.orig/drivers/media/usb/usbvision/usbvision-video.c linux-4.1.23/drivers/media/usb/usbvision/usbvision-video.c
+--- linux-4.1.23.orig/drivers/media/usb/usbvision/usbvision-video.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/usb/usbvision/usbvision-video.c 2016-05-02 22:53:54.000000000 +0200
+@@ -1524,23 +1524,9 @@
+
+ if (usbvision_device_data[model].interface >= 0)
+ interface = &dev->actconfig->interface[usbvision_device_data[model].interface]->altsetting[0];
+- else if (ifnum < dev->actconfig->desc.bNumInterfaces)
++ else
+ interface = &dev->actconfig->interface[ifnum]->altsetting[0];
+- else {
+- dev_err(&intf->dev, "interface %d is invalid, max is %d\n",
+- ifnum, dev->actconfig->desc.bNumInterfaces - 1);
+- ret = -ENODEV;
+- goto err_usb;
+- }
+-
+- if (interface->desc.bNumEndpoints < 2) {
+- dev_err(&intf->dev, "interface %d has %d endpoints, but must"
+- " have minimum 2\n", ifnum, interface->desc.bNumEndpoints);
+- ret = -ENODEV;
+- goto err_usb;
+- }
+ endpoint = &interface->endpoint[1].desc;
+-
+ if (!usb_endpoint_xfer_isoc(endpoint)) {
+ dev_err(&intf->dev, "%s: interface %d. has non-ISO endpoint!\n",
+ __func__, ifnum);
+diff -Nur linux-4.1.23.orig/drivers/media/v4l2-core/v4l2-compat-ioctl32.c linux-4.1.23/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
+--- linux-4.1.23.orig/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 2016-05-02 22:53:54.000000000 +0200
+@@ -394,8 +394,7 @@
+ get_user(kp->index, &up->index) ||
+ get_user(kp->type, &up->type) ||
+ get_user(kp->flags, &up->flags) ||
+- get_user(kp->memory, &up->memory) ||
+- get_user(kp->length, &up->length))
++ get_user(kp->memory, &up->memory))
+ return -EFAULT;
+
+ if (V4L2_TYPE_IS_OUTPUT(kp->type))
+@@ -407,6 +406,9 @@
+ return -EFAULT;
+
+ if (V4L2_TYPE_IS_MULTIPLANAR(kp->type)) {
++ if (get_user(kp->length, &up->length))
++ return -EFAULT;
++
+ num_planes = kp->length;
+ if (num_planes == 0) {
+ kp->m.planes = NULL;
+@@ -439,14 +441,16 @@
+ } else {
+ switch (kp->memory) {
+ case V4L2_MEMORY_MMAP:
+- if (get_user(kp->m.offset, &up->m.offset))
++ if (get_user(kp->length, &up->length) ||
++ get_user(kp->m.offset, &up->m.offset))
+ return -EFAULT;
+ break;
+ case V4L2_MEMORY_USERPTR:
+ {
+ compat_long_t tmp;
+
+- if (get_user(tmp, &up->m.userptr))
++ if (get_user(kp->length, &up->length) ||
++ get_user(tmp, &up->m.userptr))
+ return -EFAULT;
+
+ kp->m.userptr = (unsigned long)compat_ptr(tmp);
+@@ -488,8 +492,7 @@
+ copy_to_user(&up->timecode, &kp->timecode, sizeof(struct v4l2_timecode)) ||
+ put_user(kp->sequence, &up->sequence) ||
+ put_user(kp->reserved2, &up->reserved2) ||
+- put_user(kp->reserved, &up->reserved) ||
+- put_user(kp->length, &up->length))
++ put_user(kp->reserved, &up->reserved))
+ return -EFAULT;
+
+ if (V4L2_TYPE_IS_MULTIPLANAR(kp->type)) {
+@@ -512,11 +515,13 @@
+ } else {
+ switch (kp->memory) {
+ case V4L2_MEMORY_MMAP:
+- if (put_user(kp->m.offset, &up->m.offset))
++ if (put_user(kp->length, &up->length) ||
++ put_user(kp->m.offset, &up->m.offset))
+ return -EFAULT;
+ break;
+ case V4L2_MEMORY_USERPTR:
+- if (put_user(kp->m.userptr, &up->m.userptr))
++ if (put_user(kp->length, &up->length) ||
++ put_user(kp->m.userptr, &up->m.userptr))
+ return -EFAULT;
+ break;
+ case V4L2_MEMORY_OVERLAY:
+diff -Nur linux-4.1.23.orig/drivers/mfd/Kconfig linux-4.1.23/drivers/mfd/Kconfig
+--- linux-4.1.23.orig/drivers/mfd/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mfd/Kconfig 2016-05-02 22:53:54.000000000 +0200
@@ -10,6 +10,14 @@
select IRQ_DOMAIN
default n
@@ -48466,18 +52441,18 @@ diff -Nur linux-4.1.22.orig/drivers/mfd/Kconfig linux-4.1.22/drivers/mfd/Kconfig
config MFD_CS5535
tristate "AMD CS5535 and CS5536 southbridge core functions"
select MFD_CORE
-diff -Nur linux-4.1.22.orig/drivers/mfd/Makefile linux-4.1.22/drivers/mfd/Makefile
---- linux-4.1.22.orig/drivers/mfd/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mfd/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mfd/Makefile linux-4.1.23/drivers/mfd/Makefile
+--- linux-4.1.23.orig/drivers/mfd/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mfd/Makefile 2016-05-02 22:53:54.000000000 +0200
@@ -185,3 +185,5 @@
intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o
obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o
obj-$(CONFIG_MFD_MT6397) += mt6397-core.o
+
+obj-$(CONFIG_MFD_RPISENSE_CORE) += rpisense-core.o
-diff -Nur linux-4.1.22.orig/drivers/mfd/rpisense-core.c linux-4.1.22/drivers/mfd/rpisense-core.c
---- linux-4.1.22.orig/drivers/mfd/rpisense-core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/mfd/rpisense-core.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mfd/rpisense-core.c linux-4.1.23/drivers/mfd/rpisense-core.c
+--- linux-4.1.23.orig/drivers/mfd/rpisense-core.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/mfd/rpisense-core.c 2016-05-02 22:53:54.000000000 +0200
@@ -0,0 +1,157 @@
+/*
+ * Raspberry Pi Sense HAT core driver
@@ -48636,9 +52611,9 @@ diff -Nur linux-4.1.22.orig/drivers/mfd/rpisense-core.c linux-4.1.22/drivers/mfd
+MODULE_AUTHOR("Serge Schneider <serge@raspberrypi.org>");
+MODULE_LICENSE("GPL");
+
-diff -Nur linux-4.1.22.orig/drivers/misc/Kconfig linux-4.1.22/drivers/misc/Kconfig
---- linux-4.1.22.orig/drivers/misc/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/misc/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/Kconfig linux-4.1.23/drivers/misc/Kconfig
+--- linux-4.1.23.orig/drivers/misc/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/misc/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -10,6 +10,14 @@
select INPUT_POLLDEV
default n
@@ -48662,9 +52637,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/Kconfig linux-4.1.22/drivers/misc/Kconf
source "drivers/misc/mic/Kconfig"
source "drivers/misc/genwqe/Kconfig"
source "drivers/misc/echo/Kconfig"
-diff -Nur linux-4.1.22.orig/drivers/misc/Makefile linux-4.1.22/drivers/misc/Makefile
---- linux-4.1.22.orig/drivers/misc/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/misc/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/Makefile linux-4.1.23/drivers/misc/Makefile
+--- linux-4.1.23.orig/drivers/misc/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/misc/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -9,6 +9,7 @@
obj-$(CONFIG_INTEL_MID_PTI) += pti.o
obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o
@@ -48681,9 +52656,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/Makefile linux-4.1.22/drivers/misc/Make
obj-y += mic/
obj-$(CONFIG_GENWQE) += genwqe/
obj-$(CONFIG_ECHO) += echo/
-diff -Nur linux-4.1.22.orig/drivers/misc/bcm2835_smi.c linux-4.1.22/drivers/misc/bcm2835_smi.c
---- linux-4.1.22.orig/drivers/misc/bcm2835_smi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/bcm2835_smi.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/bcm2835_smi.c linux-4.1.23/drivers/misc/bcm2835_smi.c
+--- linux-4.1.23.orig/drivers/misc/bcm2835_smi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/bcm2835_smi.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,985 @@
+/**
+ * Broadcom Secondary Memory Interface driver
@@ -49670,9 +53645,35 @@ diff -Nur linux-4.1.22.orig/drivers/misc/bcm2835_smi.c linux-4.1.22/drivers/misc
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Device driver for BCM2835's secondary memory interface");
+MODULE_AUTHOR("Luke Wren <luke@raspberrypi.org>");
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/Kconfig linux-4.1.22/drivers/misc/vc04_services/Kconfig
---- linux-4.1.22.orig/drivers/misc/vc04_services/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/Kconfig 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/mei/bus.c linux-4.1.23/drivers/misc/mei/bus.c
+--- linux-4.1.23.orig/drivers/misc/mei/bus.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/misc/mei/bus.c 2016-05-02 22:53:55.000000000 +0200
+@@ -238,11 +238,6 @@
+ dev = cl->dev;
+
+ mutex_lock(&dev->device_lock);
+- if (dev->dev_state != MEI_DEV_ENABLED) {
+- rets = -ENODEV;
+- goto out;
+- }
+-
+ if (!mei_cl_is_connected(cl)) {
+ rets = -ENODEV;
+ goto out;
+@@ -292,10 +287,6 @@
+ dev = cl->dev;
+
+ mutex_lock(&dev->device_lock);
+- if (dev->dev_state != MEI_DEV_ENABLED) {
+- rets = -ENODEV;
+- goto out;
+- }
+
+ cb = mei_cl_read_cb(cl, NULL);
+ if (cb)
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/Kconfig linux-4.1.23/drivers/misc/vc04_services/Kconfig
+--- linux-4.1.23.orig/drivers/misc/vc04_services/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,9 @@
+config BCM2708_VCHIQ
+ tristate "Videocore VCHIQ"
@@ -49683,9 +53684,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/Kconfig linux-4.1.22/driv
+ BCM2708 family of products.
+ Defaults to Y when the Broadcom Videocore services
+ are included in the build, N otherwise.
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/Makefile linux-4.1.22/drivers/misc/vc04_services/Makefile
---- linux-4.1.22.orig/drivers/misc/vc04_services/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/Makefile 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/Makefile linux-4.1.23/drivers/misc/vc04_services/Makefile
+--- linux-4.1.23.orig/drivers/misc/vc04_services/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,14 @@
+obj-$(CONFIG_BCM2708_VCHIQ) += vchiq.o
+
@@ -49701,9 +53702,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/Makefile linux-4.1.22/dri
+
+ccflags-y += -DVCOS_VERIFY_BKPTS=1 -Idrivers/misc/vc04_services -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000
+
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/connections/connection.h linux-4.1.22/drivers/misc/vc04_services/interface/vchi/connections/connection.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/connections/connection.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchi/connections/connection.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/connections/connection.h linux-4.1.23/drivers/misc/vc04_services/interface/vchi/connections/connection.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/connections/connection.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchi/connections/connection.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,328 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -50033,9 +54034,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/connection
+#endif /* CONNECTION_H_ */
+
+/****************************** End of file **********************************/
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h linux-4.1.22/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h linux-4.1.23/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -50241,9 +54242,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/message_dr
+#endif // _VCHI_MESSAGE_H_
+
+/****************************** End of file ***********************************/
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi.h linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi.h linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,378 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -50623,9 +54624,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi.h lin
+#endif /* VCHI_H_ */
+
+/****************************** End of file **********************************/
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,224 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -50851,9 +54852,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h
+#endif /* VCHI_CFG_H_ */
+
+/****************************** End of file **********************************/
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -50926,9 +54927,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg_i
+//#define VCHI_RX_NANOLOCKS
+
+#endif /*VCHI_CFG_INTERNAL_H_*/
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_common.h linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_common.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_common.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_common.h linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_common.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_common.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -51105,9 +55106,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_commo
+
+
+#endif // VCHI_COMMON_H_
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_mh.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_mh.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -51151,9 +55152,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchi/vchi_mh.h
+#define VCHI_MEM_HANDLE_INVALID 0
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -51195,9 +55196,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+#include "vchiq_util.h"
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -51241,9 +55242,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+#define VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX 1
+
+#endif /* VCHIQ_2835_H */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,580 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -51825,10 +55826,10 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+
+ kfree(pagelist);
+}
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 2016-04-29 18:02:46.000000000 +0200
-@@ -0,0 +1,2903 @@
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 2016-05-02 22:53:55.000000000 +0200
+@@ -0,0 +1,2910 @@
+/**
+ * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved.
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -52055,7 +56056,7 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ } else if (instance->closing) {
+ vchiq_log_info(vchiq_arm_log_level,
+ "service_callback closing");
-+ return VCHIQ_ERROR;
++ return VCHIQ_SUCCESS;
+ }
+ DEBUG_TRACE(SERVICE_CALLBACK_LINE);
+ }
@@ -52110,6 +56111,7 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ USER_SERVICE_T *user_service;
+ VCHIQ_SERVICE_T *service;
+ VCHIQ_INSTANCE_T instance;
++ int skip_completion = 0;
+ DEBUG_INITIALISE(g_state.local)
+
+ DEBUG_TRACE(SERVICE_CALLBACK_LINE);
@@ -52176,9 +56178,6 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ user_service->msg_queue[user_service->msg_insert &
+ (MSG_QUEUE_SIZE - 1)] = header;
+ user_service->msg_insert++;
-+ spin_unlock(&msg_queue_spinlock);
-+
-+ up(&user_service->insert_event);
+
+ /* If there is a thread waiting in DEQUEUE_MESSAGE, or if
+ ** there is a MESSAGE_AVAILABLE in the completion queue then
@@ -52187,13 +56186,22 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ if (((user_service->message_available_pos -
+ instance->completion_remove) >= 0) ||
+ user_service->dequeue_pending) {
-+ DEBUG_TRACE(SERVICE_CALLBACK_LINE);
+ user_service->dequeue_pending = 0;
-+ return VCHIQ_SUCCESS;
++ skip_completion = 1;
+ }
+
++ spin_unlock(&msg_queue_spinlock);
++
++ up(&user_service->insert_event);
++
+ header = NULL;
+ }
++
++ if (skip_completion) {
++ DEBUG_TRACE(SERVICE_CALLBACK_LINE);
++ return VCHIQ_SUCCESS;
++ }
++
+ DEBUG_TRACE(SERVICE_CALLBACK_LINE);
+
+ return add_completion(instance, reason, header, user_service,
@@ -54732,9 +58740,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Broadcom Corporation");
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved.
@@ -54956,9 +58964,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+
+
+#endif /* VCHIQ_ARM_H */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -54997,9 +59005,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+const char *vchiq_get_build_version(void);
+const char *vchiq_get_build_time(void);
+const char *vchiq_get_build_date(void);
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2010-2014 Broadcom. All rights reserved.
@@ -55070,9 +59078,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+#endif
+
+#endif /* VCHIQ_CFG_H */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -55194,9 +59202,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ mutex_unlock(&g_connected_mutex);
+}
+EXPORT_SYMBOL(vchiq_add_connected_callback);
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -55248,9 +59256,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+void vchiq_call_connected_callbacks(void);
+
+#endif /* VCHIQ_CONNECTED_H */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,3929 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -59181,9 +63189,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ numBytes = 0;
+ }
+}
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 2016-04-29 18:02:46.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,712 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -59897,9 +63905,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ size_t numBytes);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,383 @@
+/**
+ * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved.
@@ -60284,9 +64292,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+}
+
+#endif /* CONFIG_DEBUG_FS */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved.
@@ -60340,9 +64348,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance);
+
+#endif /* VCHIQ_DEBUGFS_H */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,87 @@
+#!/usr/bin/perl -w
+
@@ -60431,9 +64439,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ return vchiq_build_time;
+}
+EOF
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,189 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -60624,9 +64632,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ short *peer_version);
+
+#endif /* VCHIQ_IF_H */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -60759,9 +64767,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+#define VCHIQ_IOC_MAX 17
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,458 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -61221,9 +65229,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+
+ return status;
+}
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -61294,9 +65302,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+#define mutex_lock_interruptible mutex_lock_interruptible_killable
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -61369,9 +65377,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ const VCHIQ_PLATFORM_DATA_T * platform_data);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -61431,9 +65439,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+} FRAGMENTS_T;
+
+#endif /* VCHIQ_PAGELIST_H */
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,860 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -62295,9 +66303,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+ return ret;
+}
+EXPORT_SYMBOL(vchi_service_release);
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,156 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -62455,9 +66463,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+
+ return header;
+}
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -62541,9 +66549,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+extern VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c
---- linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c
+--- linux-4.1.23.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -62604,9 +66612,9 @@ diff -Nur linux-4.1.22.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq
+{
+ return vchiq_build_time;
+}
-diff -Nur linux-4.1.22.orig/drivers/mmc/core/quirks.c linux-4.1.22/drivers/mmc/core/quirks.c
---- linux-4.1.22.orig/drivers/mmc/core/quirks.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mmc/core/quirks.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mmc/core/quirks.c linux-4.1.23/drivers/mmc/core/quirks.c
+--- linux-4.1.23.orig/drivers/mmc/core/quirks.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mmc/core/quirks.c 2016-05-02 22:53:55.000000000 +0200
@@ -71,6 +71,7 @@
void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table)
@@ -62626,9 +66634,9 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/core/quirks.c linux-4.1.22/drivers/mmc/c
+ card->quirks |= MMC_QUIRK_BLK_NO_CMD23;
}
EXPORT_SYMBOL(mmc_fixup_device);
-diff -Nur linux-4.1.22.orig/drivers/mmc/host/Kconfig linux-4.1.22/drivers/mmc/host/Kconfig
---- linux-4.1.22.orig/drivers/mmc/host/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mmc/host/Kconfig 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/Kconfig linux-4.1.23/drivers/mmc/host/Kconfig
+--- linux-4.1.23.orig/drivers/mmc/host/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mmc/host/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -4,6 +4,45 @@
comment "MMC/SD/SDIO Host Controller Drivers"
@@ -62675,9 +66683,9 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/Kconfig linux-4.1.22/drivers/mmc/ho
config MMC_ARMMMCI
tristate "ARM AMBA Multimedia Card Interface support"
depends on ARM_AMBA
-diff -Nur linux-4.1.22.orig/drivers/mmc/host/Makefile linux-4.1.22/drivers/mmc/host/Makefile
---- linux-4.1.22.orig/drivers/mmc/host/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mmc/host/Makefile 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/Makefile linux-4.1.23/drivers/mmc/host/Makefile
+--- linux-4.1.23.orig/drivers/mmc/host/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mmc/host/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -18,6 +18,8 @@
obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o
obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci_f_sdh30.o
@@ -62687,9 +66695,36 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/Makefile linux-4.1.22/drivers/mmc/h
obj-$(CONFIG_MMC_WBSD) += wbsd.o
obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
obj-$(CONFIG_MMC_OMAP) += omap.o
-diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-mmc.c linux-4.1.22/drivers/mmc/host/bcm2835-mmc.c
---- linux-4.1.22.orig/drivers/mmc/host/bcm2835-mmc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/mmc/host/bcm2835-mmc.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/atmel-mci.c linux-4.1.23/drivers/mmc/host/atmel-mci.c
+--- linux-4.1.23.orig/drivers/mmc/host/atmel-mci.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mmc/host/atmel-mci.c 2016-05-02 22:53:55.000000000 +0200
+@@ -2281,23 +2281,6 @@
+ {
+ host->dma.chan = dma_request_slave_channel_reason(&host->pdev->dev,
+ "rxtx");
+-
+- if (PTR_ERR(host->dma.chan) == -ENODEV) {
+- struct mci_platform_data *pdata = host->pdev->dev.platform_data;
+- dma_cap_mask_t mask;
+-
+- if (!pdata || !pdata->dma_filter)
+- return -ENODEV;
+-
+- dma_cap_zero(mask);
+- dma_cap_set(DMA_SLAVE, mask);
+-
+- host->dma.chan = dma_request_channel(mask, pdata->dma_filter,
+- pdata->dma_slave);
+- if (!host->dma.chan)
+- host->dma.chan = ERR_PTR(-ENODEV);
+- }
+-
+ if (IS_ERR(host->dma.chan))
+ return PTR_ERR(host->dma.chan);
+
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/bcm2835-mmc.c linux-4.1.23/drivers/mmc/host/bcm2835-mmc.c
+--- linux-4.1.23.orig/drivers/mmc/host/bcm2835-mmc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/mmc/host/bcm2835-mmc.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1588 @@
+/*
+ * BCM2835 MMC host driver.
@@ -64279,10 +68314,10 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-mmc.c linux-4.1.22/drivers/
+MODULE_DESCRIPTION("BCM2835 SDHCI driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Gellert Weisz");
-diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drivers/mmc/host/bcm2835-sdhost.c
---- linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/mmc/host/bcm2835-sdhost.c 2016-04-29 18:02:47.000000000 +0200
-@@ -0,0 +1,2122 @@
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.23/drivers/mmc/host/bcm2835-sdhost.c
+--- linux-4.1.23.orig/drivers/mmc/host/bcm2835-sdhost.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/mmc/host/bcm2835-sdhost.c 2016-05-02 22:53:55.000000000 +0200
+@@ -0,0 +1,2159 @@
+/*
+ * BCM2835 SD host driver.
+ *
@@ -64335,6 +68370,7 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+#include <linux/of_dma.h>
+#include <linux/time.h>
+#include <linux/workqueue.h>
++#include <soc/bcm2835/raspberrypi-firmware.h>
+
+#define DRIVER_NAME "sdhost-bcm2835"
+
@@ -64475,6 +68511,8 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ unsigned int use_sbc:1; /* Send CMD23 */
+
+ unsigned int debug:1; /* Enable debug output */
++ unsigned int firmware_sets_cdiv:1; /* Let the firmware manage the clock */
++ unsigned int reset_clock:1; /* Reset the clock fore the next request */
+
+ /*DMA part*/
+ struct dma_chan *dma_chan_rxtx; /* DMA channel for reads and writes */
@@ -64722,7 +68760,7 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ host->clock = 0;
+ host->sectors = 0;
+ bcm2835_sdhost_write(host, host->hcfg, SDHCFG);
-+ bcm2835_sdhost_write(host, host->cdiv, SDCDIV);
++ bcm2835_sdhost_write(host, SDCDIV_MAX_CDIV, SDCDIV);
+ mmiowb();
+}
+
@@ -65795,6 +69833,7 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+{
+ int div = 0; /* Initialized for compiler warning */
+ unsigned int input_clock = clock;
++ unsigned long flags;
+
+ if (host->debug)
+ pr_info("%s: set_clock(%d)\n", mmc_hostname(host->mmc), clock);
@@ -65826,62 +69865,84 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+
+ host->mmc->actual_clock = 0;
+
-+ if (clock < 100000) {
-+ /* Can't stop the clock, but make it as slow as possible
-+ * to show willing
-+ */
-+ host->cdiv = SDCDIV_MAX_CDIV;
-+ bcm2835_sdhost_write(host, host->cdiv, SDCDIV);
-+ return;
-+ }
++ if (host->firmware_sets_cdiv) {
++ u32 msg[3] = { clock, 0, 0 };
+
-+ div = host->max_clk / clock;
-+ if (div < 2)
-+ div = 2;
-+ if ((host->max_clk / div) > clock)
-+ div++;
-+ div -= 2;
++ rpi_firmware_property(rpi_firmware_get(NULL),
++ RPI_FIRMWARE_SET_SDHOST_CLOCK,
++ &msg, sizeof(msg));
+
-+ if (div > SDCDIV_MAX_CDIV)
-+ div = SDCDIV_MAX_CDIV;
++ clock = max(msg[1], msg[2]);
++ spin_lock_irqsave(&host->lock, flags);
++ } else {
++ spin_lock_irqsave(&host->lock, flags);
++ if (clock < 100000) {
++ /* Can't stop the clock, but make it as slow as
++ * possible to show willing
++ */
++ host->cdiv = SDCDIV_MAX_CDIV;
++ bcm2835_sdhost_write(host, host->cdiv, SDCDIV);
++ mmiowb();
++ spin_unlock_irqrestore(&host->lock, flags);
++ return;
++ }
+
-+ clock = host->max_clk / (div + 2);
-+ host->mmc->actual_clock = clock;
++ div = host->max_clk / clock;
++ if (div < 2)
++ div = 2;
++ if ((host->max_clk / div) > clock)
++ div++;
++ div -= 2;
++
++ if (div > SDCDIV_MAX_CDIV)
++ div = SDCDIV_MAX_CDIV;
++
++ clock = host->max_clk / (div + 2);
++
++ host->cdiv = div;
++ bcm2835_sdhost_write(host, host->cdiv, SDCDIV);
++
++ if (host->debug)
++ pr_info("%s: clock=%d -> max_clk=%d, cdiv=%x "
++ "(actual clock %d)\n",
++ mmc_hostname(host->mmc), input_clock,
++ host->max_clk, host->cdiv,
++ clock);
++ }
+
+ /* Calibrate some delays */
+
+ host->ns_per_fifo_word = (1000000000/clock) *
+ ((host->mmc->caps & MMC_CAP_4_BIT_DATA) ? 8 : 32);
+
-+ if (clock > input_clock) {
-+ /* Save the closest value, to make it easier
-+ to reduce in the event of error */
-+ host->overclock_50 = (clock/MHZ);
-+
-+ if (clock != host->overclock) {
-+ pr_warn("%s: overclocking to %dHz\n",
-+ mmc_hostname(host->mmc), clock);
-+ host->overclock = clock;
++ if (input_clock == 50 * MHZ) {
++ if (clock > input_clock) {
++ /* Save the closest value, to make it easier
++ to reduce in the event of error */
++ host->overclock_50 = (clock/MHZ);
++
++ if (clock != host->overclock) {
++ pr_warn("%s: overclocking to %dHz\n",
++ mmc_hostname(host->mmc), clock);
++ host->overclock = clock;
++ }
++ } else if (host->overclock) {
++ host->overclock = 0;
++ if (clock == 50 * MHZ)
++ pr_warn("%s: cancelling overclock\n",
++ mmc_hostname(host->mmc));
+ }
+ }
-+ else if (host->overclock)
-+ {
-+ host->overclock = 0;
-+ if (clock == 50 * MHZ)
-+ pr_warn("%s: cancelling overclock\n",
-+ mmc_hostname(host->mmc));
-+ }
-+
-+ host->cdiv = div;
-+ bcm2835_sdhost_write(host, host->cdiv, SDCDIV);
+
+ /* Set the timeout to 500ms */
-+ bcm2835_sdhost_write(host, host->mmc->actual_clock/2, SDTOUT);
++ bcm2835_sdhost_write(host, clock/2, SDTOUT);
+
-+ if (host->debug)
-+ pr_info("%s: clock=%d -> max_clk=%d, cdiv=%x (actual clock %d)\n",
-+ mmc_hostname(host->mmc), input_clock,
-+ host->max_clk, host->cdiv, host->mmc->actual_clock);
++ host->mmc->actual_clock = clock;
++ host->clock = input_clock;
++ host->reset_clock = 0;
++
++ mmiowb();
++ spin_unlock_irqrestore(&host->lock, flags);
+}
+
+static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq)
@@ -65930,6 +69991,9 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ (mrq->data->blocks > host->pio_limit))
+ bcm2835_sdhost_prepare_dma(host, mrq->data);
+
++ if (host->reset_clock)
++ bcm2835_sdhost_set_clock(host, host->clock);
++
+ spin_lock_irqsave(&host->lock, flags);
+
+ WARN_ON(host->mrq != NULL);
@@ -65996,11 +70060,6 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+
+ log_event("IOS<", ios->clock, 0);
+
-+ if (!ios->clock || ios->clock != host->clock) {
-+ bcm2835_sdhost_set_clock(host, ios->clock);
-+ host->clock = ios->clock;
-+ }
-+
+ /* set bus width */
+ host->hcfg &= ~SDHCFG_WIDE_EXT_BUS;
+ if (ios->bus_width == MMC_BUS_WIDTH_4)
@@ -66016,6 +70075,9 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ mmiowb();
+
+ spin_unlock_irqrestore(&host->lock, flags);
++
++ if (!ios->clock || ios->clock != host->clock)
++ bcm2835_sdhost_set_clock(host, ios->clock);
+}
+
+static struct mmc_host_ops bcm2835_sdhost_ops = {
@@ -66087,7 +70149,7 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ host->overclock_50--;
+ pr_warn("%s: reducing overclock due to errors\n",
+ mmc_hostname(host->mmc));
-+ bcm2835_sdhost_set_clock(host,50*MHZ);
++ host->reset_clock = 1;
+ mrq->cmd->error = -EILSEQ;
+ mrq->cmd->retries = 1;
+ }
@@ -66244,6 +70306,7 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ struct resource *iomem;
+ struct bcm2835_host *host;
+ struct mmc_host *mmc;
++ u32 msg[3];
+ int ret;
+
+ pr_debug("bcm2835_sdhost_probe\n");
@@ -66255,7 +70318,6 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ mmc->ops = &bcm2835_sdhost_ops;
+ host = mmc_priv(mmc);
+ host->mmc = mmc;
-+ host->cmd_quick_poll_retries = 0;
+ host->pio_timeout = msecs_to_jiffies(500);
+ host->pio_limit = 1;
+ host->max_delay = 1; /* Warn if over 1ms */
@@ -66344,6 +70406,16 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+ else
+ mmc->caps |= MMC_CAP_4_BIT_DATA;
+
++ msg[0] = 0;
++ msg[1] = ~0;
++ msg[2] = ~0;
++
++ rpi_firmware_property(rpi_firmware_get(NULL),
++ RPI_FIRMWARE_SET_SDHOST_CLOCK,
++ &msg, sizeof(msg));
++
++ host->firmware_sets_cdiv = (msg[1] != ~0);
++
+ ret = bcm2835_sdhost_add_host(host);
+ if (ret)
+ goto err;
@@ -66405,9 +70477,100 @@ diff -Nur linux-4.1.22.orig/drivers/mmc/host/bcm2835-sdhost.c linux-4.1.22/drive
+MODULE_DESCRIPTION("BCM2835 SDHost driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Phil Elwell");
-diff -Nur linux-4.1.22.orig/drivers/mtd/nand/Kconfig linux-4.1.22/drivers/mtd/nand/Kconfig
---- linux-4.1.22.orig/drivers/mtd/nand/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mtd/nand/Kconfig 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/mmc_spi.c linux-4.1.23/drivers/mmc/host/mmc_spi.c
+--- linux-4.1.23.orig/drivers/mmc/host/mmc_spi.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mmc/host/mmc_spi.c 2016-05-02 22:53:55.000000000 +0200
+@@ -1436,12 +1436,6 @@
+ host->pdata->cd_debounce);
+ if (status != 0)
+ goto fail_add_host;
+-
+- /* The platform has a CD GPIO signal that may support
+- * interrupts, so let mmc_gpiod_request_cd_irq() decide
+- * if polling is needed or not.
+- */
+- mmc->caps &= ~MMC_CAP_NEEDS_POLL;
+ mmc_gpiod_request_cd_irq(mmc);
+ }
+
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/sdhci-pxav3.c linux-4.1.23/drivers/mmc/host/sdhci-pxav3.c
+--- linux-4.1.23.orig/drivers/mmc/host/sdhci-pxav3.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mmc/host/sdhci-pxav3.c 2016-05-02 22:53:55.000000000 +0200
+@@ -136,10 +136,6 @@
+ struct resource *res;
+
+ host->quirks |= SDHCI_QUIRK_MISSING_CAPS;
+-
+- host->caps = sdhci_readl(host, SDHCI_CAPABILITIES);
+- host->caps1 = sdhci_readl(host, SDHCI_CAPABILITIES_1);
+-
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
+ "conf-sdio3");
+ if (res) {
+@@ -153,6 +149,7 @@
+ * Configuration register, if the adjustment is not done,
+ * remove them from the capabilities.
+ */
++ host->caps1 = sdhci_readl(host, SDHCI_CAPABILITIES_1);
+ host->caps1 &= ~(SDHCI_SUPPORT_SDR50 | SDHCI_SUPPORT_DDR50);
+
+ dev_warn(&pdev->dev, "conf-sdio3 register not found: disabling SDR50 and DDR50 modes.\nConsider updating your dtb\n");
+@@ -163,6 +160,7 @@
+ * controller has different capabilities than the ones shown
+ * in its registers
+ */
++ host->caps = sdhci_readl(host, SDHCI_CAPABILITIES);
+ if (of_property_read_bool(np, "no-1-8-v")) {
+ host->caps &= ~SDHCI_CAN_VDD_180;
+ host->mmc->caps &= ~MMC_CAP_1_8V_DDR;
+diff -Nur linux-4.1.23.orig/drivers/mmc/host/sdhci.c linux-4.1.23/drivers/mmc/host/sdhci.c
+--- linux-4.1.23.orig/drivers/mmc/host/sdhci.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mmc/host/sdhci.c 2016-05-02 22:53:55.000000000 +0200
+@@ -681,20 +681,9 @@
+ if (!data)
+ target_timeout = cmd->busy_timeout * 1000;
+ else {
+- target_timeout = DIV_ROUND_UP(data->timeout_ns, 1000);
+- if (host->clock && data->timeout_clks) {
+- unsigned long long val;
+-
+- /*
+- * data->timeout_clks is in units of clock cycles.
+- * host->clock is in Hz. target_timeout is in us.
+- * Hence, us = 1000000 * cycles / Hz. Round up.
+- */
+- val = 1000000 * data->timeout_clks;
+- if (do_div(val, host->clock))
+- target_timeout++;
+- target_timeout += val;
+- }
++ target_timeout = data->timeout_ns / 1000;
++ if (host->clock)
++ target_timeout += data->timeout_clks / host->clock;
+ }
+
+ /*
+@@ -3137,14 +3126,14 @@
+ if (caps[0] & SDHCI_TIMEOUT_CLK_UNIT)
+ host->timeout_clk *= 1000;
+
+- if (override_timeout_clk)
+- host->timeout_clk = override_timeout_clk;
+-
+ mmc->max_busy_timeout = host->ops->get_max_timeout_count ?
+ host->ops->get_max_timeout_count(host) : 1 << 27;
+ mmc->max_busy_timeout /= host->timeout_clk;
+ }
+
++ if (override_timeout_clk)
++ host->timeout_clk = override_timeout_clk;
++
+ mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23;
+ mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD;
+
+diff -Nur linux-4.1.23.orig/drivers/mtd/nand/Kconfig linux-4.1.23/drivers/mtd/nand/Kconfig
+--- linux-4.1.23.orig/drivers/mtd/nand/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mtd/nand/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -41,6 +41,13 @@
tristate
default n
@@ -66422,9 +70585,9 @@ diff -Nur linux-4.1.22.orig/drivers/mtd/nand/Kconfig linux-4.1.22/drivers/mtd/na
config MTD_NAND_DENALI
tristate "Support Denali NAND controller"
depends on HAS_DMA
-diff -Nur linux-4.1.22.orig/drivers/mtd/nand/Makefile linux-4.1.22/drivers/mtd/nand/Makefile
---- linux-4.1.22.orig/drivers/mtd/nand/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/mtd/nand/Makefile 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mtd/nand/Makefile linux-4.1.23/drivers/mtd/nand/Makefile
+--- linux-4.1.23.orig/drivers/mtd/nand/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mtd/nand/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -14,6 +14,7 @@
obj-$(CONFIG_MTD_NAND_DENALI_PCI) += denali_pci.o
obj-$(CONFIG_MTD_NAND_DENALI_DT) += denali_dt.o
@@ -66433,9 +70596,9 @@ diff -Nur linux-4.1.22.orig/drivers/mtd/nand/Makefile linux-4.1.22/drivers/mtd/n
obj-$(CONFIG_MTD_NAND_BF5XX) += bf5xx_nand.o
obj-$(CONFIG_MTD_NAND_S3C2410) += s3c2410.o
obj-$(CONFIG_MTD_NAND_DAVINCI) += davinci_nand.o
-diff -Nur linux-4.1.22.orig/drivers/mtd/nand/bcm2835_smi_nand.c linux-4.1.22/drivers/mtd/nand/bcm2835_smi_nand.c
---- linux-4.1.22.orig/drivers/mtd/nand/bcm2835_smi_nand.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/mtd/nand/bcm2835_smi_nand.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mtd/nand/bcm2835_smi_nand.c linux-4.1.23/drivers/mtd/nand/bcm2835_smi_nand.c
+--- linux-4.1.23.orig/drivers/mtd/nand/bcm2835_smi_nand.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/mtd/nand/bcm2835_smi_nand.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,268 @@
+/**
+ * NAND flash driver for Broadcom Secondary Memory Interface
@@ -66705,9 +70868,41 @@ diff -Nur linux-4.1.22.orig/drivers/mtd/nand/bcm2835_smi_nand.c linux-4.1.22/dri
+MODULE_DESCRIPTION
+ ("Driver for NAND chips using Broadcom Secondary Memory Interface");
+MODULE_AUTHOR("Luke Wren <luke@raspberrypi.org>");
-diff -Nur linux-4.1.22.orig/drivers/net/ethernet/microchip/enc28j60.c linux-4.1.22/drivers/net/ethernet/microchip/enc28j60.c
---- linux-4.1.22.orig/drivers/net/ethernet/microchip/enc28j60.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/net/ethernet/microchip/enc28j60.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/mtd/onenand/onenand_base.c linux-4.1.23/drivers/mtd/onenand/onenand_base.c
+--- linux-4.1.23.orig/drivers/mtd/onenand/onenand_base.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/mtd/onenand/onenand_base.c 2016-05-02 22:53:55.000000000 +0200
+@@ -2599,7 +2599,6 @@
+ */
+ static int onenand_block_markbad(struct mtd_info *mtd, loff_t ofs)
+ {
+- struct onenand_chip *this = mtd->priv;
+ int ret;
+
+ ret = onenand_block_isbad(mtd, ofs);
+@@ -2611,7 +2610,7 @@
+ }
+
+ onenand_get_device(mtd, FL_WRITING);
+- ret = this->block_markbad(mtd, ofs);
++ ret = mtd_block_markbad(mtd, ofs);
+ onenand_release_device(mtd);
+ return ret;
+ }
+diff -Nur linux-4.1.23.orig/drivers/net/ethernet/marvell/mvneta.c linux-4.1.23/drivers/net/ethernet/marvell/mvneta.c
+--- linux-4.1.23.orig/drivers/net/ethernet/marvell/mvneta.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/ethernet/marvell/mvneta.c 2016-05-02 22:53:55.000000000 +0200
+@@ -3157,7 +3157,7 @@
+ dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO;
+ dev->hw_features |= dev->features;
+ dev->vlan_features |= dev->features;
+- dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE;
++ dev->priv_flags |= IFF_UNICAST_FLT;
+ dev->gso_max_segs = MVNETA_MAX_TSO_SEGS;
+
+ err = register_netdev(dev);
+diff -Nur linux-4.1.23.orig/drivers/net/ethernet/microchip/enc28j60.c linux-4.1.23/drivers/net/ethernet/microchip/enc28j60.c
+--- linux-4.1.23.orig/drivers/net/ethernet/microchip/enc28j60.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/ethernet/microchip/enc28j60.c 2016-05-02 22:53:55.000000000 +0200
@@ -1630,10 +1630,21 @@
return 0;
}
@@ -66730,9 +70925,50 @@ diff -Nur linux-4.1.22.orig/drivers/net/ethernet/microchip/enc28j60.c linux-4.1.
},
.probe = enc28j60_probe,
.remove = enc28j60_remove,
-diff -Nur linux-4.1.22.orig/drivers/net/usb/smsc95xx.c linux-4.1.22/drivers/net/usb/smsc95xx.c
---- linux-4.1.22.orig/drivers/net/usb/smsc95xx.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/net/usb/smsc95xx.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/irda/irtty-sir.c linux-4.1.23/drivers/net/irda/irtty-sir.c
+--- linux-4.1.23.orig/drivers/net/irda/irtty-sir.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/irda/irtty-sir.c 2016-05-02 22:53:55.000000000 +0200
+@@ -430,6 +430,16 @@
+
+ /* Module stuff handled via irda_ldisc.owner - Jean II */
+
++ /* First make sure we're not already connected. */
++ if (tty->disc_data != NULL) {
++ priv = tty->disc_data;
++ if (priv && priv->magic == IRTTY_MAGIC) {
++ ret = -EEXIST;
++ goto out;
++ }
++ tty->disc_data = NULL; /* ### */
++ }
++
+ /* stop the underlying driver */
+ irtty_stop_receiver(tty, TRUE);
+ if (tty->ops->stop)
+diff -Nur linux-4.1.23.orig/drivers/net/rionet.c linux-4.1.23/drivers/net/rionet.c
+--- linux-4.1.23.orig/drivers/net/rionet.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/rionet.c 2016-05-02 22:53:55.000000000 +0200
+@@ -280,7 +280,7 @@
+ struct net_device *ndev = dev_id;
+ struct rionet_private *rnet = netdev_priv(ndev);
+
+- spin_lock(&rnet->tx_lock);
++ spin_lock(&rnet->lock);
+
+ if (netif_msg_intr(rnet))
+ printk(KERN_INFO
+@@ -299,7 +299,7 @@
+ if (rnet->tx_cnt < RIONET_TX_RING_SIZE)
+ netif_wake_queue(ndev);
+
+- spin_unlock(&rnet->tx_lock);
++ spin_unlock(&rnet->lock);
+ }
+
+ static int rionet_open(struct net_device *ndev)
+diff -Nur linux-4.1.23.orig/drivers/net/usb/smsc95xx.c linux-4.1.23/drivers/net/usb/smsc95xx.c
+--- linux-4.1.23.orig/drivers/net/usb/smsc95xx.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/usb/smsc95xx.c 2016-05-02 22:53:55.000000000 +0200
@@ -59,6 +59,7 @@
#define SUSPEND_SUSPEND3 (0x08)
#define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
@@ -66741,7 +70977,7 @@ diff -Nur linux-4.1.22.orig/drivers/net/usb/smsc95xx.c linux-4.1.22/drivers/net/
struct smsc95xx_priv {
u32 mac_cr;
-@@ -70,10 +71,18 @@
+@@ -70,10 +71,22 @@
u8 suspend_flags;
};
@@ -66758,10 +70994,14 @@ diff -Nur linux-4.1.22.orig/drivers/net/usb/smsc95xx.c linux-4.1.22/drivers/net/
+module_param(macaddr, charp, 0);
+MODULE_PARM_DESC(macaddr, "MAC address");
+
++static int packetsize = 0;
++module_param(packetsize, int, 0644);
++MODULE_PARM_DESC(packetsize, "Override the RX URB packet size");
++
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data, int in_pm)
{
-@@ -763,6 +772,53 @@
+@@ -763,6 +776,53 @@
return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
}
@@ -66815,7 +71055,7 @@ diff -Nur linux-4.1.22.orig/drivers/net/usb/smsc95xx.c linux-4.1.22/drivers/net/
static void smsc95xx_init_mac_address(struct usbnet *dev)
{
/* try reading mac address from EEPROM */
-@@ -775,7 +831,11 @@
+@@ -775,7 +835,11 @@
}
}
@@ -66828,7 +71068,26 @@ diff -Nur linux-4.1.22.orig/drivers/net/usb/smsc95xx.c linux-4.1.22/drivers/net/
eth_hw_addr_random(dev->net);
netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n");
}
-@@ -1785,7 +1845,8 @@
+@@ -946,13 +1010,13 @@
+
+ if (!turbo_mode) {
+ burst_cap = 0;
+- dev->rx_urb_size = MAX_SINGLE_PACKET_SIZE;
++ dev->rx_urb_size = packetsize ? packetsize : MAX_SINGLE_PACKET_SIZE;
+ } else if (dev->udev->speed == USB_SPEED_HIGH) {
+- burst_cap = DEFAULT_HS_BURST_CAP_SIZE / HS_USB_PKT_SIZE;
+- dev->rx_urb_size = DEFAULT_HS_BURST_CAP_SIZE;
++ dev->rx_urb_size = packetsize ? packetsize : DEFAULT_HS_BURST_CAP_SIZE;
++ burst_cap = dev->rx_urb_size / HS_USB_PKT_SIZE;
+ } else {
+- burst_cap = DEFAULT_FS_BURST_CAP_SIZE / FS_USB_PKT_SIZE;
+- dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
++ dev->rx_urb_size = packetsize ? packetsize : DEFAULT_FS_BURST_CAP_SIZE;
++ burst_cap = dev->rx_urb_size / FS_USB_PKT_SIZE;
+ }
+
+ netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n",
+@@ -1785,7 +1849,8 @@
if (dev->net->features & NETIF_F_RXCSUM)
smsc95xx_rx_csum_offload(skb);
skb_trim(skb, skb->len - 4); /* remove fcs */
@@ -66838,7 +71097,7 @@ diff -Nur linux-4.1.22.orig/drivers/net/usb/smsc95xx.c linux-4.1.22/drivers/net/
return 1;
}
-@@ -1803,7 +1864,8 @@
+@@ -1803,7 +1868,8 @@
if (dev->net->features & NETIF_F_RXCSUM)
smsc95xx_rx_csum_offload(ax_skb);
skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
@@ -66848,9 +71107,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/usb/smsc95xx.c linux-4.1.22/drivers/net/
usbnet_skb_return(dev, ax_skb);
}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/Kconfig linux-4.1.22/drivers/net/wireless/Kconfig
---- linux-4.1.22.orig/drivers/net/wireless/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/net/wireless/Kconfig 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/Kconfig linux-4.1.23/drivers/net/wireless/Kconfig
+--- linux-4.1.23.orig/drivers/net/wireless/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/wireless/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -277,7 +277,9 @@
source "drivers/net/wireless/orinoco/Kconfig"
source "drivers/net/wireless/p54/Kconfig"
@@ -66862,9 +71121,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/Kconfig linux-4.1.22/drivers/ne
source "drivers/net/wireless/ti/Kconfig"
source "drivers/net/wireless/zd1211rw/Kconfig"
source "drivers/net/wireless/mwifiex/Kconfig"
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/Makefile linux-4.1.22/drivers/net/wireless/Makefile
---- linux-4.1.22.orig/drivers/net/wireless/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/net/wireless/Makefile 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/Makefile linux-4.1.23/drivers/net/wireless/Makefile
+--- linux-4.1.23.orig/drivers/net/wireless/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/wireless/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -24,7 +24,8 @@
obj-$(CONFIG_ZD1211RW) += zd1211rw/
obj-$(CONFIG_RTL8180) += rtl818x/
@@ -66884,9 +71143,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/Makefile linux-4.1.22/drivers/n
obj-$(CONFIG_P54_COMMON) += p54/
obj-$(CONFIG_ATH_CARDS) += ath/
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c linux-4.1.22/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
---- linux-4.1.22.orig/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c linux-4.1.23/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+--- linux-4.1.23.orig/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c 2016-05-02 22:53:55.000000000 +0200
@@ -2482,6 +2482,8 @@
* preference in cfg struct to apply this to
* FW later while initializing the dongle
@@ -66896,9 +71155,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c l
cfg->pwr_save = enabled;
if (!check_vif_up(ifp->vif)) {
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/brcm80211/brcmfmac/sdio.c linux-4.1.22/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
---- linux-4.1.22.orig/drivers/net/wireless/brcm80211/brcmfmac/sdio.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/net/wireless/brcm80211/brcmfmac/sdio.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/brcm80211/brcmfmac/sdio.c linux-4.1.23/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
+--- linux-4.1.23.orig/drivers/net/wireless/brcm80211/brcmfmac/sdio.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/wireless/brcm80211/brcmfmac/sdio.c 2016-05-02 22:53:55.000000000 +0200
@@ -609,6 +609,8 @@
#define BCM4334_NVRAM_NAME "brcm/brcmfmac4334-sdio.txt"
#define BCM43340_FIRMWARE_NAME "brcm/brcmfmac43340-sdio.bin"
@@ -66925,9 +71184,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/brcm80211/brcmfmac/sdio.c linux
{ BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4335) },
{ BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, BRCMF_FIRMWARE_NVRAM(BCM43362) },
{ BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4339) },
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h linux-4.1.22/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
---- linux-4.1.22.orig/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h linux-4.1.23/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
+--- linux-4.1.23.orig/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h 2016-05-02 22:53:55.000000000 +0200
@@ -34,6 +34,7 @@
#define BRCM_CC_4330_CHIP_ID 0x4330
#define BRCM_CC_4334_CHIP_ID 0x4334
@@ -66936,9 +71195,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
#define BRCM_CC_43362_CHIP_ID 43362
#define BRCM_CC_4335_CHIP_ID 0x4335
#define BRCM_CC_4339_CHIP_ID 0x4339
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/Kconfig linux-4.1.22/drivers/net/wireless/mediatek/Kconfig
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/Kconfig 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/Kconfig linux-4.1.23/drivers/net/wireless/mediatek/Kconfig
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,10 @@
+menuconfig WL_MEDIATEK
+ bool "Mediatek Wireless LAN support"
@@ -66950,14 +71209,14 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/Kconfig linux-4.1.22/d
+if WL_MEDIATEK
+source "drivers/net/wireless/mediatek/mt7601u/Kconfig"
+endif # WL_MEDIATEK
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/Makefile linux-4.1.22/drivers/net/wireless/mediatek/Makefile
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/Makefile 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/Makefile linux-4.1.23/drivers/net/wireless/mediatek/Makefile
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1 @@
+obj-$(CONFIG_MT7601U) += mt7601u/
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/Kconfig linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/Kconfig
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/Kconfig 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/Kconfig linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/Kconfig
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,6 @@
+config MT7601U
+ tristate "MediaTek MT7601U (USB) support"
@@ -66965,9 +71224,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/Kconfig linux-
+ depends on USB
+ ---help---
+ This adds support for MT7601U-based wireless USB dongles.
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/Makefile linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/Makefile
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/Makefile 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/Makefile linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/Makefile
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,9 @@
+ccflags-y += -D__CHECK_ENDIAN__
+
@@ -66978,9 +71237,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/Makefile linux
+ mac.o util.o debugfs.o tx.o
+
+CFLAGS_trace.o := -I$(src)
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/core.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/core.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/core.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/core.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/core.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/core.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/core.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -67060,9 +71319,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/core.c linux-4
+
+ return false;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/debugfs.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/debugfs.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/debugfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/debugfs.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/debugfs.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/debugfs.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/debugfs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/debugfs.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -67236,9 +71495,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/debugfs.c linu
+ debugfs_create_file("eeprom_param", S_IRUSR, dir, dev,
+ &fops_eeprom_param);
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/dma.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/dma.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/dma.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/dma.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/dma.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/dma.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/dma.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/dma.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,529 @@
+/*
+ * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
@@ -67769,9 +72028,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/dma.c linux-4.
+
+ tasklet_kill(&dev->tx_tasklet);
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/dma.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/dma.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/dma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/dma.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/dma.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/dma.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/dma.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/dma.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -67900,9 +72159,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/dma.h linux-4.
+};
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/eeprom.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/eeprom.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/eeprom.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/eeprom.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,418 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -68322,9 +72581,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.c linux
+ kfree(eeprom);
+ return ret;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/eeprom.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/eeprom.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/eeprom.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/eeprom.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -68477,9 +72736,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/eeprom.h linux
+}
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/init.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/init.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/init.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/init.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/init.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/init.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/init.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/init.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,630 @@
+/*
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
@@ -69111,9 +73370,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/init.c linux-4
+
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/initvals.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/initvals.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/initvals.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/initvals.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/initvals.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/initvals.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/initvals.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/initvals.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,164 @@
+/*
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
@@ -69279,9 +73538,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/initvals.h lin
+};
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,291 @@
+/*
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
@@ -69574,9 +73833,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h
+};
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mac.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mac.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mac.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mac.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mac.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mac.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,577 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -70155,9 +74414,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mac.c linux-4.
+
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mac.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mac.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mac.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mac.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mac.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mac.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mac.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mac.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -70337,9 +74596,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mac.h linux-4.
+void mt76_send_tx_status(struct mt7601u_dev *dev, struct mt76_tx_status *stat);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/main.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/main.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/main.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/main.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/main.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/main.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/main.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/main.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,413 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -70754,9 +75013,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/main.c linux-4
+ .sta_rate_tbl_update = mt76_sta_rate_tbl_update,
+ .set_rts_threshold = mt7601u_set_rts_threshold,
+};
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mcu.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mcu.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mcu.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mcu.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mcu.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mcu.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mcu.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mcu.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,534 @@
+/*
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
@@ -71292,9 +75551,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mcu.c linux-4.
+ usb_kill_urb(dev->mcu.resp.urb);
+ mt7601u_usb_free_buf(dev, &dev->mcu.resp);
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mcu.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mcu.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mcu.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mcu.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mcu.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mcu.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mcu.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mcu.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -71390,9 +75649,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mcu.h linux-4.
+int mt7601u_mcu_tssi_read_kick(struct mt7601u_dev *dev, int use_hvga);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mt7601u.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mt7601u.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/mt7601u.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mt7601u.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mt7601u.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/mt7601u.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/mt7601u.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,396 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -71790,9 +76049,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/mt7601u.h linu
+ struct mt76_wcid *wcid, int hw_q);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/phy.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/phy.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/phy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/phy.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/phy.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/phy.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/phy.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/phy.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1251 @@
+/*
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
@@ -73045,9 +77304,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/phy.c linux-4.
+
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/regs.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/regs.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/regs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/regs.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/regs.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/regs.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/regs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/regs.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,636 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -73685,9 +77944,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/regs.h linux-4
+};
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/trace.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/trace.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/trace.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/trace.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/trace.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/trace.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/trace.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/trace.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -73710,9 +77969,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/trace.c linux-
+#include "trace.h"
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/trace.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/trace.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/trace.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/trace.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/trace.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/trace.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/trace.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/trace.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,400 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -74114,9 +78373,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/trace.h linux-
+#define TRACE_INCLUDE_FILE trace
+
+#include <trace/define_trace.h>
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/tx.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/tx.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/tx.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/tx.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/tx.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/tx.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/tx.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/tx.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -74440,9 +78699,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/tx.c linux-4.1
+
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/usb.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/usb.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/usb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/usb.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/usb.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/usb.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/usb.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/usb.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,362 @@
+/*
+ * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
@@ -74806,9 +79065,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/usb.c linux-4.
+ .disable_hub_initiated_lpm = 1,
+};
+module_usb_driver(mt7601u_driver);
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/usb.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/usb.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/usb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/usb.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/usb.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/usb.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/usb.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/usb.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
@@ -74889,9 +79148,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/usb.h linux-4.
+ const u16 offset, const u32 val);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/util.c linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/util.c
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/util.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/util.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/util.c linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/util.c
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/util.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/util.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -74935,9 +79194,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/util.c linux-4
+ skb->data[len + 1] = 0;
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/util.h linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/util.h
---- linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/util.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/mediatek/mt7601u/util.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/util.h linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/util.h
+--- linux-4.1.23.orig/drivers/net/wireless/mediatek/mt7601u/util.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/mediatek/mt7601u/util.h 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
@@ -75016,9 +79275,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/mediatek/mt7601u/util.h linux-4
+ })
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/Kconfig linux-4.1.22/drivers/net/wireless/rtl8192cu/Kconfig
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/Kconfig 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/Kconfig linux-4.1.23/drivers/net/wireless/rtl8192cu/Kconfig
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/Kconfig 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,9 @@
+config RTL8192CU
+ tristate "Realtek 8192C USB WiFi"
@@ -75029,9 +79288,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/Kconfig linux-4.1.22/
+ ---help---
+ This option adds the Realtek RTL8192CU USB device such as Edimax EW-7811Un.
+
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/Makefile linux-4.1.22/drivers/net/wireless/rtl8192cu/Makefile
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/Makefile 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/Makefile linux-4.1.23/drivers/net/wireless/rtl8192cu/Makefile
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/Makefile 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,615 @@
+EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
+EXTRA_CFLAGS += -O1
@@ -75648,18 +79907,18 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/Makefile linux-4.1.22
+ cd os_dep/linux ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
+ cd os_dep ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
+endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/clean linux-4.1.22/drivers/net/wireless/rtl8192cu/clean
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/clean 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/clean 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/clean linux-4.1.23/drivers/net/wireless/rtl8192cu/clean
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/clean 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/clean 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,5 @@
+#!/bin/bash
+rmmod 8192cu
+rmmod 8192ce
+rmmod 8192du
+rmmod 8192de
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1145 @@
+/******************************************************************************
+ *
@@ -76806,9 +81065,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.
+}
+#endif //CONFIG_ADAPTOR_INFO_CACHING_FILE
+#endif //PLATFORM_LINUX
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ap.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ap.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ap.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ap.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ap.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ap.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ap.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ap.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,2939 @@
+/******************************************************************************
+ *
@@ -79749,9 +84008,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ap.c linux-4
+
+#endif //CONFIG_NATIVEAP_MLME
+#endif //CONFIG_AP_MODE
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1699 @@
+/******************************************************************************
+ *
@@ -81452,9 +85711,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c lin
+}
+
+#endif // CONFIG_BR_EXT
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,3034 @@
+/******************************************************************************
+ *
@@ -84490,9 +88749,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c linux-
+_func_exit_;
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_debug.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_debug.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_debug.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_debug.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_debug.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_debug.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_debug.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_debug.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1336 @@
+/******************************************************************************
+ *
@@ -85830,9 +90089,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_debug.c linu
+#endif /* CONFIG_DM_ADAPTIVITY */
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,422 @@
+/******************************************************************************
+ *
@@ -86256,9 +90515,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c lin
+
+_func_exit_;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1914 @@
+/******************************************************************************
+ *
@@ -88174,9 +92433,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c
+ action = (action >= ACT_PUBLIC_MAX) ? ACT_PUBLIC_MAX : action;
+ return _action_public_str[action];
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_io.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_io.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_io.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_io.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_io.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_io.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_io.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_io.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,462 @@
+/******************************************************************************
+ *
@@ -88640,9 +92899,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_io.c linux-4
+ return _rtw_writeN(adapter, addr, length, data);
+}
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,195 @@
+/******************************************************************************
+ *
@@ -88839,9 +93098,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.
+ return _TRUE;
+}
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1031 @@
+/******************************************************************************
+ *
@@ -89874,9 +94133,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c
+ return status;
+}
+//************** oid_rtl_seg_03_00 section end **************
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1493 @@
+/******************************************************************************
+ *
@@ -91371,9 +95630,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c
+ DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" band:%d fail\n", FUNC_ADPT_ARG(adapter), band);
+ return _FAIL;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_iol.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_iol.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_iol.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_iol.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_iol.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_iol.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_iol.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_iol.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,262 @@
+/******************************************************************************
+ *
@@ -91637,9 +95896,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_iol.c linux-
+}
+
+#endif //CONFIG_IOL
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,3966 @@
+/******************************************************************************
+ *
@@ -95607,9 +99866,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c linux
+ return _FALSE;
+}
+#endif //CONFIG_CONCURRENT_MODE
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,13599 @@
+/******************************************************************************
+ *
@@ -109210,9 +113469,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c l
+#endif //CONFIG_TDLS
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mp.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mp.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mp.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mp.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1323 @@
+/******************************************************************************
+ *
@@ -110537,9 +114796,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp.c linux-4
+}
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,2953 @@
+/******************************************************************************
+ *
@@ -113494,9 +117753,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c l
+ return 0;
+#endif
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,5293 @@
+/******************************************************************************
+ *
@@ -118791,9 +123050,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c linux-
+}
+
+#endif //CONFIG_P2P
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,1538 @@
+/******************************************************************************
+ *
@@ -120333,9 +124592,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c li
+ }
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_recv.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_recv.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_recv.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_recv.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_recv.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_recv.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_recv.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_recv.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,4286 @@
+/******************************************************************************
+ *
@@ -124623,9 +128882,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_recv.c linux
+
+}
+#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_rf.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_rf.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_rf.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_rf.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_rf.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_rf.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_rf.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_rf.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,94 @@
+/******************************************************************************
+ *
@@ -124721,9 +128980,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_rf.c linux-4
+
+ return ch;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_security.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_security.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_security.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_security.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_security.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_security.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_security.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_security.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,3114 @@
+/******************************************************************************
+ *
@@ -127839,9 +132098,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_security.c l
+
+ return status;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c 2016-05-02 22:53:55.000000000 +0200
@@ -0,0 +1,351 @@
+/******************************************************************************
+ *
@@ -128194,9 +132453,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c lin
+ DBG_871X("%s done in %d ms\n", __FUNCTION__, rtw_get_passing_time_ms(start));
+#endif
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,847 @@
+/******************************************************************************
+ *
@@ -129045,9 +133304,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c li
+ return res;
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,2940 @@
+/******************************************************************************
+ *
@@ -131989,9 +136248,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c linux
+}
+
+#endif //CONFIG_TDLS
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,2304 @@
+/******************************************************************************
+ *
@@ -134297,9 +138556,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c
+exit:
+ return status;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,4155 @@
+/******************************************************************************
+ *
@@ -138456,9 +142715,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c linux
+ }
+}
+#endif //CONFIG_XMIT_ACK
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,175 @@
+/******************************************************************************
+ *
@@ -138635,9 +142894,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c li
+
+ return _TRUE;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/dm.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/dm.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/dm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/dm.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/dm.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/dm.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/dm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/dm.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,313 @@
+/******************************************************************************
+ *
@@ -138952,9 +143211,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/dm.c linux-4.1.22
+ return;
+#endif /* CONFIG_DM_ADAPTIVITY */
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/dm.h linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/dm.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/dm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/dm.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/dm.h linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/dm.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/dm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/dm.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,30 @@
+/******************************************************************************
+ *
@@ -138986,9 +143245,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/dm.h linux-4.1.22
+void dm_adaptivity(_adapter *pAdapter);
+
+#endif /* __DM_H__ */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/hal_com.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/hal_com.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/hal_com.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/hal_com.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/hal_com.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/hal_com.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/hal_com.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/hal_com.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,370 @@
+/******************************************************************************
+ *
@@ -139360,9 +143619,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/hal_com.c linux-4
+exit:
+ return ret;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/hal_intf.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/hal_intf.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/hal_intf.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/hal_intf.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/hal_intf.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/hal_intf.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/hal_intf.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/hal_intf.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,545 @@
+/******************************************************************************
+ *
@@ -139909,9 +144168,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/hal_intf.c linux-
+{
+ return adapter->HalFunc.c2h_id_filter_ccx;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1154 @@
+/******************************************************************************
+ *
@@ -141067,9 +145326,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+}
+
+#endif //CONFIG_WOWLAN
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,5055 @@
+/******************************************************************************
+ *
@@ -146126,9 +150385,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+ }
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,3627 @@
+/******************************************************************************
+ *
@@ -149757,9 +154016,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+ pHalFunc->c2h_handler = c2h_handler_8192c;
+ pHalFunc->c2h_id_filter_ccx = c2h_id_filter_ccx_8192c;
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1207 @@
+/******************************************************************************
+ *
@@ -150968,9 +155227,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+}
+
+#endif // CONFIG_MP_INCLUDE
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,4840 @@
+/******************************************************************************
+ *
@@ -155812,9 +160071,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+ _PHY_SetRFPathSwitch(pAdapter, bMain, _FALSE);
+ }
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1030 @@
+/******************************************************************************
+ *
@@ -156846,9 +161105,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+} /* PHY_RFShadowRead */
+
+/* End of HalRf6052.c */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,874 @@
+/******************************************************************************
+ *
@@ -157724,9 +161983,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+ //Offset 20
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,93 @@
+/******************************************************************************
+ *
@@ -157821,9 +162080,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+ }
+}
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,62 @@
+/******************************************************************************
+ *
@@ -157887,9 +162146,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c
+ }
+}
+#endif //CONFIG_XMIT_ACK
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,8757 @@
+/******************************************************************************
+ *
@@ -166648,9 +170907,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8
+0xc78,0x621e001e,
+0xc78,0x621f001e,
+};
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,2557 @@
+/******************************************************************************
+ *
@@ -169209,9 +173468,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8
+0x94,0x01,0x40,0x1e,0x90,0xfd,0x11,0xe0,0xb5,0x05,0x14,0x90,0x01,0x17,0xe0,0xb5,
+0x05,0x07,0x90,0xfd,0x11,0xe4,0xf0,0x80,0x06,0xed,0x04,0x90,0xfd,0x11,0xf0,0xe4,
+0x2f,0xff,0x22,0x00,0x18,0x58,};
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,2674 @@
+/******************************************************************************
+ *
@@ -171887,9 +176146,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8
+ DeInitLed871x( &(ledpriv->SwLed0) );
+ DeInitLed871x( &(ledpriv->SwLed1) );
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,227 @@
+/******************************************************************************
+ *
@@ -172118,9 +176377,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8
+#endif
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1149 @@
+/******************************************************************************
+ *
@@ -173271,9 +177530,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8
+
+}
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,6260 @@
+/******************************************************************************
+ *
@@ -179535,9 +183794,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_
+_func_exit_;
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1205 @@
+/******************************************************************************
+ *
@@ -180744,9 +185003,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_
+ return ret;
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1535 @@
+/******************************************************************************
+ *
@@ -182283,9 +186542,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_
+ _func_exit_;
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1264 @@
+/******************************************************************************
+ *
@@ -183551,18 +187810,18 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_
+ return ret;
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 linux-4.1.22/drivers/net/wireless/rtl8192cu/ifcfg-wlan0
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 linux-4.1.23/drivers/net/wireless/rtl8192cu/ifcfg-wlan0
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,4 @@
+#DHCP client
+DEVICE=wlan0
+BOOTPROTO=dhcp
+ONBOOT=yes
\ No newline at end of file
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,85 @@
+/******************************************************************************
+ *
@@ -183649,9 +187908,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWIm
+extern u32 Rtl8192CEAGCTAB_1TArray[AGCTAB_1TArrayLength];
+
+#endif //__INC_HAL8192CE_FW_IMG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,427 @@
+/******************************************************************************
+ *
@@ -184080,9 +188339,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCf
+#define PHY_SetMacReg PHY_SetBBReg
+
+#endif // __INC_HAL8192CPHYCFG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1122 @@
+/******************************************************************************
+ *
@@ -185206,9 +189465,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyRe
+
+
+#endif //__INC_HAL8192SPHYREG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,105 @@
+/******************************************************************************
+ *
@@ -185315,9 +189574,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWIm
+extern u32 Rtl8192CUAGCTAB_1T_HPArray[AGCTAB_1T_HPArrayLength];
+
+#endif //__INC_HAL8192CU_FW_IMG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,33 @@
+/******************************************************************************
+ *
@@ -185352,9 +189611,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWIm
+extern u8 Rtl8192CUFwUMCBCutWWImgArray[UMCBCutWWImgArrayLength];
+
+#endif //__INC_HAL8192CU_FW_IMG_WOWLAN_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,66 @@
+/******************************************************************************
+ *
@@ -185422,9 +189681,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWIm
+extern const u32 Rtl8192DEAGCTAB_1TArray[Rtl8192DEAGCTAB_1TArrayLength];
+
+#endif //__INC_HAL8192CU_FW_IMG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,527 @@
+/******************************************************************************
+ *
@@ -185953,9 +190212,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCf
+#define PHY_SetMacReg PHY_SetBBReg
+
+#endif // __INC_HAL8192SPHYCFG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1170 @@
+/******************************************************************************
+ *
@@ -187127,9 +191386,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyRe
+
+
+#endif //__INC_HAL8192SPHYREG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,66 @@
+/******************************************************************************
+ *
@@ -187197,9 +191456,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWIm
+extern const u32 Rtl8192DUAGCTAB_1TArray[Rtl8192DUAGCTAB_1TArrayLength];
+
+#endif //__INC_HAL8192CU_FW_IMG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,29 @@
+/******************************************************************************
+ *
@@ -187230,9 +191489,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWIm
+extern u8 Rtl8192DUFwWWImgArray[DUWWImgArrayLength];
+
+#endif //__INC_HAL8192DU_FW_IMG_WOWLAN_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,137 @@
+/******************************************************************************
+ *
@@ -187371,9 +191630,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.
+ WLAN_PWR_CFG PwrCfgCmd[]);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/autoconf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/autoconf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/autoconf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/autoconf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/autoconf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/autoconf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/autoconf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/autoconf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,336 @@
+/******************************************************************************
+ *
@@ -187711,9 +191970,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/autoconf.h li
+
+//turn off power tracking when traffic is busy
+//#define CONFIG_BUSY_TRAFFIC_SKIP_PWR_TRACK
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/basic_types.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/basic_types.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/basic_types.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/basic_types.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/basic_types.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/basic_types.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/basic_types.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/basic_types.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,320 @@
+/******************************************************************************
+ *
@@ -188035,9 +192294,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/basic_types.h
+typedef unsigned char BOOLEAN,*PBOOLEAN;
+
+#endif //__BASIC_TYPES_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,87 @@
+/******************************************************************************
+ *
@@ -188126,9 +192385,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/big
+#include <byteorder/generic.h>
+
+#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,212 @@
+/******************************************************************************
+ *
@@ -188342,9 +192601,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/gen
+#endif
+
+#endif /* _LINUX_BYTEORDER_GENERIC_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,89 @@
+/******************************************************************************
+ *
@@ -188435,9 +192694,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/lit
+#include <byteorder/generic.h>
+
+#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,140 @@
+/******************************************************************************
+ *
@@ -188579,9 +192838,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swa
+#endif
+
+#endif /* _LINUX_BYTEORDER_SWAB_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,156 @@
+/******************************************************************************
+ *
@@ -188739,9 +192998,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swa
+#endif
+
+#endif /* _LINUX_BYTEORDER_SWABB_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/circ_buf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/circ_buf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/circ_buf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/circ_buf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/circ_buf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/circ_buf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/circ_buf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/circ_buf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,27 @@
+/******************************************************************************
+ *
@@ -188770,9 +193029,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/circ_buf.h li
+#define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size))
+
+#endif //_CIRC_BUF_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,35 @@
+/******************************************************************************
+ *
@@ -188809,9 +193068,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h l
+extern struct cmd_obj *_rtw_dequeue_cmd(_queue *queue);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_conf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_conf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_conf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_conf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_conf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_conf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_conf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_conf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,77 @@
+/******************************************************************************
+ *
@@ -188890,9 +193149,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_conf.h li
+//#include <rtl871x_byteorder.h>
+
+#endif // __DRV_CONF_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,661 @@
+/******************************************************************************
+ *
@@ -189555,9 +193814,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types.h l
+
+
+#endif //__DRV_TYPES_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,92 @@
+/******************************************************************************
+ *
@@ -189651,9 +193910,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_ce.
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,24 @@
+/******************************************************************************
+ *
@@ -189679,9 +193938,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_lin
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,69 @@
+/******************************************************************************
+ *
@@ -189752,9 +194011,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_sdi
+} SDIO_DATA, *PSDIO_DATA;
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,94 @@
+/******************************************************************************
+ *
@@ -189850,9 +194109,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/drv_types_xp.
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ethernet.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ethernet.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ethernet.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ethernet.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ethernet.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ethernet.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ethernet.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ethernet.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,41 @@
+/******************************************************************************
+ *
@@ -189895,9 +194154,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ethernet.h li
+
+
+#endif // #ifndef __INC_ETHERNET_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/h2clbk.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/h2clbk.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/h2clbk.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/h2clbk.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/h2clbk.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/h2clbk.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/h2clbk.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/h2clbk.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,35 @@
+/******************************************************************************
+ *
@@ -189934,9 +194193,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/h2clbk.h linu
+void _lbk_evt(IN PADAPTER Adapter);
+
+void h2c_event_callback(unsigned char *dev, unsigned char *pbuf);
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/hal_com.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/hal_com.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/hal_com.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/hal_com.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/hal_com.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/hal_com.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/hal_com.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/hal_com.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,145 @@
+/******************************************************************************
+ *
@@ -190083,9 +194342,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/hal_com.h lin
+s32 c2h_evt_read(_adapter *adapter, u8 *buf);
+
+#endif //__HAL_COMMON_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/hal_intf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/hal_intf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/hal_intf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/hal_intf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/hal_intf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/hal_intf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/hal_intf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/hal_intf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,431 @@
+/******************************************************************************
+ *
@@ -190518,9 +194777,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/hal_intf.h li
+c2h_id_filter rtw_hal_c2h_id_filter_ccx(_adapter *adapter);
+
+#endif //__HAL_INTF_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ieee80211.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ieee80211.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ieee80211.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ieee80211.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ieee80211.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ieee80211.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ieee80211.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ieee80211.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1579 @@
+/******************************************************************************
+ *
@@ -192101,9 +196360,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ieee80211.h l
+const char *action_public_str(u8 action);
+
+#endif /* IEEE80211_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,476 @@
+/******************************************************************************
+ *
@@ -192581,9 +196840,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ieee80211_ext
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/if_ether.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/if_ether.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/if_ether.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/if_ether.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/if_ether.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/if_ether.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/if_ether.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/if_ether.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,112 @@
+/******************************************************************************
+ *
@@ -192697,9 +196956,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/if_ether.h li
+
+
+#endif /* _LINUX_IF_ETHER_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,179 @@
+/******************************************************************************
+ *
@@ -192880,9 +197139,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ioctl_cfg8021
+#endif
+
+#endif //__IOCTL_CFG80211_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ip.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ip.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ip.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/ip.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ip.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ip.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/ip.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/ip.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,141 @@
+/******************************************************************************
+ *
@@ -193025,9 +197284,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/ip.h linux-4.
+};
+
+#endif /* _LINUX_IP_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/linux/wireless.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/linux/wireless.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/linux/wireless.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/linux/wireless.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/linux/wireless.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/linux/wireless.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/linux/wireless.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/linux/wireless.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,90 @@
+/******************************************************************************
+ *
@@ -193119,9 +197378,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/linux/wireles
+};
+
+#endif /* _LINUX_WIRELESS_H */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,39 @@
+/******************************************************************************
+ *
@@ -193162,9 +197421,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h
+void rtw_reset_securitypriv( _adapter *adapter );
+
+#endif //_MLME_OSDEP_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,353 @@
+/******************************************************************************
+ *
@@ -193519,9 +197778,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/mp_custom_oid
+#define OID_RT_PRO_EFUSE_MAP 0xFF871217 //Q, S
+
+#endif //#ifndef __CUSTOM_OID_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/nic_spec.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/nic_spec.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/nic_spec.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/nic_spec.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/nic_spec.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/nic_spec.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/nic_spec.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/nic_spec.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,46 @@
+/******************************************************************************
+ *
@@ -193569,9 +197828,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/nic_spec.h li
+
+
+#endif // __RTL8711_SPEC_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,170 @@
+/******************************************************************************
+ *
@@ -193743,9 +198002,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_ce_serv
+ NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \
+}
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_intf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/osdep_intf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_intf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/osdep_intf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/osdep_intf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/osdep_intf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/osdep_intf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/osdep_intf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,154 @@
+/******************************************************************************
+ *
@@ -193901,9 +198160,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_intf.h
+void rtw_ndev_destructor(_nic_hdl ndev);
+
+#endif //_OSDEP_INTF_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_service.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/osdep_service.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_service.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/osdep_service.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/osdep_service.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/osdep_service.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/osdep_service.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/osdep_service.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1813 @@
+/******************************************************************************
+ *
@@ -195718,9 +199977,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/osdep_service
+void rtw_cbuf_free(struct rtw_cbuf *cbuf);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_hal.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/pci_hal.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_hal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/pci_hal.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/pci_hal.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/pci_hal.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/pci_hal.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/pci_hal.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,167 @@
+/******************************************************************************
+ *
@@ -195889,9 +200148,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_hal.h lin
+#endif
+
+#endif //__PCIE_HAL_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_ops.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/pci_ops.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_ops.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/pci_ops.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/pci_ops.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/pci_ops.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/pci_ops.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/pci_ops.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,60 @@
+/******************************************************************************
+ *
@@ -195953,9 +200212,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_ops.h lin
+#endif
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_osintf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/pci_osintf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_osintf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/pci_osintf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/pci_osintf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/pci_osintf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/pci_osintf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/pci_osintf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,32 @@
+/******************************************************************************
+ *
@@ -195989,9 +200248,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/pci_osintf.h
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/recv_osdep.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/recv_osdep.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/recv_osdep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/recv_osdep.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/recv_osdep.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/recv_osdep.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/recv_osdep.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/recv_osdep.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,57 @@
+/******************************************************************************
+ *
@@ -196050,9 +200309,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/recv_osdep.h
+
+
+#endif //
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,152 @@
+/******************************************************************************
+ *
@@ -196206,9 +200465,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.
+#endif // CONFIG_WOWLAN
+
+#endif // __RTL8192C_CMD_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,515 @@
+/******************************************************************************
+ *
@@ -196725,9 +200984,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h
+#endif
+
+#endif //__HAL8190PCIDM_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,26 @@
+/******************************************************************************
+ *
@@ -196755,9 +201014,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_even
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,934 @@
+/******************************************************************************
+ *
@@ -197693,9 +201952,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.
+extern void Hal_SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,41 @@
+/******************************************************************************
+ *
@@ -197738,9 +201997,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.
+#endif
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,183 @@
+/******************************************************************************
+ *
@@ -197925,9 +202184,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv
+void rtl8192c_query_rx_desc_status(union recv_frame *precvframe, struct recv_stat *pdesc);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,91 @@
+/******************************************************************************
+ *
@@ -198020,9 +202279,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h
+
+
+#endif/* End of HalRf.h */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1864 @@
+/******************************************************************************
+ *
@@ -199888,9 +204147,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec
+#include "basic_types.h"
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,32 @@
+/******************************************************************************
+ *
@@ -199924,9 +204183,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_sres
+extern void rtl8192c_sreset_linked_status_check(_adapter *padapter);
+#endif
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,128 @@
+/******************************************************************************
+ *
@@ -200056,9 +204315,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit
+#endif
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,140 @@
+/******************************************************************************
+ *
@@ -200200,9 +204459,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.
+#endif // CONFIG_WOWLAN
+
+#endif // __RTL8192D_CMD_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,420 @@
+/******************************************************************************
+ *
@@ -200624,9 +204883,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h
+VOID rtl8192d_dm_CheckTXPowerTracking(IN PADAPTER Adapter);
+
+#endif //__HAL8190PCIDM_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1125 @@
+/******************************************************************************
+ *
@@ -201753,9 +206012,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.
+
+
+#endif //end CONFIG_MP_INCLUDED
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,42 @@
+/******************************************************************************
+ *
@@ -201799,9 +206058,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.
+#endif
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,186 @@
+/******************************************************************************
+ *
@@ -201989,9 +206248,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv
+void rtl8192d_query_rx_desc_status(union recv_frame *precvframe, struct recv_stat *pdesc);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,96 @@
+/******************************************************************************
+ *
@@ -202089,9 +206348,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h
+
+
+#endif/* End of HalRf.h */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1840 @@
+/******************************************************************************
+ *
@@ -203933,9 +208192,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec
+#include "basic_types.h"
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,144 @@
+/******************************************************************************
+ *
@@ -204081,9 +208340,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_android.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_android.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_android.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_android.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_android.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_android.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_android.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_android.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,89 @@
+/******************************************************************************
+ *
@@ -204174,9 +208433,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_android.h
+#endif /* defined(RTW_ENABLE_WIFI_CONTROL_FUNC) */
+
+#endif //__RTW_ANDROID_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ap.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ap.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ap.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ap.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ap.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ap.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ap.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ap.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,63 @@
+/******************************************************************************
+ *
@@ -204241,9 +208500,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ap.h linu
+#endif //end of CONFIG_AP_MODE
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,75 @@
+/******************************************************************************
+ *
@@ -204320,9 +208579,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h
+void nat25_db_cleanup(_adapter *priv);
+
+#endif // _RTW_BR_EXT_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,39 @@
+/******************************************************************************
+ *
@@ -204363,9 +208622,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_byteorder
+#endif
+
+#endif /* _RTL871X_BYTEORDER_H_ */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1166 @@
+/******************************************************************************
+ *
@@ -205533,9 +209792,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h lin
+#endif
+
+#endif // _CMD_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_debug.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_debug.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_debug.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_debug.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_debug.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_debug.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_debug.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_debug.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,537 @@
+/******************************************************************************
+ *
@@ -206074,9 +210333,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_debug.h l
+#endif //CONFIG_PROC_DEBUG
+
+#endif //__RTW_DEBUG_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,152 @@
+/******************************************************************************
+ *
@@ -206230,9 +210489,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h
+#endif //PLATFORM_LINUX
+
+#endif //__RTL871X_EEPROM_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,123 @@
+/******************************************************************************
+ *
@@ -206357,9 +210616,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h l
+void EFUSE_ShadowRead(PADAPTER pAdapter, u8 Type, u16 Offset, u32 *Value);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_event.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_event.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_event.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_event.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_event.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_event.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_event.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_event.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,153 @@
+/******************************************************************************
+ *
@@ -206514,9 +210773,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_event.h l
+
+
+#endif // _WLANEVENT_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ht.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ht.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ht.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ht.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ht.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ht.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ht.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ht.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,49 @@
+/******************************************************************************
+ *
@@ -206567,9 +210826,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ht.h linu
+};
+
+#endif //_RTL871X_HT_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_io.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_io.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_io.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_io.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_io.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_io.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_io.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_io.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,504 @@
+/******************************************************************************
+ *
@@ -207075,9 +211334,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_io.h linu
+*/
+
+#endif //_RTL8711_IO_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,268 @@
+/******************************************************************************
+ *
@@ -207347,9 +211606,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h l
+ );
+
+#endif // #ifndef __INC_CEINFO_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,35 @@
+/******************************************************************************
+ *
@@ -207386,9 +211645,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_que
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,83 @@
+/******************************************************************************
+ *
@@ -207473,9 +211732,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,78 @@
+/******************************************************************************
+ *
@@ -207555,9 +211814,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set
+int rtw_set_band(_adapter *adapter, enum _BAND band);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_iol.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_iol.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_iol.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_iol.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_iol.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_iol.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_iol.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_iol.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,89 @@
+/******************************************************************************
+ *
@@ -207648,9 +211907,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_iol.h lin
+bool rtw_IOL_applied(ADAPTER *adapter);
+
+#endif //__RTW_IOL_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_led.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_led.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_led.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_led.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_led.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_led.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_led.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_led.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,216 @@
+/******************************************************************************
+ *
@@ -207868,9 +212127,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_led.h lin
+extern void BlinkHandler(PLED_871x pLed);
+
+#endif //__RTW_LED_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,843 @@
+/******************************************************************************
+ *
@@ -208715,9 +212974,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h li
+void rtw_proxim_send_packet(_adapter *padapter,u8 *pbuf,u16 len,u8 hw_rate);
+#endif //CONFIG_INTEL_PROXIM
+#endif //__RTL871X_MLME_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,962 @@
+/******************************************************************************
+ *
@@ -209681,9 +213940,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.
+#endif//_RTL8192C_CMD_C_
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mp.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mp.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mp.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mp.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,711 @@
+/******************************************************************************
+ *
@@ -210396,9 +214655,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp.h linu
+extern void Hal_ProSetCrystalCap (PADAPTER pAdapter , u32 CrystalCapVal);
+
+#endif //_RTW_MP_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,595 @@
+/******************************************************************************
+ *
@@ -210995,9 +215254,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.
+#endif /* _RTW_MP_IOCTL_C_ */
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1096 @@
+/******************************************************************************
+ *
@@ -212095,9 +216354,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_re
+
+
+#endif //__INC_HAL8192SPHYREG_H
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,160 @@
+/******************************************************************************
+ *
@@ -212259,9 +216518,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h lin
+ (wdinfo)->find_phase_state_exchange_cnt != P2P_FINDPHASE_EX_NONE)
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,362 @@
+/******************************************************************************
+ *
@@ -212625,9 +216884,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h
+int rtw_pm_set_lps(_adapter *padapter, u8 mode);
+
+#endif //__RTL871X_PWRCTRL_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_qos.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_qos.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_qos.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_qos.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_qos.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_qos.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_qos.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_qos.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,39 @@
+/******************************************************************************
+ *
@@ -212668,9 +216927,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_qos.h lin
+
+
+#endif //_RTL871X_QOS_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_recv.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_recv.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_recv.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_recv.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_recv.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_recv.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_recv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_recv.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,730 @@
+/******************************************************************************
+ *
@@ -213402,9 +217661,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_recv.h li
+extern void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_rf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_rf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_rf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_rf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_rf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_rf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_rf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_rf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,151 @@
+/******************************************************************************
+ *
@@ -213557,9 +217816,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_rf.h linu
+
+
+#endif //_RTL8711_RF_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_security.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_security.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_security.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_security.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_security.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_security.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_security.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_security.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,446 @@
+/******************************************************************************
+ *
@@ -214007,9 +218266,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_security.
+u8 rtw_handle_tkip_countermeasure(_adapter* adapter, const char *caller);
+
+#endif //__RTL871X_SECURITY_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,73 @@
+/******************************************************************************
+ *
@@ -214084,9 +218343,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h
+void sreset_reset(_adapter *padapter);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,142 @@
+/******************************************************************************
+ *
@@ -214230,14 +218489,14 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h li
+#endif //CONFIG_TDLS
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_version.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_version.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_version.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_version.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_version.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_version.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_version.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_version.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1 @@
+#define DRIVERVERSION "v4.0.2_9000.20130911"
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,753 @@
+/******************************************************************************
+ *
@@ -214992,9 +219251,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h li
+#include <xmit_osdep.h>
+
+#endif //_RTL871X_XMIT_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/sta_info.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/sta_info.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/sta_info.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/sta_info.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/sta_info.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/sta_info.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/sta_info.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/sta_info.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,431 @@
+/******************************************************************************
+ *
@@ -215427,9 +219686,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/sta_info.h li
+extern u8 rtw_access_ctrl(_adapter *padapter, u8 *mac_addr);
+
+#endif //_STA_INFO_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_hal.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_hal.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_hal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_hal.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_hal.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_hal.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_hal.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_hal.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,36 @@
+/******************************************************************************
+ *
@@ -215467,9 +219726,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_hal.h lin
+#endif // CONFIG_WOWLAN_MANUAL
+#endif //CONFIG_WOWLAN
+#endif //__USB_HAL_H__
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_ops.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_ops.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_ops.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_ops.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_ops.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_ops.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_ops.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_ops.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,109 @@
+/******************************************************************************
+ *
@@ -215580,9 +219839,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_ops.h lin
+}
+
+#endif //__USB_OPS_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,62 @@
+/******************************************************************************
+ *
@@ -215646,9 +219905,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_ops_linux
+void usb_write_port_cancel(struct intf_hdl *pintfhdl);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_osintf.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_osintf.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_osintf.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_osintf.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_osintf.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_osintf.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_osintf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_osintf.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,37 @@
+/******************************************************************************
+ *
@@ -215687,9 +219946,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_osintf.h
+
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,59 @@
+/******************************************************************************
+ *
@@ -215750,9 +220009,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/usb_vendor_re
+//BOOLEAN CEusbGetDescriptorRequest(PCE_USB_DEVICE CEdevice, IN short urbLength, IN UCHAR DescriptorType, IN UCHAR Index, IN USHORT LanguageId, IN PVOID TransferBuffer, IN ULONG TransferBufferLength);
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/wifi.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/wifi.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/wifi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/wifi.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/wifi.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/wifi.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/wifi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/wifi.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1245 @@
+/******************************************************************************
+ *
@@ -216999,9 +221258,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/wifi.h linux-
+
+
+#endif // _WIFI_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,702 @@
+/******************************************************************************
+ *
@@ -217705,9 +221964,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h
+
+
+#endif //#ifndef WLAN_BSSDEF_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h linux-4.1.22/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h linux-4.1.23/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,94 @@
+/******************************************************************************
+ *
@@ -217803,9 +222062,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h
+extern void rtw_os_xmit_complete(_adapter *padapter, struct xmit_frame *pxframe);
+
+#endif //__XMIT_OSDEP_H_
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c 2016-04-29 18:02:47.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,5488 @@
+/******************************************************************************
+ *
@@ -223295,9 +227554,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cf
+}
+
+#endif //CONFIG_IOCTL_CFG80211
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,11908 @@
+/******************************************************************************
+ *
@@ -235207,9 +239466,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_li
+#endif
+};
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,585 @@
+/******************************************************************************
+ *
@@ -235796,9 +240055,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_lin
+
+#endif
+#endif
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,2748 @@
+/******************************************************************************
+ *
@@ -238548,9 +242807,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs
+#endif
+ free_netdev(ndev);
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1996 @@
+/******************************************************************************
+ *
@@ -240548,9 +244807,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf
+
+module_init(rtw_drv_entry);
+module_exit(rtw_drv_halt);
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,21 @@
+/******************************************************************************
+ *
@@ -240573,9 +244832,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_
+#define _PCI_OPS_LINUX_C_
+
+#include <drv_types.h>
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,447 @@
+/******************************************************************************
+ *
@@ -241024,9 +245283,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_lin
+ _init_timer(&(preorder_ctrl->reordering_ctrl_timer), padapter->pnetdev, _rtw_reordering_ctrl_timeout_handler, preorder_ctrl);
+
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,838 @@
+/******************************************************************************
+ *
@@ -241866,9 +246125,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_andr
+ platform_driver_unregister(&wifi_device_legacy);
+}
+#endif /* defined(RTW_ENABLE_WIFI_CONTROL_FUNC) */
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,1655 @@
+/******************************************************************************
+ *
@@ -243525,9 +247784,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf
+}
+EXPORT_SYMBOL(rtw_usb_get_sw_pointer);
+#endif //CONFIG_INTEL_PROXIM
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,648 @@
+/******************************************************************************
+ *
@@ -244177,9 +248436,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_
+ pxmitbuf++;
+ }
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,420 @@
+/******************************************************************************
+ *
@@ -244601,9 +248860,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_lin
+ rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, pkt->truesize);
+ return _rtw_xmit_entry(pkt, pnetdev);
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,2299 @@
+/******************************************************************************
+ *
@@ -246904,9 +251163,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.
+{
+ rtw_mfree((u8*)cbuf, sizeof(*cbuf) + sizeof(void*)*cbuf->size);
+}
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/runwpa linux-4.1.22/drivers/net/wireless/rtl8192cu/runwpa
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/runwpa 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/runwpa 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/runwpa linux-4.1.23/drivers/net/wireless/rtl8192cu/runwpa
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/runwpa 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/runwpa 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,18 @@
+#!/bin/bash
+
@@ -246926,9 +251185,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/runwpa linux-4.1.22/d
+
+ fi
+fi
-diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/wlan0dhcp linux-4.1.22/drivers/net/wireless/rtl8192cu/wlan0dhcp
---- linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/wlan0dhcp 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/net/wireless/rtl8192cu/wlan0dhcp 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/wlan0dhcp linux-4.1.23/drivers/net/wireless/rtl8192cu/wlan0dhcp
+--- linux-4.1.23.orig/drivers/net/wireless/rtl8192cu/wlan0dhcp 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/net/wireless/rtl8192cu/wlan0dhcp 2016-05-02 22:53:56.000000000 +0200
@@ -0,0 +1,15 @@
+#!/bin/bash
+
@@ -246945,9 +251204,9 @@ diff -Nur linux-4.1.22.orig/drivers/net/wireless/rtl8192cu/wlan0dhcp linux-4.1.2
+rm -f /etc/sysconfig/network-scripts/ifcfg-wlan0
+
+echo "get ip: $var1"
-diff -Nur linux-4.1.22.orig/drivers/of/fdt.c linux-4.1.22/drivers/of/fdt.c
---- linux-4.1.22.orig/drivers/of/fdt.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/of/fdt.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/of/fdt.c linux-4.1.23/drivers/of/fdt.c
+--- linux-4.1.23.orig/drivers/of/fdt.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/of/fdt.c 2016-05-02 22:53:56.000000000 +0200
@@ -933,19 +933,38 @@
/* Retrieve command line */
@@ -246992,9 +251251,97 @@ diff -Nur linux-4.1.22.orig/drivers/of/fdt.c linux-4.1.22/drivers/of/fdt.c
#endif /* CONFIG_CMDLINE */
pr_debug("Command line is: %s\n", (char*)data);
-diff -Nur linux-4.1.22.orig/drivers/pinctrl/Makefile linux-4.1.22/drivers/pinctrl/Makefile
---- linux-4.1.22.orig/drivers/pinctrl/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/pinctrl/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/of/of_reserved_mem.c linux-4.1.23/drivers/of/of_reserved_mem.c
+--- linux-4.1.23.orig/drivers/of/of_reserved_mem.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/of/of_reserved_mem.c 2016-05-02 22:53:56.000000000 +0200
+@@ -31,13 +31,11 @@
+ phys_addr_t align, phys_addr_t start, phys_addr_t end, bool nomap,
+ phys_addr_t *res_base)
+ {
+- phys_addr_t base;
+ /*
+ * We use __memblock_alloc_base() because memblock_alloc_base()
+ * panic()s on allocation failure.
+ */
+- end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end;
+- base = __memblock_alloc_base(size, align, end);
++ phys_addr_t base = __memblock_alloc_base(size, align, end);
+ if (!base)
+ return -ENOMEM;
+
+diff -Nur linux-4.1.23.orig/drivers/pci/probe.c linux-4.1.23/drivers/pci/probe.c
+--- linux-4.1.23.orig/drivers/pci/probe.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/pci/probe.c 2016-05-02 22:53:56.000000000 +0200
+@@ -176,9 +176,6 @@
+ u16 orig_cmd;
+ struct pci_bus_region region, inverted_region;
+
+- if (dev->non_compliant_bars)
+- return 0;
+-
+ mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
+
+ /* No printks while decoding is disabled! */
+@@ -976,8 +973,6 @@
+ {
+ int pos;
+ u16 reg16;
+- int type;
+- struct pci_dev *parent;
+
+ pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
+ if (!pos)
+@@ -987,22 +982,6 @@
+ pdev->pcie_flags_reg = reg16;
+ pci_read_config_word(pdev, pos + PCI_EXP_DEVCAP, &reg16);
+ pdev->pcie_mpss = reg16 & PCI_EXP_DEVCAP_PAYLOAD;
+-
+- /*
+- * A Root Port is always the upstream end of a Link. No PCIe
+- * component has two Links. Two Links are connected by a Switch
+- * that has a Port on each Link and internal logic to connect the
+- * two Ports.
+- */
+- type = pci_pcie_type(pdev);
+- if (type == PCI_EXP_TYPE_ROOT_PORT)
+- pdev->has_secondary_link = 1;
+- else if (type == PCI_EXP_TYPE_UPSTREAM ||
+- type == PCI_EXP_TYPE_DOWNSTREAM) {
+- parent = pci_upstream_bridge(pdev);
+- if (!parent->has_secondary_link)
+- pdev->has_secondary_link = 1;
+- }
+ }
+
+ void set_pcie_hotplug_bridge(struct pci_dev *pdev)
+@@ -1119,7 +1098,6 @@
+ int pci_setup_device(struct pci_dev *dev)
+ {
+ u32 class;
+- u16 cmd;
+ u8 hdr_type;
+ struct pci_slot *slot;
+ int pos = 0;
+@@ -1167,16 +1145,6 @@
+ /* device class may be changed after fixup */
+ class = dev->class >> 8;
+
+- if (dev->non_compliant_bars) {
+- pci_read_config_word(dev, PCI_COMMAND, &cmd);
+- if (cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
+- dev_info(&dev->dev, "device has non-compliant BARs; disabling IO/MEM decoding\n");
+- cmd &= ~PCI_COMMAND_IO;
+- cmd &= ~PCI_COMMAND_MEMORY;
+- pci_write_config_word(dev, PCI_COMMAND, cmd);
+- }
+- }
+-
+ switch (dev->hdr_type) { /* header type */
+ case PCI_HEADER_TYPE_NORMAL: /* standard header */
+ if (class == PCI_CLASS_BRIDGE_PCI)
+diff -Nur linux-4.1.23.orig/drivers/pinctrl/Makefile linux-4.1.23/drivers/pinctrl/Makefile
+--- linux-4.1.23.orig/drivers/pinctrl/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/pinctrl/Makefile 2016-05-02 22:53:56.000000000 +0200
@@ -38,6 +38,7 @@
obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o
obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o
@@ -247003,9 +251350,9 @@ diff -Nur linux-4.1.22.orig/drivers/pinctrl/Makefile linux-4.1.22/drivers/pinctr
obj-$(CONFIG_ARCH_BCM) += bcm/
obj-$(CONFIG_ARCH_BERLIN) += berlin/
obj-y += freescale/
-diff -Nur linux-4.1.22.orig/drivers/pinctrl/bcm/pinctrl-bcm2835.c linux-4.1.22/drivers/pinctrl/bcm/pinctrl-bcm2835.c
---- linux-4.1.22.orig/drivers/pinctrl/bcm/pinctrl-bcm2835.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/pinctrl/bcm/pinctrl-bcm2835.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/pinctrl/bcm/pinctrl-bcm2835.c linux-4.1.23/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+--- linux-4.1.23.orig/drivers/pinctrl/bcm/pinctrl-bcm2835.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/pinctrl/bcm/pinctrl-bcm2835.c 2016-05-02 22:53:56.000000000 +0200
@@ -47,6 +47,7 @@
#define MODULE_NAME "pinctrl-bcm2835"
#define BCM2835_NUM_GPIOS 54
@@ -247160,9 +251507,33 @@ diff -Nur linux-4.1.22.orig/drivers/pinctrl/bcm/pinctrl-bcm2835.c linux-4.1.22/d
.of_match_table = bcm2835_pinctrl_match,
},
};
-diff -Nur linux-4.1.22.orig/drivers/power/reset/gpio-poweroff.c linux-4.1.22/drivers/power/reset/gpio-poweroff.c
---- linux-4.1.22.orig/drivers/power/reset/gpio-poweroff.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/power/reset/gpio-poweroff.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/platform/x86/ideapad-laptop.c linux-4.1.23/drivers/platform/x86/ideapad-laptop.c
+--- linux-4.1.23.orig/drivers/platform/x86/ideapad-laptop.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/platform/x86/ideapad-laptop.c 2016-05-02 22:53:56.000000000 +0200
+@@ -845,20 +845,6 @@
+ },
+ },
+ {
+- .ident = "Lenovo ideapad Y700-15ISK",
+- .matches = {
+- DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+- DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad Y700-15ISK"),
+- },
+- },
+- {
+- .ident = "Lenovo ideapad Y700 Touch-15ISK",
+- .matches = {
+- DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+- DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad Y700 Touch-15ISK"),
+- },
+- },
+- {
+ .ident = "Lenovo ideapad Y700-17ISK",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+diff -Nur linux-4.1.23.orig/drivers/power/reset/gpio-poweroff.c linux-4.1.23/drivers/power/reset/gpio-poweroff.c
+--- linux-4.1.23.orig/drivers/power/reset/gpio-poweroff.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/power/reset/gpio-poweroff.c 2016-05-02 22:53:56.000000000 +0200
@@ -48,9 +48,11 @@
static int gpio_poweroff_probe(struct platform_device *pdev)
{
@@ -247176,9 +251547,9 @@ diff -Nur linux-4.1.22.orig/drivers/power/reset/gpio-poweroff.c linux-4.1.22/dri
dev_err(&pdev->dev,
"%s: pm_power_off function already registered",
__func__);
-diff -Nur linux-4.1.22.orig/drivers/pwm/Kconfig linux-4.1.22/drivers/pwm/Kconfig
---- linux-4.1.22.orig/drivers/pwm/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/pwm/Kconfig 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/pwm/Kconfig linux-4.1.23/drivers/pwm/Kconfig
+--- linux-4.1.23.orig/drivers/pwm/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/pwm/Kconfig 2016-05-02 22:53:56.000000000 +0200
@@ -85,7 +85,7 @@
config PWM_BCM2835
@@ -247188,9 +251559,9 @@ diff -Nur linux-4.1.22.orig/drivers/pwm/Kconfig linux-4.1.22/drivers/pwm/Kconfig
help
PWM framework driver for BCM2835 controller (Raspberry Pi)
-diff -Nur linux-4.1.22.orig/drivers/rtc/rtc-ds1307.c linux-4.1.22/drivers/rtc/rtc-ds1307.c
---- linux-4.1.22.orig/drivers/rtc/rtc-ds1307.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/rtc/rtc-ds1307.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/rtc/rtc-ds1307.c linux-4.1.23/drivers/rtc/rtc-ds1307.c
+--- linux-4.1.23.orig/drivers/rtc/rtc-ds1307.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/rtc/rtc-ds1307.c 2016-05-02 22:53:56.000000000 +0200
@@ -1242,6 +1242,14 @@
return 0;
}
@@ -247206,9 +251577,177 @@ diff -Nur linux-4.1.22.orig/drivers/rtc/rtc-ds1307.c linux-4.1.22/drivers/rtc/rt
static struct i2c_driver ds1307_driver = {
.driver = {
.name = "rtc-ds1307",
-diff -Nur linux-4.1.22.orig/drivers/spi/Kconfig linux-4.1.22/drivers/spi/Kconfig
---- linux-4.1.22.orig/drivers/spi/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/spi/Kconfig 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/scsi/aacraid/aacraid.h linux-4.1.23/drivers/scsi/aacraid/aacraid.h
+--- linux-4.1.23.orig/drivers/scsi/aacraid/aacraid.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/scsi/aacraid/aacraid.h 2016-05-02 22:53:56.000000000 +0200
+@@ -939,7 +939,6 @@
+ */
+ struct list_head fiblink;
+ void *data;
+- u32 vector_no;
+ struct hw_fib *hw_fib_va; /* Actual shared object */
+ dma_addr_t hw_fib_pa; /* physical address of hw_fib*/
+ };
+@@ -2099,7 +2098,6 @@
+ #define AAC_OWNER_FIRMWARE 0x106
+
+ const char *aac_driverinfo(struct Scsi_Host *);
+-void aac_fib_vector_assign(struct aac_dev *dev);
+ struct fib *aac_fib_alloc(struct aac_dev *dev);
+ int aac_fib_setup(struct aac_dev *dev);
+ void aac_fib_map_free(struct aac_dev *dev);
+diff -Nur linux-4.1.23.orig/drivers/scsi/aacraid/commsup.c linux-4.1.23/drivers/scsi/aacraid/commsup.c
+--- linux-4.1.23.orig/drivers/scsi/aacraid/commsup.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/scsi/aacraid/commsup.c 2016-05-02 22:53:56.000000000 +0200
+@@ -83,38 +83,13 @@
+
+ void aac_fib_map_free(struct aac_dev *dev)
+ {
+- if (dev->hw_fib_va && dev->max_fib_size) {
+- pci_free_consistent(dev->pdev,
+- (dev->max_fib_size *
+- (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB)),
+- dev->hw_fib_va, dev->hw_fib_pa);
+- }
++ pci_free_consistent(dev->pdev,
++ dev->max_fib_size * (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB),
++ dev->hw_fib_va, dev->hw_fib_pa);
+ dev->hw_fib_va = NULL;
+ dev->hw_fib_pa = 0;
+ }
+
+-void aac_fib_vector_assign(struct aac_dev *dev)
+-{
+- u32 i = 0;
+- u32 vector = 1;
+- struct fib *fibptr = NULL;
+-
+- for (i = 0, fibptr = &dev->fibs[i];
+- i < (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB);
+- i++, fibptr++) {
+- if ((dev->max_msix == 1) ||
+- (i > ((dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB - 1)
+- - dev->vector_cap))) {
+- fibptr->vector_no = 0;
+- } else {
+- fibptr->vector_no = vector;
+- vector++;
+- if (vector == dev->max_msix)
+- vector = 1;
+- }
+- }
+-}
+-
+ /**
+ * aac_fib_setup - setup the fibs
+ * @dev: Adapter to set up
+@@ -176,12 +151,6 @@
+ hw_fib_pa = hw_fib_pa +
+ dev->max_fib_size + sizeof(struct aac_fib_xporthdr);
+ }
+-
+- /*
+- *Assign vector numbers to fibs
+- */
+- aac_fib_vector_assign(dev);
+-
+ /*
+ * Add the fib chain to the free list
+ */
+diff -Nur linux-4.1.23.orig/drivers/scsi/aacraid/src.c linux-4.1.23/drivers/scsi/aacraid/src.c
+--- linux-4.1.23.orig/drivers/scsi/aacraid/src.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/scsi/aacraid/src.c 2016-05-02 22:53:56.000000000 +0200
+@@ -156,8 +156,8 @@
+ break;
+ if (dev->msi_enabled && dev->max_msix > 1)
+ atomic_dec(&dev->rrq_outstanding[vector_no]);
+- dev->host_rrq[index++] = 0;
+ aac_intr_normal(dev, handle-1, 0, isFastResponse, NULL);
++ dev->host_rrq[index++] = 0;
+ if (index == (vector_no + 1) * dev->vector_cap)
+ index = vector_no * dev->vector_cap;
+ dev->host_rrq_idx[vector_no] = index;
+@@ -448,20 +448,36 @@
+ dma_addr_t address;
+ struct aac_fib_xporthdr *pFibX;
+ u16 hdr_size = le16_to_cpu(fib->hw_fib_va->header.Size);
+- u16 vector_no;
+
+ atomic_inc(&q->numpending);
+
+ if (dev->msi_enabled && fib->hw_fib_va->header.Command != AifRequest &&
+ dev->max_msix > 1) {
+- vector_no = fib->vector_no;
++ u_int16_t vector_no, first_choice = 0xffff;
++
++ vector_no = dev->fibs_pushed_no % dev->max_msix;
++ do {
++ vector_no += 1;
++ if (vector_no == dev->max_msix)
++ vector_no = 1;
++ if (atomic_read(&dev->rrq_outstanding[vector_no]) <
++ dev->vector_cap)
++ break;
++ if (0xffff == first_choice)
++ first_choice = vector_no;
++ else if (vector_no == first_choice)
++ break;
++ } while (1);
++ if (vector_no == first_choice)
++ vector_no = 0;
++ atomic_inc(&dev->rrq_outstanding[vector_no]);
++ if (dev->fibs_pushed_no == 0xffffffff)
++ dev->fibs_pushed_no = 0;
++ else
++ dev->fibs_pushed_no++;
+ fib->hw_fib_va->header.Handle += (vector_no << 16);
+- } else {
+- vector_no = 0;
+ }
+
+- atomic_inc(&dev->rrq_outstanding[vector_no]);
+-
+ if (dev->comm_interface == AAC_COMM_MESSAGE_TYPE2) {
+ /* Calculate the amount to the fibsize bits */
+ fibsize = (hdr_size + 127) / 128 - 1;
+diff -Nur linux-4.1.23.orig/drivers/scsi/aic7xxx/aic7xxx_osm.c linux-4.1.23/drivers/scsi/aic7xxx/aic7xxx_osm.c
+--- linux-4.1.23.orig/drivers/scsi/aic7xxx/aic7xxx_osm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/scsi/aic7xxx/aic7xxx_osm.c 2016-05-02 22:53:56.000000000 +0200
+@@ -1337,7 +1337,6 @@
+ case AHC_DEV_Q_TAGGED:
+ scsi_change_queue_depth(sdev,
+ dev->openings + dev->active);
+- break;
+ default:
+ /*
+ * We allow the OS to queue 2 untagged transactions to
+diff -Nur linux-4.1.23.orig/drivers/scsi/be2iscsi/be_main.c linux-4.1.23/drivers/scsi/be2iscsi/be_main.c
+--- linux-4.1.23.orig/drivers/scsi/be2iscsi/be_main.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/scsi/be2iscsi/be_main.c 2016-05-02 22:53:56.000000000 +0200
+@@ -4434,7 +4434,6 @@
+ scsi_host_put(phba->shost);
+ free_kset:
+ iscsi_boot_destroy_kset(phba->boot_kset);
+- phba->boot_kset = NULL;
+ return -ENOMEM;
+ }
+
+diff -Nur linux-4.1.23.orig/drivers/scsi/sg.c linux-4.1.23/drivers/scsi/sg.c
+--- linux-4.1.23.orig/drivers/scsi/sg.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/scsi/sg.c 2016-05-02 22:53:57.000000000 +0200
+@@ -652,8 +652,7 @@
+ else
+ hp->dxfer_direction = (mxsize > 0) ? SG_DXFER_FROM_DEV : SG_DXFER_NONE;
+ hp->dxfer_len = mxsize;
+- if ((hp->dxfer_direction == SG_DXFER_TO_DEV) ||
+- (hp->dxfer_direction == SG_DXFER_TO_FROM_DEV))
++ if (hp->dxfer_direction == SG_DXFER_TO_DEV)
+ hp->dxferp = (char __user *)buf + cmd_size;
+ else
+ hp->dxferp = NULL;
+diff -Nur linux-4.1.23.orig/drivers/spi/Kconfig linux-4.1.23/drivers/spi/Kconfig
+--- linux-4.1.23.orig/drivers/spi/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/spi/Kconfig 2016-05-02 22:53:57.000000000 +0200
@@ -77,7 +77,7 @@
config SPI_BCM2835
@@ -247233,9 +251772,9 @@ diff -Nur linux-4.1.22.orig/drivers/spi/Kconfig linux-4.1.22/drivers/spi/Kconfig
config SPI_BFIN5XX
tristate "SPI controller driver for ADI Blackfin5xx"
depends on BLACKFIN && !BF60x
-diff -Nur linux-4.1.22.orig/drivers/spi/Makefile linux-4.1.22/drivers/spi/Makefile
---- linux-4.1.22.orig/drivers/spi/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/spi/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/spi/Makefile linux-4.1.23/drivers/spi/Makefile
+--- linux-4.1.23.orig/drivers/spi/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/spi/Makefile 2016-05-02 22:53:57.000000000 +0200
@@ -20,6 +20,7 @@
obj-$(CONFIG_SPI_BCM63XX_HSSPI) += spi-bcm63xx-hsspi.o
obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o
@@ -247244,9 +251783,9 @@ diff -Nur linux-4.1.22.orig/drivers/spi/Makefile linux-4.1.22/drivers/spi/Makefi
obj-$(CONFIG_SPI_BFIN_SPORT) += spi-bfin-sport.o
obj-$(CONFIG_SPI_BITBANG) += spi-bitbang.o
obj-$(CONFIG_SPI_BUTTERFLY) += spi-butterfly.o
-diff -Nur linux-4.1.22.orig/drivers/spi/spi-bcm2708.c linux-4.1.22/drivers/spi/spi-bcm2708.c
---- linux-4.1.22.orig/drivers/spi/spi-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/spi/spi-bcm2708.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/spi/spi-bcm2708.c linux-4.1.23/drivers/spi/spi-bcm2708.c
+--- linux-4.1.23.orig/drivers/spi/spi-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/spi/spi-bcm2708.c 2016-05-02 22:53:57.000000000 +0200
@@ -0,0 +1,628 @@
+/*
+ * Driver for Broadcom BCM2708 SPI Controllers
@@ -247876,9 +252415,9 @@ diff -Nur linux-4.1.22.orig/drivers/spi/spi-bcm2708.c linux-4.1.22/drivers/spi/s
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
-diff -Nur linux-4.1.22.orig/drivers/spi/spi-bcm2835.c linux-4.1.22/drivers/spi/spi-bcm2835.c
---- linux-4.1.22.orig/drivers/spi/spi-bcm2835.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/spi/spi-bcm2835.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/spi/spi-bcm2835.c linux-4.1.23/drivers/spi/spi-bcm2835.c
+--- linux-4.1.23.orig/drivers/spi/spi-bcm2835.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/spi/spi-bcm2835.c 2016-05-02 22:53:57.000000000 +0200
@@ -20,18 +20,22 @@
* GNU General Public License for more details.
*/
@@ -248437,9 +252976,9 @@ diff -Nur linux-4.1.22.orig/drivers/spi/spi-bcm2835.c linux-4.1.22/drivers/spi/s
return 0;
}
-diff -Nur linux-4.1.22.orig/drivers/spi/spidev.c linux-4.1.22/drivers/spi/spidev.c
---- linux-4.1.22.orig/drivers/spi/spidev.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/spi/spidev.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/spi/spidev.c linux-4.1.23/drivers/spi/spidev.c
+--- linux-4.1.23.orig/drivers/spi/spidev.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/spi/spidev.c 2016-05-02 22:53:57.000000000 +0200
@@ -707,6 +707,7 @@
#ifdef CONFIG_OF
static const struct of_device_id spidev_dt_ids[] = {
@@ -248448,9 +252987,55 @@ diff -Nur linux-4.1.22.orig/drivers/spi/spidev.c linux-4.1.22/drivers/spi/spidev
{},
};
MODULE_DEVICE_TABLE(of, spidev_dt_ids);
-diff -Nur linux-4.1.22.orig/drivers/staging/fbtft/fbtft-core.c linux-4.1.22/drivers/staging/fbtft/fbtft-core.c
---- linux-4.1.22.orig/drivers/staging/fbtft/fbtft-core.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/staging/fbtft/fbtft-core.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/staging/comedi/drivers/ni_mio_common.c linux-4.1.23/drivers/staging/comedi/drivers/ni_mio_common.c
+--- linux-4.1.23.orig/drivers/staging/comedi/drivers/ni_mio_common.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/staging/comedi/drivers/ni_mio_common.c 2016-05-02 22:53:57.000000000 +0200
+@@ -247,24 +247,24 @@
+ {
+ if (dev->mmio)
+ writel(data, dev->mmio + reg);
+- else
+- outl(data, dev->iobase + reg);
++
++ outl(data, dev->iobase + reg);
+ }
+
+ static void ni_writew(struct comedi_device *dev, uint16_t data, int reg)
+ {
+ if (dev->mmio)
+ writew(data, dev->mmio + reg);
+- else
+- outw(data, dev->iobase + reg);
++
++ outw(data, dev->iobase + reg);
+ }
+
+ static void ni_writeb(struct comedi_device *dev, uint8_t data, int reg)
+ {
+ if (dev->mmio)
+ writeb(data, dev->mmio + reg);
+- else
+- outb(data, dev->iobase + reg);
++
++ outb(data, dev->iobase + reg);
+ }
+
+ static uint32_t ni_readl(struct comedi_device *dev, int reg)
+diff -Nur linux-4.1.23.orig/drivers/staging/comedi/drivers/ni_tiocmd.c linux-4.1.23/drivers/staging/comedi/drivers/ni_tiocmd.c
+--- linux-4.1.23.orig/drivers/staging/comedi/drivers/ni_tiocmd.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/staging/comedi/drivers/ni_tiocmd.c 2016-05-02 22:53:57.000000000 +0200
+@@ -92,7 +92,7 @@
+ unsigned long flags;
+ int ret = 0;
+
+- if (trig_num != cmd->start_arg)
++ if (trig_num != cmd->start_src)
+ return -EINVAL;
+
+ spin_lock_irqsave(&counter->lock, flags);
+diff -Nur linux-4.1.23.orig/drivers/staging/fbtft/fbtft-core.c linux-4.1.23/drivers/staging/fbtft/fbtft-core.c
+--- linux-4.1.23.orig/drivers/staging/fbtft/fbtft-core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/staging/fbtft/fbtft-core.c 2016-05-02 22:53:57.000000000 +0200
@@ -1074,6 +1074,11 @@
p = of_prop_next_u32(prop, NULL, &val);
if (!p)
@@ -248463,9 +253048,9 @@ diff -Nur linux-4.1.22.orig/drivers/staging/fbtft/fbtft-core.c linux-4.1.22/driv
while (p) {
if (val & FBTFT_OF_INIT_CMD) {
val &= 0xFFFF;
-diff -Nur linux-4.1.22.orig/drivers/staging/media/lirc/Kconfig linux-4.1.22/drivers/staging/media/lirc/Kconfig
---- linux-4.1.22.orig/drivers/staging/media/lirc/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/staging/media/lirc/Kconfig 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/staging/media/lirc/Kconfig linux-4.1.23/drivers/staging/media/lirc/Kconfig
+--- linux-4.1.23.orig/drivers/staging/media/lirc/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/staging/media/lirc/Kconfig 2016-05-02 22:53:57.000000000 +0200
@@ -32,6 +32,12 @@
help
Driver for Homebrew Parallel Port Receivers
@@ -248479,9 +253064,9 @@ diff -Nur linux-4.1.22.orig/drivers/staging/media/lirc/Kconfig linux-4.1.22/driv
config LIRC_SASEM
tristate "Sasem USB IR Remote"
depends on LIRC && USB
-diff -Nur linux-4.1.22.orig/drivers/staging/media/lirc/Makefile linux-4.1.22/drivers/staging/media/lirc/Makefile
---- linux-4.1.22.orig/drivers/staging/media/lirc/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/staging/media/lirc/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/staging/media/lirc/Makefile linux-4.1.23/drivers/staging/media/lirc/Makefile
+--- linux-4.1.23.orig/drivers/staging/media/lirc/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/staging/media/lirc/Makefile 2016-05-02 22:53:57.000000000 +0200
@@ -6,6 +6,7 @@
obj-$(CONFIG_LIRC_BT829) += lirc_bt829.o
obj-$(CONFIG_LIRC_IMON) += lirc_imon.o
@@ -248490,9 +253075,9 @@ diff -Nur linux-4.1.22.orig/drivers/staging/media/lirc/Makefile linux-4.1.22/dri
obj-$(CONFIG_LIRC_SASEM) += lirc_sasem.o
obj-$(CONFIG_LIRC_SERIAL) += lirc_serial.o
obj-$(CONFIG_LIRC_SIR) += lirc_sir.o
-diff -Nur linux-4.1.22.orig/drivers/staging/media/lirc/lirc_rpi.c linux-4.1.22/drivers/staging/media/lirc/lirc_rpi.c
---- linux-4.1.22.orig/drivers/staging/media/lirc/lirc_rpi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/staging/media/lirc/lirc_rpi.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/staging/media/lirc/lirc_rpi.c linux-4.1.23/drivers/staging/media/lirc/lirc_rpi.c
+--- linux-4.1.23.orig/drivers/staging/media/lirc/lirc_rpi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/staging/media/lirc/lirc_rpi.c 2016-05-02 22:53:57.000000000 +0200
@@ -0,0 +1,765 @@
+/*
+ * lirc_rpi.c
@@ -248769,7 +253354,7 @@ diff -Nur linux-4.1.22.orig/drivers/staging/media/lirc/lirc_rpi.c linux-4.1.22/d
+ data = PULSE_MASK; /* really long time */
+ if (!(signal^sense)) {
+ /* sanity check */
-+ printk(KERN_WARNING LIRC_DRIVER_NAME
++ printk(KERN_DEBUG LIRC_DRIVER_NAME
+ ": AIEEEE: %d %d %lx %lx %lx %lx\n",
+ signal, sense, tv.tv_sec, lasttv.tv_sec,
+ tv.tv_usec, lasttv.tv_usec);
@@ -249259,9 +253844,21 @@ diff -Nur linux-4.1.22.orig/drivers/staging/media/lirc/lirc_rpi.c linux-4.1.22/d
+
+module_param(debug, bool, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(debug, "Enable debugging messages");
-diff -Nur linux-4.1.22.orig/drivers/thermal/Kconfig linux-4.1.22/drivers/thermal/Kconfig
---- linux-4.1.22.orig/drivers/thermal/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/thermal/Kconfig 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/target/target_core_transport.c linux-4.1.23/drivers/target/target_core_transport.c
+--- linux-4.1.23.orig/drivers/target/target_core_transport.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/target/target_core_transport.c 2016-05-02 22:53:57.000000000 +0200
+@@ -2617,6 +2617,8 @@
+
+ list_for_each_entry_safe(se_cmd, tmp_cmd,
+ &se_sess->sess_wait_list, se_cmd_list) {
++ list_del_init(&se_cmd->se_cmd_list);
++
+ pr_debug("Waiting for se_cmd: %p t_state: %d, fabric state:"
+ " %d\n", se_cmd, se_cmd->t_state,
+ se_cmd->se_tfo->get_cmd_state(se_cmd));
+diff -Nur linux-4.1.23.orig/drivers/thermal/Kconfig linux-4.1.23/drivers/thermal/Kconfig
+--- linux-4.1.23.orig/drivers/thermal/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/thermal/Kconfig 2016-05-02 22:53:57.000000000 +0200
@@ -238,6 +238,13 @@
enforce idle time which results in more package C-state residency. The
user interface is exposed via generic thermal framework.
@@ -249276,9 +253873,9 @@ diff -Nur linux-4.1.22.orig/drivers/thermal/Kconfig linux-4.1.22/drivers/thermal
config X86_PKG_TEMP_THERMAL
tristate "X86 package temperature thermal driver"
depends on X86_THERMAL_VECTOR
-diff -Nur linux-4.1.22.orig/drivers/thermal/Makefile linux-4.1.22/drivers/thermal/Makefile
---- linux-4.1.22.orig/drivers/thermal/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/thermal/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/thermal/Makefile linux-4.1.23/drivers/thermal/Makefile
+--- linux-4.1.23.orig/drivers/thermal/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/thermal/Makefile 2016-05-02 22:53:57.000000000 +0200
@@ -33,6 +33,7 @@
obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o
obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o
@@ -249287,9 +253884,9 @@ diff -Nur linux-4.1.22.orig/drivers/thermal/Makefile linux-4.1.22/drivers/therma
obj-$(CONFIG_X86_PKG_TEMP_THERMAL) += x86_pkg_temp_thermal.o
obj-$(CONFIG_INTEL_SOC_DTS_THERMAL) += intel_soc_dts_thermal.o
obj-$(CONFIG_TI_SOC_THERMAL) += ti-soc-thermal/
-diff -Nur linux-4.1.22.orig/drivers/thermal/bcm2835-thermal.c linux-4.1.22/drivers/thermal/bcm2835-thermal.c
---- linux-4.1.22.orig/drivers/thermal/bcm2835-thermal.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/thermal/bcm2835-thermal.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/thermal/bcm2835-thermal.c linux-4.1.23/drivers/thermal/bcm2835-thermal.c
+--- linux-4.1.23.orig/drivers/thermal/bcm2835-thermal.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/thermal/bcm2835-thermal.c 2016-05-02 22:53:57.000000000 +0200
@@ -0,0 +1,141 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -249432,9 +254029,40 @@ diff -Nur linux-4.1.22.orig/drivers/thermal/bcm2835-thermal.c linux-4.1.22/drive
+MODULE_AUTHOR("Noralf Trønnes");
+MODULE_DESCRIPTION("Thermal driver for bcm2835 chip");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/drivers/tty/serial/8250/8250_core.c linux-4.1.22/drivers/tty/serial/8250/8250_core.c
---- linux-4.1.22.orig/drivers/tty/serial/8250/8250_core.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/tty/serial/8250/8250_core.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/thermal/thermal_core.c linux-4.1.23/drivers/thermal/thermal_core.c
+--- linux-4.1.23.orig/drivers/thermal/thermal_core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/thermal/thermal_core.c 2016-05-02 22:53:57.000000000 +0200
+@@ -391,10 +391,6 @@
+ {
+ enum thermal_trip_type type;
+
+- /* Ignore disabled trip points */
+- if (test_bit(trip, &tz->trips_disabled))
+- return;
+-
+ tz->ops->get_trip_type(tz, trip, &type);
+
+ if (type == THERMAL_TRIP_CRITICAL || type == THERMAL_TRIP_HOT)
+@@ -1562,15 +1558,9 @@
+ goto unregister;
+
+ for (count = 0; count < trips; count++) {
+- if (tz->ops->get_trip_type(tz, count, &trip_type))
+- set_bit(count, &tz->trips_disabled);
++ tz->ops->get_trip_type(tz, count, &trip_type);
+ if (trip_type == THERMAL_TRIP_PASSIVE)
+ passive = 1;
+- if (tz->ops->get_trip_temp(tz, count, &trip_temp))
+- set_bit(count, &tz->trips_disabled);
+- /* Check for bogus trip points */
+- if (trip_temp == 0)
+- set_bit(count, &tz->trips_disabled);
+ }
+
+ if (!passive) {
+diff -Nur linux-4.1.23.orig/drivers/tty/serial/8250/8250_core.c linux-4.1.23/drivers/tty/serial/8250/8250_core.c
+--- linux-4.1.23.orig/drivers/tty/serial/8250/8250_core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/tty/serial/8250/8250_core.c 2016-05-02 22:53:57.000000000 +0200
@@ -3270,6 +3270,8 @@
if (nr_uarts > UART_NR)
@@ -249444,9 +254072,9 @@ diff -Nur linux-4.1.22.orig/drivers/tty/serial/8250/8250_core.c linux-4.1.22/dri
for (i = 0; i < nr_uarts; i++) {
struct uart_8250_port *up = &serial8250_ports[i];
-diff -Nur linux-4.1.22.orig/drivers/tty/serial/amba-pl011.c linux-4.1.22/drivers/tty/serial/amba-pl011.c
---- linux-4.1.22.orig/drivers/tty/serial/amba-pl011.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/tty/serial/amba-pl011.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/tty/serial/amba-pl011.c linux-4.1.23/drivers/tty/serial/amba-pl011.c
+--- linux-4.1.23.orig/drivers/tty/serial/amba-pl011.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/tty/serial/amba-pl011.c 2016-05-02 22:53:57.000000000 +0200
@@ -85,7 +85,7 @@
static unsigned int get_fifosize_arm(struct amba_device *dev)
@@ -249469,9 +254097,9 @@ diff -Nur linux-4.1.22.orig/drivers/tty/serial/amba-pl011.c linux-4.1.22/drivers
base = devm_ioremap(&dev->dev, dev->res.start,
resource_size(&dev->res));
-diff -Nur linux-4.1.22.orig/drivers/usb/Makefile linux-4.1.22/drivers/usb/Makefile
---- linux-4.1.22.orig/drivers/usb/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/usb/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/Makefile linux-4.1.23/drivers/usb/Makefile
+--- linux-4.1.23.orig/drivers/usb/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -7,6 +7,7 @@
obj-$(CONFIG_USB) += core/
obj-$(CONFIG_USB_SUPPORT) += phy/
@@ -249480,9 +254108,42 @@ diff -Nur linux-4.1.22.orig/drivers/usb/Makefile linux-4.1.22/drivers/usb/Makefi
obj-$(CONFIG_USB_DWC3) += dwc3/
obj-$(CONFIG_USB_DWC2) += dwc2/
obj-$(CONFIG_USB_ISP1760) += isp1760/
-diff -Nur linux-4.1.22.orig/drivers/usb/core/generic.c linux-4.1.22/drivers/usb/core/generic.c
---- linux-4.1.22.orig/drivers/usb/core/generic.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/usb/core/generic.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/class/cdc-acm.c linux-4.1.23/drivers/usb/class/cdc-acm.c
+--- linux-4.1.23.orig/drivers/usb/class/cdc-acm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/class/cdc-acm.c 2016-05-02 22:53:58.000000000 +0200
+@@ -1118,9 +1118,6 @@
+ if (quirks == NO_UNION_NORMAL) {
+ data_interface = usb_ifnum_to_if(usb_dev, 1);
+ control_interface = usb_ifnum_to_if(usb_dev, 0);
+- /* we would crash */
+- if (!data_interface || !control_interface)
+- return -ENODEV;
+ goto skip_normal_probe;
+ }
+
+diff -Nur linux-4.1.23.orig/drivers/usb/core/driver.c linux-4.1.23/drivers/usb/core/driver.c
+--- linux-4.1.23.orig/drivers/usb/core/driver.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/core/driver.c 2016-05-02 22:53:58.000000000 +0200
+@@ -499,15 +499,11 @@
+ int usb_driver_claim_interface(struct usb_driver *driver,
+ struct usb_interface *iface, void *priv)
+ {
+- struct device *dev;
++ struct device *dev = &iface->dev;
+ struct usb_device *udev;
+ int retval = 0;
+ int lpm_disable_error;
+
+- if (!iface)
+- return -ENODEV;
+-
+- dev = &iface->dev;
+ if (dev->driver)
+ return -EBUSY;
+
+diff -Nur linux-4.1.23.orig/drivers/usb/core/generic.c linux-4.1.23/drivers/usb/core/generic.c
+--- linux-4.1.23.orig/drivers/usb/core/generic.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/core/generic.c 2016-05-02 22:53:58.000000000 +0200
@@ -152,6 +152,7 @@
dev_warn(&udev->dev,
"no configuration chosen from %d choice%s\n",
@@ -249491,10 +254152,61 @@ diff -Nur linux-4.1.22.orig/drivers/usb/core/generic.c linux-4.1.22/drivers/usb/
}
return i;
}
-diff -Nur linux-4.1.22.orig/drivers/usb/core/hub.c linux-4.1.22/drivers/usb/core/hub.c
---- linux-4.1.22.orig/drivers/usb/core/hub.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/usb/core/hub.c 2016-04-29 18:02:48.000000000 +0200
-@@ -4933,7 +4933,7 @@
+diff -Nur linux-4.1.23.orig/drivers/usb/core/hub.c linux-4.1.23/drivers/usb/core/hub.c
+--- linux-4.1.23.orig/drivers/usb/core/hub.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/core/hub.c 2016-05-02 22:53:58.000000000 +0200
+@@ -4237,7 +4237,7 @@
+ {
+ struct usb_device *hdev = hub->hdev;
+ struct usb_hcd *hcd = bus_to_hcd(hdev->bus);
+- int retries, operations, retval, i;
++ int i, j, retval;
+ unsigned delay = HUB_SHORT_RESET_TIME;
+ enum usb_device_speed oldspeed = udev->speed;
+ const char *speed;
+@@ -4339,7 +4339,7 @@
+ * first 8 bytes of the device descriptor to get the ep0 maxpacket
+ * value.
+ */
+- for (retries = 0; retries < GET_DESCRIPTOR_TRIES; (++retries, msleep(100))) {
++ for (i = 0; i < GET_DESCRIPTOR_TRIES; (++i, msleep(100))) {
+ bool did_new_scheme = false;
+
+ if (use_new_scheme(udev, retry_counter)) {
+@@ -4366,7 +4366,7 @@
+ * 255 is for WUSB devices, we actually need to use
+ * 512 (WUSB1.0[4.8.1]).
+ */
+- for (operations = 0; operations < 3; ++operations) {
++ for (j = 0; j < 3; ++j) {
+ buf->bMaxPacketSize0 = 0;
+ r = usb_control_msg(udev, usb_rcvaddr0pipe(),
+ USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
+@@ -4386,13 +4386,7 @@
+ r = -EPROTO;
+ break;
+ }
+- /*
+- * Some devices time out if they are powered on
+- * when already connected. They need a second
+- * reset. But only on the first attempt,
+- * lest we get into a time out/reset loop
+- */
+- if (r == 0 || (r == -ETIMEDOUT && retries == 0))
++ if (r == 0)
+ break;
+ }
+ udev->descriptor.bMaxPacketSize0 =
+@@ -4424,7 +4418,7 @@
+ * authorization will assign the final address.
+ */
+ if (udev->wusb == 0) {
+- for (operations = 0; operations < SET_ADDRESS_TRIES; ++operations) {
++ for (j = 0; j < SET_ADDRESS_TRIES; ++j) {
+ retval = hub_set_address(udev, devnum);
+ if (retval >= 0)
+ break;
+@@ -4933,7 +4927,7 @@
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
u16 status = 0, unused;
@@ -249503,9 +254215,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/core/hub.c linux-4.1.22/drivers/usb/core
usb_clear_port_feature(hdev, port1,
USB_PORT_FEAT_C_OVER_CURRENT);
msleep(100); /* Cool down */
-diff -Nur linux-4.1.22.orig/drivers/usb/core/message.c linux-4.1.22/drivers/usb/core/message.c
---- linux-4.1.22.orig/drivers/usb/core/message.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/usb/core/message.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/core/message.c linux-4.1.23/drivers/usb/core/message.c
+--- linux-4.1.23.orig/drivers/usb/core/message.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/core/message.c 2016-05-02 22:53:58.000000000 +0200
@@ -1872,6 +1872,85 @@
if (cp->string == NULL &&
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
@@ -249592,9 +254304,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/core/message.c linux-4.1.22/drivers/usb/
/* Now that the interfaces are installed, re-enable LPM. */
usb_unlocked_enable_lpm(dev);
-diff -Nur linux-4.1.22.orig/drivers/usb/core/otg_whitelist.h linux-4.1.22/drivers/usb/core/otg_whitelist.h
---- linux-4.1.22.orig/drivers/usb/core/otg_whitelist.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/usb/core/otg_whitelist.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/core/otg_whitelist.h linux-4.1.23/drivers/usb/core/otg_whitelist.h
+--- linux-4.1.23.orig/drivers/usb/core/otg_whitelist.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/core/otg_whitelist.h 2016-05-02 22:53:58.000000000 +0200
@@ -19,33 +19,82 @@
static struct usb_device_id whitelist_table [] = {
@@ -249748,9 +254460,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/core/otg_whitelist.h linux-4.1.22/driver
return 0;
}
-diff -Nur linux-4.1.22.orig/drivers/usb/gadget/file_storage.c linux-4.1.22/drivers/usb/gadget/file_storage.c
---- linux-4.1.22.orig/drivers/usb/gadget/file_storage.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/gadget/file_storage.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/gadget/file_storage.c linux-4.1.23/drivers/usb/gadget/file_storage.c
+--- linux-4.1.23.orig/drivers/usb/gadget/file_storage.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/gadget/file_storage.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,3676 @@
+/*
+ * file_storage.c -- File-backed USB Storage Gadget, for USB development
@@ -253428,9 +258140,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/gadget/file_storage.c linux-4.1.22/drive
+ kref_put(&fsg->ref, fsg_release);
+}
+module_exit(fsg_cleanup);
-diff -Nur linux-4.1.22.orig/drivers/usb/host/Kconfig linux-4.1.22/drivers/usb/host/Kconfig
---- linux-4.1.22.orig/drivers/usb/host/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/usb/host/Kconfig 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/Kconfig linux-4.1.23/drivers/usb/host/Kconfig
+--- linux-4.1.23.orig/drivers/usb/host/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/host/Kconfig 2016-05-02 22:53:58.000000000 +0200
@@ -738,6 +738,19 @@
To compile this driver a module, choose M here: the module
will be called "hwa-hc".
@@ -253451,9 +258163,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/Kconfig linux-4.1.22/drivers/usb/ho
config USB_IMX21_HCD
tristate "i.MX21 HCD support"
depends on ARM && ARCH_MXC
-diff -Nur linux-4.1.22.orig/drivers/usb/host/Makefile linux-4.1.22/drivers/usb/host/Makefile
---- linux-4.1.22.orig/drivers/usb/host/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/usb/host/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/Makefile linux-4.1.23/drivers/usb/host/Makefile
+--- linux-4.1.23.orig/drivers/usb/host/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/host/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -67,6 +67,8 @@
obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o
obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o
@@ -253463,9 +258175,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/Makefile linux-4.1.22/drivers/usb/h
obj-$(CONFIG_USB_IMX21_HCD) += imx21-hcd.o
obj-$(CONFIG_USB_FSL_MPH_DR_OF) += fsl-mph-dr-of.o
obj-$(CONFIG_USB_HCD_BCMA) += bcma-hcd.o
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile linux-4.1.22/drivers/usb/host/dwc_common_port/Makefile
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/Makefile linux-4.1.23/drivers/usb/host/dwc_common_port/Makefile
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,58 @@
+#
+# Makefile for DWC_common library
@@ -253525,9 +258237,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile linux-4.1.
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-4.1.22/drivers/usb/host/dwc_common_port/Makefile.fbsd
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile.fbsd 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/Makefile.fbsd 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-4.1.23/drivers/usb/host/dwc_common_port/Makefile.fbsd
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/Makefile.fbsd 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/Makefile.fbsd 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,17 @@
+CFLAGS += -I/sys/i386/compile/GENERIC -I/sys/i386/include -I/usr/include
+CFLAGS += -DDWC_FREEBSD
@@ -253546,9 +258258,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile.fbsd linux
+ dwc_common_fbsd.c dwc_mem.c
+
+.include <bsd.kmod.mk>
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile.linux linux-4.1.22/drivers/usb/host/dwc_common_port/Makefile.linux
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile.linux 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/Makefile.linux 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/Makefile.linux linux-4.1.23/drivers/usb/host/dwc_common_port/Makefile.linux
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/Makefile.linux 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/Makefile.linux 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,49 @@
+#
+# Makefile for DWC_common library
@@ -253599,9 +258311,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/Makefile.linux linu
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/changes.txt linux-4.1.22/drivers/usb/host/dwc_common_port/changes.txt
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/changes.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/changes.txt 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/changes.txt linux-4.1.23/drivers/usb/host/dwc_common_port/changes.txt
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/changes.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/changes.txt 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,174 @@
+
+dwc_read_reg32() and friends now take an additional parameter, a pointer to an
@@ -253777,9 +258489,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/changes.txt linux-4
+A DWC_LIBMODULE #define has also been added. If this is not defined, then the
+module code in dwc_common_linux.c is not compiled in. This allows linking the
+library code directly into a driver module, instead of as a standalone module.
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-4.1.22/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-4.1.23/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,270 @@
+# Doxyfile 1.4.5
+
@@ -254051,9 +258763,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/doc/doxygen.cfg lin
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_cc.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_cc.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_cc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_cc.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_cc.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_cc.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_cc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_cc.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,532 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.c $
@@ -254587,9 +259299,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_cc.c linux-4.1.
+}
+
+#endif /* DWC_CCLIB */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_cc.h linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_cc.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_cc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_cc.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_cc.h linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_cc.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_cc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_cc.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,224 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.h $
@@ -254815,9 +259527,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_cc.h linux-4.1.
+#endif
+
+#endif /* _DWC_CC_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1308 @@
+#include "dwc_os.h"
+#include "dwc_list.h"
@@ -256127,9 +260839,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c l
+{
+ return wq->pending;
+}
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_linux.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_common_linux.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_common_linux.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_common_linux.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_common_linux.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_common_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_common_linux.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1434 @@
+#include <linux/kernel.h>
+#include <linux/init.h>
@@ -257565,9 +262277,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_linux.c
+MODULE_LICENSE ("GPL");
+
+#endif /* DWC_LIBMODULE */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1275 @@
+#include "dwc_os.h"
+#include "dwc_list.h"
@@ -258844,9 +263556,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c l
+{
+ return wq->pending;
+}
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_crypto.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_crypto.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_crypto.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_crypto.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_crypto.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_crypto.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,308 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.c $
@@ -259156,9 +263868,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-
+}
+
+#endif /* DWC_CRYPTOLIB */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_crypto.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_crypto.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_crypto.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_crypto.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_crypto.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_crypto.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,111 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.h $
@@ -259271,9 +263983,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-
+#endif
+
+#endif /* _DWC_CRYPTO_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_dh.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_dh.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_dh.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_dh.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_dh.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_dh.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_dh.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_dh.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,291 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_dh.c $
@@ -259566,9 +264278,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_dh.c linux-4.1.
+#endif /* !CONFIG_MACH_IPMATE */
+
+#endif /* DWC_CRYPTOLIB */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_dh.h linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_dh.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_dh.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_dh.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_dh.h linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_dh.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_dh.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_dh.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,106 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_dh.h $
@@ -259676,9 +264388,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_dh.h linux-4.1.
+#endif
+
+#endif /* _DWC_DH_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_list.h linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_list.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_list.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_list.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_list.h linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_list.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_list.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_list.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,594 @@
+/* $OpenBSD: queue.h,v 1.26 2004/05/04 16:59:32 grange Exp $ */
+/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */
@@ -260274,9 +264986,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_list.h linux-4.
+#endif
+
+#endif /* _DWC_LIST_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_mem.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_mem.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_mem.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_mem.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_mem.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_mem.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_mem.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_mem.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,245 @@
+/* Memory Debugging */
+#ifdef DWC_DEBUG_MEMORY
@@ -260523,9 +265235,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_mem.c linux-4.1
+}
+
+#endif /* DWC_DEBUG_MEMORY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_modpow.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_modpow.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_modpow.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_modpow.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_modpow.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_modpow.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,636 @@
+/* Bignum routines adapted from PUTTY sources. PuTTY copyright notice follows.
+ *
@@ -261163,9 +265875,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-
+#endif /* CONFIG_MACH_IPMATE */
+
+#endif /*DWC_CRYPTOLIB */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_modpow.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_modpow.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_modpow.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_modpow.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_modpow.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_modpow.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,34 @@
+/*
+ * dwc_modpow.h
@@ -261201,9 +265913,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-
+#endif
+
+#endif /* _LINUX_BIGNUM_H */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_notifier.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_notifier.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_notifier.c 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_notifier.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_notifier.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_notifier.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,319 @@
+#ifdef DWC_NOTIFYLIB
+
@@ -261524,9 +266236,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_notifier.c linu
+}
+
+#endif /* DWC_NOTIFYLIB */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_notifier.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_notifier.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_notifier.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_notifier.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_notifier.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_notifier.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,122 @@
+
+#ifndef __DWC_NOTIFIER_H__
@@ -261650,9 +266362,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_notifier.h linu
+#endif
+
+#endif /* __DWC_NOTIFIER_H__ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_os.h linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_os.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_os.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/dwc_os.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_os.h linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_os.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/dwc_os.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/dwc_os.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1276 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_os.h $
@@ -262930,9 +267642,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/dwc_os.h linux-4.1.
+#endif
+
+#endif /* _DWC_OS_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/usb.h linux-4.1.22/drivers/usb/host/dwc_common_port/usb.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_common_port/usb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_common_port/usb.h 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_common_port/usb.h linux-4.1.23/drivers/usb/host/dwc_common_port/usb.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_common_port/usb.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_common_port/usb.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,946 @@
+/*
+ * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -263880,9 +268592,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_common_port/usb.h linux-4.1.22/
+#endif
+
+#endif /* _USB_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/Makefile linux-4.1.22/drivers/usb/host/dwc_otg/Makefile
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/Makefile 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/Makefile linux-4.1.23/drivers/usb/host/dwc_otg/Makefile
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,82 @@
+#
+# Makefile for DWC_otg Highspeed USB controller driver
@@ -263966,9 +268678,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/Makefile linux-4.1.22/drive
+ rm -rf *.o *.ko .*cmd *.mod.c .tmp_versions Module.symvers
+
+endif
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-4.1.22/drivers/usb/host/dwc_otg/doc/doxygen.cfg
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/doc/doxygen.cfg 2016-04-29 18:02:48.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-4.1.23/drivers/usb/host/dwc_otg/doc/doxygen.cfg
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/doc/doxygen.cfg 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,224 @@
+# Doxyfile 1.3.9.1
+
@@ -264194,9 +268906,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-4.1.2
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dummy_audio.c linux-4.1.22/drivers/usb/host/dwc_otg/dummy_audio.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dummy_audio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dummy_audio.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dummy_audio.c linux-4.1.23/drivers/usb/host/dwc_otg/dummy_audio.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dummy_audio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dummy_audio.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1575 @@
+/*
+ * zero.c -- Gadget Zero, for USB development
@@ -265773,9 +270485,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dummy_audio.c linux-4.1.22/
+ remove_proc_entry("isoc_test", NULL);
+}
+module_exit (cleanup);
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_cfi_common.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_cfi_common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_cfi_common.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_cfi_common.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_cfi_common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_cfi_common.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,142 @@
+/* ==========================================================================
+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
@@ -265919,9 +270631,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-4.1.
+typedef struct cfi_string cfi_string_t;
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_adp.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_adp.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_adp.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_adp.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,854 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.c $
@@ -266777,9 +271489,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-4.1.22/
+#endif
+ return 1;
+}
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_adp.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_adp.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_adp.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_adp.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,80 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.h $
@@ -266861,9 +271573,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-4.1.22/
+extern int32_t dwc_otg_adp_handle_srp_intr(dwc_otg_core_if_t * core_if);
+
+#endif //__DWC_OTG_ADP_H__
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_attr.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_attr.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_attr.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_attr.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1210 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.c $
@@ -268075,9 +272787,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-4.1.22
+ device_remove_file(&dev->dev, &dev_attr_sleep_status);
+#endif
+}
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_attr.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_attr.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_attr.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_attr.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,89 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.h $
@@ -268168,9 +272880,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-4.1.22
+#endif
+ );
+#endif
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1876 @@
+/* ==========================================================================
+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
@@ -270048,9 +274760,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-4.1.22/
+}
+
+#endif //DWC_UTE_CFI
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,320 @@
+/* ==========================================================================
+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
@@ -270372,9 +275084,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-4.1.22/
+int cfi_setup(struct dwc_otg_pcd *pcd, struct cfi_usb_ctrlrequest *ctrl);
+
+#endif /* (__DWC_OTG_CFI_H__) */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cil.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cil.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cil.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cil.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,7141 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.c $
@@ -277517,9 +282229,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-4.1.22/
+ dwc_otg_pcd_start_srp_timer(core_if);
+ return;
+}
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cil.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cil.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cil.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cil.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1464 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.h $
@@ -278985,9 +283697,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-4.1.22/
+//////////////////////////////////////////////////////////////////////
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1594 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil_intr.c $
@@ -280583,9 +285295,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-4.
+ DWC_SPINUNLOCK(core_if->lock);
+ return retval;
+}
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,705 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_core_if.h $
@@ -281292,9 +286004,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-4.1
+/** @} */
+
+#endif /* __DWC_CORE_IF_H__ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,117 @@
+/* ==========================================================================
+ *
@@ -281413,9 +286125,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-4.1.22/
+
+#endif /*DEBUG*/
+#endif
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_driver.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_driver.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_driver.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1757 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.c $
@@ -283174,9 +287886,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-4.1.
+ </td></tr>
+
+*/
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_driver.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_driver.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_driver.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_driver.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,86 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.h $
@@ -283264,9 +287976,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-4.1.
+#endif
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1355 @@
+/*
+ * dwc_otg_fiq_fsm.c - The finite state machine FIQ
@@ -284623,9 +289335,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-4.1
+ mb();
+ fiq_fsm_spin_unlock(&state->lock);
+}
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,370 @@
+/*
+ * dwc_otg_fiq_fsm.h - Finite state machine FIQ header definitions
@@ -284997,9 +289709,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-4.1
+extern void dwc_otg_fiq_nop(struct fiq_state *state);
+
+#endif /* DWC_OTG_FIQ_FSM_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,80 @@
+/*
+ * dwc_otg_fiq_fsm.S - assembly stub for the FSM FIQ
@@ -285081,9 +289793,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-4.
+ subs pc, lr, #4;
+_dwc_otg_fiq_stub_end:
+END(_dwc_otg_fiq_stub)
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,4257 @@
+
+/* ==========================================================================
@@ -289342,9 +294054,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-4.1.22/
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,862 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.h $
@@ -290208,9 +294920,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-4.1.22/
+#endif
+#endif
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1132 @@
+/*==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_ddma.c $
@@ -291344,9 +296056,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-4.
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,417 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_if.h $
@@ -291765,9 +296477,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-4.1.
+
+#endif /* __DWC_HCD_IF_H__ */
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,2727 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_intr.c $
@@ -294496,9 +299208,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-4.
+ return retval;
+}
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,999 @@
+
+/* ==========================================================================
@@ -295499,9 +300211,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-4
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,957 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_queue.c $
@@ -296460,9 +301172,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-4
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,188 @@
+#ifndef _DWC_OS_DEP_H_
+#define _DWC_OS_DEP_H_
@@ -296652,9 +301364,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-4.1.
+
+
+#endif /* _DWC_OS_DEP_H_ */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,2712 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.c $
@@ -299368,9 +304080,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-4.1.22/
+}
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,266 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.h $
@@ -299638,9 +304350,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-4.1.22/
+extern void do_test_mode(void *data);
+#endif
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,360 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_if.h $
@@ -300002,9 +304714,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-4.1.
+#endif /* __DWC_PCD_IF_H__ */
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,5147 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_intr.c $
@@ -305153,9 +309865,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-4.
+}
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,1360 @@
+ /* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_linux.c $
@@ -306517,9 +311229,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-4
+EXPORT_SYMBOL(usb_gadget_unregister_driver);
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_regs.h
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_regs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/dwc_otg_regs.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_regs.h
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/dwc_otg_regs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/dwc_otg_regs.h 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,2550 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_regs.h $
@@ -309071,9 +313783,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-4.1.22
+} gpwrdn_data_t;
+
+#endif
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/Makefile linux-4.1.22/drivers/usb/host/dwc_otg/test/Makefile
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/test/Makefile 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/Makefile linux-4.1.23/drivers/usb/host/dwc_otg/test/Makefile
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/test/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,16 @@
+
+PERL=/usr/bin/perl
@@ -309091,9 +313803,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/Makefile linux-4.1.22/
+ else echo "=======> $$test, FAILED" ; \
+ fi \
+ done
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-4.1.22/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-4.1.23/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,337 @@
+package dwc_otg_test;
+
@@ -309432,9 +314144,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-
+);
+
+1;
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-4.1.22/drivers/usb/host/dwc_otg/test/test_mod_param.pl
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/test_mod_param.pl 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/test/test_mod_param.pl 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-4.1.23/drivers/usb/host/dwc_otg/test/test_mod_param.pl
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/test_mod_param.pl 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/test/test_mod_param.pl 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,133 @@
+#!/usr/bin/perl -w
+#
@@ -309569,9 +314281,9 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/test_mod_param.pl linu
+
+test_main();
+0;
-diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-4.1.22/drivers/usb/host/dwc_otg/test/test_sysfs.pl
---- linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/test_sysfs.pl 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/usb/host/dwc_otg/test/test_sysfs.pl 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-4.1.23/drivers/usb/host/dwc_otg/test/test_sysfs.pl
+--- linux-4.1.23.orig/drivers/usb/host/dwc_otg/test/test_sysfs.pl 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/usb/host/dwc_otg/test/test_sysfs.pl 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,193 @@
+#!/usr/bin/perl -w
+#
@@ -309766,9 +314478,37 @@ diff -Nur linux-4.1.22.orig/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-4.
+
+test_main();
+0;
-diff -Nur linux-4.1.22.orig/drivers/video/backlight/Kconfig linux-4.1.22/drivers/video/backlight/Kconfig
---- linux-4.1.22.orig/drivers/video/backlight/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/video/backlight/Kconfig 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/usb/misc/iowarrior.c linux-4.1.23/drivers/usb/misc/iowarrior.c
+--- linux-4.1.23.orig/drivers/usb/misc/iowarrior.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/misc/iowarrior.c 2016-05-02 22:53:58.000000000 +0200
+@@ -787,12 +787,6 @@
+ iface_desc = interface->cur_altsetting;
+ dev->product_id = le16_to_cpu(udev->descriptor.idProduct);
+
+- if (iface_desc->desc.bNumEndpoints < 1) {
+- dev_err(&interface->dev, "Invalid number of endpoints\n");
+- retval = -EINVAL;
+- goto error;
+- }
+-
+ /* set up the endpoint information */
+ for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
+ endpoint = &iface_desc->endpoint[i].desc;
+diff -Nur linux-4.1.23.orig/drivers/usb/storage/uas.c linux-4.1.23/drivers/usb/storage/uas.c
+--- linux-4.1.23.orig/drivers/usb/storage/uas.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/usb/storage/uas.c 2016-05-02 22:53:58.000000000 +0200
+@@ -824,7 +824,7 @@
+ .slave_configure = uas_slave_configure,
+ .eh_abort_handler = uas_eh_abort_handler,
+ .eh_bus_reset_handler = uas_eh_bus_reset_handler,
+- .can_queue = MAX_CMNDS,
++ .can_queue = 65536, /* Is there a limit on the _host_ ? */
+ .this_id = -1,
+ .sg_tablesize = SG_NONE,
+ .cmd_per_lun = 1, /* until we override it */
+diff -Nur linux-4.1.23.orig/drivers/video/backlight/Kconfig linux-4.1.23/drivers/video/backlight/Kconfig
+--- linux-4.1.23.orig/drivers/video/backlight/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/video/backlight/Kconfig 2016-05-02 22:53:58.000000000 +0200
@@ -263,6 +263,12 @@
If you have a LCD backlight adjustable by PWM, say Y to enable
this driver.
@@ -309782,9 +314522,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/backlight/Kconfig linux-4.1.22/drivers
config BACKLIGHT_DA903X
tristate "Backlight Driver for DA9030/DA9034 using WLED"
depends on PMIC_DA903X
-diff -Nur linux-4.1.22.orig/drivers/video/backlight/Makefile linux-4.1.22/drivers/video/backlight/Makefile
---- linux-4.1.22.orig/drivers/video/backlight/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/video/backlight/Makefile 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/backlight/Makefile linux-4.1.23/drivers/video/backlight/Makefile
+--- linux-4.1.23.orig/drivers/video/backlight/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/video/backlight/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -49,6 +49,7 @@
obj-$(CONFIG_BACKLIGHT_PANDORA) += pandora_bl.o
obj-$(CONFIG_BACKLIGHT_PCF50633) += pcf50633-backlight.o
@@ -309793,9 +314533,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/backlight/Makefile linux-4.1.22/driver
obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o
obj-$(CONFIG_BACKLIGHT_SKY81452) += sky81452-backlight.o
obj-$(CONFIG_BACKLIGHT_TOSA) += tosa_bl.o
-diff -Nur linux-4.1.22.orig/drivers/video/backlight/rpi_backlight.c linux-4.1.22/drivers/video/backlight/rpi_backlight.c
---- linux-4.1.22.orig/drivers/video/backlight/rpi_backlight.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/video/backlight/rpi_backlight.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/backlight/rpi_backlight.c linux-4.1.23/drivers/video/backlight/rpi_backlight.c
+--- linux-4.1.23.orig/drivers/video/backlight/rpi_backlight.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/video/backlight/rpi_backlight.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,119 @@
+/*
+ * rpi_bl.c - Backlight controller through VPU
@@ -309916,9 +314656,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/backlight/rpi_backlight.c linux-4.1.22
+MODULE_AUTHOR("Gordon Hollingworth <gordon@raspberrypi.org>");
+MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/drivers/video/fbdev/Kconfig linux-4.1.22/drivers/video/fbdev/Kconfig
---- linux-4.1.22.orig/drivers/video/fbdev/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/video/fbdev/Kconfig 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/fbdev/Kconfig linux-4.1.23/drivers/video/fbdev/Kconfig
+--- linux-4.1.23.orig/drivers/video/fbdev/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/video/fbdev/Kconfig 2016-05-02 22:53:58.000000000 +0200
@@ -224,6 +224,20 @@
comment "Frame buffer hardware drivers"
depends on FB
@@ -309957,9 +314697,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/fbdev/Kconfig linux-4.1.22/drivers/vid
+
+ help
+ This is the framebuffer driver for the Raspberry Pi Sense HAT
-diff -Nur linux-4.1.22.orig/drivers/video/fbdev/Makefile linux-4.1.22/drivers/video/fbdev/Makefile
---- linux-4.1.22.orig/drivers/video/fbdev/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/video/fbdev/Makefile 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/fbdev/Makefile linux-4.1.23/drivers/video/fbdev/Makefile
+--- linux-4.1.23.orig/drivers/video/fbdev/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/video/fbdev/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -12,6 +12,7 @@
obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o
@@ -309976,9 +314716,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/fbdev/Makefile linux-4.1.22/drivers/vi
# the test framebuffer is last
obj-$(CONFIG_FB_VIRTUAL) += vfb.o
-diff -Nur linux-4.1.22.orig/drivers/video/fbdev/bcm2708_fb.c linux-4.1.22/drivers/video/fbdev/bcm2708_fb.c
---- linux-4.1.22.orig/drivers/video/fbdev/bcm2708_fb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/video/fbdev/bcm2708_fb.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/fbdev/bcm2708_fb.c linux-4.1.23/drivers/video/fbdev/bcm2708_fb.c
+--- linux-4.1.23.orig/drivers/video/fbdev/bcm2708_fb.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/video/fbdev/bcm2708_fb.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,847 @@
+/*
+ * linux/drivers/video/bcm2708_fb.c
@@ -310827,9 +315567,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/fbdev/bcm2708_fb.c linux-4.1.22/driver
+MODULE_PARM_DESC(fbheight, "Height of ARM Framebuffer");
+MODULE_PARM_DESC(fbdepth, "Bit depth of ARM Framebuffer");
+MODULE_PARM_DESC(fbswap, "Swap order of red and blue in 24 and 32 bit modes");
-diff -Nur linux-4.1.22.orig/drivers/video/fbdev/core/cfbimgblt.c linux-4.1.22/drivers/video/fbdev/core/cfbimgblt.c
---- linux-4.1.22.orig/drivers/video/fbdev/core/cfbimgblt.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/video/fbdev/core/cfbimgblt.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/fbdev/core/cfbimgblt.c linux-4.1.23/drivers/video/fbdev/core/cfbimgblt.c
+--- linux-4.1.23.orig/drivers/video/fbdev/core/cfbimgblt.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/video/fbdev/core/cfbimgblt.c 2016-05-02 22:53:58.000000000 +0200
@@ -28,6 +28,11 @@
*
* Also need to add code to deal with cards endians that are different than
@@ -311003,9 +315743,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/fbdev/core/cfbimgblt.c linux-4.1.22/dr
slow_imageblit(image, p, dst1, fgcolor, bgcolor,
start_index, pitch_index);
} else
-diff -Nur linux-4.1.22.orig/drivers/video/fbdev/core/fbmem.c linux-4.1.22/drivers/video/fbdev/core/fbmem.c
---- linux-4.1.22.orig/drivers/video/fbdev/core/fbmem.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/video/fbdev/core/fbmem.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/fbdev/core/fbmem.c linux-4.1.23/drivers/video/fbdev/core/fbmem.c
+--- linux-4.1.23.orig/drivers/video/fbdev/core/fbmem.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/video/fbdev/core/fbmem.c 2016-05-02 22:53:58.000000000 +0200
@@ -1084,6 +1084,25 @@
}
EXPORT_SYMBOL(fb_blank);
@@ -311064,9 +315804,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/fbdev/core/fbmem.c linux-4.1.22/driver
arg = (unsigned long) compat_ptr(arg);
case FBIOBLANK:
ret = do_fb_ioctl(info, cmd, arg);
-diff -Nur linux-4.1.22.orig/drivers/video/fbdev/rpisense-fb.c linux-4.1.22/drivers/video/fbdev/rpisense-fb.c
---- linux-4.1.22.orig/drivers/video/fbdev/rpisense-fb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/video/fbdev/rpisense-fb.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/fbdev/rpisense-fb.c linux-4.1.23/drivers/video/fbdev/rpisense-fb.c
+--- linux-4.1.23.orig/drivers/video/fbdev/rpisense-fb.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/video/fbdev/rpisense-fb.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,293 @@
+/*
+ * Raspberry Pi Sense HAT framebuffer driver
@@ -311361,9 +316101,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/fbdev/rpisense-fb.c linux-4.1.22/drive
+MODULE_AUTHOR("Serge Schneider <serge@raspberrypi.org>");
+MODULE_LICENSE("GPL");
+
-diff -Nur linux-4.1.22.orig/drivers/video/logo/logo_linux_clut224.ppm linux-4.1.22/drivers/video/logo/logo_linux_clut224.ppm
---- linux-4.1.22.orig/drivers/video/logo/logo_linux_clut224.ppm 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/video/logo/logo_linux_clut224.ppm 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/video/logo/logo_linux_clut224.ppm linux-4.1.23/drivers/video/logo/logo_linux_clut224.ppm
+--- linux-4.1.23.orig/drivers/video/logo/logo_linux_clut224.ppm 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/video/logo/logo_linux_clut224.ppm 2016-05-02 22:53:58.000000000 +0200
@@ -1,1604 +1,883 @@
P3
-# Standard 224-color Linux logo
@@ -313850,9 +318590,9 @@ diff -Nur linux-4.1.22.orig/drivers/video/logo/logo_linux_clut224.ppm linux-4.1.
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0
-diff -Nur linux-4.1.22.orig/drivers/w1/masters/w1-gpio.c linux-4.1.22/drivers/w1/masters/w1-gpio.c
---- linux-4.1.22.orig/drivers/w1/masters/w1-gpio.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/w1/masters/w1-gpio.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/w1/masters/w1-gpio.c linux-4.1.23/drivers/w1/masters/w1-gpio.c
+--- linux-4.1.23.orig/drivers/w1/masters/w1-gpio.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/w1/masters/w1-gpio.c 2016-05-02 22:53:58.000000000 +0200
@@ -23,6 +23,19 @@
#include "../w1.h"
#include "../w1_int.h"
@@ -313987,9 +318727,9 @@ diff -Nur linux-4.1.22.orig/drivers/w1/masters/w1-gpio.c linux-4.1.22/drivers/w1
return 0;
}
-diff -Nur linux-4.1.22.orig/drivers/w1/slaves/w1_therm.c linux-4.1.22/drivers/w1/slaves/w1_therm.c
---- linux-4.1.22.orig/drivers/w1/slaves/w1_therm.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/w1/slaves/w1_therm.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/w1/slaves/w1_therm.c linux-4.1.23/drivers/w1/slaves/w1_therm.c
+--- linux-4.1.23.orig/drivers/w1/slaves/w1_therm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/w1/slaves/w1_therm.c 2016-05-02 22:53:58.000000000 +0200
@@ -92,13 +92,24 @@
static ssize_t w1_slave_show(struct device *device,
struct device_attribute *attr, char *buf);
@@ -314127,9 +318867,9 @@ diff -Nur linux-4.1.22.orig/drivers/w1/slaves/w1_therm.c linux-4.1.22/drivers/w1
static int __init w1_therm_init(void)
{
int err, i;
-diff -Nur linux-4.1.22.orig/drivers/w1/w1.h linux-4.1.22/drivers/w1/w1.h
---- linux-4.1.22.orig/drivers/w1/w1.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/w1/w1.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/w1/w1.h linux-4.1.23/drivers/w1/w1.h
+--- linux-4.1.23.orig/drivers/w1/w1.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/w1/w1.h 2016-05-02 22:53:58.000000000 +0200
@@ -171,6 +171,12 @@
u8 (*set_pullup)(void *, int);
@@ -314143,9 +318883,9 @@ diff -Nur linux-4.1.22.orig/drivers/w1/w1.h linux-4.1.22/drivers/w1/w1.h
void (*search)(void *, struct w1_master *,
u8, w1_slave_found_callback);
};
-diff -Nur linux-4.1.22.orig/drivers/w1/w1_int.c linux-4.1.22/drivers/w1/w1_int.c
---- linux-4.1.22.orig/drivers/w1/w1_int.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/w1/w1_int.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/w1/w1_int.c linux-4.1.23/drivers/w1/w1_int.c
+--- linux-4.1.23.orig/drivers/w1/w1_int.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/w1/w1_int.c 2016-05-02 22:53:58.000000000 +0200
@@ -123,6 +123,20 @@
return(-EINVAL);
}
@@ -314167,9 +318907,9 @@ diff -Nur linux-4.1.22.orig/drivers/w1/w1_int.c linux-4.1.22/drivers/w1/w1_int.c
/* Lock until the device is added (or not) to w1_masters. */
mutex_lock(&w1_mlock);
/* Search for the first available id (starting at 1). */
-diff -Nur linux-4.1.22.orig/drivers/w1/w1_io.c linux-4.1.22/drivers/w1/w1_io.c
---- linux-4.1.22.orig/drivers/w1/w1_io.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/w1/w1_io.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/w1/w1_io.c linux-4.1.23/drivers/w1/w1_io.c
+--- linux-4.1.23.orig/drivers/w1/w1_io.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/w1/w1_io.c 2016-05-02 22:53:58.000000000 +0200
@@ -134,10 +134,22 @@
static void w1_post_write(struct w1_master *dev)
{
@@ -314196,9 +318936,9 @@ diff -Nur linux-4.1.22.orig/drivers/w1/w1_io.c linux-4.1.22/drivers/w1/w1_io.c
dev->pullup_duration = 0;
}
}
-diff -Nur linux-4.1.22.orig/drivers/watchdog/Kconfig linux-4.1.22/drivers/watchdog/Kconfig
---- linux-4.1.22.orig/drivers/watchdog/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/watchdog/Kconfig 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/watchdog/Kconfig linux-4.1.23/drivers/watchdog/Kconfig
+--- linux-4.1.23.orig/drivers/watchdog/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/watchdog/Kconfig 2016-05-02 22:53:58.000000000 +0200
@@ -451,6 +451,12 @@
To compile this driver as a module, choose M here: the
module will be called retu_wdt.
@@ -314221,9 +318961,9 @@ diff -Nur linux-4.1.22.orig/drivers/watchdog/Kconfig linux-4.1.22/drivers/watchd
select WATCHDOG_CORE
help
Watchdog driver for the built in watchdog hardware in Broadcom
-diff -Nur linux-4.1.22.orig/drivers/watchdog/Makefile linux-4.1.22/drivers/watchdog/Makefile
---- linux-4.1.22.orig/drivers/watchdog/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/drivers/watchdog/Makefile 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/watchdog/Makefile linux-4.1.23/drivers/watchdog/Makefile
+--- linux-4.1.23.orig/drivers/watchdog/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/watchdog/Makefile 2016-05-02 22:53:58.000000000 +0200
@@ -56,6 +56,7 @@
obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
obj-$(CONFIG_UX500_WATCHDOG) += ux500_wdt.o
@@ -314232,9 +318972,9 @@ diff -Nur linux-4.1.22.orig/drivers/watchdog/Makefile linux-4.1.22/drivers/watch
obj-$(CONFIG_BCM2835_WDT) += bcm2835_wdt.o
obj-$(CONFIG_MOXART_WDT) += moxart_wdt.o
obj-$(CONFIG_SIRFSOC_WATCHDOG) += sirfsoc_wdt.o
-diff -Nur linux-4.1.22.orig/drivers/watchdog/bcm2708_wdog.c linux-4.1.22/drivers/watchdog/bcm2708_wdog.c
---- linux-4.1.22.orig/drivers/watchdog/bcm2708_wdog.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/drivers/watchdog/bcm2708_wdog.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/watchdog/bcm2708_wdog.c linux-4.1.23/drivers/watchdog/bcm2708_wdog.c
+--- linux-4.1.23.orig/drivers/watchdog/bcm2708_wdog.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/drivers/watchdog/bcm2708_wdog.c 2016-05-02 22:53:58.000000000 +0200
@@ -0,0 +1,382 @@
+/*
+ * Broadcom BCM2708 watchdog driver.
@@ -314618,9 +319358,1480 @@ diff -Nur linux-4.1.22.orig/drivers/watchdog/bcm2708_wdog.c linux-4.1.22/drivers
+MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+MODULE_ALIAS_MISCDEV(TEMP_MINOR);
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/include/drm/drmP.h linux-4.1.22/include/drm/drmP.h
---- linux-4.1.22.orig/include/drm/drmP.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/drm/drmP.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/drivers/watchdog/rc32434_wdt.c linux-4.1.23/drivers/watchdog/rc32434_wdt.c
+--- linux-4.1.23.orig/drivers/watchdog/rc32434_wdt.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/drivers/watchdog/rc32434_wdt.c 2016-05-02 22:53:58.000000000 +0200
+@@ -237,7 +237,7 @@
+ return -EINVAL;
+ /* Fall through */
+ case WDIOC_GETTIMEOUT:
+- return copy_to_user(argp, &timeout, sizeof(int)) ? -EFAULT : 0;
++ return copy_to_user(argp, &timeout, sizeof(int));
+ default:
+ return -ENOTTY;
+ }
+diff -Nur linux-4.1.23.orig/fs/btrfs/async-thread.c linux-4.1.23/fs/btrfs/async-thread.c
+--- linux-4.1.23.orig/fs/btrfs/async-thread.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/async-thread.c 2016-05-02 22:53:58.000000000 +0200
+@@ -316,8 +316,8 @@
+ list_add_tail(&work->ordered_list, &wq->ordered_list);
+ spin_unlock_irqrestore(&wq->list_lock, flags);
+ }
+- trace_btrfs_work_queued(work);
+ queue_work(wq->normal_wq, &work->normal_work);
++ trace_btrfs_work_queued(work);
+ }
+
+ void btrfs_queue_work(struct btrfs_workqueue *wq,
+diff -Nur linux-4.1.23.orig/fs/btrfs/disk-io.c linux-4.1.23/fs/btrfs/disk-io.c
+--- linux-4.1.23.orig/fs/btrfs/disk-io.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/disk-io.c 2016-05-02 22:53:58.000000000 +0200
+@@ -1574,23 +1574,8 @@
+ ret = get_anon_bdev(&root->anon_dev);
+ if (ret)
+ goto free_writers;
+-
+- mutex_lock(&root->objectid_mutex);
+- ret = btrfs_find_highest_objectid(root,
+- &root->highest_objectid);
+- if (ret) {
+- mutex_unlock(&root->objectid_mutex);
+- goto free_root_dev;
+- }
+-
+- ASSERT(root->highest_objectid <= BTRFS_LAST_FREE_OBJECTID);
+-
+- mutex_unlock(&root->objectid_mutex);
+-
+ return 0;
+
+-free_root_dev:
+- free_anon_bdev(root->anon_dev);
+ free_writers:
+ btrfs_free_subvolume_writers(root->subv_writers);
+ fail:
+@@ -2637,7 +2622,6 @@
+ if (btrfs_check_super_csum(bh->b_data)) {
+ printk(KERN_ERR "BTRFS: superblock checksum mismatch\n");
+ err = -EINVAL;
+- brelse(bh);
+ goto fail_alloc;
+ }
+
+@@ -2865,18 +2849,6 @@
+ tree_root->commit_root = btrfs_root_node(tree_root);
+ btrfs_set_root_refs(&tree_root->root_item, 1);
+
+- mutex_lock(&tree_root->objectid_mutex);
+- ret = btrfs_find_highest_objectid(tree_root,
+- &tree_root->highest_objectid);
+- if (ret) {
+- mutex_unlock(&tree_root->objectid_mutex);
+- goto recovery_tree_root;
+- }
+-
+- ASSERT(tree_root->highest_objectid <= BTRFS_LAST_FREE_OBJECTID);
+-
+- mutex_unlock(&tree_root->objectid_mutex);
+-
+ ret = btrfs_read_roots(fs_info, tree_root);
+ if (ret)
+ goto recovery_tree_root;
+diff -Nur linux-4.1.23.orig/fs/btrfs/extent-tree.c linux-4.1.23/fs/btrfs/extent-tree.c
+--- linux-4.1.23.orig/fs/btrfs/extent-tree.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/extent-tree.c 2016-05-02 22:53:58.000000000 +0200
+@@ -3975,11 +3975,6 @@
+ !atomic_read(&root->fs_info->open_ioctl_trans)) {
+ need_commit--;
+
+- if (need_commit > 0) {
+- btrfs_start_delalloc_roots(fs_info, 0, -1);
+- btrfs_wait_ordered_roots(fs_info, -1);
+- }
+-
+ trans = btrfs_join_transaction(root);
+ if (IS_ERR(trans))
+ return PTR_ERR(trans);
+diff -Nur linux-4.1.23.orig/fs/btrfs/inode-map.c linux-4.1.23/fs/btrfs/inode-map.c
+--- linux-4.1.23.orig/fs/btrfs/inode-map.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/inode-map.c 2016-05-02 22:53:58.000000000 +0200
+@@ -515,7 +515,7 @@
+ return ret;
+ }
+
+-int btrfs_find_highest_objectid(struct btrfs_root *root, u64 *objectid)
++static int btrfs_find_highest_objectid(struct btrfs_root *root, u64 *objectid)
+ {
+ struct btrfs_path *path;
+ int ret;
+@@ -555,6 +555,13 @@
+ int ret;
+ mutex_lock(&root->objectid_mutex);
+
++ if (unlikely(root->highest_objectid < BTRFS_FIRST_FREE_OBJECTID)) {
++ ret = btrfs_find_highest_objectid(root,
++ &root->highest_objectid);
++ if (ret)
++ goto out;
++ }
++
+ if (unlikely(root->highest_objectid >= BTRFS_LAST_FREE_OBJECTID)) {
+ ret = -ENOSPC;
+ goto out;
+diff -Nur linux-4.1.23.orig/fs/btrfs/inode-map.h linux-4.1.23/fs/btrfs/inode-map.h
+--- linux-4.1.23.orig/fs/btrfs/inode-map.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/inode-map.h 2016-05-02 22:53:58.000000000 +0200
+@@ -9,6 +9,5 @@
+ struct btrfs_trans_handle *trans);
+
+ int btrfs_find_free_objectid(struct btrfs_root *root, u64 *objectid);
+-int btrfs_find_highest_objectid(struct btrfs_root *root, u64 *objectid);
+
+ #endif
+diff -Nur linux-4.1.23.orig/fs/btrfs/inode.c linux-4.1.23/fs/btrfs/inode.c
+--- linux-4.1.23.orig/fs/btrfs/inode.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/inode.c 2016-05-02 22:53:58.000000000 +0200
+@@ -6421,7 +6421,7 @@
+ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
+ struct dentry *dentry)
+ {
+- struct btrfs_trans_handle *trans = NULL;
++ struct btrfs_trans_handle *trans;
+ struct btrfs_root *root = BTRFS_I(dir)->root;
+ struct inode *inode = d_inode(old_dentry);
+ u64 index;
+@@ -6447,7 +6447,6 @@
+ trans = btrfs_start_transaction(root, 5);
+ if (IS_ERR(trans)) {
+ err = PTR_ERR(trans);
+- trans = NULL;
+ goto fail;
+ }
+
+@@ -6481,10 +6480,9 @@
+ btrfs_log_new_name(trans, inode, NULL, parent);
+ }
+
++ btrfs_end_transaction(trans, root);
+ btrfs_balance_delayed_items(root);
+ fail:
+- if (trans)
+- btrfs_end_transaction(trans, root);
+ if (drop_inode) {
+ inode_dec_link_count(inode);
+ iput(inode);
+@@ -8418,28 +8416,15 @@
+ static int btrfs_writepage(struct page *page, struct writeback_control *wbc)
+ {
+ struct extent_io_tree *tree;
+- struct inode *inode = page->mapping->host;
+- int ret;
++
+
+ if (current->flags & PF_MEMALLOC) {
+ redirty_page_for_writepage(wbc, page);
+ unlock_page(page);
+ return 0;
+ }
+-
+- /*
+- * If we are under memory pressure we will call this directly from the
+- * VM, we need to make sure we have the inode referenced for the ordered
+- * extent. If not just return like we didn't do anything.
+- */
+- if (!igrab(inode)) {
+- redirty_page_for_writepage(wbc, page);
+- return AOP_WRITEPAGE_ACTIVATE;
+- }
+ tree = &BTRFS_I(page->mapping->host)->io_tree;
+- ret = extent_write_full_page(tree, page, btrfs_get_extent, wbc);
+- btrfs_add_delayed_iput(inode);
+- return ret;
++ return extent_write_full_page(tree, page, btrfs_get_extent, wbc);
+ }
+
+ static int btrfs_writepages(struct address_space *mapping,
+@@ -9520,11 +9505,9 @@
+ /*
+ * 2 items for inode item and ref
+ * 2 items for dir items
+- * 1 item for updating parent inode item
+- * 1 item for the inline extent item
+ * 1 item for xattr if selinux is on
+ */
+- trans = btrfs_start_transaction(root, 7);
++ trans = btrfs_start_transaction(root, 5);
+ if (IS_ERR(trans))
+ return PTR_ERR(trans);
+
+diff -Nur linux-4.1.23.orig/fs/btrfs/ioctl.c linux-4.1.23/fs/btrfs/ioctl.c
+--- linux-4.1.23.orig/fs/btrfs/ioctl.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/ioctl.c 2016-05-02 22:53:58.000000000 +0200
+@@ -567,10 +567,6 @@
+ goto fail;
+ }
+
+- mutex_lock(&new_root->objectid_mutex);
+- new_root->highest_objectid = new_dirid;
+- mutex_unlock(&new_root->objectid_mutex);
+-
+ /*
+ * insert the directory item
+ */
+diff -Nur linux-4.1.23.orig/fs/btrfs/send.c linux-4.1.23/fs/btrfs/send.c
+--- linux-4.1.23.orig/fs/btrfs/send.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/send.c 2016-05-02 22:53:58.000000000 +0200
+@@ -1462,21 +1462,7 @@
+ ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
+ if (ret < 0)
+ goto out;
+- if (ret) {
+- /*
+- * An empty symlink inode. Can happen in rare error paths when
+- * creating a symlink (transaction committed before the inode
+- * eviction handler removed the symlink inode items and a crash
+- * happened in between or the subvol was snapshoted in between).
+- * Print an informative message to dmesg/syslog so that the user
+- * can delete the symlink.
+- */
+- btrfs_err(root->fs_info,
+- "Found empty symlink inode %llu at root %llu",
+- ino, root->root_key.objectid);
+- ret = -EIO;
+- goto out;
+- }
++ BUG_ON(ret);
+
+ ei = btrfs_item_ptr(path->nodes[0], path->slots[0],
+ struct btrfs_file_extent_item);
+diff -Nur linux-4.1.23.orig/fs/btrfs/super.c linux-4.1.23/fs/btrfs/super.c
+--- linux-4.1.23.orig/fs/btrfs/super.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/super.c 2016-05-02 22:53:58.000000000 +0200
+@@ -1822,8 +1822,6 @@
+ * there are other factors that may change the result (like a new metadata
+ * chunk).
+ *
+- * If metadata is exhausted, f_bavail will be 0.
+- *
+ * FIXME: not accurate for mixed block groups, total and free/used are ok,
+ * available appears slightly larger.
+ */
+@@ -1835,13 +1833,11 @@
+ struct btrfs_space_info *found;
+ u64 total_used = 0;
+ u64 total_free_data = 0;
+- u64 total_free_meta = 0;
+ int bits = dentry->d_sb->s_blocksize_bits;
+ __be32 *fsid = (__be32 *)fs_info->fsid;
+ unsigned factor = 1;
+ struct btrfs_block_rsv *block_rsv = &fs_info->global_block_rsv;
+ int ret;
+- u64 thresh = 0;
+
+ /*
+ * holding chunk_muext to avoid allocating new chunks, holding
+@@ -1867,8 +1863,6 @@
+ }
+ }
+ }
+- if (found->flags & BTRFS_BLOCK_GROUP_METADATA)
+- total_free_meta += found->disk_total - found->disk_used;
+
+ total_used += found->disk_used;
+ }
+@@ -1891,24 +1885,6 @@
+ buf->f_bavail += div_u64(total_free_data, factor);
+ buf->f_bavail = buf->f_bavail >> bits;
+
+- /*
+- * We calculate the remaining metadata space minus global reserve. If
+- * this is (supposedly) smaller than zero, there's no space. But this
+- * does not hold in practice, the exhausted state happens where's still
+- * some positive delta. So we apply some guesswork and compare the
+- * delta to a 4M threshold. (Practically observed delta was ~2M.)
+- *
+- * We probably cannot calculate the exact threshold value because this
+- * depends on the internal reservations requested by various
+- * operations, so some operations that consume a few metadata will
+- * succeed even if the Avail is zero. But this is better than the other
+- * way around.
+- */
+- thresh = 4 * 1024 * 1024;
+-
+- if (total_free_meta - thresh < block_rsv->size)
+- buf->f_bavail = 0;
+-
+ buf->f_type = BTRFS_SUPER_MAGIC;
+ buf->f_bsize = dentry->d_sb->s_blocksize;
+ buf->f_namelen = BTRFS_NAME_LEN;
+diff -Nur linux-4.1.23.orig/fs/btrfs/volumes.c linux-4.1.23/fs/btrfs/volumes.c
+--- linux-4.1.23.orig/fs/btrfs/volumes.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/btrfs/volumes.c 2016-05-02 22:53:58.000000000 +0200
+@@ -152,7 +152,6 @@
+ spin_lock_init(&dev->reada_lock);
+ atomic_set(&dev->reada_in_flight, 0);
+ atomic_set(&dev->dev_stats_ccnt, 0);
+- btrfs_device_data_ordered_init(dev);
+ INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_WAIT);
+ INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_WAIT);
+
+diff -Nur linux-4.1.23.orig/fs/coredump.c linux-4.1.23/fs/coredump.c
+--- linux-4.1.23.orig/fs/coredump.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/coredump.c 2016-05-02 22:53:58.000000000 +0200
+@@ -32,10 +32,6 @@
+ #include <linux/pipe_fs_i.h>
+ #include <linux/oom.h>
+ #include <linux/compat.h>
+-#include <linux/sched.h>
+-#include <linux/fs.h>
+-#include <linux/path.h>
+-#include <linux/timekeeping.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/mmu_context.h>
+@@ -229,10 +225,9 @@
+ break;
+ /* UNIX time of coredump */
+ case 't': {
+- time64_t time;
+-
+- time = ktime_get_real_seconds();
+- err = cn_printf(cn, "%lld", time);
++ struct timeval tv;
++ do_gettimeofday(&tv);
++ err = cn_printf(cn, "%lu", tv.tv_sec);
+ break;
+ }
+ /* hostname */
+@@ -626,8 +621,6 @@
+ }
+ } else {
+ struct inode *inode;
+- int open_flags = O_CREAT | O_RDWR | O_NOFOLLOW |
+- O_LARGEFILE | O_EXCL;
+
+ if (cprm.limit < binfmt->min_coredump)
+ goto fail_unlock;
+@@ -666,27 +659,10 @@
+ * what matters is that at least one of the two processes
+ * writes its coredump successfully, not which one.
+ */
+- if (need_suid_safe) {
+- /*
+- * Using user namespaces, normal user tasks can change
+- * their current->fs->root to point to arbitrary
+- * directories. Since the intention of the "only dump
+- * with a fully qualified path" rule is to control where
+- * coredumps may be placed using root privileges,
+- * current->fs->root must not be used. Instead, use the
+- * root directory of init_task.
+- */
+- struct path root;
+-
+- task_lock(&init_task);
+- get_fs_root(init_task.fs, &root);
+- task_unlock(&init_task);
+- cprm.file = file_open_root(root.dentry, root.mnt,
+- cn.corename, open_flags, 0600);
+- path_put(&root);
+- } else {
+- cprm.file = filp_open(cn.corename, open_flags, 0600);
+- }
++ cprm.file = filp_open(cn.corename,
++ O_CREAT | 2 | O_NOFOLLOW |
++ O_LARGEFILE | O_EXCL,
++ 0600);
+ if (IS_ERR(cprm.file))
+ goto fail_unlock;
+
+diff -Nur linux-4.1.23.orig/fs/dax.c linux-4.1.23/fs/dax.c
+--- linux-4.1.23.orig/fs/dax.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/dax.c 2016-05-02 22:53:59.000000000 +0200
+@@ -309,11 +309,14 @@
+ out:
+ i_mmap_unlock_read(mapping);
+
++ if (bh->b_end_io)
++ bh->b_end_io(bh, 1);
++
+ return error;
+ }
+
+ static int do_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf,
+- get_block_t get_block, dax_iodone_t complete_unwritten)
++ get_block_t get_block)
+ {
+ struct file *file = vma->vm_file;
+ struct address_space *mapping = file->f_mapping;
+@@ -414,19 +417,7 @@
+ page_cache_release(page);
+ }
+
+- /*
+- * If we successfully insert the new mapping over an unwritten extent,
+- * we need to ensure we convert the unwritten extent. If there is an
+- * error inserting the mapping, the filesystem needs to leave it as
+- * unwritten to prevent exposure of the stale underlying data to
+- * userspace, but we still need to call the completion function so
+- * the private resources on the mapping buffer can be released. We
+- * indicate what the callback should do via the uptodate variable, same
+- * as for normal BH based IO completions.
+- */
+ error = dax_insert_mapping(inode, &bh, vma, vmf);
+- if (buffer_unwritten(&bh))
+- complete_unwritten(&bh, !error);
+
+ out:
+ if (error == -ENOMEM)
+@@ -454,7 +445,7 @@
+ * fault handler for DAX files.
+ */
+ int dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf,
+- get_block_t get_block, dax_iodone_t complete_unwritten)
++ get_block_t get_block)
+ {
+ int result;
+ struct super_block *sb = file_inode(vma->vm_file)->i_sb;
+@@ -463,7 +454,7 @@
+ sb_start_pagefault(sb);
+ file_update_time(vma->vm_file);
+ }
+- result = do_dax_fault(vma, vmf, get_block, complete_unwritten);
++ result = do_dax_fault(vma, vmf, get_block);
+ if (vmf->flags & FAULT_FLAG_WRITE)
+ sb_end_pagefault(sb);
+
+diff -Nur linux-4.1.23.orig/fs/efivarfs/file.c linux-4.1.23/fs/efivarfs/file.c
+--- linux-4.1.23.orig/fs/efivarfs/file.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/efivarfs/file.c 2016-05-02 22:53:59.000000000 +0200
+@@ -10,7 +10,6 @@
+ #include <linux/efi.h>
+ #include <linux/fs.h>
+ #include <linux/slab.h>
+-#include <linux/mount.h>
+
+ #include "internal.h"
+
+@@ -104,78 +103,9 @@
+ return size;
+ }
+
+-static int
+-efivarfs_ioc_getxflags(struct file *file, void __user *arg)
+-{
+- struct inode *inode = file->f_mapping->host;
+- unsigned int i_flags;
+- unsigned int flags = 0;
+-
+- i_flags = inode->i_flags;
+- if (i_flags & S_IMMUTABLE)
+- flags |= FS_IMMUTABLE_FL;
+-
+- if (copy_to_user(arg, &flags, sizeof(flags)))
+- return -EFAULT;
+- return 0;
+-}
+-
+-static int
+-efivarfs_ioc_setxflags(struct file *file, void __user *arg)
+-{
+- struct inode *inode = file->f_mapping->host;
+- unsigned int flags;
+- unsigned int i_flags = 0;
+- int error;
+-
+- if (!inode_owner_or_capable(inode))
+- return -EACCES;
+-
+- if (copy_from_user(&flags, arg, sizeof(flags)))
+- return -EFAULT;
+-
+- if (flags & ~FS_IMMUTABLE_FL)
+- return -EOPNOTSUPP;
+-
+- if (!capable(CAP_LINUX_IMMUTABLE))
+- return -EPERM;
+-
+- if (flags & FS_IMMUTABLE_FL)
+- i_flags |= S_IMMUTABLE;
+-
+-
+- error = mnt_want_write_file(file);
+- if (error)
+- return error;
+-
+- mutex_lock(&inode->i_mutex);
+- inode_set_flags(inode, i_flags, S_IMMUTABLE);
+- mutex_unlock(&inode->i_mutex);
+-
+- mnt_drop_write_file(file);
+-
+- return 0;
+-}
+-
+-long
+-efivarfs_file_ioctl(struct file *file, unsigned int cmd, unsigned long p)
+-{
+- void __user *arg = (void __user *)p;
+-
+- switch (cmd) {
+- case FS_IOC_GETFLAGS:
+- return efivarfs_ioc_getxflags(file, arg);
+- case FS_IOC_SETFLAGS:
+- return efivarfs_ioc_setxflags(file, arg);
+- }
+-
+- return -ENOTTY;
+-}
+-
+ const struct file_operations efivarfs_file_operations = {
+ .open = simple_open,
+ .read = efivarfs_file_read,
+ .write = efivarfs_file_write,
+ .llseek = no_llseek,
+- .unlocked_ioctl = efivarfs_file_ioctl,
+ };
+diff -Nur linux-4.1.23.orig/fs/efivarfs/inode.c linux-4.1.23/fs/efivarfs/inode.c
+--- linux-4.1.23.orig/fs/efivarfs/inode.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/efivarfs/inode.c 2016-05-02 22:53:59.000000000 +0200
+@@ -15,8 +15,7 @@
+ #include "internal.h"
+
+ struct inode *efivarfs_get_inode(struct super_block *sb,
+- const struct inode *dir, int mode,
+- dev_t dev, bool is_removable)
++ const struct inode *dir, int mode, dev_t dev)
+ {
+ struct inode *inode = new_inode(sb);
+
+@@ -24,7 +23,6 @@
+ inode->i_ino = get_next_ino();
+ inode->i_mode = mode;
+ inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+- inode->i_flags = is_removable ? 0 : S_IMMUTABLE;
+ switch (mode & S_IFMT) {
+ case S_IFREG:
+ inode->i_fop = &efivarfs_file_operations;
+@@ -104,34 +102,29 @@
+ static int efivarfs_create(struct inode *dir, struct dentry *dentry,
+ umode_t mode, bool excl)
+ {
+- struct inode *inode = NULL;
++ struct inode *inode;
+ struct efivar_entry *var;
+ int namelen, i = 0, err = 0;
+- bool is_removable = false;
+
+ if (!efivarfs_valid_name(dentry->d_name.name, dentry->d_name.len))
+ return -EINVAL;
+
+- var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL);
+- if (!var)
++ inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0);
++ if (!inode)
+ return -ENOMEM;
+
++ var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL);
++ if (!var) {
++ err = -ENOMEM;
++ goto out;
++ }
++
+ /* length of the variable name itself: remove GUID and separator */
+ namelen = dentry->d_name.len - EFI_VARIABLE_GUID_LEN - 1;
+
+ efivarfs_hex_to_guid(dentry->d_name.name + namelen + 1,
+ &var->var.VendorGuid);
+
+- if (efivar_variable_is_removable(var->var.VendorGuid,
+- dentry->d_name.name, namelen))
+- is_removable = true;
+-
+- inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0, is_removable);
+- if (!inode) {
+- err = -ENOMEM;
+- goto out;
+- }
+-
+ for (i = 0; i < namelen; i++)
+ var->var.VariableName[i] = dentry->d_name.name[i];
+
+@@ -145,8 +138,7 @@
+ out:
+ if (err) {
+ kfree(var);
+- if (inode)
+- iput(inode);
++ iput(inode);
+ }
+ return err;
+ }
+diff -Nur linux-4.1.23.orig/fs/efivarfs/internal.h linux-4.1.23/fs/efivarfs/internal.h
+--- linux-4.1.23.orig/fs/efivarfs/internal.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/efivarfs/internal.h 2016-05-02 22:53:59.000000000 +0200
+@@ -15,8 +15,7 @@
+ extern const struct inode_operations efivarfs_dir_inode_operations;
+ extern bool efivarfs_valid_name(const char *str, int len);
+ extern struct inode *efivarfs_get_inode(struct super_block *sb,
+- const struct inode *dir, int mode, dev_t dev,
+- bool is_removable);
++ const struct inode *dir, int mode, dev_t dev);
+
+ extern struct list_head efivarfs_list;
+
+diff -Nur linux-4.1.23.orig/fs/efivarfs/super.c linux-4.1.23/fs/efivarfs/super.c
+--- linux-4.1.23.orig/fs/efivarfs/super.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/efivarfs/super.c 2016-05-02 22:53:59.000000000 +0200
+@@ -118,9 +118,8 @@
+ struct dentry *dentry, *root = sb->s_root;
+ unsigned long size = 0;
+ char *name;
+- int len;
++ int len, i;
+ int err = -ENOMEM;
+- bool is_removable = false;
+
+ entry = kzalloc(sizeof(*entry), GFP_KERNEL);
+ if (!entry)
+@@ -129,17 +128,15 @@
+ memcpy(entry->var.VariableName, name16, name_size);
+ memcpy(&(entry->var.VendorGuid), &vendor, sizeof(efi_guid_t));
+
+- len = ucs2_utf8size(entry->var.VariableName);
++ len = ucs2_strlen(entry->var.VariableName);
+
+ /* name, plus '-', plus GUID, plus NUL*/
+ name = kmalloc(len + 1 + EFI_VARIABLE_GUID_LEN + 1, GFP_KERNEL);
+ if (!name)
+ goto fail;
+
+- ucs2_as_utf8(name, entry->var.VariableName, len);
+-
+- if (efivar_variable_is_removable(entry->var.VendorGuid, name, len))
+- is_removable = true;
++ for (i = 0; i < len; i++)
++ name[i] = entry->var.VariableName[i] & 0xFF;
+
+ name[len] = '-';
+
+@@ -147,8 +144,7 @@
+
+ name[len + EFI_VARIABLE_GUID_LEN+1] = '\0';
+
+- inode = efivarfs_get_inode(sb, d_inode(root), S_IFREG | 0644, 0,
+- is_removable);
++ inode = efivarfs_get_inode(sb, d_inode(root), S_IFREG | 0644, 0);
+ if (!inode)
+ goto fail_name;
+
+@@ -204,7 +200,7 @@
+ sb->s_d_op = &efivarfs_d_ops;
+ sb->s_time_gran = 1;
+
+- inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0, true);
++ inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0);
+ if (!inode)
+ return -ENOMEM;
+ inode->i_op = &efivarfs_dir_inode_operations;
+diff -Nur linux-4.1.23.orig/fs/ext2/file.c linux-4.1.23/fs/ext2/file.c
+--- linux-4.1.23.orig/fs/ext2/file.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/ext2/file.c 2016-05-02 22:53:59.000000000 +0200
+@@ -28,12 +28,12 @@
+ #ifdef CONFIG_FS_DAX
+ static int ext2_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+ {
+- return dax_fault(vma, vmf, ext2_get_block, NULL);
++ return dax_fault(vma, vmf, ext2_get_block);
+ }
+
+ static int ext2_dax_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
+ {
+- return dax_mkwrite(vma, vmf, ext2_get_block, NULL);
++ return dax_mkwrite(vma, vmf, ext2_get_block);
+ }
+
+ static const struct vm_operations_struct ext2_dax_vm_ops = {
+diff -Nur linux-4.1.23.orig/fs/ext4/file.c linux-4.1.23/fs/ext4/file.c
+--- linux-4.1.23.orig/fs/ext4/file.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/ext4/file.c 2016-05-02 22:53:59.000000000 +0200
+@@ -192,27 +192,15 @@
+ }
+
+ #ifdef CONFIG_FS_DAX
+-static void ext4_end_io_unwritten(struct buffer_head *bh, int uptodate)
+-{
+- struct inode *inode = bh->b_assoc_map->host;
+- /* XXX: breaks on 32-bit > 16GB. Is that even supported? */
+- loff_t offset = (loff_t)(uintptr_t)bh->b_private << inode->i_blkbits;
+- int err;
+- if (!uptodate)
+- return;
+- WARN_ON(!buffer_unwritten(bh));
+- err = ext4_convert_unwritten_extents(NULL, inode, offset, bh->b_size);
+-}
+-
+ static int ext4_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+ {
+- return dax_fault(vma, vmf, ext4_get_block, ext4_end_io_unwritten);
++ return dax_fault(vma, vmf, ext4_get_block);
+ /* Is this the right get_block? */
+ }
+
+ static int ext4_dax_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
+ {
+- return dax_mkwrite(vma, vmf, ext4_get_block, ext4_end_io_unwritten);
++ return dax_mkwrite(vma, vmf, ext4_get_block);
+ }
+
+ static const struct vm_operations_struct ext4_dax_vm_ops = {
+diff -Nur linux-4.1.23.orig/fs/ext4/inode.c linux-4.1.23/fs/ext4/inode.c
+--- linux-4.1.23.orig/fs/ext4/inode.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/ext4/inode.c 2016-05-02 22:53:59.000000000 +0200
+@@ -656,32 +656,16 @@
+ return retval;
+ }
+
+-/*
+- * Update EXT4_MAP_FLAGS in bh->b_state. For buffer heads attached to pages
+- * we have to be careful as someone else may be manipulating b_state as well.
+- */
+-static void ext4_update_bh_state(struct buffer_head *bh, unsigned long flags)
++static void ext4_end_io_unwritten(struct buffer_head *bh, int uptodate)
+ {
+- unsigned long old_state;
+- unsigned long new_state;
+-
+- flags &= EXT4_MAP_FLAGS;
+-
+- /* Dummy buffer_head? Set non-atomically. */
+- if (!bh->b_page) {
+- bh->b_state = (bh->b_state & ~EXT4_MAP_FLAGS) | flags;
++ struct inode *inode = bh->b_assoc_map->host;
++ /* XXX: breaks on 32-bit > 16GB. Is that even supported? */
++ loff_t offset = (loff_t)(uintptr_t)bh->b_private << inode->i_blkbits;
++ int err;
++ if (!uptodate)
+ return;
+- }
+- /*
+- * Someone else may be modifying b_state. Be careful! This is ugly but
+- * once we get rid of using bh as a container for mapping information
+- * to pass to / from get_block functions, this can go away.
+- */
+- do {
+- old_state = READ_ONCE(bh->b_state);
+- new_state = (old_state & ~EXT4_MAP_FLAGS) | flags;
+- } while (unlikely(
+- cmpxchg(&bh->b_state, old_state, new_state) != old_state));
++ WARN_ON(!buffer_unwritten(bh));
++ err = ext4_convert_unwritten_extents(NULL, inode, offset, bh->b_size);
+ }
+
+ /* Maximum number of blocks we map for direct IO at once. */
+@@ -720,16 +704,11 @@
+ ext4_io_end_t *io_end = ext4_inode_aio(inode);
+
+ map_bh(bh, inode->i_sb, map.m_pblk);
+- ext4_update_bh_state(bh, map.m_flags);
+- if (IS_DAX(inode) && buffer_unwritten(bh)) {
+- /*
+- * dgc: I suspect unwritten conversion on ext4+DAX is
+- * fundamentally broken here when there are concurrent
+- * read/write in progress on this inode.
+- */
+- WARN_ON_ONCE(io_end);
++ bh->b_state = (bh->b_state & ~EXT4_MAP_FLAGS) | map.m_flags;
++ if (IS_DAX(inode) && buffer_unwritten(bh) && !io_end) {
+ bh->b_assoc_map = inode->i_mapping;
+ bh->b_private = (void *)(unsigned long)iblock;
++ bh->b_end_io = ext4_end_io_unwritten;
+ }
+ if (io_end && io_end->flag & EXT4_IO_END_UNWRITTEN)
+ set_buffer_defer_completion(bh);
+@@ -1676,7 +1655,7 @@
+ return ret;
+
+ map_bh(bh, inode->i_sb, map.m_pblk);
+- ext4_update_bh_state(bh, map.m_flags);
++ bh->b_state = (bh->b_state & ~EXT4_MAP_FLAGS) | map.m_flags;
+
+ if (buffer_unwritten(bh)) {
+ /* A delayed write to unwritten bh should be marked
+diff -Nur linux-4.1.23.orig/fs/ext4/move_extent.c linux-4.1.23/fs/ext4/move_extent.c
+--- linux-4.1.23.orig/fs/ext4/move_extent.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/ext4/move_extent.c 2016-05-02 22:53:59.000000000 +0200
+@@ -393,7 +393,6 @@
+ *err = ext4_get_block(orig_inode, orig_blk_offset + i, bh, 0);
+ if (*err < 0)
+ break;
+- bh = bh->b_this_page;
+ }
+ if (!*err)
+ *err = block_commit_write(pagep[0], from, from + replaced_size);
+diff -Nur linux-4.1.23.orig/fs/fhandle.c linux-4.1.23/fs/fhandle.c
+--- linux-4.1.23.orig/fs/fhandle.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/fhandle.c 2016-05-02 22:53:59.000000000 +0200
+@@ -228,7 +228,7 @@
+ path_put(&path);
+ return fd;
+ }
+- file = file_open_root(path.dentry, path.mnt, "", open_flag, 0);
++ file = file_open_root(path.dentry, path.mnt, "", open_flag);
+ if (IS_ERR(file)) {
+ put_unused_fd(fd);
+ retval = PTR_ERR(file);
+diff -Nur linux-4.1.23.orig/fs/fuse/cuse.c linux-4.1.23/fs/fuse/cuse.c
+--- linux-4.1.23.orig/fs/fuse/cuse.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/fuse/cuse.c 2016-05-02 22:53:59.000000000 +0200
+@@ -90,7 +90,7 @@
+
+ static ssize_t cuse_read_iter(struct kiocb *kiocb, struct iov_iter *to)
+ {
+- struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(kiocb->ki_filp);
++ struct fuse_io_priv io = { .async = 0, .file = kiocb->ki_filp };
+ loff_t pos = 0;
+
+ return fuse_direct_io(&io, to, &pos, FUSE_DIO_CUSE);
+@@ -98,7 +98,7 @@
+
+ static ssize_t cuse_write_iter(struct kiocb *kiocb, struct iov_iter *from)
+ {
+- struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(kiocb->ki_filp);
++ struct fuse_io_priv io = { .async = 0, .file = kiocb->ki_filp };
+ loff_t pos = 0;
+ /*
+ * No locking or generic_write_checks(), the server is
+diff -Nur linux-4.1.23.orig/fs/fuse/file.c linux-4.1.23/fs/fuse/file.c
+--- linux-4.1.23.orig/fs/fuse/file.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/fuse/file.c 2016-05-02 22:53:59.000000000 +0200
+@@ -528,11 +528,6 @@
+ }
+ }
+
+-static void fuse_io_release(struct kref *kref)
+-{
+- kfree(container_of(kref, struct fuse_io_priv, refcnt));
+-}
+-
+ static ssize_t fuse_get_res_by_io(struct fuse_io_priv *io)
+ {
+ if (io->err)
+@@ -590,9 +585,8 @@
+ }
+
+ io->iocb->ki_complete(io->iocb, res, 0);
++ kfree(io);
+ }
+-
+- kref_put(&io->refcnt, fuse_io_release);
+ }
+
+ static void fuse_aio_complete_req(struct fuse_conn *fc, struct fuse_req *req)
+@@ -619,7 +613,6 @@
+ size_t num_bytes, struct fuse_io_priv *io)
+ {
+ spin_lock(&io->lock);
+- kref_get(&io->refcnt);
+ io->size += num_bytes;
+ io->reqs++;
+ spin_unlock(&io->lock);
+@@ -698,7 +691,7 @@
+
+ static int fuse_do_readpage(struct file *file, struct page *page)
+ {
+- struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(file);
++ struct fuse_io_priv io = { .async = 0, .file = file };
+ struct inode *inode = page->mapping->host;
+ struct fuse_conn *fc = get_fuse_conn(inode);
+ struct fuse_req *req;
+@@ -991,7 +984,7 @@
+ size_t res;
+ unsigned offset;
+ unsigned i;
+- struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(file);
++ struct fuse_io_priv io = { .async = 0, .file = file };
+
+ for (i = 0; i < req->num_pages; i++)
+ fuse_wait_on_page_writeback(inode, req->pages[i]->index);
+@@ -1056,7 +1049,6 @@
+ tmp = iov_iter_copy_from_user_atomic(page, ii, offset, bytes);
+ flush_dcache_page(page);
+
+- iov_iter_advance(ii, tmp);
+ if (!tmp) {
+ unlock_page(page);
+ page_cache_release(page);
+@@ -1069,6 +1061,7 @@
+ req->page_descs[req->num_pages].length = tmp;
+ req->num_pages++;
+
++ iov_iter_advance(ii, tmp);
+ count += tmp;
+ pos += tmp;
+ offset += tmp;
+@@ -1405,7 +1398,7 @@
+
+ static ssize_t fuse_direct_read_iter(struct kiocb *iocb, struct iov_iter *to)
+ {
+- struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(iocb->ki_filp);
++ struct fuse_io_priv io = { .async = 0, .file = iocb->ki_filp };
+ return __fuse_direct_read(&io, to, &iocb->ki_pos);
+ }
+
+@@ -1413,7 +1406,7 @@
+ {
+ struct file *file = iocb->ki_filp;
+ struct inode *inode = file_inode(file);
+- struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(file);
++ struct fuse_io_priv io = { .async = 0, .file = file };
+ ssize_t res;
+
+ if (is_bad_inode(inode))
+@@ -2793,7 +2786,6 @@
+ loff_t i_size;
+ size_t count = iov_iter_count(iter);
+ struct fuse_io_priv *io;
+- bool is_sync = is_sync_kiocb(iocb);
+
+ pos = offset;
+ inode = file->f_mapping->host;
+@@ -2814,7 +2806,6 @@
+ if (!io)
+ return -ENOMEM;
+ spin_lock_init(&io->lock);
+- kref_init(&io->refcnt);
+ io->reqs = 1;
+ io->bytes = -1;
+ io->size = 0;
+@@ -2834,18 +2825,12 @@
+ * to wait on real async I/O requests, so we must submit this request
+ * synchronously.
+ */
+- if (!is_sync && (offset + count > i_size) &&
++ if (!is_sync_kiocb(iocb) && (offset + count > i_size) &&
+ iov_iter_rw(iter) == WRITE)
+ io->async = false;
+
+- if (io->async && is_sync) {
+- /*
+- * Additional reference to keep io around after
+- * calling fuse_aio_complete()
+- */
+- kref_get(&io->refcnt);
++ if (io->async && is_sync_kiocb(iocb))
+ io->done = &wait;
+- }
+
+ if (iov_iter_rw(iter) == WRITE) {
+ ret = fuse_direct_io(io, iter, &pos, FUSE_DIO_WRITE);
+@@ -2858,14 +2843,14 @@
+ fuse_aio_complete(io, ret < 0 ? ret : 0, -1);
+
+ /* we have a non-extending, async request, so return */
+- if (!is_sync)
++ if (!is_sync_kiocb(iocb))
+ return -EIOCBQUEUED;
+
+ wait_for_completion(&wait);
+ ret = fuse_get_res_by_io(io);
+ }
+
+- kref_put(&io->refcnt, fuse_io_release);
++ kfree(io);
+
+ if (iov_iter_rw(iter) == WRITE) {
+ if (ret > 0)
+diff -Nur linux-4.1.23.orig/fs/fuse/fuse_i.h linux-4.1.23/fs/fuse/fuse_i.h
+--- linux-4.1.23.orig/fs/fuse/fuse_i.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/fuse/fuse_i.h 2016-05-02 22:53:59.000000000 +0200
+@@ -22,7 +22,6 @@
+ #include <linux/rbtree.h>
+ #include <linux/poll.h>
+ #include <linux/workqueue.h>
+-#include <linux/kref.h>
+
+ /** Max number of pages that can be used in a single read request */
+ #define FUSE_MAX_PAGES_PER_REQ 32
+@@ -254,7 +253,6 @@
+
+ /** The request IO state (for asynchronous processing) */
+ struct fuse_io_priv {
+- struct kref refcnt;
+ int async;
+ spinlock_t lock;
+ unsigned reqs;
+@@ -268,13 +266,6 @@
+ struct completion *done;
+ };
+
+-#define FUSE_IO_PRIV_SYNC(f) \
+-{ \
+- .refcnt = { ATOMIC_INIT(1) }, \
+- .async = 0, \
+- .file = f, \
+-}
+-
+ /**
+ * A request to the client
+ */
+diff -Nur linux-4.1.23.orig/fs/jbd2/journal.c linux-4.1.23/fs/jbd2/journal.c
+--- linux-4.1.23.orig/fs/jbd2/journal.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/jbd2/journal.c 2016-05-02 22:53:59.000000000 +0200
+@@ -1423,12 +1423,11 @@
+ /**
+ * jbd2_mark_journal_empty() - Mark on disk journal as empty.
+ * @journal: The journal to update.
+- * @write_op: With which operation should we write the journal sb
+ *
+ * Update a journal's dynamic superblock fields to show that journal is empty.
+ * Write updated superblock to disk waiting for IO to complete.
+ */
+-static void jbd2_mark_journal_empty(journal_t *journal, int write_op)
++static void jbd2_mark_journal_empty(journal_t *journal)
+ {
+ journal_superblock_t *sb = journal->j_superblock;
+
+@@ -1446,7 +1445,7 @@
+ sb->s_start = cpu_to_be32(0);
+ read_unlock(&journal->j_state_lock);
+
+- jbd2_write_superblock(journal, write_op);
++ jbd2_write_superblock(journal, WRITE_FUA);
+
+ /* Log is no longer empty */
+ write_lock(&journal->j_state_lock);
+@@ -1731,13 +1730,7 @@
+ if (journal->j_sb_buffer) {
+ if (!is_journal_aborted(journal)) {
+ mutex_lock(&journal->j_checkpoint_mutex);
+-
+- write_lock(&journal->j_state_lock);
+- journal->j_tail_sequence =
+- ++journal->j_transaction_sequence;
+- write_unlock(&journal->j_state_lock);
+-
+- jbd2_mark_journal_empty(journal, WRITE_FLUSH_FUA);
++ jbd2_mark_journal_empty(journal);
+ mutex_unlock(&journal->j_checkpoint_mutex);
+ } else
+ err = -EIO;
+@@ -1996,7 +1989,7 @@
+ * the magic code for a fully-recovered superblock. Any future
+ * commits of data to the journal will restore the current
+ * s_start value. */
+- jbd2_mark_journal_empty(journal, WRITE_FUA);
++ jbd2_mark_journal_empty(journal);
+ mutex_unlock(&journal->j_checkpoint_mutex);
+ write_lock(&journal->j_state_lock);
+ J_ASSERT(!journal->j_running_transaction);
+@@ -2042,7 +2035,7 @@
+ if (write) {
+ /* Lock to make assertions happy... */
+ mutex_lock(&journal->j_checkpoint_mutex);
+- jbd2_mark_journal_empty(journal, WRITE_FUA);
++ jbd2_mark_journal_empty(journal);
+ mutex_unlock(&journal->j_checkpoint_mutex);
+ }
+
+diff -Nur linux-4.1.23.orig/fs/nfsd/nfs4proc.c linux-4.1.23/fs/nfsd/nfs4proc.c
+--- linux-4.1.23.orig/fs/nfsd/nfs4proc.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/nfsd/nfs4proc.c 2016-05-02 22:53:59.000000000 +0200
+@@ -881,7 +881,6 @@
+ &exp, &dentry);
+ if (err)
+ return err;
+- fh_unlock(&cstate->current_fh);
+ if (d_really_is_negative(dentry)) {
+ exp_put(exp);
+ err = nfserr_noent;
+diff -Nur linux-4.1.23.orig/fs/nfsd/nfs4xdr.c linux-4.1.23/fs/nfsd/nfs4xdr.c
+--- linux-4.1.23.orig/fs/nfsd/nfs4xdr.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/nfsd/nfs4xdr.c 2016-05-02 22:53:59.000000000 +0200
+@@ -1071,9 +1071,8 @@
+
+ READ_BUF(4);
+ rename->rn_snamelen = be32_to_cpup(p++);
+- READ_BUF(rename->rn_snamelen);
++ READ_BUF(rename->rn_snamelen + 4);
+ SAVEMEM(rename->rn_sname, rename->rn_snamelen);
+- READ_BUF(4);
+ rename->rn_tnamelen = be32_to_cpup(p++);
+ READ_BUF(rename->rn_tnamelen);
+ SAVEMEM(rename->rn_tname, rename->rn_tnamelen);
+@@ -1155,14 +1154,13 @@
+ READ_BUF(8);
+ setclientid->se_callback_prog = be32_to_cpup(p++);
+ setclientid->se_callback_netid_len = be32_to_cpup(p++);
+- READ_BUF(setclientid->se_callback_netid_len);
++
++ READ_BUF(setclientid->se_callback_netid_len + 4);
+ SAVEMEM(setclientid->se_callback_netid_val, setclientid->se_callback_netid_len);
+- READ_BUF(4);
+ setclientid->se_callback_addr_len = be32_to_cpup(p++);
+
+- READ_BUF(setclientid->se_callback_addr_len);
++ READ_BUF(setclientid->se_callback_addr_len + 4);
+ SAVEMEM(setclientid->se_callback_addr_val, setclientid->se_callback_addr_len);
+- READ_BUF(4);
+ setclientid->se_callback_ident = be32_to_cpup(p++);
+
+ DECODE_TAIL;
+@@ -1816,9 +1814,8 @@
+
+ READ_BUF(4);
+ argp->taglen = be32_to_cpup(p++);
+- READ_BUF(argp->taglen);
++ READ_BUF(argp->taglen + 8);
+ SAVEMEM(argp->tag, argp->taglen);
+- READ_BUF(8);
+ argp->minorversion = be32_to_cpup(p++);
+ argp->opcnt = be32_to_cpup(p++);
+ max_reply += 4 + (XDR_QUADLEN(argp->taglen) << 2);
+diff -Nur linux-4.1.23.orig/fs/ocfs2/dlm/dlmconvert.c linux-4.1.23/fs/ocfs2/dlm/dlmconvert.c
+--- linux-4.1.23.orig/fs/ocfs2/dlm/dlmconvert.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/ocfs2/dlm/dlmconvert.c 2016-05-02 22:53:59.000000000 +0200
+@@ -262,7 +262,6 @@
+ struct dlm_lock *lock, int flags, int type)
+ {
+ enum dlm_status status;
+- u8 old_owner = res->owner;
+
+ mlog(0, "type=%d, convert_type=%d, busy=%d\n", lock->ml.type,
+ lock->ml.convert_type, res->state & DLM_LOCK_RES_IN_PROGRESS);
+@@ -288,19 +287,6 @@
+ status = DLM_DENIED;
+ goto bail;
+ }
+-
+- if (lock->ml.type == type && lock->ml.convert_type == LKM_IVMODE) {
+- mlog(0, "last convert request returned DLM_RECOVERING, but "
+- "owner has already queued and sent ast to me. res %.*s, "
+- "(cookie=%u:%llu, type=%d, conv=%d)\n",
+- res->lockname.len, res->lockname.name,
+- dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
+- dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
+- lock->ml.type, lock->ml.convert_type);
+- status = DLM_NORMAL;
+- goto bail;
+- }
+-
+ res->state |= DLM_LOCK_RES_IN_PROGRESS;
+ /* move lock to local convert queue */
+ /* do not alter lock refcount. switching lists. */
+@@ -330,19 +316,11 @@
+ spin_lock(&res->spinlock);
+ res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
+ lock->convert_pending = 0;
+- /* if it failed, move it back to granted queue.
+- * if master returns DLM_NORMAL and then down before sending ast,
+- * it may have already been moved to granted queue, reset to
+- * DLM_RECOVERING and retry convert */
++ /* if it failed, move it back to granted queue */
+ if (status != DLM_NORMAL) {
+ if (status != DLM_NOTQUEUED)
+ dlm_error(status);
+ dlm_revert_pending_convert(res, lock);
+- } else if ((res->state & DLM_LOCK_RES_RECOVERING) ||
+- (old_owner != res->owner)) {
+- mlog(0, "res %.*s is in recovering or has been recovered.\n",
+- res->lockname.len, res->lockname.name);
+- status = DLM_RECOVERING;
+ }
+ bail:
+ spin_unlock(&res->spinlock);
+diff -Nur linux-4.1.23.orig/fs/ocfs2/dlm/dlmrecovery.c linux-4.1.23/fs/ocfs2/dlm/dlmrecovery.c
+--- linux-4.1.23.orig/fs/ocfs2/dlm/dlmrecovery.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/ocfs2/dlm/dlmrecovery.c 2016-05-02 22:53:59.000000000 +0200
+@@ -2064,6 +2064,7 @@
+ dlm_lock_get(lock);
+ if (lock->convert_pending) {
+ /* move converting lock back to granted */
++ BUG_ON(i != DLM_CONVERTING_LIST);
+ mlog(0, "node died with convert pending "
+ "on %.*s. move back to granted list.\n",
+ res->lockname.len, res->lockname.name);
+diff -Nur linux-4.1.23.orig/fs/open.c linux-4.1.23/fs/open.c
+--- linux-4.1.23.orig/fs/open.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/open.c 2016-05-02 22:53:59.000000000 +0200
+@@ -987,12 +987,14 @@
+ EXPORT_SYMBOL(filp_open);
+
+ struct file *file_open_root(struct dentry *dentry, struct vfsmount *mnt,
+- const char *filename, int flags, umode_t mode)
++ const char *filename, int flags)
+ {
+ struct open_flags op;
+- int err = build_open_flags(flags, mode, &op);
++ int err = build_open_flags(flags, 0, &op);
+ if (err)
+ return ERR_PTR(err);
++ if (flags & O_CREAT)
++ return ERR_PTR(-EINVAL);
+ return do_file_open_root(dentry, mnt, filename, &op);
+ }
+ EXPORT_SYMBOL(file_open_root);
+diff -Nur linux-4.1.23.orig/fs/overlayfs/inode.c linux-4.1.23/fs/overlayfs/inode.c
+--- linux-4.1.23.orig/fs/overlayfs/inode.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/overlayfs/inode.c 2016-05-02 22:53:59.000000000 +0200
+@@ -62,15 +62,15 @@
+ if (err)
+ goto out;
+
+- err = ovl_copy_up(dentry);
+- if (!err) {
+- upperdentry = ovl_dentry_upper(dentry);
+-
++ upperdentry = ovl_dentry_upper(dentry);
++ if (upperdentry) {
+ mutex_lock(&upperdentry->d_inode->i_mutex);
+ err = notify_change(upperdentry, attr, NULL);
+ if (!err)
+ ovl_copyattr(upperdentry->d_inode, dentry->d_inode);
+ mutex_unlock(&upperdentry->d_inode->i_mutex);
++ } else {
++ err = ovl_copy_up_last(dentry, attr, false);
+ }
+ ovl_drop_write(dentry);
+ out:
+diff -Nur linux-4.1.23.orig/fs/proc/array.c linux-4.1.23/fs/proc/array.c
+--- linux-4.1.23.orig/fs/proc/array.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/proc/array.c 2016-05-02 22:53:59.000000000 +0200
+@@ -384,7 +384,7 @@
+
+ state = *get_task_state(task);
+ vsize = eip = esp = 0;
+- permitted = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT);
++ permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT);
+ mm = get_task_mm(task);
+ if (mm) {
+ vsize = task_vsize(mm);
+diff -Nur linux-4.1.23.orig/fs/proc/base.c linux-4.1.23/fs/proc/base.c
+--- linux-4.1.23.orig/fs/proc/base.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/proc/base.c 2016-05-02 22:53:59.000000000 +0200
+@@ -211,7 +211,7 @@
+ static int proc_pid_auxv(struct seq_file *m, struct pid_namespace *ns,
+ struct pid *pid, struct task_struct *task)
+ {
+- struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ_FSCREDS);
++ struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ);
+ if (mm && !IS_ERR(mm)) {
+ unsigned int nwords = 0;
+ do {
+@@ -238,8 +238,7 @@
+
+ wchan = get_wchan(task);
+
+- if (wchan && ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)
+- && !lookup_symbol_name(wchan, symname))
++ if (wchan && ptrace_may_access(task, PTRACE_MODE_READ) && !lookup_symbol_name(wchan, symname))
+ seq_printf(m, "%s", symname);
+ else
+ seq_putc(m, '0');
+@@ -253,7 +252,7 @@
+ int err = mutex_lock_killable(&task->signal->cred_guard_mutex);
+ if (err)
+ return err;
+- if (!ptrace_may_access(task, PTRACE_MODE_ATTACH_FSCREDS)) {
++ if (!ptrace_may_access(task, PTRACE_MODE_ATTACH)) {
+ mutex_unlock(&task->signal->cred_guard_mutex);
+ return -EPERM;
+ }
+@@ -503,7 +502,7 @@
+ */
+ task = get_proc_task(inode);
+ if (task) {
+- allowed = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS);
++ allowed = ptrace_may_access(task, PTRACE_MODE_READ);
+ put_task_struct(task);
+ }
+ return allowed;
+@@ -538,7 +537,7 @@
+ return true;
+ if (in_group_p(pid->pid_gid))
+ return true;
+- return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS);
++ return ptrace_may_access(task, PTRACE_MODE_READ);
+ }
+
+
+@@ -615,7 +614,7 @@
+ struct mm_struct *mm = ERR_PTR(-ESRCH);
+
+ if (task) {
+- mm = mm_access(task, mode | PTRACE_MODE_FSCREDS);
++ mm = mm_access(task, mode);
+ put_task_struct(task);
+
+ if (!IS_ERR_OR_NULL(mm)) {
+@@ -1677,7 +1676,7 @@
+ if (!task)
+ goto out_notask;
+
+- mm = mm_access(task, PTRACE_MODE_READ_FSCREDS);
++ mm = mm_access(task, PTRACE_MODE_READ);
+ if (IS_ERR_OR_NULL(mm))
+ goto out;
+
+@@ -1809,7 +1808,7 @@
+ goto out;
+
+ result = -EACCES;
+- if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS))
++ if (!ptrace_may_access(task, PTRACE_MODE_READ))
+ goto out_put_task;
+
+ result = -ENOENT;
+@@ -1866,7 +1865,7 @@
+ goto out;
+
+ ret = -EACCES;
+- if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS))
++ if (!ptrace_may_access(task, PTRACE_MODE_READ))
+ goto out_put_task;
+
+ ret = 0;
+@@ -2346,7 +2345,7 @@
+ if (result)
+ return result;
+
+- if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) {
++ if (!ptrace_may_access(task, PTRACE_MODE_READ)) {
+ result = -EACCES;
+ goto out_unlock;
+ }
+diff -Nur linux-4.1.23.orig/fs/proc/namespaces.c linux-4.1.23/fs/proc/namespaces.c
+--- linux-4.1.23.orig/fs/proc/namespaces.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/proc/namespaces.c 2016-05-02 22:53:59.000000000 +0200
+@@ -42,7 +42,7 @@
+ if (!task)
+ return error;
+
+- if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) {
++ if (ptrace_may_access(task, PTRACE_MODE_READ)) {
+ error = ns_get_path(&ns_path, task, ns_ops);
+ if (!error)
+ nd_jump_link(nd, &ns_path);
+@@ -63,7 +63,7 @@
+ if (!task)
+ return res;
+
+- if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) {
++ if (ptrace_may_access(task, PTRACE_MODE_READ)) {
+ res = ns_get_name(name, sizeof(name), task, ns_ops);
+ if (res >= 0)
+ res = readlink_copy(buffer, buflen, name);
+diff -Nur linux-4.1.23.orig/fs/proc_namespace.c linux-4.1.23/fs/proc_namespace.c
+--- linux-4.1.23.orig/fs/proc_namespace.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/proc_namespace.c 2016-05-02 22:53:59.000000000 +0200
+@@ -196,8 +196,6 @@
+ if (sb->s_op->show_devname) {
+ seq_puts(m, "device ");
+ err = sb->s_op->show_devname(m, mnt_path.dentry);
+- if (err)
+- goto out;
+ } else {
+ if (r->mnt_devname) {
+ seq_puts(m, "device ");
+diff -Nur linux-4.1.23.orig/fs/quota/dquot.c linux-4.1.23/fs/quota/dquot.c
+--- linux-4.1.23.orig/fs/quota/dquot.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/quota/dquot.c 2016-05-02 22:53:59.000000000 +0200
+@@ -1393,7 +1393,7 @@
+ static void __dquot_initialize(struct inode *inode, int type)
+ {
+ int cnt, init_needed = 0;
+- struct dquot **dquots, *got[MAXQUOTAS] = {};
++ struct dquot **dquots, *got[MAXQUOTAS];
+ struct super_block *sb = inode->i_sb;
+ qsize_t rsv;
+
+@@ -1408,6 +1408,7 @@
+ kprojid_t projid;
+ int rc;
+
++ got[cnt] = NULL;
+ if (type != -1 && cnt != type)
+ continue;
+ /*
+diff -Nur linux-4.1.23.orig/fs/splice.c linux-4.1.23/fs/splice.c
+--- linux-4.1.23.orig/fs/splice.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/splice.c 2016-05-02 22:53:59.000000000 +0200
+@@ -185,9 +185,6 @@
+ unsigned int spd_pages = spd->nr_pages;
+ int ret, do_wakeup, page_nr;
+
+- if (!spd_pages)
+- return 0;
+-
+ ret = 0;
+ do_wakeup = 0;
+ page_nr = 0;
+diff -Nur linux-4.1.23.orig/fs/xfs/xfs_attr_list.c linux-4.1.23/fs/xfs/xfs_attr_list.c
+--- linux-4.1.23.orig/fs/xfs/xfs_attr_list.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/fs/xfs/xfs_attr_list.c 2016-05-02 22:53:59.000000000 +0200
+@@ -202,10 +202,8 @@
+ sbp->namelen,
+ sbp->valuelen,
+ &sbp->name[sbp->namelen]);
+- if (error) {
+- kmem_free(sbuf);
++ if (error)
+ return error;
+- }
+ if (context->seen_enough)
+ break;
+ cursor->offset++;
+@@ -456,13 +454,14 @@
+ args.rmtblkcnt = xfs_attr3_rmt_blocks(
+ args.dp->i_mount, valuelen);
+ retval = xfs_attr_rmtval_get(&args);
+- if (!retval)
+- retval = context->put_listent(context,
+- entry->flags,
+- name_rmt->name,
+- (int)name_rmt->namelen,
+- valuelen,
+- args.value);
++ if (retval)
++ return retval;
++ retval = context->put_listent(context,
++ entry->flags,
++ name_rmt->name,
++ (int)name_rmt->namelen,
++ valuelen,
++ args.value);
+ kmem_free(args.value);
+ } else {
+ retval = context->put_listent(context,
+diff -Nur linux-4.1.23.orig/include/asm-generic/bitops/lock.h linux-4.1.23/include/asm-generic/bitops/lock.h
+--- linux-4.1.23.orig/include/asm-generic/bitops/lock.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/asm-generic/bitops/lock.h 2016-05-02 22:53:59.000000000 +0200
+@@ -29,16 +29,16 @@
+ * @nr: the bit to set
+ * @addr: the address to start counting from
+ *
+- * A weaker form of clear_bit_unlock() as used by __bit_lock_unlock(). If all
+- * the bits in the word are protected by this lock some archs can use weaker
+- * ops to safely unlock.
+- *
+- * See for example x86's implementation.
++ * This operation is like clear_bit_unlock, however it is not atomic.
++ * It does provide release barrier semantics so it can be used to unlock
++ * a bit lock, however it would only be used if no other CPU can modify
++ * any bits in the memory until the lock is released (a good example is
++ * if the bit lock itself protects access to the other bits in the word).
+ */
+ #define __clear_bit_unlock(nr, addr) \
+ do { \
+- smp_mb__before_atomic(); \
+- clear_bit(nr, addr); \
++ smp_mb(); \
++ __clear_bit(nr, addr); \
+ } while (0)
+
+ #endif /* _ASM_GENERIC_BITOPS_LOCK_H_ */
+diff -Nur linux-4.1.23.orig/include/drm/drmP.h linux-4.1.23/include/drm/drmP.h
+--- linux-4.1.23.orig/include/drm/drmP.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/drm/drmP.h 2016-05-02 22:53:59.000000000 +0200
@@ -567,6 +567,13 @@
int (*gem_open_object) (struct drm_gem_object *, struct drm_file *);
void (*gem_close_object) (struct drm_gem_object *, struct drm_file *);
@@ -314635,9 +320846,9 @@ diff -Nur linux-4.1.22.orig/include/drm/drmP.h linux-4.1.22/include/drm/drmP.h
/* prime: */
/* export handle -> fd (see drm_gem_prime_handle_to_fd() helper) */
int (*prime_handle_to_fd)(struct drm_device *dev, struct drm_file *file_priv,
-diff -Nur linux-4.1.22.orig/include/drm/drm_crtc.h linux-4.1.22/include/drm/drm_crtc.h
---- linux-4.1.22.orig/include/drm/drm_crtc.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/drm/drm_crtc.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/drm/drm_crtc.h linux-4.1.23/include/drm/drm_crtc.h
+--- linux-4.1.23.orig/include/drm/drm_crtc.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/drm/drm_crtc.h 2016-05-02 22:53:59.000000000 +0200
@@ -1538,4 +1538,19 @@
list_for_each_entry(plane, planelist, head) \
if (plane->type == DRM_PLANE_TYPE_OVERLAY)
@@ -314658,9 +320869,86 @@ diff -Nur linux-4.1.22.orig/include/drm/drm_crtc.h linux-4.1.22/include/drm/drm_
+ list_for_each_entry(fb, &(dev)->mode_config.fb_list, head)
+
#endif /* __DRM_CRTC_H__ */
-diff -Nur linux-4.1.22.orig/include/dt-bindings/clock/bcm2835.h linux-4.1.22/include/dt-bindings/clock/bcm2835.h
---- linux-4.1.22.orig/include/dt-bindings/clock/bcm2835.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/dt-bindings/clock/bcm2835.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/drm/drm_dp_mst_helper.h linux-4.1.23/include/drm/drm_dp_mst_helper.h
+--- linux-4.1.23.orig/include/drm/drm_dp_mst_helper.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/drm/drm_dp_mst_helper.h 2016-05-02 22:53:59.000000000 +0200
+@@ -44,6 +44,8 @@
+ /**
+ * struct drm_dp_mst_port - MST port
+ * @kref: reference count for this port.
++ * @guid_valid: for DP 1.2 devices if we have validated the GUID.
++ * @guid: guid for DP 1.2 device on this port.
+ * @port_num: port number
+ * @input: if this port is an input port.
+ * @mcs: message capability status - DP 1.2 spec.
+@@ -68,6 +70,10 @@
+ struct drm_dp_mst_port {
+ struct kref kref;
+
++ /* if dpcd 1.2 device is on this port - its GUID info */
++ bool guid_valid;
++ u8 guid[16];
++
+ u8 port_num;
+ bool input;
+ bool mcs;
+@@ -103,12 +109,10 @@
+ * @tx_slots: transmission slots for this device.
+ * @last_seqno: last sequence number used to talk to this.
+ * @link_address_sent: if a link address message has been sent to this device yet.
+- * @guid: guid for DP 1.2 branch device. port under this branch can be
+- * identified by port #.
+ *
+ * This structure represents an MST branch device, there is one
+- * primary branch device at the root, along with any other branches connected
+- * to downstream port of parent branches.
++ * primary branch device at the root, along with any others connected
++ * to downstream ports
+ */
+ struct drm_dp_mst_branch {
+ struct kref kref;
+@@ -127,9 +131,6 @@
+ struct drm_dp_sideband_msg_tx *tx_slots[2];
+ int last_seqno;
+ bool link_address_sent;
+-
+- /* global unique identifier to identify branch devices */
+- u8 guid[16];
+ };
+
+
+@@ -403,9 +404,11 @@
+ * @conn_base_id: DRM connector ID this mgr is connected to.
+ * @down_rep_recv: msg receiver state for down replies.
+ * @up_req_recv: msg receiver state for up requests.
+- * @lock: protects mst state, primary, dpcd.
++ * @lock: protects mst state, primary, guid, dpcd.
+ * @mst_state: if this manager is enabled for an MST capable port.
+ * @mst_primary: pointer to the primary branch device.
++ * @guid_valid: GUID valid for the primary branch device.
++ * @guid: GUID for primary port.
+ * @dpcd: cache of DPCD for primary port.
+ * @pbn_div: PBN to slots divisor.
+ *
+@@ -427,11 +430,13 @@
+ struct drm_dp_sideband_msg_rx up_req_recv;
+
+ /* pointer to info about the initial MST device */
+- struct mutex lock; /* protects mst_state + primary + dpcd */
++ struct mutex lock; /* protects mst_state + primary + guid + dpcd */
+
+ bool mst_state;
+ struct drm_dp_mst_branch *mst_primary;
+-
++ /* primary MST device GUID */
++ bool guid_valid;
++ u8 guid[16];
+ u8 dpcd[DP_RECEIVER_CAP_SIZE];
+ u8 sink_count;
+ int pbn_div;
+diff -Nur linux-4.1.23.orig/include/dt-bindings/clock/bcm2835.h linux-4.1.23/include/dt-bindings/clock/bcm2835.h
+--- linux-4.1.23.orig/include/dt-bindings/clock/bcm2835.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/dt-bindings/clock/bcm2835.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2015 Broadcom Corporation
@@ -314709,9 +320997,28 @@ diff -Nur linux-4.1.22.orig/include/dt-bindings/clock/bcm2835.h linux-4.1.22/inc
+#define BCM2835_CLOCK_PERI_IMAGE 29
+
+#define BCM2835_CLOCK_COUNT 30
-diff -Nur linux-4.1.22.orig/include/linux/broadcom/bcm2835_smi.h linux-4.1.22/include/linux/broadcom/bcm2835_smi.h
---- linux-4.1.22.orig/include/linux/broadcom/bcm2835_smi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/broadcom/bcm2835_smi.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/atmel-mci.h linux-4.1.23/include/linux/atmel-mci.h
+--- linux-4.1.23.orig/include/linux/atmel-mci.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/atmel-mci.h 2016-05-02 22:53:59.000000000 +0200
+@@ -2,7 +2,6 @@
+ #define __LINUX_ATMEL_MCI_H
+
+ #include <linux/types.h>
+-#include <linux/dmaengine.h>
+
+ #define ATMCI_MAX_NR_SLOTS 2
+
+@@ -38,7 +37,6 @@
+ */
+ struct mci_platform_data {
+ struct mci_dma_data *dma_slave;
+- dma_filter_fn dma_filter;
+ struct mci_slot_pdata slot[ATMCI_MAX_NR_SLOTS];
+ };
+
+diff -Nur linux-4.1.23.orig/include/linux/broadcom/bcm2835_smi.h linux-4.1.23/include/linux/broadcom/bcm2835_smi.h
+--- linux-4.1.23.orig/include/linux/broadcom/bcm2835_smi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/broadcom/bcm2835_smi.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,391 @@
+/**
+ * Declarations and definitions for Broadcom's Secondary Memory Interface
@@ -315104,9 +321411,9 @@ diff -Nur linux-4.1.22.orig/include/linux/broadcom/bcm2835_smi.h linux-4.1.22/in
+#endif /* BCM2835_SMI_IMPLEMENTATION */
+
+#endif /* BCM2835_SMI_H */
-diff -Nur linux-4.1.22.orig/include/linux/broadcom/vc_cma.h linux-4.1.22/include/linux/broadcom/vc_cma.h
---- linux-4.1.22.orig/include/linux/broadcom/vc_cma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/broadcom/vc_cma.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/broadcom/vc_cma.h linux-4.1.23/include/linux/broadcom/vc_cma.h
+--- linux-4.1.23.orig/include/linux/broadcom/vc_cma.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/broadcom/vc_cma.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,29 @@
+/*****************************************************************************
+* Copyright 2012 Broadcom Corporation. All rights reserved.
@@ -315137,9 +321444,9 @@ diff -Nur linux-4.1.22.orig/include/linux/broadcom/vc_cma.h linux-4.1.22/include
+#endif
+
+#endif /* VC_CMA_H */
-diff -Nur linux-4.1.22.orig/include/linux/broadcom/vc_mem.h linux-4.1.22/include/linux/broadcom/vc_mem.h
---- linux-4.1.22.orig/include/linux/broadcom/vc_mem.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/broadcom/vc_mem.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/broadcom/vc_mem.h linux-4.1.23/include/linux/broadcom/vc_mem.h
+--- linux-4.1.23.orig/include/linux/broadcom/vc_mem.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/broadcom/vc_mem.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,35 @@
+/*****************************************************************************
+* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved.
@@ -315176,9 +321483,87 @@ diff -Nur linux-4.1.22.orig/include/linux/broadcom/vc_mem.h linux-4.1.22/include
+#endif
+
+#endif /* _VC_MEM_H */
-diff -Nur linux-4.1.22.orig/include/linux/leds.h linux-4.1.22/include/linux/leds.h
---- linux-4.1.22.orig/include/linux/leds.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/linux/leds.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/efi.h linux-4.1.23/include/linux/efi.h
+--- linux-4.1.23.orig/include/linux/efi.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/efi.h 2016-05-02 22:53:59.000000000 +0200
+@@ -1162,10 +1162,7 @@
+ struct efivar_entry *efivar_entry_find(efi_char16_t *name, efi_guid_t guid,
+ struct list_head *head, bool remove);
+
+-bool efivar_validate(efi_guid_t vendor, efi_char16_t *var_name, u8 *data,
+- unsigned long data_size);
+-bool efivar_variable_is_removable(efi_guid_t vendor, const char *name,
+- size_t len);
++bool efivar_validate(efi_char16_t *var_name, u8 *data, unsigned long len);
+
+ extern struct work_struct efivar_work;
+ void efivar_run_worker(void);
+diff -Nur linux-4.1.23.orig/include/linux/fs.h linux-4.1.23/include/linux/fs.h
+--- linux-4.1.23.orig/include/linux/fs.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/fs.h 2016-05-02 22:53:59.000000000 +0200
+@@ -70,7 +70,6 @@
+ struct buffer_head *bh_result, int create);
+ typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
+ ssize_t bytes, void *private);
+-typedef void (dax_iodone_t)(struct buffer_head *bh_map, int uptodate);
+
+ #define MAY_EXEC 0x00000001
+ #define MAY_WRITE 0x00000002
+@@ -2202,7 +2201,7 @@
+ extern struct file *file_open_name(struct filename *, int, umode_t);
+ extern struct file *filp_open(const char *, int, umode_t);
+ extern struct file *file_open_root(struct dentry *, struct vfsmount *,
+- const char *, int, umode_t);
++ const char *, int);
+ extern struct file * dentry_open(const struct path *, int, const struct cred *);
+ extern int filp_close(struct file *, fl_owner_t id);
+
+@@ -2636,10 +2635,9 @@
+ int dax_clear_blocks(struct inode *, sector_t block, long size);
+ int dax_zero_page_range(struct inode *, loff_t from, unsigned len, get_block_t);
+ int dax_truncate_page(struct inode *, loff_t from, get_block_t);
+-int dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t,
+- dax_iodone_t);
++int dax_fault(struct vm_area_struct *, struct vm_fault *, get_block_t);
+ int dax_pfn_mkwrite(struct vm_area_struct *, struct vm_fault *);
+-#define dax_mkwrite(vma, vmf, gb, iod) dax_fault(vma, vmf, gb, iod)
++#define dax_mkwrite(vma, vmf, gb) dax_fault(vma, vmf, gb)
+
+ #ifdef CONFIG_BLOCK
+ typedef void (dio_submit_t)(int rw, struct bio *bio, struct inode *inode,
+diff -Nur linux-4.1.23.orig/include/linux/kernel.h linux-4.1.23/include/linux/kernel.h
+--- linux-4.1.23.orig/include/linux/kernel.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/kernel.h 2016-05-02 22:53:59.000000000 +0200
+@@ -606,7 +606,7 @@
+
+ #define do_trace_printk(fmt, args...) \
+ do { \
+- static const char *trace_printk_fmt __used \
++ static const char *trace_printk_fmt \
+ __attribute__((section("__trace_printk_fmt"))) = \
+ __builtin_constant_p(fmt) ? fmt : NULL; \
+ \
+@@ -650,7 +650,7 @@
+ */
+
+ #define trace_puts(str) ({ \
+- static const char *trace_printk_fmt __used \
++ static const char *trace_printk_fmt \
+ __attribute__((section("__trace_printk_fmt"))) = \
+ __builtin_constant_p(str) ? str : NULL; \
+ \
+@@ -672,7 +672,7 @@
+ #define ftrace_vprintk(fmt, vargs) \
+ do { \
+ if (__builtin_constant_p(fmt)) { \
+- static const char *trace_printk_fmt __used \
++ static const char *trace_printk_fmt \
+ __attribute__((section("__trace_printk_fmt"))) = \
+ __builtin_constant_p(fmt) ? fmt : NULL; \
+ \
+diff -Nur linux-4.1.23.orig/include/linux/leds.h linux-4.1.23/include/linux/leds.h
+--- linux-4.1.23.orig/include/linux/leds.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/leds.h 2016-05-02 22:53:59.000000000 +0200
@@ -47,6 +47,9 @@
#define SET_BRIGHTNESS_ASYNC (1 << 21)
#define SET_BRIGHTNESS_SYNC (1 << 22)
@@ -315189,9 +321574,9 @@ diff -Nur linux-4.1.22.orig/include/linux/leds.h linux-4.1.22/include/linux/leds
/* Set LED brightness level */
/* Must not sleep, use a workqueue if needed */
-diff -Nur linux-4.1.22.orig/include/linux/mfd/rpisense/core.h linux-4.1.22/include/linux/mfd/rpisense/core.h
---- linux-4.1.22.orig/include/linux/mfd/rpisense/core.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/mfd/rpisense/core.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/mfd/rpisense/core.h linux-4.1.23/include/linux/mfd/rpisense/core.h
+--- linux-4.1.23.orig/include/linux/mfd/rpisense/core.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/mfd/rpisense/core.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,47 @@
+/*
+ * Raspberry Pi Sense HAT core driver
@@ -315240,9 +321625,9 @@ diff -Nur linux-4.1.22.orig/include/linux/mfd/rpisense/core.h linux-4.1.22/inclu
+int rpisense_block_write(struct rpisense *rpisense, const char *buf, int count);
+
+#endif
-diff -Nur linux-4.1.22.orig/include/linux/mfd/rpisense/framebuffer.h linux-4.1.22/include/linux/mfd/rpisense/framebuffer.h
---- linux-4.1.22.orig/include/linux/mfd/rpisense/framebuffer.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/mfd/rpisense/framebuffer.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/mfd/rpisense/framebuffer.h linux-4.1.23/include/linux/mfd/rpisense/framebuffer.h
+--- linux-4.1.23.orig/include/linux/mfd/rpisense/framebuffer.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/mfd/rpisense/framebuffer.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,32 @@
+/*
+ * Raspberry Pi Sense HAT framebuffer driver
@@ -315276,9 +321661,9 @@ diff -Nur linux-4.1.22.orig/include/linux/mfd/rpisense/framebuffer.h linux-4.1.2
+};
+
+#endif
-diff -Nur linux-4.1.22.orig/include/linux/mfd/rpisense/joystick.h linux-4.1.22/include/linux/mfd/rpisense/joystick.h
---- linux-4.1.22.orig/include/linux/mfd/rpisense/joystick.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/mfd/rpisense/joystick.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/mfd/rpisense/joystick.h linux-4.1.23/include/linux/mfd/rpisense/joystick.h
+--- linux-4.1.23.orig/include/linux/mfd/rpisense/joystick.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/mfd/rpisense/joystick.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,35 @@
+/*
+ * Raspberry Pi Sense HAT joystick driver
@@ -315315,9 +321700,31 @@ diff -Nur linux-4.1.22.orig/include/linux/mfd/rpisense/joystick.h linux-4.1.22/i
+
+
+#endif
-diff -Nur linux-4.1.22.orig/include/linux/mmc/host.h linux-4.1.22/include/linux/mmc/host.h
---- linux-4.1.22.orig/include/linux/mmc/host.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/linux/mmc/host.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/mm.h linux-4.1.23/include/linux/mm.h
+--- linux-4.1.23.orig/include/linux/mm.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/mm.h 2016-05-02 22:53:59.000000000 +0200
+@@ -588,7 +588,7 @@
+ return page[1].compound_dtor;
+ }
+
+-static inline unsigned int compound_order(struct page *page)
++static inline int compound_order(struct page *page)
+ {
+ if (!PageHead(page))
+ return 0;
+@@ -1771,8 +1771,7 @@
+ extern void si_meminfo_node(struct sysinfo *val, int nid);
+
+ extern __printf(3, 4)
+-void warn_alloc_failed(gfp_t gfp_mask, unsigned int order,
+- const char *fmt, ...);
++void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...);
+
+ extern void setup_per_cpu_pageset(void);
+
+diff -Nur linux-4.1.23.orig/include/linux/mmc/host.h linux-4.1.23/include/linux/mmc/host.h
+--- linux-4.1.23.orig/include/linux/mmc/host.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/mmc/host.h 2016-05-02 22:53:59.000000000 +0200
@@ -285,6 +285,7 @@
MMC_CAP2_HS400_1_2V)
#define MMC_CAP2_HSX00_1_2V (MMC_CAP2_HS200_1_2V_SDR | MMC_CAP2_HS400_1_2V)
@@ -315326,9 +321733,67 @@ diff -Nur linux-4.1.22.orig/include/linux/mmc/host.h linux-4.1.22/include/linux/
mmc_pm_flag_t pm_caps; /* supported pm features */
-diff -Nur linux-4.1.22.orig/include/linux/platform_data/bcm2708.h linux-4.1.22/include/linux/platform_data/bcm2708.h
---- linux-4.1.22.orig/include/linux/platform_data/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/platform_data/bcm2708.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/module.h linux-4.1.23/include/linux/module.h
+--- linux-4.1.23.orig/include/linux/module.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/module.h 2016-05-02 22:53:59.000000000 +0200
+@@ -210,12 +210,6 @@
+ MODULE_STATE_UNFORMED, /* Still setting it up. */
+ };
+
+-struct mod_kallsyms {
+- Elf_Sym *symtab;
+- unsigned int num_symtab;
+- char *strtab;
+-};
+-
+ struct module {
+ enum module_state state;
+
+@@ -303,9 +297,14 @@
+ #endif
+
+ #ifdef CONFIG_KALLSYMS
+- /* Protected by RCU and/or module_mutex: use rcu_dereference() */
+- struct mod_kallsyms *kallsyms;
+- struct mod_kallsyms core_kallsyms;
++ /*
++ * We keep the symbol and string tables for kallsyms.
++ * The core_* fields below are temporary, loader-only (they
++ * could really be discarded after module init).
++ */
++ Elf_Sym *symtab, *core_symtab;
++ unsigned int num_symtab, core_num_syms;
++ char *strtab, *core_strtab;
+
+ /* Section attributes */
+ struct module_sect_attrs *sect_attrs;
+diff -Nur linux-4.1.23.orig/include/linux/pageblock-flags.h linux-4.1.23/include/linux/pageblock-flags.h
+--- linux-4.1.23.orig/include/linux/pageblock-flags.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/pageblock-flags.h 2016-05-02 22:53:59.000000000 +0200
+@@ -44,7 +44,7 @@
+ #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
+
+ /* Huge page sizes are variable */
+-extern unsigned int pageblock_order;
++extern int pageblock_order;
+
+ #else /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
+
+diff -Nur linux-4.1.23.orig/include/linux/pci.h linux-4.1.23/include/linux/pci.h
+--- linux-4.1.23.orig/include/linux/pci.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/pci.h 2016-05-02 22:53:59.000000000 +0200
+@@ -357,8 +357,6 @@
+ unsigned int broken_intx_masking:1;
+ unsigned int io_window_1k:1; /* Intel P2P bridge 1K I/O windows */
+ unsigned int irq_managed:1;
+- unsigned int has_secondary_link:1;
+- unsigned int non_compliant_bars:1; /* broken BARs; ignore them */
+ pci_dev_flags_t dev_flags;
+ atomic_t enable_cnt; /* pci_enable_device has been called */
+
+diff -Nur linux-4.1.23.orig/include/linux/platform_data/bcm2708.h linux-4.1.23/include/linux/platform_data/bcm2708.h
+--- linux-4.1.23.orig/include/linux/platform_data/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/platform_data/bcm2708.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,23 @@
+/*
+ * include/linux/platform_data/bcm2708.h
@@ -315353,9 +321818,9 @@ diff -Nur linux-4.1.22.orig/include/linux/platform_data/bcm2708.h linux-4.1.22/i
+ bcm2708_gpio_pull_t value);
+
+#endif
-diff -Nur linux-4.1.22.orig/include/linux/platform_data/dma-bcm2708.h linux-4.1.22/include/linux/platform_data/dma-bcm2708.h
---- linux-4.1.22.orig/include/linux/platform_data/dma-bcm2708.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/linux/platform_data/dma-bcm2708.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/platform_data/dma-bcm2708.h linux-4.1.23/include/linux/platform_data/dma-bcm2708.h
+--- linux-4.1.23.orig/include/linux/platform_data/dma-bcm2708.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/linux/platform_data/dma-bcm2708.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2010 Broadcom
@@ -315484,9 +321949,57 @@ diff -Nur linux-4.1.22.orig/include/linux/platform_data/dma-bcm2708.h linux-4.1.
+#endif /* CONFIG_DMA_BCM2708_LEGACY */
+
+#endif /* _PLAT_BCM2708_DMA_H */
-diff -Nur linux-4.1.22.orig/include/linux/serial_core.h linux-4.1.22/include/linux/serial_core.h
---- linux-4.1.22.orig/include/linux/serial_core.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/linux/serial_core.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/poison.h linux-4.1.23/include/linux/poison.h
+--- linux-4.1.23.orig/include/linux/poison.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/poison.h 2016-05-02 22:53:59.000000000 +0200
+@@ -19,8 +19,8 @@
+ * under normal circumstances, used to verify that nobody uses
+ * non-initialized list entries.
+ */
+-#define LIST_POISON1 ((void *) 0x100 + POISON_POINTER_DELTA)
+-#define LIST_POISON2 ((void *) 0x200 + POISON_POINTER_DELTA)
++#define LIST_POISON1 ((void *) 0x00100100 + POISON_POINTER_DELTA)
++#define LIST_POISON2 ((void *) 0x00200200 + POISON_POINTER_DELTA)
+
+ /********** include/linux/timer.h **********/
+ /*
+diff -Nur linux-4.1.23.orig/include/linux/ptrace.h linux-4.1.23/include/linux/ptrace.h
+--- linux-4.1.23.orig/include/linux/ptrace.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/ptrace.h 2016-05-02 22:53:59.000000000 +0200
+@@ -56,29 +56,7 @@
+ #define PTRACE_MODE_READ 0x01
+ #define PTRACE_MODE_ATTACH 0x02
+ #define PTRACE_MODE_NOAUDIT 0x04
+-#define PTRACE_MODE_FSCREDS 0x08
+-#define PTRACE_MODE_REALCREDS 0x10
+-
+-/* shorthands for READ/ATTACH and FSCREDS/REALCREDS combinations */
+-#define PTRACE_MODE_READ_FSCREDS (PTRACE_MODE_READ | PTRACE_MODE_FSCREDS)
+-#define PTRACE_MODE_READ_REALCREDS (PTRACE_MODE_READ | PTRACE_MODE_REALCREDS)
+-#define PTRACE_MODE_ATTACH_FSCREDS (PTRACE_MODE_ATTACH | PTRACE_MODE_FSCREDS)
+-#define PTRACE_MODE_ATTACH_REALCREDS (PTRACE_MODE_ATTACH | PTRACE_MODE_REALCREDS)
+-
+-/**
+- * ptrace_may_access - check whether the caller is permitted to access
+- * a target task.
+- * @task: target task
+- * @mode: selects type of access and caller credentials
+- *
+- * Returns true on success, false on denial.
+- *
+- * One of the flags PTRACE_MODE_FSCREDS and PTRACE_MODE_REALCREDS must
+- * be set in @mode to specify whether the access was requested through
+- * a filesystem syscall (should use effective capabilities and fsuid
+- * of the caller) or through an explicit syscall such as
+- * process_vm_writev or ptrace (and should use the real credentials).
+- */
++/* Returns true on success, false on denial. */
+ extern bool ptrace_may_access(struct task_struct *task, unsigned int mode);
+
+ static inline int ptrace_reparented(struct task_struct *child)
+diff -Nur linux-4.1.23.orig/include/linux/serial_core.h linux-4.1.23/include/linux/serial_core.h
+--- linux-4.1.23.orig/include/linux/serial_core.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/serial_core.h 2016-05-02 22:53:59.000000000 +0200
@@ -397,7 +397,7 @@
static inline int uart_tx_stopped(struct uart_port *port)
{
@@ -315496,9 +322009,52 @@ diff -Nur linux-4.1.22.orig/include/linux/serial_core.h linux-4.1.22/include/lin
return 1;
return 0;
}
-diff -Nur linux-4.1.22.orig/include/linux/vmstat.h linux-4.1.22/include/linux/vmstat.h
---- linux-4.1.22.orig/include/linux/vmstat.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/linux/vmstat.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/thermal.h linux-4.1.23/include/linux/thermal.h
+--- linux-4.1.23.orig/include/linux/thermal.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/thermal.h 2016-05-02 22:53:59.000000000 +0200
+@@ -146,7 +146,6 @@
+ * @trip_hyst_attrs: attributes for trip points for sysfs: trip hysteresis
+ * @devdata: private pointer for device private data
+ * @trips: number of trip points the thermal zone supports
+- * @trips_disabled; bitmap for disabled trips
+ * @passive_delay: number of milliseconds to wait between polls when
+ * performing passive cooling. Currenty only used by the
+ * step-wise governor
+@@ -183,7 +182,6 @@
+ struct thermal_attr *trip_hyst_attrs;
+ void *devdata;
+ int trips;
+- unsigned long trips_disabled; /* bitmap for disabled trips */
+ int passive_delay;
+ int polling_delay;
+ int temperature;
+diff -Nur linux-4.1.23.orig/include/linux/tty.h linux-4.1.23/include/linux/tty.h
+--- linux-4.1.23.orig/include/linux/tty.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/tty.h 2016-05-02 22:53:59.000000000 +0200
+@@ -592,7 +592,7 @@
+ count = ld->ops->receive_buf2(ld->tty, p, f, count);
+ else {
+ count = min_t(int, count, ld->tty->receive_room);
+- if (count && ld->ops->receive_buf)
++ if (count)
+ ld->ops->receive_buf(ld->tty, p, f, count);
+ }
+ return count;
+diff -Nur linux-4.1.23.orig/include/linux/ucs2_string.h linux-4.1.23/include/linux/ucs2_string.h
+--- linux-4.1.23.orig/include/linux/ucs2_string.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/ucs2_string.h 2016-05-02 22:53:59.000000000 +0200
+@@ -11,8 +11,4 @@
+ unsigned long ucs2_strsize(const ucs2_char_t *data, unsigned long maxlength);
+ int ucs2_strncmp(const ucs2_char_t *a, const ucs2_char_t *b, size_t len);
+
+-unsigned long ucs2_utf8size(const ucs2_char_t *src);
+-unsigned long ucs2_as_utf8(u8 *dest, const ucs2_char_t *src,
+- unsigned long maxlength);
+-
+ #endif /* _LINUX_UCS2_STRING_H_ */
+diff -Nur linux-4.1.23.orig/include/linux/vmstat.h linux-4.1.23/include/linux/vmstat.h
+--- linux-4.1.23.orig/include/linux/vmstat.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/vmstat.h 2016-05-02 22:53:59.000000000 +0200
@@ -241,7 +241,11 @@
static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
{
@@ -315511,9 +322067,9 @@ diff -Nur linux-4.1.22.orig/include/linux/vmstat.h linux-4.1.22/include/linux/vm
}
static inline void __inc_zone_page_state(struct page *page,
-diff -Nur linux-4.1.22.orig/include/linux/w1-gpio.h linux-4.1.22/include/linux/w1-gpio.h
---- linux-4.1.22.orig/include/linux/w1-gpio.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/linux/w1-gpio.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/linux/w1-gpio.h linux-4.1.23/include/linux/w1-gpio.h
+--- linux-4.1.23.orig/include/linux/w1-gpio.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/linux/w1-gpio.h 2016-05-02 22:53:59.000000000 +0200
@@ -18,6 +18,7 @@
struct w1_gpio_platform_data {
unsigned int pin;
@@ -315522,10 +322078,10 @@ diff -Nur linux-4.1.22.orig/include/linux/w1-gpio.h linux-4.1.22/include/linux/w
void (*enable_external_pullup)(int enable);
unsigned int ext_pullup_enable_pin;
unsigned int pullup_duration;
-diff -Nur linux-4.1.22.orig/include/soc/bcm2835/raspberrypi-firmware.h linux-4.1.22/include/soc/bcm2835/raspberrypi-firmware.h
---- linux-4.1.22.orig/include/soc/bcm2835/raspberrypi-firmware.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/soc/bcm2835/raspberrypi-firmware.h 2016-04-29 18:02:49.000000000 +0200
-@@ -0,0 +1,125 @@
+diff -Nur linux-4.1.23.orig/include/soc/bcm2835/raspberrypi-firmware.h linux-4.1.23/include/soc/bcm2835/raspberrypi-firmware.h
+--- linux-4.1.23.orig/include/soc/bcm2835/raspberrypi-firmware.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/soc/bcm2835/raspberrypi-firmware.h 2016-05-02 22:53:59.000000000 +0200
+@@ -0,0 +1,126 @@
+/*
+ * Copyright © 2015 Broadcom
+ *
@@ -315604,6 +322160,7 @@ diff -Nur linux-4.1.22.orig/include/soc/bcm2835/raspberrypi-firmware.h linux-4.1
+ RPI_FIRMWARE_SET_VOLTAGE = 0x00038003,
+ RPI_FIRMWARE_SET_TURBO = 0x00038009,
+ RPI_FIRMWARE_SET_CUSTOMER_OTP = 0x00038021,
++ RPI_FIRMWARE_SET_SDHOST_CLOCK = 0x00038042,
+
+ /* Dispmanx TAGS */
+ RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001,
@@ -315651,9 +322208,36 @@ diff -Nur linux-4.1.22.orig/include/soc/bcm2835/raspberrypi-firmware.h linux-4.1
+int rpi_firmware_property_list(struct rpi_firmware *fw,
+ void *data, size_t tag_size);
+struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node);
-diff -Nur linux-4.1.22.orig/include/uapi/drm/Kbuild linux-4.1.22/include/uapi/drm/Kbuild
---- linux-4.1.22.orig/include/uapi/drm/Kbuild 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/uapi/drm/Kbuild 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/sound/hdaudio.h linux-4.1.23/include/sound/hdaudio.h
+--- linux-4.1.23.orig/include/sound/hdaudio.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/sound/hdaudio.h 2016-05-02 22:53:59.000000000 +0200
+@@ -137,15 +137,15 @@
+ }
+
+ #ifdef CONFIG_PM
+-int snd_hdac_power_up(struct hdac_device *codec);
+-int snd_hdac_power_down(struct hdac_device *codec);
+-int snd_hdac_power_up_pm(struct hdac_device *codec);
+-int snd_hdac_power_down_pm(struct hdac_device *codec);
++void snd_hdac_power_up(struct hdac_device *codec);
++void snd_hdac_power_down(struct hdac_device *codec);
++void snd_hdac_power_up_pm(struct hdac_device *codec);
++void snd_hdac_power_down_pm(struct hdac_device *codec);
+ #else
+-static inline int snd_hdac_power_up(struct hdac_device *codec) { return 0; }
+-static inline int snd_hdac_power_down(struct hdac_device *codec) { return 0; }
+-static inline int snd_hdac_power_up_pm(struct hdac_device *codec) { return 0; }
+-static inline int snd_hdac_power_down_pm(struct hdac_device *codec) { return 0; }
++static inline void snd_hdac_power_up(struct hdac_device *codec) {}
++static inline void snd_hdac_power_down(struct hdac_device *codec) {}
++static inline void snd_hdac_power_up_pm(struct hdac_device *codec) {}
++static inline void snd_hdac_power_down_pm(struct hdac_device *codec) {}
+ #endif
+
+ /*
+diff -Nur linux-4.1.23.orig/include/uapi/drm/Kbuild linux-4.1.23/include/uapi/drm/Kbuild
+--- linux-4.1.23.orig/include/uapi/drm/Kbuild 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/uapi/drm/Kbuild 2016-05-02 22:53:59.000000000 +0200
@@ -14,6 +14,7 @@
header-y += savage_drm.h
header-y += sis_drm.h
@@ -315662,9 +322246,9 @@ diff -Nur linux-4.1.22.orig/include/uapi/drm/Kbuild linux-4.1.22/include/uapi/dr
header-y += via_drm.h
header-y += vmwgfx_drm.h
header-y += msm_drm.h
-diff -Nur linux-4.1.22.orig/include/uapi/drm/vc4_drm.h linux-4.1.22/include/uapi/drm/vc4_drm.h
---- linux-4.1.22.orig/include/uapi/drm/vc4_drm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/include/uapi/drm/vc4_drm.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/uapi/drm/vc4_drm.h linux-4.1.23/include/uapi/drm/vc4_drm.h
+--- linux-4.1.23.orig/include/uapi/drm/vc4_drm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/include/uapi/drm/vc4_drm.h 2016-05-02 22:53:59.000000000 +0200
@@ -0,0 +1,279 @@
+/*
+ * Copyright © 2014-2015 Broadcom
@@ -315945,9 +322529,9 @@ diff -Nur linux-4.1.22.orig/include/uapi/drm/vc4_drm.h linux-4.1.22/include/uapi
+};
+
+#endif /* _UAPI_VC4_DRM_H_ */
-diff -Nur linux-4.1.22.orig/include/uapi/linux/fb.h linux-4.1.22/include/uapi/linux/fb.h
---- linux-4.1.22.orig/include/uapi/linux/fb.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/include/uapi/linux/fb.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/include/uapi/linux/fb.h linux-4.1.23/include/uapi/linux/fb.h
+--- linux-4.1.23.orig/include/uapi/linux/fb.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/include/uapi/linux/fb.h 2016-05-02 22:53:59.000000000 +0200
@@ -34,6 +34,11 @@
#define FBIOPUT_MODEINFO 0x4617
#define FBIOGET_DISPINFO 0x4618
@@ -315960,9 +322544,9 @@ diff -Nur linux-4.1.22.orig/include/uapi/linux/fb.h linux-4.1.22/include/uapi/li
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
#define FB_TYPE_PLANES 1 /* Non interleaved planes */
-diff -Nur linux-4.1.22.orig/kernel/cgroup.c linux-4.1.22/kernel/cgroup.c
---- linux-4.1.22.orig/kernel/cgroup.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/kernel/cgroup.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/kernel/cgroup.c linux-4.1.23/kernel/cgroup.c
+--- linux-4.1.23.orig/kernel/cgroup.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/cgroup.c 2016-05-02 22:53:59.000000000 +0200
@@ -5406,6 +5406,29 @@
}
__setup("cgroup_disable=", cgroup_disable);
@@ -315993,10 +322577,747 @@ diff -Nur linux-4.1.22.orig/kernel/cgroup.c linux-4.1.22/kernel/cgroup.c
static int __init cgroup_set_legacy_files_on_dfl(char *str)
{
printk("cgroup: using legacy files on the default hierarchy\n");
-diff -Nur linux-4.1.22.orig/mm/memcontrol.c linux-4.1.22/mm/memcontrol.c
---- linux-4.1.22.orig/mm/memcontrol.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/mm/memcontrol.c 2016-04-29 18:02:49.000000000 +0200
-@@ -5396,6 +5396,7 @@
+diff -Nur linux-4.1.23.orig/kernel/events/core.c linux-4.1.23/kernel/events/core.c
+--- linux-4.1.23.orig/kernel/events/core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/events/core.c 2016-05-02 22:53:59.000000000 +0200
+@@ -3314,7 +3314,7 @@
+
+ /* Reuse ptrace permission checks for now. */
+ err = -EACCES;
+- if (!ptrace_may_access(task, PTRACE_MODE_READ_REALCREDS))
++ if (!ptrace_may_access(task, PTRACE_MODE_READ))
+ goto errout;
+
+ return task;
+diff -Nur linux-4.1.23.orig/kernel/futex.c linux-4.1.23/kernel/futex.c
+--- linux-4.1.23.orig/kernel/futex.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/futex.c 2016-05-02 22:53:59.000000000 +0200
+@@ -2763,7 +2763,7 @@
+ }
+
+ ret = -EPERM;
+- if (!ptrace_may_access(p, PTRACE_MODE_READ_REALCREDS))
++ if (!ptrace_may_access(p, PTRACE_MODE_READ))
+ goto err_unlock;
+
+ head = p->robust_list;
+diff -Nur linux-4.1.23.orig/kernel/futex_compat.c linux-4.1.23/kernel/futex_compat.c
+--- linux-4.1.23.orig/kernel/futex_compat.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/futex_compat.c 2016-05-02 22:53:59.000000000 +0200
+@@ -155,7 +155,7 @@
+ }
+
+ ret = -EPERM;
+- if (!ptrace_may_access(p, PTRACE_MODE_READ_REALCREDS))
++ if (!ptrace_may_access(p, PTRACE_MODE_READ))
+ goto err_unlock;
+
+ head = p->compat_robust_list;
+diff -Nur linux-4.1.23.orig/kernel/kcmp.c linux-4.1.23/kernel/kcmp.c
+--- linux-4.1.23.orig/kernel/kcmp.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/kcmp.c 2016-05-02 22:53:59.000000000 +0200
+@@ -122,8 +122,8 @@
+ &task2->signal->cred_guard_mutex);
+ if (ret)
+ goto err;
+- if (!ptrace_may_access(task1, PTRACE_MODE_READ_REALCREDS) ||
+- !ptrace_may_access(task2, PTRACE_MODE_READ_REALCREDS)) {
++ if (!ptrace_may_access(task1, PTRACE_MODE_READ) ||
++ !ptrace_may_access(task2, PTRACE_MODE_READ)) {
+ ret = -EPERM;
+ goto err_unlock;
+ }
+diff -Nur linux-4.1.23.orig/kernel/module.c linux-4.1.23/kernel/module.c
+--- linux-4.1.23.orig/kernel/module.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/module.c 2016-05-02 22:53:59.000000000 +0200
+@@ -178,9 +178,6 @@
+ struct _ddebug *debug;
+ unsigned int num_debug;
+ bool sig_ok;
+-#ifdef CONFIG_KALLSYMS
+- unsigned long mod_kallsyms_init_off;
+-#endif
+ struct {
+ unsigned int sym, str, mod, vers, info, pcpu;
+ } index;
+@@ -2324,21 +2321,10 @@
+ strsect->sh_flags |= SHF_ALLOC;
+ strsect->sh_entsize = get_offset(mod, &mod->init_size, strsect,
+ info->index.str) | INIT_OFFSET_MASK;
+- pr_debug("\t%s\n", info->secstrings + strsect->sh_name);
+-
+- /* We'll tack temporary mod_kallsyms on the end. */
+- mod->init_size = ALIGN(mod->init_size,
+- __alignof__(struct mod_kallsyms));
+- info->mod_kallsyms_init_off = mod->init_size;
+- mod->init_size += sizeof(struct mod_kallsyms);
+ mod->init_size = debug_align(mod->init_size);
++ pr_debug("\t%s\n", info->secstrings + strsect->sh_name);
+ }
+
+-/*
+- * We use the full symtab and strtab which layout_symtab arranged to
+- * be appended to the init section. Later we switch to the cut-down
+- * core-only ones.
+- */
+ static void add_kallsyms(struct module *mod, const struct load_info *info)
+ {
+ unsigned int i, ndst;
+@@ -2347,33 +2333,28 @@
+ char *s;
+ Elf_Shdr *symsec = &info->sechdrs[info->index.sym];
+
+- /* Set up to point into init section. */
+- mod->kallsyms = mod->module_init + info->mod_kallsyms_init_off;
+-
+- mod->kallsyms->symtab = (void *)symsec->sh_addr;
+- mod->kallsyms->num_symtab = symsec->sh_size / sizeof(Elf_Sym);
++ mod->symtab = (void *)symsec->sh_addr;
++ mod->num_symtab = symsec->sh_size / sizeof(Elf_Sym);
+ /* Make sure we get permanent strtab: don't use info->strtab. */
+- mod->kallsyms->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
++ mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
+
+ /* Set types up while we still have access to sections. */
+- for (i = 0; i < mod->kallsyms->num_symtab; i++)
+- mod->kallsyms->symtab[i].st_info
+- = elf_type(&mod->kallsyms->symtab[i], info);
+-
+- /* Now populate the cut down core kallsyms for after init. */
+- mod->core_kallsyms.symtab = dst = mod->module_core + info->symoffs;
+- mod->core_kallsyms.strtab = s = mod->module_core + info->stroffs;
+- src = mod->kallsyms->symtab;
+- for (ndst = i = 0; i < mod->kallsyms->num_symtab; i++) {
++ for (i = 0; i < mod->num_symtab; i++)
++ mod->symtab[i].st_info = elf_type(&mod->symtab[i], info);
++
++ mod->core_symtab = dst = mod->module_core + info->symoffs;
++ mod->core_strtab = s = mod->module_core + info->stroffs;
++ src = mod->symtab;
++ for (ndst = i = 0; i < mod->num_symtab; i++) {
+ if (i == 0 ||
+ is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum)) {
+ dst[ndst] = src[i];
+- dst[ndst++].st_name = s - mod->core_kallsyms.strtab;
+- s += strlcpy(s, &mod->kallsyms->strtab[src[i].st_name],
++ dst[ndst++].st_name = s - mod->core_strtab;
++ s += strlcpy(s, &mod->strtab[src[i].st_name],
+ KSYM_NAME_LEN) + 1;
+ }
+ }
+- mod->core_kallsyms.num_symtab = ndst;
++ mod->core_num_syms = ndst;
+ }
+ #else
+ static inline void layout_symtab(struct module *mod, struct load_info *info)
+@@ -3138,8 +3119,9 @@
+ module_put(mod);
+ trim_init_extable(mod);
+ #ifdef CONFIG_KALLSYMS
+- /* Switch to core kallsyms now init is done: kallsyms may be walking! */
+- rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
++ mod->num_symtab = mod->core_num_syms;
++ mod->symtab = mod->core_symtab;
++ mod->strtab = mod->core_strtab;
+ #endif
+ unset_module_init_ro_nx(mod);
+ module_arch_freeing_init(mod);
+@@ -3487,11 +3469,6 @@
+ && (str[2] == '\0' || str[2] == '.');
+ }
+
+-static const char *symname(struct mod_kallsyms *kallsyms, unsigned int symnum)
+-{
+- return kallsyms->strtab + kallsyms->symtab[symnum].st_name;
+-}
+-
+ static const char *get_ksymbol(struct module *mod,
+ unsigned long addr,
+ unsigned long *size,
+@@ -3499,7 +3476,6 @@
+ {
+ unsigned int i, best = 0;
+ unsigned long nextval;
+- struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms);
+
+ /* At worse, next value is at end of module */
+ if (within_module_init(addr, mod))
+@@ -3509,32 +3485,32 @@
+
+ /* Scan for closest preceding symbol, and next symbol. (ELF
+ starts real symbols at 1). */
+- for (i = 1; i < kallsyms->num_symtab; i++) {
+- if (kallsyms->symtab[i].st_shndx == SHN_UNDEF)
++ for (i = 1; i < mod->num_symtab; i++) {
++ if (mod->symtab[i].st_shndx == SHN_UNDEF)
+ continue;
+
+ /* We ignore unnamed symbols: they're uninformative
+ * and inserted at a whim. */
+- if (*symname(kallsyms, i) == '\0'
+- || is_arm_mapping_symbol(symname(kallsyms, i)))
+- continue;
+-
+- if (kallsyms->symtab[i].st_value <= addr
+- && kallsyms->symtab[i].st_value > kallsyms->symtab[best].st_value)
++ if (mod->symtab[i].st_value <= addr
++ && mod->symtab[i].st_value > mod->symtab[best].st_value
++ && *(mod->strtab + mod->symtab[i].st_name) != '\0'
++ && !is_arm_mapping_symbol(mod->strtab + mod->symtab[i].st_name))
+ best = i;
+- if (kallsyms->symtab[i].st_value > addr
+- && kallsyms->symtab[i].st_value < nextval)
+- nextval = kallsyms->symtab[i].st_value;
++ if (mod->symtab[i].st_value > addr
++ && mod->symtab[i].st_value < nextval
++ && *(mod->strtab + mod->symtab[i].st_name) != '\0'
++ && !is_arm_mapping_symbol(mod->strtab + mod->symtab[i].st_name))
++ nextval = mod->symtab[i].st_value;
+ }
+
+ if (!best)
+ return NULL;
+
+ if (size)
+- *size = nextval - kallsyms->symtab[best].st_value;
++ *size = nextval - mod->symtab[best].st_value;
+ if (offset)
+- *offset = addr - kallsyms->symtab[best].st_value;
+- return symname(kallsyms, best);
++ *offset = addr - mod->symtab[best].st_value;
++ return mod->strtab + mod->symtab[best].st_name;
+ }
+
+ /* For kallsyms to ask for address resolution. NULL means not found. Careful
+@@ -3627,21 +3603,19 @@
+
+ preempt_disable();
+ list_for_each_entry_rcu(mod, &modules, list) {
+- struct mod_kallsyms *kallsyms;
+-
+ if (mod->state == MODULE_STATE_UNFORMED)
+ continue;
+- kallsyms = rcu_dereference_sched(mod->kallsyms);
+- if (symnum < kallsyms->num_symtab) {
+- *value = kallsyms->symtab[symnum].st_value;
+- *type = kallsyms->symtab[symnum].st_info;
+- strlcpy(name, symname(kallsyms, symnum), KSYM_NAME_LEN);
++ if (symnum < mod->num_symtab) {
++ *value = mod->symtab[symnum].st_value;
++ *type = mod->symtab[symnum].st_info;
++ strlcpy(name, mod->strtab + mod->symtab[symnum].st_name,
++ KSYM_NAME_LEN);
+ strlcpy(module_name, mod->name, MODULE_NAME_LEN);
+ *exported = is_exported(name, *value, mod);
+ preempt_enable();
+ return 0;
+ }
+- symnum -= kallsyms->num_symtab;
++ symnum -= mod->num_symtab;
+ }
+ preempt_enable();
+ return -ERANGE;
+@@ -3650,12 +3624,11 @@
+ static unsigned long mod_find_symname(struct module *mod, const char *name)
+ {
+ unsigned int i;
+- struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms);
+
+- for (i = 0; i < kallsyms->num_symtab; i++)
+- if (strcmp(name, symname(kallsyms, i)) == 0 &&
+- kallsyms->symtab[i].st_info != 'U')
+- return kallsyms->symtab[i].st_value;
++ for (i = 0; i < mod->num_symtab; i++)
++ if (strcmp(name, mod->strtab+mod->symtab[i].st_name) == 0 &&
++ mod->symtab[i].st_info != 'U')
++ return mod->symtab[i].st_value;
+ return 0;
+ }
+
+@@ -3692,14 +3665,11 @@
+ int ret;
+
+ list_for_each_entry(mod, &modules, list) {
+- /* We hold module_mutex: no need for rcu_dereference_sched */
+- struct mod_kallsyms *kallsyms = mod->kallsyms;
+-
+ if (mod->state == MODULE_STATE_UNFORMED)
+ continue;
+- for (i = 0; i < kallsyms->num_symtab; i++) {
+- ret = fn(data, symname(kallsyms, i),
+- mod, kallsyms->symtab[i].st_value);
++ for (i = 0; i < mod->num_symtab; i++) {
++ ret = fn(data, mod->strtab + mod->symtab[i].st_name,
++ mod, mod->symtab[i].st_value);
+ if (ret != 0)
+ return ret;
+ }
+diff -Nur linux-4.1.23.orig/kernel/ptrace.c linux-4.1.23/kernel/ptrace.c
+--- linux-4.1.23.orig/kernel/ptrace.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/ptrace.c 2016-05-02 22:53:59.000000000 +0200
+@@ -219,14 +219,6 @@
+ static int __ptrace_may_access(struct task_struct *task, unsigned int mode)
+ {
+ const struct cred *cred = current_cred(), *tcred;
+- int dumpable = 0;
+- kuid_t caller_uid;
+- kgid_t caller_gid;
+-
+- if (!(mode & PTRACE_MODE_FSCREDS) == !(mode & PTRACE_MODE_REALCREDS)) {
+- WARN(1, "denying ptrace access check without PTRACE_MODE_*CREDS\n");
+- return -EPERM;
+- }
+
+ /* May we inspect the given task?
+ * This check is used both for attaching with ptrace
+@@ -236,33 +228,18 @@
+ * because setting up the necessary parent/child relationship
+ * or halting the specified task is impossible.
+ */
+-
++ int dumpable = 0;
+ /* Don't let security modules deny introspection */
+ if (same_thread_group(task, current))
+ return 0;
+ rcu_read_lock();
+- if (mode & PTRACE_MODE_FSCREDS) {
+- caller_uid = cred->fsuid;
+- caller_gid = cred->fsgid;
+- } else {
+- /*
+- * Using the euid would make more sense here, but something
+- * in userland might rely on the old behavior, and this
+- * shouldn't be a security problem since
+- * PTRACE_MODE_REALCREDS implies that the caller explicitly
+- * used a syscall that requests access to another process
+- * (and not a filesystem syscall to procfs).
+- */
+- caller_uid = cred->uid;
+- caller_gid = cred->gid;
+- }
+ tcred = __task_cred(task);
+- if (uid_eq(caller_uid, tcred->euid) &&
+- uid_eq(caller_uid, tcred->suid) &&
+- uid_eq(caller_uid, tcred->uid) &&
+- gid_eq(caller_gid, tcred->egid) &&
+- gid_eq(caller_gid, tcred->sgid) &&
+- gid_eq(caller_gid, tcred->gid))
++ if (uid_eq(cred->uid, tcred->euid) &&
++ uid_eq(cred->uid, tcred->suid) &&
++ uid_eq(cred->uid, tcred->uid) &&
++ gid_eq(cred->gid, tcred->egid) &&
++ gid_eq(cred->gid, tcred->sgid) &&
++ gid_eq(cred->gid, tcred->gid))
+ goto ok;
+ if (ptrace_has_cap(tcred->user_ns, mode))
+ goto ok;
+@@ -329,7 +306,7 @@
+ goto out;
+
+ task_lock(task);
+- retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH_REALCREDS);
++ retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH);
+ task_unlock(task);
+ if (retval)
+ goto unlock_creds;
+diff -Nur linux-4.1.23.orig/kernel/resource.c linux-4.1.23/kernel/resource.c
+--- linux-4.1.23.orig/kernel/resource.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/resource.c 2016-05-02 22:53:59.000000000 +0200
+@@ -1072,10 +1072,9 @@
+ if (!conflict)
+ break;
+ if (conflict != parent) {
+- if (!(conflict->flags & IORESOURCE_BUSY)) {
+- parent = conflict;
++ parent = conflict;
++ if (!(conflict->flags & IORESOURCE_BUSY))
+ continue;
+- }
+ }
+ if (conflict->flags & flags & IORESOURCE_MUXED) {
+ add_wait_queue(&muxed_resource_wait, &wait);
+diff -Nur linux-4.1.23.orig/kernel/sched/core.c linux-4.1.23/kernel/sched/core.c
+--- linux-4.1.23.orig/kernel/sched/core.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/sched/core.c 2016-05-02 22:53:59.000000000 +0200
+@@ -6480,7 +6480,7 @@
+
+ sched_domains_numa_masks[i][j] = mask;
+
+- for_each_node(k) {
++ for (k = 0; k < nr_node_ids; k++) {
+ if (node_distance(j, k) > sched_domains_numa_distance[i])
+ continue;
+
+diff -Nur linux-4.1.23.orig/kernel/sched/cputime.c linux-4.1.23/kernel/sched/cputime.c
+--- linux-4.1.23.orig/kernel/sched/cputime.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/sched/cputime.c 2016-05-02 22:53:59.000000000 +0200
+@@ -259,21 +259,21 @@
+ #ifdef CONFIG_PARAVIRT
+ if (static_key_false(&paravirt_steal_enabled)) {
+ u64 steal;
+- unsigned long steal_jiffies;
++ cputime_t steal_ct;
+
+ steal = paravirt_steal_clock(smp_processor_id());
+ steal -= this_rq()->prev_steal_time;
+
+ /*
+- * steal is in nsecs but our caller is expecting steal
+- * time in jiffies. Lets cast the result to jiffies
++ * cputime_t may be less precise than nsecs (eg: if it's
++ * based on jiffies). Lets cast the result to cputime
+ * granularity and account the rest on the next rounds.
+ */
+- steal_jiffies = nsecs_to_jiffies(steal);
+- this_rq()->prev_steal_time += jiffies_to_nsecs(steal_jiffies);
++ steal_ct = nsecs_to_cputime(steal);
++ this_rq()->prev_steal_time += cputime_to_nsecs(steal_ct);
+
+- account_steal_time(jiffies_to_cputime(steal_jiffies));
+- return steal_jiffies;
++ account_steal_time(steal_ct);
++ return steal_ct;
+ }
+ #endif
+ return false;
+diff -Nur linux-4.1.23.orig/kernel/sysctl_binary.c linux-4.1.23/kernel/sysctl_binary.c
+--- linux-4.1.23.orig/kernel/sysctl_binary.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/sysctl_binary.c 2016-05-02 22:53:59.000000000 +0200
+@@ -1321,7 +1321,7 @@
+ }
+
+ mnt = task_active_pid_ns(current)->proc_mnt;
+- file = file_open_root(mnt->mnt_root, mnt, pathname, flags, 0);
++ file = file_open_root(mnt->mnt_root, mnt, pathname, flags);
+ result = PTR_ERR(file);
+ if (IS_ERR(file))
+ goto out_putname;
+diff -Nur linux-4.1.23.orig/kernel/trace/trace.c linux-4.1.23/kernel/trace/trace.c
+--- linux-4.1.23.orig/kernel/trace/trace.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/trace/trace.c 2016-05-02 22:53:59.000000000 +0200
+@@ -4916,10 +4916,7 @@
+
+ spd.nr_pages = i;
+
+- if (i)
+- ret = splice_to_pipe(pipe, &spd);
+- else
+- ret = 0;
++ ret = splice_to_pipe(pipe, &spd);
+ out:
+ splice_shrink_spd(&spd);
+ return ret;
+diff -Nur linux-4.1.23.orig/kernel/trace/trace_printk.c linux-4.1.23/kernel/trace/trace_printk.c
+--- linux-4.1.23.orig/kernel/trace/trace_printk.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/trace/trace_printk.c 2016-05-02 22:53:59.000000000 +0200
+@@ -289,9 +289,6 @@
+ const char *str = *fmt;
+ int i;
+
+- if (!*fmt)
+- return 0;
+-
+ seq_printf(m, "0x%lx : \"", *(unsigned long *)fmt);
+
+ /*
+diff -Nur linux-4.1.23.orig/kernel/watchdog.c linux-4.1.23/kernel/watchdog.c
+--- linux-4.1.23.orig/kernel/watchdog.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/kernel/watchdog.c 2016-05-02 22:53:59.000000000 +0200
+@@ -812,9 +812,6 @@
+ * Update the run state of the lockup detectors.
+ * Restore 'watchdog_enabled' on failure.
+ */
+- if (old == new)
+- goto out;
+-
+ err = proc_watchdog_update();
+ if (err)
+ watchdog_enabled = old;
+@@ -860,7 +857,7 @@
+ int proc_watchdog_thresh(struct ctl_table *table, int write,
+ void __user *buffer, size_t *lenp, loff_t *ppos)
+ {
+- int err, old, new;
++ int err, old;
+
+ mutex_lock(&watchdog_proc_mutex);
+
+@@ -874,10 +871,6 @@
+ * Update the sample period.
+ * Restore 'watchdog_thresh' on failure.
+ */
+- new = ACCESS_ONCE(watchdog_thresh);
+- if (old == new)
+- goto out;
+-
+ set_sample_period();
+ err = proc_watchdog_update();
+ if (err)
+diff -Nur linux-4.1.23.orig/lib/ucs2_string.c linux-4.1.23/lib/ucs2_string.c
+--- linux-4.1.23.orig/lib/ucs2_string.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/lib/ucs2_string.c 2016-05-02 22:53:59.000000000 +0200
+@@ -49,65 +49,3 @@
+ }
+ }
+ EXPORT_SYMBOL(ucs2_strncmp);
+-
+-unsigned long
+-ucs2_utf8size(const ucs2_char_t *src)
+-{
+- unsigned long i;
+- unsigned long j = 0;
+-
+- for (i = 0; i < ucs2_strlen(src); i++) {
+- u16 c = src[i];
+-
+- if (c >= 0x800)
+- j += 3;
+- else if (c >= 0x80)
+- j += 2;
+- else
+- j += 1;
+- }
+-
+- return j;
+-}
+-EXPORT_SYMBOL(ucs2_utf8size);
+-
+-/*
+- * copy at most maxlength bytes of whole utf8 characters to dest from the
+- * ucs2 string src.
+- *
+- * The return value is the number of characters copied, not including the
+- * final NUL character.
+- */
+-unsigned long
+-ucs2_as_utf8(u8 *dest, const ucs2_char_t *src, unsigned long maxlength)
+-{
+- unsigned int i;
+- unsigned long j = 0;
+- unsigned long limit = ucs2_strnlen(src, maxlength);
+-
+- for (i = 0; maxlength && i < limit; i++) {
+- u16 c = src[i];
+-
+- if (c >= 0x800) {
+- if (maxlength < 3)
+- break;
+- maxlength -= 3;
+- dest[j++] = 0xe0 | (c & 0xf000) >> 12;
+- dest[j++] = 0x80 | (c & 0x0fc0) >> 6;
+- dest[j++] = 0x80 | (c & 0x003f);
+- } else if (c >= 0x80) {
+- if (maxlength < 2)
+- break;
+- maxlength -= 2;
+- dest[j++] = 0xc0 | (c & 0x7c0) >> 6;
+- dest[j++] = 0x80 | (c & 0x03f);
+- } else {
+- maxlength -= 1;
+- dest[j++] = c & 0x7f;
+- }
+- }
+- if (maxlength)
+- dest[j] = '\0';
+- return j;
+-}
+-EXPORT_SYMBOL(ucs2_as_utf8);
+diff -Nur linux-4.1.23.orig/mm/bootmem.c linux-4.1.23/mm/bootmem.c
+--- linux-4.1.23.orig/mm/bootmem.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/bootmem.c 2016-05-02 22:53:59.000000000 +0200
+@@ -164,7 +164,7 @@
+ end = PFN_DOWN(physaddr + size);
+
+ for (; cursor < end; cursor++) {
+- __free_pages_bootmem(pfn_to_page(cursor), cursor, 0);
++ __free_pages_bootmem(pfn_to_page(cursor), 0);
+ totalram_pages++;
+ }
+ }
+@@ -172,7 +172,7 @@
+ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata)
+ {
+ struct page *page;
+- unsigned long *map, start, end, pages, cur, count = 0;
++ unsigned long *map, start, end, pages, count = 0;
+
+ if (!bdata->node_bootmem_map)
+ return 0;
+@@ -210,17 +210,17 @@
+ if (IS_ALIGNED(start, BITS_PER_LONG) && vec == ~0UL) {
+ int order = ilog2(BITS_PER_LONG);
+
+- __free_pages_bootmem(pfn_to_page(start), start, order);
++ __free_pages_bootmem(pfn_to_page(start), order);
+ count += BITS_PER_LONG;
+ start += BITS_PER_LONG;
+ } else {
+- cur = start;
++ unsigned long cur = start;
+
+ start = ALIGN(start + 1, BITS_PER_LONG);
+ while (vec && cur != start) {
+ if (vec & 1) {
+ page = pfn_to_page(cur);
+- __free_pages_bootmem(page, cur, 0);
++ __free_pages_bootmem(page, 0);
+ count++;
+ }
+ vec >>= 1;
+@@ -229,13 +229,12 @@
+ }
+ }
+
+- cur = bdata->node_min_pfn;
+ page = virt_to_page(bdata->node_bootmem_map);
+ pages = bdata->node_low_pfn - bdata->node_min_pfn;
+ pages = bootmem_bootmap_pages(pages);
+ count += pages;
+ while (pages--)
+- __free_pages_bootmem(page++, cur++, 0);
++ __free_pages_bootmem(page++, 0);
+
+ bdebug("nid=%td released=%lx\n", bdata - bootmem_node_data, count);
+
+diff -Nur linux-4.1.23.orig/mm/hugetlb.c linux-4.1.23/mm/hugetlb.c
+--- linux-4.1.23.orig/mm/hugetlb.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/hugetlb.c 2016-05-02 22:53:59.000000000 +0200
+@@ -755,7 +755,7 @@
+
+ #if defined(CONFIG_CMA) && defined(CONFIG_X86_64)
+ static void destroy_compound_gigantic_page(struct page *page,
+- unsigned int order)
++ unsigned long order)
+ {
+ int i;
+ int nr_pages = 1 << order;
+@@ -771,7 +771,7 @@
+ __ClearPageHead(page);
+ }
+
+-static void free_gigantic_page(struct page *page, unsigned int order)
++static void free_gigantic_page(struct page *page, unsigned order)
+ {
+ free_contig_range(page_to_pfn(page), 1 << order);
+ }
+@@ -815,7 +815,7 @@
+ return zone_spans_pfn(zone, last_pfn);
+ }
+
+-static struct page *alloc_gigantic_page(int nid, unsigned int order)
++static struct page *alloc_gigantic_page(int nid, unsigned order)
+ {
+ unsigned long nr_pages = 1 << order;
+ unsigned long ret, pfn, flags;
+@@ -851,7 +851,7 @@
+ }
+
+ static void prep_new_huge_page(struct hstate *h, struct page *page, int nid);
+-static void prep_compound_gigantic_page(struct page *page, unsigned int order);
++static void prep_compound_gigantic_page(struct page *page, unsigned long order);
+
+ static struct page *alloc_fresh_gigantic_page_node(struct hstate *h, int nid)
+ {
+@@ -884,9 +884,9 @@
+ static inline bool gigantic_page_supported(void) { return true; }
+ #else
+ static inline bool gigantic_page_supported(void) { return false; }
+-static inline void free_gigantic_page(struct page *page, unsigned int order) { }
++static inline void free_gigantic_page(struct page *page, unsigned order) { }
+ static inline void destroy_compound_gigantic_page(struct page *page,
+- unsigned int order) { }
++ unsigned long order) { }
+ static inline int alloc_fresh_gigantic_page(struct hstate *h,
+ nodemask_t *nodes_allowed) { return 0; }
+ #endif
+@@ -1013,7 +1013,7 @@
+ put_page(page); /* free it into the hugepage allocator */
+ }
+
+-static void prep_compound_gigantic_page(struct page *page, unsigned int order)
++static void prep_compound_gigantic_page(struct page *page, unsigned long order)
+ {
+ int i;
+ int nr_pages = 1 << order;
+@@ -1567,8 +1567,7 @@
+ return 1;
+ }
+
+-static void __init prep_compound_huge_page(struct page *page,
+- unsigned int order)
++static void __init prep_compound_huge_page(struct page *page, int order)
+ {
+ if (unlikely(order > (MAX_ORDER - 1)))
+ prep_compound_gigantic_page(page, order);
+@@ -2279,7 +2278,7 @@
+ module_init(hugetlb_init);
+
+ /* Should be called on processing a hugepagesz=... option */
+-void __init hugetlb_add_hstate(unsigned int order)
++void __init hugetlb_add_hstate(unsigned order)
+ {
+ struct hstate *h;
+ unsigned long i;
+diff -Nur linux-4.1.23.orig/mm/internal.h linux-4.1.23/mm/internal.h
+--- linux-4.1.23.orig/mm/internal.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/internal.h 2016-05-02 22:53:59.000000000 +0200
+@@ -155,9 +155,8 @@
+ }
+
+ extern int __isolate_free_page(struct page *page, unsigned int order);
+-extern void __free_pages_bootmem(struct page *page, unsigned long pfn,
+- unsigned int order);
+-extern void prep_compound_page(struct page *page, unsigned int order);
++extern void __free_pages_bootmem(struct page *page, unsigned int order);
++extern void prep_compound_page(struct page *page, unsigned long order);
+ #ifdef CONFIG_MEMORY_FAILURE
+ extern bool is_free_buddy_page(struct page *page);
+ #endif
+@@ -214,7 +213,7 @@
+ * page cannot be allocated or merged in parallel. Alternatively, it must
+ * handle invalid values gracefully, and use page_order_unsafe() below.
+ */
+-static inline unsigned int page_order(struct page *page)
++static inline unsigned long page_order(struct page *page)
+ {
+ /* PageBuddy() must be checked by the caller */
+ return page_private(page);
+diff -Nur linux-4.1.23.orig/mm/memblock.c linux-4.1.23/mm/memblock.c
+--- linux-4.1.23.orig/mm/memblock.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/memblock.c 2016-05-02 22:53:59.000000000 +0200
+@@ -1316,7 +1316,7 @@
+ end = PFN_DOWN(base + size);
+
+ for (; cursor < end; cursor++) {
+- __free_pages_bootmem(pfn_to_page(cursor), cursor, 0);
++ __free_pages_bootmem(pfn_to_page(cursor), 0);
+ totalram_pages++;
+ }
+ }
+diff -Nur linux-4.1.23.orig/mm/memcontrol.c linux-4.1.23/mm/memcontrol.c
+--- linux-4.1.23.orig/mm/memcontrol.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/memcontrol.c 2016-05-02 22:53:59.000000000 +0200
+@@ -5289,7 +5289,6 @@
+ char *buf, size_t nbytes, loff_t off)
+ {
+ struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
+- unsigned long nr_pages;
+ unsigned long high;
+ int err;
+
+@@ -5300,11 +5299,6 @@
+
+ memcg->high = high;
+
+- nr_pages = page_counter_read(&memcg->memory);
+- if (nr_pages > high)
+- try_to_free_mem_cgroup_pages(memcg, nr_pages - high,
+- GFP_KERNEL, true);
+-
+ return nbytes;
+ }
+
+@@ -5396,6 +5390,7 @@
.dfl_cftypes = memory_files,
.legacy_cftypes = mem_cgroup_legacy_files,
.early_init = 0,
@@ -316004,10 +323325,218 @@ diff -Nur linux-4.1.22.orig/mm/memcontrol.c linux-4.1.22/mm/memcontrol.c
};
/**
-diff -Nur linux-4.1.22.orig/mm/page_alloc.c linux-4.1.22/mm/page_alloc.c
---- linux-4.1.22.orig/mm/page_alloc.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/mm/page_alloc.c 2016-04-29 18:02:49.000000000 +0200
-@@ -6509,8 +6509,6 @@
+diff -Nur linux-4.1.23.orig/mm/nobootmem.c linux-4.1.23/mm/nobootmem.c
+--- linux-4.1.23.orig/mm/nobootmem.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/nobootmem.c 2016-05-02 22:53:59.000000000 +0200
+@@ -77,7 +77,7 @@
+ end = PFN_DOWN(addr + size);
+
+ for (; cursor < end; cursor++) {
+- __free_pages_bootmem(pfn_to_page(cursor), cursor, 0);
++ __free_pages_bootmem(pfn_to_page(cursor), 0);
+ totalram_pages++;
+ }
+ }
+@@ -92,7 +92,7 @@
+ while (start + (1UL << order) > end)
+ order--;
+
+- __free_pages_bootmem(pfn_to_page(start), start, order);
++ __free_pages_bootmem(pfn_to_page(start), order);
+
+ start += (1UL << order);
+ }
+diff -Nur linux-4.1.23.orig/mm/page_alloc.c linux-4.1.23/mm/page_alloc.c
+--- linux-4.1.23.orig/mm/page_alloc.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/page_alloc.c 2016-05-02 22:54:00.000000000 +0200
+@@ -162,7 +162,7 @@
+ #endif /* CONFIG_PM_SLEEP */
+
+ #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
+-unsigned int pageblock_order __read_mostly;
++int pageblock_order __read_mostly;
+ #endif
+
+ static void __free_pages_ok(struct page *page, unsigned int order);
+@@ -362,7 +362,7 @@
+ __free_pages_ok(page, compound_order(page));
+ }
+
+-void prep_compound_page(struct page *page, unsigned int order)
++void prep_compound_page(struct page *page, unsigned long order)
+ {
+ int i;
+ int nr_pages = 1 << order;
+@@ -579,28 +579,34 @@
+ unsigned long combined_idx;
+ unsigned long uninitialized_var(buddy_idx);
+ struct page *buddy;
+- unsigned int max_order;
+-
+- max_order = min_t(unsigned int, MAX_ORDER, pageblock_order + 1);
++ int max_order = MAX_ORDER;
+
+ VM_BUG_ON(!zone_is_initialized(zone));
+ VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page);
+
+ VM_BUG_ON(migratetype == -1);
+- if (likely(!is_migrate_isolate(migratetype)))
++ if (is_migrate_isolate(migratetype)) {
++ /*
++ * We restrict max order of merging to prevent merge
++ * between freepages on isolate pageblock and normal
++ * pageblock. Without this, pageblock isolation
++ * could cause incorrect freepage accounting.
++ */
++ max_order = min(MAX_ORDER, pageblock_order + 1);
++ } else {
+ __mod_zone_freepage_state(zone, 1 << order, migratetype);
++ }
+
+- page_idx = pfn & ((1 << MAX_ORDER) - 1);
++ page_idx = pfn & ((1 << max_order) - 1);
+
+ VM_BUG_ON_PAGE(page_idx & ((1 << order) - 1), page);
+ VM_BUG_ON_PAGE(bad_range(zone, page), page);
+
+-continue_merging:
+ while (order < max_order - 1) {
+ buddy_idx = __find_buddy_index(page_idx, order);
+ buddy = page + (buddy_idx - page_idx);
+ if (!page_is_buddy(page, buddy, order))
+- goto done_merging;
++ break;
+ /*
+ * Our buddy is free or it is CONFIG_DEBUG_PAGEALLOC guard page,
+ * merge with it and move up one order.
+@@ -617,32 +623,6 @@
+ page_idx = combined_idx;
+ order++;
+ }
+- if (max_order < MAX_ORDER) {
+- /* If we are here, it means order is >= pageblock_order.
+- * We want to prevent merge between freepages on isolate
+- * pageblock and normal pageblock. Without this, pageblock
+- * isolation could cause incorrect freepage or CMA accounting.
+- *
+- * We don't want to hit this code for the more frequent
+- * low-order merging.
+- */
+- if (unlikely(has_isolate_pageblock(zone))) {
+- int buddy_mt;
+-
+- buddy_idx = __find_buddy_index(page_idx, order);
+- buddy = page + (buddy_idx - page_idx);
+- buddy_mt = get_pageblock_migratetype(buddy);
+-
+- if (migratetype != buddy_mt
+- && (is_migrate_isolate(migratetype) ||
+- is_migrate_isolate(buddy_mt)))
+- goto done_merging;
+- }
+- max_order++;
+- goto continue_merging;
+- }
+-
+-done_merging:
+ set_page_order(page, order);
+
+ /*
+@@ -852,8 +832,7 @@
+ local_irq_restore(flags);
+ }
+
+-void __init __free_pages_bootmem(struct page *page, unsigned long pfn,
+- unsigned int order)
++void __init __free_pages_bootmem(struct page *page, unsigned int order)
+ {
+ unsigned int nr_pages = 1 << order;
+ struct page *p = page;
+@@ -1087,7 +1066,7 @@
+ int migratetype)
+ {
+ struct page *page;
+- unsigned int order;
++ unsigned long order;
+ int pages_moved = 0;
+
+ #ifndef CONFIG_HOLES_IN_ZONE
+@@ -1201,7 +1180,7 @@
+ static void steal_suitable_fallback(struct zone *zone, struct page *page,
+ int start_type)
+ {
+- unsigned int current_order = page_order(page);
++ int current_order = page_order(page);
+ int pages;
+
+ /* Take ownership for orders >= pageblock_order */
+@@ -2304,7 +2283,7 @@
+ DEFAULT_RATELIMIT_INTERVAL,
+ DEFAULT_RATELIMIT_BURST);
+
+-void warn_alloc_failed(gfp_t gfp_mask, unsigned int order, const char *fmt, ...)
++void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...)
+ {
+ unsigned int filter = SHOW_MEM_FILTER_NODES;
+
+@@ -2338,7 +2317,7 @@
+ va_end(args);
+ }
+
+- pr_warn("%s: page allocation failure: order:%u, mode:0x%x\n",
++ pr_warn("%s: page allocation failure: order:%d, mode:0x%x\n",
+ current->comm, order, gfp_mask);
+
+ dump_stack();
+@@ -3039,8 +3018,7 @@
+ }
+ }
+
+-static void *make_alloc_exact(unsigned long addr, unsigned int order,
+- size_t size)
++static void *make_alloc_exact(unsigned long addr, unsigned order, size_t size)
+ {
+ if (addr) {
+ unsigned long alloc_end = addr + (PAGE_SIZE << order);
+@@ -3092,7 +3070,7 @@
+ */
+ void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask)
+ {
+- unsigned int order = get_order(size);
++ unsigned order = get_order(size);
+ struct page *p = alloc_pages_node(nid, gfp_mask, order);
+ if (!p)
+ return NULL;
+@@ -3394,8 +3372,7 @@
+ }
+
+ for_each_populated_zone(zone) {
+- unsigned int order;
+- unsigned long nr[MAX_ORDER], flags, total = 0;
++ unsigned long nr[MAX_ORDER], flags, order, total = 0;
+ unsigned char types[MAX_ORDER];
+
+ if (skip_free_areas_node(filter, zone_to_nid(zone)))
+@@ -3744,7 +3721,7 @@
+ nodemask_t used_mask;
+ int local_node, prev_node;
+ struct zonelist *zonelist;
+- unsigned int order = current_zonelist_order;
++ int order = current_zonelist_order;
+
+ /* initialize zonelists */
+ for (i = 0; i < MAX_ZONELISTS; i++) {
+@@ -6431,8 +6408,7 @@
+ unsigned migratetype)
+ {
+ unsigned long outer_start, outer_end;
+- unsigned int order;
+- int ret = 0;
++ int ret = 0, order;
+
+ struct compact_control cc = {
+ .nr_migratepages = 0,
+@@ -6509,8 +6485,6 @@
/* Make sure the range is really isolated. */
if (test_pages_isolated(outer_start, end, false)) {
@@ -316016,9 +323545,33 @@ diff -Nur linux-4.1.22.orig/mm/page_alloc.c linux-4.1.22/mm/page_alloc.c
ret = -EBUSY;
goto done;
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/checks.c linux-4.1.22/scripts/dtc/checks.c
---- linux-4.1.22.orig/scripts/dtc/checks.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/checks.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/mm/process_vm_access.c linux-4.1.23/mm/process_vm_access.c
+--- linux-4.1.23.orig/mm/process_vm_access.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/mm/process_vm_access.c 2016-05-02 22:54:00.000000000 +0200
+@@ -194,7 +194,7 @@
+ goto free_proc_pages;
+ }
+
+- mm = mm_access(task, PTRACE_MODE_ATTACH_REALCREDS);
++ mm = mm_access(task, PTRACE_MODE_ATTACH);
+ if (!mm || IS_ERR(mm)) {
+ rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
+ /*
+diff -Nur linux-4.1.23.orig/scripts/coccinelle/iterators/use_after_iter.cocci linux-4.1.23/scripts/coccinelle/iterators/use_after_iter.cocci
+--- linux-4.1.23.orig/scripts/coccinelle/iterators/use_after_iter.cocci 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/coccinelle/iterators/use_after_iter.cocci 2016-05-02 22:54:00.000000000 +0200
+@@ -123,7 +123,7 @@
+ |
+ sizeof(<+...c...+>)
+ |
+- &c->member
++&c->member
+ |
+ c = E
+ |
+diff -Nur linux-4.1.23.orig/scripts/dtc/checks.c linux-4.1.23/scripts/dtc/checks.c
+--- linux-4.1.23.orig/scripts/dtc/checks.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/checks.c 2016-05-02 22:54:00.000000000 +0200
@@ -53,7 +53,7 @@
void *data;
bool warn, error;
@@ -316271,9 +323824,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/checks.c linux-4.1.22/scripts/dtc/checks
{
struct node *dt = bi->dt;
int i;
-diff -Nur linux-4.1.22.orig/scripts/dtc/data.c linux-4.1.22/scripts/dtc/data.c
---- linux-4.1.22.orig/scripts/dtc/data.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/data.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/data.c linux-4.1.23/scripts/dtc/data.c
+--- linux-4.1.23.orig/scripts/dtc/data.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/data.c 2016-05-02 22:54:00.000000000 +0200
@@ -74,7 +74,7 @@
struct data d;
char *q;
@@ -316309,9 +323862,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/data.c linux-4.1.22/scripts/dtc/data.c
- return 1;
+ return true;
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-lexer.l linux-4.1.22/scripts/dtc/dtc-lexer.l
---- linux-4.1.22.orig/scripts/dtc/dtc-lexer.l 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/dtc-lexer.l 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/dtc-lexer.l linux-4.1.23/scripts/dtc/dtc-lexer.l
+--- linux-4.1.23.orig/scripts/dtc/dtc-lexer.l 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/dtc-lexer.l 2016-05-02 22:54:00.000000000 +0200
@@ -20,7 +20,6 @@
%option noyywrap nounput noinput never-interactive
@@ -316449,9 +324002,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-lexer.l linux-4.1.22/scripts/dtc/dtc
+
+ treesource_error = true;
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-lexer.lex.c_shipped linux-4.1.22/scripts/dtc/dtc-lexer.lex.c_shipped
---- linux-4.1.22.orig/scripts/dtc/dtc-lexer.lex.c_shipped 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/dtc-lexer.lex.c_shipped 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/dtc-lexer.lex.c_shipped linux-4.1.23/scripts/dtc/dtc-lexer.lex.c_shipped
+--- linux-4.1.23.orig/scripts/dtc/dtc-lexer.lex.c_shipped 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/dtc-lexer.lex.c_shipped 2016-05-02 22:54:00.000000000 +0200
@@ -372,8 +372,8 @@
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
@@ -317306,9 +324859,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-lexer.lex.c_shipped linux-4.1.22/scr
+ treesource_error = true;
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-parser.tab.c_shipped linux-4.1.22/scripts/dtc/dtc-parser.tab.c_shipped
---- linux-4.1.22.orig/scripts/dtc/dtc-parser.tab.c_shipped 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/dtc-parser.tab.c_shipped 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/dtc-parser.tab.c_shipped linux-4.1.23/scripts/dtc/dtc-parser.tab.c_shipped
+--- linux-4.1.23.orig/scripts/dtc/dtc-parser.tab.c_shipped 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/dtc-parser.tab.c_shipped 2016-05-02 22:54:00.000000000 +0200
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+/* A Bison parser, made by GNU Bison 3.0.2. */
@@ -319978,9 +327531,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-parser.tab.c_shipped linux-4.1.22/sc
- return c;
+ ERROR(&yylloc, "%s", s);
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-parser.tab.h_shipped linux-4.1.22/scripts/dtc/dtc-parser.tab.h_shipped
---- linux-4.1.22.orig/scripts/dtc/dtc-parser.tab.h_shipped 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/dtc-parser.tab.h_shipped 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/dtc-parser.tab.h_shipped linux-4.1.23/scripts/dtc/dtc-parser.tab.h_shipped
+--- linux-4.1.23.orig/scripts/dtc/dtc-parser.tab.h_shipped 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/dtc-parser.tab.h_shipped 2016-05-02 22:54:00.000000000 +0200
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+/* A Bison parser, made by GNU Bison 3.0.2. */
@@ -320152,9 +327705,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-parser.tab.h_shipped linux-4.1.22/sc
-#endif /* ! YYPARSE_PARAM */
#endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */
-diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-parser.y linux-4.1.22/scripts/dtc/dtc-parser.y
---- linux-4.1.22.orig/scripts/dtc/dtc-parser.y 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/dtc-parser.y 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/dtc-parser.y linux-4.1.23/scripts/dtc/dtc-parser.y
+--- linux-4.1.23.orig/scripts/dtc/dtc-parser.y 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/dtc-parser.y 2016-05-02 22:54:00.000000000 +0200
@@ -17,31 +17,28 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
@@ -320429,9 +327982,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/dtc-parser.y linux-4.1.22/scripts/dtc/dt
- return c;
+ ERROR(&yylloc, "%s", s);
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/dtc.c linux-4.1.22/scripts/dtc/dtc.c
---- linux-4.1.22.orig/scripts/dtc/dtc.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/dtc.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/dtc.c linux-4.1.23/scripts/dtc/dtc.c
+--- linux-4.1.23.orig/scripts/dtc/dtc.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/dtc.c 2016-05-02 22:54:00.000000000 +0200
@@ -29,6 +29,7 @@
int minsize; /* Minimum blob size */
int padsize; /* Additional padding to blob */
@@ -320527,9 +328080,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/dtc.c linux-4.1.22/scripts/dtc/dtc.c
if (! outf)
die("Couldn't open output file %s: %s\n",
outname, strerror(errno));
-diff -Nur linux-4.1.22.orig/scripts/dtc/dtc.h linux-4.1.22/scripts/dtc/dtc.h
---- linux-4.1.22.orig/scripts/dtc/dtc.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/dtc.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/dtc.h linux-4.1.23/scripts/dtc/dtc.h
+--- linux-4.1.23.orig/scripts/dtc/dtc.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/dtc.h 2016-05-02 22:54:00.000000000 +0200
@@ -38,9 +38,9 @@
#include "util.h"
@@ -320655,9 +328208,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/dtc.h linux-4.1.22/scripts/dtc/dtc.h
/* Flattened trees */
-diff -Nur linux-4.1.22.orig/scripts/dtc/flattree.c linux-4.1.22/scripts/dtc/flattree.c
---- linux-4.1.22.orig/scripts/dtc/flattree.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/flattree.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/flattree.c linux-4.1.23/scripts/dtc/flattree.c
+--- linux-4.1.23.orig/scripts/dtc/flattree.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/flattree.c 2016-05-02 22:54:00.000000000 +0200
@@ -261,7 +261,13 @@
{
struct property *prop;
@@ -320825,9 +328378,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/flattree.c linux-4.1.22/scripts/dtc/flat
emit->endnode(etarget, tree->labels);
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/fstree.c linux-4.1.22/scripts/dtc/fstree.c
---- linux-4.1.22.orig/scripts/dtc/fstree.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/fstree.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/fstree.c linux-4.1.23/scripts/dtc/fstree.c
+--- linux-4.1.23.orig/scripts/dtc/fstree.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/fstree.c 2016-05-02 22:54:00.000000000 +0200
@@ -37,26 +37,26 @@
tree = build_node(NULL, NULL);
@@ -320876,9 +328429,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/fstree.c linux-4.1.22/scripts/dtc/fstree
}
closedir(d);
-diff -Nur linux-4.1.22.orig/scripts/dtc/livetree.c linux-4.1.22/scripts/dtc/livetree.c
---- linux-4.1.22.orig/scripts/dtc/livetree.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/livetree.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/livetree.c linux-4.1.23/scripts/dtc/livetree.c
+--- linux-4.1.23.orig/scripts/dtc/livetree.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/livetree.c 2016-05-02 22:54:00.000000000 +0200
@@ -511,7 +511,9 @@
struct node *get_node_by_ref(struct node *tree, const char *ref)
@@ -320890,9 +328443,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/livetree.c linux-4.1.22/scripts/dtc/live
return get_node_by_path(tree, ref);
else
return get_node_by_label(tree, ref);
-diff -Nur linux-4.1.22.orig/scripts/dtc/srcpos.c linux-4.1.22/scripts/dtc/srcpos.c
---- linux-4.1.22.orig/scripts/dtc/srcpos.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/srcpos.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/srcpos.c linux-4.1.23/scripts/dtc/srcpos.c
+--- linux-4.1.23.orig/scripts/dtc/srcpos.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/srcpos.c 2016-05-02 22:54:00.000000000 +0200
@@ -34,7 +34,7 @@
static struct search_path *search_path_head, **search_path_tail;
@@ -320993,9 +328546,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/srcpos.c linux-4.1.22/scripts/dtc/srcpos
va_end(va);
}
-diff -Nur linux-4.1.22.orig/scripts/dtc/srcpos.h linux-4.1.22/scripts/dtc/srcpos.h
---- linux-4.1.22.orig/scripts/dtc/srcpos.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/srcpos.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/srcpos.h linux-4.1.23/scripts/dtc/srcpos.h
+--- linux-4.1.23.orig/scripts/dtc/srcpos.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/srcpos.h 2016-05-02 22:54:00.000000000 +0200
@@ -21,6 +21,7 @@
#define _SRCPOS_H_
@@ -321032,9 +328585,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/srcpos.h linux-4.1.22/scripts/dtc/srcpos
extern void srcpos_set_line(char *f, int l);
-diff -Nur linux-4.1.22.orig/scripts/dtc/treesource.c linux-4.1.22/scripts/dtc/treesource.c
---- linux-4.1.22.orig/scripts/dtc/treesource.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/treesource.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/treesource.c linux-4.1.23/scripts/dtc/treesource.c
+--- linux-4.1.23.orig/scripts/dtc/treesource.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/treesource.c 2016-05-02 22:54:00.000000000 +0200
@@ -26,12 +26,12 @@
extern YYLTYPE yylloc;
@@ -321089,9 +328642,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/treesource.c linux-4.1.22/scripts/dtc/tr
if ((const void *)bp >= propend)
break;
fprintf(f, " ");
-diff -Nur linux-4.1.22.orig/scripts/dtc/util.c linux-4.1.22/scripts/dtc/util.c
---- linux-4.1.22.orig/scripts/dtc/util.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/util.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/util.c linux-4.1.23/scripts/dtc/util.c
+--- linux-4.1.23.orig/scripts/dtc/util.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/util.c 2016-05-02 22:54:00.000000000 +0200
@@ -39,11 +39,11 @@
char *xstrdup(const char *s)
{
@@ -321148,9 +328701,9 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/util.c linux-4.1.22/scripts/dtc/util.c
printf(">");
} else {
printf(" = [");
-diff -Nur linux-4.1.22.orig/scripts/dtc/util.h linux-4.1.22/scripts/dtc/util.h
---- linux-4.1.22.orig/scripts/dtc/util.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/util.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/util.h linux-4.1.23/scripts/dtc/util.h
+--- linux-4.1.23.orig/scripts/dtc/util.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/util.h 2016-05-02 22:54:00.000000000 +0200
@@ -2,6 +2,7 @@
#define _UTIL_H
@@ -321176,15 +328729,15 @@ diff -Nur linux-4.1.22.orig/scripts/dtc/util.h linux-4.1.22/scripts/dtc/util.h
/*
* Parse an escaped character starting at index i in string s. The resulting
-diff -Nur linux-4.1.22.orig/scripts/dtc/version_gen.h linux-4.1.22/scripts/dtc/version_gen.h
---- linux-4.1.22.orig/scripts/dtc/version_gen.h 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/scripts/dtc/version_gen.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/dtc/version_gen.h linux-4.1.23/scripts/dtc/version_gen.h
+--- linux-4.1.23.orig/scripts/dtc/version_gen.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/scripts/dtc/version_gen.h 2016-05-02 22:54:00.000000000 +0200
@@ -1 +1 @@
-#define DTC_VERSION "DTC 1.4.0-dirty"
+#define DTC_VERSION "DTC 1.4.1-g36c70742"
-diff -Nur linux-4.1.22.orig/scripts/knlinfo linux-4.1.22/scripts/knlinfo
---- linux-4.1.22.orig/scripts/knlinfo 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/scripts/knlinfo 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/knlinfo linux-4.1.23/scripts/knlinfo
+--- linux-4.1.23.orig/scripts/knlinfo 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/scripts/knlinfo 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,168 @@
+#!/usr/bin/env perl
+# ----------------------------------------------------------------------
@@ -321354,9 +328907,9 @@ diff -Nur linux-4.1.22.orig/scripts/knlinfo linux-4.1.22/scripts/knlinfo
+ my ($data) = @_;
+ return unpack('H*', $data);
+}
-diff -Nur linux-4.1.22.orig/scripts/mkknlimg linux-4.1.22/scripts/mkknlimg
---- linux-4.1.22.orig/scripts/mkknlimg 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/scripts/mkknlimg 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/scripts/mkknlimg linux-4.1.23/scripts/mkknlimg
+--- linux-4.1.23.orig/scripts/mkknlimg 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/scripts/mkknlimg 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,244 @@
+#!/usr/bin/env perl
+# ----------------------------------------------------------------------
@@ -321602,9 +329155,119 @@ diff -Nur linux-4.1.22.orig/scripts/mkknlimg linux-4.1.22/scripts/mkknlimg
+ my $val = $configs->{$wanted} || 'n';
+ return (($val eq 'y') || ($val eq '1'));
+}
-diff -Nur linux-4.1.22.orig/sound/arm/Kconfig linux-4.1.22/sound/arm/Kconfig
---- linux-4.1.22.orig/sound/arm/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/arm/Kconfig 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/security/commoncap.c linux-4.1.23/security/commoncap.c
+--- linux-4.1.23.orig/security/commoncap.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/security/commoncap.c 2016-05-02 22:54:00.000000000 +0200
+@@ -142,17 +142,12 @@
+ {
+ int ret = 0;
+ const struct cred *cred, *child_cred;
+- const kernel_cap_t *caller_caps;
+
+ rcu_read_lock();
+ cred = current_cred();
+ child_cred = __task_cred(child);
+- if (mode & PTRACE_MODE_FSCREDS)
+- caller_caps = &cred->cap_effective;
+- else
+- caller_caps = &cred->cap_permitted;
+ if (cred->user_ns == child_cred->user_ns &&
+- cap_issubset(child_cred->cap_permitted, *caller_caps))
++ cap_issubset(child_cred->cap_permitted, cred->cap_permitted))
+ goto out;
+ if (ns_capable(child_cred->user_ns, CAP_SYS_PTRACE))
+ goto out;
+diff -Nur linux-4.1.23.orig/security/keys/encrypted-keys/encrypted.c linux-4.1.23/security/keys/encrypted-keys/encrypted.c
+--- linux-4.1.23.orig/security/keys/encrypted-keys/encrypted.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/security/keys/encrypted-keys/encrypted.c 2016-05-02 22:54:00.000000000 +0200
+@@ -845,8 +845,6 @@
+ size_t datalen = prep->datalen;
+ int ret = 0;
+
+- if (test_bit(KEY_FLAG_NEGATIVE, &key->flags))
+- return -ENOKEY;
+ if (datalen <= 0 || datalen > 32767 || !prep->data)
+ return -EINVAL;
+
+diff -Nur linux-4.1.23.orig/security/keys/trusted.c linux-4.1.23/security/keys/trusted.c
+--- linux-4.1.23.orig/security/keys/trusted.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/security/keys/trusted.c 2016-05-02 22:54:00.000000000 +0200
+@@ -984,16 +984,13 @@
+ */
+ static int trusted_update(struct key *key, struct key_preparsed_payload *prep)
+ {
+- struct trusted_key_payload *p;
++ struct trusted_key_payload *p = key->payload.data;
+ struct trusted_key_payload *new_p;
+ struct trusted_key_options *new_o;
+ size_t datalen = prep->datalen;
+ char *datablob;
+ int ret = 0;
+
+- if (test_bit(KEY_FLAG_NEGATIVE, &key->flags))
+- return -ENOKEY;
+- p = key->payload.data;
+ if (!p->migratable)
+ return -EPERM;
+ if (datalen <= 0 || datalen > 32767 || !prep->data)
+diff -Nur linux-4.1.23.orig/security/keys/user_defined.c linux-4.1.23/security/keys/user_defined.c
+--- linux-4.1.23.orig/security/keys/user_defined.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/security/keys/user_defined.c 2016-05-02 22:54:00.000000000 +0200
+@@ -120,10 +120,7 @@
+
+ if (ret == 0) {
+ /* attach the new data, displacing the old */
+- if (!test_bit(KEY_FLAG_NEGATIVE, &key->flags))
+- zap = key->payload.data;
+- else
+- zap = NULL;
++ zap = key->payload.data;
+ rcu_assign_keypointer(key, upayload);
+ key->expiry = 0;
+ }
+diff -Nur linux-4.1.23.orig/security/smack/smack_lsm.c linux-4.1.23/security/smack/smack_lsm.c
+--- linux-4.1.23.orig/security/smack/smack_lsm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/security/smack/smack_lsm.c 2016-05-02 22:54:00.000000000 +0200
+@@ -354,10 +354,12 @@
+ */
+ static inline unsigned int smk_ptrace_mode(unsigned int mode)
+ {
+- if (mode & PTRACE_MODE_ATTACH)
+- return MAY_READWRITE;
+- if (mode & PTRACE_MODE_READ)
++ switch (mode) {
++ case PTRACE_MODE_READ:
+ return MAY_READ;
++ case PTRACE_MODE_ATTACH:
++ return MAY_READWRITE;
++ }
+
+ return 0;
+ }
+diff -Nur linux-4.1.23.orig/security/yama/yama_lsm.c linux-4.1.23/security/yama/yama_lsm.c
+--- linux-4.1.23.orig/security/yama/yama_lsm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/security/yama/yama_lsm.c 2016-05-02 22:54:00.000000000 +0200
+@@ -292,7 +292,7 @@
+ return rc;
+
+ /* require ptrace target be a child of ptracer on attach */
+- if (mode & PTRACE_MODE_ATTACH) {
++ if (mode == PTRACE_MODE_ATTACH) {
+ switch (ptrace_scope) {
+ case YAMA_SCOPE_DISABLED:
+ /* No additional restrictions. */
+@@ -318,7 +318,7 @@
+ }
+ }
+
+- if (rc && (mode & PTRACE_MODE_NOAUDIT) == 0) {
++ if (rc) {
+ printk_ratelimited(KERN_NOTICE
+ "ptrace of pid %d was attempted by: %s (pid %d)\n",
+ child->pid, current->comm, current->pid);
+diff -Nur linux-4.1.23.orig/sound/arm/Kconfig linux-4.1.23/sound/arm/Kconfig
+--- linux-4.1.23.orig/sound/arm/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/arm/Kconfig 2016-05-02 22:54:00.000000000 +0200
@@ -40,5 +40,13 @@
Say Y or M if you want to support any AC97 codec attached to
the PXA2xx AC97 interface.
@@ -321619,9 +329282,9 @@ diff -Nur linux-4.1.22.orig/sound/arm/Kconfig linux-4.1.22/sound/arm/Kconfig
+
endif # SND_ARM
-diff -Nur linux-4.1.22.orig/sound/arm/Makefile linux-4.1.22/sound/arm/Makefile
---- linux-4.1.22.orig/sound/arm/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/arm/Makefile 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/arm/Makefile linux-4.1.23/sound/arm/Makefile
+--- linux-4.1.23.orig/sound/arm/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/arm/Makefile 2016-05-02 22:54:00.000000000 +0200
@@ -14,3 +14,8 @@
obj-$(CONFIG_SND_PXA2XX_AC97) += snd-pxa2xx-ac97.o
@@ -321631,9 +329294,9 @@ diff -Nur linux-4.1.22.orig/sound/arm/Makefile linux-4.1.22/sound/arm/Makefile
+snd-bcm2835-objs := bcm2835.o bcm2835-ctl.o bcm2835-pcm.o bcm2835-vchiq.o
+
+ccflags-y += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000
-diff -Nur linux-4.1.22.orig/sound/arm/bcm2835-ctl.c linux-4.1.22/sound/arm/bcm2835-ctl.c
---- linux-4.1.22.orig/sound/arm/bcm2835-ctl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/arm/bcm2835-ctl.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/arm/bcm2835-ctl.c linux-4.1.23/sound/arm/bcm2835-ctl.c
+--- linux-4.1.23.orig/sound/arm/bcm2835-ctl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/arm/bcm2835-ctl.c 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,323 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -321958,9 +329621,9 @@ diff -Nur linux-4.1.22.orig/sound/arm/bcm2835-ctl.c linux-4.1.22/sound/arm/bcm28
+ }
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/sound/arm/bcm2835-pcm.c linux-4.1.22/sound/arm/bcm2835-pcm.c
---- linux-4.1.22.orig/sound/arm/bcm2835-pcm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/arm/bcm2835-pcm.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/arm/bcm2835-pcm.c linux-4.1.23/sound/arm/bcm2835-pcm.c
+--- linux-4.1.23.orig/sound/arm/bcm2835-pcm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/arm/bcm2835-pcm.c 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,557 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -322519,9 +330182,9 @@ diff -Nur linux-4.1.22.orig/sound/arm/bcm2835-pcm.c linux-4.1.22/sound/arm/bcm28
+
+ return 0;
+}
-diff -Nur linux-4.1.22.orig/sound/arm/bcm2835-vchiq.c linux-4.1.22/sound/arm/bcm2835-vchiq.c
---- linux-4.1.22.orig/sound/arm/bcm2835-vchiq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/arm/bcm2835-vchiq.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/arm/bcm2835-vchiq.c linux-4.1.23/sound/arm/bcm2835-vchiq.c
+--- linux-4.1.23.orig/sound/arm/bcm2835-vchiq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/arm/bcm2835-vchiq.c 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,902 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -323425,9 +331088,9 @@ diff -Nur linux-4.1.22.orig/sound/arm/bcm2835-vchiq.c linux-4.1.22/sound/arm/bcm
+
+module_param(force_bulk, bool, 0444);
+MODULE_PARM_DESC(force_bulk, "Force use of vchiq bulk for audio");
-diff -Nur linux-4.1.22.orig/sound/arm/bcm2835.c linux-4.1.22/sound/arm/bcm2835.c
---- linux-4.1.22.orig/sound/arm/bcm2835.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/arm/bcm2835.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/arm/bcm2835.c linux-4.1.23/sound/arm/bcm2835.c
+--- linux-4.1.23.orig/sound/arm/bcm2835.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/arm/bcm2835.c 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,511 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -323940,9 +331603,9 @@ diff -Nur linux-4.1.22.orig/sound/arm/bcm2835.c linux-4.1.22/sound/arm/bcm2835.c
+MODULE_DESCRIPTION("Alsa driver for BCM2835 chip");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bcm2835_alsa");
-diff -Nur linux-4.1.22.orig/sound/arm/bcm2835.h linux-4.1.22/sound/arm/bcm2835.h
---- linux-4.1.22.orig/sound/arm/bcm2835.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/arm/bcm2835.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/arm/bcm2835.h linux-4.1.23/sound/arm/bcm2835.h
+--- linux-4.1.23.orig/sound/arm/bcm2835.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/arm/bcm2835.h 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,167 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -324111,9 +331774,9 @@ diff -Nur linux-4.1.22.orig/sound/arm/bcm2835.h linux-4.1.22/sound/arm/bcm2835.h
+void bcm2835_audio_flush_playback_buffers(bcm2835_alsa_stream_t * alsa_stream);
+
+#endif /* __SOUND_ARM_BCM2835_H */
-diff -Nur linux-4.1.22.orig/sound/arm/vc_vchi_audioserv_defs.h linux-4.1.22/sound/arm/vc_vchi_audioserv_defs.h
---- linux-4.1.22.orig/sound/arm/vc_vchi_audioserv_defs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/arm/vc_vchi_audioserv_defs.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/arm/vc_vchi_audioserv_defs.h linux-4.1.23/sound/arm/vc_vchi_audioserv_defs.h
+--- linux-4.1.23.orig/sound/arm/vc_vchi_audioserv_defs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/arm/vc_vchi_audioserv_defs.h 2016-05-02 22:54:00.000000000 +0200
@@ -0,0 +1,116 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -324231,10 +331894,506 @@ diff -Nur linux-4.1.22.orig/sound/arm/vc_vchi_audioserv_defs.h linux-4.1.22/soun
+} VC_AUDIO_MSG_T;
+
+#endif // _VC_AUDIO_DEFS_H_
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/Kconfig linux-4.1.22/sound/soc/bcm/Kconfig
---- linux-4.1.22.orig/sound/soc/bcm/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/bcm/Kconfig 2016-04-29 18:02:49.000000000 +0200
-@@ -7,3 +7,71 @@
+diff -Nur linux-4.1.23.orig/sound/hda/hdac_device.c linux-4.1.23/sound/hda/hdac_device.c
+--- linux-4.1.23.orig/sound/hda/hdac_device.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/hda/hdac_device.c 2016-05-02 22:54:00.000000000 +0200
+@@ -500,27 +500,23 @@
+ * This function calls the runtime PM helper to power up the given codec.
+ * Unlike snd_hdac_power_up_pm(), you should call this only for the code
+ * path that isn't included in PM path. Otherwise it gets stuck.
+- *
+- * Returns zero if successful, or a negative error code.
+ */
+-int snd_hdac_power_up(struct hdac_device *codec)
++void snd_hdac_power_up(struct hdac_device *codec)
+ {
+- return pm_runtime_get_sync(&codec->dev);
++ pm_runtime_get_sync(&codec->dev);
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_power_up);
+
+ /**
+ * snd_hdac_power_down - power down the codec
+ * @codec: the codec object
+- *
+- * Returns zero if successful, or a negative error code.
+ */
+-int snd_hdac_power_down(struct hdac_device *codec)
++void snd_hdac_power_down(struct hdac_device *codec)
+ {
+ struct device *dev = &codec->dev;
+
+ pm_runtime_mark_last_busy(dev);
+- return pm_runtime_put_autosuspend(dev);
++ pm_runtime_put_autosuspend(dev);
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_power_down);
+
+@@ -532,14 +528,11 @@
+ * which may be called by PM suspend/resume again. OTOH, if a power-up
+ * call must wake up the sleeper (e.g. in a kctl callback), use
+ * snd_hdac_power_up() instead.
+- *
+- * Returns zero if successful, or a negative error code.
+ */
+-int snd_hdac_power_up_pm(struct hdac_device *codec)
++void snd_hdac_power_up_pm(struct hdac_device *codec)
+ {
+ if (!atomic_inc_not_zero(&codec->in_pm))
+- return snd_hdac_power_up(codec);
+- return 0;
++ snd_hdac_power_up(codec);
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_power_up_pm);
+
+@@ -549,14 +542,11 @@
+ *
+ * Like snd_hdac_power_up_pm(), this function is used in a recursive
+ * code path like init code which may be called by PM suspend/resume again.
+- *
+- * Returns zero if successful, or a negative error code.
+ */
+-int snd_hdac_power_down_pm(struct hdac_device *codec)
++void snd_hdac_power_down_pm(struct hdac_device *codec)
+ {
+ if (atomic_dec_if_positive(&codec->in_pm) < 0)
+- return snd_hdac_power_down(codec);
+- return 0;
++ snd_hdac_power_down(codec);
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_power_down_pm);
+ #endif
+diff -Nur linux-4.1.23.orig/sound/hda/hdac_regmap.c linux-4.1.23/sound/hda/hdac_regmap.c
+--- linux-4.1.23.orig/sound/hda/hdac_regmap.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/hda/hdac_regmap.c 2016-05-02 22:54:00.000000000 +0200
+@@ -410,9 +410,8 @@
+
+ err = reg_raw_write(codec, reg, val);
+ if (err == -EAGAIN) {
+- err = snd_hdac_power_up_pm(codec);
+- if (!err)
+- err = reg_raw_write(codec, reg, val);
++ snd_hdac_power_up_pm(codec);
++ err = reg_raw_write(codec, reg, val);
+ snd_hdac_power_down_pm(codec);
+ }
+ return err;
+@@ -443,9 +442,8 @@
+
+ err = reg_raw_read(codec, reg, val);
+ if (err == -EAGAIN) {
+- err = snd_hdac_power_up_pm(codec);
+- if (!err)
+- err = reg_raw_read(codec, reg, val);
++ snd_hdac_power_up_pm(codec);
++ err = reg_raw_read(codec, reg, val);
+ snd_hdac_power_down_pm(codec);
+ }
+ return err;
+diff -Nur linux-4.1.23.orig/sound/pci/hda/hda_generic.c linux-4.1.23/sound/pci/hda/hda_generic.c
+--- linux-4.1.23.orig/sound/pci/hda/hda_generic.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/pci/hda/hda_generic.c 2016-05-02 22:54:00.000000000 +0200
+@@ -771,6 +771,9 @@
+ unsigned int caps;
+ unsigned int mask, val;
+
++ if (!enable && is_active_nid(codec, nid, dir, idx_to_check))
++ return;
++
+ caps = query_amp_caps(codec, nid, dir);
+ val = get_amp_val_to_activate(codec, nid, dir, caps, enable);
+ mask = get_amp_mask_to_modify(codec, nid, dir, idx_to_check, caps);
+@@ -781,22 +784,12 @@
+ update_amp(codec, nid, dir, idx, mask, val);
+ }
+
+-static void check_and_activate_amp(struct hda_codec *codec, hda_nid_t nid,
+- int dir, int idx, int idx_to_check,
+- bool enable)
+-{
+- /* check whether the given amp is still used by others */
+- if (!enable && is_active_nid(codec, nid, dir, idx_to_check))
+- return;
+- activate_amp(codec, nid, dir, idx, idx_to_check, enable);
+-}
+-
+ static void activate_amp_out(struct hda_codec *codec, struct nid_path *path,
+ int i, bool enable)
+ {
+ hda_nid_t nid = path->path[i];
+ init_amp(codec, nid, HDA_OUTPUT, 0);
+- check_and_activate_amp(codec, nid, HDA_OUTPUT, 0, 0, enable);
++ activate_amp(codec, nid, HDA_OUTPUT, 0, 0, enable);
+ }
+
+ static void activate_amp_in(struct hda_codec *codec, struct nid_path *path,
+@@ -824,16 +817,9 @@
+ * when aa-mixer is available, we need to enable the path as well
+ */
+ for (n = 0; n < nums; n++) {
+- if (n != idx) {
+- if (conn[n] != spec->mixer_merge_nid)
+- continue;
+- /* when aamix is disabled, force to off */
+- if (!add_aamix) {
+- activate_amp(codec, nid, HDA_INPUT, n, n, false);
+- continue;
+- }
+- }
+- check_and_activate_amp(codec, nid, HDA_INPUT, n, idx, enable);
++ if (n != idx && (!add_aamix || conn[n] != spec->mixer_merge_nid))
++ continue;
++ activate_amp(codec, nid, HDA_INPUT, n, idx, enable);
+ }
+ }
+
+@@ -1594,12 +1580,6 @@
+ return found;
+ }
+
+-static inline bool has_aamix_out_paths(struct hda_gen_spec *spec)
+-{
+- return spec->aamix_out_paths[0] || spec->aamix_out_paths[1] ||
+- spec->aamix_out_paths[2];
+-}
+-
+ /* create a new path including aamix if available, and return its index */
+ static int check_aamix_out_path(struct hda_codec *codec, int path_idx)
+ {
+@@ -2442,51 +2422,25 @@
+ }
+ }
+
+-/* re-initialize the output paths; only called from loopback_mixing_put() */
+-static void update_output_paths(struct hda_codec *codec, int num_outs,
+- const int *paths)
+-{
+- struct hda_gen_spec *spec = codec->spec;
+- struct nid_path *path;
+- int i;
+-
+- for (i = 0; i < num_outs; i++) {
+- path = snd_hda_get_path_from_idx(codec, paths[i]);
+- if (path)
+- snd_hda_activate_path(codec, path, path->active,
+- spec->aamix_mode);
+- }
+-}
+-
+ static int loopback_mixing_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+ {
+ struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
+ struct hda_gen_spec *spec = codec->spec;
+- const struct auto_pin_cfg *cfg = &spec->autocfg;
+ unsigned int val = ucontrol->value.enumerated.item[0];
+
+ if (val == spec->aamix_mode)
+ return 0;
+ spec->aamix_mode = val;
+- if (has_aamix_out_paths(spec)) {
+- update_aamix_paths(codec, val, spec->out_paths[0],
+- spec->aamix_out_paths[0],
+- cfg->line_out_type);
+- update_aamix_paths(codec, val, spec->hp_paths[0],
+- spec->aamix_out_paths[1],
+- AUTO_PIN_HP_OUT);
+- update_aamix_paths(codec, val, spec->speaker_paths[0],
+- spec->aamix_out_paths[2],
+- AUTO_PIN_SPEAKER_OUT);
+- } else {
+- update_output_paths(codec, cfg->line_outs, spec->out_paths);
+- if (cfg->line_out_type != AUTO_PIN_HP_OUT)
+- update_output_paths(codec, cfg->hp_outs, spec->hp_paths);
+- if (cfg->line_out_type != AUTO_PIN_SPEAKER_OUT)
+- update_output_paths(codec, cfg->speaker_outs,
+- spec->speaker_paths);
+- }
++ update_aamix_paths(codec, val, spec->out_paths[0],
++ spec->aamix_out_paths[0],
++ spec->autocfg.line_out_type);
++ update_aamix_paths(codec, val, spec->hp_paths[0],
++ spec->aamix_out_paths[1],
++ AUTO_PIN_HP_OUT);
++ update_aamix_paths(codec, val, spec->speaker_paths[0],
++ spec->aamix_out_paths[2],
++ AUTO_PIN_SPEAKER_OUT);
+ return 1;
+ }
+
+@@ -2504,13 +2458,12 @@
+
+ if (!spec->mixer_nid)
+ return 0;
++ if (!(spec->aamix_out_paths[0] || spec->aamix_out_paths[1] ||
++ spec->aamix_out_paths[2]))
++ return 0;
+ if (!snd_hda_gen_add_kctl(spec, NULL, &loopback_mixing_enum))
+ return -ENOMEM;
+ spec->have_aamix_ctl = 1;
+- /* if no explicit aamix path is present (e.g. for Realtek codecs),
+- * enable aamix as default -- just for compatibility
+- */
+- spec->aamix_mode = !has_aamix_out_paths(spec);
+ return 0;
+ }
+
+@@ -5711,8 +5664,6 @@
+
+ if (!spec->have_aamix_ctl)
+ return;
+- if (!has_aamix_out_paths(spec))
+- return;
+ update_aamix_paths(codec, spec->aamix_mode, spec->out_paths[0],
+ spec->aamix_out_paths[0],
+ spec->autocfg.line_out_type);
+diff -Nur linux-4.1.23.orig/sound/pci/hda/patch_cirrus.c linux-4.1.23/sound/pci/hda/patch_cirrus.c
+--- linux-4.1.23.orig/sound/pci/hda/patch_cirrus.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/pci/hda/patch_cirrus.c 2016-05-02 22:54:00.000000000 +0200
+@@ -174,12 +174,8 @@
+ snd_hda_gen_update_outputs(codec);
+
+ if (spec->gpio_eapd_hp || spec->gpio_eapd_speaker) {
+- if (spec->gen.automute_speaker)
+- spec->gpio_data = spec->gen.hp_jack_present ?
+- spec->gpio_eapd_hp : spec->gpio_eapd_speaker;
+- else
+- spec->gpio_data =
+- spec->gpio_eapd_hp | spec->gpio_eapd_speaker;
++ spec->gpio_data = spec->gen.hp_jack_present ?
++ spec->gpio_eapd_hp : spec->gpio_eapd_speaker;
+ snd_hda_codec_write(codec, 0x01, 0,
+ AC_VERB_SET_GPIO_DATA, spec->gpio_data);
+ }
+diff -Nur linux-4.1.23.orig/sound/pci/hda/patch_conexant.c linux-4.1.23/sound/pci/hda/patch_conexant.c
+--- linux-4.1.23.orig/sound/pci/hda/patch_conexant.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/pci/hda/patch_conexant.c 2016-05-02 22:54:00.000000000 +0200
+@@ -204,13 +204,8 @@
+ {
+ struct conexant_spec *spec = codec->spec;
+
+- switch (codec->core.vendor_id) {
+- case 0x14f150f2: /* CX20722 */
+- case 0x14f150f4: /* CX20724 */
+- break;
+- default:
++ if (codec->core.vendor_id != 0x14f150f2)
+ return;
+- }
+
+ /* Turn the CX20722 codec into D3 to avoid spurious noises
+ from the internal speaker during (and after) reboot */
+diff -Nur linux-4.1.23.orig/sound/pci/hda/patch_hdmi.c linux-4.1.23/sound/pci/hda/patch_hdmi.c
+--- linux-4.1.23.orig/sound/pci/hda/patch_hdmi.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/pci/hda/patch_hdmi.c 2016-05-02 22:54:00.000000000 +0200
+@@ -1526,57 +1526,6 @@
+ return 0;
+ }
+
+-/* update per_pin ELD from the given new ELD;
+- * setup info frame and notification accordingly
+- */
+-static void update_eld(struct hda_codec *codec,
+- struct hdmi_spec_per_pin *per_pin,
+- struct hdmi_eld *eld)
+-{
+- struct hdmi_eld *pin_eld = &per_pin->sink_eld;
+- bool old_eld_valid = pin_eld->eld_valid;
+- bool eld_changed;
+-
+- if (eld->eld_valid)
+- snd_hdmi_show_eld(codec, &eld->info);
+-
+- eld_changed = (pin_eld->eld_valid != eld->eld_valid);
+- if (eld->eld_valid && pin_eld->eld_valid)
+- if (pin_eld->eld_size != eld->eld_size ||
+- memcmp(pin_eld->eld_buffer, eld->eld_buffer,
+- eld->eld_size) != 0)
+- eld_changed = true;
+-
+- pin_eld->monitor_present = eld->monitor_present;
+- pin_eld->eld_valid = eld->eld_valid;
+- pin_eld->eld_size = eld->eld_size;
+- if (eld->eld_valid)
+- memcpy(pin_eld->eld_buffer, eld->eld_buffer, eld->eld_size);
+- pin_eld->info = eld->info;
+-
+- /*
+- * Re-setup pin and infoframe. This is needed e.g. when
+- * - sink is first plugged-in
+- * - transcoder can change during stream playback on Haswell
+- * and this can make HW reset converter selection on a pin.
+- */
+- if (eld->eld_valid && !old_eld_valid && per_pin->setup) {
+- if (is_haswell_plus(codec) || is_valleyview_plus(codec)) {
+- intel_verify_pin_cvt_connect(codec, per_pin);
+- intel_not_share_assigned_cvt(codec, per_pin->pin_nid,
+- per_pin->mux_idx);
+- }
+-
+- hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
+- }
+-
+- if (eld_changed)
+- snd_ctl_notify(codec->card,
+- SNDRV_CTL_EVENT_MASK_VALUE |
+- SNDRV_CTL_EVENT_MASK_INFO,
+- &per_pin->eld_ctl->id);
+-}
+-
+ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
+ {
+ struct hda_jack_tbl *jack;
+@@ -1594,6 +1543,8 @@
+ * the unsolicited response to avoid custom WARs.
+ */
+ int present;
++ bool update_eld = false;
++ bool eld_changed = false;
+ bool ret;
+
+ snd_hda_power_up_pm(codec);
+@@ -1601,8 +1552,6 @@
+
+ mutex_lock(&per_pin->lock);
+ pin_eld->monitor_present = !!(present & AC_PINSENSE_PRESENCE);
+- eld->monitor_present = pin_eld->monitor_present;
+-
+ if (pin_eld->monitor_present)
+ eld->eld_valid = !!(present & AC_PINSENSE_ELDV);
+ else
+@@ -1622,13 +1571,61 @@
+ eld->eld_size) < 0)
+ eld->eld_valid = false;
+ }
++
++ if (eld->eld_valid) {
++ snd_hdmi_show_eld(codec, &eld->info);
++ update_eld = true;
++ }
++ else if (repoll) {
++ schedule_delayed_work(&per_pin->work,
++ msecs_to_jiffies(300));
++ goto unlock;
++ }
+ }
+
+- if (!eld->eld_valid && repoll)
+- schedule_delayed_work(&per_pin->work, msecs_to_jiffies(300));
+- else
+- update_eld(codec, per_pin, eld);
++ if (pin_eld->eld_valid != eld->eld_valid)
++ eld_changed = true;
++
++ if (pin_eld->eld_valid && !eld->eld_valid)
++ update_eld = true;
++
++ if (update_eld) {
++ bool old_eld_valid = pin_eld->eld_valid;
++ pin_eld->eld_valid = eld->eld_valid;
++ if (pin_eld->eld_size != eld->eld_size ||
++ memcmp(pin_eld->eld_buffer, eld->eld_buffer,
++ eld->eld_size) != 0) {
++ memcpy(pin_eld->eld_buffer, eld->eld_buffer,
++ eld->eld_size);
++ eld_changed = true;
++ }
++ pin_eld->eld_size = eld->eld_size;
++ pin_eld->info = eld->info;
++
++ /*
++ * Re-setup pin and infoframe. This is needed e.g. when
++ * - sink is first plugged-in (infoframe is not set up if !monitor_present)
++ * - transcoder can change during stream playback on Haswell
++ * and this can make HW reset converter selection on a pin.
++ */
++ if (eld->eld_valid && !old_eld_valid && per_pin->setup) {
++ if (is_haswell_plus(codec) ||
++ is_valleyview_plus(codec)) {
++ intel_verify_pin_cvt_connect(codec, per_pin);
++ intel_not_share_assigned_cvt(codec, pin_nid,
++ per_pin->mux_idx);
++ }
++
++ hdmi_setup_audio_infoframe(codec, per_pin,
++ per_pin->non_pcm);
++ }
++ }
+
++ if (eld_changed)
++ snd_ctl_notify(codec->card,
++ SNDRV_CTL_EVENT_MASK_VALUE | SNDRV_CTL_EVENT_MASK_INFO,
++ &per_pin->eld_ctl->id);
++ unlock:
+ ret = !repoll || !pin_eld->monitor_present || pin_eld->eld_valid;
+
+ jack = snd_hda_jack_tbl_get(codec, pin_nid);
+@@ -3339,8 +3336,6 @@
+ { .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi },
+ { .id = 0x10de0072, .name = "GPU 72 HDMI/DP", .patch = patch_nvhdmi },
+ { .id = 0x10de007d, .name = "GPU 7d HDMI/DP", .patch = patch_nvhdmi },
+-{ .id = 0x10de0082, .name = "GPU 82 HDMI/DP", .patch = patch_nvhdmi },
+-{ .id = 0x10de0083, .name = "GPU 83 HDMI/DP", .patch = patch_nvhdmi },
+ { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch },
+ { .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi },
+ { .id = 0x11069f81, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi },
+diff -Nur linux-4.1.23.orig/sound/pci/hda/patch_realtek.c linux-4.1.23/sound/pci/hda/patch_realtek.c
+--- linux-4.1.23.orig/sound/pci/hda/patch_realtek.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/pci/hda/patch_realtek.c 2016-05-02 22:54:00.000000000 +0200
+@@ -4608,7 +4608,6 @@
+ ALC290_FIXUP_SUBWOOFER,
+ ALC290_FIXUP_SUBWOOFER_HSJACK,
+ ALC269_FIXUP_THINKPAD_ACPI,
+- ALC269_FIXUP_DMIC_THINKPAD_ACPI,
+ ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
+ ALC255_FIXUP_DELL2_MIC_NO_PRESENCE,
+ ALC255_FIXUP_HEADSET_MODE,
+@@ -5049,12 +5048,6 @@
+ .type = HDA_FIXUP_FUNC,
+ .v.func = hda_fixup_thinkpad_acpi,
+ },
+- [ALC269_FIXUP_DMIC_THINKPAD_ACPI] = {
+- .type = HDA_FIXUP_FUNC,
+- .v.func = alc_fixup_inv_dmic,
+- .chained = true,
+- .chain_id = ALC269_FIXUP_THINKPAD_ACPI,
+- },
+ [ALC255_FIXUP_DELL1_MIC_NO_PRESENCE] = {
+ .type = HDA_FIXUP_PINS,
+ .v.pins = (const struct hda_pintbl[]) {
+@@ -5302,8 +5295,6 @@
+ SND_PCI_QUIRK(0x1025, 0x106d, "Acer Cloudbook 14", ALC283_FIXUP_CHROME_BOOK),
+ SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
+ SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS),
+- SND_PCI_QUIRK(0x1028, 0x05bd, "Dell Latitude E6440", ALC292_FIXUP_DELL_E7X),
+- SND_PCI_QUIRK(0x1028, 0x05be, "Dell Latitude E6540", ALC292_FIXUP_DELL_E7X),
+ SND_PCI_QUIRK(0x1028, 0x05ca, "Dell Latitude E7240", ALC292_FIXUP_DELL_E7X),
+ SND_PCI_QUIRK(0x1028, 0x05cb, "Dell Latitude E7440", ALC292_FIXUP_DELL_E7X),
+ SND_PCI_QUIRK(0x1028, 0x05da, "Dell Vostro 5460", ALC290_FIXUP_SUBWOOFER),
+@@ -5439,8 +5430,6 @@
+ SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK),
+ SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC292_FIXUP_TPT460),
+ SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
+- SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
+- SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
+ SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
+ SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP),
+ SND_PCI_QUIRK(0x17aa, 0x5013, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
+diff -Nur linux-4.1.23.orig/sound/pci/intel8x0.c linux-4.1.23/sound/pci/intel8x0.c
+--- linux-4.1.23.orig/sound/pci/intel8x0.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/pci/intel8x0.c 2016-05-02 22:54:01.000000000 +0200
+@@ -2879,7 +2879,6 @@
+
+ static struct snd_pci_quirk intel8x0_clock_list[] = {
+ SND_PCI_QUIRK(0x0e11, 0x008a, "AD1885", 41000),
+- SND_PCI_QUIRK(0x1014, 0x0581, "AD1981B", 48000),
+ SND_PCI_QUIRK(0x1028, 0x00be, "AD1885", 44100),
+ SND_PCI_QUIRK(0x1028, 0x0177, "AD1980", 48000),
+ SND_PCI_QUIRK(0x1028, 0x01ad, "AD1981B", 48000),
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/Kconfig linux-4.1.23/sound/soc/bcm/Kconfig
+--- linux-4.1.23.orig/sound/soc/bcm/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/bcm/Kconfig 2016-05-02 22:54:01.000000000 +0200
+@@ -7,3 +7,85 @@
Say Y or M if you want to add support for codecs attached to
the BCM2835 I2S interface. You will also need
to select the audio interfaces to support below.
@@ -324292,6 +332451,20 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/Kconfig linux-4.1.22/sound/soc/bcm/Kco
+ help
+ Say Y or M if you want to add support for Audio Codec Board PROTO (WM8731).
+
++config SND_BCM2708_SOC_BOOMBERRY_DAC
++ tristate "Support for BoomBerry DAC"
++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
++ select SND_SOC_PCM512x
++ help
++ Say Y or M if you want to add support for BoomBerry DAC.
++
++config SND_BCM2708_SOC_BOOMBERRY_DIGI
++ tristate "Support for BoomBerry Digi"
++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
++ select SND_SOC_WM8804
++ help
++ Say Y or M if you want to add support for BoomBerry Digi.
++
+config SND_BCM2708_SOC_IQAUDIO_DAC
+ tristate "Support for IQaudIO-DAC"
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
@@ -324306,10 +332479,10 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/Kconfig linux-4.1.22/sound/soc/bcm/Kco
+ select SND_SOC_TPA6130A2
+ help
+ Say Y or M if you want to add support for RaspiDAC Rev.3x.
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/Makefile linux-4.1.22/sound/soc/bcm/Makefile
---- linux-4.1.22.orig/sound/soc/bcm/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/bcm/Makefile 2016-04-29 18:02:49.000000000 +0200
-@@ -3,3 +3,26 @@
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/Makefile linux-4.1.23/sound/soc/bcm/Makefile
+--- linux-4.1.23.orig/sound/soc/bcm/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/bcm/Makefile 2016-05-02 22:54:01.000000000 +0200
+@@ -3,3 +3,30 @@
obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o
@@ -324323,6 +332496,8 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/Makefile linux-4.1.22/sound/soc/bcm/Ma
+snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o
+snd-soc-hifiberry-digi-objs := hifiberry_digi.o
+snd-soc-hifiberry-amp-objs := hifiberry_amp.o
++snd-soc-boomberry-dac-objs := boomberry-dac.o
++snd-soc-boomberry-digi-objs := boomberry-digi.o
+snd-soc-rpi-dac-objs := rpi-dac.o
+snd-soc-rpi-proto-objs := rpi-proto.o
+snd-soc-iqaudio-dac-objs := iqaudio-dac.o
@@ -324332,13 +332507,15 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/Makefile linux-4.1.22/sound/soc/bcm/Ma
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
++obj-$(CONFIG_SND_BCM2708_SOC_BOOMBERRY_DAC) += snd-soc-boomberry-dac.o
++obj-$(CONFIG_SND_BCM2708_SOC_BOOMBERRY_DIGI) += snd-soc-boomberry-digi.o
+obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
+obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
+obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
+obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/bcm2708-i2s.c linux-4.1.22/sound/soc/bcm/bcm2708-i2s.c
---- linux-4.1.22.orig/sound/soc/bcm/bcm2708-i2s.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/bcm2708-i2s.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/bcm2708-i2s.c linux-4.1.23/sound/soc/bcm/bcm2708-i2s.c
+--- linux-4.1.23.orig/sound/soc/bcm/bcm2708-i2s.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/bcm2708-i2s.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,1014 @@
+/*
+ * ALSA SoC I2S Audio Layer for Broadcom BCM2708 SoC
@@ -325354,9 +333531,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/bcm2708-i2s.c linux-4.1.22/sound/soc/b
+MODULE_DESCRIPTION("BCM2708 I2S interface");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/bcm2708-i2s.h linux-4.1.22/sound/soc/bcm/bcm2708-i2s.h
---- linux-4.1.22.orig/sound/soc/bcm/bcm2708-i2s.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/bcm2708-i2s.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/bcm2708-i2s.h linux-4.1.23/sound/soc/bcm/bcm2708-i2s.h
+--- linux-4.1.23.orig/sound/soc/bcm/bcm2708-i2s.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/bcm2708-i2s.h 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,35 @@
+/*
+ * I2S configuration for sound cards.
@@ -325393,9 +333570,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/bcm2708-i2s.h linux-4.1.22/sound/soc/b
+extern void bcm2708_i2s_set_gpio(int gpio);
+
+#endif
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/bcm2835-i2s.c linux-4.1.22/sound/soc/bcm/bcm2835-i2s.c
---- linux-4.1.22.orig/sound/soc/bcm/bcm2835-i2s.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/bcm/bcm2835-i2s.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/bcm2835-i2s.c linux-4.1.23/sound/soc/bcm/bcm2835-i2s.c
+--- linux-4.1.23.orig/sound/soc/bcm/bcm2835-i2s.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/bcm/bcm2835-i2s.c 2016-05-02 22:54:01.000000000 +0200
@@ -861,6 +861,7 @@
{ .compatible = "brcm,bcm2835-i2s", },
{},
@@ -325404,9 +333581,395 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/bcm2835-i2s.c linux-4.1.22/sound/soc/b
static struct platform_driver bcm2835_i2s_driver = {
.probe = bcm2835_i2s_probe,
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_amp.c linux-4.1.22/sound/soc/bcm/hifiberry_amp.c
---- linux-4.1.22.orig/sound/soc/bcm/hifiberry_amp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/hifiberry_amp.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/boomberry-dac.c linux-4.1.23/sound/soc/bcm/boomberry-dac.c
+--- linux-4.1.23.orig/sound/soc/bcm/boomberry-dac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/boomberry-dac.c 2016-05-02 22:54:01.000000000 +0200
+@@ -0,0 +1,163 @@
++/*
++ * ASoC Driver for BoomBerry DAC Raspberry Pi HAT Sound Card
++ *
++ * Author: Milan Neskovic
++ * Copyright 2016
++ * based on code by Daniel Matuschek <info@crazy-audio.com>
++ * based on code by Florian Meier <florian.meier@koalo.de>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/jack.h>
++
++#include "../codecs/pcm512x.h"
++
++static bool digital_gain_0db_limit = true;
++
++static int snd_rpi_boomberry_dac_init(struct snd_soc_pcm_runtime *rtd)
++{
++ struct snd_soc_codec *codec = rtd->codec;
++ snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x08, 0x08);
++ snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_4, 0xf, 0x02);
++ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
++
++ if (digital_gain_0db_limit)
++ {
++ int ret;
++ struct snd_soc_card *card = rtd->card;
++ struct snd_soc_codec *codec = rtd->codec;
++
++ ret = snd_soc_limit_volume(codec, "Digital Playback Volume", 207);
++ if (ret < 0)
++ dev_warn(card->dev, "Failed to set volume limit: %d\n", ret);
++ }
++
++ return 0;
++}
++
++static int snd_rpi_boomberry_dac_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
++ /*return snd_soc_dai_set_bclk_ratio(cpu_dai, 64);*/
++ unsigned int sample_bits =
++ snd_pcm_format_physical_width(params_format(params));
++ return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2);
++}
++
++static int snd_rpi_boomberry_dac_startup(struct snd_pcm_substream *substream) {
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->codec;
++ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
++ return 0;
++}
++
++static void snd_rpi_boomberry_dac_shutdown(struct snd_pcm_substream *substream) {
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->codec;
++ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x00);
++}
++
++/* machine stream operations */
++static struct snd_soc_ops snd_rpi_boomberry_dac_ops = {
++ .hw_params = snd_rpi_boomberry_dac_hw_params,
++ .startup = snd_rpi_boomberry_dac_startup,
++ .shutdown = snd_rpi_boomberry_dac_shutdown,
++};
++
++static struct snd_soc_dai_link snd_rpi_boomberry_dac_dai[] = {
++{
++ .name = "BoomBerry DAC",
++ .stream_name = "BoomBerry DAC HiFi",
++ .cpu_dai_name = "bcm2708-i2s.0",
++ .codec_dai_name = "pcm512x-hifi",
++ .platform_name = "bcm2708-i2s.0",
++ .codec_name = "pcm512x.1-004d",
++ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBS_CFS,
++ .ops = &snd_rpi_boomberry_dac_ops,
++ .init = snd_rpi_boomberry_dac_init,
++},
++};
++
++/* audio machine driver */
++static struct snd_soc_card snd_rpi_boomberry_dac = {
++ .name = "snd_rpi_boomberry_dac",
++ .owner = THIS_MODULE,
++ .dai_link = snd_rpi_boomberry_dac_dai,
++ .num_links = ARRAY_SIZE(snd_rpi_boomberry_dac_dai),
++};
++
++static int snd_rpi_boomberry_dac_probe(struct platform_device *pdev)
++{
++ int ret = 0;
++
++ snd_rpi_boomberry_dac.dev = &pdev->dev;
++
++ if (pdev->dev.of_node) {
++ struct device_node *i2s_node;
++ struct snd_soc_dai_link *dai = &snd_rpi_boomberry_dac_dai[0];
++ i2s_node = of_parse_phandle(pdev->dev.of_node,
++ "i2s-controller", 0);
++
++ if (i2s_node) {
++ dai->cpu_dai_name = NULL;
++ dai->cpu_of_node = i2s_node;
++ dai->platform_name = NULL;
++ dai->platform_of_node = i2s_node;
++ }
++
++ digital_gain_0db_limit = !of_property_read_bool(
++ pdev->dev.of_node, "boomberry,24db_digital_gain");
++ }
++
++ ret = snd_soc_register_card(&snd_rpi_boomberry_dac);
++ if (ret)
++ dev_err(&pdev->dev,
++ "snd_soc_register_card() failed: %d\n", ret);
++
++ return ret;
++}
++
++static int snd_rpi_boomberry_dac_remove(struct platform_device *pdev)
++{
++ return snd_soc_unregister_card(&snd_rpi_boomberry_dac);
++}
++
++static const struct of_device_id snd_rpi_boomberry_dac_of_match[] = {
++ { .compatible = "boomberry,boomberry-dac", },
++ {},
++};
++MODULE_DEVICE_TABLE(of, snd_rpi_boomberry_dac_of_match);
++
++static struct platform_driver snd_rpi_boomberry_dac_driver = {
++ .driver = {
++ .name = "snd-rpi-boomberry-dac",
++ .owner = THIS_MODULE,
++ .of_match_table = snd_rpi_boomberry_dac_of_match,
++ },
++ .probe = snd_rpi_boomberry_dac_probe,
++ .remove = snd_rpi_boomberry_dac_remove,
++};
++
++module_platform_driver(snd_rpi_boomberry_dac_driver);
++
++MODULE_AUTHOR("Milan Neskovic <info@boomberry.co>");
++MODULE_DESCRIPTION("ASoC Driver for BoomBerry PI DAC HAT Sound Card");
++MODULE_LICENSE("GPL v2");
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/boomberry-digi.c linux-4.1.23/sound/soc/bcm/boomberry-digi.c
+--- linux-4.1.23.orig/sound/soc/bcm/boomberry-digi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/boomberry-digi.c 2016-05-02 22:54:01.000000000 +0200
+@@ -0,0 +1,215 @@
++/*
++ * ASoC Driver for BoomBerry Raspberry Pi Digi HAT Sound Card
++ *
++ * Author: Milan Neskovic
++ * Copyright 2016
++ * based on code by Daniel Matuschek <info@crazy-audio.com>
++ * based on code by Florian Meier <florian.meier@koalo.de>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/jack.h>
++
++#include "../codecs/wm8804.h"
++
++static int snd_rpi_boomberry_digi_init(struct snd_soc_pcm_runtime *rtd)
++{
++ struct snd_soc_codec *codec = rtd->codec;
++
++ /* enable TX output */
++ snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
++
++ return 0;
++}
++
++static int snd_rpi_boomberry_digi_startup(struct snd_pcm_substream *substream) {
++ /* turn on digital output */
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->codec;
++ snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x00);
++ return 0;
++}
++
++static void snd_rpi_boomberry_digi_shutdown(struct snd_pcm_substream *substream) {
++ /* turn off output */
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->codec;
++ snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x3c);
++}
++
++static int snd_rpi_boomberry_digi_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_dai *codec_dai = rtd->codec_dai;
++ struct snd_soc_codec *codec = rtd->codec;
++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
++
++ int sysclk = 27000000; /* This is fixed on this board */
++
++ long mclk_freq=0;
++ int mclk_div=1;
++ int sampling_freq=1;
++
++ int ret;
++
++ int samplerate = params_rate(params);
++
++ if (samplerate<=96000) {
++ mclk_freq=samplerate*256;
++ mclk_div=WM8804_MCLKDIV_256FS;
++ } else {
++ mclk_freq=samplerate*128;
++ mclk_div=WM8804_MCLKDIV_128FS;
++ }
++
++ switch (samplerate) {
++ case 32000:
++ sampling_freq=0x03;
++ break;
++ case 44100:
++ sampling_freq=0x00;
++ break;
++ case 48000:
++ sampling_freq=0x02;
++ break;
++ case 88200:
++ sampling_freq=0x08;
++ break;
++ case 96000:
++ sampling_freq=0x0a;
++ break;
++ case 176400:
++ sampling_freq=0x0c;
++ break;
++ case 192000:
++ sampling_freq=0x0e;
++ break;
++ default:
++ dev_err(codec->dev,
++ "Failed to set WM8804 SYSCLK, unsupported samplerate %d\n",
++ samplerate);
++ }
++
++ snd_soc_dai_set_clkdiv(codec_dai, WM8804_MCLK_DIV, mclk_div);
++ snd_soc_dai_set_pll(codec_dai, 0, 0, sysclk, mclk_freq);
++
++ ret = snd_soc_dai_set_sysclk(codec_dai, WM8804_TX_CLKSRC_PLL,
++ sysclk, SND_SOC_CLOCK_OUT);
++ if (ret < 0) {
++ dev_err(codec->dev,
++ "Failed to set WM8804 SYSCLK: %d\n", ret);
++ return ret;
++ }
++
++ /* Enable TX output */
++ snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
++
++ /* Power on */
++ snd_soc_update_bits(codec, WM8804_PWRDN, 0x9, 0);
++
++ /* set sampling frequency status bits */
++ snd_soc_update_bits(codec, WM8804_SPDTX4, 0x0f, sampling_freq);
++
++ return snd_soc_dai_set_bclk_ratio(cpu_dai,64);
++}
++
++/* machine stream operations */
++static struct snd_soc_ops snd_rpi_boomberry_digi_ops = {
++ .hw_params = snd_rpi_boomberry_digi_hw_params,
++ .startup = snd_rpi_boomberry_digi_startup,
++ .shutdown = snd_rpi_boomberry_digi_shutdown,
++};
++
++static struct snd_soc_dai_link snd_rpi_boomberry_digi_dai[] = {
++{
++ .name = "BoomBerry Digi",
++ .stream_name = "BoomBerry Digi HiFi",
++ .cpu_dai_name = "bcm2708-i2s.0",
++ .codec_dai_name = "wm8804-spdif",
++ .platform_name = "bcm2708-i2s.0",
++ .codec_name = "wm8804.1-003b",
++ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBM_CFM,
++ .ops = &snd_rpi_boomberry_digi_ops,
++ .init = snd_rpi_boomberry_digi_init,
++},
++};
++
++/* audio machine driver */
++static struct snd_soc_card snd_rpi_boomberry_digi = {
++ .name = "snd_rpi_boomberry_digi",
++ .owner = THIS_MODULE,
++ .dai_link = snd_rpi_boomberry_digi_dai,
++ .num_links = ARRAY_SIZE(snd_rpi_boomberry_digi_dai),
++};
++
++static int snd_rpi_boomberry_digi_probe(struct platform_device *pdev)
++{
++ int ret = 0;
++
++ snd_rpi_boomberry_digi.dev = &pdev->dev;
++
++ if (pdev->dev.of_node) {
++ struct device_node *i2s_node;
++ struct snd_soc_dai_link *dai = &snd_rpi_boomberry_digi_dai[0];
++ i2s_node = of_parse_phandle(pdev->dev.of_node,
++ "i2s-controller", 0);
++
++ if (i2s_node) {
++ dai->cpu_dai_name = NULL;
++ dai->cpu_of_node = i2s_node;
++ dai->platform_name = NULL;
++ dai->platform_of_node = i2s_node;
++ }
++ }
++
++ ret = snd_soc_register_card(&snd_rpi_boomberry_digi);
++ if (ret)
++ dev_err(&pdev->dev,
++ "snd_soc_register_card() failed: %d\n", ret);
++
++ return ret;
++}
++
++static int snd_rpi_boomberry_digi_remove(struct platform_device *pdev)
++{
++ return snd_soc_unregister_card(&snd_rpi_boomberry_digi);
++}
++
++static const struct of_device_id snd_rpi_boomberry_digi_of_match[] = {
++ { .compatible = "boomberry,boomberry-digi", },
++ {},
++};
++MODULE_DEVICE_TABLE(of, snd_rpi_boomberry_digi_of_match);
++
++static struct platform_driver snd_rpi_boomberry_digi_driver = {
++ .driver = {
++ .name = "snd-rpi-boomberry-digi",
++ .owner = THIS_MODULE,
++ .of_match_table = snd_rpi_boomberry_digi_of_match,
++ },
++ .probe = snd_rpi_boomberry_digi_probe,
++ .remove = snd_rpi_boomberry_digi_remove,
++};
++
++module_platform_driver(snd_rpi_boomberry_digi_driver);
++
++MODULE_AUTHOR("Milan Neskovic <info@boomberry.co>");
++MODULE_DESCRIPTION("ASoC Driver for BoomBerry PI Digi HAT Sound Card");
++MODULE_LICENSE("GPL v2");
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/hifiberry_amp.c linux-4.1.23/sound/soc/bcm/hifiberry_amp.c
+--- linux-4.1.23.orig/sound/soc/bcm/hifiberry_amp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/hifiberry_amp.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,128 @@
+/*
+ * ASoC Driver for HifiBerry AMP
@@ -325536,9 +334099,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_amp.c linux-4.1.22/sound/soc
+MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>");
+MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_dac.c linux-4.1.22/sound/soc/bcm/hifiberry_dac.c
---- linux-4.1.22.orig/sound/soc/bcm/hifiberry_dac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/hifiberry_dac.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/hifiberry_dac.c linux-4.1.23/sound/soc/bcm/hifiberry_dac.c
+--- linux-4.1.23.orig/sound/soc/bcm/hifiberry_dac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/hifiberry_dac.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,123 @@
+/*
+ * ASoC Driver for HifiBerry DAC
@@ -325663,9 +334226,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_dac.c linux-4.1.22/sound/soc
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_dacplus.c linux-4.1.22/sound/soc/bcm/hifiberry_dacplus.c
---- linux-4.1.22.orig/sound/soc/bcm/hifiberry_dacplus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/hifiberry_dacplus.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/hifiberry_dacplus.c linux-4.1.23/sound/soc/bcm/hifiberry_dacplus.c
+--- linux-4.1.23.orig/sound/soc/bcm/hifiberry_dacplus.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/hifiberry_dacplus.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,353 @@
+/*
+ * ASoC Driver for HiFiBerry DAC+ / DAC Pro
@@ -326020,9 +334583,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_dacplus.c linux-4.1.22/sound
+MODULE_AUTHOR("Daniel Matuschek <daniel@hifiberry.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_digi.c linux-4.1.22/sound/soc/bcm/hifiberry_digi.c
---- linux-4.1.22.orig/sound/soc/bcm/hifiberry_digi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/hifiberry_digi.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/hifiberry_digi.c linux-4.1.23/sound/soc/bcm/hifiberry_digi.c
+--- linux-4.1.23.orig/sound/soc/bcm/hifiberry_digi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/hifiberry_digi.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,224 @@
+/*
+ * ASoC Driver for HifiBerry Digi
@@ -326248,9 +334811,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/hifiberry_digi.c linux-4.1.22/sound/so
+MODULE_AUTHOR("Daniel Matuschek <info@crazy-audio.com>");
+MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/iqaudio-dac.c linux-4.1.22/sound/soc/bcm/iqaudio-dac.c
---- linux-4.1.22.orig/sound/soc/bcm/iqaudio-dac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/iqaudio-dac.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/iqaudio-dac.c linux-4.1.23/sound/soc/bcm/iqaudio-dac.c
+--- linux-4.1.23.orig/sound/soc/bcm/iqaudio-dac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/iqaudio-dac.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,142 @@
+/*
+ * ASoC Driver for IQaudIO DAC
@@ -326394,9 +334957,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/iqaudio-dac.c linux-4.1.22/sound/soc/b
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/raspidac3.c linux-4.1.22/sound/soc/bcm/raspidac3.c
---- linux-4.1.22.orig/sound/soc/bcm/raspidac3.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/raspidac3.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/raspidac3.c linux-4.1.23/sound/soc/bcm/raspidac3.c
+--- linux-4.1.23.orig/sound/soc/bcm/raspidac3.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/raspidac3.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,192 @@
+/*
+ * ASoC Driver for RaspiDAC v3
@@ -326590,9 +335153,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/raspidac3.c linux-4.1.22/sound/soc/bcm
+MODULE_AUTHOR("Jan Grulich <jan@grulich.eu>");
+MODULE_DESCRIPTION("ASoC Driver for RaspiDAC Rev.3x");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/rpi-dac.c linux-4.1.22/sound/soc/bcm/rpi-dac.c
---- linux-4.1.22.orig/sound/soc/bcm/rpi-dac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/rpi-dac.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/rpi-dac.c linux-4.1.23/sound/soc/bcm/rpi-dac.c
+--- linux-4.1.23.orig/sound/soc/bcm/rpi-dac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/rpi-dac.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,119 @@
+/*
+ * ASoC Driver for RPi-DAC.
@@ -326713,9 +335276,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/rpi-dac.c linux-4.1.22/sound/soc/bcm/r
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for RPi-DAC");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/bcm/rpi-proto.c linux-4.1.22/sound/soc/bcm/rpi-proto.c
---- linux-4.1.22.orig/sound/soc/bcm/rpi-proto.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/bcm/rpi-proto.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/bcm/rpi-proto.c linux-4.1.23/sound/soc/bcm/rpi-proto.c
+--- linux-4.1.23.orig/sound/soc/bcm/rpi-proto.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/bcm/rpi-proto.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,154 @@
+/*
+ * ASoC driver for PROTO AudioCODEC (with a WM8731)
@@ -326871,9 +335434,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/bcm/rpi-proto.c linux-4.1.22/sound/soc/bcm
+MODULE_AUTHOR("Florian Meier");
+MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)");
+MODULE_LICENSE("GPL");
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/Kconfig linux-4.1.22/sound/soc/codecs/Kconfig
---- linux-4.1.22.orig/sound/soc/codecs/Kconfig 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/codecs/Kconfig 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/Kconfig linux-4.1.23/sound/soc/codecs/Kconfig
+--- linux-4.1.23.orig/sound/soc/codecs/Kconfig 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/codecs/Kconfig 2016-05-02 22:54:01.000000000 +0200
@@ -83,6 +83,8 @@
select SND_SOC_PCM512x_I2C if I2C
select SND_SOC_PCM512x_SPI if SPI_MASTER
@@ -326914,9 +335477,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/Kconfig linux-4.1.22/sound/soc/code
config SND_SOC_TLV320AIC23
tristate
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/Makefile linux-4.1.22/sound/soc/codecs/Makefile
---- linux-4.1.22.orig/sound/soc/codecs/Makefile 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/codecs/Makefile 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/Makefile linux-4.1.23/sound/soc/codecs/Makefile
+--- linux-4.1.23.orig/sound/soc/codecs/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/codecs/Makefile 2016-05-02 22:54:01.000000000 +0200
@@ -78,6 +78,8 @@
snd-soc-pcm512x-spi-objs := pcm512x-spi.o
snd-soc-rl6231-objs := rl6231.o
@@ -326951,9 +335514,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/Makefile linux-4.1.22/sound/soc/cod
obj-$(CONFIG_SND_SOC_TLV320AIC23) += snd-soc-tlv320aic23.o
obj-$(CONFIG_SND_SOC_TLV320AIC23_I2C) += snd-soc-tlv320aic23-i2c.o
obj-$(CONFIG_SND_SOC_TLV320AIC23_SPI) += snd-soc-tlv320aic23-spi.o
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/pcm1794a.c linux-4.1.22/sound/soc/codecs/pcm1794a.c
---- linux-4.1.22.orig/sound/soc/codecs/pcm1794a.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/codecs/pcm1794a.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/pcm1794a.c linux-4.1.23/sound/soc/codecs/pcm1794a.c
+--- linux-4.1.23.orig/sound/soc/codecs/pcm1794a.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/codecs/pcm1794a.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,69 @@
+/*
+ * Driver for the PCM1794A codec
@@ -327024,9 +335587,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/pcm1794a.c linux-4.1.22/sound/soc/c
+MODULE_DESCRIPTION("ASoC PCM1794A codec driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/pcm5102a.c linux-4.1.22/sound/soc/codecs/pcm5102a.c
---- linux-4.1.22.orig/sound/soc/codecs/pcm5102a.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/codecs/pcm5102a.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/pcm5102a.c linux-4.1.23/sound/soc/codecs/pcm5102a.c
+--- linux-4.1.23.orig/sound/soc/codecs/pcm5102a.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/codecs/pcm5102a.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,70 @@
+/*
+ * Driver for the PCM5102A codec
@@ -327098,9 +335661,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/pcm5102a.c linux-4.1.22/sound/soc/c
+MODULE_DESCRIPTION("ASoC PCM5102A codec driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/pcm512x.c linux-4.1.22/sound/soc/codecs/pcm512x.c
---- linux-4.1.22.orig/sound/soc/codecs/pcm512x.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/codecs/pcm512x.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/pcm512x.c linux-4.1.23/sound/soc/codecs/pcm512x.c
+--- linux-4.1.23.orig/sound/soc/codecs/pcm512x.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/codecs/pcm512x.c 2016-05-02 22:54:01.000000000 +0200
@@ -856,7 +856,8 @@
int fssp;
int gpio;
@@ -327111,9 +335674,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/pcm512x.c linux-4.1.22/sound/soc/co
if (lrclk_div == 0) {
dev_err(dev, "No LRCLK?\n");
return -EINVAL;
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/tas5713.c linux-4.1.22/sound/soc/codecs/tas5713.c
---- linux-4.1.22.orig/sound/soc/codecs/tas5713.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/codecs/tas5713.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/tas5713.c linux-4.1.23/sound/soc/codecs/tas5713.c
+--- linux-4.1.23.orig/sound/soc/codecs/tas5713.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/codecs/tas5713.c 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,369 @@
+/*
+ * ASoC Driver for TAS5713
@@ -327484,9 +336047,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/tas5713.c linux-4.1.22/sound/soc/co
+MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>");
+MODULE_DESCRIPTION("ASoC driver for TAS5713");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/tas5713.h linux-4.1.22/sound/soc/codecs/tas5713.h
---- linux-4.1.22.orig/sound/soc/codecs/tas5713.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-4.1.22/sound/soc/codecs/tas5713.h 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/tas5713.h linux-4.1.23/sound/soc/codecs/tas5713.h
+--- linux-4.1.23.orig/sound/soc/codecs/tas5713.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.1.23/sound/soc/codecs/tas5713.h 2016-05-02 22:54:01.000000000 +0200
@@ -0,0 +1,210 @@
+/*
+ * ASoC Driver for TAS5713
@@ -327698,9 +336261,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/tas5713.h linux-4.1.22/sound/soc/co
+
+
+#endif /* _TAS5713_H */
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/tpa6130a2.c linux-4.1.22/sound/soc/codecs/tpa6130a2.c
---- linux-4.1.22.orig/sound/soc/codecs/tpa6130a2.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/codecs/tpa6130a2.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/tpa6130a2.c linux-4.1.23/sound/soc/codecs/tpa6130a2.c
+--- linux-4.1.23.orig/sound/soc/codecs/tpa6130a2.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/codecs/tpa6130a2.c 2016-05-02 22:54:01.000000000 +0200
@@ -4,6 +4,7 @@
* Copyright (C) Nokia Corporation
*
@@ -327780,9 +336343,9 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/tpa6130a2.c linux-4.1.22/sound/soc/
};
/*
-diff -Nur linux-4.1.22.orig/sound/soc/codecs/wm8804.c linux-4.1.22/sound/soc/codecs/wm8804.c
---- linux-4.1.22.orig/sound/soc/codecs/wm8804.c 2016-04-19 13:58:05.000000000 +0200
-+++ linux-4.1.22/sound/soc/codecs/wm8804.c 2016-04-29 18:02:49.000000000 +0200
+diff -Nur linux-4.1.23.orig/sound/soc/codecs/wm8804.c linux-4.1.23/sound/soc/codecs/wm8804.c
+--- linux-4.1.23.orig/sound/soc/codecs/wm8804.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/soc/codecs/wm8804.c 2016-05-02 22:54:01.000000000 +0200
@@ -304,6 +304,7 @@
blen = 0x1;
break;
@@ -327809,3 +336372,1096 @@ diff -Nur linux-4.1.22.orig/sound/soc/codecs/wm8804.c linux-4.1.22/sound/soc/cod
.dapm_widgets = wm8804_dapm_widgets,
.num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets),
+diff -Nur linux-4.1.23.orig/sound/usb/card.c linux-4.1.23/sound/usb/card.c
+--- linux-4.1.23.orig/sound/usb/card.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/card.c 2016-05-02 22:54:01.000000000 +0200
+@@ -365,15 +365,13 @@
+ }
+
+ mutex_init(&chip->mutex);
+- init_waitqueue_head(&chip->shutdown_wait);
++ init_rwsem(&chip->shutdown_rwsem);
+ chip->index = idx;
+ chip->dev = dev;
+ chip->card = card;
+ chip->setup = device_setup[idx];
+ chip->autoclock = autoclock;
+ chip->probing = 1;
+- atomic_set(&chip->usage_count, 0);
+- atomic_set(&chip->shutdown, 0);
+
+ chip->usb_id = USB_ID(le16_to_cpu(dev->descriptor.idVendor),
+ le16_to_cpu(dev->descriptor.idProduct));
+@@ -497,7 +495,7 @@
+ mutex_lock(&register_mutex);
+ for (i = 0; i < SNDRV_CARDS; i++) {
+ if (usb_chip[i] && usb_chip[i]->dev == dev) {
+- if (atomic_read(&usb_chip[i]->shutdown)) {
++ if (usb_chip[i]->shutdown) {
+ dev_err(&dev->dev, "USB device is in the shutdown state, cannot create a card instance\n");
+ err = -EIO;
+ goto __error;
+@@ -587,23 +585,23 @@
+ struct snd_usb_audio *chip = usb_get_intfdata(intf);
+ struct snd_card *card;
+ struct list_head *p;
++ bool was_shutdown;
+
+ if (chip == (void *)-1L)
+ return;
+
+ card = chip->card;
++ down_write(&chip->shutdown_rwsem);
++ was_shutdown = chip->shutdown;
++ chip->shutdown = 1;
++ up_write(&chip->shutdown_rwsem);
+
+ mutex_lock(&register_mutex);
+- if (atomic_inc_return(&chip->shutdown) == 1) {
++ if (!was_shutdown) {
+ struct snd_usb_stream *as;
+ struct snd_usb_endpoint *ep;
+ struct usb_mixer_interface *mixer;
+
+- /* wait until all pending tasks done;
+- * they are protected by snd_usb_lock_shutdown()
+- */
+- wait_event(chip->shutdown_wait,
+- !atomic_read(&chip->usage_count));
+ snd_card_disconnect(card);
+ /* release the pcm resources */
+ list_for_each_entry(as, &chip->pcm_list, list) {
+@@ -633,56 +631,28 @@
+ }
+ }
+
+-/* lock the shutdown (disconnect) task and autoresume */
+-int snd_usb_lock_shutdown(struct snd_usb_audio *chip)
+-{
+- int err;
+-
+- atomic_inc(&chip->usage_count);
+- if (atomic_read(&chip->shutdown)) {
+- err = -EIO;
+- goto error;
+- }
+- err = snd_usb_autoresume(chip);
+- if (err < 0)
+- goto error;
+- return 0;
+-
+- error:
+- if (atomic_dec_and_test(&chip->usage_count))
+- wake_up(&chip->shutdown_wait);
+- return err;
+-}
+-
+-/* autosuspend and unlock the shutdown */
+-void snd_usb_unlock_shutdown(struct snd_usb_audio *chip)
+-{
+- snd_usb_autosuspend(chip);
+- if (atomic_dec_and_test(&chip->usage_count))
+- wake_up(&chip->shutdown_wait);
+-}
+-
+ #ifdef CONFIG_PM
+
+ int snd_usb_autoresume(struct snd_usb_audio *chip)
+ {
+- if (atomic_read(&chip->shutdown))
+- return -EIO;
+- if (chip->probing)
+- return 0;
+- if (atomic_inc_return(&chip->active) == 1)
+- return usb_autopm_get_interface(chip->pm_intf);
+- return 0;
++ int err = -ENODEV;
++
++ down_read(&chip->shutdown_rwsem);
++ if (chip->probing || chip->in_pm)
++ err = 0;
++ else if (!chip->shutdown)
++ err = usb_autopm_get_interface(chip->pm_intf);
++ up_read(&chip->shutdown_rwsem);
++
++ return err;
+ }
+
+ void snd_usb_autosuspend(struct snd_usb_audio *chip)
+ {
+- if (chip->probing)
+- return;
+- if (atomic_read(&chip->shutdown))
+- return;
+- if (atomic_dec_and_test(&chip->active))
++ down_read(&chip->shutdown_rwsem);
++ if (!chip->shutdown && !chip->probing && !chip->in_pm)
+ usb_autopm_put_interface(chip->pm_intf);
++ up_read(&chip->shutdown_rwsem);
+ }
+
+ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
+@@ -735,7 +705,7 @@
+ if (--chip->num_suspended_intf)
+ return 0;
+
+- atomic_inc(&chip->active); /* avoid autopm */
++ chip->in_pm = 1;
+ /*
+ * ALSA leaves material resumption to user space
+ * we just notify and restart the mixers
+@@ -755,7 +725,7 @@
+ chip->autosuspended = 0;
+
+ err_out:
+- atomic_dec(&chip->active); /* allow autopm after this point */
++ chip->in_pm = 0;
+ return err;
+ }
+
+diff -Nur linux-4.1.23.orig/sound/usb/clock.c linux-4.1.23/sound/usb/clock.c
+--- linux-4.1.23.orig/sound/usb/clock.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/clock.c 2016-05-02 22:54:01.000000000 +0200
+@@ -285,8 +285,6 @@
+ unsigned char data[3];
+ int err, crate;
+
+- if (get_iface_desc(alts)->bNumEndpoints < 1)
+- return -EINVAL;
+ ep = get_endpoint(alts, 0)->bEndpointAddress;
+
+ /* if endpoint doesn't have sampling rate control, bail out */
+diff -Nur linux-4.1.23.orig/sound/usb/endpoint.c linux-4.1.23/sound/usb/endpoint.c
+--- linux-4.1.23.orig/sound/usb/endpoint.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/endpoint.c 2016-05-02 22:54:01.000000000 +0200
+@@ -355,10 +355,8 @@
+ if (unlikely(urb->status == -ENOENT || /* unlinked */
+ urb->status == -ENODEV || /* device removed */
+ urb->status == -ECONNRESET || /* unlinked */
+- urb->status == -ESHUTDOWN)) /* device disabled */
+- goto exit_clear;
+- /* device disconnected */
+- if (unlikely(atomic_read(&ep->chip->shutdown)))
++ urb->status == -ESHUTDOWN || /* device disabled */
++ ep->chip->shutdown)) /* device disconnected */
+ goto exit_clear;
+
+ if (usb_pipeout(ep->pipe)) {
+@@ -415,9 +413,6 @@
+ *
+ * New endpoints will be added to chip->ep_list and must be freed by
+ * calling snd_usb_endpoint_free().
+- *
+- * For SND_USB_ENDPOINT_TYPE_SYNC, the caller needs to guarantee that
+- * bNumEndpoints > 1 beforehand.
+ */
+ struct snd_usb_endpoint *snd_usb_add_endpoint(struct snd_usb_audio *chip,
+ struct usb_host_interface *alts,
+@@ -534,7 +529,7 @@
+ {
+ unsigned int i;
+
+- if (!force && atomic_read(&ep->chip->shutdown)) /* to be sure... */
++ if (!force && ep->chip->shutdown) /* to be sure... */
+ return -EBADFD;
+
+ clear_bit(EP_FLAG_RUNNING, &ep->flags);
+@@ -873,7 +868,7 @@
+ int err;
+ unsigned int i;
+
+- if (atomic_read(&ep->chip->shutdown))
++ if (ep->chip->shutdown)
+ return -EBADFD;
+
+ /* already running? */
+diff -Nur linux-4.1.23.orig/sound/usb/mixer.c linux-4.1.23/sound/usb/mixer.c
+--- linux-4.1.23.orig/sound/usb/mixer.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/mixer.c 2016-05-02 22:54:01.000000000 +0200
+@@ -282,21 +282,6 @@
+ return val;
+ }
+
+-static int uac2_ctl_value_size(int val_type)
+-{
+- switch (val_type) {
+- case USB_MIXER_S32:
+- case USB_MIXER_U32:
+- return 4;
+- case USB_MIXER_S16:
+- case USB_MIXER_U16:
+- return 2;
+- default:
+- return 1;
+- }
+- return 0; /* unreachable */
+-}
+-
+
+ /*
+ * retrieve a mixer value
+@@ -311,11 +296,14 @@
+ int timeout = 10;
+ int idx = 0, err;
+
+- err = snd_usb_lock_shutdown(chip);
++ err = snd_usb_autoresume(chip);
+ if (err < 0)
+ return -EIO;
+
++ down_read(&chip->shutdown_rwsem);
+ while (timeout-- > 0) {
++ if (chip->shutdown)
++ break;
+ idx = snd_usb_ctrl_intf(chip) | (cval->head.id << 8);
+ if (snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), request,
+ USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN,
+@@ -331,7 +319,8 @@
+ err = -EINVAL;
+
+ out:
+- snd_usb_unlock_shutdown(chip);
++ up_read(&chip->shutdown_rwsem);
++ snd_usb_autosuspend(chip);
+ return err;
+ }
+
+@@ -339,14 +328,14 @@
+ int validx, int *value_ret)
+ {
+ struct snd_usb_audio *chip = cval->head.mixer->chip;
+- unsigned char buf[4 + 3 * sizeof(__u32)]; /* enough space for one range */
++ unsigned char buf[2 + 3 * sizeof(__u16)]; /* enough space for one range */
+ unsigned char *val;
+ int idx = 0, ret, size;
+ __u8 bRequest;
+
+ if (request == UAC_GET_CUR) {
+ bRequest = UAC2_CS_CUR;
+- size = uac2_ctl_value_size(cval->val_type);
++ size = sizeof(__u16);
+ } else {
+ bRequest = UAC2_CS_RANGE;
+ size = sizeof(buf);
+@@ -354,15 +343,21 @@
+
+ memset(buf, 0, sizeof(buf));
+
+- ret = snd_usb_lock_shutdown(chip) ? -EIO : 0;
++ ret = snd_usb_autoresume(chip) ? -EIO : 0;
+ if (ret)
+ goto error;
+
+- idx = snd_usb_ctrl_intf(chip) | (cval->head.id << 8);
+- ret = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), bRequest,
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown) {
++ ret = -ENODEV;
++ } else {
++ idx = snd_usb_ctrl_intf(chip) | (cval->head.id << 8);
++ ret = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), bRequest,
+ USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN,
+ validx, idx, buf, size);
+- snd_usb_unlock_shutdown(chip);
++ }
++ up_read(&chip->shutdown_rwsem);
++ snd_usb_autosuspend(chip);
+
+ if (ret < 0) {
+ error:
+@@ -451,7 +446,7 @@
+ int request, int validx, int value_set)
+ {
+ struct snd_usb_audio *chip = cval->head.mixer->chip;
+- unsigned char buf[4];
++ unsigned char buf[2];
+ int idx = 0, val_len, err, timeout = 10;
+
+ validx += cval->idx_off;
+@@ -459,7 +454,8 @@
+ if (cval->head.mixer->protocol == UAC_VERSION_1) {
+ val_len = cval->val_type >= USB_MIXER_S16 ? 2 : 1;
+ } else { /* UAC_VERSION_2 */
+- val_len = uac2_ctl_value_size(cval->val_type);
++ /* audio class v2 controls are always 2 bytes in size */
++ val_len = sizeof(__u16);
+
+ /* FIXME */
+ if (request != UAC_SET_CUR) {
+@@ -473,14 +469,13 @@
+ value_set = convert_bytes_value(cval, value_set);
+ buf[0] = value_set & 0xff;
+ buf[1] = (value_set >> 8) & 0xff;
+- buf[2] = (value_set >> 16) & 0xff;
+- buf[3] = (value_set >> 24) & 0xff;
+-
+- err = snd_usb_lock_shutdown(chip);
++ err = snd_usb_autoresume(chip);
+ if (err < 0)
+ return -EIO;
+-
++ down_read(&chip->shutdown_rwsem);
+ while (timeout-- > 0) {
++ if (chip->shutdown)
++ break;
+ idx = snd_usb_ctrl_intf(chip) | (cval->head.id << 8);
+ if (snd_usb_ctl_msg(chip->dev,
+ usb_sndctrlpipe(chip->dev, 0), request,
+@@ -495,7 +490,8 @@
+ err = -EINVAL;
+
+ out:
+- snd_usb_unlock_shutdown(chip);
++ up_read(&chip->shutdown_rwsem);
++ snd_usb_autosuspend(chip);
+ return err;
+ }
+
+@@ -802,25 +798,24 @@
+ /* feature unit control information */
+ struct usb_feature_control_info {
+ const char *name;
+- int type; /* data type for uac1 */
+- int type_uac2; /* data type for uac2 if different from uac1, else -1 */
++ unsigned int type; /* control type (mute, volume, etc.) */
+ };
+
+ static struct usb_feature_control_info audio_feature_info[] = {
+- { "Mute", USB_MIXER_INV_BOOLEAN, -1 },
+- { "Volume", USB_MIXER_S16, -1 },
+- { "Tone Control - Bass", USB_MIXER_S8, -1 },
+- { "Tone Control - Mid", USB_MIXER_S8, -1 },
+- { "Tone Control - Treble", USB_MIXER_S8, -1 },
+- { "Graphic Equalizer", USB_MIXER_S8, -1 }, /* FIXME: not implemeted yet */
+- { "Auto Gain Control", USB_MIXER_BOOLEAN, -1 },
+- { "Delay Control", USB_MIXER_U16, USB_MIXER_U32 },
+- { "Bass Boost", USB_MIXER_BOOLEAN, -1 },
+- { "Loudness", USB_MIXER_BOOLEAN, -1 },
++ { "Mute", USB_MIXER_INV_BOOLEAN },
++ { "Volume", USB_MIXER_S16 },
++ { "Tone Control - Bass", USB_MIXER_S8 },
++ { "Tone Control - Mid", USB_MIXER_S8 },
++ { "Tone Control - Treble", USB_MIXER_S8 },
++ { "Graphic Equalizer", USB_MIXER_S8 }, /* FIXME: not implemeted yet */
++ { "Auto Gain Control", USB_MIXER_BOOLEAN },
++ { "Delay Control", USB_MIXER_U16 },
++ { "Bass Boost", USB_MIXER_BOOLEAN },
++ { "Loudness", USB_MIXER_BOOLEAN },
+ /* UAC2 specific */
+- { "Input Gain Control", USB_MIXER_S16, -1 },
+- { "Input Gain Pad Control", USB_MIXER_S16, -1 },
+- { "Phase Inverter Control", USB_MIXER_BOOLEAN, -1 },
++ { "Input Gain Control", USB_MIXER_U16 },
++ { "Input Gain Pad Control", USB_MIXER_BOOLEAN },
++ { "Phase Inverter Control", USB_MIXER_BOOLEAN },
+ };
+
+ /* private_free callback */
+@@ -1220,7 +1215,6 @@
+ int readonly_mask)
+ {
+ struct uac_feature_unit_descriptor *desc = raw_desc;
+- struct usb_feature_control_info *ctl_info;
+ unsigned int len = 0;
+ int mapped_name = 0;
+ int nameid = uac_feature_unit_iFeature(desc);
+@@ -1246,13 +1240,7 @@
+ snd_usb_mixer_elem_init_std(&cval->head, state->mixer, unitid);
+ cval->control = control;
+ cval->cmask = ctl_mask;
+- ctl_info = &audio_feature_info[control-1];
+- if (state->mixer->protocol == UAC_VERSION_1)
+- cval->val_type = ctl_info->type;
+- else /* UAC_VERSION_2 */
+- cval->val_type = ctl_info->type_uac2 >= 0 ?
+- ctl_info->type_uac2 : ctl_info->type;
+-
++ cval->val_type = audio_feature_info[control-1].type;
+ if (ctl_mask == 0) {
+ cval->channels = 1; /* master channel */
+ cval->master_readonly = readonly_mask;
+diff -Nur linux-4.1.23.orig/sound/usb/mixer.h linux-4.1.23/sound/usb/mixer.h
+--- linux-4.1.23.orig/sound/usb/mixer.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/mixer.h 2016-05-02 22:54:01.000000000 +0200
+@@ -33,8 +33,6 @@
+ USB_MIXER_U8,
+ USB_MIXER_S16,
+ USB_MIXER_U16,
+- USB_MIXER_S32,
+- USB_MIXER_U32,
+ };
+
+ typedef void (*usb_mixer_elem_dump_func_t)(struct snd_info_buffer *buffer,
+diff -Nur linux-4.1.23.orig/sound/usb/mixer_quirks.c linux-4.1.23/sound/usb/mixer_quirks.c
+--- linux-4.1.23.orig/sound/usb/mixer_quirks.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/mixer_quirks.c 2016-05-02 22:54:01.000000000 +0200
+@@ -309,10 +309,11 @@
+ struct snd_usb_audio *chip = mixer->chip;
+ int err;
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
+-
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown) {
++ err = -ENODEV;
++ goto out;
++ }
+ if (chip->usb_id == USB_ID(0x041e, 0x3042))
+ err = snd_usb_ctl_msg(chip->dev,
+ usb_sndctrlpipe(chip->dev, 0), 0x24,
+@@ -329,7 +330,8 @@
+ usb_sndctrlpipe(chip->dev, 0), 0x24,
+ USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER,
+ value, index + 2, NULL, 0);
+- snd_usb_unlock_shutdown(chip);
++ out:
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -440,15 +442,16 @@
+
+ for (i = 0; jacks[i].name; ++i) {
+ snd_iprintf(buffer, "%s: ", jacks[i].name);
+- err = snd_usb_lock_shutdown(mixer->chip);
+- if (err < 0)
+- return;
+- err = snd_usb_ctl_msg(mixer->chip->dev,
++ down_read(&mixer->chip->shutdown_rwsem);
++ if (mixer->chip->shutdown)
++ err = 0;
++ else
++ err = snd_usb_ctl_msg(mixer->chip->dev,
+ usb_rcvctrlpipe(mixer->chip->dev, 0),
+ UAC_GET_MEM, USB_DIR_IN | USB_TYPE_CLASS |
+ USB_RECIP_INTERFACE, 0,
+ jacks[i].unitid << 8, buf, 3);
+- snd_usb_unlock_shutdown(mixer->chip);
++ up_read(&mixer->chip->shutdown_rwsem);
+ if (err == 3 && (buf[0] == 3 || buf[0] == 6))
+ snd_iprintf(buffer, "%02x %02x\n", buf[1], buf[2]);
+ else
+@@ -479,9 +482,11 @@
+ int err;
+ unsigned char buf[2];
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
++ down_read(&chip->shutdown_rwsem);
++ if (mixer->chip->shutdown) {
++ err = -ENODEV;
++ goto out;
++ }
+
+ buf[0] = 0x01;
+ buf[1] = value ? 0x02 : 0x01;
+@@ -489,7 +494,8 @@
+ usb_sndctrlpipe(chip->dev, 0), UAC_SET_CUR,
+ USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,
+ 0x0400, 0x0e00, buf, 2);
+- snd_usb_unlock_shutdown(chip);
++ out:
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -549,14 +555,15 @@
+ struct snd_usb_audio *chip = mixer->chip;
+ int err;
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
+- err = snd_usb_ctl_msg(chip->dev,
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown)
++ err = -ENODEV;
++ else
++ err = snd_usb_ctl_msg(chip->dev,
+ usb_sndctrlpipe(chip->dev, 0), 0x08,
+ USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER,
+ 50, 0, &status, 1);
+- snd_usb_unlock_shutdown(chip);
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -617,9 +624,11 @@
+ int err;
+ unsigned char buff[3];
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown) {
++ err = -ENODEV;
++ goto err;
++ }
+
+ /* Prepare for magic command to toggle clock source */
+ err = snd_usb_ctl_msg(chip->dev,
+@@ -675,7 +684,7 @@
+ goto err;
+
+ err:
+- snd_usb_unlock_shutdown(chip);
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -770,14 +779,15 @@
+ unsigned int pval = list->kctl->private_value;
+ int err;
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
+- err = usb_control_msg(chip->dev, usb_sndctrlpipe(chip->dev, 0),
+- (pval >> 16) & 0xff,
+- USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
+- pval >> 24, pval & 0xffff, NULL, 0, 1000);
+- snd_usb_unlock_shutdown(chip);
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown)
++ err = -ENODEV;
++ else
++ err = usb_control_msg(chip->dev, usb_sndctrlpipe(chip->dev, 0),
++ (pval >> 16) & 0xff,
++ USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
++ pval >> 24, pval & 0xffff, NULL, 0, 1000);
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -935,17 +945,18 @@
+ value[0] = pval >> 24;
+ value[1] = 0;
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
+- err = snd_usb_ctl_msg(chip->dev,
+- usb_sndctrlpipe(chip->dev, 0),
+- UAC_SET_CUR,
+- USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,
+- pval & 0xff00,
+- snd_usb_ctrl_intf(chip) | ((pval & 0xff) << 8),
+- value, 2);
+- snd_usb_unlock_shutdown(chip);
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown)
++ err = -ENODEV;
++ else
++ err = snd_usb_ctl_msg(chip->dev,
++ usb_sndctrlpipe(chip->dev, 0),
++ UAC_SET_CUR,
++ USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,
++ pval & 0xff00,
++ snd_usb_ctrl_intf(chip) | ((pval & 0xff) << 8),
++ value, 2);
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -1509,9 +1520,11 @@
+ unsigned char data[3];
+ int rate;
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown) {
++ err = -ENODEV;
++ goto end;
++ }
+
+ ucontrol->value.iec958.status[0] = kcontrol->private_value & 0xff;
+ ucontrol->value.iec958.status[1] = (kcontrol->private_value >> 8) & 0xff;
+@@ -1519,11 +1532,7 @@
+
+ /* use known values for that card: interface#1 altsetting#1 */
+ iface = usb_ifnum_to_if(chip->dev, 1);
+- if (!iface || iface->num_altsetting < 2)
+- return -EINVAL;
+ alts = &iface->altsetting[1];
+- if (get_iface_desc(alts)->bNumEndpoints < 1)
+- return -EINVAL;
+ ep = get_endpoint(alts, 0)->bEndpointAddress;
+
+ err = snd_usb_ctl_msg(chip->dev,
+@@ -1543,7 +1552,7 @@
+
+ err = 0;
+ end:
+- snd_usb_unlock_shutdown(chip);
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -1554,9 +1563,11 @@
+ u8 reg;
+ int err;
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown) {
++ err = -ENODEV;
++ goto end;
++ }
+
+ reg = ((pval >> 4) & 0xf0) | (pval & 0x0f);
+ err = snd_usb_ctl_msg(chip->dev,
+@@ -1584,7 +1595,7 @@
+ goto end;
+
+ end:
+- snd_usb_unlock_shutdown(chip);
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+@@ -1640,9 +1651,11 @@
+ u8 reg = list->kctl->private_value;
+ int err;
+
+- err = snd_usb_lock_shutdown(chip);
+- if (err < 0)
+- return err;
++ down_read(&chip->shutdown_rwsem);
++ if (chip->shutdown) {
++ err = -ENODEV;
++ goto end;
++ }
+
+ err = snd_usb_ctl_msg(chip->dev,
+ usb_sndctrlpipe(chip->dev, 0),
+@@ -1653,7 +1666,8 @@
+ NULL,
+ 0);
+
+- snd_usb_unlock_shutdown(chip);
++ end:
++ up_read(&chip->shutdown_rwsem);
+ return err;
+ }
+
+diff -Nur linux-4.1.23.orig/sound/usb/pcm.c linux-4.1.23/sound/usb/pcm.c
+--- linux-4.1.23.orig/sound/usb/pcm.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/pcm.c 2016-05-02 22:54:01.000000000 +0200
+@@ -80,7 +80,7 @@
+ unsigned int hwptr_done;
+
+ subs = (struct snd_usb_substream *)substream->runtime->private_data;
+- if (atomic_read(&subs->stream->chip->shutdown))
++ if (subs->stream->chip->shutdown)
+ return SNDRV_PCM_POS_XRUN;
+ spin_lock(&subs->lock);
+ hwptr_done = subs->hwptr_done;
+@@ -159,8 +159,6 @@
+ unsigned char data[1];
+ int err;
+
+- if (get_iface_desc(alts)->bNumEndpoints < 1)
+- return -EINVAL;
+ ep = get_endpoint(alts, 0)->bEndpointAddress;
+
+ data[0] = 1;
+@@ -709,11 +707,12 @@
+ return -EINVAL;
+ }
+
+- ret = snd_usb_lock_shutdown(subs->stream->chip);
+- if (ret < 0)
+- return ret;
+- ret = set_format(subs, fmt);
+- snd_usb_unlock_shutdown(subs->stream->chip);
++ down_read(&subs->stream->chip->shutdown_rwsem);
++ if (subs->stream->chip->shutdown)
++ ret = -ENODEV;
++ else
++ ret = set_format(subs, fmt);
++ up_read(&subs->stream->chip->shutdown_rwsem);
+ if (ret < 0)
+ return ret;
+
+@@ -736,12 +735,13 @@
+ subs->cur_audiofmt = NULL;
+ subs->cur_rate = 0;
+ subs->period_bytes = 0;
+- if (!snd_usb_lock_shutdown(subs->stream->chip)) {
++ down_read(&subs->stream->chip->shutdown_rwsem);
++ if (!subs->stream->chip->shutdown) {
+ stop_endpoints(subs, true);
+ snd_usb_endpoint_deactivate(subs->sync_endpoint);
+ snd_usb_endpoint_deactivate(subs->data_endpoint);
+- snd_usb_unlock_shutdown(subs->stream->chip);
+ }
++ up_read(&subs->stream->chip->shutdown_rwsem);
+ return snd_pcm_lib_free_vmalloc_buffer(substream);
+ }
+
+@@ -763,9 +763,11 @@
+ return -ENXIO;
+ }
+
+- ret = snd_usb_lock_shutdown(subs->stream->chip);
+- if (ret < 0)
+- return ret;
++ down_read(&subs->stream->chip->shutdown_rwsem);
++ if (subs->stream->chip->shutdown) {
++ ret = -ENODEV;
++ goto unlock;
++ }
+ if (snd_BUG_ON(!subs->data_endpoint)) {
+ ret = -EIO;
+ goto unlock;
+@@ -814,7 +816,7 @@
+ ret = start_endpoints(subs, true);
+
+ unlock:
+- snd_usb_unlock_shutdown(subs->stream->chip);
++ up_read(&subs->stream->chip->shutdown_rwsem);
+ return ret;
+ }
+
+@@ -1216,11 +1218,9 @@
+
+ stop_endpoints(subs, true);
+
+- if (subs->interface >= 0 &&
+- !snd_usb_lock_shutdown(subs->stream->chip)) {
++ if (!as->chip->shutdown && subs->interface >= 0) {
+ usb_set_interface(subs->dev, subs->interface, 0);
+ subs->interface = -1;
+- snd_usb_unlock_shutdown(subs->stream->chip);
+ }
+
+ subs->pcm_substream = NULL;
+diff -Nur linux-4.1.23.orig/sound/usb/proc.c linux-4.1.23/sound/usb/proc.c
+--- linux-4.1.23.orig/sound/usb/proc.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/proc.c 2016-05-02 22:54:01.000000000 +0200
+@@ -46,14 +46,14 @@
+ static void proc_audio_usbbus_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer)
+ {
+ struct snd_usb_audio *chip = entry->private_data;
+- if (!atomic_read(&chip->shutdown))
++ if (!chip->shutdown)
+ snd_iprintf(buffer, "%03d/%03d\n", chip->dev->bus->busnum, chip->dev->devnum);
+ }
+
+ static void proc_audio_usbid_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer)
+ {
+ struct snd_usb_audio *chip = entry->private_data;
+- if (!atomic_read(&chip->shutdown))
++ if (!chip->shutdown)
+ snd_iprintf(buffer, "%04x:%04x\n",
+ USB_ID_VENDOR(chip->usb_id),
+ USB_ID_PRODUCT(chip->usb_id));
+diff -Nur linux-4.1.23.orig/sound/usb/quirks.c linux-4.1.23/sound/usb/quirks.c
+--- linux-4.1.23.orig/sound/usb/quirks.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/quirks.c 2016-05-02 22:54:01.000000000 +0200
+@@ -177,12 +177,6 @@
+ }
+ alts = &iface->altsetting[fp->altset_idx];
+ altsd = get_iface_desc(alts);
+- if (altsd->bNumEndpoints < 1) {
+- kfree(fp);
+- kfree(rate_table);
+- return -EINVAL;
+- }
+-
+ fp->protocol = altsd->bInterfaceProtocol;
+
+ if (fp->datainterval == 0)
+@@ -1124,7 +1118,6 @@
+ switch (chip->usb_id) {
+ case USB_ID(0x045E, 0x075D): /* MS Lifecam Cinema */
+ case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
+- case USB_ID(0x045E, 0x076E): /* MS Lifecam HD-5001 */
+ case USB_ID(0x045E, 0x076F): /* MS Lifecam HD-6000 */
+ case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
+ case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */
+diff -Nur linux-4.1.23.orig/sound/usb/usbaudio.h linux-4.1.23/sound/usb/usbaudio.h
+--- linux-4.1.23.orig/sound/usb/usbaudio.h 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/sound/usb/usbaudio.h 2016-05-02 22:54:01.000000000 +0200
+@@ -37,12 +37,11 @@
+ struct usb_interface *pm_intf;
+ u32 usb_id;
+ struct mutex mutex;
++ struct rw_semaphore shutdown_rwsem;
++ unsigned int shutdown:1;
+ unsigned int probing:1;
++ unsigned int in_pm:1;
+ unsigned int autosuspended:1;
+- atomic_t active;
+- atomic_t shutdown;
+- atomic_t usage_count;
+- wait_queue_head_t shutdown_wait;
+ unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */
+
+ int num_interfaces;
+@@ -117,7 +116,4 @@
+ #define combine_triple(s) (combine_word(s) | ((unsigned int)(s)[2] << 16))
+ #define combine_quad(s) (combine_triple(s) | ((unsigned int)(s)[3] << 24))
+
+-int snd_usb_lock_shutdown(struct snd_usb_audio *chip);
+-void snd_usb_unlock_shutdown(struct snd_usb_audio *chip);
+-
+ #endif /* __USBAUDIO_H */
+diff -Nur linux-4.1.23.orig/tools/hv/Makefile linux-4.1.23/tools/hv/Makefile
+--- linux-4.1.23.orig/tools/hv/Makefile 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/tools/hv/Makefile 2016-05-02 22:54:01.000000000 +0200
+@@ -5,8 +5,6 @@
+ WARNINGS = -Wall -Wextra
+ CFLAGS = $(WARNINGS) -g $(PTHREAD_LIBS) $(shell getconf LFS_CFLAGS)
+
+-CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include
+-
+ all: hv_kvp_daemon hv_vss_daemon hv_fcopy_daemon
+ %: %.c
+ $(CC) $(CFLAGS) -o $@ $^
+diff -Nur linux-4.1.23.orig/tools/perf/util/pmu.c linux-4.1.23/tools/perf/util/pmu.c
+--- linux-4.1.23.orig/tools/perf/util/pmu.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/tools/perf/util/pmu.c 2016-05-02 22:54:01.000000000 +0200
+@@ -263,12 +263,13 @@
+ {
+ struct dirent *evt_ent;
+ DIR *event_dir;
++ int ret = 0;
+
+ event_dir = opendir(dir);
+ if (!event_dir)
+ return -EINVAL;
+
+- while ((evt_ent = readdir(event_dir))) {
++ while (!ret && (evt_ent = readdir(event_dir))) {
+ char path[PATH_MAX];
+ char *name = evt_ent->d_name;
+ FILE *file;
+@@ -284,19 +285,17 @@
+
+ snprintf(path, PATH_MAX, "%s/%s", dir, name);
+
++ ret = -EINVAL;
+ file = fopen(path, "r");
+- if (!file) {
+- pr_debug("Cannot open %s\n", path);
+- continue;
+- }
++ if (!file)
++ break;
+
+- if (perf_pmu__new_alias(head, dir, name, file) < 0)
+- pr_debug("Cannot set up %s\n", name);
++ ret = perf_pmu__new_alias(head, dir, name, file);
+ fclose(file);
+ }
+
+ closedir(event_dir);
+- return 0;
++ return ret;
+ }
+
+ /*
+diff -Nur linux-4.1.23.orig/tools/testing/selftests/efivarfs/efivarfs.sh linux-4.1.23/tools/testing/selftests/efivarfs/efivarfs.sh
+--- linux-4.1.23.orig/tools/testing/selftests/efivarfs/efivarfs.sh 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/tools/testing/selftests/efivarfs/efivarfs.sh 2016-05-02 22:54:01.000000000 +0200
+@@ -88,11 +88,7 @@
+ exit 1
+ fi
+
+- rm $file 2>/dev/null
+- if [ $? -ne 0 ]; then
+- chattr -i $file
+- rm $file
+- fi
++ rm $file
+
+ if [ -e $file ]; then
+ echo "$file couldn't be deleted" >&2
+@@ -115,7 +111,6 @@
+ exit 1
+ fi
+
+- chattr -i $file
+ printf "$attrs" > $file
+
+ if [ -e $file ]; then
+@@ -146,11 +141,7 @@
+ echo "$file could not be created" >&2
+ ret=1
+ else
+- rm $file 2>/dev/null
+- if [ $? -ne 0 ]; then
+- chattr -i $file
+- rm $file
+- fi
++ rm $file
+ fi
+ done
+
+@@ -183,11 +174,7 @@
+
+ if [ -e $file ]; then
+ echo "Creating $file should have failed" >&2
+- rm $file 2>/dev/null
+- if [ $? -ne 0 ]; then
+- chattr -i $file
+- rm $file
+- fi
++ rm $file
+ ret=1
+ fi
+ done
+diff -Nur linux-4.1.23.orig/tools/testing/selftests/efivarfs/open-unlink.c linux-4.1.23/tools/testing/selftests/efivarfs/open-unlink.c
+--- linux-4.1.23.orig/tools/testing/selftests/efivarfs/open-unlink.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/tools/testing/selftests/efivarfs/open-unlink.c 2016-05-02 22:54:01.000000000 +0200
+@@ -1,68 +1,10 @@
+-#include <errno.h>
+ #include <stdio.h>
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+-#include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+-#include <linux/fs.h>
+-
+-static int set_immutable(const char *path, int immutable)
+-{
+- unsigned int flags;
+- int fd;
+- int rc;
+- int error;
+-
+- fd = open(path, O_RDONLY);
+- if (fd < 0)
+- return fd;
+-
+- rc = ioctl(fd, FS_IOC_GETFLAGS, &flags);
+- if (rc < 0) {
+- error = errno;
+- close(fd);
+- errno = error;
+- return rc;
+- }
+-
+- if (immutable)
+- flags |= FS_IMMUTABLE_FL;
+- else
+- flags &= ~FS_IMMUTABLE_FL;
+-
+- rc = ioctl(fd, FS_IOC_SETFLAGS, &flags);
+- error = errno;
+- close(fd);
+- errno = error;
+- return rc;
+-}
+-
+-static int get_immutable(const char *path)
+-{
+- unsigned int flags;
+- int fd;
+- int rc;
+- int error;
+-
+- fd = open(path, O_RDONLY);
+- if (fd < 0)
+- return fd;
+-
+- rc = ioctl(fd, FS_IOC_GETFLAGS, &flags);
+- if (rc < 0) {
+- error = errno;
+- close(fd);
+- errno = error;
+- return rc;
+- }
+- close(fd);
+- if (flags & FS_IMMUTABLE_FL)
+- return 1;
+- return 0;
+-}
+
+ int main(int argc, char **argv)
+ {
+@@ -85,7 +27,7 @@
+ buf[4] = 0;
+
+ /* create a test variable */
+- fd = open(path, O_WRONLY | O_CREAT, 0600);
++ fd = open(path, O_WRONLY | O_CREAT);
+ if (fd < 0) {
+ perror("open(O_WRONLY)");
+ return EXIT_FAILURE;
+@@ -99,18 +41,6 @@
+
+ close(fd);
+
+- rc = get_immutable(path);
+- if (rc < 0) {
+- perror("ioctl(FS_IOC_GETFLAGS)");
+- return EXIT_FAILURE;
+- } else if (rc) {
+- rc = set_immutable(path, 0);
+- if (rc < 0) {
+- perror("ioctl(FS_IOC_SETFLAGS)");
+- return EXIT_FAILURE;
+- }
+- }
+-
+ fd = open(path, O_RDONLY);
+ if (fd < 0) {
+ perror("open");
+diff -Nur linux-4.1.23.orig/virt/kvm/kvm_main.c linux-4.1.23/virt/kvm/kvm_main.c
+--- linux-4.1.23.orig/virt/kvm/kvm_main.c 2016-04-25 17:57:36.000000000 +0200
++++ linux-4.1.23/virt/kvm/kvm_main.c 2016-05-02 22:54:01.000000000 +0200
+@@ -457,16 +457,6 @@
+ if (!kvm)
+ return ERR_PTR(-ENOMEM);
+
+- spin_lock_init(&kvm->mmu_lock);
+- atomic_inc(&current->mm->mm_count);
+- kvm->mm = current->mm;
+- kvm_eventfd_init(kvm);
+- mutex_init(&kvm->lock);
+- mutex_init(&kvm->irq_lock);
+- mutex_init(&kvm->slots_lock);
+- atomic_set(&kvm->users_count, 1);
+- INIT_LIST_HEAD(&kvm->devices);
+-
+ r = kvm_arch_init_vm(kvm, type);
+ if (r)
+ goto out_err_no_disable;
+@@ -504,6 +494,16 @@
+ goto out_err;
+ }
+
++ spin_lock_init(&kvm->mmu_lock);
++ kvm->mm = current->mm;
++ atomic_inc(&kvm->mm->mm_count);
++ kvm_eventfd_init(kvm);
++ mutex_init(&kvm->lock);
++ mutex_init(&kvm->irq_lock);
++ mutex_init(&kvm->slots_lock);
++ atomic_set(&kvm->users_count, 1);
++ INIT_LIST_HEAD(&kvm->devices);
++
+ r = kvm_init_mmu_notifier(kvm);
+ if (r)
+ goto out_err;
+@@ -525,7 +525,6 @@
+ kfree(kvm->buses[i]);
+ kvfree(kvm->memslots);
+ kvm_arch_free_vm(kvm);
+- mmdrop(current->mm);
+ return ERR_PTR(r);
+ }
+
diff --git a/target/arm/solidrun-imx6/patches/4.1.22/0001-xbian.patch b/target/arm/solidrun-imx6/patches/4.1.23/0001-xbian.patch
index d3ce4744b..d3ce4744b 100644
--- a/target/arm/solidrun-imx6/patches/4.1.22/0001-xbian.patch
+++ b/target/arm/solidrun-imx6/patches/4.1.23/0001-xbian.patch
diff --git a/target/arm/solidrun-imx6/patches/4.1.22/0002-rt.patch b/target/arm/solidrun-imx6/patches/4.1.23/0002-rt.patch
index 2eccf6072..2eccf6072 100644
--- a/target/arm/solidrun-imx6/patches/4.1.22/0002-rt.patch
+++ b/target/arm/solidrun-imx6/patches/4.1.23/0002-rt.patch
diff --git a/target/arm/systems/raspberry-pi3 b/target/arm/systems/raspberry-pi3
index 6c34586c4..858bbf720 100644
--- a/target/arm/systems/raspberry-pi3
+++ b/target/arm/systems/raspberry-pi3
@@ -14,8 +14,10 @@ config ADK_TARGET_SYSTEM_RASPBERRY_PI3
select ADK_TARGET_WITH_SMP
select ADK_TARGET_WITH_NET
select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_WITH_WIFI
select ADK_TARGET_WITH_BLOCK
select ADK_TARGET_WITH_SOUND
+ select ADK_TARGET_WITH_SDIO
select ADK_PACKAGE_BCM28XX_BOOTLOADER
select ADK_TARGET_WITH_ROOT_RW
select ADK_TARGET_KERNEL_ZIMAGE
diff --git a/target/avr32/atmel-ngw100/patches/4.1.22/0001-net-macb-improve-big-endian-CPU-support.patch b/target/avr32/atmel-ngw100/patches/4.1.23/0001-net-macb-improve-big-endian-CPU-support.patch
index 96a0a96b6..96a0a96b6 100644
--- a/target/avr32/atmel-ngw100/patches/4.1.22/0001-net-macb-improve-big-endian-CPU-support.patch
+++ b/target/avr32/atmel-ngw100/patches/4.1.23/0001-net-macb-improve-big-endian-CPU-support.patch
diff --git a/target/config/Config.in.kernelversion b/target/config/Config.in.kernelversion
index 832fdf935..0debc192b 100644
--- a/target/config/Config.in.kernelversion
+++ b/target/config/Config.in.kernelversion
@@ -21,8 +21,8 @@ config ADK_TARGET_KERNEL_VERSION_4_4_8
depends on !ADK_TARGET_BOARD_BCM28XX
select ADK_TARGET_KERNEL_VERSION_4_4
-config ADK_TARGET_KERNEL_VERSION_4_1_22
- bool "4.1.22"
+config ADK_TARGET_KERNEL_VERSION_4_1_23
+ bool "4.1.23"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_BFIN
depends on !ADK_TARGET_ARCH_H8300
diff --git a/target/cris/qemu-cris/patches/4.1.22/crisv32_ethernet_driver.patch b/target/cris/qemu-cris/patches/4.1.23/crisv32_ethernet_driver.patch
index cd098665e..cd098665e 100644
--- a/target/cris/qemu-cris/patches/4.1.22/crisv32_ethernet_driver.patch
+++ b/target/cris/qemu-cris/patches/4.1.23/crisv32_ethernet_driver.patch
diff --git a/target/linux/config/Config.in.bluetooth b/target/linux/config/Config.in.bluetooth
index 42d220302..6e59fe357 100644
--- a/target/linux/config/Config.in.bluetooth
+++ b/target/linux/config/Config.in.bluetooth
@@ -10,6 +10,9 @@ depends on ADK_TARGET_WITH_USB \
config ADK_KERNEL_BT_BREDR
bool
+config ADK_KERNEL_BT_BCM
+ tristate
+
config ADK_KERNEL_BT
tristate "Bluetooth network stack"
select ADK_KERNEL_BT_BREDR
@@ -111,6 +114,20 @@ config ADK_KERNEL_BT_HCIUART
UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card
adapter and BrainBoxes Bluetooth PC Card.
+config ADK_KERNEL_BT_HCIUART_H4
+ bool
+ depends on ADK_KERNEL_BT_HCIUART
+ default n
+
+config ADK_KERNEL_BT_HCIUART_BCM
+ tristate "Broadcom protocol support"
+ select ADK_KERNEL_BT_HCIUART
+ select ADK_KERNEL_BT_HCIUART_H4
+ select ADK_KERNEL_BT_BCM
+ help
+ The Broadcom protocol support enables Bluetooth HCI over serial
+ port interface for Broadcom Bluetooth controllers.
+
config ADK_KERNEL_BT_MRVL
tristate "Marvell driver"
select ADK_KERNEL_BT
diff --git a/target/linux/config/Config.in.wireless b/target/linux/config/Config.in.wireless
index 55fb9145f..71d97852d 100644
--- a/target/linux/config/Config.in.wireless
+++ b/target/linux/config/Config.in.wireless
@@ -124,23 +124,42 @@ depends on ADK_TARGET_WITH_CARDBUS \
|| ADK_TARGET_WITH_SDIO \
|| ADK_TARGET_GENERIC
-config ADK_KERNEL_BRCMFMAC_SDIO
+config ADK_KERNEL_BRCMFMAC
+ tristate
+
+config ADK_KERNEL_BRCMDBG
bool
-config ADK_KERNEL_BRCMFMAC
- tristate "Broadcom brcmfmac wireless driver"
+config ADK_KERNEL_BRCMFMAC_SDIO
+ tristate "Broadcom brcmfmac wireless driver (SDIO)"
select ADK_KERNEL_WIRELESS
select ADK_KERNEL_WLAN_80211
select ADK_KERNEL_CFG80211
select ADK_KERNEL_BCMA_POSSIBLE
- select ADK_KERNEL_BRCMFMAC_SDIO
select ADK_KERNEL_RFKILL
+ select ADK_KERNEL_BRCMFMAC
select ADK_PACKAGE_BRCMFMAC_FIRMWARE
depends on ADK_TARGET_WITH_SDIO
default m if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default n
help
- Driver for Broadcom FullMac wireless cards
+ Driver for Broadcom FullMac wireless cards (SDIO).
+
+config ADK_KERNEL_BRCMFMAC_USB
+ tristate "Broadcom brcmfmac wireless driver (USB)"
+ select ADK_KERNEL_WIRELESS
+ select ADK_KERNEL_WLAN_80211
+ select ADK_KERNEL_CFG80211
+ select ADK_KERNEL_BCMA_POSSIBLE
+ select ADK_KERNEL_RFKILL
+ select ADK_KERNEL_BRCMFMAC
+ select ADK_KERNEL_BRCMDBG
+ select ADK_PACKAGE_BRCMFMAC_FIRMWARE
+ depends on ADK_TARGET_WITH_USB
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3
+ default n
+ help
+ Driver for Broadcom FullMac wireless cards (USB).
config ADK_KERNEL_ATH6KL_SDIO
bool
diff --git a/target/linux/patches/4.1.22/aufs.patch b/target/linux/patches/4.1.23/aufs.patch
index 749c90989..749c90989 100644
--- a/target/linux/patches/4.1.22/aufs.patch
+++ b/target/linux/patches/4.1.23/aufs.patch
diff --git a/target/linux/patches/4.1.22/cleankernel.patch b/target/linux/patches/4.1.23/cleankernel.patch
index 59693f426..59693f426 100644
--- a/target/linux/patches/4.1.22/cleankernel.patch
+++ b/target/linux/patches/4.1.23/cleankernel.patch
diff --git a/target/linux/patches/4.1.22/cris-header.patch b/target/linux/patches/4.1.23/cris-header.patch
index 2b5a88461..2b5a88461 100644
--- a/target/linux/patches/4.1.22/cris-header.patch
+++ b/target/linux/patches/4.1.23/cris-header.patch
diff --git a/target/linux/patches/4.1.22/initramfs-nosizelimit.patch b/target/linux/patches/4.1.23/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/4.1.22/initramfs-nosizelimit.patch
+++ b/target/linux/patches/4.1.23/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/4.1.22/j2-core.patch b/target/linux/patches/4.1.23/j2-core.patch
index 38136df2c..38136df2c 100644
--- a/target/linux/patches/4.1.22/j2-core.patch
+++ b/target/linux/patches/4.1.23/j2-core.patch
diff --git a/target/linux/patches/4.1.22/mtd-rootfs.patch b/target/linux/patches/4.1.23/mtd-rootfs.patch
index 5f6d82b5c..5f6d82b5c 100644
--- a/target/linux/patches/4.1.22/mtd-rootfs.patch
+++ b/target/linux/patches/4.1.23/mtd-rootfs.patch
diff --git a/target/linux/patches/4.1.22/realtime.patch b/target/linux/patches/4.1.23/realtime.patch
index 832b82fdf..832b82fdf 100644
--- a/target/linux/patches/4.1.22/realtime.patch
+++ b/target/linux/patches/4.1.23/realtime.patch
diff --git a/target/linux/patches/4.1.22/regmap-default-on.patch b/target/linux/patches/4.1.23/regmap-default-on.patch
index 8d72224bf..8d72224bf 100644
--- a/target/linux/patches/4.1.22/regmap-default-on.patch
+++ b/target/linux/patches/4.1.23/regmap-default-on.patch
diff --git a/target/linux/patches/4.1.22/remove-warn.patch b/target/linux/patches/4.1.23/remove-warn.patch
index 1f89c710d..1f89c710d 100644
--- a/target/linux/patches/4.1.22/remove-warn.patch
+++ b/target/linux/patches/4.1.23/remove-warn.patch
diff --git a/target/linux/patches/4.1.22/startup.patch b/target/linux/patches/4.1.23/startup.patch
index d396b75e4..d396b75e4 100644
--- a/target/linux/patches/4.1.22/startup.patch
+++ b/target/linux/patches/4.1.23/startup.patch
diff --git a/target/linux/patches/4.1.22/use-gawk.patch b/target/linux/patches/4.1.23/use-gawk.patch
index 5b312589d..5b312589d 100644
--- a/target/linux/patches/4.1.22/use-gawk.patch
+++ b/target/linux/patches/4.1.23/use-gawk.patch
diff --git a/target/linux/patches/4.1.22/use-libgcc-for-sh.patch b/target/linux/patches/4.1.23/use-libgcc-for-sh.patch
index 6420219b0..6420219b0 100644
--- a/target/linux/patches/4.1.22/use-libgcc-for-sh.patch
+++ b/target/linux/patches/4.1.23/use-libgcc-for-sh.patch
diff --git a/target/m68k/qemu-m68k-mcf5208/patches/4.1.22/m68k-coldfire-fec.patch b/target/m68k/qemu-m68k-mcf5208/patches/4.1.23/m68k-coldfire-fec.patch
index 690befe8f..690befe8f 100644
--- a/target/m68k/qemu-m68k-mcf5208/patches/4.1.22/m68k-coldfire-fec.patch
+++ b/target/m68k/qemu-m68k-mcf5208/patches/4.1.23/m68k-coldfire-fec.patch
diff --git a/target/mips/ath79/patches/4.1.22/0001-openwrt-ath79.patch b/target/mips/ath79/patches/4.1.23/0001-openwrt-ath79.patch
index 4178f20cb..4178f20cb 100644
--- a/target/mips/ath79/patches/4.1.22/0001-openwrt-ath79.patch
+++ b/target/mips/ath79/patches/4.1.23/0001-openwrt-ath79.patch
diff --git a/target/or1k/patches/4.1.22/ld-or1k.patch b/target/or1k/patches/4.1.23/ld-or1k.patch
index 81c9db6c2..81c9db6c2 100644
--- a/target/or1k/patches/4.1.22/ld-or1k.patch
+++ b/target/or1k/patches/4.1.23/ld-or1k.patch