All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [meta-raspberrypi][PATCH 0/2] Support for 64bits target on raspberrypi3
@ 2016-11-20 12:46 Herve Jourdain
  2016-11-20 12:46 ` [meta-raspberrypi][PATCH 1/2] Support for 64bits target on raspberrypi3 (generic part) Herve Jourdain
  2016-11-20 12:46 ` [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7) Herve Jourdain
  0 siblings, 2 replies; 6+ messages in thread
From: Herve Jourdain @ 2016-11-20 12:46 UTC (permalink / raw
  To: yocto

This adds the support of 64bits, for raspberrypi3 only (because based on cortexa53).
It's composed of a "generic" part, which should apply to all 64bits ports on future kernels,
and of a port to Linux kernel 4.7.
The port to Linux kernel 4.7 was finished early August, initially on 4.7.0, then was moved to 4.7.2.
Since the revisions I used then seem to have vanished from the raspberrypi tree, it was ported
to the latest 4.7 "good version" (4.7.10).
There are a few things to know about the 64bits ports on raspberrypi:
* userland doesn't work. It's mostly because the binary blob in the GPU communicates with the CPU using 32bits pointers... And since 64bits is not officially supported by raspberrypi foundation, they will not modify the binary blob (until they decide it's officially supported)
* VC4 should work (but I didn't test it). Boot messages seem to show it initialized correctly.
* Some drivers selected are different than the stock 32bits drivers, which can lead to some different log messages.

It's been tested with ethernet, sdcards support, USB support, and a few others, and seemed to work fine with those.
It's not been tested with HATs.

This is mostly for people who have an interest in 64bits, and can bear the limitations.

Herve Jourdain (2):
  Support for 64bits target on raspberrypi3 (generic part)
  Support for 64bits target on raspberrypi3 (patches for supporting
    64bits on linux 4.7)

 classes/sdcard_image-rpi.bbclass                   |    2 +
 conf/machine/include/rpi-base.inc                  |   21 +
 recipes-bsp/bootfiles/rpi-config_git.bb            |    6 +
 .../0001-fix-dtbo-rules.patch                      |   19 +-
 .../0002-support-64bits.patch                      | 2080 ++++++++++++++++++++
 recipes-kernel/linux/linux-raspberrypi.inc         |    2 +
 recipes-kernel/linux/linux-raspberrypi_4.7.bb      |    2 +
 recipes-kernel/linux/linux-rpi.inc                 |   38 +-
 8 files changed, 2157 insertions(+), 13 deletions(-)
 create mode 100644 recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch

-- 
2.7.4



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [meta-raspberrypi][PATCH 1/2] Support for 64bits target on raspberrypi3 (generic part)
  2016-11-20 12:46 [meta-raspberrypi][PATCH 0/2] Support for 64bits target on raspberrypi3 Herve Jourdain
@ 2016-11-20 12:46 ` Herve Jourdain
  2016-11-20 19:38   ` Khem Raj
  2016-11-20 12:46 ` [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7) Herve Jourdain
  1 sibling, 1 reply; 6+ messages in thread
From: Herve Jourdain @ 2016-11-20 12:46 UTC (permalink / raw
  To: yocto

Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
---
 classes/sdcard_image-rpi.bbclass           |  2 ++
 conf/machine/include/rpi-base.inc          | 21 +++++++++++++++++
 recipes-bsp/bootfiles/rpi-config_git.bb    |  6 +++++
 recipes-kernel/linux/linux-raspberrypi.inc |  2 ++
 recipes-kernel/linux/linux-rpi.inc         | 38 ++++++++++++++++++++++--------
 5 files changed, 59 insertions(+), 10 deletions(-)

diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass
index 116d5e8..375f624 100644
--- a/classes/sdcard_image-rpi.bbclass
+++ b/classes/sdcard_image-rpi.bbclass
@@ -35,6 +35,8 @@ KERNEL_INITRAMFS ?= ""
 # Kernel image name
 SDIMG_KERNELIMAGE_raspberrypi  ?= "kernel.img"
 SDIMG_KERNELIMAGE_raspberrypi2 ?= "kernel7.img"
+SDIMG_KERNELIMAGE_raspberrypi3 ?= "kernel7.img"
+SDIMG_KERNELIMAGE_raspberrypi3-64 ?= "kernel8.img"
 
 # Boot partition volume id
 BOOTDD_VOLUME_ID ?= "${MACHINE}"
diff --git a/conf/machine/include/rpi-base.inc b/conf/machine/include/rpi-base.inc
index 497dd29..f6e2997 100644
--- a/conf/machine/include/rpi-base.inc
+++ b/conf/machine/include/rpi-base.inc
@@ -40,6 +40,27 @@ KERNEL_DEVICETREE ?= " \
     overlays/pi3-miniuart-bt.dtbo \
     overlays/vc4-kms-v3d.dtbo \
     "
+KERNEL_DEVICETREE_raspberrypi3-64 ?= " \
+    broadcom/bcm2837-rpi-3-b.dtb \
+    \
+    broadcom/overlays/hifiberry-amp.dtbo \
+    broadcom/overlays/hifiberry-dac.dtbo \
+    broadcom/overlays/hifiberry-dacplus.dtbo \
+    broadcom/overlays/hifiberry-digi.dtbo \
+    broadcom/overlays/i2c-rtc.dtbo \
+    broadcom/overlays/iqaudio-dac.dtbo \
+    broadcom/overlays/iqaudio-dacplus.dtbo \
+    broadcom/overlays/lirc-rpi.dtbo \
+    broadcom/overlays/pitft22.dtbo \
+    broadcom/overlays/pitft28-resistive.dtbo \
+    broadcom/overlays/pps-gpio.dtbo \
+    broadcom/overlays/rpi-ft5406.dtbo \
+    broadcom/overlays/w1-gpio.dtbo \
+    broadcom/overlays/w1-gpio-pullup.dtbo \
+    broadcom/overlays/pi3-disable-bt.dtbo \
+    broadcom/overlays/pi3-miniuart-bt.dtbo \
+    broadcom/overlays/vc4-kms-v3d.dtbo \
+    "
 KERNEL_IMAGETYPE ?= "Image"
 
 MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio"
diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb
index f610718..df87d3d 100644
--- a/recipes-bsp/bootfiles/rpi-config_git.bb
+++ b/recipes-bsp/bootfiles/rpi-config_git.bb
@@ -112,6 +112,12 @@ do_deploy() {
     fi
 }
 
+do_deploy_append_raspberrypi3-64() {
+    # Device Tree support
+    echo "# Load correct Device Tree for Aarch64" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    echo "device_tree=bcm2837-rpi-3-b.dtb" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+}
+
 addtask deploy before do_package after do_install
 do_deploy[dirs] += "${DEPLOYDIR}/bcm2835-bootfiles"
 
diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc
index 98229d9..6ae94ea 100644
--- a/recipes-kernel/linux/linux-raspberrypi.inc
+++ b/recipes-kernel/linux/linux-raspberrypi.inc
@@ -18,6 +18,8 @@ PV = "${LINUX_VERSION}+git${SRCPV}"
 # NOTE: For now we pull in the default config from the RPi kernel GIT tree.
 KERNEL_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig"
 KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig"
+KERNEL_DEFCONFIG_raspberrypi3 ?= "bcm2709_defconfig"
+KERNEL_DEFCONFIG_raspberrypi3-64 ?= "bcm2837_defconfig"
 
 # CMDLINE for raspberrypi
 CMDLINE = "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
diff --git a/recipes-kernel/linux/linux-rpi.inc b/recipes-kernel/linux/linux-rpi.inc
index 95a9530..27adf40 100644
--- a/recipes-kernel/linux/linux-rpi.inc
+++ b/recipes-kernel/linux/linux-rpi.inc
@@ -39,12 +39,15 @@ do_configure_prepend() {
     echo "" > ${B}/.config
     CONF_SED_SCRIPT=""
 
-    # oabi / eabi support
-    kernel_configure_variable AEABI y
-    if [ "${ARM_KEEP_OABI}" = "1" ] ; then
-        kernel_configure_variable OABI_COMPAT y
-    else
-        kernel_configure_variable OABI_COMPAT n
+    if [ "${ARCH}" = "arm" ]; then
+
+        # oabi / eabi support
+        kernel_configure_variable AEABI y
+        if [ "${ARM_KEEP_OABI}" = "1" ] ; then
+            kernel_configure_variable OABI_COMPAT y
+        else
+            kernel_configure_variable OABI_COMPAT n
+        fi
     fi
 
     # Set cmdline
@@ -58,7 +61,11 @@ do_configure_prepend() {
     # Newer versions of udev mandate that sysfs doesn't have deprecated entries
     if [ "${UDEV_GE_141}" = "1" ] ; then
         kernel_configure_variable SYSFS_DEPRECATED n
-        kernel_configure_variable SYSFS_DEPRECATED_V2 n
+
+        if [ "${ARCH}" = "arm" ]; then
+            kernel_configure_variable SYSFS_DEPRECATED_V2 n
+        fi
+
         kernel_configure_variable HOTPLUG y
         kernel_configure_variable UEVENT_HELPER_PATH "\"\""
         kernel_configure_variable UNIX y
@@ -77,13 +84,20 @@ do_configure_prepend() {
     if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then
         kernel_configure_variable CGROUP_SCHED y
         kernel_configure_variable CGROUPS y
-        kernel_configure_variable CGROUP_NS y
+
+        if [ "${ARCH}" = "arm" ]; then
+            kernel_configure_variable CGROUP_NS y
+        fi
+
         kernel_configure_variable CGROUP_FREEZER y
         kernel_configure_variable CGROUP_DEVICE y
         kernel_configure_variable CPUSETS y
         kernel_configure_variable PROC_PID_CPUSET y
         kernel_configure_variable CGROUP_CPUACCT y
-        kernel_configure_variable RESOURCE_COUNTERS y
+
+        if [ "${ARCH}" = "arm" ]; then
+            kernel_configure_variable RESOURCE_COUNTERS y
+        fi
     fi
 
     # root-over-nfs-over-usb-eth support. Limited, but should cover some cases
@@ -93,7 +107,11 @@ do_configure_prepend() {
         kernel_configure_variable INET y
         kernel_configure_variable IP_PNP y
         kernel_configure_variable USB_GADGET y
-        kernel_configure_variable USB_GADGET_SELECTED y
+
+        if [ "${ARCH}" = "arm" ]; then
+            kernel_configure_variable USB_GADGET_SELECTED y
+        fi
+
         kernel_configure_variable USB_ETH y
         kernel_configure_variable NFS_FS y
         kernel_configure_variable ROOT_NFS y
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7)
  2016-11-20 12:46 [meta-raspberrypi][PATCH 0/2] Support for 64bits target on raspberrypi3 Herve Jourdain
  2016-11-20 12:46 ` [meta-raspberrypi][PATCH 1/2] Support for 64bits target on raspberrypi3 (generic part) Herve Jourdain
@ 2016-11-20 12:46 ` Herve Jourdain
  2016-11-20 19:41   ` Khem Raj
  1 sibling, 1 reply; 6+ messages in thread
From: Herve Jourdain @ 2016-11-20 12:46 UTC (permalink / raw
  To: yocto

Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
---
 .../0001-fix-dtbo-rules.patch                      |   19 +-
 .../0002-support-64bits.patch                      | 2080 ++++++++++++++++++++
 recipes-kernel/linux/linux-raspberrypi_4.7.bb      |    2 +
 3 files changed, 2098 insertions(+), 3 deletions(-)
 create mode 100644 recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch

diff --git a/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch b/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
index 5113e23..96f3c32 100644
--- a/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
+++ b/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
@@ -1,7 +1,7 @@
-From 13c8784da3dbd977f64cec740eba775b6fab11c2 Mon Sep 17 00:00:00 2001
+From 13c8784da3dbd977f64cec740eba775b6fab11c2 Sat Nov 19 00:00:00 2001
 From: Herve Jourdain <herve.jourdain@neuf.fr>
-Date: Fri, 20 May 2016 16:02:23 +0800
-Subject: [yocto][meta-raspberrypi][PATCH v4 4/5] linux-raspberrypi_4.4.inc:
+Date: Sat, 19 Nov 2016 16:02:23 +0800
+Subject: [yocto][meta-raspberrypi][PATCH] linux-raspberrypi_4.7.inc:
  support for .dtbo files for dtb overlays
 
 Upstream-Status: Pending
@@ -28,6 +28,19 @@ index a2e7cf7..673c1cb 100644
  
  PHONY += dtbs dtbs_install
  
+diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
+index 648a32c..68b8147 100644
+--- a/arch/arm64/Makefile
++++ b/arch/arm64/Makefile
+@@ -103,6 +103,8 @@ zinstall install:
+ 
+ %.dtb: scripts
+ 	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
++%.dtbo: scripts
++	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
+ 
+ PHONY += dtbs dtbs_install
+ 
 diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
 index 3079c4f..6cc3766 100644
 --- a/scripts/Makefile.lib
diff --git a/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch b/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
new file mode 100644
index 0000000..681e05a
--- /dev/null
+++ b/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
@@ -0,0 +1,2080 @@
+From dbf41aef92421f5601e2122cbee921561a56ad4b Mon Sep 17 00:00:00 2001
+From: Herve Jourdain <herve.jourdain@neuf.fr>
+Date: Wed, 31 Aug 2016 19:30:33 +0800
+Subject: [PATCH] Support for 64bits (aarch64) v4.7 kernel on RaspberryPi3
+
+---
+ arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi      |   19 +
+ arch/arm/boot/dts/bcm283x.dtsi                   |    2 +
+ arch/arm64/Kconfig.platforms                     |   13 +
+ arch/arm64/boot/dts/broadcom/Makefile            |    5 +
+ arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts |   47 +
+ arch/arm64/boot/dts/broadcom/bcm2837.dtsi        |   76 ++
+ arch/arm64/boot/dts/broadcom/overlays            |    1 +
+ arch/arm64/configs/bcm2837_defconfig             | 1273 ++++++++++++++++++++++
+ arch/arm64/include/asm/dma-mapping.h             |   15 +-
+ drivers/irqchip/irq-bcm2835.c                    |   22 +
+ drivers/irqchip/irq-bcm2836.c                    |    8 +-
+ drivers/mmc/host/bcm2835-sdhost.c                |  104 ++
+ drivers/spi/spi-bcm2835.c                        |    4 +
+ drivers/tty/serial/amba-pl011.c                  |    2 +
+ drivers/video/fbdev/bcm2708_fb.c                 |    4 +
+ 15 files changed, 1592 insertions(+), 3 deletions(-)
+ create mode 100644 arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
+ create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
+ create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837.dtsi
+ create mode 120000 arch/arm64/boot/dts/broadcom/overlays
+ create mode 100644 arch/arm64/configs/bcm2837_defconfig
+
+diff --git a/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi b/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
+new file mode 100644
+index 0000000..3f0a56e
+--- /dev/null
++++ b/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
+@@ -0,0 +1,19 @@
++/ {
++	aliases {
++		ethernet = &ethernet;
++	};
++};
++
++&usb {
++	usb1@1 {
++		compatible = "usb424,9514";
++		reg = <1>;
++		#address-cells = <1>;
++		#size-cells = <0>;
++
++		ethernet: usbether@1 {
++			compatible = "usb424,ec00";
++			reg = <1>;
++		};
++	};
++};
+diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
+index 10b27b9..b982522 100644
+--- a/arch/arm/boot/dts/bcm283x.dtsi
++++ b/arch/arm/boot/dts/bcm283x.dtsi
+@@ -287,6 +287,8 @@
+ 			compatible = "brcm,bcm2835-usb";
+ 			reg = <0x7e980000 0x10000>;
+ 			interrupts = <1 9>;
++			#address-cells = <1>;
++			#size-cells = <0>;
+ 		};
+ 
+ 		v3d: v3d@7ec00000 {
+diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
+index 7ef1d05..ea88402 100644
+--- a/arch/arm64/Kconfig.platforms
++++ b/arch/arm64/Kconfig.platforms
+@@ -13,6 +13,19 @@ config ARCH_ALPINE
+ 	  This enables support for the Annapurna Labs Alpine
+ 	  Soc family.
+ 
++config ARCH_BCM2835
++	bool "Broadcom BCM2835 family"
++	select ARCH_REQUIRE_GPIOLIB
++	select CLKSRC_OF
++	select PINCTRL
++	select PINCTRL_BCM2835
++	select ARM_AMBA
++	select ARM_TIMER_SP804
++	select HAVE_ARM_ARCH_TIMER
++	help
++	  This enables support for the Broadcom BCM2837 SoC.
++	  This SoC is used in the Raspberry Pi 3 device.
++
+ config ARCH_BCM_IPROC
+ 	bool "Broadcom iProc SoC Family"
+ 	select COMMON_CLK_IPROC
+diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
+index bec1f8b..05faf2a 100644
+--- a/arch/arm64/boot/dts/broadcom/Makefile
++++ b/arch/arm64/boot/dts/broadcom/Makefile
+@@ -1,6 +1,11 @@
++dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb
+ dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb
+ dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb
+ 
++ifeq ($(CONFIG_ARCH_BCM2835),y)
++    dts-dirs += overlays
++endif
++
+ always		:= $(dtb-y)
+ subdir-y	:= $(dts-dirs)
+ clean-files	:= *.dtb
+diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
+new file mode 100644
+index 0000000..e991ac1
+--- /dev/null
++++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
+@@ -0,0 +1,47 @@
++/dts-v1/;
++#include "bcm2837.dtsi"
++#include "../../../../arm/boot/dts/bcm2835-rpi.dtsi"
++#include "../../../../arm/boot/dts/bcm283x-rpi-smsc9514.dtsi"
++
++/ {
++	compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
++	model = "Raspberry Pi 3 Model B";
++
++	chosen {
++		bootargs = "";
++	};
++
++	memory {
++		reg = <0 0x40000000>;
++	};
++
++	leds {
++		act {
++			gpios = <&gpio 47 0>;
++			linux,default-trigger = "mmc0";
++		};
++
++		pwr {
++			label = "PWR";
++			gpios = <&gpio 35 0>;
++			default-state = "keep";
++			linux,default-trigger = "default-on";
++		};
++	};
++};
++
++&uart1 {
++	status = "okay";
++};
++
++&i2c0 {
++	clock-frequency = <100000>;
++};
++
++&i2c1 {
++	clock-frequency = <100000>;
++};
++
++&i2c2 {
++	clock-frequency = <100000>;
++};
+diff --git a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
+new file mode 100644
+index 0000000..f2a31d0
+--- /dev/null
++++ b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
+@@ -0,0 +1,76 @@
++#include "../../../../arm/boot/dts/bcm283x.dtsi"
++
++/ {
++	compatible = "brcm,bcm2836";
++
++	soc {
++		ranges = <0x7e000000 0x3f000000 0x1000000>,
++			 <0x40000000 0x40000000 0x00001000>;
++		dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
++
++		local_intc: local_intc {
++			compatible = "brcm,bcm2836-l1-intc";
++			reg = <0x40000000 0x100>;
++			interrupt-controller;
++			#interrupt-cells = <1>;
++			interrupt-parent = <&local_intc>;
++		};
++	};
++
++	timer {
++		compatible = "arm,armv7-timer";
++		interrupt-parent = <&local_intc>;
++		interrupts = <0>, // PHYS_SECURE_PPI
++			     <1>, // PHYS_NONSECURE_PPI
++			     <3>, // VIRT_PPI
++			     <2>; // HYP_PPI
++		always-on;
++	};
++
++	cpus: cpus {
++		#address-cells = <1>;
++		#size-cells = <0>;
++
++		cpu0: cpu@0 {
++			device_type = "cpu";
++			compatible = "arm,cortex-a53";
++			reg = <0>;
++			enable-method = "spin-table";
++			cpu-release-addr = <0x0 0x000000d8>;
++		};
++
++		cpu1: cpu@1 {
++			device_type = "cpu";
++			compatible = "arm,cortex-a53";
++			reg = <1>;
++			enable-method = "spin-table";
++			cpu-release-addr = <0x0 0x000000e0>;
++		};
++
++		cpu2: cpu@2 {
++			device_type = "cpu";
++			compatible = "arm,cortex-a53";
++			reg = <2>;
++			enable-method = "spin-table";
++			cpu-release-addr = <0x0 0x000000e8>;
++		};
++
++		cpu3: cpu@3 {
++			device_type = "cpu";
++			compatible = "arm,cortex-a53";
++			reg = <3>;
++			enable-method = "spin-table";
++			cpu-release-addr = <0x0 0x000000f0>;
++		};
++	};
++};
++
++/* Make the BCM2835-style global interrupt controller be a child of the
++ * CPU-local interrupt controller.
++ */
++&intc {
++	compatible = "brcm,bcm2836-armctrl-ic";
++	reg = <0x7e00b200 0x200>;
++	interrupt-parent = <&local_intc>;
++	interrupts = <8>;
++};
+diff --git a/arch/arm64/boot/dts/broadcom/overlays b/arch/arm64/boot/dts/broadcom/overlays
+new file mode 120000
+index 0000000..d33085c
+--- /dev/null
++++ b/arch/arm64/boot/dts/broadcom/overlays
+@@ -0,0 +1 @@
++../../../../arm/boot/dts/overlays/
+\ No newline at end of file
+diff --git a/arch/arm64/configs/bcm2837_defconfig b/arch/arm64/configs/bcm2837_defconfig
+new file mode 100644
+index 0000000..c295da8
+--- /dev/null
++++ b/arch/arm64/configs/bcm2837_defconfig
+@@ -0,0 +1,1273 @@
++CONFIG_LOCALVERSION="-v8"
++# CONFIG_LOCALVERSION_AUTO is not set
++CONFIG_SYSVIPC=y
++CONFIG_POSIX_MQUEUE=y
++CONFIG_NO_HZ=y
++CONFIG_HIGH_RES_TIMERS=y
++CONFIG_BSD_PROCESS_ACCT=y
++CONFIG_BSD_PROCESS_ACCT_V3=y
++CONFIG_TASKSTATS=y
++CONFIG_TASK_DELAY_ACCT=y
++CONFIG_TASK_XACCT=y
++CONFIG_TASK_IO_ACCOUNTING=y
++CONFIG_IKCONFIG=m
++CONFIG_IKCONFIG_PROC=y
++CONFIG_MEMCG=y
++CONFIG_BLK_CGROUP=y
++CONFIG_CGROUP_FREEZER=y
++CONFIG_CPUSETS=y
++CONFIG_CGROUP_DEVICE=y
++CONFIG_CGROUP_CPUACCT=y
++CONFIG_NAMESPACES=y
++CONFIG_USER_NS=y
++CONFIG_SCHED_AUTOGROUP=y
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_EMBEDDED=y
++# CONFIG_COMPAT_BRK is not set
++CONFIG_PROFILING=y
++CONFIG_JUMP_LABEL=y
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++CONFIG_MODVERSIONS=y
++CONFIG_MODULE_SRCVERSION_ALL=y
++CONFIG_TRIM_UNUSED_KSYMS=y
++CONFIG_BLK_DEV_THROTTLING=y
++CONFIG_PARTITION_ADVANCED=y
++CONFIG_MAC_PARTITION=y
++CONFIG_CFQ_GROUP_IOSCHED=y
++CONFIG_ARCH_BCM2835=y
++CONFIG_NR_CPUS=4
++CONFIG_HOTPLUG_CPU=y
++CONFIG_PREEMPT_VOLUNTARY=y
++CONFIG_HZ_100=y
++CONFIG_CLEANCACHE=y
++CONFIG_FRONTSWAP=y
++CONFIG_CMA=y
++CONFIG_ZSMALLOC=m
++CONFIG_PGTABLE_MAPPING=y
++CONFIG_SECCOMP=y
++CONFIG_CMDLINE="console=ttyS0,115200 kgdboc=ttyS0,115200 root=/dev/mmcblk0p2 rootfs=ext4 rootwait"
++# CONFIG_EFI is not set
++CONFIG_BINFMT_MISC=m
++CONFIG_COMPAT=y
++# CONFIG_SUSPEND is not set
++CONFIG_PM=y
++CONFIG_CPU_FREQ=y
++CONFIG_CPU_FREQ_STAT=m
++CONFIG_CPU_FREQ_STAT_DETAILS=y
++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
++CONFIG_CPU_FREQ_GOV_USERSPACE=y
++CONFIG_CPU_FREQ_GOV_ONDEMAND=y
++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
++CONFIG_NET=y
++CONFIG_PACKET=y
++CONFIG_UNIX=y
++CONFIG_XFRM_USER=y
++CONFIG_NET_KEY=m
++CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++CONFIG_IP_ADVANCED_ROUTER=y
++CONFIG_IP_MULTIPLE_TABLES=y
++CONFIG_IP_ROUTE_MULTIPATH=y
++CONFIG_IP_ROUTE_VERBOSE=y
++CONFIG_IP_PNP=y
++CONFIG_IP_PNP_DHCP=y
++CONFIG_IP_PNP_RARP=y
++CONFIG_NET_IPIP=m
++CONFIG_NET_IPGRE_DEMUX=m
++CONFIG_NET_IPGRE=m
++CONFIG_IP_MROUTE=y
++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
++CONFIG_IP_PIMSM_V1=y
++CONFIG_IP_PIMSM_V2=y
++CONFIG_SYN_COOKIES=y
++CONFIG_INET_AH=m
++CONFIG_INET_ESP=m
++CONFIG_INET_IPCOMP=m
++CONFIG_INET_XFRM_MODE_TRANSPORT=m
++CONFIG_INET_XFRM_MODE_TUNNEL=m
++CONFIG_INET_XFRM_MODE_BEET=m
++CONFIG_INET_DIAG=m
++CONFIG_IPV6=m
++CONFIG_IPV6_ROUTER_PREF=y
++CONFIG_INET6_AH=m
++CONFIG_INET6_ESP=m
++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
++CONFIG_NETFILTER=y
++CONFIG_NF_CONNTRACK=m
++CONFIG_NF_CONNTRACK_EVENTS=y
++CONFIG_NF_CONNTRACK_TIMESTAMP=y
++CONFIG_NF_CT_PROTO_DCCP=m
++CONFIG_NF_CT_PROTO_UDPLITE=m
++CONFIG_NF_CONNTRACK_AMANDA=m
++CONFIG_NF_CONNTRACK_FTP=m
++CONFIG_NF_CONNTRACK_H323=m
++CONFIG_NF_CONNTRACK_IRC=m
++CONFIG_NF_CONNTRACK_NETBIOS_NS=m
++CONFIG_NF_CONNTRACK_SNMP=m
++CONFIG_NF_CONNTRACK_PPTP=m
++CONFIG_NF_CONNTRACK_SANE=m
++CONFIG_NF_CONNTRACK_SIP=m
++CONFIG_NF_CONNTRACK_TFTP=m
++CONFIG_NF_CT_NETLINK=m
++CONFIG_NETFILTER_XT_SET=m
++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
++CONFIG_NETFILTER_XT_TARGET_DSCP=m
++CONFIG_NETFILTER_XT_TARGET_HMARK=m
++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
++CONFIG_NETFILTER_XT_TARGET_LED=m
++CONFIG_NETFILTER_XT_TARGET_LOG=m
++CONFIG_NETFILTER_XT_TARGET_MARK=m
++CONFIG_NETFILTER_XT_TARGET_NFLOG=m
++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
++CONFIG_NETFILTER_XT_TARGET_TEE=m
++CONFIG_NETFILTER_XT_TARGET_TPROXY=m
++CONFIG_NETFILTER_XT_TARGET_TRACE=m
++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
++CONFIG_NETFILTER_XT_MATCH_BPF=m
++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
++CONFIG_NETFILTER_XT_MATCH_CPU=m
++CONFIG_NETFILTER_XT_MATCH_DCCP=m
++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
++CONFIG_NETFILTER_XT_MATCH_DSCP=m
++CONFIG_NETFILTER_XT_MATCH_ESP=m
++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
++CONFIG_NETFILTER_XT_MATCH_HELPER=m
++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
++CONFIG_NETFILTER_XT_MATCH_IPVS=m
++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
++CONFIG_NETFILTER_XT_MATCH_MAC=m
++CONFIG_NETFILTER_XT_MATCH_MARK=m
++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
++CONFIG_NETFILTER_XT_MATCH_NFACCT=m
++CONFIG_NETFILTER_XT_MATCH_OSF=m
++CONFIG_NETFILTER_XT_MATCH_OWNER=m
++CONFIG_NETFILTER_XT_MATCH_POLICY=m
++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
++CONFIG_NETFILTER_XT_MATCH_RATEEST=m
++CONFIG_NETFILTER_XT_MATCH_REALM=m
++CONFIG_NETFILTER_XT_MATCH_RECENT=m
++CONFIG_NETFILTER_XT_MATCH_SOCKET=m
++CONFIG_NETFILTER_XT_MATCH_STATE=m
++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
++CONFIG_NETFILTER_XT_MATCH_STRING=m
++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
++CONFIG_NETFILTER_XT_MATCH_TIME=m
++CONFIG_NETFILTER_XT_MATCH_U32=m
++CONFIG_IP_SET=m
++CONFIG_IP_SET_BITMAP_IP=m
++CONFIG_IP_SET_BITMAP_IPMAC=m
++CONFIG_IP_SET_BITMAP_PORT=m
++CONFIG_IP_SET_HASH_IP=m
++CONFIG_IP_SET_HASH_IPPORT=m
++CONFIG_IP_SET_HASH_IPPORTIP=m
++CONFIG_IP_SET_HASH_IPPORTNET=m
++CONFIG_IP_SET_HASH_NET=m
++CONFIG_IP_SET_HASH_NETPORT=m
++CONFIG_IP_SET_HASH_NETIFACE=m
++CONFIG_IP_SET_LIST_SET=m
++CONFIG_IP_VS=m
++CONFIG_IP_VS_PROTO_TCP=y
++CONFIG_IP_VS_PROTO_UDP=y
++CONFIG_IP_VS_PROTO_ESP=y
++CONFIG_IP_VS_PROTO_AH=y
++CONFIG_IP_VS_PROTO_SCTP=y
++CONFIG_IP_VS_RR=m
++CONFIG_IP_VS_WRR=m
++CONFIG_IP_VS_LC=m
++CONFIG_IP_VS_WLC=m
++CONFIG_IP_VS_LBLC=m
++CONFIG_IP_VS_LBLCR=m
++CONFIG_IP_VS_DH=m
++CONFIG_IP_VS_SH=m
++CONFIG_IP_VS_SED=m
++CONFIG_IP_VS_NQ=m
++CONFIG_IP_VS_FTP=m
++CONFIG_IP_VS_PE_SIP=m
++CONFIG_NF_CONNTRACK_IPV4=m
++CONFIG_IP_NF_IPTABLES=m
++CONFIG_IP_NF_MATCH_AH=m
++CONFIG_IP_NF_MATCH_ECN=m
++CONFIG_IP_NF_MATCH_RPFILTER=m
++CONFIG_IP_NF_MATCH_TTL=m
++CONFIG_IP_NF_FILTER=m
++CONFIG_IP_NF_TARGET_REJECT=m
++CONFIG_IP_NF_NAT=m
++CONFIG_IP_NF_TARGET_MASQUERADE=m
++CONFIG_IP_NF_TARGET_NETMAP=m
++CONFIG_IP_NF_TARGET_REDIRECT=m
++CONFIG_IP_NF_MANGLE=m
++CONFIG_IP_NF_TARGET_CLUSTERIP=m
++CONFIG_IP_NF_TARGET_ECN=m
++CONFIG_IP_NF_TARGET_TTL=m
++CONFIG_IP_NF_RAW=m
++CONFIG_IP_NF_ARPTABLES=m
++CONFIG_IP_NF_ARPFILTER=m
++CONFIG_IP_NF_ARP_MANGLE=m
++CONFIG_NF_CONNTRACK_IPV6=m
++CONFIG_IP6_NF_IPTABLES=m
++CONFIG_IP6_NF_MATCH_AH=m
++CONFIG_IP6_NF_MATCH_EUI64=m
++CONFIG_IP6_NF_MATCH_FRAG=m
++CONFIG_IP6_NF_MATCH_OPTS=m
++CONFIG_IP6_NF_MATCH_HL=m
++CONFIG_IP6_NF_MATCH_IPV6HEADER=m
++CONFIG_IP6_NF_MATCH_MH=m
++CONFIG_IP6_NF_MATCH_RPFILTER=m
++CONFIG_IP6_NF_MATCH_RT=m
++CONFIG_IP6_NF_TARGET_HL=m
++CONFIG_IP6_NF_FILTER=m
++CONFIG_IP6_NF_TARGET_REJECT=m
++CONFIG_IP6_NF_MANGLE=m
++CONFIG_IP6_NF_RAW=m
++CONFIG_IP6_NF_NAT=m
++CONFIG_IP6_NF_TARGET_MASQUERADE=m
++CONFIG_IP6_NF_TARGET_NPT=m
++CONFIG_BRIDGE_NF_EBTABLES=m
++CONFIG_BRIDGE_EBT_BROUTE=m
++CONFIG_BRIDGE_EBT_T_FILTER=m
++CONFIG_BRIDGE_EBT_T_NAT=m
++CONFIG_BRIDGE_EBT_802_3=m
++CONFIG_BRIDGE_EBT_AMONG=m
++CONFIG_BRIDGE_EBT_ARP=m
++CONFIG_BRIDGE_EBT_IP=m
++CONFIG_BRIDGE_EBT_IP6=m
++CONFIG_BRIDGE_EBT_LIMIT=m
++CONFIG_BRIDGE_EBT_MARK=m
++CONFIG_BRIDGE_EBT_PKTTYPE=m
++CONFIG_BRIDGE_EBT_STP=m
++CONFIG_BRIDGE_EBT_VLAN=m
++CONFIG_BRIDGE_EBT_ARPREPLY=m
++CONFIG_BRIDGE_EBT_DNAT=m
++CONFIG_BRIDGE_EBT_MARK_T=m
++CONFIG_BRIDGE_EBT_REDIRECT=m
++CONFIG_BRIDGE_EBT_SNAT=m
++CONFIG_BRIDGE_EBT_LOG=m
++CONFIG_BRIDGE_EBT_NFLOG=m
++CONFIG_SCTP_COOKIE_HMAC_SHA1=y
++CONFIG_ATM=m
++CONFIG_L2TP=m
++CONFIG_L2TP_V3=y
++CONFIG_L2TP_IP=m
++CONFIG_L2TP_ETH=m
++CONFIG_BRIDGE=m
++CONFIG_VLAN_8021Q=m
++CONFIG_VLAN_8021Q_GVRP=y
++CONFIG_ATALK=m
++CONFIG_6LOWPAN=m
++CONFIG_IEEE802154=m
++CONFIG_IEEE802154_6LOWPAN=m
++CONFIG_MAC802154=m
++CONFIG_NET_SCHED=y
++CONFIG_NET_SCH_CBQ=m
++CONFIG_NET_SCH_HTB=m
++CONFIG_NET_SCH_HFSC=m
++CONFIG_NET_SCH_PRIO=m
++CONFIG_NET_SCH_MULTIQ=m
++CONFIG_NET_SCH_RED=m
++CONFIG_NET_SCH_SFB=m
++CONFIG_NET_SCH_SFQ=m
++CONFIG_NET_SCH_TEQL=m
++CONFIG_NET_SCH_TBF=m
++CONFIG_NET_SCH_GRED=m
++CONFIG_NET_SCH_DSMARK=m
++CONFIG_NET_SCH_NETEM=m
++CONFIG_NET_SCH_DRR=m
++CONFIG_NET_SCH_MQPRIO=m
++CONFIG_NET_SCH_CHOKE=m
++CONFIG_NET_SCH_QFQ=m
++CONFIG_NET_SCH_CODEL=m
++CONFIG_NET_SCH_FQ_CODEL=m
++CONFIG_NET_SCH_INGRESS=m
++CONFIG_NET_SCH_PLUG=m
++CONFIG_NET_CLS_BASIC=m
++CONFIG_NET_CLS_TCINDEX=m
++CONFIG_NET_CLS_ROUTE4=m
++CONFIG_NET_CLS_FW=m
++CONFIG_NET_CLS_U32=m
++CONFIG_CLS_U32_MARK=y
++CONFIG_NET_CLS_RSVP=m
++CONFIG_NET_CLS_RSVP6=m
++CONFIG_NET_CLS_FLOW=m
++CONFIG_NET_CLS_CGROUP=m
++CONFIG_NET_EMATCH=y
++CONFIG_NET_EMATCH_CMP=m
++CONFIG_NET_EMATCH_NBYTE=m
++CONFIG_NET_EMATCH_U32=m
++CONFIG_NET_EMATCH_META=m
++CONFIG_NET_EMATCH_TEXT=m
++CONFIG_NET_EMATCH_IPSET=m
++CONFIG_NET_CLS_ACT=y
++CONFIG_NET_ACT_POLICE=m
++CONFIG_NET_ACT_GACT=m
++CONFIG_GACT_PROB=y
++CONFIG_NET_ACT_MIRRED=m
++CONFIG_NET_ACT_IPT=m
++CONFIG_NET_ACT_NAT=m
++CONFIG_NET_ACT_PEDIT=m
++CONFIG_NET_ACT_SIMP=m
++CONFIG_NET_ACT_SKBEDIT=m
++CONFIG_NET_ACT_CSUM=m
++CONFIG_BATMAN_ADV=m
++CONFIG_OPENVSWITCH=m
++CONFIG_NET_PKTGEN=m
++CONFIG_HAMRADIO=y
++CONFIG_AX25=m
++CONFIG_NETROM=m
++CONFIG_ROSE=m
++CONFIG_MKISS=m
++CONFIG_6PACK=m
++CONFIG_BPQETHER=m
++CONFIG_BAYCOM_SER_FDX=m
++CONFIG_BAYCOM_SER_HDX=m
++CONFIG_YAM=m
++CONFIG_CAN=m
++CONFIG_CAN_VCAN=m
++CONFIG_CAN_MCP251X=m
++CONFIG_IRDA=m
++CONFIG_IRLAN=m
++CONFIG_IRNET=m
++CONFIG_IRCOMM=m
++CONFIG_IRDA_ULTRA=y
++CONFIG_IRDA_CACHE_LAST_LSAP=y
++CONFIG_IRDA_FAST_RR=y
++CONFIG_IRTTY_SIR=m
++CONFIG_KINGSUN_DONGLE=m
++CONFIG_KSDAZZLE_DONGLE=m
++CONFIG_KS959_DONGLE=m
++CONFIG_USB_IRDA=m
++CONFIG_SIGMATEL_FIR=m
++CONFIG_MCS_FIR=m
++CONFIG_BT=m
++CONFIG_BT_RFCOMM=m
++CONFIG_BT_RFCOMM_TTY=y
++CONFIG_BT_BNEP=m
++CONFIG_BT_BNEP_MC_FILTER=y
++CONFIG_BT_BNEP_PROTO_FILTER=y
++CONFIG_BT_HIDP=m
++CONFIG_BT_6LOWPAN=m
++CONFIG_BT_HCIBTUSB=m
++CONFIG_BT_HCIUART=m
++CONFIG_BT_HCIUART_3WIRE=y
++CONFIG_BT_HCIUART_BCM=y
++CONFIG_BT_HCIBCM203X=m
++CONFIG_BT_HCIBPA10X=m
++CONFIG_BT_HCIBFUSB=m
++CONFIG_BT_HCIVHCI=m
++CONFIG_BT_MRVL=m
++CONFIG_BT_MRVL_SDIO=m
++CONFIG_BT_ATH3K=m
++CONFIG_BT_WILINK=m
++CONFIG_CFG80211_WEXT=y
++CONFIG_MAC80211=m
++CONFIG_MAC80211_MESH=y
++CONFIG_WIMAX=m
++CONFIG_RFKILL=m
++CONFIG_RFKILL_INPUT=y
++CONFIG_NET_9P=m
++CONFIG_NFC=m
++CONFIG_DEVTMPFS=y
++CONFIG_DEVTMPFS_MOUNT=y
++CONFIG_DMA_CMA=y
++CONFIG_MTD=m
++CONFIG_MTD_BLOCK=m
++CONFIG_MTD_NAND=m
++CONFIG_MTD_UBI=m
++CONFIG_OF_CONFIGFS=y
++CONFIG_ZRAM=m
++CONFIG_ZRAM_LZ4_COMPRESS=y
++CONFIG_BLK_DEV_LOOP=y
++CONFIG_BLK_DEV_CRYPTOLOOP=m
++CONFIG_BLK_DEV_DRBD=m
++CONFIG_BLK_DEV_NBD=m
++CONFIG_BLK_DEV_RAM=y
++CONFIG_CDROM_PKTCDVD=m
++CONFIG_ATA_OVER_ETH=m
++CONFIG_EEPROM_AT24=m
++CONFIG_TI_ST=m
++# CONFIG_BCM2708_VCHIQ is not set
++CONFIG_SCSI=y
++# CONFIG_SCSI_PROC_FS is not set
++CONFIG_BLK_DEV_SD=y
++CONFIG_CHR_DEV_ST=m
++CONFIG_CHR_DEV_OSST=m
++CONFIG_BLK_DEV_SR=m
++CONFIG_CHR_DEV_SG=m
++CONFIG_SCSI_ISCSI_ATTRS=y
++CONFIG_ISCSI_TCP=m
++CONFIG_ISCSI_BOOT_SYSFS=m
++CONFIG_MD=y
++CONFIG_MD_LINEAR=m
++CONFIG_MD_RAID0=m
++CONFIG_BLK_DEV_DM=m
++CONFIG_DM_CRYPT=m
++CONFIG_DM_SNAPSHOT=m
++CONFIG_DM_THIN_PROVISIONING=m
++CONFIG_DM_MIRROR=m
++CONFIG_DM_LOG_USERSPACE=m
++CONFIG_DM_RAID=m
++CONFIG_DM_ZERO=m
++CONFIG_DM_DELAY=m
++CONFIG_NETDEVICES=y
++CONFIG_BONDING=m
++CONFIG_DUMMY=m
++CONFIG_IFB=m
++CONFIG_MACVLAN=m
++CONFIG_NETCONSOLE=m
++CONFIG_TUN=m
++CONFIG_VETH=m
++# CONFIG_NET_VENDOR_AMD is not set
++CONFIG_ENC28J60=m
++CONFIG_QCA7000=m
++CONFIG_MDIO_BITBANG=m
++CONFIG_PPP=m
++CONFIG_PPP_BSDCOMP=m
++CONFIG_PPP_DEFLATE=m
++CONFIG_PPP_FILTER=y
++CONFIG_PPP_MPPE=m
++CONFIG_PPP_MULTILINK=y
++CONFIG_PPPOATM=m
++CONFIG_PPPOE=m
++CONFIG_PPPOL2TP=m
++CONFIG_PPP_ASYNC=m
++CONFIG_PPP_SYNC_TTY=m
++CONFIG_SLIP=m
++CONFIG_SLIP_COMPRESSED=y
++CONFIG_SLIP_SMART=y
++CONFIG_USB_CATC=m
++CONFIG_USB_KAWETH=m
++CONFIG_USB_PEGASUS=m
++CONFIG_USB_RTL8150=m
++CONFIG_USB_RTL8152=m
++CONFIG_USB_USBNET=y
++CONFIG_USB_NET_AX8817X=m
++CONFIG_USB_NET_AX88179_178A=m
++CONFIG_USB_NET_CDCETHER=m
++CONFIG_USB_NET_CDC_EEM=m
++CONFIG_USB_NET_CDC_NCM=m
++CONFIG_USB_NET_HUAWEI_CDC_NCM=m
++CONFIG_USB_NET_CDC_MBIM=m
++CONFIG_USB_NET_DM9601=m
++CONFIG_USB_NET_SR9700=m
++CONFIG_USB_NET_SR9800=m
++CONFIG_USB_NET_SMSC75XX=m
++CONFIG_USB_NET_SMSC95XX=y
++CONFIG_USB_NET_GL620A=m
++CONFIG_USB_NET_NET1080=m
++CONFIG_USB_NET_PLUSB=m
++CONFIG_USB_NET_MCS7830=m
++CONFIG_USB_NET_CDC_SUBSET=m
++CONFIG_USB_ALI_M5632=y
++CONFIG_USB_AN2720=y
++CONFIG_USB_EPSON2888=y
++CONFIG_USB_KC2190=y
++CONFIG_USB_NET_ZAURUS=m
++CONFIG_USB_NET_CX82310_ETH=m
++CONFIG_USB_NET_KALMIA=m
++CONFIG_USB_NET_QMI_WWAN=m
++CONFIG_USB_HSO=m
++CONFIG_USB_NET_INT51X1=m
++CONFIG_USB_IPHETH=m
++CONFIG_USB_SIERRA_NET=m
++CONFIG_USB_VL600=m
++CONFIG_ATH9K=m
++CONFIG_ATH9K_HTC=m
++CONFIG_CARL9170=m
++CONFIG_ATH6KL=m
++CONFIG_ATH6KL_USB=m
++CONFIG_AR5523=m
++CONFIG_AT76C50X_USB=m
++CONFIG_B43=m
++# CONFIG_B43_PHY_N is not set
++CONFIG_B43LEGACY=m
++CONFIG_BRCMFMAC=m
++CONFIG_BRCMFMAC_USB=y
++CONFIG_HOSTAP=m
++CONFIG_P54_COMMON=m
++CONFIG_P54_USB=m
++CONFIG_LIBERTAS=m
++CONFIG_LIBERTAS_USB=m
++CONFIG_LIBERTAS_SDIO=m
++CONFIG_LIBERTAS_THINFIRM=m
++CONFIG_LIBERTAS_THINFIRM_USB=m
++CONFIG_MWIFIEX=m
++CONFIG_MWIFIEX_SDIO=m
++CONFIG_MT7601U=m
++CONFIG_RT2X00=m
++CONFIG_RT2500USB=m
++CONFIG_RT73USB=m
++CONFIG_RT2800USB=m
++CONFIG_RT2800USB_RT3573=y
++CONFIG_RT2800USB_RT53XX=y
++CONFIG_RT2800USB_RT55XX=y
++CONFIG_RT2800USB_UNKNOWN=y
++CONFIG_RTL8187=m
++CONFIG_USB_ZD1201=m
++CONFIG_ZD1211RW=m
++CONFIG_MAC80211_HWSIM=m
++CONFIG_USB_NET_RNDIS_WLAN=m
++CONFIG_WIMAX_I2400M_USB=m
++CONFIG_IEEE802154_AT86RF230=m
++CONFIG_IEEE802154_MRF24J40=m
++CONFIG_IEEE802154_CC2520=m
++CONFIG_INPUT_POLLDEV=m
++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
++CONFIG_INPUT_JOYDEV=m
++CONFIG_INPUT_EVDEV=m
++# CONFIG_KEYBOARD_ATKBD is not set
++CONFIG_KEYBOARD_GPIO=m
++# CONFIG_INPUT_MOUSE is not set
++CONFIG_INPUT_JOYSTICK=y
++CONFIG_JOYSTICK_IFORCE=m
++CONFIG_JOYSTICK_IFORCE_USB=y
++CONFIG_JOYSTICK_XPAD=m
++CONFIG_JOYSTICK_XPAD_FF=y
++CONFIG_JOYSTICK_XPAD_LEDS=y
++CONFIG_JOYSTICK_RPISENSE=m
++CONFIG_INPUT_TOUCHSCREEN=y
++CONFIG_TOUCHSCREEN_ADS7846=m
++CONFIG_TOUCHSCREEN_EGALAX=m
++CONFIG_TOUCHSCREEN_FT6236=m
++CONFIG_TOUCHSCREEN_RPI_FT5406=m
++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
++CONFIG_TOUCHSCREEN_STMPE=m
++CONFIG_INPUT_MISC=y
++CONFIG_INPUT_AD714X=m
++CONFIG_INPUT_ATI_REMOTE2=m
++CONFIG_INPUT_KEYSPAN_REMOTE=m
++CONFIG_INPUT_POWERMATE=m
++CONFIG_INPUT_YEALINK=m
++CONFIG_INPUT_CM109=m
++CONFIG_INPUT_UINPUT=m
++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
++CONFIG_INPUT_ADXL34X=m
++CONFIG_INPUT_CMA3000=m
++CONFIG_SERIO=m
++CONFIG_SERIO_RAW=m
++CONFIG_GAMEPORT=m
++CONFIG_GAMEPORT_NS558=m
++CONFIG_GAMEPORT_L4=m
++# CONFIG_LEGACY_PTYS is not set
++# CONFIG_DEVKMEM is not set
++CONFIG_SERIAL_8250=y
++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
++CONFIG_SERIAL_8250_CONSOLE=y
++# CONFIG_SERIAL_8250_DMA is not set
++CONFIG_SERIAL_8250_NR_UARTS=1
++CONFIG_SERIAL_8250_RUNTIME_UARTS=1
++CONFIG_SERIAL_8250_EXTENDED=y
++CONFIG_SERIAL_8250_SHARE_IRQ=y
++CONFIG_SERIAL_8250_BCM2835AUX=y
++CONFIG_SERIAL_OF_PLATFORM=y
++CONFIG_SERIAL_AMBA_PL011=y
++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
++CONFIG_TTY_PRINTK=y
++CONFIG_HW_RANDOM=y
++CONFIG_RAW_DRIVER=y
++CONFIG_I2C=y
++CONFIG_I2C_CHARDEV=m
++CONFIG_I2C_MUX_PCA954x=m
++CONFIG_I2C_BCM2835=m
++CONFIG_I2C_GPIO=m
++CONFIG_SPI=y
++CONFIG_SPI_BCM2835=m
++CONFIG_SPI_BCM2835AUX=m
++CONFIG_SPI_SPIDEV=y
++CONFIG_PPS=m
++CONFIG_PPS_CLIENT_LDISC=m
++CONFIG_PPS_CLIENT_GPIO=m
++CONFIG_GPIO_SYSFS=y
++CONFIG_GPIO_BCM_VIRT=y
++CONFIG_GPIO_ARIZONA=m
++CONFIG_GPIO_STMPE=y
++CONFIG_GPIO_MCP23S08=m
++CONFIG_W1=m
++CONFIG_W1_MASTER_DS2490=m
++CONFIG_W1_MASTER_DS2482=m
++CONFIG_W1_MASTER_DS1WM=m
++CONFIG_W1_MASTER_GPIO=m
++CONFIG_W1_SLAVE_THERM=m
++CONFIG_W1_SLAVE_SMEM=m
++CONFIG_W1_SLAVE_DS2408=m
++CONFIG_W1_SLAVE_DS2413=m
++CONFIG_W1_SLAVE_DS2406=m
++CONFIG_W1_SLAVE_DS2423=m
++CONFIG_W1_SLAVE_DS2431=m
++CONFIG_W1_SLAVE_DS2433=m
++CONFIG_W1_SLAVE_DS2760=m
++CONFIG_W1_SLAVE_DS2780=m
++CONFIG_W1_SLAVE_DS2781=m
++CONFIG_W1_SLAVE_DS28E04=m
++CONFIG_W1_SLAVE_BQ27000=m
++CONFIG_BATTERY_DS2760=m
++CONFIG_POWER_RESET_GPIO=y
++CONFIG_HWMON=m
++CONFIG_SENSORS_SHT21=m
++CONFIG_SENSORS_SHTC1=m
++CONFIG_THERMAL=y
++CONFIG_THERMAL_BCM2835=y
++CONFIG_WATCHDOG=y
++CONFIG_BCM2835_WDT=m
++CONFIG_MFD_STMPE=y
++CONFIG_STMPE_SPI=y
++CONFIG_MFD_SYSCON=y
++CONFIG_MFD_ARIZONA_I2C=m
++CONFIG_MFD_ARIZONA_SPI=m
++CONFIG_MFD_WM5102=y
++CONFIG_MEDIA_SUPPORT=m
++CONFIG_MEDIA_CAMERA_SUPPORT=y
++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
++CONFIG_MEDIA_RADIO_SUPPORT=y
++CONFIG_MEDIA_RC_SUPPORT=y
++CONFIG_MEDIA_CONTROLLER=y
++CONFIG_LIRC=m
++CONFIG_RC_DEVICES=y
++CONFIG_RC_ATI_REMOTE=m
++CONFIG_IR_IMON=m
++CONFIG_IR_MCEUSB=m
++CONFIG_IR_REDRAT3=m
++CONFIG_IR_STREAMZAP=m
++CONFIG_IR_IGUANA=m
++CONFIG_IR_TTUSBIR=m
++CONFIG_RC_LOOPBACK=m
++CONFIG_IR_GPIO_CIR=m
++CONFIG_MEDIA_USB_SUPPORT=y
++CONFIG_USB_VIDEO_CLASS=m
++CONFIG_USB_M5602=m
++CONFIG_USB_STV06XX=m
++CONFIG_USB_GL860=m
++CONFIG_USB_GSPCA_BENQ=m
++CONFIG_USB_GSPCA_CONEX=m
++CONFIG_USB_GSPCA_CPIA1=m
++CONFIG_USB_GSPCA_DTCS033=m
++CONFIG_USB_GSPCA_ETOMS=m
++CONFIG_USB_GSPCA_FINEPIX=m
++CONFIG_USB_GSPCA_JEILINJ=m
++CONFIG_USB_GSPCA_JL2005BCD=m
++CONFIG_USB_GSPCA_KINECT=m
++CONFIG_USB_GSPCA_KONICA=m
++CONFIG_USB_GSPCA_MARS=m
++CONFIG_USB_GSPCA_MR97310A=m
++CONFIG_USB_GSPCA_NW80X=m
++CONFIG_USB_GSPCA_OV519=m
++CONFIG_USB_GSPCA_OV534=m
++CONFIG_USB_GSPCA_OV534_9=m
++CONFIG_USB_GSPCA_PAC207=m
++CONFIG_USB_GSPCA_PAC7302=m
++CONFIG_USB_GSPCA_PAC7311=m
++CONFIG_USB_GSPCA_SE401=m
++CONFIG_USB_GSPCA_SN9C2028=m
++CONFIG_USB_GSPCA_SN9C20X=m
++CONFIG_USB_GSPCA_SONIXB=m
++CONFIG_USB_GSPCA_SONIXJ=m
++CONFIG_USB_GSPCA_SPCA500=m
++CONFIG_USB_GSPCA_SPCA501=m
++CONFIG_USB_GSPCA_SPCA505=m
++CONFIG_USB_GSPCA_SPCA506=m
++CONFIG_USB_GSPCA_SPCA508=m
++CONFIG_USB_GSPCA_SPCA561=m
++CONFIG_USB_GSPCA_SPCA1528=m
++CONFIG_USB_GSPCA_SQ905=m
++CONFIG_USB_GSPCA_SQ905C=m
++CONFIG_USB_GSPCA_SQ930X=m
++CONFIG_USB_GSPCA_STK014=m
++CONFIG_USB_GSPCA_STK1135=m
++CONFIG_USB_GSPCA_STV0680=m
++CONFIG_USB_GSPCA_SUNPLUS=m
++CONFIG_USB_GSPCA_T613=m
++CONFIG_USB_GSPCA_TOPRO=m
++CONFIG_USB_GSPCA_TV8532=m
++CONFIG_USB_GSPCA_VC032X=m
++CONFIG_USB_GSPCA_VICAM=m
++CONFIG_USB_GSPCA_XIRLINK_CIT=m
++CONFIG_USB_GSPCA_ZC3XX=m
++CONFIG_USB_PWC=m
++CONFIG_VIDEO_CPIA2=m
++CONFIG_USB_ZR364XX=m
++CONFIG_USB_STKWEBCAM=m
++CONFIG_USB_S2255=m
++CONFIG_VIDEO_USBTV=m
++CONFIG_VIDEO_PVRUSB2=m
++CONFIG_VIDEO_HDPVR=m
++CONFIG_VIDEO_USBVISION=m
++CONFIG_VIDEO_STK1160_COMMON=m
++CONFIG_VIDEO_STK1160_AC97=y
++CONFIG_VIDEO_GO7007=m
++CONFIG_VIDEO_GO7007_USB=m
++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
++CONFIG_VIDEO_AU0828=m
++CONFIG_VIDEO_AU0828_RC=y
++CONFIG_VIDEO_CX231XX=m
++CONFIG_VIDEO_CX231XX_ALSA=m
++CONFIG_VIDEO_CX231XX_DVB=m
++CONFIG_VIDEO_TM6000=m
++CONFIG_VIDEO_TM6000_ALSA=m
++CONFIG_VIDEO_TM6000_DVB=m
++CONFIG_DVB_USB=m
++CONFIG_DVB_USB_A800=m
++CONFIG_DVB_USB_DIBUSB_MB=m
++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
++CONFIG_DVB_USB_DIBUSB_MC=m
++CONFIG_DVB_USB_DIB0700=m
++CONFIG_DVB_USB_UMT_010=m
++CONFIG_DVB_USB_CXUSB=m
++CONFIG_DVB_USB_M920X=m
++CONFIG_DVB_USB_DIGITV=m
++CONFIG_DVB_USB_VP7045=m
++CONFIG_DVB_USB_VP702X=m
++CONFIG_DVB_USB_GP8PSK=m
++CONFIG_DVB_USB_NOVA_T_USB2=m
++CONFIG_DVB_USB_TTUSB2=m
++CONFIG_DVB_USB_DTT200U=m
++CONFIG_DVB_USB_OPERA1=m
++CONFIG_DVB_USB_AF9005=m
++CONFIG_DVB_USB_AF9005_REMOTE=m
++CONFIG_DVB_USB_PCTV452E=m
++CONFIG_DVB_USB_DW2102=m
++CONFIG_DVB_USB_CINERGY_T2=m
++CONFIG_DVB_USB_DTV5100=m
++CONFIG_DVB_USB_FRIIO=m
++CONFIG_DVB_USB_AZ6027=m
++CONFIG_DVB_USB_TECHNISAT_USB2=m
++CONFIG_DVB_USB_V2=m
++CONFIG_DVB_USB_AF9015=m
++CONFIG_DVB_USB_AF9035=m
++CONFIG_DVB_USB_ANYSEE=m
++CONFIG_DVB_USB_AU6610=m
++CONFIG_DVB_USB_AZ6007=m
++CONFIG_DVB_USB_CE6230=m
++CONFIG_DVB_USB_EC168=m
++CONFIG_DVB_USB_GL861=m
++CONFIG_DVB_USB_LME2510=m
++CONFIG_DVB_USB_MXL111SF=m
++CONFIG_DVB_USB_RTL28XXU=m
++CONFIG_DVB_USB_DVBSKY=m
++CONFIG_SMS_USB_DRV=m
++CONFIG_DVB_B2C2_FLEXCOP_USB=m
++CONFIG_DVB_AS102=m
++CONFIG_VIDEO_EM28XX=m
++CONFIG_VIDEO_EM28XX_V4L2=m
++CONFIG_VIDEO_EM28XX_ALSA=m
++CONFIG_VIDEO_EM28XX_DVB=m
++CONFIG_V4L_PLATFORM_DRIVERS=y
++CONFIG_VIDEO_BCM2835=y
++CONFIG_RADIO_SI470X=y
++CONFIG_USB_SI470X=m
++CONFIG_I2C_SI470X=m
++CONFIG_RADIO_SI4713=m
++CONFIG_I2C_SI4713=m
++CONFIG_USB_MR800=m
++CONFIG_USB_DSBR=m
++CONFIG_RADIO_SHARK=m
++CONFIG_RADIO_SHARK2=m
++CONFIG_USB_KEENE=m
++CONFIG_USB_MA901=m
++CONFIG_RADIO_TEA5764=m
++CONFIG_RADIO_SAA7706H=m
++CONFIG_RADIO_TEF6862=m
++CONFIG_RADIO_WL1273=m
++CONFIG_RADIO_WL128X=m
++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
++CONFIG_VIDEO_UDA1342=m
++CONFIG_VIDEO_SONY_BTF_MPX=m
++CONFIG_VIDEO_TVP5150=m
++CONFIG_VIDEO_TW2804=m
++CONFIG_VIDEO_TW9903=m
++CONFIG_VIDEO_TW9906=m
++CONFIG_VIDEO_OV7640=m
++CONFIG_VIDEO_MT9V011=m
++CONFIG_DRM=m
++CONFIG_DRM_LOAD_EDID_FIRMWARE=y
++CONFIG_DRM_UDL=m
++CONFIG_DRM_VC4=m
++CONFIG_FB=y
++CONFIG_FB_BCM2708=y
++CONFIG_FB_UDL=m
++CONFIG_FB_SSD1307=m
++CONFIG_FB_RPISENSE=m
++# CONFIG_BACKLIGHT_GENERIC is not set
++CONFIG_BACKLIGHT_RPI=m
++CONFIG_BACKLIGHT_GPIO=m
++CONFIG_FRAMEBUFFER_CONSOLE=y
++CONFIG_LOGO=y
++# CONFIG_LOGO_LINUX_MONO is not set
++# CONFIG_LOGO_LINUX_VGA16 is not set
++CONFIG_SOUND=y
++CONFIG_SND=m
++CONFIG_SND_SEQUENCER=m
++CONFIG_SND_SEQ_DUMMY=m
++CONFIG_SND_MIXER_OSS=m
++CONFIG_SND_PCM_OSS=m
++CONFIG_SND_SEQUENCER_OSS=y
++CONFIG_SND_HRTIMER=m
++CONFIG_SND_DUMMY=m
++CONFIG_SND_ALOOP=m
++CONFIG_SND_VIRMIDI=m
++CONFIG_SND_MTPAV=m
++CONFIG_SND_SERIAL_U16550=m
++CONFIG_SND_MPU401=m
++CONFIG_SND_USB_AUDIO=m
++CONFIG_SND_USB_UA101=m
++CONFIG_SND_USB_CAIAQ=m
++CONFIG_SND_USB_CAIAQ_INPUT=y
++CONFIG_SND_USB_6FIRE=m
++CONFIG_SND_SOC=m
++CONFIG_SND_BCM2835_SOC_I2S=m
++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
++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_RPI_DAC=m
++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m
++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m
++CONFIG_SND_DIGIDAC1_SOUNDCARD=m
++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m
++CONFIG_SND_SOC_ADAU1701=m
++CONFIG_SND_SOC_WM8804_I2C=m
++CONFIG_SND_SIMPLE_CARD=m
++CONFIG_SOUND_PRIME=m
++CONFIG_HIDRAW=y
++CONFIG_UHID=m
++CONFIG_HID_A4TECH=m
++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
++CONFIG_HID_DRAGONRISE=m
++CONFIG_HID_EMS_FF=m
++CONFIG_HID_ELECOM=m
++CONFIG_HID_ELO=m
++CONFIG_HID_EZKEY=m
++CONFIG_HID_HOLTEK=m
++CONFIG_HID_KEYTOUCH=m
++CONFIG_HID_KYE=m
++CONFIG_HID_UCLOGIC=m
++CONFIG_HID_WALTOP=m
++CONFIG_HID_GYRATION=m
++CONFIG_HID_TWINHAN=m
++CONFIG_HID_KENSINGTON=m
++CONFIG_HID_LCPOWER=m
++CONFIG_HID_LOGITECH=m
++CONFIG_HID_LOGITECH_DJ=m
++CONFIG_LOGITECH_FF=y
++CONFIG_LOGIRUMBLEPAD2_FF=y
++CONFIG_LOGIG940_FF=y
++CONFIG_HID_MAGICMOUSE=m
++CONFIG_HID_MICROSOFT=m
++CONFIG_HID_MONTEREY=m
++CONFIG_HID_MULTITOUCH=m
++CONFIG_HID_NTRIG=m
++CONFIG_HID_ORTEK=m
++CONFIG_HID_PANTHERLORD=m
++CONFIG_HID_PETALYNX=m
++CONFIG_HID_PICOLCD=m
++CONFIG_HID_ROCCAT=m
++CONFIG_HID_SAMSUNG=m
++CONFIG_HID_SONY=m
++CONFIG_HID_SPEEDLINK=m
++CONFIG_HID_SUNPLUS=m
++CONFIG_HID_GREENASIA=m
++CONFIG_HID_SMARTJOYPLUS=m
++CONFIG_HID_TOPSEED=m
++CONFIG_HID_THINGM=m
++CONFIG_HID_THRUSTMASTER=m
++CONFIG_HID_WACOM=m
++CONFIG_HID_WIIMOTE=m
++CONFIG_HID_XINMO=m
++CONFIG_HID_ZEROPLUS=m
++CONFIG_HID_ZYDACRON=m
++CONFIG_HID_PID=y
++CONFIG_USB_HIDDEV=y
++CONFIG_USB=y
++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
++CONFIG_USB_MON=m
++CONFIG_USB_PRINTER=m
++CONFIG_USB_STORAGE=y
++CONFIG_USB_STORAGE_REALTEK=m
++CONFIG_USB_STORAGE_DATAFAB=m
++CONFIG_USB_STORAGE_FREECOM=m
++CONFIG_USB_STORAGE_ISD200=m
++CONFIG_USB_STORAGE_USBAT=m
++CONFIG_USB_STORAGE_SDDR09=m
++CONFIG_USB_STORAGE_SDDR55=m
++CONFIG_USB_STORAGE_JUMPSHOT=m
++CONFIG_USB_STORAGE_ALAUDA=m
++CONFIG_USB_STORAGE_ONETOUCH=m
++CONFIG_USB_STORAGE_KARMA=m
++CONFIG_USB_STORAGE_CYPRESS_ATACB=m
++CONFIG_USB_STORAGE_ENE_UB6250=m
++CONFIG_USB_MDC800=m
++CONFIG_USB_MICROTEK=m
++CONFIG_USBIP_CORE=m
++CONFIG_USBIP_VHCI_HCD=m
++CONFIG_USBIP_HOST=m
++CONFIG_USB_DWC2=y
++CONFIG_USB_SERIAL=m
++CONFIG_USB_SERIAL_GENERIC=y
++CONFIG_USB_SERIAL_AIRCABLE=m
++CONFIG_USB_SERIAL_ARK3116=m
++CONFIG_USB_SERIAL_BELKIN=m
++CONFIG_USB_SERIAL_CH341=m
++CONFIG_USB_SERIAL_WHITEHEAT=m
++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
++CONFIG_USB_SERIAL_CP210X=m
++CONFIG_USB_SERIAL_CYPRESS_M8=m
++CONFIG_USB_SERIAL_EMPEG=m
++CONFIG_USB_SERIAL_FTDI_SIO=m
++CONFIG_USB_SERIAL_VISOR=m
++CONFIG_USB_SERIAL_IPAQ=m
++CONFIG_USB_SERIAL_IR=m
++CONFIG_USB_SERIAL_EDGEPORT=m
++CONFIG_USB_SERIAL_EDGEPORT_TI=m
++CONFIG_USB_SERIAL_F81232=m
++CONFIG_USB_SERIAL_GARMIN=m
++CONFIG_USB_SERIAL_IPW=m
++CONFIG_USB_SERIAL_IUU=m
++CONFIG_USB_SERIAL_KEYSPAN_PDA=m
++CONFIG_USB_SERIAL_KEYSPAN=m
++CONFIG_USB_SERIAL_KLSI=m
++CONFIG_USB_SERIAL_KOBIL_SCT=m
++CONFIG_USB_SERIAL_MCT_U232=m
++CONFIG_USB_SERIAL_METRO=m
++CONFIG_USB_SERIAL_MOS7720=m
++CONFIG_USB_SERIAL_MOS7840=m
++CONFIG_USB_SERIAL_NAVMAN=m
++CONFIG_USB_SERIAL_PL2303=m
++CONFIG_USB_SERIAL_OTI6858=m
++CONFIG_USB_SERIAL_QCAUX=m
++CONFIG_USB_SERIAL_QUALCOMM=m
++CONFIG_USB_SERIAL_SPCP8X5=m
++CONFIG_USB_SERIAL_SAFE=m
++CONFIG_USB_SERIAL_SIERRAWIRELESS=m
++CONFIG_USB_SERIAL_SYMBOL=m
++CONFIG_USB_SERIAL_TI=m
++CONFIG_USB_SERIAL_CYBERJACK=m
++CONFIG_USB_SERIAL_XIRCOM=m
++CONFIG_USB_SERIAL_OPTION=m
++CONFIG_USB_SERIAL_OMNINET=m
++CONFIG_USB_SERIAL_OPTICON=m
++CONFIG_USB_SERIAL_XSENS_MT=m
++CONFIG_USB_SERIAL_WISHBONE=m
++CONFIG_USB_SERIAL_SSU100=m
++CONFIG_USB_SERIAL_QT2=m
++CONFIG_USB_SERIAL_DEBUG=m
++CONFIG_USB_EMI62=m
++CONFIG_USB_EMI26=m
++CONFIG_USB_ADUTUX=m
++CONFIG_USB_SEVSEG=m
++CONFIG_USB_RIO500=m
++CONFIG_USB_LEGOTOWER=m
++CONFIG_USB_LCD=m
++CONFIG_USB_LED=m
++CONFIG_USB_CYPRESS_CY7C63=m
++CONFIG_USB_CYTHERM=m
++CONFIG_USB_IDMOUSE=m
++CONFIG_USB_FTDI_ELAN=m
++CONFIG_USB_APPLEDISPLAY=m
++CONFIG_USB_LD=m
++CONFIG_USB_TRANCEVIBRATOR=m
++CONFIG_USB_IOWARRIOR=m
++CONFIG_USB_TEST=m
++CONFIG_USB_ISIGHTFW=m
++CONFIG_USB_YUREX=m
++CONFIG_USB_ATM=m
++CONFIG_USB_SPEEDTOUCH=m
++CONFIG_USB_CXACRU=m
++CONFIG_USB_UEAGLEATM=m
++CONFIG_USB_XUSBATM=m
++CONFIG_MMC=y
++CONFIG_MMC_BLOCK_MINORS=32
++CONFIG_MMC_BCM2835=y
++CONFIG_MMC_BCM2835_DMA=y
++CONFIG_MMC_BCM2835_SDHOST=y
++CONFIG_MMC_SDHCI=y
++CONFIG_MMC_SDHCI_PLTFM=y
++CONFIG_MMC_SDHCI_BCM2835=y
++CONFIG_MMC_SPI=m
++CONFIG_LEDS_CLASS=y
++CONFIG_LEDS_GPIO=y
++CONFIG_LEDS_TRIGGER_TIMER=y
++CONFIG_LEDS_TRIGGER_ONESHOT=y
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++CONFIG_LEDS_TRIGGER_BACKLIGHT=y
++CONFIG_LEDS_TRIGGER_CPU=y
++CONFIG_LEDS_TRIGGER_GPIO=y
++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
++CONFIG_LEDS_TRIGGER_TRANSIENT=m
++CONFIG_LEDS_TRIGGER_CAMERA=m
++CONFIG_LEDS_TRIGGER_INPUT=y
++CONFIG_LEDS_TRIGGER_PANIC=y
++CONFIG_RTC_CLASS=y
++# CONFIG_RTC_HCTOSYS is not set
++CONFIG_RTC_DRV_DS1307=m
++CONFIG_RTC_DRV_DS1374=m
++CONFIG_RTC_DRV_DS1672=m
++CONFIG_RTC_DRV_MAX6900=m
++CONFIG_RTC_DRV_RS5C372=m
++CONFIG_RTC_DRV_ISL1208=m
++CONFIG_RTC_DRV_ISL12022=m
++CONFIG_RTC_DRV_ISL12057=m
++CONFIG_RTC_DRV_X1205=m
++CONFIG_RTC_DRV_PCF8523=m
++CONFIG_RTC_DRV_PCF8563=m
++CONFIG_RTC_DRV_PCF8583=m
++CONFIG_RTC_DRV_M41T80=m
++CONFIG_RTC_DRV_BQ32K=m
++CONFIG_RTC_DRV_S35390A=m
++CONFIG_RTC_DRV_FM3130=m
++CONFIG_RTC_DRV_RX8581=m
++CONFIG_RTC_DRV_RX8025=m
++CONFIG_RTC_DRV_EM3027=m
++CONFIG_RTC_DRV_M41T93=m
++CONFIG_RTC_DRV_M41T94=m
++CONFIG_RTC_DRV_DS1302=m
++CONFIG_RTC_DRV_DS1305=m
++CONFIG_RTC_DRV_DS1390=m
++CONFIG_RTC_DRV_R9701=m
++CONFIG_RTC_DRV_RX4581=m
++CONFIG_RTC_DRV_RS5C348=m
++CONFIG_RTC_DRV_MAX6902=m
++CONFIG_RTC_DRV_PCF2123=m
++CONFIG_RTC_DRV_DS3232=m
++CONFIG_RTC_DRV_PCF2127=m
++CONFIG_RTC_DRV_RV3029C2=m
++CONFIG_DMADEVICES=y
++CONFIG_DMA_BCM2835=y
++CONFIG_UIO=m
++CONFIG_UIO_PDRV_GENIRQ=m
++CONFIG_STAGING=y
++CONFIG_PRISM2_USB=m
++CONFIG_R8712U=m
++CONFIG_R8188EU=m
++CONFIG_R8723AU=m
++CONFIG_VT6656=m
++CONFIG_SPEAKUP=m
++CONFIG_SPEAKUP_SYNTH_SOFT=m
++CONFIG_STAGING_MEDIA=y
++CONFIG_LIRC_STAGING=y
++CONFIG_LIRC_IMON=m
++CONFIG_LIRC_RPI=m
++CONFIG_LIRC_SASEM=m
++CONFIG_LIRC_SERIAL=m
++CONFIG_FB_TFT=m
++CONFIG_FB_TFT_AGM1264K_FL=m
++CONFIG_FB_TFT_BD663474=m
++CONFIG_FB_TFT_HX8340BN=m
++CONFIG_FB_TFT_HX8347D=m
++CONFIG_FB_TFT_HX8353D=m
++CONFIG_FB_TFT_ILI9163=m
++CONFIG_FB_TFT_ILI9320=m
++CONFIG_FB_TFT_ILI9325=m
++CONFIG_FB_TFT_ILI9340=m
++CONFIG_FB_TFT_ILI9341=m
++CONFIG_FB_TFT_ILI9481=m
++CONFIG_FB_TFT_ILI9486=m
++CONFIG_FB_TFT_PCD8544=m
++CONFIG_FB_TFT_RA8875=m
++CONFIG_FB_TFT_S6D02A1=m
++CONFIG_FB_TFT_S6D1121=m
++CONFIG_FB_TFT_SSD1289=m
++CONFIG_FB_TFT_SSD1306=m
++CONFIG_FB_TFT_SSD1331=m
++CONFIG_FB_TFT_SSD1351=m
++CONFIG_FB_TFT_ST7735R=m
++CONFIG_FB_TFT_TINYLCD=m
++CONFIG_FB_TFT_TLS8204=m
++CONFIG_FB_TFT_UC1701=m
++CONFIG_FB_TFT_UPD161704=m
++CONFIG_FB_TFT_WATTEROTT=m
++CONFIG_FB_FLEX=m
++CONFIG_FB_TFT_FBTFT_DEVICE=m
++# CONFIG_COMMON_CLK_XGENE is not set
++CONFIG_MAILBOX=y
++CONFIG_BCM2835_MBOX=y
++# CONFIG_IOMMU_SUPPORT is not set
++CONFIG_RASPBERRYPI_POWER=y
++CONFIG_EXTCON=m
++CONFIG_EXTCON_ARIZONA=m
++CONFIG_IIO=m
++CONFIG_IIO_BUFFER=y
++CONFIG_IIO_BUFFER_CB=m
++CONFIG_IIO_KFIFO_BUF=m
++CONFIG_MCP320X=m
++CONFIG_MCP3422=m
++CONFIG_DHT11=m
++CONFIG_PWM_BCM2835=m
++CONFIG_PWM_PCA9685=m
++CONFIG_GENERIC_PHY=y
++CONFIG_RASPBERRYPI_FIRMWARE=y
++CONFIG_EXT4_FS=y
++CONFIG_EXT4_FS_POSIX_ACL=y
++CONFIG_EXT4_FS_SECURITY=y
++CONFIG_REISERFS_FS=m
++CONFIG_REISERFS_FS_XATTR=y
++CONFIG_REISERFS_FS_POSIX_ACL=y
++CONFIG_REISERFS_FS_SECURITY=y
++CONFIG_JFS_FS=m
++CONFIG_JFS_POSIX_ACL=y
++CONFIG_JFS_SECURITY=y
++CONFIG_JFS_STATISTICS=y
++CONFIG_XFS_FS=m
++CONFIG_XFS_QUOTA=y
++CONFIG_XFS_POSIX_ACL=y
++CONFIG_XFS_RT=y
++CONFIG_GFS2_FS=m
++CONFIG_OCFS2_FS=m
++CONFIG_BTRFS_FS=m
++CONFIG_BTRFS_FS_POSIX_ACL=y
++CONFIG_NILFS2_FS=m
++CONFIG_F2FS_FS=y
++CONFIG_FANOTIFY=y
++CONFIG_QFMT_V1=m
++CONFIG_QFMT_V2=m
++CONFIG_AUTOFS4_FS=y
++CONFIG_FUSE_FS=m
++CONFIG_CUSE=m
++CONFIG_OVERLAY_FS=m
++CONFIG_FSCACHE=y
++CONFIG_FSCACHE_STATS=y
++CONFIG_FSCACHE_HISTOGRAM=y
++CONFIG_CACHEFILES=y
++CONFIG_ISO9660_FS=m
++CONFIG_JOLIET=y
++CONFIG_ZISOFS=y
++CONFIG_UDF_FS=m
++CONFIG_MSDOS_FS=y
++CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
++CONFIG_NTFS_FS=m
++CONFIG_NTFS_RW=y
++CONFIG_TMPFS=y
++CONFIG_TMPFS_POSIX_ACL=y
++CONFIG_ECRYPT_FS=m
++CONFIG_HFS_FS=m
++CONFIG_HFSPLUS_FS=m
++CONFIG_JFFS2_FS=m
++CONFIG_JFFS2_SUMMARY=y
++CONFIG_UBIFS_FS=m
++CONFIG_SQUASHFS=m
++CONFIG_SQUASHFS_XATTR=y
++CONFIG_SQUASHFS_LZO=y
++CONFIG_SQUASHFS_XZ=y
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3_ACL=y
++CONFIG_NFS_V4=y
++CONFIG_NFS_SWAP=y
++CONFIG_ROOT_NFS=y
++CONFIG_NFS_FSCACHE=y
++CONFIG_NFSD=m
++CONFIG_NFSD_V3_ACL=y
++CONFIG_NFSD_V4=y
++CONFIG_CIFS=m
++CONFIG_CIFS_WEAK_PW_HASH=y
++CONFIG_CIFS_UPCALL=y
++CONFIG_CIFS_XATTR=y
++CONFIG_CIFS_POSIX=y
++CONFIG_CIFS_ACL=y
++CONFIG_CIFS_DFS_UPCALL=y
++CONFIG_CIFS_SMB2=y
++CONFIG_CIFS_FSCACHE=y
++CONFIG_9P_FS=m
++CONFIG_9P_FS_POSIX_ACL=y
++CONFIG_NLS_DEFAULT="utf8"
++CONFIG_NLS_CODEPAGE_437=y
++CONFIG_NLS_CODEPAGE_737=m
++CONFIG_NLS_CODEPAGE_775=m
++CONFIG_NLS_CODEPAGE_850=m
++CONFIG_NLS_CODEPAGE_852=m
++CONFIG_NLS_CODEPAGE_855=m
++CONFIG_NLS_CODEPAGE_857=m
++CONFIG_NLS_CODEPAGE_860=m
++CONFIG_NLS_CODEPAGE_861=m
++CONFIG_NLS_CODEPAGE_862=m
++CONFIG_NLS_CODEPAGE_863=m
++CONFIG_NLS_CODEPAGE_864=m
++CONFIG_NLS_CODEPAGE_865=m
++CONFIG_NLS_CODEPAGE_866=m
++CONFIG_NLS_CODEPAGE_869=m
++CONFIG_NLS_CODEPAGE_936=m
++CONFIG_NLS_CODEPAGE_950=m
++CONFIG_NLS_CODEPAGE_932=m
++CONFIG_NLS_CODEPAGE_949=m
++CONFIG_NLS_CODEPAGE_874=m
++CONFIG_NLS_ISO8859_8=m
++CONFIG_NLS_CODEPAGE_1250=m
++CONFIG_NLS_CODEPAGE_1251=m
++CONFIG_NLS_ASCII=y
++CONFIG_NLS_ISO8859_1=m
++CONFIG_NLS_ISO8859_2=m
++CONFIG_NLS_ISO8859_3=m
++CONFIG_NLS_ISO8859_4=m
++CONFIG_NLS_ISO8859_5=m
++CONFIG_NLS_ISO8859_6=m
++CONFIG_NLS_ISO8859_7=m
++CONFIG_NLS_ISO8859_9=m
++CONFIG_NLS_ISO8859_13=m
++CONFIG_NLS_ISO8859_14=m
++CONFIG_NLS_ISO8859_15=m
++CONFIG_NLS_KOI8_R=m
++CONFIG_NLS_KOI8_U=m
++CONFIG_DLM=m
++CONFIG_PRINTK_TIME=y
++CONFIG_BOOT_PRINTK_DELAY=y
++CONFIG_DEBUG_MEMORY_INIT=y
++CONFIG_DETECT_HUNG_TASK=y
++CONFIG_TIMER_STATS=y
++CONFIG_IRQSOFF_TRACER=y
++CONFIG_SCHED_TRACER=y
++CONFIG_STACK_TRACER=y
++CONFIG_BLK_DEV_IO_TRACE=y
++CONFIG_FUNCTION_PROFILER=y
++CONFIG_KGDB=y
++CONFIG_KGDB_KDB=y
++CONFIG_KDB_KEYBOARD=y
++# CONFIG_DEBUG_SET_MODULE_RONX is not set
++# CONFIG_DEBUG_RODATA is not set
++CONFIG_CRYPTO_USER=m
++CONFIG_CRYPTO_CBC=y
++CONFIG_CRYPTO_CTS=m
++CONFIG_CRYPTO_XTS=m
++CONFIG_CRYPTO_XCBC=m
++CONFIG_CRYPTO_TGR192=m
++CONFIG_CRYPTO_WP512=m
++CONFIG_CRYPTO_CAST5=m
++CONFIG_CRYPTO_DES=y
++CONFIG_CRYPTO_USER_API_SKCIPHER=m
++# CONFIG_CRYPTO_HW is not set
++CONFIG_ARM64_CRYPTO=y
++CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
++CONFIG_CRYPTO_CRC32_ARM64=y
++CONFIG_CRC_ITU_T=y
++CONFIG_LIBCRC32C=y
+diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h
+index 7dbea6c..446b353 100644
+--- a/arch/arm64/include/asm/dma-mapping.h
++++ b/arch/arm64/include/asm/dma-mapping.h
+@@ -66,12 +66,14 @@ static inline bool is_device_dma_coherent(struct device *dev)
+ 
+ static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr)
+ {
+-	return (dma_addr_t)paddr;
++	dma_addr_t dev_addr = (dma_addr_t)paddr;
++	return dev_addr - ((dma_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
+ }
+ 
+ static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dev_addr)
+ {
+-	return (phys_addr_t)dev_addr;
++	phys_addr_t paddr = (phys_addr_t)dev_addr;
++	return paddr + ((phys_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
+ }
+ 
+ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
+@@ -86,5 +88,14 @@ static inline void dma_mark_clean(void *addr, size_t size)
+ {
+ }
+ 
++/* Override for dma_max_pfn() */
++static inline unsigned long dma_max_pfn(struct device *dev)
++{
++	dma_addr_t dma_max = (dma_addr_t)*dev->dma_mask;
++
++	return (ulong)dma_to_phys(dev, dma_max) >> PAGE_SHIFT;
++}
++#define dma_max_pfn(dev) dma_max_pfn(dev)
++
+ #endif	/* __KERNEL__ */
+ #endif	/* __ASM_DMA_MAPPING_H */
+diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
+index c02bf8a..a09553a 100644
+--- a/drivers/irqchip/irq-bcm2835.c
++++ b/drivers/irqchip/irq-bcm2835.c
+@@ -54,7 +54,9 @@
+ #include <linux/regmap.h>
+ 
+ #include <asm/exception.h>
++#ifndef CONFIG_ARM64
+ #include <asm/mach/irq.h>
++#endif
+ 
+ /* Put the bank and irq (32 bits) into the hwirq */
+ #define MAKE_HWIRQ(b, n)	(((b) << 5) | (n))
+@@ -72,12 +74,16 @@
+ #define BANK0_VALID_MASK	(BANK0_HWIRQ_MASK | BANK1_HWIRQ | BANK2_HWIRQ \
+ 					| SHORTCUT1_MASK | SHORTCUT2_MASK)
+ 
++#ifndef CONFIG_ARM64
+ #undef ARM_LOCAL_GPU_INT_ROUTING
+ #define ARM_LOCAL_GPU_INT_ROUTING 0x0c
++#endif
+ 
++#ifndef CONFIG_ARM64
+ #define REG_FIQ_CONTROL		0x0c
+ #define REG_FIQ_ENABLE		0x80
+ #define REG_FIQ_DISABLE		0
++#endif
+ 
+ #define NR_BANKS		3
+ #define IRQS_PER_BANK		32
+@@ -101,7 +107,9 @@ struct armctrl_ic {
+ 	void __iomem *enable[NR_BANKS];
+ 	void __iomem *disable[NR_BANKS];
+ 	struct irq_domain *domain;
++#ifndef CONFIG_ARM64
+ 	struct regmap *local_regmap;
++#endif
+ };
+ 
+ static struct armctrl_ic intc __read_mostly;
+@@ -109,6 +117,7 @@ static void __exception_irq_entry bcm2835_handle_irq(
+ 	struct pt_regs *regs);
+ static void bcm2836_chained_handle_irq(struct irq_desc *desc);
+ 
++#ifndef CONFIG_ARM64
+ static inline unsigned int hwirq_to_fiq(unsigned long hwirq)
+ {
+ 	hwirq -= NUMBER_IRQS;
+@@ -123,18 +132,22 @@ static inline unsigned int hwirq_to_fiq(unsigned long hwirq)
+ 
+ 	return hwirq + 64;
+ }
++#endif
+ 
+ static void armctrl_mask_irq(struct irq_data *d)
+ {
++#ifndef CONFIG_ARM64
+ 	if (d->hwirq >= NUMBER_IRQS)
+ 		writel_relaxed(REG_FIQ_DISABLE, intc.base + REG_FIQ_CONTROL);
+ 	else
++#endif
+ 		writel_relaxed(HWIRQ_BIT(d->hwirq),
+ 			       intc.disable[HWIRQ_BANK(d->hwirq)]);
+ }
+ 
+ static void armctrl_unmask_irq(struct irq_data *d)
+ {
++#ifndef CONFIG_ARM64
+ 	if (d->hwirq >= NUMBER_IRQS) {
+ 		if (num_online_cpus() > 1) {
+ 			unsigned int data;
+@@ -164,6 +177,9 @@ static void armctrl_unmask_irq(struct irq_data *d)
+ 		writel_relaxed(HWIRQ_BIT(d->hwirq),
+ 			       intc.enable[HWIRQ_BANK(d->hwirq)]);
+ 	}
++#else
++	writel_relaxed(HWIRQ_BIT(d->hwirq), intc.enable[HWIRQ_BANK(d->hwirq)]);
++#endif
+ }
+ 
+ static struct irq_chip armctrl_chip = {
+@@ -241,6 +257,7 @@ static int __init armctrl_of_init(struct device_node *node,
+ 		set_handle_irq(bcm2835_handle_irq);
+ 	}
+ 
++#ifndef CONFIG_ARM64
+ 	if (is_2836) {
+ 		intc.local_regmap =
+ 			syscon_regmap_lookup_by_compatible("brcm,bcm2836-arm-local");
+@@ -261,6 +278,7 @@ static int __init armctrl_of_init(struct device_node *node,
+ 		}
+ 	}
+ 	init_FIQ(FIQ_START);
++#endif
+ 
+ 	return 0;
+ }
+@@ -322,7 +340,11 @@ static void __exception_irq_entry bcm2835_handle_irq(
+ 	u32 hwirq;
+ 
+ 	while ((hwirq = get_next_armctrl_hwirq()) != ~0)
++#ifndef CONFIG_ARM64
+ 		handle_IRQ(irq_linear_revmap(intc.domain, hwirq), regs);
++#else
++		handle_domain_irq(intc.domain, hwirq, regs);
++#endif
+ }
+ 
+ static void bcm2836_chained_handle_irq(struct irq_desc *desc)
+diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
+index de3b3a3..b2425d7 100644
+--- a/drivers/irqchip/irq-bcm2836.c
++++ b/drivers/irqchip/irq-bcm2836.c
+@@ -175,13 +175,19 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs)
+ 		u32 ipi = ffs(mbox_val) - 1;
+ 
+ 		writel(1 << ipi, mailbox0);
++#ifndef CONFIG_ARM64
+ 		dsb();
++#endif
+ 		handle_IPI(ipi, regs);
+ #endif
+ 	} else if (stat) {
+ 		u32 hwirq = ffs(stat) - 1;
+ 
++#ifndef CONFIG_ARM64
+ 		handle_IRQ(irq_linear_revmap(intc.domain, hwirq), regs);
++#else
++		handle_domain_irq(intc.domain, hwirq, regs);
++#endif
+ 	}
+ }
+ 
+@@ -225,7 +231,7 @@ static struct notifier_block bcm2836_arm_irqchip_cpu_notifier = {
+ };
+ 
+ #ifdef CONFIG_ARM
+-int __init bcm2836_smp_boot_secondary(unsigned int cpu,
++static int __init bcm2836_smp_boot_secondary(unsigned int cpu,
+ 				      struct task_struct *idle)
+ {
+ 	unsigned long secondary_startup_phys =
+diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c
+index d7b6b5a..2204ca9 100644
+--- a/drivers/mmc/host/bcm2835-sdhost.c
++++ b/drivers/mmc/host/bcm2835-sdhost.c
+@@ -241,7 +241,11 @@ static void log_init(u32 bus_to_phys)
+ 	sdhost_log_buf = dma_zalloc_coherent(NULL, LOG_SIZE, &sdhost_log_addr,
+ 					     GFP_KERNEL);
+ 	if (sdhost_log_buf) {
++#ifndef CONFIG_ARM64
+ 		pr_info("sdhost: log_buf @ %p (%x)\n",
++#else
++		pr_info("sdhost: log_buf @ %p (%llx)\n",
++#endif
+ 			sdhost_log_buf, sdhost_log_addr);
+ 		timer_base = ioremap_nocache(bus_to_phys + 0x7e003000, SZ_4K);
+ 		if (!timer_base)
+@@ -522,7 +526,11 @@ static void bcm2835_sdhost_dma_complete(void *param)
+ 	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&host->lock, flags);
++#ifndef CONFIG_ARM64
+ 	log_event("DMA<", (u32)host->data, bcm2835_sdhost_read(host, SDHSTS));
++#else
++	log_event("DMA<", (u64)host->data, bcm2835_sdhost_read(host, SDHSTS));
++#endif
+ 	log_event("DMA ", bcm2835_sdhost_read(host, SDCMD),
+ 		  bcm2835_sdhost_read(host, SDEDM));
+ 
+@@ -554,7 +562,11 @@ static void bcm2835_sdhost_dma_complete(void *param)
+ 
+ 	bcm2835_sdhost_finish_data(host);
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("DMA>", (u32)host->data, 0);
++#else
++	log_event("DMA>", (u64)host->data, 0);
++#endif
+ 	spin_unlock_irqrestore(&host->lock, flags);
+ }
+ 
+@@ -743,7 +755,11 @@ static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host)
+ 	u32 sdhsts;
+ 	bool is_read;
+ 	BUG_ON(!host->data);
++#ifndef CONFIG_ARM64
+ 	log_event("XFP<", (u32)host->data, host->blocks);
++#else
++	log_event("XFP<", (u64)host->data, host->blocks);
++#endif
+ 
+ 	is_read = (host->data->flags & MMC_DATA_READ) != 0;
+ 	if (is_read)
+@@ -768,7 +784,11 @@ static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host)
+ 		       sdhsts);
+ 		host->data->error = -ETIMEDOUT;
+ 	}
++#ifndef CONFIG_ARM64
+ 	log_event("XFP>", (u32)host->data, host->blocks);
++#else
++	log_event("XFP>", (u64)host->data, host->blocks);
++#endif
+ }
+ 
+ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
+@@ -778,7 +798,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
+ 	struct dma_async_tx_descriptor *desc = NULL;
+ 	struct dma_chan *dma_chan;
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("PRD<", (u32)data, 0);
++#else
++	log_event("PRD<", (u64)data, 0);
++#endif
+ 	pr_debug("bcm2835_sdhost_prepare_dma()\n");
+ 
+ 	dma_chan = host->dma_chan_rxtx;
+@@ -789,7 +813,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
+ 		dir_data = DMA_TO_DEVICE;
+ 		dir_slave = DMA_MEM_TO_DEV;
+ 	}
++#ifndef CONFIG_ARM64
+ 	log_event("PRD1", (u32)dma_chan, 0);
++#else
++	log_event("PRD1", (u64)dma_chan, 0);
++#endif
+ 
+ 	BUG_ON(!dma_chan->device);
+ 	BUG_ON(!dma_chan->device->dev);
+@@ -836,7 +864,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
+ 		desc = dmaengine_prep_slave_sg(dma_chan, data->sg,
+ 					       len, dir_slave,
+ 					       DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
++#ifndef CONFIG_ARM64
+ 	log_event("PRD3", (u32)desc, 0);
++#else
++	log_event("PRD3", (u64)desc, 0);
++#endif
+ 
+ 	if (desc) {
+ 		desc->callback = bcm2835_sdhost_dma_complete;
+@@ -845,12 +877,20 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
+ 		host->dma_chan = dma_chan;
+ 		host->dma_dir = dir_data;
+ 	}
++#ifndef CONFIG_ARM64
+ 	log_event("PDM>", (u32)data, 0);
++#else
++	log_event("PDM>", (u64)data, 0);
++#endif
+ }
+ 
+ static void bcm2835_sdhost_start_dma(struct bcm2835_host *host)
+ {
++#ifndef CONFIG_ARM64
+ 	log_event("SDMA", (u32)host->data, (u32)host->dma_chan);
++#else
++	log_event("SDMA", (u64)host->data, (u64)host->dma_chan);
++#endif
+ 	dmaengine_submit(host->dma_desc);
+ 	dma_async_issue_pending(host->dma_chan);
+ }
+@@ -1074,7 +1114,11 @@ static void bcm2835_sdhost_finish_data(struct bcm2835_host *host)
+ 	data = host->data;
+ 	BUG_ON(!data);
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("FDA<", (u32)host->mrq, (u32)host->cmd);
++#else
++	log_event("FDA<", (u64)host->mrq, (u64)host->cmd);
++#endif
+ 	pr_debug("finish_data(error %d, stop %d, sbc %d)\n",
+ 	       data->error, data->stop ? 1 : 0,
+ 	       host->mrq->sbc ? 1 : 0);
+@@ -1097,7 +1141,11 @@ static void bcm2835_sdhost_finish_data(struct bcm2835_host *host)
+ 	}
+ 	else
+ 		bcm2835_sdhost_transfer_complete(host);
++#ifndef CONFIG_ARM64
+ 	log_event("FDA>", (u32)host->mrq, (u32)host->cmd);
++#else
++	log_event("FDA>", (u64)host->mrq, (u64)host->cmd);
++#endif
+ }
+ 
+ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
+@@ -1111,7 +1159,11 @@ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
+ 	data = host->data;
+ 	host->data = NULL;
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("TCM<", (u32)data, data->error);
++#else
++	log_event("TCM<", (u64)data, data->error);
++#endif
+ 	pr_debug("transfer_complete(error %d, stop %d)\n",
+ 	       data->error, data->stop ? 1 : 0);
+ 
+@@ -1133,7 +1185,11 @@ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
+ 		bcm2835_sdhost_wait_transfer_complete(host);
+ 		tasklet_schedule(&host->finish_tasklet);
+ 	}
++#ifndef CONFIG_ARM64
+ 	log_event("TCM>", (u32)data, 0);
++#else
++	log_event("TCM>", (u64)data, 0);
++#endif
+ }
+ 
+ /* If irq_flags is valid, the caller is in a thread context and is allowed
+@@ -1148,7 +1204,11 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host,
+ 	int timediff = 0;
+ #endif
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("FCM<", (u32)host->mrq, (u32)host->cmd);
++#else
++	log_event("FCM<", (u64)host->mrq, (u64)host->cmd);
++#endif
+ 	pr_debug("finish_command(%x)\n", bcm2835_sdhost_read(host, SDCMD));
+ 
+ 	BUG_ON(!host->cmd || !host->mrq);
+@@ -1298,7 +1358,11 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host,
+ 		else if (host->data_complete)
+ 			bcm2835_sdhost_transfer_complete(host);
+ 	}
++#ifndef CONFIG_ARM64
+ 	log_event("FCM>", (u32)host->mrq, (u32)host->cmd);
++#else
++	log_event("FCM>", (u64)host->mrq, (u64)host->cmd);
++#endif
+ }
+ 
+ static void bcm2835_sdhost_timeout(unsigned long data)
+@@ -1337,7 +1401,11 @@ static void bcm2835_sdhost_timeout(unsigned long data)
+ 
+ static void bcm2835_sdhost_busy_irq(struct bcm2835_host *host, u32 intmask)
+ {
++#ifndef CONFIG_ARM64
+ 	log_event("IRQB", (u32)host->cmd, intmask);
++#else
++	log_event("IRQB", (u64)host->cmd, intmask);
++#endif
+ 	if (!host->cmd) {
+ 		pr_err("%s: got command busy interrupt 0x%08x even "
+ 			"though no command operation was in progress.\n",
+@@ -1390,7 +1458,11 @@ static void bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask)
+ 	   data/space available FIFO status bits. It is therefore not
+ 	   an error to get here when there is no data transfer in
+ 	   progress. */
++#ifndef CONFIG_ARM64
+ 	log_event("IRQD", (u32)host->data, intmask);
++#else
++	log_event("IRQD", (u64)host->data, intmask);
++#endif
+ 	if (!host->data)
+ 		return;
+ 
+@@ -1427,7 +1499,11 @@ static void bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask)
+ 
+ static void bcm2835_sdhost_block_irq(struct bcm2835_host *host, u32 intmask)
+ {
++#ifndef CONFIG_ARM64
+ 	log_event("IRQK", (u32)host->data, intmask);
++#else
++	log_event("IRQK", (u64)host->data, intmask);
++#endif
+ 	if (!host->data) {
+ 		pr_err("%s: got block interrupt 0x%08x even "
+ 			"though no data operation was in progress.\n",
+@@ -1686,10 +1762,18 @@ static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq
+ 	edm = bcm2835_sdhost_read(host, SDEDM);
+ 	fsm = edm & SDEDM_FSM_MASK;
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("REQ<", (u32)mrq, edm);
++#else
++	log_event("REQ<", (u64)mrq, edm);
++#endif
+ 	if ((fsm != SDEDM_FSM_IDENTMODE) &&
+ 	    (fsm != SDEDM_FSM_DATAMODE)) {
++#ifndef CONFIG_ARM64
+ 		log_event("REQ!", (u32)mrq, edm);
++#else
++		log_event("REQ!", (u64)mrq, edm);
++#endif
+ 		if (host->debug) {
+ 			pr_warn("%s: previous command (%d) not complete (EDM %x)\n",
+ 			       mmc_hostname(host->mmc),
+@@ -1725,7 +1809,11 @@ static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq
+ 		   mrq->data ? (u32)mrq->data->blksz : 0);
+ 	mmiowb();
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("REQ>", (u32)mrq, 0);
++#else
++	log_event("REQ>", (u64)mrq, 0);
++#endif
+ 	spin_unlock_irqrestore(&host->lock, flags);
+ }
+ 
+@@ -1781,7 +1869,11 @@ static void bcm2835_sdhost_cmd_wait_work(struct work_struct *work)
+ 
+ 	spin_lock_irqsave(&host->lock, flags);
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("CWK<", (u32)host->cmd, (u32)host->mrq);
++#else
++	log_event("CWK<", (u64)host->cmd, (u64)host->mrq);
++#endif
+ 
+ 	/*
+ 	 * If this tasklet gets rescheduled while running, it will
+@@ -1796,7 +1888,11 @@ static void bcm2835_sdhost_cmd_wait_work(struct work_struct *work)
+ 
+ 	mmiowb();
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("CWK>", (u32)host->cmd, 0);
++#else
++	log_event("CWK>", (u64)host->cmd, 0);
++#endif
+ 
+ 	spin_unlock_irqrestore(&host->lock, flags);
+ }
+@@ -1812,7 +1908,11 @@ static void bcm2835_sdhost_tasklet_finish(unsigned long param)
+ 
+ 	spin_lock_irqsave(&host->lock, flags);
+ 
++#ifndef CONFIG_ARM64
+ 	log_event("TSK<", (u32)host->mrq, 0);
++#else
++	log_event("TSK<", (u64)host->mrq, 0);
++#endif
+ 	/*
+ 	 * If this tasklet gets rescheduled while running, it will
+ 	 * be run again afterwards but without any active request.
+@@ -1880,7 +1980,11 @@ static void bcm2835_sdhost_tasklet_finish(unsigned long param)
+ 	}
+ 
+ 	mmc_request_done(host->mmc, mrq);
++#ifndef CONFIG_ARM64
+ 	log_event("TSK>", (u32)mrq, 0);
++#else
++	log_event("TSK>", (u64)mrq, 0);
++#endif
+ }
+ 
+ int bcm2835_sdhost_add_host(struct bcm2835_host *host)
+diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
+index 8493474..5402b8f 100644
+--- a/drivers/spi/spi-bcm2835.c
++++ b/drivers/spi/spi-bcm2835.c
+@@ -679,17 +679,21 @@ static void bcm2835_spi_set_cs(struct spi_device *spi, bool gpio_level)
+ 	bcm2835_wr(bs, BCM2835_SPI_CS, cs);
+ }
+ 
++#if 0
+ static int chip_match_name(struct gpio_chip *chip, void *data)
+ {
+ 	return !strcmp(chip->label, data);
+ }
++#endif
+ 
+ static int bcm2835_spi_setup(struct spi_device *spi)
+ {
++#if 0
+ 	int err;
+ 	struct gpio_chip *chip;
+ 	struct device_node *pins;
+ 	u32 pingroup_index;
++#endif
+ 	/*
+ 	 * sanity checking the native-chipselects
+ 	 */
+diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
+index a04d27e..61329c0 100644
+--- a/drivers/tty/serial/amba-pl011.c
++++ b/drivers/tty/serial/amba-pl011.c
+@@ -2345,6 +2345,7 @@ static struct uart_driver amba_reg = {
+ 	.cons			= AMBA_CONSOLE,
+ };
+ 
++#if 0
+ static int pl011_probe_dt_alias(int index, struct device *dev)
+ {
+ 	struct device_node *np;
+@@ -2376,6 +2377,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev)
+ 
+ 	return ret;
+ }
++#endif
+ 
+ /* unregisters the driver also if no more ports are left */
+ static void pl011_unregister_port(struct uart_amba_port *uap)
+diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.c
+index 37f6081..731ab30 100644
+--- a/drivers/video/fbdev/bcm2708_fb.c
++++ b/drivers/video/fbdev/bcm2708_fb.c
+@@ -735,7 +735,11 @@ static int bcm2708_fb_probe(struct platform_device *dev)
+ 		goto free_fb;
+ 	}
+ 
++#ifndef CONFIG_ARM64
+ 	pr_info("BCM2708FB: allocated DMA memory %08x\n",
++#else
++	pr_info("BCM2708FB: allocated DMA memory %016llx\n",
++#endif
+ 	       fb->cb_handle);
+ 
+ 	ret = bcm_dma_chan_alloc(BCM_DMA_FEATURE_BULK,
+-- 
+2.7.4
+
diff --git a/recipes-kernel/linux/linux-raspberrypi_4.7.bb b/recipes-kernel/linux/linux-raspberrypi_4.7.bb
index 4a8fe36..a03a582 100644
--- a/recipes-kernel/linux/linux-raspberrypi_4.7.bb
+++ b/recipes-kernel/linux/linux-raspberrypi_4.7.bb
@@ -6,4 +6,6 @@ SRCREV = "e7fa325a40f260ed9fb86391a0b65150eba8c112"
 SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.7.y \
            file://0001-fix-dtbo-rules.patch \
 "
+SRC_URI_append_raspberrypi3-64 = " file://0002-support-64bits.patch"
+
 require linux-raspberrypi.inc
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [meta-raspberrypi][PATCH 1/2] Support for 64bits target on raspberrypi3 (generic part)
  2016-11-20 12:46 ` [meta-raspberrypi][PATCH 1/2] Support for 64bits target on raspberrypi3 (generic part) Herve Jourdain
@ 2016-11-20 19:38   ` Khem Raj
  0 siblings, 0 replies; 6+ messages in thread
From: Khem Raj @ 2016-11-20 19:38 UTC (permalink / raw
  To: Herve Jourdain; +Cc: yocto@yoctoproject.org

This is ok.

On Sun, Nov 20, 2016 at 4:46 AM, Herve Jourdain <herve.jourdain@neuf.fr> wrote:
> Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
> ---
>  classes/sdcard_image-rpi.bbclass           |  2 ++
>  conf/machine/include/rpi-base.inc          | 21 +++++++++++++++++
>  recipes-bsp/bootfiles/rpi-config_git.bb    |  6 +++++
>  recipes-kernel/linux/linux-raspberrypi.inc |  2 ++
>  recipes-kernel/linux/linux-rpi.inc         | 38 ++++++++++++++++++++++--------
>  5 files changed, 59 insertions(+), 10 deletions(-)
>
> diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass
> index 116d5e8..375f624 100644
> --- a/classes/sdcard_image-rpi.bbclass
> +++ b/classes/sdcard_image-rpi.bbclass
> @@ -35,6 +35,8 @@ KERNEL_INITRAMFS ?= ""
>  # Kernel image name
>  SDIMG_KERNELIMAGE_raspberrypi  ?= "kernel.img"
>  SDIMG_KERNELIMAGE_raspberrypi2 ?= "kernel7.img"
> +SDIMG_KERNELIMAGE_raspberrypi3 ?= "kernel7.img"
> +SDIMG_KERNELIMAGE_raspberrypi3-64 ?= "kernel8.img"
>
>  # Boot partition volume id
>  BOOTDD_VOLUME_ID ?= "${MACHINE}"
> diff --git a/conf/machine/include/rpi-base.inc b/conf/machine/include/rpi-base.inc
> index 497dd29..f6e2997 100644
> --- a/conf/machine/include/rpi-base.inc
> +++ b/conf/machine/include/rpi-base.inc
> @@ -40,6 +40,27 @@ KERNEL_DEVICETREE ?= " \
>      overlays/pi3-miniuart-bt.dtbo \
>      overlays/vc4-kms-v3d.dtbo \
>      "
> +KERNEL_DEVICETREE_raspberrypi3-64 ?= " \
> +    broadcom/bcm2837-rpi-3-b.dtb \
> +    \
> +    broadcom/overlays/hifiberry-amp.dtbo \
> +    broadcom/overlays/hifiberry-dac.dtbo \
> +    broadcom/overlays/hifiberry-dacplus.dtbo \
> +    broadcom/overlays/hifiberry-digi.dtbo \
> +    broadcom/overlays/i2c-rtc.dtbo \
> +    broadcom/overlays/iqaudio-dac.dtbo \
> +    broadcom/overlays/iqaudio-dacplus.dtbo \
> +    broadcom/overlays/lirc-rpi.dtbo \
> +    broadcom/overlays/pitft22.dtbo \
> +    broadcom/overlays/pitft28-resistive.dtbo \
> +    broadcom/overlays/pps-gpio.dtbo \
> +    broadcom/overlays/rpi-ft5406.dtbo \
> +    broadcom/overlays/w1-gpio.dtbo \
> +    broadcom/overlays/w1-gpio-pullup.dtbo \
> +    broadcom/overlays/pi3-disable-bt.dtbo \
> +    broadcom/overlays/pi3-miniuart-bt.dtbo \
> +    broadcom/overlays/vc4-kms-v3d.dtbo \
> +    "
>  KERNEL_IMAGETYPE ?= "Image"
>
>  MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio"
> diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb
> index f610718..df87d3d 100644
> --- a/recipes-bsp/bootfiles/rpi-config_git.bb
> +++ b/recipes-bsp/bootfiles/rpi-config_git.bb
> @@ -112,6 +112,12 @@ do_deploy() {
>      fi
>  }
>
> +do_deploy_append_raspberrypi3-64() {
> +    # Device Tree support
> +    echo "# Load correct Device Tree for Aarch64" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
> +    echo "device_tree=bcm2837-rpi-3-b.dtb" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
> +}
> +
>  addtask deploy before do_package after do_install
>  do_deploy[dirs] += "${DEPLOYDIR}/bcm2835-bootfiles"
>
> diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc
> index 98229d9..6ae94ea 100644
> --- a/recipes-kernel/linux/linux-raspberrypi.inc
> +++ b/recipes-kernel/linux/linux-raspberrypi.inc
> @@ -18,6 +18,8 @@ PV = "${LINUX_VERSION}+git${SRCPV}"
>  # NOTE: For now we pull in the default config from the RPi kernel GIT tree.
>  KERNEL_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig"
>  KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig"
> +KERNEL_DEFCONFIG_raspberrypi3 ?= "bcm2709_defconfig"
> +KERNEL_DEFCONFIG_raspberrypi3-64 ?= "bcm2837_defconfig"
>
>  # CMDLINE for raspberrypi
>  CMDLINE = "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
> diff --git a/recipes-kernel/linux/linux-rpi.inc b/recipes-kernel/linux/linux-rpi.inc
> index 95a9530..27adf40 100644
> --- a/recipes-kernel/linux/linux-rpi.inc
> +++ b/recipes-kernel/linux/linux-rpi.inc
> @@ -39,12 +39,15 @@ do_configure_prepend() {
>      echo "" > ${B}/.config
>      CONF_SED_SCRIPT=""
>
> -    # oabi / eabi support
> -    kernel_configure_variable AEABI y
> -    if [ "${ARM_KEEP_OABI}" = "1" ] ; then
> -        kernel_configure_variable OABI_COMPAT y
> -    else
> -        kernel_configure_variable OABI_COMPAT n
> +    if [ "${ARCH}" = "arm" ]; then
> +
> +        # oabi / eabi support
> +        kernel_configure_variable AEABI y
> +        if [ "${ARM_KEEP_OABI}" = "1" ] ; then
> +            kernel_configure_variable OABI_COMPAT y
> +        else
> +            kernel_configure_variable OABI_COMPAT n
> +        fi
>      fi
>
>      # Set cmdline
> @@ -58,7 +61,11 @@ do_configure_prepend() {
>      # Newer versions of udev mandate that sysfs doesn't have deprecated entries
>      if [ "${UDEV_GE_141}" = "1" ] ; then
>          kernel_configure_variable SYSFS_DEPRECATED n
> -        kernel_configure_variable SYSFS_DEPRECATED_V2 n
> +
> +        if [ "${ARCH}" = "arm" ]; then
> +            kernel_configure_variable SYSFS_DEPRECATED_V2 n
> +        fi
> +
>          kernel_configure_variable HOTPLUG y
>          kernel_configure_variable UEVENT_HELPER_PATH "\"\""
>          kernel_configure_variable UNIX y
> @@ -77,13 +84,20 @@ do_configure_prepend() {
>      if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then
>          kernel_configure_variable CGROUP_SCHED y
>          kernel_configure_variable CGROUPS y
> -        kernel_configure_variable CGROUP_NS y
> +
> +        if [ "${ARCH}" = "arm" ]; then
> +            kernel_configure_variable CGROUP_NS y
> +        fi
> +
>          kernel_configure_variable CGROUP_FREEZER y
>          kernel_configure_variable CGROUP_DEVICE y
>          kernel_configure_variable CPUSETS y
>          kernel_configure_variable PROC_PID_CPUSET y
>          kernel_configure_variable CGROUP_CPUACCT y
> -        kernel_configure_variable RESOURCE_COUNTERS y
> +
> +        if [ "${ARCH}" = "arm" ]; then
> +            kernel_configure_variable RESOURCE_COUNTERS y
> +        fi
>      fi
>
>      # root-over-nfs-over-usb-eth support. Limited, but should cover some cases
> @@ -93,7 +107,11 @@ do_configure_prepend() {
>          kernel_configure_variable INET y
>          kernel_configure_variable IP_PNP y
>          kernel_configure_variable USB_GADGET y
> -        kernel_configure_variable USB_GADGET_SELECTED y
> +
> +        if [ "${ARCH}" = "arm" ]; then
> +            kernel_configure_variable USB_GADGET_SELECTED y
> +        fi
> +
>          kernel_configure_variable USB_ETH y
>          kernel_configure_variable NFS_FS y
>          kernel_configure_variable ROOT_NFS y
> --
> 2.7.4
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7)
  2016-11-20 12:46 ` [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7) Herve Jourdain
@ 2016-11-20 19:41   ` Khem Raj
  2016-11-21  5:03     ` Herve Jourdain
  0 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2016-11-20 19:41 UTC (permalink / raw
  To: Herve Jourdain; +Cc: yocto@yoctoproject.org

this patch needs some rework. user __PRIx64__ whereveer llx and lld
are used you dont need ifdefs
secondly all the backports should be a separate patch. All local
changes should be logically seprated individual patches.

On Sun, Nov 20, 2016 at 4:46 AM, Herve Jourdain <herve.jourdain@neuf.fr> wrote:
> Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
> ---
>  .../0001-fix-dtbo-rules.patch                      |   19 +-
>  .../0002-support-64bits.patch                      | 2080 ++++++++++++++++++++
>  recipes-kernel/linux/linux-raspberrypi_4.7.bb      |    2 +
>  3 files changed, 2098 insertions(+), 3 deletions(-)
>  create mode 100644 recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
>
> diff --git a/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch b/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
> index 5113e23..96f3c32 100644
> --- a/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
> +++ b/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
> @@ -1,7 +1,7 @@
> -From 13c8784da3dbd977f64cec740eba775b6fab11c2 Mon Sep 17 00:00:00 2001
> +From 13c8784da3dbd977f64cec740eba775b6fab11c2 Sat Nov 19 00:00:00 2001
>  From: Herve Jourdain <herve.jourdain@neuf.fr>
> -Date: Fri, 20 May 2016 16:02:23 +0800
> -Subject: [yocto][meta-raspberrypi][PATCH v4 4/5] linux-raspberrypi_4.4.inc:
> +Date: Sat, 19 Nov 2016 16:02:23 +0800
> +Subject: [yocto][meta-raspberrypi][PATCH] linux-raspberrypi_4.7.inc:
>   support for .dtbo files for dtb overlays
>
>  Upstream-Status: Pending
> @@ -28,6 +28,19 @@ index a2e7cf7..673c1cb 100644
>
>   PHONY += dtbs dtbs_install
>
> +diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
> +index 648a32c..68b8147 100644
> +--- a/arch/arm64/Makefile
> ++++ b/arch/arm64/Makefile
> +@@ -103,6 +103,8 @@ zinstall install:
> +
> + %.dtb: scripts
> +       $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
> ++%.dtbo: scripts
> ++      $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
> +
> + PHONY += dtbs dtbs_install
> +
>  diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
>  index 3079c4f..6cc3766 100644
>  --- a/scripts/Makefile.lib
> diff --git a/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch b/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
> new file mode 100644
> index 0000000..681e05a
> --- /dev/null
> +++ b/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
> @@ -0,0 +1,2080 @@
> +From dbf41aef92421f5601e2122cbee921561a56ad4b Mon Sep 17 00:00:00 2001
> +From: Herve Jourdain <herve.jourdain@neuf.fr>
> +Date: Wed, 31 Aug 2016 19:30:33 +0800
> +Subject: [PATCH] Support for 64bits (aarch64) v4.7 kernel on RaspberryPi3
> +
> +---
> + arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi      |   19 +
> + arch/arm/boot/dts/bcm283x.dtsi                   |    2 +
> + arch/arm64/Kconfig.platforms                     |   13 +
> + arch/arm64/boot/dts/broadcom/Makefile            |    5 +
> + arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts |   47 +
> + arch/arm64/boot/dts/broadcom/bcm2837.dtsi        |   76 ++
> + arch/arm64/boot/dts/broadcom/overlays            |    1 +
> + arch/arm64/configs/bcm2837_defconfig             | 1273 ++++++++++++++++++++++
> + arch/arm64/include/asm/dma-mapping.h             |   15 +-
> + drivers/irqchip/irq-bcm2835.c                    |   22 +
> + drivers/irqchip/irq-bcm2836.c                    |    8 +-
> + drivers/mmc/host/bcm2835-sdhost.c                |  104 ++
> + drivers/spi/spi-bcm2835.c                        |    4 +
> + drivers/tty/serial/amba-pl011.c                  |    2 +
> + drivers/video/fbdev/bcm2708_fb.c                 |    4 +
> + 15 files changed, 1592 insertions(+), 3 deletions(-)
> + create mode 100644 arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
> + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
> + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837.dtsi
> + create mode 120000 arch/arm64/boot/dts/broadcom/overlays
> + create mode 100644 arch/arm64/configs/bcm2837_defconfig
> +
> +diff --git a/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi b/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
> +new file mode 100644
> +index 0000000..3f0a56e
> +--- /dev/null
> ++++ b/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
> +@@ -0,0 +1,19 @@
> ++/ {
> ++      aliases {
> ++              ethernet = &ethernet;
> ++      };
> ++};
> ++
> ++&usb {
> ++      usb1@1 {
> ++              compatible = "usb424,9514";
> ++              reg = <1>;
> ++              #address-cells = <1>;
> ++              #size-cells = <0>;
> ++
> ++              ethernet: usbether@1 {
> ++                      compatible = "usb424,ec00";
> ++                      reg = <1>;
> ++              };
> ++      };
> ++};
> +diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
> +index 10b27b9..b982522 100644
> +--- a/arch/arm/boot/dts/bcm283x.dtsi
> ++++ b/arch/arm/boot/dts/bcm283x.dtsi
> +@@ -287,6 +287,8 @@
> +                       compatible = "brcm,bcm2835-usb";
> +                       reg = <0x7e980000 0x10000>;
> +                       interrupts = <1 9>;
> ++                      #address-cells = <1>;
> ++                      #size-cells = <0>;
> +               };
> +
> +               v3d: v3d@7ec00000 {
> +diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
> +index 7ef1d05..ea88402 100644
> +--- a/arch/arm64/Kconfig.platforms
> ++++ b/arch/arm64/Kconfig.platforms
> +@@ -13,6 +13,19 @@ config ARCH_ALPINE
> +         This enables support for the Annapurna Labs Alpine
> +         Soc family.
> +
> ++config ARCH_BCM2835
> ++      bool "Broadcom BCM2835 family"
> ++      select ARCH_REQUIRE_GPIOLIB
> ++      select CLKSRC_OF
> ++      select PINCTRL
> ++      select PINCTRL_BCM2835
> ++      select ARM_AMBA
> ++      select ARM_TIMER_SP804
> ++      select HAVE_ARM_ARCH_TIMER
> ++      help
> ++        This enables support for the Broadcom BCM2837 SoC.
> ++        This SoC is used in the Raspberry Pi 3 device.
> ++
> + config ARCH_BCM_IPROC
> +       bool "Broadcom iProc SoC Family"
> +       select COMMON_CLK_IPROC
> +diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
> +index bec1f8b..05faf2a 100644
> +--- a/arch/arm64/boot/dts/broadcom/Makefile
> ++++ b/arch/arm64/boot/dts/broadcom/Makefile
> +@@ -1,6 +1,11 @@
> ++dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb
> + dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb
> + dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb
> +
> ++ifeq ($(CONFIG_ARCH_BCM2835),y)
> ++    dts-dirs += overlays
> ++endif
> ++
> + always                := $(dtb-y)
> + subdir-y      := $(dts-dirs)
> + clean-files   := *.dtb
> +diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
> +new file mode 100644
> +index 0000000..e991ac1
> +--- /dev/null
> ++++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
> +@@ -0,0 +1,47 @@
> ++/dts-v1/;
> ++#include "bcm2837.dtsi"
> ++#include "../../../../arm/boot/dts/bcm2835-rpi.dtsi"
> ++#include "../../../../arm/boot/dts/bcm283x-rpi-smsc9514.dtsi"
> ++
> ++/ {
> ++      compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
> ++      model = "Raspberry Pi 3 Model B";
> ++
> ++      chosen {
> ++              bootargs = "";
> ++      };
> ++
> ++      memory {
> ++              reg = <0 0x40000000>;
> ++      };
> ++
> ++      leds {
> ++              act {
> ++                      gpios = <&gpio 47 0>;
> ++                      linux,default-trigger = "mmc0";
> ++              };
> ++
> ++              pwr {
> ++                      label = "PWR";
> ++                      gpios = <&gpio 35 0>;
> ++                      default-state = "keep";
> ++                      linux,default-trigger = "default-on";
> ++              };
> ++      };
> ++};
> ++
> ++&uart1 {
> ++      status = "okay";
> ++};
> ++
> ++&i2c0 {
> ++      clock-frequency = <100000>;
> ++};
> ++
> ++&i2c1 {
> ++      clock-frequency = <100000>;
> ++};
> ++
> ++&i2c2 {
> ++      clock-frequency = <100000>;
> ++};
> +diff --git a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
> +new file mode 100644
> +index 0000000..f2a31d0
> +--- /dev/null
> ++++ b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
> +@@ -0,0 +1,76 @@
> ++#include "../../../../arm/boot/dts/bcm283x.dtsi"
> ++
> ++/ {
> ++      compatible = "brcm,bcm2836";
> ++
> ++      soc {
> ++              ranges = <0x7e000000 0x3f000000 0x1000000>,
> ++                       <0x40000000 0x40000000 0x00001000>;
> ++              dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
> ++
> ++              local_intc: local_intc {
> ++                      compatible = "brcm,bcm2836-l1-intc";
> ++                      reg = <0x40000000 0x100>;
> ++                      interrupt-controller;
> ++                      #interrupt-cells = <1>;
> ++                      interrupt-parent = <&local_intc>;
> ++              };
> ++      };
> ++
> ++      timer {
> ++              compatible = "arm,armv7-timer";
> ++              interrupt-parent = <&local_intc>;
> ++              interrupts = <0>, // PHYS_SECURE_PPI
> ++                           <1>, // PHYS_NONSECURE_PPI
> ++                           <3>, // VIRT_PPI
> ++                           <2>; // HYP_PPI
> ++              always-on;
> ++      };
> ++
> ++      cpus: cpus {
> ++              #address-cells = <1>;
> ++              #size-cells = <0>;
> ++
> ++              cpu0: cpu@0 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <0>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000d8>;
> ++              };
> ++
> ++              cpu1: cpu@1 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <1>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000e0>;
> ++              };
> ++
> ++              cpu2: cpu@2 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <2>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000e8>;
> ++              };
> ++
> ++              cpu3: cpu@3 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <3>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000f0>;
> ++              };
> ++      };
> ++};
> ++
> ++/* Make the BCM2835-style global interrupt controller be a child of the
> ++ * CPU-local interrupt controller.
> ++ */
> ++&intc {
> ++      compatible = "brcm,bcm2836-armctrl-ic";
> ++      reg = <0x7e00b200 0x200>;
> ++      interrupt-parent = <&local_intc>;
> ++      interrupts = <8>;
> ++};
> +diff --git a/arch/arm64/boot/dts/broadcom/overlays b/arch/arm64/boot/dts/broadcom/overlays
> +new file mode 120000
> +index 0000000..d33085c
> +--- /dev/null
> ++++ b/arch/arm64/boot/dts/broadcom/overlays
> +@@ -0,0 +1 @@
> ++../../../../arm/boot/dts/overlays/
> +\ No newline at end of file
> +diff --git a/arch/arm64/configs/bcm2837_defconfig b/arch/arm64/configs/bcm2837_defconfig
> +new file mode 100644
> +index 0000000..c295da8
> +--- /dev/null
> ++++ b/arch/arm64/configs/bcm2837_defconfig
> +@@ -0,0 +1,1273 @@
> ++CONFIG_LOCALVERSION="-v8"
> ++# CONFIG_LOCALVERSION_AUTO is not set
> ++CONFIG_SYSVIPC=y
> ++CONFIG_POSIX_MQUEUE=y
> ++CONFIG_NO_HZ=y
> ++CONFIG_HIGH_RES_TIMERS=y
> ++CONFIG_BSD_PROCESS_ACCT=y
> ++CONFIG_BSD_PROCESS_ACCT_V3=y
> ++CONFIG_TASKSTATS=y
> ++CONFIG_TASK_DELAY_ACCT=y
> ++CONFIG_TASK_XACCT=y
> ++CONFIG_TASK_IO_ACCOUNTING=y
> ++CONFIG_IKCONFIG=m
> ++CONFIG_IKCONFIG_PROC=y
> ++CONFIG_MEMCG=y
> ++CONFIG_BLK_CGROUP=y
> ++CONFIG_CGROUP_FREEZER=y
> ++CONFIG_CPUSETS=y
> ++CONFIG_CGROUP_DEVICE=y
> ++CONFIG_CGROUP_CPUACCT=y
> ++CONFIG_NAMESPACES=y
> ++CONFIG_USER_NS=y
> ++CONFIG_SCHED_AUTOGROUP=y
> ++CONFIG_BLK_DEV_INITRD=y
> ++CONFIG_EMBEDDED=y
> ++# CONFIG_COMPAT_BRK is not set
> ++CONFIG_PROFILING=y
> ++CONFIG_JUMP_LABEL=y
> ++CONFIG_MODULES=y
> ++CONFIG_MODULE_UNLOAD=y
> ++CONFIG_MODVERSIONS=y
> ++CONFIG_MODULE_SRCVERSION_ALL=y
> ++CONFIG_TRIM_UNUSED_KSYMS=y
> ++CONFIG_BLK_DEV_THROTTLING=y
> ++CONFIG_PARTITION_ADVANCED=y
> ++CONFIG_MAC_PARTITION=y
> ++CONFIG_CFQ_GROUP_IOSCHED=y
> ++CONFIG_ARCH_BCM2835=y
> ++CONFIG_NR_CPUS=4
> ++CONFIG_HOTPLUG_CPU=y
> ++CONFIG_PREEMPT_VOLUNTARY=y
> ++CONFIG_HZ_100=y
> ++CONFIG_CLEANCACHE=y
> ++CONFIG_FRONTSWAP=y
> ++CONFIG_CMA=y
> ++CONFIG_ZSMALLOC=m
> ++CONFIG_PGTABLE_MAPPING=y
> ++CONFIG_SECCOMP=y
> ++CONFIG_CMDLINE="console=ttyS0,115200 kgdboc=ttyS0,115200 root=/dev/mmcblk0p2 rootfs=ext4 rootwait"
> ++# CONFIG_EFI is not set
> ++CONFIG_BINFMT_MISC=m
> ++CONFIG_COMPAT=y
> ++# CONFIG_SUSPEND is not set
> ++CONFIG_PM=y
> ++CONFIG_CPU_FREQ=y
> ++CONFIG_CPU_FREQ_STAT=m
> ++CONFIG_CPU_FREQ_STAT_DETAILS=y
> ++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
> ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
> ++CONFIG_CPU_FREQ_GOV_USERSPACE=y
> ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y
> ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
> ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
> ++CONFIG_NET=y
> ++CONFIG_PACKET=y
> ++CONFIG_UNIX=y
> ++CONFIG_XFRM_USER=y
> ++CONFIG_NET_KEY=m
> ++CONFIG_INET=y
> ++CONFIG_IP_MULTICAST=y
> ++CONFIG_IP_ADVANCED_ROUTER=y
> ++CONFIG_IP_MULTIPLE_TABLES=y
> ++CONFIG_IP_ROUTE_MULTIPATH=y
> ++CONFIG_IP_ROUTE_VERBOSE=y
> ++CONFIG_IP_PNP=y
> ++CONFIG_IP_PNP_DHCP=y
> ++CONFIG_IP_PNP_RARP=y
> ++CONFIG_NET_IPIP=m
> ++CONFIG_NET_IPGRE_DEMUX=m
> ++CONFIG_NET_IPGRE=m
> ++CONFIG_IP_MROUTE=y
> ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
> ++CONFIG_IP_PIMSM_V1=y
> ++CONFIG_IP_PIMSM_V2=y
> ++CONFIG_SYN_COOKIES=y
> ++CONFIG_INET_AH=m
> ++CONFIG_INET_ESP=m
> ++CONFIG_INET_IPCOMP=m
> ++CONFIG_INET_XFRM_MODE_TRANSPORT=m
> ++CONFIG_INET_XFRM_MODE_TUNNEL=m
> ++CONFIG_INET_XFRM_MODE_BEET=m
> ++CONFIG_INET_DIAG=m
> ++CONFIG_IPV6=m
> ++CONFIG_IPV6_ROUTER_PREF=y
> ++CONFIG_INET6_AH=m
> ++CONFIG_INET6_ESP=m
> ++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
> ++CONFIG_NETFILTER=y
> ++CONFIG_NF_CONNTRACK=m
> ++CONFIG_NF_CONNTRACK_EVENTS=y
> ++CONFIG_NF_CONNTRACK_TIMESTAMP=y
> ++CONFIG_NF_CT_PROTO_DCCP=m
> ++CONFIG_NF_CT_PROTO_UDPLITE=m
> ++CONFIG_NF_CONNTRACK_AMANDA=m
> ++CONFIG_NF_CONNTRACK_FTP=m
> ++CONFIG_NF_CONNTRACK_H323=m
> ++CONFIG_NF_CONNTRACK_IRC=m
> ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m
> ++CONFIG_NF_CONNTRACK_SNMP=m
> ++CONFIG_NF_CONNTRACK_PPTP=m
> ++CONFIG_NF_CONNTRACK_SANE=m
> ++CONFIG_NF_CONNTRACK_SIP=m
> ++CONFIG_NF_CONNTRACK_TFTP=m
> ++CONFIG_NF_CT_NETLINK=m
> ++CONFIG_NETFILTER_XT_SET=m
> ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
> ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
> ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
> ++CONFIG_NETFILTER_XT_TARGET_DSCP=m
> ++CONFIG_NETFILTER_XT_TARGET_HMARK=m
> ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
> ++CONFIG_NETFILTER_XT_TARGET_LED=m
> ++CONFIG_NETFILTER_XT_TARGET_LOG=m
> ++CONFIG_NETFILTER_XT_TARGET_MARK=m
> ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m
> ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
> ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
> ++CONFIG_NETFILTER_XT_TARGET_TEE=m
> ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m
> ++CONFIG_NETFILTER_XT_TARGET_TRACE=m
> ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
> ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
> ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
> ++CONFIG_NETFILTER_XT_MATCH_BPF=m
> ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
> ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
> ++CONFIG_NETFILTER_XT_MATCH_CPU=m
> ++CONFIG_NETFILTER_XT_MATCH_DCCP=m
> ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
> ++CONFIG_NETFILTER_XT_MATCH_DSCP=m
> ++CONFIG_NETFILTER_XT_MATCH_ESP=m
> ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
> ++CONFIG_NETFILTER_XT_MATCH_HELPER=m
> ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
> ++CONFIG_NETFILTER_XT_MATCH_IPVS=m
> ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
> ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
> ++CONFIG_NETFILTER_XT_MATCH_MAC=m
> ++CONFIG_NETFILTER_XT_MATCH_MARK=m
> ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
> ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m
> ++CONFIG_NETFILTER_XT_MATCH_OSF=m
> ++CONFIG_NETFILTER_XT_MATCH_OWNER=m
> ++CONFIG_NETFILTER_XT_MATCH_POLICY=m
> ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
> ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
> ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
> ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m
> ++CONFIG_NETFILTER_XT_MATCH_REALM=m
> ++CONFIG_NETFILTER_XT_MATCH_RECENT=m
> ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m
> ++CONFIG_NETFILTER_XT_MATCH_STATE=m
> ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
> ++CONFIG_NETFILTER_XT_MATCH_STRING=m
> ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
> ++CONFIG_NETFILTER_XT_MATCH_TIME=m
> ++CONFIG_NETFILTER_XT_MATCH_U32=m
> ++CONFIG_IP_SET=m
> ++CONFIG_IP_SET_BITMAP_IP=m
> ++CONFIG_IP_SET_BITMAP_IPMAC=m
> ++CONFIG_IP_SET_BITMAP_PORT=m
> ++CONFIG_IP_SET_HASH_IP=m
> ++CONFIG_IP_SET_HASH_IPPORT=m
> ++CONFIG_IP_SET_HASH_IPPORTIP=m
> ++CONFIG_IP_SET_HASH_IPPORTNET=m
> ++CONFIG_IP_SET_HASH_NET=m
> ++CONFIG_IP_SET_HASH_NETPORT=m
> ++CONFIG_IP_SET_HASH_NETIFACE=m
> ++CONFIG_IP_SET_LIST_SET=m
> ++CONFIG_IP_VS=m
> ++CONFIG_IP_VS_PROTO_TCP=y
> ++CONFIG_IP_VS_PROTO_UDP=y
> ++CONFIG_IP_VS_PROTO_ESP=y
> ++CONFIG_IP_VS_PROTO_AH=y
> ++CONFIG_IP_VS_PROTO_SCTP=y
> ++CONFIG_IP_VS_RR=m
> ++CONFIG_IP_VS_WRR=m
> ++CONFIG_IP_VS_LC=m
> ++CONFIG_IP_VS_WLC=m
> ++CONFIG_IP_VS_LBLC=m
> ++CONFIG_IP_VS_LBLCR=m
> ++CONFIG_IP_VS_DH=m
> ++CONFIG_IP_VS_SH=m
> ++CONFIG_IP_VS_SED=m
> ++CONFIG_IP_VS_NQ=m
> ++CONFIG_IP_VS_FTP=m
> ++CONFIG_IP_VS_PE_SIP=m
> ++CONFIG_NF_CONNTRACK_IPV4=m
> ++CONFIG_IP_NF_IPTABLES=m
> ++CONFIG_IP_NF_MATCH_AH=m
> ++CONFIG_IP_NF_MATCH_ECN=m
> ++CONFIG_IP_NF_MATCH_RPFILTER=m
> ++CONFIG_IP_NF_MATCH_TTL=m
> ++CONFIG_IP_NF_FILTER=m
> ++CONFIG_IP_NF_TARGET_REJECT=m
> ++CONFIG_IP_NF_NAT=m
> ++CONFIG_IP_NF_TARGET_MASQUERADE=m
> ++CONFIG_IP_NF_TARGET_NETMAP=m
> ++CONFIG_IP_NF_TARGET_REDIRECT=m
> ++CONFIG_IP_NF_MANGLE=m
> ++CONFIG_IP_NF_TARGET_CLUSTERIP=m
> ++CONFIG_IP_NF_TARGET_ECN=m
> ++CONFIG_IP_NF_TARGET_TTL=m
> ++CONFIG_IP_NF_RAW=m
> ++CONFIG_IP_NF_ARPTABLES=m
> ++CONFIG_IP_NF_ARPFILTER=m
> ++CONFIG_IP_NF_ARP_MANGLE=m
> ++CONFIG_NF_CONNTRACK_IPV6=m
> ++CONFIG_IP6_NF_IPTABLES=m
> ++CONFIG_IP6_NF_MATCH_AH=m
> ++CONFIG_IP6_NF_MATCH_EUI64=m
> ++CONFIG_IP6_NF_MATCH_FRAG=m
> ++CONFIG_IP6_NF_MATCH_OPTS=m
> ++CONFIG_IP6_NF_MATCH_HL=m
> ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m
> ++CONFIG_IP6_NF_MATCH_MH=m
> ++CONFIG_IP6_NF_MATCH_RPFILTER=m
> ++CONFIG_IP6_NF_MATCH_RT=m
> ++CONFIG_IP6_NF_TARGET_HL=m
> ++CONFIG_IP6_NF_FILTER=m
> ++CONFIG_IP6_NF_TARGET_REJECT=m
> ++CONFIG_IP6_NF_MANGLE=m
> ++CONFIG_IP6_NF_RAW=m
> ++CONFIG_IP6_NF_NAT=m
> ++CONFIG_IP6_NF_TARGET_MASQUERADE=m
> ++CONFIG_IP6_NF_TARGET_NPT=m
> ++CONFIG_BRIDGE_NF_EBTABLES=m
> ++CONFIG_BRIDGE_EBT_BROUTE=m
> ++CONFIG_BRIDGE_EBT_T_FILTER=m
> ++CONFIG_BRIDGE_EBT_T_NAT=m
> ++CONFIG_BRIDGE_EBT_802_3=m
> ++CONFIG_BRIDGE_EBT_AMONG=m
> ++CONFIG_BRIDGE_EBT_ARP=m
> ++CONFIG_BRIDGE_EBT_IP=m
> ++CONFIG_BRIDGE_EBT_IP6=m
> ++CONFIG_BRIDGE_EBT_LIMIT=m
> ++CONFIG_BRIDGE_EBT_MARK=m
> ++CONFIG_BRIDGE_EBT_PKTTYPE=m
> ++CONFIG_BRIDGE_EBT_STP=m
> ++CONFIG_BRIDGE_EBT_VLAN=m
> ++CONFIG_BRIDGE_EBT_ARPREPLY=m
> ++CONFIG_BRIDGE_EBT_DNAT=m
> ++CONFIG_BRIDGE_EBT_MARK_T=m
> ++CONFIG_BRIDGE_EBT_REDIRECT=m
> ++CONFIG_BRIDGE_EBT_SNAT=m
> ++CONFIG_BRIDGE_EBT_LOG=m
> ++CONFIG_BRIDGE_EBT_NFLOG=m
> ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y
> ++CONFIG_ATM=m
> ++CONFIG_L2TP=m
> ++CONFIG_L2TP_V3=y
> ++CONFIG_L2TP_IP=m
> ++CONFIG_L2TP_ETH=m
> ++CONFIG_BRIDGE=m
> ++CONFIG_VLAN_8021Q=m
> ++CONFIG_VLAN_8021Q_GVRP=y
> ++CONFIG_ATALK=m
> ++CONFIG_6LOWPAN=m
> ++CONFIG_IEEE802154=m
> ++CONFIG_IEEE802154_6LOWPAN=m
> ++CONFIG_MAC802154=m
> ++CONFIG_NET_SCHED=y
> ++CONFIG_NET_SCH_CBQ=m
> ++CONFIG_NET_SCH_HTB=m
> ++CONFIG_NET_SCH_HFSC=m
> ++CONFIG_NET_SCH_PRIO=m
> ++CONFIG_NET_SCH_MULTIQ=m
> ++CONFIG_NET_SCH_RED=m
> ++CONFIG_NET_SCH_SFB=m
> ++CONFIG_NET_SCH_SFQ=m
> ++CONFIG_NET_SCH_TEQL=m
> ++CONFIG_NET_SCH_TBF=m
> ++CONFIG_NET_SCH_GRED=m
> ++CONFIG_NET_SCH_DSMARK=m
> ++CONFIG_NET_SCH_NETEM=m
> ++CONFIG_NET_SCH_DRR=m
> ++CONFIG_NET_SCH_MQPRIO=m
> ++CONFIG_NET_SCH_CHOKE=m
> ++CONFIG_NET_SCH_QFQ=m
> ++CONFIG_NET_SCH_CODEL=m
> ++CONFIG_NET_SCH_FQ_CODEL=m
> ++CONFIG_NET_SCH_INGRESS=m
> ++CONFIG_NET_SCH_PLUG=m
> ++CONFIG_NET_CLS_BASIC=m
> ++CONFIG_NET_CLS_TCINDEX=m
> ++CONFIG_NET_CLS_ROUTE4=m
> ++CONFIG_NET_CLS_FW=m
> ++CONFIG_NET_CLS_U32=m
> ++CONFIG_CLS_U32_MARK=y
> ++CONFIG_NET_CLS_RSVP=m
> ++CONFIG_NET_CLS_RSVP6=m
> ++CONFIG_NET_CLS_FLOW=m
> ++CONFIG_NET_CLS_CGROUP=m
> ++CONFIG_NET_EMATCH=y
> ++CONFIG_NET_EMATCH_CMP=m
> ++CONFIG_NET_EMATCH_NBYTE=m
> ++CONFIG_NET_EMATCH_U32=m
> ++CONFIG_NET_EMATCH_META=m
> ++CONFIG_NET_EMATCH_TEXT=m
> ++CONFIG_NET_EMATCH_IPSET=m
> ++CONFIG_NET_CLS_ACT=y
> ++CONFIG_NET_ACT_POLICE=m
> ++CONFIG_NET_ACT_GACT=m
> ++CONFIG_GACT_PROB=y
> ++CONFIG_NET_ACT_MIRRED=m
> ++CONFIG_NET_ACT_IPT=m
> ++CONFIG_NET_ACT_NAT=m
> ++CONFIG_NET_ACT_PEDIT=m
> ++CONFIG_NET_ACT_SIMP=m
> ++CONFIG_NET_ACT_SKBEDIT=m
> ++CONFIG_NET_ACT_CSUM=m
> ++CONFIG_BATMAN_ADV=m
> ++CONFIG_OPENVSWITCH=m
> ++CONFIG_NET_PKTGEN=m
> ++CONFIG_HAMRADIO=y
> ++CONFIG_AX25=m
> ++CONFIG_NETROM=m
> ++CONFIG_ROSE=m
> ++CONFIG_MKISS=m
> ++CONFIG_6PACK=m
> ++CONFIG_BPQETHER=m
> ++CONFIG_BAYCOM_SER_FDX=m
> ++CONFIG_BAYCOM_SER_HDX=m
> ++CONFIG_YAM=m
> ++CONFIG_CAN=m
> ++CONFIG_CAN_VCAN=m
> ++CONFIG_CAN_MCP251X=m
> ++CONFIG_IRDA=m
> ++CONFIG_IRLAN=m
> ++CONFIG_IRNET=m
> ++CONFIG_IRCOMM=m
> ++CONFIG_IRDA_ULTRA=y
> ++CONFIG_IRDA_CACHE_LAST_LSAP=y
> ++CONFIG_IRDA_FAST_RR=y
> ++CONFIG_IRTTY_SIR=m
> ++CONFIG_KINGSUN_DONGLE=m
> ++CONFIG_KSDAZZLE_DONGLE=m
> ++CONFIG_KS959_DONGLE=m
> ++CONFIG_USB_IRDA=m
> ++CONFIG_SIGMATEL_FIR=m
> ++CONFIG_MCS_FIR=m
> ++CONFIG_BT=m
> ++CONFIG_BT_RFCOMM=m
> ++CONFIG_BT_RFCOMM_TTY=y
> ++CONFIG_BT_BNEP=m
> ++CONFIG_BT_BNEP_MC_FILTER=y
> ++CONFIG_BT_BNEP_PROTO_FILTER=y
> ++CONFIG_BT_HIDP=m
> ++CONFIG_BT_6LOWPAN=m
> ++CONFIG_BT_HCIBTUSB=m
> ++CONFIG_BT_HCIUART=m
> ++CONFIG_BT_HCIUART_3WIRE=y
> ++CONFIG_BT_HCIUART_BCM=y
> ++CONFIG_BT_HCIBCM203X=m
> ++CONFIG_BT_HCIBPA10X=m
> ++CONFIG_BT_HCIBFUSB=m
> ++CONFIG_BT_HCIVHCI=m
> ++CONFIG_BT_MRVL=m
> ++CONFIG_BT_MRVL_SDIO=m
> ++CONFIG_BT_ATH3K=m
> ++CONFIG_BT_WILINK=m
> ++CONFIG_CFG80211_WEXT=y
> ++CONFIG_MAC80211=m
> ++CONFIG_MAC80211_MESH=y
> ++CONFIG_WIMAX=m
> ++CONFIG_RFKILL=m
> ++CONFIG_RFKILL_INPUT=y
> ++CONFIG_NET_9P=m
> ++CONFIG_NFC=m
> ++CONFIG_DEVTMPFS=y
> ++CONFIG_DEVTMPFS_MOUNT=y
> ++CONFIG_DMA_CMA=y
> ++CONFIG_MTD=m
> ++CONFIG_MTD_BLOCK=m
> ++CONFIG_MTD_NAND=m
> ++CONFIG_MTD_UBI=m
> ++CONFIG_OF_CONFIGFS=y
> ++CONFIG_ZRAM=m
> ++CONFIG_ZRAM_LZ4_COMPRESS=y
> ++CONFIG_BLK_DEV_LOOP=y
> ++CONFIG_BLK_DEV_CRYPTOLOOP=m
> ++CONFIG_BLK_DEV_DRBD=m
> ++CONFIG_BLK_DEV_NBD=m
> ++CONFIG_BLK_DEV_RAM=y
> ++CONFIG_CDROM_PKTCDVD=m
> ++CONFIG_ATA_OVER_ETH=m
> ++CONFIG_EEPROM_AT24=m
> ++CONFIG_TI_ST=m
> ++# CONFIG_BCM2708_VCHIQ is not set
> ++CONFIG_SCSI=y
> ++# CONFIG_SCSI_PROC_FS is not set
> ++CONFIG_BLK_DEV_SD=y
> ++CONFIG_CHR_DEV_ST=m
> ++CONFIG_CHR_DEV_OSST=m
> ++CONFIG_BLK_DEV_SR=m
> ++CONFIG_CHR_DEV_SG=m
> ++CONFIG_SCSI_ISCSI_ATTRS=y
> ++CONFIG_ISCSI_TCP=m
> ++CONFIG_ISCSI_BOOT_SYSFS=m
> ++CONFIG_MD=y
> ++CONFIG_MD_LINEAR=m
> ++CONFIG_MD_RAID0=m
> ++CONFIG_BLK_DEV_DM=m
> ++CONFIG_DM_CRYPT=m
> ++CONFIG_DM_SNAPSHOT=m
> ++CONFIG_DM_THIN_PROVISIONING=m
> ++CONFIG_DM_MIRROR=m
> ++CONFIG_DM_LOG_USERSPACE=m
> ++CONFIG_DM_RAID=m
> ++CONFIG_DM_ZERO=m
> ++CONFIG_DM_DELAY=m
> ++CONFIG_NETDEVICES=y
> ++CONFIG_BONDING=m
> ++CONFIG_DUMMY=m
> ++CONFIG_IFB=m
> ++CONFIG_MACVLAN=m
> ++CONFIG_NETCONSOLE=m
> ++CONFIG_TUN=m
> ++CONFIG_VETH=m
> ++# CONFIG_NET_VENDOR_AMD is not set
> ++CONFIG_ENC28J60=m
> ++CONFIG_QCA7000=m
> ++CONFIG_MDIO_BITBANG=m
> ++CONFIG_PPP=m
> ++CONFIG_PPP_BSDCOMP=m
> ++CONFIG_PPP_DEFLATE=m
> ++CONFIG_PPP_FILTER=y
> ++CONFIG_PPP_MPPE=m
> ++CONFIG_PPP_MULTILINK=y
> ++CONFIG_PPPOATM=m
> ++CONFIG_PPPOE=m
> ++CONFIG_PPPOL2TP=m
> ++CONFIG_PPP_ASYNC=m
> ++CONFIG_PPP_SYNC_TTY=m
> ++CONFIG_SLIP=m
> ++CONFIG_SLIP_COMPRESSED=y
> ++CONFIG_SLIP_SMART=y
> ++CONFIG_USB_CATC=m
> ++CONFIG_USB_KAWETH=m
> ++CONFIG_USB_PEGASUS=m
> ++CONFIG_USB_RTL8150=m
> ++CONFIG_USB_RTL8152=m
> ++CONFIG_USB_USBNET=y
> ++CONFIG_USB_NET_AX8817X=m
> ++CONFIG_USB_NET_AX88179_178A=m
> ++CONFIG_USB_NET_CDCETHER=m
> ++CONFIG_USB_NET_CDC_EEM=m
> ++CONFIG_USB_NET_CDC_NCM=m
> ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m
> ++CONFIG_USB_NET_CDC_MBIM=m
> ++CONFIG_USB_NET_DM9601=m
> ++CONFIG_USB_NET_SR9700=m
> ++CONFIG_USB_NET_SR9800=m
> ++CONFIG_USB_NET_SMSC75XX=m
> ++CONFIG_USB_NET_SMSC95XX=y
> ++CONFIG_USB_NET_GL620A=m
> ++CONFIG_USB_NET_NET1080=m
> ++CONFIG_USB_NET_PLUSB=m
> ++CONFIG_USB_NET_MCS7830=m
> ++CONFIG_USB_NET_CDC_SUBSET=m
> ++CONFIG_USB_ALI_M5632=y
> ++CONFIG_USB_AN2720=y
> ++CONFIG_USB_EPSON2888=y
> ++CONFIG_USB_KC2190=y
> ++CONFIG_USB_NET_ZAURUS=m
> ++CONFIG_USB_NET_CX82310_ETH=m
> ++CONFIG_USB_NET_KALMIA=m
> ++CONFIG_USB_NET_QMI_WWAN=m
> ++CONFIG_USB_HSO=m
> ++CONFIG_USB_NET_INT51X1=m
> ++CONFIG_USB_IPHETH=m
> ++CONFIG_USB_SIERRA_NET=m
> ++CONFIG_USB_VL600=m
> ++CONFIG_ATH9K=m
> ++CONFIG_ATH9K_HTC=m
> ++CONFIG_CARL9170=m
> ++CONFIG_ATH6KL=m
> ++CONFIG_ATH6KL_USB=m
> ++CONFIG_AR5523=m
> ++CONFIG_AT76C50X_USB=m
> ++CONFIG_B43=m
> ++# CONFIG_B43_PHY_N is not set
> ++CONFIG_B43LEGACY=m
> ++CONFIG_BRCMFMAC=m
> ++CONFIG_BRCMFMAC_USB=y
> ++CONFIG_HOSTAP=m
> ++CONFIG_P54_COMMON=m
> ++CONFIG_P54_USB=m
> ++CONFIG_LIBERTAS=m
> ++CONFIG_LIBERTAS_USB=m
> ++CONFIG_LIBERTAS_SDIO=m
> ++CONFIG_LIBERTAS_THINFIRM=m
> ++CONFIG_LIBERTAS_THINFIRM_USB=m
> ++CONFIG_MWIFIEX=m
> ++CONFIG_MWIFIEX_SDIO=m
> ++CONFIG_MT7601U=m
> ++CONFIG_RT2X00=m
> ++CONFIG_RT2500USB=m
> ++CONFIG_RT73USB=m
> ++CONFIG_RT2800USB=m
> ++CONFIG_RT2800USB_RT3573=y
> ++CONFIG_RT2800USB_RT53XX=y
> ++CONFIG_RT2800USB_RT55XX=y
> ++CONFIG_RT2800USB_UNKNOWN=y
> ++CONFIG_RTL8187=m
> ++CONFIG_USB_ZD1201=m
> ++CONFIG_ZD1211RW=m
> ++CONFIG_MAC80211_HWSIM=m
> ++CONFIG_USB_NET_RNDIS_WLAN=m
> ++CONFIG_WIMAX_I2400M_USB=m
> ++CONFIG_IEEE802154_AT86RF230=m
> ++CONFIG_IEEE802154_MRF24J40=m
> ++CONFIG_IEEE802154_CC2520=m
> ++CONFIG_INPUT_POLLDEV=m
> ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
> ++CONFIG_INPUT_JOYDEV=m
> ++CONFIG_INPUT_EVDEV=m
> ++# CONFIG_KEYBOARD_ATKBD is not set
> ++CONFIG_KEYBOARD_GPIO=m
> ++# CONFIG_INPUT_MOUSE is not set
> ++CONFIG_INPUT_JOYSTICK=y
> ++CONFIG_JOYSTICK_IFORCE=m
> ++CONFIG_JOYSTICK_IFORCE_USB=y
> ++CONFIG_JOYSTICK_XPAD=m
> ++CONFIG_JOYSTICK_XPAD_FF=y
> ++CONFIG_JOYSTICK_XPAD_LEDS=y
> ++CONFIG_JOYSTICK_RPISENSE=m
> ++CONFIG_INPUT_TOUCHSCREEN=y
> ++CONFIG_TOUCHSCREEN_ADS7846=m
> ++CONFIG_TOUCHSCREEN_EGALAX=m
> ++CONFIG_TOUCHSCREEN_FT6236=m
> ++CONFIG_TOUCHSCREEN_RPI_FT5406=m
> ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
> ++CONFIG_TOUCHSCREEN_STMPE=m
> ++CONFIG_INPUT_MISC=y
> ++CONFIG_INPUT_AD714X=m
> ++CONFIG_INPUT_ATI_REMOTE2=m
> ++CONFIG_INPUT_KEYSPAN_REMOTE=m
> ++CONFIG_INPUT_POWERMATE=m
> ++CONFIG_INPUT_YEALINK=m
> ++CONFIG_INPUT_CM109=m
> ++CONFIG_INPUT_UINPUT=m
> ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
> ++CONFIG_INPUT_ADXL34X=m
> ++CONFIG_INPUT_CMA3000=m
> ++CONFIG_SERIO=m
> ++CONFIG_SERIO_RAW=m
> ++CONFIG_GAMEPORT=m
> ++CONFIG_GAMEPORT_NS558=m
> ++CONFIG_GAMEPORT_L4=m
> ++# CONFIG_LEGACY_PTYS is not set
> ++# CONFIG_DEVKMEM is not set
> ++CONFIG_SERIAL_8250=y
> ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
> ++CONFIG_SERIAL_8250_CONSOLE=y
> ++# CONFIG_SERIAL_8250_DMA is not set
> ++CONFIG_SERIAL_8250_NR_UARTS=1
> ++CONFIG_SERIAL_8250_RUNTIME_UARTS=1
> ++CONFIG_SERIAL_8250_EXTENDED=y
> ++CONFIG_SERIAL_8250_SHARE_IRQ=y
> ++CONFIG_SERIAL_8250_BCM2835AUX=y
> ++CONFIG_SERIAL_OF_PLATFORM=y
> ++CONFIG_SERIAL_AMBA_PL011=y
> ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
> ++CONFIG_TTY_PRINTK=y
> ++CONFIG_HW_RANDOM=y
> ++CONFIG_RAW_DRIVER=y
> ++CONFIG_I2C=y
> ++CONFIG_I2C_CHARDEV=m
> ++CONFIG_I2C_MUX_PCA954x=m
> ++CONFIG_I2C_BCM2835=m
> ++CONFIG_I2C_GPIO=m
> ++CONFIG_SPI=y
> ++CONFIG_SPI_BCM2835=m
> ++CONFIG_SPI_BCM2835AUX=m
> ++CONFIG_SPI_SPIDEV=y
> ++CONFIG_PPS=m
> ++CONFIG_PPS_CLIENT_LDISC=m
> ++CONFIG_PPS_CLIENT_GPIO=m
> ++CONFIG_GPIO_SYSFS=y
> ++CONFIG_GPIO_BCM_VIRT=y
> ++CONFIG_GPIO_ARIZONA=m
> ++CONFIG_GPIO_STMPE=y
> ++CONFIG_GPIO_MCP23S08=m
> ++CONFIG_W1=m
> ++CONFIG_W1_MASTER_DS2490=m
> ++CONFIG_W1_MASTER_DS2482=m
> ++CONFIG_W1_MASTER_DS1WM=m
> ++CONFIG_W1_MASTER_GPIO=m
> ++CONFIG_W1_SLAVE_THERM=m
> ++CONFIG_W1_SLAVE_SMEM=m
> ++CONFIG_W1_SLAVE_DS2408=m
> ++CONFIG_W1_SLAVE_DS2413=m
> ++CONFIG_W1_SLAVE_DS2406=m
> ++CONFIG_W1_SLAVE_DS2423=m
> ++CONFIG_W1_SLAVE_DS2431=m
> ++CONFIG_W1_SLAVE_DS2433=m
> ++CONFIG_W1_SLAVE_DS2760=m
> ++CONFIG_W1_SLAVE_DS2780=m
> ++CONFIG_W1_SLAVE_DS2781=m
> ++CONFIG_W1_SLAVE_DS28E04=m
> ++CONFIG_W1_SLAVE_BQ27000=m
> ++CONFIG_BATTERY_DS2760=m
> ++CONFIG_POWER_RESET_GPIO=y
> ++CONFIG_HWMON=m
> ++CONFIG_SENSORS_SHT21=m
> ++CONFIG_SENSORS_SHTC1=m
> ++CONFIG_THERMAL=y
> ++CONFIG_THERMAL_BCM2835=y
> ++CONFIG_WATCHDOG=y
> ++CONFIG_BCM2835_WDT=m
> ++CONFIG_MFD_STMPE=y
> ++CONFIG_STMPE_SPI=y
> ++CONFIG_MFD_SYSCON=y
> ++CONFIG_MFD_ARIZONA_I2C=m
> ++CONFIG_MFD_ARIZONA_SPI=m
> ++CONFIG_MFD_WM5102=y
> ++CONFIG_MEDIA_SUPPORT=m
> ++CONFIG_MEDIA_CAMERA_SUPPORT=y
> ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
> ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
> ++CONFIG_MEDIA_RADIO_SUPPORT=y
> ++CONFIG_MEDIA_RC_SUPPORT=y
> ++CONFIG_MEDIA_CONTROLLER=y
> ++CONFIG_LIRC=m
> ++CONFIG_RC_DEVICES=y
> ++CONFIG_RC_ATI_REMOTE=m
> ++CONFIG_IR_IMON=m
> ++CONFIG_IR_MCEUSB=m
> ++CONFIG_IR_REDRAT3=m
> ++CONFIG_IR_STREAMZAP=m
> ++CONFIG_IR_IGUANA=m
> ++CONFIG_IR_TTUSBIR=m
> ++CONFIG_RC_LOOPBACK=m
> ++CONFIG_IR_GPIO_CIR=m
> ++CONFIG_MEDIA_USB_SUPPORT=y
> ++CONFIG_USB_VIDEO_CLASS=m
> ++CONFIG_USB_M5602=m
> ++CONFIG_USB_STV06XX=m
> ++CONFIG_USB_GL860=m
> ++CONFIG_USB_GSPCA_BENQ=m
> ++CONFIG_USB_GSPCA_CONEX=m
> ++CONFIG_USB_GSPCA_CPIA1=m
> ++CONFIG_USB_GSPCA_DTCS033=m
> ++CONFIG_USB_GSPCA_ETOMS=m
> ++CONFIG_USB_GSPCA_FINEPIX=m
> ++CONFIG_USB_GSPCA_JEILINJ=m
> ++CONFIG_USB_GSPCA_JL2005BCD=m
> ++CONFIG_USB_GSPCA_KINECT=m
> ++CONFIG_USB_GSPCA_KONICA=m
> ++CONFIG_USB_GSPCA_MARS=m
> ++CONFIG_USB_GSPCA_MR97310A=m
> ++CONFIG_USB_GSPCA_NW80X=m
> ++CONFIG_USB_GSPCA_OV519=m
> ++CONFIG_USB_GSPCA_OV534=m
> ++CONFIG_USB_GSPCA_OV534_9=m
> ++CONFIG_USB_GSPCA_PAC207=m
> ++CONFIG_USB_GSPCA_PAC7302=m
> ++CONFIG_USB_GSPCA_PAC7311=m
> ++CONFIG_USB_GSPCA_SE401=m
> ++CONFIG_USB_GSPCA_SN9C2028=m
> ++CONFIG_USB_GSPCA_SN9C20X=m
> ++CONFIG_USB_GSPCA_SONIXB=m
> ++CONFIG_USB_GSPCA_SONIXJ=m
> ++CONFIG_USB_GSPCA_SPCA500=m
> ++CONFIG_USB_GSPCA_SPCA501=m
> ++CONFIG_USB_GSPCA_SPCA505=m
> ++CONFIG_USB_GSPCA_SPCA506=m
> ++CONFIG_USB_GSPCA_SPCA508=m
> ++CONFIG_USB_GSPCA_SPCA561=m
> ++CONFIG_USB_GSPCA_SPCA1528=m
> ++CONFIG_USB_GSPCA_SQ905=m
> ++CONFIG_USB_GSPCA_SQ905C=m
> ++CONFIG_USB_GSPCA_SQ930X=m
> ++CONFIG_USB_GSPCA_STK014=m
> ++CONFIG_USB_GSPCA_STK1135=m
> ++CONFIG_USB_GSPCA_STV0680=m
> ++CONFIG_USB_GSPCA_SUNPLUS=m
> ++CONFIG_USB_GSPCA_T613=m
> ++CONFIG_USB_GSPCA_TOPRO=m
> ++CONFIG_USB_GSPCA_TV8532=m
> ++CONFIG_USB_GSPCA_VC032X=m
> ++CONFIG_USB_GSPCA_VICAM=m
> ++CONFIG_USB_GSPCA_XIRLINK_CIT=m
> ++CONFIG_USB_GSPCA_ZC3XX=m
> ++CONFIG_USB_PWC=m
> ++CONFIG_VIDEO_CPIA2=m
> ++CONFIG_USB_ZR364XX=m
> ++CONFIG_USB_STKWEBCAM=m
> ++CONFIG_USB_S2255=m
> ++CONFIG_VIDEO_USBTV=m
> ++CONFIG_VIDEO_PVRUSB2=m
> ++CONFIG_VIDEO_HDPVR=m
> ++CONFIG_VIDEO_USBVISION=m
> ++CONFIG_VIDEO_STK1160_COMMON=m
> ++CONFIG_VIDEO_STK1160_AC97=y
> ++CONFIG_VIDEO_GO7007=m
> ++CONFIG_VIDEO_GO7007_USB=m
> ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
> ++CONFIG_VIDEO_AU0828=m
> ++CONFIG_VIDEO_AU0828_RC=y
> ++CONFIG_VIDEO_CX231XX=m
> ++CONFIG_VIDEO_CX231XX_ALSA=m
> ++CONFIG_VIDEO_CX231XX_DVB=m
> ++CONFIG_VIDEO_TM6000=m
> ++CONFIG_VIDEO_TM6000_ALSA=m
> ++CONFIG_VIDEO_TM6000_DVB=m
> ++CONFIG_DVB_USB=m
> ++CONFIG_DVB_USB_A800=m
> ++CONFIG_DVB_USB_DIBUSB_MB=m
> ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
> ++CONFIG_DVB_USB_DIBUSB_MC=m
> ++CONFIG_DVB_USB_DIB0700=m
> ++CONFIG_DVB_USB_UMT_010=m
> ++CONFIG_DVB_USB_CXUSB=m
> ++CONFIG_DVB_USB_M920X=m
> ++CONFIG_DVB_USB_DIGITV=m
> ++CONFIG_DVB_USB_VP7045=m
> ++CONFIG_DVB_USB_VP702X=m
> ++CONFIG_DVB_USB_GP8PSK=m
> ++CONFIG_DVB_USB_NOVA_T_USB2=m
> ++CONFIG_DVB_USB_TTUSB2=m
> ++CONFIG_DVB_USB_DTT200U=m
> ++CONFIG_DVB_USB_OPERA1=m
> ++CONFIG_DVB_USB_AF9005=m
> ++CONFIG_DVB_USB_AF9005_REMOTE=m
> ++CONFIG_DVB_USB_PCTV452E=m
> ++CONFIG_DVB_USB_DW2102=m
> ++CONFIG_DVB_USB_CINERGY_T2=m
> ++CONFIG_DVB_USB_DTV5100=m
> ++CONFIG_DVB_USB_FRIIO=m
> ++CONFIG_DVB_USB_AZ6027=m
> ++CONFIG_DVB_USB_TECHNISAT_USB2=m
> ++CONFIG_DVB_USB_V2=m
> ++CONFIG_DVB_USB_AF9015=m
> ++CONFIG_DVB_USB_AF9035=m
> ++CONFIG_DVB_USB_ANYSEE=m
> ++CONFIG_DVB_USB_AU6610=m
> ++CONFIG_DVB_USB_AZ6007=m
> ++CONFIG_DVB_USB_CE6230=m
> ++CONFIG_DVB_USB_EC168=m
> ++CONFIG_DVB_USB_GL861=m
> ++CONFIG_DVB_USB_LME2510=m
> ++CONFIG_DVB_USB_MXL111SF=m
> ++CONFIG_DVB_USB_RTL28XXU=m
> ++CONFIG_DVB_USB_DVBSKY=m
> ++CONFIG_SMS_USB_DRV=m
> ++CONFIG_DVB_B2C2_FLEXCOP_USB=m
> ++CONFIG_DVB_AS102=m
> ++CONFIG_VIDEO_EM28XX=m
> ++CONFIG_VIDEO_EM28XX_V4L2=m
> ++CONFIG_VIDEO_EM28XX_ALSA=m
> ++CONFIG_VIDEO_EM28XX_DVB=m
> ++CONFIG_V4L_PLATFORM_DRIVERS=y
> ++CONFIG_VIDEO_BCM2835=y
> ++CONFIG_RADIO_SI470X=y
> ++CONFIG_USB_SI470X=m
> ++CONFIG_I2C_SI470X=m
> ++CONFIG_RADIO_SI4713=m
> ++CONFIG_I2C_SI4713=m
> ++CONFIG_USB_MR800=m
> ++CONFIG_USB_DSBR=m
> ++CONFIG_RADIO_SHARK=m
> ++CONFIG_RADIO_SHARK2=m
> ++CONFIG_USB_KEENE=m
> ++CONFIG_USB_MA901=m
> ++CONFIG_RADIO_TEA5764=m
> ++CONFIG_RADIO_SAA7706H=m
> ++CONFIG_RADIO_TEF6862=m
> ++CONFIG_RADIO_WL1273=m
> ++CONFIG_RADIO_WL128X=m
> ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
> ++CONFIG_VIDEO_UDA1342=m
> ++CONFIG_VIDEO_SONY_BTF_MPX=m
> ++CONFIG_VIDEO_TVP5150=m
> ++CONFIG_VIDEO_TW2804=m
> ++CONFIG_VIDEO_TW9903=m
> ++CONFIG_VIDEO_TW9906=m
> ++CONFIG_VIDEO_OV7640=m
> ++CONFIG_VIDEO_MT9V011=m
> ++CONFIG_DRM=m
> ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y
> ++CONFIG_DRM_UDL=m
> ++CONFIG_DRM_VC4=m
> ++CONFIG_FB=y
> ++CONFIG_FB_BCM2708=y
> ++CONFIG_FB_UDL=m
> ++CONFIG_FB_SSD1307=m
> ++CONFIG_FB_RPISENSE=m
> ++# CONFIG_BACKLIGHT_GENERIC is not set
> ++CONFIG_BACKLIGHT_RPI=m
> ++CONFIG_BACKLIGHT_GPIO=m
> ++CONFIG_FRAMEBUFFER_CONSOLE=y
> ++CONFIG_LOGO=y
> ++# CONFIG_LOGO_LINUX_MONO is not set
> ++# CONFIG_LOGO_LINUX_VGA16 is not set
> ++CONFIG_SOUND=y
> ++CONFIG_SND=m
> ++CONFIG_SND_SEQUENCER=m
> ++CONFIG_SND_SEQ_DUMMY=m
> ++CONFIG_SND_MIXER_OSS=m
> ++CONFIG_SND_PCM_OSS=m
> ++CONFIG_SND_SEQUENCER_OSS=y
> ++CONFIG_SND_HRTIMER=m
> ++CONFIG_SND_DUMMY=m
> ++CONFIG_SND_ALOOP=m
> ++CONFIG_SND_VIRMIDI=m
> ++CONFIG_SND_MTPAV=m
> ++CONFIG_SND_SERIAL_U16550=m
> ++CONFIG_SND_MPU401=m
> ++CONFIG_SND_USB_AUDIO=m
> ++CONFIG_SND_USB_UA101=m
> ++CONFIG_SND_USB_CAIAQ=m
> ++CONFIG_SND_USB_CAIAQ_INPUT=y
> ++CONFIG_SND_USB_6FIRE=m
> ++CONFIG_SND_SOC=m
> ++CONFIG_SND_BCM2835_SOC_I2S=m
> ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
> ++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_RPI_DAC=m
> ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
> ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
> ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
> ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
> ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
> ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
> ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m
> ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m
> ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m
> ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m
> ++CONFIG_SND_SOC_ADAU1701=m
> ++CONFIG_SND_SOC_WM8804_I2C=m
> ++CONFIG_SND_SIMPLE_CARD=m
> ++CONFIG_SOUND_PRIME=m
> ++CONFIG_HIDRAW=y
> ++CONFIG_UHID=m
> ++CONFIG_HID_A4TECH=m
> ++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
> ++CONFIG_HID_DRAGONRISE=m
> ++CONFIG_HID_EMS_FF=m
> ++CONFIG_HID_ELECOM=m
> ++CONFIG_HID_ELO=m
> ++CONFIG_HID_EZKEY=m
> ++CONFIG_HID_HOLTEK=m
> ++CONFIG_HID_KEYTOUCH=m
> ++CONFIG_HID_KYE=m
> ++CONFIG_HID_UCLOGIC=m
> ++CONFIG_HID_WALTOP=m
> ++CONFIG_HID_GYRATION=m
> ++CONFIG_HID_TWINHAN=m
> ++CONFIG_HID_KENSINGTON=m
> ++CONFIG_HID_LCPOWER=m
> ++CONFIG_HID_LOGITECH=m
> ++CONFIG_HID_LOGITECH_DJ=m
> ++CONFIG_LOGITECH_FF=y
> ++CONFIG_LOGIRUMBLEPAD2_FF=y
> ++CONFIG_LOGIG940_FF=y
> ++CONFIG_HID_MAGICMOUSE=m
> ++CONFIG_HID_MICROSOFT=m
> ++CONFIG_HID_MONTEREY=m
> ++CONFIG_HID_MULTITOUCH=m
> ++CONFIG_HID_NTRIG=m
> ++CONFIG_HID_ORTEK=m
> ++CONFIG_HID_PANTHERLORD=m
> ++CONFIG_HID_PETALYNX=m
> ++CONFIG_HID_PICOLCD=m
> ++CONFIG_HID_ROCCAT=m
> ++CONFIG_HID_SAMSUNG=m
> ++CONFIG_HID_SONY=m
> ++CONFIG_HID_SPEEDLINK=m
> ++CONFIG_HID_SUNPLUS=m
> ++CONFIG_HID_GREENASIA=m
> ++CONFIG_HID_SMARTJOYPLUS=m
> ++CONFIG_HID_TOPSEED=m
> ++CONFIG_HID_THINGM=m
> ++CONFIG_HID_THRUSTMASTER=m
> ++CONFIG_HID_WACOM=m
> ++CONFIG_HID_WIIMOTE=m
> ++CONFIG_HID_XINMO=m
> ++CONFIG_HID_ZEROPLUS=m
> ++CONFIG_HID_ZYDACRON=m
> ++CONFIG_HID_PID=y
> ++CONFIG_USB_HIDDEV=y
> ++CONFIG_USB=y
> ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
> ++CONFIG_USB_MON=m
> ++CONFIG_USB_PRINTER=m
> ++CONFIG_USB_STORAGE=y
> ++CONFIG_USB_STORAGE_REALTEK=m
> ++CONFIG_USB_STORAGE_DATAFAB=m
> ++CONFIG_USB_STORAGE_FREECOM=m
> ++CONFIG_USB_STORAGE_ISD200=m
> ++CONFIG_USB_STORAGE_USBAT=m
> ++CONFIG_USB_STORAGE_SDDR09=m
> ++CONFIG_USB_STORAGE_SDDR55=m
> ++CONFIG_USB_STORAGE_JUMPSHOT=m
> ++CONFIG_USB_STORAGE_ALAUDA=m
> ++CONFIG_USB_STORAGE_ONETOUCH=m
> ++CONFIG_USB_STORAGE_KARMA=m
> ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m
> ++CONFIG_USB_STORAGE_ENE_UB6250=m
> ++CONFIG_USB_MDC800=m
> ++CONFIG_USB_MICROTEK=m
> ++CONFIG_USBIP_CORE=m
> ++CONFIG_USBIP_VHCI_HCD=m
> ++CONFIG_USBIP_HOST=m
> ++CONFIG_USB_DWC2=y
> ++CONFIG_USB_SERIAL=m
> ++CONFIG_USB_SERIAL_GENERIC=y
> ++CONFIG_USB_SERIAL_AIRCABLE=m
> ++CONFIG_USB_SERIAL_ARK3116=m
> ++CONFIG_USB_SERIAL_BELKIN=m
> ++CONFIG_USB_SERIAL_CH341=m
> ++CONFIG_USB_SERIAL_WHITEHEAT=m
> ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
> ++CONFIG_USB_SERIAL_CP210X=m
> ++CONFIG_USB_SERIAL_CYPRESS_M8=m
> ++CONFIG_USB_SERIAL_EMPEG=m
> ++CONFIG_USB_SERIAL_FTDI_SIO=m
> ++CONFIG_USB_SERIAL_VISOR=m
> ++CONFIG_USB_SERIAL_IPAQ=m
> ++CONFIG_USB_SERIAL_IR=m
> ++CONFIG_USB_SERIAL_EDGEPORT=m
> ++CONFIG_USB_SERIAL_EDGEPORT_TI=m
> ++CONFIG_USB_SERIAL_F81232=m
> ++CONFIG_USB_SERIAL_GARMIN=m
> ++CONFIG_USB_SERIAL_IPW=m
> ++CONFIG_USB_SERIAL_IUU=m
> ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m
> ++CONFIG_USB_SERIAL_KEYSPAN=m
> ++CONFIG_USB_SERIAL_KLSI=m
> ++CONFIG_USB_SERIAL_KOBIL_SCT=m
> ++CONFIG_USB_SERIAL_MCT_U232=m
> ++CONFIG_USB_SERIAL_METRO=m
> ++CONFIG_USB_SERIAL_MOS7720=m
> ++CONFIG_USB_SERIAL_MOS7840=m
> ++CONFIG_USB_SERIAL_NAVMAN=m
> ++CONFIG_USB_SERIAL_PL2303=m
> ++CONFIG_USB_SERIAL_OTI6858=m
> ++CONFIG_USB_SERIAL_QCAUX=m
> ++CONFIG_USB_SERIAL_QUALCOMM=m
> ++CONFIG_USB_SERIAL_SPCP8X5=m
> ++CONFIG_USB_SERIAL_SAFE=m
> ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m
> ++CONFIG_USB_SERIAL_SYMBOL=m
> ++CONFIG_USB_SERIAL_TI=m
> ++CONFIG_USB_SERIAL_CYBERJACK=m
> ++CONFIG_USB_SERIAL_XIRCOM=m
> ++CONFIG_USB_SERIAL_OPTION=m
> ++CONFIG_USB_SERIAL_OMNINET=m
> ++CONFIG_USB_SERIAL_OPTICON=m
> ++CONFIG_USB_SERIAL_XSENS_MT=m
> ++CONFIG_USB_SERIAL_WISHBONE=m
> ++CONFIG_USB_SERIAL_SSU100=m
> ++CONFIG_USB_SERIAL_QT2=m
> ++CONFIG_USB_SERIAL_DEBUG=m
> ++CONFIG_USB_EMI62=m
> ++CONFIG_USB_EMI26=m
> ++CONFIG_USB_ADUTUX=m
> ++CONFIG_USB_SEVSEG=m
> ++CONFIG_USB_RIO500=m
> ++CONFIG_USB_LEGOTOWER=m
> ++CONFIG_USB_LCD=m
> ++CONFIG_USB_LED=m
> ++CONFIG_USB_CYPRESS_CY7C63=m
> ++CONFIG_USB_CYTHERM=m
> ++CONFIG_USB_IDMOUSE=m
> ++CONFIG_USB_FTDI_ELAN=m
> ++CONFIG_USB_APPLEDISPLAY=m
> ++CONFIG_USB_LD=m
> ++CONFIG_USB_TRANCEVIBRATOR=m
> ++CONFIG_USB_IOWARRIOR=m
> ++CONFIG_USB_TEST=m
> ++CONFIG_USB_ISIGHTFW=m
> ++CONFIG_USB_YUREX=m
> ++CONFIG_USB_ATM=m
> ++CONFIG_USB_SPEEDTOUCH=m
> ++CONFIG_USB_CXACRU=m
> ++CONFIG_USB_UEAGLEATM=m
> ++CONFIG_USB_XUSBATM=m
> ++CONFIG_MMC=y
> ++CONFIG_MMC_BLOCK_MINORS=32
> ++CONFIG_MMC_BCM2835=y
> ++CONFIG_MMC_BCM2835_DMA=y
> ++CONFIG_MMC_BCM2835_SDHOST=y
> ++CONFIG_MMC_SDHCI=y
> ++CONFIG_MMC_SDHCI_PLTFM=y
> ++CONFIG_MMC_SDHCI_BCM2835=y
> ++CONFIG_MMC_SPI=m
> ++CONFIG_LEDS_CLASS=y
> ++CONFIG_LEDS_GPIO=y
> ++CONFIG_LEDS_TRIGGER_TIMER=y
> ++CONFIG_LEDS_TRIGGER_ONESHOT=y
> ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
> ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y
> ++CONFIG_LEDS_TRIGGER_CPU=y
> ++CONFIG_LEDS_TRIGGER_GPIO=y
> ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
> ++CONFIG_LEDS_TRIGGER_TRANSIENT=m
> ++CONFIG_LEDS_TRIGGER_CAMERA=m
> ++CONFIG_LEDS_TRIGGER_INPUT=y
> ++CONFIG_LEDS_TRIGGER_PANIC=y
> ++CONFIG_RTC_CLASS=y
> ++# CONFIG_RTC_HCTOSYS is not set
> ++CONFIG_RTC_DRV_DS1307=m
> ++CONFIG_RTC_DRV_DS1374=m
> ++CONFIG_RTC_DRV_DS1672=m
> ++CONFIG_RTC_DRV_MAX6900=m
> ++CONFIG_RTC_DRV_RS5C372=m
> ++CONFIG_RTC_DRV_ISL1208=m
> ++CONFIG_RTC_DRV_ISL12022=m
> ++CONFIG_RTC_DRV_ISL12057=m
> ++CONFIG_RTC_DRV_X1205=m
> ++CONFIG_RTC_DRV_PCF8523=m
> ++CONFIG_RTC_DRV_PCF8563=m
> ++CONFIG_RTC_DRV_PCF8583=m
> ++CONFIG_RTC_DRV_M41T80=m
> ++CONFIG_RTC_DRV_BQ32K=m
> ++CONFIG_RTC_DRV_S35390A=m
> ++CONFIG_RTC_DRV_FM3130=m
> ++CONFIG_RTC_DRV_RX8581=m
> ++CONFIG_RTC_DRV_RX8025=m
> ++CONFIG_RTC_DRV_EM3027=m
> ++CONFIG_RTC_DRV_M41T93=m
> ++CONFIG_RTC_DRV_M41T94=m
> ++CONFIG_RTC_DRV_DS1302=m
> ++CONFIG_RTC_DRV_DS1305=m
> ++CONFIG_RTC_DRV_DS1390=m
> ++CONFIG_RTC_DRV_R9701=m
> ++CONFIG_RTC_DRV_RX4581=m
> ++CONFIG_RTC_DRV_RS5C348=m
> ++CONFIG_RTC_DRV_MAX6902=m
> ++CONFIG_RTC_DRV_PCF2123=m
> ++CONFIG_RTC_DRV_DS3232=m
> ++CONFIG_RTC_DRV_PCF2127=m
> ++CONFIG_RTC_DRV_RV3029C2=m
> ++CONFIG_DMADEVICES=y
> ++CONFIG_DMA_BCM2835=y
> ++CONFIG_UIO=m
> ++CONFIG_UIO_PDRV_GENIRQ=m
> ++CONFIG_STAGING=y
> ++CONFIG_PRISM2_USB=m
> ++CONFIG_R8712U=m
> ++CONFIG_R8188EU=m
> ++CONFIG_R8723AU=m
> ++CONFIG_VT6656=m
> ++CONFIG_SPEAKUP=m
> ++CONFIG_SPEAKUP_SYNTH_SOFT=m
> ++CONFIG_STAGING_MEDIA=y
> ++CONFIG_LIRC_STAGING=y
> ++CONFIG_LIRC_IMON=m
> ++CONFIG_LIRC_RPI=m
> ++CONFIG_LIRC_SASEM=m
> ++CONFIG_LIRC_SERIAL=m
> ++CONFIG_FB_TFT=m
> ++CONFIG_FB_TFT_AGM1264K_FL=m
> ++CONFIG_FB_TFT_BD663474=m
> ++CONFIG_FB_TFT_HX8340BN=m
> ++CONFIG_FB_TFT_HX8347D=m
> ++CONFIG_FB_TFT_HX8353D=m
> ++CONFIG_FB_TFT_ILI9163=m
> ++CONFIG_FB_TFT_ILI9320=m
> ++CONFIG_FB_TFT_ILI9325=m
> ++CONFIG_FB_TFT_ILI9340=m
> ++CONFIG_FB_TFT_ILI9341=m
> ++CONFIG_FB_TFT_ILI9481=m
> ++CONFIG_FB_TFT_ILI9486=m
> ++CONFIG_FB_TFT_PCD8544=m
> ++CONFIG_FB_TFT_RA8875=m
> ++CONFIG_FB_TFT_S6D02A1=m
> ++CONFIG_FB_TFT_S6D1121=m
> ++CONFIG_FB_TFT_SSD1289=m
> ++CONFIG_FB_TFT_SSD1306=m
> ++CONFIG_FB_TFT_SSD1331=m
> ++CONFIG_FB_TFT_SSD1351=m
> ++CONFIG_FB_TFT_ST7735R=m
> ++CONFIG_FB_TFT_TINYLCD=m
> ++CONFIG_FB_TFT_TLS8204=m
> ++CONFIG_FB_TFT_UC1701=m
> ++CONFIG_FB_TFT_UPD161704=m
> ++CONFIG_FB_TFT_WATTEROTT=m
> ++CONFIG_FB_FLEX=m
> ++CONFIG_FB_TFT_FBTFT_DEVICE=m
> ++# CONFIG_COMMON_CLK_XGENE is not set
> ++CONFIG_MAILBOX=y
> ++CONFIG_BCM2835_MBOX=y
> ++# CONFIG_IOMMU_SUPPORT is not set
> ++CONFIG_RASPBERRYPI_POWER=y
> ++CONFIG_EXTCON=m
> ++CONFIG_EXTCON_ARIZONA=m
> ++CONFIG_IIO=m
> ++CONFIG_IIO_BUFFER=y
> ++CONFIG_IIO_BUFFER_CB=m
> ++CONFIG_IIO_KFIFO_BUF=m
> ++CONFIG_MCP320X=m
> ++CONFIG_MCP3422=m
> ++CONFIG_DHT11=m
> ++CONFIG_PWM_BCM2835=m
> ++CONFIG_PWM_PCA9685=m
> ++CONFIG_GENERIC_PHY=y
> ++CONFIG_RASPBERRYPI_FIRMWARE=y
> ++CONFIG_EXT4_FS=y
> ++CONFIG_EXT4_FS_POSIX_ACL=y
> ++CONFIG_EXT4_FS_SECURITY=y
> ++CONFIG_REISERFS_FS=m
> ++CONFIG_REISERFS_FS_XATTR=y
> ++CONFIG_REISERFS_FS_POSIX_ACL=y
> ++CONFIG_REISERFS_FS_SECURITY=y
> ++CONFIG_JFS_FS=m
> ++CONFIG_JFS_POSIX_ACL=y
> ++CONFIG_JFS_SECURITY=y
> ++CONFIG_JFS_STATISTICS=y
> ++CONFIG_XFS_FS=m
> ++CONFIG_XFS_QUOTA=y
> ++CONFIG_XFS_POSIX_ACL=y
> ++CONFIG_XFS_RT=y
> ++CONFIG_GFS2_FS=m
> ++CONFIG_OCFS2_FS=m
> ++CONFIG_BTRFS_FS=m
> ++CONFIG_BTRFS_FS_POSIX_ACL=y
> ++CONFIG_NILFS2_FS=m
> ++CONFIG_F2FS_FS=y
> ++CONFIG_FANOTIFY=y
> ++CONFIG_QFMT_V1=m
> ++CONFIG_QFMT_V2=m
> ++CONFIG_AUTOFS4_FS=y
> ++CONFIG_FUSE_FS=m
> ++CONFIG_CUSE=m
> ++CONFIG_OVERLAY_FS=m
> ++CONFIG_FSCACHE=y
> ++CONFIG_FSCACHE_STATS=y
> ++CONFIG_FSCACHE_HISTOGRAM=y
> ++CONFIG_CACHEFILES=y
> ++CONFIG_ISO9660_FS=m
> ++CONFIG_JOLIET=y
> ++CONFIG_ZISOFS=y
> ++CONFIG_UDF_FS=m
> ++CONFIG_MSDOS_FS=y
> ++CONFIG_VFAT_FS=y
> ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
> ++CONFIG_NTFS_FS=m
> ++CONFIG_NTFS_RW=y
> ++CONFIG_TMPFS=y
> ++CONFIG_TMPFS_POSIX_ACL=y
> ++CONFIG_ECRYPT_FS=m
> ++CONFIG_HFS_FS=m
> ++CONFIG_HFSPLUS_FS=m
> ++CONFIG_JFFS2_FS=m
> ++CONFIG_JFFS2_SUMMARY=y
> ++CONFIG_UBIFS_FS=m
> ++CONFIG_SQUASHFS=m
> ++CONFIG_SQUASHFS_XATTR=y
> ++CONFIG_SQUASHFS_LZO=y
> ++CONFIG_SQUASHFS_XZ=y
> ++CONFIG_NFS_FS=y
> ++CONFIG_NFS_V3_ACL=y
> ++CONFIG_NFS_V4=y
> ++CONFIG_NFS_SWAP=y
> ++CONFIG_ROOT_NFS=y
> ++CONFIG_NFS_FSCACHE=y
> ++CONFIG_NFSD=m
> ++CONFIG_NFSD_V3_ACL=y
> ++CONFIG_NFSD_V4=y
> ++CONFIG_CIFS=m
> ++CONFIG_CIFS_WEAK_PW_HASH=y
> ++CONFIG_CIFS_UPCALL=y
> ++CONFIG_CIFS_XATTR=y
> ++CONFIG_CIFS_POSIX=y
> ++CONFIG_CIFS_ACL=y
> ++CONFIG_CIFS_DFS_UPCALL=y
> ++CONFIG_CIFS_SMB2=y
> ++CONFIG_CIFS_FSCACHE=y
> ++CONFIG_9P_FS=m
> ++CONFIG_9P_FS_POSIX_ACL=y
> ++CONFIG_NLS_DEFAULT="utf8"
> ++CONFIG_NLS_CODEPAGE_437=y
> ++CONFIG_NLS_CODEPAGE_737=m
> ++CONFIG_NLS_CODEPAGE_775=m
> ++CONFIG_NLS_CODEPAGE_850=m
> ++CONFIG_NLS_CODEPAGE_852=m
> ++CONFIG_NLS_CODEPAGE_855=m
> ++CONFIG_NLS_CODEPAGE_857=m
> ++CONFIG_NLS_CODEPAGE_860=m
> ++CONFIG_NLS_CODEPAGE_861=m
> ++CONFIG_NLS_CODEPAGE_862=m
> ++CONFIG_NLS_CODEPAGE_863=m
> ++CONFIG_NLS_CODEPAGE_864=m
> ++CONFIG_NLS_CODEPAGE_865=m
> ++CONFIG_NLS_CODEPAGE_866=m
> ++CONFIG_NLS_CODEPAGE_869=m
> ++CONFIG_NLS_CODEPAGE_936=m
> ++CONFIG_NLS_CODEPAGE_950=m
> ++CONFIG_NLS_CODEPAGE_932=m
> ++CONFIG_NLS_CODEPAGE_949=m
> ++CONFIG_NLS_CODEPAGE_874=m
> ++CONFIG_NLS_ISO8859_8=m
> ++CONFIG_NLS_CODEPAGE_1250=m
> ++CONFIG_NLS_CODEPAGE_1251=m
> ++CONFIG_NLS_ASCII=y
> ++CONFIG_NLS_ISO8859_1=m
> ++CONFIG_NLS_ISO8859_2=m
> ++CONFIG_NLS_ISO8859_3=m
> ++CONFIG_NLS_ISO8859_4=m
> ++CONFIG_NLS_ISO8859_5=m
> ++CONFIG_NLS_ISO8859_6=m
> ++CONFIG_NLS_ISO8859_7=m
> ++CONFIG_NLS_ISO8859_9=m
> ++CONFIG_NLS_ISO8859_13=m
> ++CONFIG_NLS_ISO8859_14=m
> ++CONFIG_NLS_ISO8859_15=m
> ++CONFIG_NLS_KOI8_R=m
> ++CONFIG_NLS_KOI8_U=m
> ++CONFIG_DLM=m
> ++CONFIG_PRINTK_TIME=y
> ++CONFIG_BOOT_PRINTK_DELAY=y
> ++CONFIG_DEBUG_MEMORY_INIT=y
> ++CONFIG_DETECT_HUNG_TASK=y
> ++CONFIG_TIMER_STATS=y
> ++CONFIG_IRQSOFF_TRACER=y
> ++CONFIG_SCHED_TRACER=y
> ++CONFIG_STACK_TRACER=y
> ++CONFIG_BLK_DEV_IO_TRACE=y
> ++CONFIG_FUNCTION_PROFILER=y
> ++CONFIG_KGDB=y
> ++CONFIG_KGDB_KDB=y
> ++CONFIG_KDB_KEYBOARD=y
> ++# CONFIG_DEBUG_SET_MODULE_RONX is not set
> ++# CONFIG_DEBUG_RODATA is not set
> ++CONFIG_CRYPTO_USER=m
> ++CONFIG_CRYPTO_CBC=y
> ++CONFIG_CRYPTO_CTS=m
> ++CONFIG_CRYPTO_XTS=m
> ++CONFIG_CRYPTO_XCBC=m
> ++CONFIG_CRYPTO_TGR192=m
> ++CONFIG_CRYPTO_WP512=m
> ++CONFIG_CRYPTO_CAST5=m
> ++CONFIG_CRYPTO_DES=y
> ++CONFIG_CRYPTO_USER_API_SKCIPHER=m
> ++# CONFIG_CRYPTO_HW is not set
> ++CONFIG_ARM64_CRYPTO=y
> ++CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
> ++CONFIG_CRYPTO_CRC32_ARM64=y
> ++CONFIG_CRC_ITU_T=y
> ++CONFIG_LIBCRC32C=y
> +diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h
> +index 7dbea6c..446b353 100644
> +--- a/arch/arm64/include/asm/dma-mapping.h
> ++++ b/arch/arm64/include/asm/dma-mapping.h
> +@@ -66,12 +66,14 @@ static inline bool is_device_dma_coherent(struct device *dev)
> +
> + static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr)
> + {
> +-      return (dma_addr_t)paddr;
> ++      dma_addr_t dev_addr = (dma_addr_t)paddr;
> ++      return dev_addr - ((dma_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
> + }
> +
> + static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dev_addr)
> + {
> +-      return (phys_addr_t)dev_addr;
> ++      phys_addr_t paddr = (phys_addr_t)dev_addr;
> ++      return paddr + ((phys_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
> + }
> +
> + static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> +@@ -86,5 +88,14 @@ static inline void dma_mark_clean(void *addr, size_t size)
> + {
> + }
> +
> ++/* Override for dma_max_pfn() */
> ++static inline unsigned long dma_max_pfn(struct device *dev)
> ++{
> ++      dma_addr_t dma_max = (dma_addr_t)*dev->dma_mask;
> ++
> ++      return (ulong)dma_to_phys(dev, dma_max) >> PAGE_SHIFT;
> ++}
> ++#define dma_max_pfn(dev) dma_max_pfn(dev)
> ++
> + #endif        /* __KERNEL__ */
> + #endif        /* __ASM_DMA_MAPPING_H */
> +diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
> +index c02bf8a..a09553a 100644
> +--- a/drivers/irqchip/irq-bcm2835.c
> ++++ b/drivers/irqchip/irq-bcm2835.c
> +@@ -54,7 +54,9 @@
> + #include <linux/regmap.h>
> +
> + #include <asm/exception.h>
> ++#ifndef CONFIG_ARM64
> + #include <asm/mach/irq.h>
> ++#endif
> +
> + /* Put the bank and irq (32 bits) into the hwirq */
> + #define MAKE_HWIRQ(b, n)      (((b) << 5) | (n))
> +@@ -72,12 +74,16 @@
> + #define BANK0_VALID_MASK      (BANK0_HWIRQ_MASK | BANK1_HWIRQ | BANK2_HWIRQ \
> +                                       | SHORTCUT1_MASK | SHORTCUT2_MASK)
> +
> ++#ifndef CONFIG_ARM64
> + #undef ARM_LOCAL_GPU_INT_ROUTING
> + #define ARM_LOCAL_GPU_INT_ROUTING 0x0c
> ++#endif
> +
> ++#ifndef CONFIG_ARM64
> + #define REG_FIQ_CONTROL               0x0c
> + #define REG_FIQ_ENABLE                0x80
> + #define REG_FIQ_DISABLE               0
> ++#endif
> +
> + #define NR_BANKS              3
> + #define IRQS_PER_BANK         32
> +@@ -101,7 +107,9 @@ struct armctrl_ic {
> +       void __iomem *enable[NR_BANKS];
> +       void __iomem *disable[NR_BANKS];
> +       struct irq_domain *domain;
> ++#ifndef CONFIG_ARM64
> +       struct regmap *local_regmap;
> ++#endif
> + };
> +
> + static struct armctrl_ic intc __read_mostly;
> +@@ -109,6 +117,7 @@ static void __exception_irq_entry bcm2835_handle_irq(
> +       struct pt_regs *regs);
> + static void bcm2836_chained_handle_irq(struct irq_desc *desc);
> +
> ++#ifndef CONFIG_ARM64
> + static inline unsigned int hwirq_to_fiq(unsigned long hwirq)
> + {
> +       hwirq -= NUMBER_IRQS;
> +@@ -123,18 +132,22 @@ static inline unsigned int hwirq_to_fiq(unsigned long hwirq)
> +
> +       return hwirq + 64;
> + }
> ++#endif
> +
> + static void armctrl_mask_irq(struct irq_data *d)
> + {
> ++#ifndef CONFIG_ARM64
> +       if (d->hwirq >= NUMBER_IRQS)
> +               writel_relaxed(REG_FIQ_DISABLE, intc.base + REG_FIQ_CONTROL);
> +       else
> ++#endif
> +               writel_relaxed(HWIRQ_BIT(d->hwirq),
> +                              intc.disable[HWIRQ_BANK(d->hwirq)]);
> + }
> +
> + static void armctrl_unmask_irq(struct irq_data *d)
> + {
> ++#ifndef CONFIG_ARM64
> +       if (d->hwirq >= NUMBER_IRQS) {
> +               if (num_online_cpus() > 1) {
> +                       unsigned int data;
> +@@ -164,6 +177,9 @@ static void armctrl_unmask_irq(struct irq_data *d)
> +               writel_relaxed(HWIRQ_BIT(d->hwirq),
> +                              intc.enable[HWIRQ_BANK(d->hwirq)]);
> +       }
> ++#else
> ++      writel_relaxed(HWIRQ_BIT(d->hwirq), intc.enable[HWIRQ_BANK(d->hwirq)]);
> ++#endif
> + }
> +
> + static struct irq_chip armctrl_chip = {
> +@@ -241,6 +257,7 @@ static int __init armctrl_of_init(struct device_node *node,
> +               set_handle_irq(bcm2835_handle_irq);
> +       }
> +
> ++#ifndef CONFIG_ARM64
> +       if (is_2836) {
> +               intc.local_regmap =
> +                       syscon_regmap_lookup_by_compatible("brcm,bcm2836-arm-local");
> +@@ -261,6 +278,7 @@ static int __init armctrl_of_init(struct device_node *node,
> +               }
> +       }
> +       init_FIQ(FIQ_START);
> ++#endif
> +
> +       return 0;
> + }
> +@@ -322,7 +340,11 @@ static void __exception_irq_entry bcm2835_handle_irq(
> +       u32 hwirq;
> +
> +       while ((hwirq = get_next_armctrl_hwirq()) != ~0)
> ++#ifndef CONFIG_ARM64
> +               handle_IRQ(irq_linear_revmap(intc.domain, hwirq), regs);
> ++#else
> ++              handle_domain_irq(intc.domain, hwirq, regs);
> ++#endif
> + }
> +
> + static void bcm2836_chained_handle_irq(struct irq_desc *desc)
> +diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
> +index de3b3a3..b2425d7 100644
> +--- a/drivers/irqchip/irq-bcm2836.c
> ++++ b/drivers/irqchip/irq-bcm2836.c
> +@@ -175,13 +175,19 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs)
> +               u32 ipi = ffs(mbox_val) - 1;
> +
> +               writel(1 << ipi, mailbox0);
> ++#ifndef CONFIG_ARM64
> +               dsb();
> ++#endif
> +               handle_IPI(ipi, regs);
> + #endif
> +       } else if (stat) {
> +               u32 hwirq = ffs(stat) - 1;
> +
> ++#ifndef CONFIG_ARM64
> +               handle_IRQ(irq_linear_revmap(intc.domain, hwirq), regs);
> ++#else
> ++              handle_domain_irq(intc.domain, hwirq, regs);
> ++#endif
> +       }
> + }
> +
> +@@ -225,7 +231,7 @@ static struct notifier_block bcm2836_arm_irqchip_cpu_notifier = {
> + };
> +
> + #ifdef CONFIG_ARM
> +-int __init bcm2836_smp_boot_secondary(unsigned int cpu,
> ++static int __init bcm2836_smp_boot_secondary(unsigned int cpu,
> +                                     struct task_struct *idle)
> + {
> +       unsigned long secondary_startup_phys =
> +diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c
> +index d7b6b5a..2204ca9 100644
> +--- a/drivers/mmc/host/bcm2835-sdhost.c
> ++++ b/drivers/mmc/host/bcm2835-sdhost.c
> +@@ -241,7 +241,11 @@ static void log_init(u32 bus_to_phys)
> +       sdhost_log_buf = dma_zalloc_coherent(NULL, LOG_SIZE, &sdhost_log_addr,
> +                                            GFP_KERNEL);
> +       if (sdhost_log_buf) {
> ++#ifndef CONFIG_ARM64
> +               pr_info("sdhost: log_buf @ %p (%x)\n",
> ++#else
> ++              pr_info("sdhost: log_buf @ %p (%llx)\n",
> ++#endif
> +                       sdhost_log_buf, sdhost_log_addr);
> +               timer_base = ioremap_nocache(bus_to_phys + 0x7e003000, SZ_4K);
> +               if (!timer_base)
> +@@ -522,7 +526,11 @@ static void bcm2835_sdhost_dma_complete(void *param)
> +       unsigned long flags;
> +
> +       spin_lock_irqsave(&host->lock, flags);
> ++#ifndef CONFIG_ARM64
> +       log_event("DMA<", (u32)host->data, bcm2835_sdhost_read(host, SDHSTS));
> ++#else
> ++      log_event("DMA<", (u64)host->data, bcm2835_sdhost_read(host, SDHSTS));
> ++#endif
> +       log_event("DMA ", bcm2835_sdhost_read(host, SDCMD),
> +                 bcm2835_sdhost_read(host, SDEDM));
> +
> +@@ -554,7 +562,11 @@ static void bcm2835_sdhost_dma_complete(void *param)
> +
> +       bcm2835_sdhost_finish_data(host);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("DMA>", (u32)host->data, 0);
> ++#else
> ++      log_event("DMA>", (u64)host->data, 0);
> ++#endif
> +       spin_unlock_irqrestore(&host->lock, flags);
> + }
> +
> +@@ -743,7 +755,11 @@ static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host)
> +       u32 sdhsts;
> +       bool is_read;
> +       BUG_ON(!host->data);
> ++#ifndef CONFIG_ARM64
> +       log_event("XFP<", (u32)host->data, host->blocks);
> ++#else
> ++      log_event("XFP<", (u64)host->data, host->blocks);
> ++#endif
> +
> +       is_read = (host->data->flags & MMC_DATA_READ) != 0;
> +       if (is_read)
> +@@ -768,7 +784,11 @@ static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host)
> +                      sdhsts);
> +               host->data->error = -ETIMEDOUT;
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("XFP>", (u32)host->data, host->blocks);
> ++#else
> ++      log_event("XFP>", (u64)host->data, host->blocks);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +@@ -778,7 +798,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +       struct dma_async_tx_descriptor *desc = NULL;
> +       struct dma_chan *dma_chan;
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("PRD<", (u32)data, 0);
> ++#else
> ++      log_event("PRD<", (u64)data, 0);
> ++#endif
> +       pr_debug("bcm2835_sdhost_prepare_dma()\n");
> +
> +       dma_chan = host->dma_chan_rxtx;
> +@@ -789,7 +813,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +               dir_data = DMA_TO_DEVICE;
> +               dir_slave = DMA_MEM_TO_DEV;
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("PRD1", (u32)dma_chan, 0);
> ++#else
> ++      log_event("PRD1", (u64)dma_chan, 0);
> ++#endif
> +
> +       BUG_ON(!dma_chan->device);
> +       BUG_ON(!dma_chan->device->dev);
> +@@ -836,7 +864,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +               desc = dmaengine_prep_slave_sg(dma_chan, data->sg,
> +                                              len, dir_slave,
> +                                              DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
> ++#ifndef CONFIG_ARM64
> +       log_event("PRD3", (u32)desc, 0);
> ++#else
> ++      log_event("PRD3", (u64)desc, 0);
> ++#endif
> +
> +       if (desc) {
> +               desc->callback = bcm2835_sdhost_dma_complete;
> +@@ -845,12 +877,20 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +               host->dma_chan = dma_chan;
> +               host->dma_dir = dir_data;
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("PDM>", (u32)data, 0);
> ++#else
> ++      log_event("PDM>", (u64)data, 0);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_start_dma(struct bcm2835_host *host)
> + {
> ++#ifndef CONFIG_ARM64
> +       log_event("SDMA", (u32)host->data, (u32)host->dma_chan);
> ++#else
> ++      log_event("SDMA", (u64)host->data, (u64)host->dma_chan);
> ++#endif
> +       dmaengine_submit(host->dma_desc);
> +       dma_async_issue_pending(host->dma_chan);
> + }
> +@@ -1074,7 +1114,11 @@ static void bcm2835_sdhost_finish_data(struct bcm2835_host *host)
> +       data = host->data;
> +       BUG_ON(!data);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("FDA<", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FDA<", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> +       pr_debug("finish_data(error %d, stop %d, sbc %d)\n",
> +              data->error, data->stop ? 1 : 0,
> +              host->mrq->sbc ? 1 : 0);
> +@@ -1097,7 +1141,11 @@ static void bcm2835_sdhost_finish_data(struct bcm2835_host *host)
> +       }
> +       else
> +               bcm2835_sdhost_transfer_complete(host);
> ++#ifndef CONFIG_ARM64
> +       log_event("FDA>", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FDA>", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
> +@@ -1111,7 +1159,11 @@ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
> +       data = host->data;
> +       host->data = NULL;
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("TCM<", (u32)data, data->error);
> ++#else
> ++      log_event("TCM<", (u64)data, data->error);
> ++#endif
> +       pr_debug("transfer_complete(error %d, stop %d)\n",
> +              data->error, data->stop ? 1 : 0);
> +
> +@@ -1133,7 +1185,11 @@ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
> +               bcm2835_sdhost_wait_transfer_complete(host);
> +               tasklet_schedule(&host->finish_tasklet);
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("TCM>", (u32)data, 0);
> ++#else
> ++      log_event("TCM>", (u64)data, 0);
> ++#endif
> + }
> +
> + /* If irq_flags is valid, the caller is in a thread context and is allowed
> +@@ -1148,7 +1204,11 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host,
> +       int timediff = 0;
> + #endif
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("FCM<", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FCM<", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> +       pr_debug("finish_command(%x)\n", bcm2835_sdhost_read(host, SDCMD));
> +
> +       BUG_ON(!host->cmd || !host->mrq);
> +@@ -1298,7 +1358,11 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host,
> +               else if (host->data_complete)
> +                       bcm2835_sdhost_transfer_complete(host);
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("FCM>", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FCM>", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_timeout(unsigned long data)
> +@@ -1337,7 +1401,11 @@ static void bcm2835_sdhost_timeout(unsigned long data)
> +
> + static void bcm2835_sdhost_busy_irq(struct bcm2835_host *host, u32 intmask)
> + {
> ++#ifndef CONFIG_ARM64
> +       log_event("IRQB", (u32)host->cmd, intmask);
> ++#else
> ++      log_event("IRQB", (u64)host->cmd, intmask);
> ++#endif
> +       if (!host->cmd) {
> +               pr_err("%s: got command busy interrupt 0x%08x even "
> +                       "though no command operation was in progress.\n",
> +@@ -1390,7 +1458,11 @@ static void bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask)
> +          data/space available FIFO status bits. It is therefore not
> +          an error to get here when there is no data transfer in
> +          progress. */
> ++#ifndef CONFIG_ARM64
> +       log_event("IRQD", (u32)host->data, intmask);
> ++#else
> ++      log_event("IRQD", (u64)host->data, intmask);
> ++#endif
> +       if (!host->data)
> +               return;
> +
> +@@ -1427,7 +1499,11 @@ static void bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask)
> +
> + static void bcm2835_sdhost_block_irq(struct bcm2835_host *host, u32 intmask)
> + {
> ++#ifndef CONFIG_ARM64
> +       log_event("IRQK", (u32)host->data, intmask);
> ++#else
> ++      log_event("IRQK", (u64)host->data, intmask);
> ++#endif
> +       if (!host->data) {
> +               pr_err("%s: got block interrupt 0x%08x even "
> +                       "though no data operation was in progress.\n",
> +@@ -1686,10 +1762,18 @@ static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq
> +       edm = bcm2835_sdhost_read(host, SDEDM);
> +       fsm = edm & SDEDM_FSM_MASK;
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("REQ<", (u32)mrq, edm);
> ++#else
> ++      log_event("REQ<", (u64)mrq, edm);
> ++#endif
> +       if ((fsm != SDEDM_FSM_IDENTMODE) &&
> +           (fsm != SDEDM_FSM_DATAMODE)) {
> ++#ifndef CONFIG_ARM64
> +               log_event("REQ!", (u32)mrq, edm);
> ++#else
> ++              log_event("REQ!", (u64)mrq, edm);
> ++#endif
> +               if (host->debug) {
> +                       pr_warn("%s: previous command (%d) not complete (EDM %x)\n",
> +                              mmc_hostname(host->mmc),
> +@@ -1725,7 +1809,11 @@ static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq
> +                  mrq->data ? (u32)mrq->data->blksz : 0);
> +       mmiowb();
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("REQ>", (u32)mrq, 0);
> ++#else
> ++      log_event("REQ>", (u64)mrq, 0);
> ++#endif
> +       spin_unlock_irqrestore(&host->lock, flags);
> + }
> +
> +@@ -1781,7 +1869,11 @@ static void bcm2835_sdhost_cmd_wait_work(struct work_struct *work)
> +
> +       spin_lock_irqsave(&host->lock, flags);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("CWK<", (u32)host->cmd, (u32)host->mrq);
> ++#else
> ++      log_event("CWK<", (u64)host->cmd, (u64)host->mrq);
> ++#endif
> +
> +       /*
> +        * If this tasklet gets rescheduled while running, it will
> +@@ -1796,7 +1888,11 @@ static void bcm2835_sdhost_cmd_wait_work(struct work_struct *work)
> +
> +       mmiowb();
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("CWK>", (u32)host->cmd, 0);
> ++#else
> ++      log_event("CWK>", (u64)host->cmd, 0);
> ++#endif
> +
> +       spin_unlock_irqrestore(&host->lock, flags);
> + }
> +@@ -1812,7 +1908,11 @@ static void bcm2835_sdhost_tasklet_finish(unsigned long param)
> +
> +       spin_lock_irqsave(&host->lock, flags);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("TSK<", (u32)host->mrq, 0);
> ++#else
> ++      log_event("TSK<", (u64)host->mrq, 0);
> ++#endif
> +       /*
> +        * If this tasklet gets rescheduled while running, it will
> +        * be run again afterwards but without any active request.
> +@@ -1880,7 +1980,11 @@ static void bcm2835_sdhost_tasklet_finish(unsigned long param)
> +       }
> +
> +       mmc_request_done(host->mmc, mrq);
> ++#ifndef CONFIG_ARM64
> +       log_event("TSK>", (u32)mrq, 0);
> ++#else
> ++      log_event("TSK>", (u64)mrq, 0);
> ++#endif
> + }
> +
> + int bcm2835_sdhost_add_host(struct bcm2835_host *host)
> +diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
> +index 8493474..5402b8f 100644
> +--- a/drivers/spi/spi-bcm2835.c
> ++++ b/drivers/spi/spi-bcm2835.c
> +@@ -679,17 +679,21 @@ static void bcm2835_spi_set_cs(struct spi_device *spi, bool gpio_level)
> +       bcm2835_wr(bs, BCM2835_SPI_CS, cs);
> + }
> +
> ++#if 0
> + static int chip_match_name(struct gpio_chip *chip, void *data)
> + {
> +       return !strcmp(chip->label, data);
> + }
> ++#endif
> +
> + static int bcm2835_spi_setup(struct spi_device *spi)
> + {
> ++#if 0
> +       int err;
> +       struct gpio_chip *chip;
> +       struct device_node *pins;
> +       u32 pingroup_index;
> ++#endif
> +       /*
> +        * sanity checking the native-chipselects
> +        */
> +diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> +index a04d27e..61329c0 100644
> +--- a/drivers/tty/serial/amba-pl011.c
> ++++ b/drivers/tty/serial/amba-pl011.c
> +@@ -2345,6 +2345,7 @@ static struct uart_driver amba_reg = {
> +       .cons                   = AMBA_CONSOLE,
> + };
> +
> ++#if 0
> + static int pl011_probe_dt_alias(int index, struct device *dev)
> + {
> +       struct device_node *np;
> +@@ -2376,6 +2377,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev)
> +
> +       return ret;
> + }
> ++#endif
> +
> + /* unregisters the driver also if no more ports are left */
> + static void pl011_unregister_port(struct uart_amba_port *uap)
> +diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.c
> +index 37f6081..731ab30 100644
> +--- a/drivers/video/fbdev/bcm2708_fb.c
> ++++ b/drivers/video/fbdev/bcm2708_fb.c
> +@@ -735,7 +735,11 @@ static int bcm2708_fb_probe(struct platform_device *dev)
> +               goto free_fb;
> +       }
> +
> ++#ifndef CONFIG_ARM64
> +       pr_info("BCM2708FB: allocated DMA memory %08x\n",
> ++#else
> ++      pr_info("BCM2708FB: allocated DMA memory %016llx\n",
> ++#endif
> +              fb->cb_handle);
> +
> +       ret = bcm_dma_chan_alloc(BCM_DMA_FEATURE_BULK,
> +--
> +2.7.4
> +
> diff --git a/recipes-kernel/linux/linux-raspberrypi_4.7.bb b/recipes-kernel/linux/linux-raspberrypi_4.7.bb
> index 4a8fe36..a03a582 100644
> --- a/recipes-kernel/linux/linux-raspberrypi_4.7.bb
> +++ b/recipes-kernel/linux/linux-raspberrypi_4.7.bb
> @@ -6,4 +6,6 @@ SRCREV = "e7fa325a40f260ed9fb86391a0b65150eba8c112"
>  SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.7.y \
>             file://0001-fix-dtbo-rules.patch \
>  "
> +SRC_URI_append_raspberrypi3-64 = " file://0002-support-64bits.patch"
> +
>  require linux-raspberrypi.inc
> --
> 2.7.4
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7)
  2016-11-20 19:41   ` Khem Raj
@ 2016-11-21  5:03     ` Herve Jourdain
  0 siblings, 0 replies; 6+ messages in thread
From: Herve Jourdain @ 2016-11-21  5:03 UTC (permalink / raw
  To: 'Khem Raj'; +Cc: yocto

Hi Khem,

OK, I'll submit a v2 soon.

Herve

-----Original Message-----
From: Khem Raj [mailto:raj.khem@gmail.com] 
Sent: dimanche 20 novembre 2016 20:42
To: Herve Jourdain <herve.jourdain@neuf.fr>
Cc: yocto@yoctoproject.org
Subject: Re: [yocto] [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7)

this patch needs some rework. user __PRIx64__ whereveer llx and lld
are used you dont need ifdefs
secondly all the backports should be a separate patch. All local
changes should be logically seprated individual patches.

On Sun, Nov 20, 2016 at 4:46 AM, Herve Jourdain <herve.jourdain@neuf.fr> wrote:
> Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
> ---
>  .../0001-fix-dtbo-rules.patch                      |   19 +-
>  .../0002-support-64bits.patch                      | 2080 ++++++++++++++++++++
>  recipes-kernel/linux/linux-raspberrypi_4.7.bb      |    2 +
>  3 files changed, 2098 insertions(+), 3 deletions(-)
>  create mode 100644 recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
>
> diff --git a/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch b/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
> index 5113e23..96f3c32 100644
> --- a/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
> +++ b/recipes-kernel/linux/linux-raspberrypi-4.7/0001-fix-dtbo-rules.patch
> @@ -1,7 +1,7 @@
> -From 13c8784da3dbd977f64cec740eba775b6fab11c2 Mon Sep 17 00:00:00 2001
> +From 13c8784da3dbd977f64cec740eba775b6fab11c2 Sat Nov 19 00:00:00 2001
>  From: Herve Jourdain <herve.jourdain@neuf.fr>
> -Date: Fri, 20 May 2016 16:02:23 +0800
> -Subject: [yocto][meta-raspberrypi][PATCH v4 4/5] linux-raspberrypi_4.4.inc:
> +Date: Sat, 19 Nov 2016 16:02:23 +0800
> +Subject: [yocto][meta-raspberrypi][PATCH] linux-raspberrypi_4.7.inc:
>   support for .dtbo files for dtb overlays
>
>  Upstream-Status: Pending
> @@ -28,6 +28,19 @@ index a2e7cf7..673c1cb 100644
>
>   PHONY += dtbs dtbs_install
>
> +diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
> +index 648a32c..68b8147 100644
> +--- a/arch/arm64/Makefile
> ++++ b/arch/arm64/Makefile
> +@@ -103,6 +103,8 @@ zinstall install:
> +
> + %.dtb: scripts
> +       $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
> ++%.dtbo: scripts
> ++      $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
> +
> + PHONY += dtbs dtbs_install
> +
>  diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
>  index 3079c4f..6cc3766 100644
>  --- a/scripts/Makefile.lib
> diff --git a/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch b/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
> new file mode 100644
> index 0000000..681e05a
> --- /dev/null
> +++ b/recipes-kernel/linux/linux-raspberrypi-4.7/0002-support-64bits.patch
> @@ -0,0 +1,2080 @@
> +From dbf41aef92421f5601e2122cbee921561a56ad4b Mon Sep 17 00:00:00 2001
> +From: Herve Jourdain <herve.jourdain@neuf.fr>
> +Date: Wed, 31 Aug 2016 19:30:33 +0800
> +Subject: [PATCH] Support for 64bits (aarch64) v4.7 kernel on RaspberryPi3
> +
> +---
> + arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi      |   19 +
> + arch/arm/boot/dts/bcm283x.dtsi                   |    2 +
> + arch/arm64/Kconfig.platforms                     |   13 +
> + arch/arm64/boot/dts/broadcom/Makefile            |    5 +
> + arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts |   47 +
> + arch/arm64/boot/dts/broadcom/bcm2837.dtsi        |   76 ++
> + arch/arm64/boot/dts/broadcom/overlays            |    1 +
> + arch/arm64/configs/bcm2837_defconfig             | 1273 ++++++++++++++++++++++
> + arch/arm64/include/asm/dma-mapping.h             |   15 +-
> + drivers/irqchip/irq-bcm2835.c                    |   22 +
> + drivers/irqchip/irq-bcm2836.c                    |    8 +-
> + drivers/mmc/host/bcm2835-sdhost.c                |  104 ++
> + drivers/spi/spi-bcm2835.c                        |    4 +
> + drivers/tty/serial/amba-pl011.c                  |    2 +
> + drivers/video/fbdev/bcm2708_fb.c                 |    4 +
> + 15 files changed, 1592 insertions(+), 3 deletions(-)
> + create mode 100644 arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
> + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
> + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837.dtsi
> + create mode 120000 arch/arm64/boot/dts/broadcom/overlays
> + create mode 100644 arch/arm64/configs/bcm2837_defconfig
> +
> +diff --git a/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi b/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
> +new file mode 100644
> +index 0000000..3f0a56e
> +--- /dev/null
> ++++ b/arch/arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
> +@@ -0,0 +1,19 @@
> ++/ {
> ++      aliases {
> ++              ethernet = &ethernet;
> ++      };
> ++};
> ++
> ++&usb {
> ++      usb1@1 {
> ++              compatible = "usb424,9514";
> ++              reg = <1>;
> ++              #address-cells = <1>;
> ++              #size-cells = <0>;
> ++
> ++              ethernet: usbether@1 {
> ++                      compatible = "usb424,ec00";
> ++                      reg = <1>;
> ++              };
> ++      };
> ++};
> +diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
> +index 10b27b9..b982522 100644
> +--- a/arch/arm/boot/dts/bcm283x.dtsi
> ++++ b/arch/arm/boot/dts/bcm283x.dtsi
> +@@ -287,6 +287,8 @@
> +                       compatible = "brcm,bcm2835-usb";
> +                       reg = <0x7e980000 0x10000>;
> +                       interrupts = <1 9>;
> ++                      #address-cells = <1>;
> ++                      #size-cells = <0>;
> +               };
> +
> +               v3d: v3d@7ec00000 {
> +diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
> +index 7ef1d05..ea88402 100644
> +--- a/arch/arm64/Kconfig.platforms
> ++++ b/arch/arm64/Kconfig.platforms
> +@@ -13,6 +13,19 @@ config ARCH_ALPINE
> +         This enables support for the Annapurna Labs Alpine
> +         Soc family.
> +
> ++config ARCH_BCM2835
> ++      bool "Broadcom BCM2835 family"
> ++      select ARCH_REQUIRE_GPIOLIB
> ++      select CLKSRC_OF
> ++      select PINCTRL
> ++      select PINCTRL_BCM2835
> ++      select ARM_AMBA
> ++      select ARM_TIMER_SP804
> ++      select HAVE_ARM_ARCH_TIMER
> ++      help
> ++        This enables support for the Broadcom BCM2837 SoC.
> ++        This SoC is used in the Raspberry Pi 3 device.
> ++
> + config ARCH_BCM_IPROC
> +       bool "Broadcom iProc SoC Family"
> +       select COMMON_CLK_IPROC
> +diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
> +index bec1f8b..05faf2a 100644
> +--- a/arch/arm64/boot/dts/broadcom/Makefile
> ++++ b/arch/arm64/boot/dts/broadcom/Makefile
> +@@ -1,6 +1,11 @@
> ++dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb
> + dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb
> + dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb
> +
> ++ifeq ($(CONFIG_ARCH_BCM2835),y)
> ++    dts-dirs += overlays
> ++endif
> ++
> + always                := $(dtb-y)
> + subdir-y      := $(dts-dirs)
> + clean-files   := *.dtb
> +diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
> +new file mode 100644
> +index 0000000..e991ac1
> +--- /dev/null
> ++++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
> +@@ -0,0 +1,47 @@
> ++/dts-v1/;
> ++#include "bcm2837.dtsi"
> ++#include "../../../../arm/boot/dts/bcm2835-rpi.dtsi"
> ++#include "../../../../arm/boot/dts/bcm283x-rpi-smsc9514.dtsi"
> ++
> ++/ {
> ++      compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
> ++      model = "Raspberry Pi 3 Model B";
> ++
> ++      chosen {
> ++              bootargs = "";
> ++      };
> ++
> ++      memory {
> ++              reg = <0 0x40000000>;
> ++      };
> ++
> ++      leds {
> ++              act {
> ++                      gpios = <&gpio 47 0>;
> ++                      linux,default-trigger = "mmc0";
> ++              };
> ++
> ++              pwr {
> ++                      label = "PWR";
> ++                      gpios = <&gpio 35 0>;
> ++                      default-state = "keep";
> ++                      linux,default-trigger = "default-on";
> ++              };
> ++      };
> ++};
> ++
> ++&uart1 {
> ++      status = "okay";
> ++};
> ++
> ++&i2c0 {
> ++      clock-frequency = <100000>;
> ++};
> ++
> ++&i2c1 {
> ++      clock-frequency = <100000>;
> ++};
> ++
> ++&i2c2 {
> ++      clock-frequency = <100000>;
> ++};
> +diff --git a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
> +new file mode 100644
> +index 0000000..f2a31d0
> +--- /dev/null
> ++++ b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
> +@@ -0,0 +1,76 @@
> ++#include "../../../../arm/boot/dts/bcm283x.dtsi"
> ++
> ++/ {
> ++      compatible = "brcm,bcm2836";
> ++
> ++      soc {
> ++              ranges = <0x7e000000 0x3f000000 0x1000000>,
> ++                       <0x40000000 0x40000000 0x00001000>;
> ++              dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
> ++
> ++              local_intc: local_intc {
> ++                      compatible = "brcm,bcm2836-l1-intc";
> ++                      reg = <0x40000000 0x100>;
> ++                      interrupt-controller;
> ++                      #interrupt-cells = <1>;
> ++                      interrupt-parent = <&local_intc>;
> ++              };
> ++      };
> ++
> ++      timer {
> ++              compatible = "arm,armv7-timer";
> ++              interrupt-parent = <&local_intc>;
> ++              interrupts = <0>, // PHYS_SECURE_PPI
> ++                           <1>, // PHYS_NONSECURE_PPI
> ++                           <3>, // VIRT_PPI
> ++                           <2>; // HYP_PPI
> ++              always-on;
> ++      };
> ++
> ++      cpus: cpus {
> ++              #address-cells = <1>;
> ++              #size-cells = <0>;
> ++
> ++              cpu0: cpu@0 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <0>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000d8>;
> ++              };
> ++
> ++              cpu1: cpu@1 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <1>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000e0>;
> ++              };
> ++
> ++              cpu2: cpu@2 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <2>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000e8>;
> ++              };
> ++
> ++              cpu3: cpu@3 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <3>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000f0>;
> ++              };
> ++      };
> ++};
> ++
> ++/* Make the BCM2835-style global interrupt controller be a child of the
> ++ * CPU-local interrupt controller.
> ++ */
> ++&intc {
> ++      compatible = "brcm,bcm2836-armctrl-ic";
> ++      reg = <0x7e00b200 0x200>;
> ++      interrupt-parent = <&local_intc>;
> ++      interrupts = <8>;
> ++};
> +diff --git a/arch/arm64/boot/dts/broadcom/overlays b/arch/arm64/boot/dts/broadcom/overlays
> +new file mode 120000
> +index 0000000..d33085c
> +--- /dev/null
> ++++ b/arch/arm64/boot/dts/broadcom/overlays
> +@@ -0,0 +1 @@
> ++../../../../arm/boot/dts/overlays/
> +\ No newline at end of file
> +diff --git a/arch/arm64/configs/bcm2837_defconfig b/arch/arm64/configs/bcm2837_defconfig
> +new file mode 100644
> +index 0000000..c295da8
> +--- /dev/null
> ++++ b/arch/arm64/configs/bcm2837_defconfig
> +@@ -0,0 +1,1273 @@
> ++CONFIG_LOCALVERSION="-v8"
> ++# CONFIG_LOCALVERSION_AUTO is not set
> ++CONFIG_SYSVIPC=y
> ++CONFIG_POSIX_MQUEUE=y
> ++CONFIG_NO_HZ=y
> ++CONFIG_HIGH_RES_TIMERS=y
> ++CONFIG_BSD_PROCESS_ACCT=y
> ++CONFIG_BSD_PROCESS_ACCT_V3=y
> ++CONFIG_TASKSTATS=y
> ++CONFIG_TASK_DELAY_ACCT=y
> ++CONFIG_TASK_XACCT=y
> ++CONFIG_TASK_IO_ACCOUNTING=y
> ++CONFIG_IKCONFIG=m
> ++CONFIG_IKCONFIG_PROC=y
> ++CONFIG_MEMCG=y
> ++CONFIG_BLK_CGROUP=y
> ++CONFIG_CGROUP_FREEZER=y
> ++CONFIG_CPUSETS=y
> ++CONFIG_CGROUP_DEVICE=y
> ++CONFIG_CGROUP_CPUACCT=y
> ++CONFIG_NAMESPACES=y
> ++CONFIG_USER_NS=y
> ++CONFIG_SCHED_AUTOGROUP=y
> ++CONFIG_BLK_DEV_INITRD=y
> ++CONFIG_EMBEDDED=y
> ++# CONFIG_COMPAT_BRK is not set
> ++CONFIG_PROFILING=y
> ++CONFIG_JUMP_LABEL=y
> ++CONFIG_MODULES=y
> ++CONFIG_MODULE_UNLOAD=y
> ++CONFIG_MODVERSIONS=y
> ++CONFIG_MODULE_SRCVERSION_ALL=y
> ++CONFIG_TRIM_UNUSED_KSYMS=y
> ++CONFIG_BLK_DEV_THROTTLING=y
> ++CONFIG_PARTITION_ADVANCED=y
> ++CONFIG_MAC_PARTITION=y
> ++CONFIG_CFQ_GROUP_IOSCHED=y
> ++CONFIG_ARCH_BCM2835=y
> ++CONFIG_NR_CPUS=4
> ++CONFIG_HOTPLUG_CPU=y
> ++CONFIG_PREEMPT_VOLUNTARY=y
> ++CONFIG_HZ_100=y
> ++CONFIG_CLEANCACHE=y
> ++CONFIG_FRONTSWAP=y
> ++CONFIG_CMA=y
> ++CONFIG_ZSMALLOC=m
> ++CONFIG_PGTABLE_MAPPING=y
> ++CONFIG_SECCOMP=y
> ++CONFIG_CMDLINE="console=ttyS0,115200 kgdboc=ttyS0,115200 root=/dev/mmcblk0p2 rootfs=ext4 rootwait"
> ++# CONFIG_EFI is not set
> ++CONFIG_BINFMT_MISC=m
> ++CONFIG_COMPAT=y
> ++# CONFIG_SUSPEND is not set
> ++CONFIG_PM=y
> ++CONFIG_CPU_FREQ=y
> ++CONFIG_CPU_FREQ_STAT=m
> ++CONFIG_CPU_FREQ_STAT_DETAILS=y
> ++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
> ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
> ++CONFIG_CPU_FREQ_GOV_USERSPACE=y
> ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y
> ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
> ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
> ++CONFIG_NET=y
> ++CONFIG_PACKET=y
> ++CONFIG_UNIX=y
> ++CONFIG_XFRM_USER=y
> ++CONFIG_NET_KEY=m
> ++CONFIG_INET=y
> ++CONFIG_IP_MULTICAST=y
> ++CONFIG_IP_ADVANCED_ROUTER=y
> ++CONFIG_IP_MULTIPLE_TABLES=y
> ++CONFIG_IP_ROUTE_MULTIPATH=y
> ++CONFIG_IP_ROUTE_VERBOSE=y
> ++CONFIG_IP_PNP=y
> ++CONFIG_IP_PNP_DHCP=y
> ++CONFIG_IP_PNP_RARP=y
> ++CONFIG_NET_IPIP=m
> ++CONFIG_NET_IPGRE_DEMUX=m
> ++CONFIG_NET_IPGRE=m
> ++CONFIG_IP_MROUTE=y
> ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
> ++CONFIG_IP_PIMSM_V1=y
> ++CONFIG_IP_PIMSM_V2=y
> ++CONFIG_SYN_COOKIES=y
> ++CONFIG_INET_AH=m
> ++CONFIG_INET_ESP=m
> ++CONFIG_INET_IPCOMP=m
> ++CONFIG_INET_XFRM_MODE_TRANSPORT=m
> ++CONFIG_INET_XFRM_MODE_TUNNEL=m
> ++CONFIG_INET_XFRM_MODE_BEET=m
> ++CONFIG_INET_DIAG=m
> ++CONFIG_IPV6=m
> ++CONFIG_IPV6_ROUTER_PREF=y
> ++CONFIG_INET6_AH=m
> ++CONFIG_INET6_ESP=m
> ++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
> ++CONFIG_NETFILTER=y
> ++CONFIG_NF_CONNTRACK=m
> ++CONFIG_NF_CONNTRACK_EVENTS=y
> ++CONFIG_NF_CONNTRACK_TIMESTAMP=y
> ++CONFIG_NF_CT_PROTO_DCCP=m
> ++CONFIG_NF_CT_PROTO_UDPLITE=m
> ++CONFIG_NF_CONNTRACK_AMANDA=m
> ++CONFIG_NF_CONNTRACK_FTP=m
> ++CONFIG_NF_CONNTRACK_H323=m
> ++CONFIG_NF_CONNTRACK_IRC=m
> ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m
> ++CONFIG_NF_CONNTRACK_SNMP=m
> ++CONFIG_NF_CONNTRACK_PPTP=m
> ++CONFIG_NF_CONNTRACK_SANE=m
> ++CONFIG_NF_CONNTRACK_SIP=m
> ++CONFIG_NF_CONNTRACK_TFTP=m
> ++CONFIG_NF_CT_NETLINK=m
> ++CONFIG_NETFILTER_XT_SET=m
> ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
> ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
> ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
> ++CONFIG_NETFILTER_XT_TARGET_DSCP=m
> ++CONFIG_NETFILTER_XT_TARGET_HMARK=m
> ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
> ++CONFIG_NETFILTER_XT_TARGET_LED=m
> ++CONFIG_NETFILTER_XT_TARGET_LOG=m
> ++CONFIG_NETFILTER_XT_TARGET_MARK=m
> ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m
> ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
> ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
> ++CONFIG_NETFILTER_XT_TARGET_TEE=m
> ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m
> ++CONFIG_NETFILTER_XT_TARGET_TRACE=m
> ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
> ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
> ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
> ++CONFIG_NETFILTER_XT_MATCH_BPF=m
> ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
> ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
> ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
> ++CONFIG_NETFILTER_XT_MATCH_CPU=m
> ++CONFIG_NETFILTER_XT_MATCH_DCCP=m
> ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
> ++CONFIG_NETFILTER_XT_MATCH_DSCP=m
> ++CONFIG_NETFILTER_XT_MATCH_ESP=m
> ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
> ++CONFIG_NETFILTER_XT_MATCH_HELPER=m
> ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
> ++CONFIG_NETFILTER_XT_MATCH_IPVS=m
> ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
> ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
> ++CONFIG_NETFILTER_XT_MATCH_MAC=m
> ++CONFIG_NETFILTER_XT_MATCH_MARK=m
> ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
> ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m
> ++CONFIG_NETFILTER_XT_MATCH_OSF=m
> ++CONFIG_NETFILTER_XT_MATCH_OWNER=m
> ++CONFIG_NETFILTER_XT_MATCH_POLICY=m
> ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
> ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
> ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
> ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m
> ++CONFIG_NETFILTER_XT_MATCH_REALM=m
> ++CONFIG_NETFILTER_XT_MATCH_RECENT=m
> ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m
> ++CONFIG_NETFILTER_XT_MATCH_STATE=m
> ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
> ++CONFIG_NETFILTER_XT_MATCH_STRING=m
> ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
> ++CONFIG_NETFILTER_XT_MATCH_TIME=m
> ++CONFIG_NETFILTER_XT_MATCH_U32=m
> ++CONFIG_IP_SET=m
> ++CONFIG_IP_SET_BITMAP_IP=m
> ++CONFIG_IP_SET_BITMAP_IPMAC=m
> ++CONFIG_IP_SET_BITMAP_PORT=m
> ++CONFIG_IP_SET_HASH_IP=m
> ++CONFIG_IP_SET_HASH_IPPORT=m
> ++CONFIG_IP_SET_HASH_IPPORTIP=m
> ++CONFIG_IP_SET_HASH_IPPORTNET=m
> ++CONFIG_IP_SET_HASH_NET=m
> ++CONFIG_IP_SET_HASH_NETPORT=m
> ++CONFIG_IP_SET_HASH_NETIFACE=m
> ++CONFIG_IP_SET_LIST_SET=m
> ++CONFIG_IP_VS=m
> ++CONFIG_IP_VS_PROTO_TCP=y
> ++CONFIG_IP_VS_PROTO_UDP=y
> ++CONFIG_IP_VS_PROTO_ESP=y
> ++CONFIG_IP_VS_PROTO_AH=y
> ++CONFIG_IP_VS_PROTO_SCTP=y
> ++CONFIG_IP_VS_RR=m
> ++CONFIG_IP_VS_WRR=m
> ++CONFIG_IP_VS_LC=m
> ++CONFIG_IP_VS_WLC=m
> ++CONFIG_IP_VS_LBLC=m
> ++CONFIG_IP_VS_LBLCR=m
> ++CONFIG_IP_VS_DH=m
> ++CONFIG_IP_VS_SH=m
> ++CONFIG_IP_VS_SED=m
> ++CONFIG_IP_VS_NQ=m
> ++CONFIG_IP_VS_FTP=m
> ++CONFIG_IP_VS_PE_SIP=m
> ++CONFIG_NF_CONNTRACK_IPV4=m
> ++CONFIG_IP_NF_IPTABLES=m
> ++CONFIG_IP_NF_MATCH_AH=m
> ++CONFIG_IP_NF_MATCH_ECN=m
> ++CONFIG_IP_NF_MATCH_RPFILTER=m
> ++CONFIG_IP_NF_MATCH_TTL=m
> ++CONFIG_IP_NF_FILTER=m
> ++CONFIG_IP_NF_TARGET_REJECT=m
> ++CONFIG_IP_NF_NAT=m
> ++CONFIG_IP_NF_TARGET_MASQUERADE=m
> ++CONFIG_IP_NF_TARGET_NETMAP=m
> ++CONFIG_IP_NF_TARGET_REDIRECT=m
> ++CONFIG_IP_NF_MANGLE=m
> ++CONFIG_IP_NF_TARGET_CLUSTERIP=m
> ++CONFIG_IP_NF_TARGET_ECN=m
> ++CONFIG_IP_NF_TARGET_TTL=m
> ++CONFIG_IP_NF_RAW=m
> ++CONFIG_IP_NF_ARPTABLES=m
> ++CONFIG_IP_NF_ARPFILTER=m
> ++CONFIG_IP_NF_ARP_MANGLE=m
> ++CONFIG_NF_CONNTRACK_IPV6=m
> ++CONFIG_IP6_NF_IPTABLES=m
> ++CONFIG_IP6_NF_MATCH_AH=m
> ++CONFIG_IP6_NF_MATCH_EUI64=m
> ++CONFIG_IP6_NF_MATCH_FRAG=m
> ++CONFIG_IP6_NF_MATCH_OPTS=m
> ++CONFIG_IP6_NF_MATCH_HL=m
> ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m
> ++CONFIG_IP6_NF_MATCH_MH=m
> ++CONFIG_IP6_NF_MATCH_RPFILTER=m
> ++CONFIG_IP6_NF_MATCH_RT=m
> ++CONFIG_IP6_NF_TARGET_HL=m
> ++CONFIG_IP6_NF_FILTER=m
> ++CONFIG_IP6_NF_TARGET_REJECT=m
> ++CONFIG_IP6_NF_MANGLE=m
> ++CONFIG_IP6_NF_RAW=m
> ++CONFIG_IP6_NF_NAT=m
> ++CONFIG_IP6_NF_TARGET_MASQUERADE=m
> ++CONFIG_IP6_NF_TARGET_NPT=m
> ++CONFIG_BRIDGE_NF_EBTABLES=m
> ++CONFIG_BRIDGE_EBT_BROUTE=m
> ++CONFIG_BRIDGE_EBT_T_FILTER=m
> ++CONFIG_BRIDGE_EBT_T_NAT=m
> ++CONFIG_BRIDGE_EBT_802_3=m
> ++CONFIG_BRIDGE_EBT_AMONG=m
> ++CONFIG_BRIDGE_EBT_ARP=m
> ++CONFIG_BRIDGE_EBT_IP=m
> ++CONFIG_BRIDGE_EBT_IP6=m
> ++CONFIG_BRIDGE_EBT_LIMIT=m
> ++CONFIG_BRIDGE_EBT_MARK=m
> ++CONFIG_BRIDGE_EBT_PKTTYPE=m
> ++CONFIG_BRIDGE_EBT_STP=m
> ++CONFIG_BRIDGE_EBT_VLAN=m
> ++CONFIG_BRIDGE_EBT_ARPREPLY=m
> ++CONFIG_BRIDGE_EBT_DNAT=m
> ++CONFIG_BRIDGE_EBT_MARK_T=m
> ++CONFIG_BRIDGE_EBT_REDIRECT=m
> ++CONFIG_BRIDGE_EBT_SNAT=m
> ++CONFIG_BRIDGE_EBT_LOG=m
> ++CONFIG_BRIDGE_EBT_NFLOG=m
> ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y
> ++CONFIG_ATM=m
> ++CONFIG_L2TP=m
> ++CONFIG_L2TP_V3=y
> ++CONFIG_L2TP_IP=m
> ++CONFIG_L2TP_ETH=m
> ++CONFIG_BRIDGE=m
> ++CONFIG_VLAN_8021Q=m
> ++CONFIG_VLAN_8021Q_GVRP=y
> ++CONFIG_ATALK=m
> ++CONFIG_6LOWPAN=m
> ++CONFIG_IEEE802154=m
> ++CONFIG_IEEE802154_6LOWPAN=m
> ++CONFIG_MAC802154=m
> ++CONFIG_NET_SCHED=y
> ++CONFIG_NET_SCH_CBQ=m
> ++CONFIG_NET_SCH_HTB=m
> ++CONFIG_NET_SCH_HFSC=m
> ++CONFIG_NET_SCH_PRIO=m
> ++CONFIG_NET_SCH_MULTIQ=m
> ++CONFIG_NET_SCH_RED=m
> ++CONFIG_NET_SCH_SFB=m
> ++CONFIG_NET_SCH_SFQ=m
> ++CONFIG_NET_SCH_TEQL=m
> ++CONFIG_NET_SCH_TBF=m
> ++CONFIG_NET_SCH_GRED=m
> ++CONFIG_NET_SCH_DSMARK=m
> ++CONFIG_NET_SCH_NETEM=m
> ++CONFIG_NET_SCH_DRR=m
> ++CONFIG_NET_SCH_MQPRIO=m
> ++CONFIG_NET_SCH_CHOKE=m
> ++CONFIG_NET_SCH_QFQ=m
> ++CONFIG_NET_SCH_CODEL=m
> ++CONFIG_NET_SCH_FQ_CODEL=m
> ++CONFIG_NET_SCH_INGRESS=m
> ++CONFIG_NET_SCH_PLUG=m
> ++CONFIG_NET_CLS_BASIC=m
> ++CONFIG_NET_CLS_TCINDEX=m
> ++CONFIG_NET_CLS_ROUTE4=m
> ++CONFIG_NET_CLS_FW=m
> ++CONFIG_NET_CLS_U32=m
> ++CONFIG_CLS_U32_MARK=y
> ++CONFIG_NET_CLS_RSVP=m
> ++CONFIG_NET_CLS_RSVP6=m
> ++CONFIG_NET_CLS_FLOW=m
> ++CONFIG_NET_CLS_CGROUP=m
> ++CONFIG_NET_EMATCH=y
> ++CONFIG_NET_EMATCH_CMP=m
> ++CONFIG_NET_EMATCH_NBYTE=m
> ++CONFIG_NET_EMATCH_U32=m
> ++CONFIG_NET_EMATCH_META=m
> ++CONFIG_NET_EMATCH_TEXT=m
> ++CONFIG_NET_EMATCH_IPSET=m
> ++CONFIG_NET_CLS_ACT=y
> ++CONFIG_NET_ACT_POLICE=m
> ++CONFIG_NET_ACT_GACT=m
> ++CONFIG_GACT_PROB=y
> ++CONFIG_NET_ACT_MIRRED=m
> ++CONFIG_NET_ACT_IPT=m
> ++CONFIG_NET_ACT_NAT=m
> ++CONFIG_NET_ACT_PEDIT=m
> ++CONFIG_NET_ACT_SIMP=m
> ++CONFIG_NET_ACT_SKBEDIT=m
> ++CONFIG_NET_ACT_CSUM=m
> ++CONFIG_BATMAN_ADV=m
> ++CONFIG_OPENVSWITCH=m
> ++CONFIG_NET_PKTGEN=m
> ++CONFIG_HAMRADIO=y
> ++CONFIG_AX25=m
> ++CONFIG_NETROM=m
> ++CONFIG_ROSE=m
> ++CONFIG_MKISS=m
> ++CONFIG_6PACK=m
> ++CONFIG_BPQETHER=m
> ++CONFIG_BAYCOM_SER_FDX=m
> ++CONFIG_BAYCOM_SER_HDX=m
> ++CONFIG_YAM=m
> ++CONFIG_CAN=m
> ++CONFIG_CAN_VCAN=m
> ++CONFIG_CAN_MCP251X=m
> ++CONFIG_IRDA=m
> ++CONFIG_IRLAN=m
> ++CONFIG_IRNET=m
> ++CONFIG_IRCOMM=m
> ++CONFIG_IRDA_ULTRA=y
> ++CONFIG_IRDA_CACHE_LAST_LSAP=y
> ++CONFIG_IRDA_FAST_RR=y
> ++CONFIG_IRTTY_SIR=m
> ++CONFIG_KINGSUN_DONGLE=m
> ++CONFIG_KSDAZZLE_DONGLE=m
> ++CONFIG_KS959_DONGLE=m
> ++CONFIG_USB_IRDA=m
> ++CONFIG_SIGMATEL_FIR=m
> ++CONFIG_MCS_FIR=m
> ++CONFIG_BT=m
> ++CONFIG_BT_RFCOMM=m
> ++CONFIG_BT_RFCOMM_TTY=y
> ++CONFIG_BT_BNEP=m
> ++CONFIG_BT_BNEP_MC_FILTER=y
> ++CONFIG_BT_BNEP_PROTO_FILTER=y
> ++CONFIG_BT_HIDP=m
> ++CONFIG_BT_6LOWPAN=m
> ++CONFIG_BT_HCIBTUSB=m
> ++CONFIG_BT_HCIUART=m
> ++CONFIG_BT_HCIUART_3WIRE=y
> ++CONFIG_BT_HCIUART_BCM=y
> ++CONFIG_BT_HCIBCM203X=m
> ++CONFIG_BT_HCIBPA10X=m
> ++CONFIG_BT_HCIBFUSB=m
> ++CONFIG_BT_HCIVHCI=m
> ++CONFIG_BT_MRVL=m
> ++CONFIG_BT_MRVL_SDIO=m
> ++CONFIG_BT_ATH3K=m
> ++CONFIG_BT_WILINK=m
> ++CONFIG_CFG80211_WEXT=y
> ++CONFIG_MAC80211=m
> ++CONFIG_MAC80211_MESH=y
> ++CONFIG_WIMAX=m
> ++CONFIG_RFKILL=m
> ++CONFIG_RFKILL_INPUT=y
> ++CONFIG_NET_9P=m
> ++CONFIG_NFC=m
> ++CONFIG_DEVTMPFS=y
> ++CONFIG_DEVTMPFS_MOUNT=y
> ++CONFIG_DMA_CMA=y
> ++CONFIG_MTD=m
> ++CONFIG_MTD_BLOCK=m
> ++CONFIG_MTD_NAND=m
> ++CONFIG_MTD_UBI=m
> ++CONFIG_OF_CONFIGFS=y
> ++CONFIG_ZRAM=m
> ++CONFIG_ZRAM_LZ4_COMPRESS=y
> ++CONFIG_BLK_DEV_LOOP=y
> ++CONFIG_BLK_DEV_CRYPTOLOOP=m
> ++CONFIG_BLK_DEV_DRBD=m
> ++CONFIG_BLK_DEV_NBD=m
> ++CONFIG_BLK_DEV_RAM=y
> ++CONFIG_CDROM_PKTCDVD=m
> ++CONFIG_ATA_OVER_ETH=m
> ++CONFIG_EEPROM_AT24=m
> ++CONFIG_TI_ST=m
> ++# CONFIG_BCM2708_VCHIQ is not set
> ++CONFIG_SCSI=y
> ++# CONFIG_SCSI_PROC_FS is not set
> ++CONFIG_BLK_DEV_SD=y
> ++CONFIG_CHR_DEV_ST=m
> ++CONFIG_CHR_DEV_OSST=m
> ++CONFIG_BLK_DEV_SR=m
> ++CONFIG_CHR_DEV_SG=m
> ++CONFIG_SCSI_ISCSI_ATTRS=y
> ++CONFIG_ISCSI_TCP=m
> ++CONFIG_ISCSI_BOOT_SYSFS=m
> ++CONFIG_MD=y
> ++CONFIG_MD_LINEAR=m
> ++CONFIG_MD_RAID0=m
> ++CONFIG_BLK_DEV_DM=m
> ++CONFIG_DM_CRYPT=m
> ++CONFIG_DM_SNAPSHOT=m
> ++CONFIG_DM_THIN_PROVISIONING=m
> ++CONFIG_DM_MIRROR=m
> ++CONFIG_DM_LOG_USERSPACE=m
> ++CONFIG_DM_RAID=m
> ++CONFIG_DM_ZERO=m
> ++CONFIG_DM_DELAY=m
> ++CONFIG_NETDEVICES=y
> ++CONFIG_BONDING=m
> ++CONFIG_DUMMY=m
> ++CONFIG_IFB=m
> ++CONFIG_MACVLAN=m
> ++CONFIG_NETCONSOLE=m
> ++CONFIG_TUN=m
> ++CONFIG_VETH=m
> ++# CONFIG_NET_VENDOR_AMD is not set
> ++CONFIG_ENC28J60=m
> ++CONFIG_QCA7000=m
> ++CONFIG_MDIO_BITBANG=m
> ++CONFIG_PPP=m
> ++CONFIG_PPP_BSDCOMP=m
> ++CONFIG_PPP_DEFLATE=m
> ++CONFIG_PPP_FILTER=y
> ++CONFIG_PPP_MPPE=m
> ++CONFIG_PPP_MULTILINK=y
> ++CONFIG_PPPOATM=m
> ++CONFIG_PPPOE=m
> ++CONFIG_PPPOL2TP=m
> ++CONFIG_PPP_ASYNC=m
> ++CONFIG_PPP_SYNC_TTY=m
> ++CONFIG_SLIP=m
> ++CONFIG_SLIP_COMPRESSED=y
> ++CONFIG_SLIP_SMART=y
> ++CONFIG_USB_CATC=m
> ++CONFIG_USB_KAWETH=m
> ++CONFIG_USB_PEGASUS=m
> ++CONFIG_USB_RTL8150=m
> ++CONFIG_USB_RTL8152=m
> ++CONFIG_USB_USBNET=y
> ++CONFIG_USB_NET_AX8817X=m
> ++CONFIG_USB_NET_AX88179_178A=m
> ++CONFIG_USB_NET_CDCETHER=m
> ++CONFIG_USB_NET_CDC_EEM=m
> ++CONFIG_USB_NET_CDC_NCM=m
> ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m
> ++CONFIG_USB_NET_CDC_MBIM=m
> ++CONFIG_USB_NET_DM9601=m
> ++CONFIG_USB_NET_SR9700=m
> ++CONFIG_USB_NET_SR9800=m
> ++CONFIG_USB_NET_SMSC75XX=m
> ++CONFIG_USB_NET_SMSC95XX=y
> ++CONFIG_USB_NET_GL620A=m
> ++CONFIG_USB_NET_NET1080=m
> ++CONFIG_USB_NET_PLUSB=m
> ++CONFIG_USB_NET_MCS7830=m
> ++CONFIG_USB_NET_CDC_SUBSET=m
> ++CONFIG_USB_ALI_M5632=y
> ++CONFIG_USB_AN2720=y
> ++CONFIG_USB_EPSON2888=y
> ++CONFIG_USB_KC2190=y
> ++CONFIG_USB_NET_ZAURUS=m
> ++CONFIG_USB_NET_CX82310_ETH=m
> ++CONFIG_USB_NET_KALMIA=m
> ++CONFIG_USB_NET_QMI_WWAN=m
> ++CONFIG_USB_HSO=m
> ++CONFIG_USB_NET_INT51X1=m
> ++CONFIG_USB_IPHETH=m
> ++CONFIG_USB_SIERRA_NET=m
> ++CONFIG_USB_VL600=m
> ++CONFIG_ATH9K=m
> ++CONFIG_ATH9K_HTC=m
> ++CONFIG_CARL9170=m
> ++CONFIG_ATH6KL=m
> ++CONFIG_ATH6KL_USB=m
> ++CONFIG_AR5523=m
> ++CONFIG_AT76C50X_USB=m
> ++CONFIG_B43=m
> ++# CONFIG_B43_PHY_N is not set
> ++CONFIG_B43LEGACY=m
> ++CONFIG_BRCMFMAC=m
> ++CONFIG_BRCMFMAC_USB=y
> ++CONFIG_HOSTAP=m
> ++CONFIG_P54_COMMON=m
> ++CONFIG_P54_USB=m
> ++CONFIG_LIBERTAS=m
> ++CONFIG_LIBERTAS_USB=m
> ++CONFIG_LIBERTAS_SDIO=m
> ++CONFIG_LIBERTAS_THINFIRM=m
> ++CONFIG_LIBERTAS_THINFIRM_USB=m
> ++CONFIG_MWIFIEX=m
> ++CONFIG_MWIFIEX_SDIO=m
> ++CONFIG_MT7601U=m
> ++CONFIG_RT2X00=m
> ++CONFIG_RT2500USB=m
> ++CONFIG_RT73USB=m
> ++CONFIG_RT2800USB=m
> ++CONFIG_RT2800USB_RT3573=y
> ++CONFIG_RT2800USB_RT53XX=y
> ++CONFIG_RT2800USB_RT55XX=y
> ++CONFIG_RT2800USB_UNKNOWN=y
> ++CONFIG_RTL8187=m
> ++CONFIG_USB_ZD1201=m
> ++CONFIG_ZD1211RW=m
> ++CONFIG_MAC80211_HWSIM=m
> ++CONFIG_USB_NET_RNDIS_WLAN=m
> ++CONFIG_WIMAX_I2400M_USB=m
> ++CONFIG_IEEE802154_AT86RF230=m
> ++CONFIG_IEEE802154_MRF24J40=m
> ++CONFIG_IEEE802154_CC2520=m
> ++CONFIG_INPUT_POLLDEV=m
> ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
> ++CONFIG_INPUT_JOYDEV=m
> ++CONFIG_INPUT_EVDEV=m
> ++# CONFIG_KEYBOARD_ATKBD is not set
> ++CONFIG_KEYBOARD_GPIO=m
> ++# CONFIG_INPUT_MOUSE is not set
> ++CONFIG_INPUT_JOYSTICK=y
> ++CONFIG_JOYSTICK_IFORCE=m
> ++CONFIG_JOYSTICK_IFORCE_USB=y
> ++CONFIG_JOYSTICK_XPAD=m
> ++CONFIG_JOYSTICK_XPAD_FF=y
> ++CONFIG_JOYSTICK_XPAD_LEDS=y
> ++CONFIG_JOYSTICK_RPISENSE=m
> ++CONFIG_INPUT_TOUCHSCREEN=y
> ++CONFIG_TOUCHSCREEN_ADS7846=m
> ++CONFIG_TOUCHSCREEN_EGALAX=m
> ++CONFIG_TOUCHSCREEN_FT6236=m
> ++CONFIG_TOUCHSCREEN_RPI_FT5406=m
> ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
> ++CONFIG_TOUCHSCREEN_STMPE=m
> ++CONFIG_INPUT_MISC=y
> ++CONFIG_INPUT_AD714X=m
> ++CONFIG_INPUT_ATI_REMOTE2=m
> ++CONFIG_INPUT_KEYSPAN_REMOTE=m
> ++CONFIG_INPUT_POWERMATE=m
> ++CONFIG_INPUT_YEALINK=m
> ++CONFIG_INPUT_CM109=m
> ++CONFIG_INPUT_UINPUT=m
> ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
> ++CONFIG_INPUT_ADXL34X=m
> ++CONFIG_INPUT_CMA3000=m
> ++CONFIG_SERIO=m
> ++CONFIG_SERIO_RAW=m
> ++CONFIG_GAMEPORT=m
> ++CONFIG_GAMEPORT_NS558=m
> ++CONFIG_GAMEPORT_L4=m
> ++# CONFIG_LEGACY_PTYS is not set
> ++# CONFIG_DEVKMEM is not set
> ++CONFIG_SERIAL_8250=y
> ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
> ++CONFIG_SERIAL_8250_CONSOLE=y
> ++# CONFIG_SERIAL_8250_DMA is not set
> ++CONFIG_SERIAL_8250_NR_UARTS=1
> ++CONFIG_SERIAL_8250_RUNTIME_UARTS=1
> ++CONFIG_SERIAL_8250_EXTENDED=y
> ++CONFIG_SERIAL_8250_SHARE_IRQ=y
> ++CONFIG_SERIAL_8250_BCM2835AUX=y
> ++CONFIG_SERIAL_OF_PLATFORM=y
> ++CONFIG_SERIAL_AMBA_PL011=y
> ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
> ++CONFIG_TTY_PRINTK=y
> ++CONFIG_HW_RANDOM=y
> ++CONFIG_RAW_DRIVER=y
> ++CONFIG_I2C=y
> ++CONFIG_I2C_CHARDEV=m
> ++CONFIG_I2C_MUX_PCA954x=m
> ++CONFIG_I2C_BCM2835=m
> ++CONFIG_I2C_GPIO=m
> ++CONFIG_SPI=y
> ++CONFIG_SPI_BCM2835=m
> ++CONFIG_SPI_BCM2835AUX=m
> ++CONFIG_SPI_SPIDEV=y
> ++CONFIG_PPS=m
> ++CONFIG_PPS_CLIENT_LDISC=m
> ++CONFIG_PPS_CLIENT_GPIO=m
> ++CONFIG_GPIO_SYSFS=y
> ++CONFIG_GPIO_BCM_VIRT=y
> ++CONFIG_GPIO_ARIZONA=m
> ++CONFIG_GPIO_STMPE=y
> ++CONFIG_GPIO_MCP23S08=m
> ++CONFIG_W1=m
> ++CONFIG_W1_MASTER_DS2490=m
> ++CONFIG_W1_MASTER_DS2482=m
> ++CONFIG_W1_MASTER_DS1WM=m
> ++CONFIG_W1_MASTER_GPIO=m
> ++CONFIG_W1_SLAVE_THERM=m
> ++CONFIG_W1_SLAVE_SMEM=m
> ++CONFIG_W1_SLAVE_DS2408=m
> ++CONFIG_W1_SLAVE_DS2413=m
> ++CONFIG_W1_SLAVE_DS2406=m
> ++CONFIG_W1_SLAVE_DS2423=m
> ++CONFIG_W1_SLAVE_DS2431=m
> ++CONFIG_W1_SLAVE_DS2433=m
> ++CONFIG_W1_SLAVE_DS2760=m
> ++CONFIG_W1_SLAVE_DS2780=m
> ++CONFIG_W1_SLAVE_DS2781=m
> ++CONFIG_W1_SLAVE_DS28E04=m
> ++CONFIG_W1_SLAVE_BQ27000=m
> ++CONFIG_BATTERY_DS2760=m
> ++CONFIG_POWER_RESET_GPIO=y
> ++CONFIG_HWMON=m
> ++CONFIG_SENSORS_SHT21=m
> ++CONFIG_SENSORS_SHTC1=m
> ++CONFIG_THERMAL=y
> ++CONFIG_THERMAL_BCM2835=y
> ++CONFIG_WATCHDOG=y
> ++CONFIG_BCM2835_WDT=m
> ++CONFIG_MFD_STMPE=y
> ++CONFIG_STMPE_SPI=y
> ++CONFIG_MFD_SYSCON=y
> ++CONFIG_MFD_ARIZONA_I2C=m
> ++CONFIG_MFD_ARIZONA_SPI=m
> ++CONFIG_MFD_WM5102=y
> ++CONFIG_MEDIA_SUPPORT=m
> ++CONFIG_MEDIA_CAMERA_SUPPORT=y
> ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
> ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
> ++CONFIG_MEDIA_RADIO_SUPPORT=y
> ++CONFIG_MEDIA_RC_SUPPORT=y
> ++CONFIG_MEDIA_CONTROLLER=y
> ++CONFIG_LIRC=m
> ++CONFIG_RC_DEVICES=y
> ++CONFIG_RC_ATI_REMOTE=m
> ++CONFIG_IR_IMON=m
> ++CONFIG_IR_MCEUSB=m
> ++CONFIG_IR_REDRAT3=m
> ++CONFIG_IR_STREAMZAP=m
> ++CONFIG_IR_IGUANA=m
> ++CONFIG_IR_TTUSBIR=m
> ++CONFIG_RC_LOOPBACK=m
> ++CONFIG_IR_GPIO_CIR=m
> ++CONFIG_MEDIA_USB_SUPPORT=y
> ++CONFIG_USB_VIDEO_CLASS=m
> ++CONFIG_USB_M5602=m
> ++CONFIG_USB_STV06XX=m
> ++CONFIG_USB_GL860=m
> ++CONFIG_USB_GSPCA_BENQ=m
> ++CONFIG_USB_GSPCA_CONEX=m
> ++CONFIG_USB_GSPCA_CPIA1=m
> ++CONFIG_USB_GSPCA_DTCS033=m
> ++CONFIG_USB_GSPCA_ETOMS=m
> ++CONFIG_USB_GSPCA_FINEPIX=m
> ++CONFIG_USB_GSPCA_JEILINJ=m
> ++CONFIG_USB_GSPCA_JL2005BCD=m
> ++CONFIG_USB_GSPCA_KINECT=m
> ++CONFIG_USB_GSPCA_KONICA=m
> ++CONFIG_USB_GSPCA_MARS=m
> ++CONFIG_USB_GSPCA_MR97310A=m
> ++CONFIG_USB_GSPCA_NW80X=m
> ++CONFIG_USB_GSPCA_OV519=m
> ++CONFIG_USB_GSPCA_OV534=m
> ++CONFIG_USB_GSPCA_OV534_9=m
> ++CONFIG_USB_GSPCA_PAC207=m
> ++CONFIG_USB_GSPCA_PAC7302=m
> ++CONFIG_USB_GSPCA_PAC7311=m
> ++CONFIG_USB_GSPCA_SE401=m
> ++CONFIG_USB_GSPCA_SN9C2028=m
> ++CONFIG_USB_GSPCA_SN9C20X=m
> ++CONFIG_USB_GSPCA_SONIXB=m
> ++CONFIG_USB_GSPCA_SONIXJ=m
> ++CONFIG_USB_GSPCA_SPCA500=m
> ++CONFIG_USB_GSPCA_SPCA501=m
> ++CONFIG_USB_GSPCA_SPCA505=m
> ++CONFIG_USB_GSPCA_SPCA506=m
> ++CONFIG_USB_GSPCA_SPCA508=m
> ++CONFIG_USB_GSPCA_SPCA561=m
> ++CONFIG_USB_GSPCA_SPCA1528=m
> ++CONFIG_USB_GSPCA_SQ905=m
> ++CONFIG_USB_GSPCA_SQ905C=m
> ++CONFIG_USB_GSPCA_SQ930X=m
> ++CONFIG_USB_GSPCA_STK014=m
> ++CONFIG_USB_GSPCA_STK1135=m
> ++CONFIG_USB_GSPCA_STV0680=m
> ++CONFIG_USB_GSPCA_SUNPLUS=m
> ++CONFIG_USB_GSPCA_T613=m
> ++CONFIG_USB_GSPCA_TOPRO=m
> ++CONFIG_USB_GSPCA_TV8532=m
> ++CONFIG_USB_GSPCA_VC032X=m
> ++CONFIG_USB_GSPCA_VICAM=m
> ++CONFIG_USB_GSPCA_XIRLINK_CIT=m
> ++CONFIG_USB_GSPCA_ZC3XX=m
> ++CONFIG_USB_PWC=m
> ++CONFIG_VIDEO_CPIA2=m
> ++CONFIG_USB_ZR364XX=m
> ++CONFIG_USB_STKWEBCAM=m
> ++CONFIG_USB_S2255=m
> ++CONFIG_VIDEO_USBTV=m
> ++CONFIG_VIDEO_PVRUSB2=m
> ++CONFIG_VIDEO_HDPVR=m
> ++CONFIG_VIDEO_USBVISION=m
> ++CONFIG_VIDEO_STK1160_COMMON=m
> ++CONFIG_VIDEO_STK1160_AC97=y
> ++CONFIG_VIDEO_GO7007=m
> ++CONFIG_VIDEO_GO7007_USB=m
> ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
> ++CONFIG_VIDEO_AU0828=m
> ++CONFIG_VIDEO_AU0828_RC=y
> ++CONFIG_VIDEO_CX231XX=m
> ++CONFIG_VIDEO_CX231XX_ALSA=m
> ++CONFIG_VIDEO_CX231XX_DVB=m
> ++CONFIG_VIDEO_TM6000=m
> ++CONFIG_VIDEO_TM6000_ALSA=m
> ++CONFIG_VIDEO_TM6000_DVB=m
> ++CONFIG_DVB_USB=m
> ++CONFIG_DVB_USB_A800=m
> ++CONFIG_DVB_USB_DIBUSB_MB=m
> ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
> ++CONFIG_DVB_USB_DIBUSB_MC=m
> ++CONFIG_DVB_USB_DIB0700=m
> ++CONFIG_DVB_USB_UMT_010=m
> ++CONFIG_DVB_USB_CXUSB=m
> ++CONFIG_DVB_USB_M920X=m
> ++CONFIG_DVB_USB_DIGITV=m
> ++CONFIG_DVB_USB_VP7045=m
> ++CONFIG_DVB_USB_VP702X=m
> ++CONFIG_DVB_USB_GP8PSK=m
> ++CONFIG_DVB_USB_NOVA_T_USB2=m
> ++CONFIG_DVB_USB_TTUSB2=m
> ++CONFIG_DVB_USB_DTT200U=m
> ++CONFIG_DVB_USB_OPERA1=m
> ++CONFIG_DVB_USB_AF9005=m
> ++CONFIG_DVB_USB_AF9005_REMOTE=m
> ++CONFIG_DVB_USB_PCTV452E=m
> ++CONFIG_DVB_USB_DW2102=m
> ++CONFIG_DVB_USB_CINERGY_T2=m
> ++CONFIG_DVB_USB_DTV5100=m
> ++CONFIG_DVB_USB_FRIIO=m
> ++CONFIG_DVB_USB_AZ6027=m
> ++CONFIG_DVB_USB_TECHNISAT_USB2=m
> ++CONFIG_DVB_USB_V2=m
> ++CONFIG_DVB_USB_AF9015=m
> ++CONFIG_DVB_USB_AF9035=m
> ++CONFIG_DVB_USB_ANYSEE=m
> ++CONFIG_DVB_USB_AU6610=m
> ++CONFIG_DVB_USB_AZ6007=m
> ++CONFIG_DVB_USB_CE6230=m
> ++CONFIG_DVB_USB_EC168=m
> ++CONFIG_DVB_USB_GL861=m
> ++CONFIG_DVB_USB_LME2510=m
> ++CONFIG_DVB_USB_MXL111SF=m
> ++CONFIG_DVB_USB_RTL28XXU=m
> ++CONFIG_DVB_USB_DVBSKY=m
> ++CONFIG_SMS_USB_DRV=m
> ++CONFIG_DVB_B2C2_FLEXCOP_USB=m
> ++CONFIG_DVB_AS102=m
> ++CONFIG_VIDEO_EM28XX=m
> ++CONFIG_VIDEO_EM28XX_V4L2=m
> ++CONFIG_VIDEO_EM28XX_ALSA=m
> ++CONFIG_VIDEO_EM28XX_DVB=m
> ++CONFIG_V4L_PLATFORM_DRIVERS=y
> ++CONFIG_VIDEO_BCM2835=y
> ++CONFIG_RADIO_SI470X=y
> ++CONFIG_USB_SI470X=m
> ++CONFIG_I2C_SI470X=m
> ++CONFIG_RADIO_SI4713=m
> ++CONFIG_I2C_SI4713=m
> ++CONFIG_USB_MR800=m
> ++CONFIG_USB_DSBR=m
> ++CONFIG_RADIO_SHARK=m
> ++CONFIG_RADIO_SHARK2=m
> ++CONFIG_USB_KEENE=m
> ++CONFIG_USB_MA901=m
> ++CONFIG_RADIO_TEA5764=m
> ++CONFIG_RADIO_SAA7706H=m
> ++CONFIG_RADIO_TEF6862=m
> ++CONFIG_RADIO_WL1273=m
> ++CONFIG_RADIO_WL128X=m
> ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
> ++CONFIG_VIDEO_UDA1342=m
> ++CONFIG_VIDEO_SONY_BTF_MPX=m
> ++CONFIG_VIDEO_TVP5150=m
> ++CONFIG_VIDEO_TW2804=m
> ++CONFIG_VIDEO_TW9903=m
> ++CONFIG_VIDEO_TW9906=m
> ++CONFIG_VIDEO_OV7640=m
> ++CONFIG_VIDEO_MT9V011=m
> ++CONFIG_DRM=m
> ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y
> ++CONFIG_DRM_UDL=m
> ++CONFIG_DRM_VC4=m
> ++CONFIG_FB=y
> ++CONFIG_FB_BCM2708=y
> ++CONFIG_FB_UDL=m
> ++CONFIG_FB_SSD1307=m
> ++CONFIG_FB_RPISENSE=m
> ++# CONFIG_BACKLIGHT_GENERIC is not set
> ++CONFIG_BACKLIGHT_RPI=m
> ++CONFIG_BACKLIGHT_GPIO=m
> ++CONFIG_FRAMEBUFFER_CONSOLE=y
> ++CONFIG_LOGO=y
> ++# CONFIG_LOGO_LINUX_MONO is not set
> ++# CONFIG_LOGO_LINUX_VGA16 is not set
> ++CONFIG_SOUND=y
> ++CONFIG_SND=m
> ++CONFIG_SND_SEQUENCER=m
> ++CONFIG_SND_SEQ_DUMMY=m
> ++CONFIG_SND_MIXER_OSS=m
> ++CONFIG_SND_PCM_OSS=m
> ++CONFIG_SND_SEQUENCER_OSS=y
> ++CONFIG_SND_HRTIMER=m
> ++CONFIG_SND_DUMMY=m
> ++CONFIG_SND_ALOOP=m
> ++CONFIG_SND_VIRMIDI=m
> ++CONFIG_SND_MTPAV=m
> ++CONFIG_SND_SERIAL_U16550=m
> ++CONFIG_SND_MPU401=m
> ++CONFIG_SND_USB_AUDIO=m
> ++CONFIG_SND_USB_UA101=m
> ++CONFIG_SND_USB_CAIAQ=m
> ++CONFIG_SND_USB_CAIAQ_INPUT=y
> ++CONFIG_SND_USB_6FIRE=m
> ++CONFIG_SND_SOC=m
> ++CONFIG_SND_BCM2835_SOC_I2S=m
> ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
> ++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_RPI_DAC=m
> ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
> ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
> ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
> ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
> ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
> ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
> ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m
> ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m
> ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m
> ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m
> ++CONFIG_SND_SOC_ADAU1701=m
> ++CONFIG_SND_SOC_WM8804_I2C=m
> ++CONFIG_SND_SIMPLE_CARD=m
> ++CONFIG_SOUND_PRIME=m
> ++CONFIG_HIDRAW=y
> ++CONFIG_UHID=m
> ++CONFIG_HID_A4TECH=m
> ++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
> ++CONFIG_HID_DRAGONRISE=m
> ++CONFIG_HID_EMS_FF=m
> ++CONFIG_HID_ELECOM=m
> ++CONFIG_HID_ELO=m
> ++CONFIG_HID_EZKEY=m
> ++CONFIG_HID_HOLTEK=m
> ++CONFIG_HID_KEYTOUCH=m
> ++CONFIG_HID_KYE=m
> ++CONFIG_HID_UCLOGIC=m
> ++CONFIG_HID_WALTOP=m
> ++CONFIG_HID_GYRATION=m
> ++CONFIG_HID_TWINHAN=m
> ++CONFIG_HID_KENSINGTON=m
> ++CONFIG_HID_LCPOWER=m
> ++CONFIG_HID_LOGITECH=m
> ++CONFIG_HID_LOGITECH_DJ=m
> ++CONFIG_LOGITECH_FF=y
> ++CONFIG_LOGIRUMBLEPAD2_FF=y
> ++CONFIG_LOGIG940_FF=y
> ++CONFIG_HID_MAGICMOUSE=m
> ++CONFIG_HID_MICROSOFT=m
> ++CONFIG_HID_MONTEREY=m
> ++CONFIG_HID_MULTITOUCH=m
> ++CONFIG_HID_NTRIG=m
> ++CONFIG_HID_ORTEK=m
> ++CONFIG_HID_PANTHERLORD=m
> ++CONFIG_HID_PETALYNX=m
> ++CONFIG_HID_PICOLCD=m
> ++CONFIG_HID_ROCCAT=m
> ++CONFIG_HID_SAMSUNG=m
> ++CONFIG_HID_SONY=m
> ++CONFIG_HID_SPEEDLINK=m
> ++CONFIG_HID_SUNPLUS=m
> ++CONFIG_HID_GREENASIA=m
> ++CONFIG_HID_SMARTJOYPLUS=m
> ++CONFIG_HID_TOPSEED=m
> ++CONFIG_HID_THINGM=m
> ++CONFIG_HID_THRUSTMASTER=m
> ++CONFIG_HID_WACOM=m
> ++CONFIG_HID_WIIMOTE=m
> ++CONFIG_HID_XINMO=m
> ++CONFIG_HID_ZEROPLUS=m
> ++CONFIG_HID_ZYDACRON=m
> ++CONFIG_HID_PID=y
> ++CONFIG_USB_HIDDEV=y
> ++CONFIG_USB=y
> ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
> ++CONFIG_USB_MON=m
> ++CONFIG_USB_PRINTER=m
> ++CONFIG_USB_STORAGE=y
> ++CONFIG_USB_STORAGE_REALTEK=m
> ++CONFIG_USB_STORAGE_DATAFAB=m
> ++CONFIG_USB_STORAGE_FREECOM=m
> ++CONFIG_USB_STORAGE_ISD200=m
> ++CONFIG_USB_STORAGE_USBAT=m
> ++CONFIG_USB_STORAGE_SDDR09=m
> ++CONFIG_USB_STORAGE_SDDR55=m
> ++CONFIG_USB_STORAGE_JUMPSHOT=m
> ++CONFIG_USB_STORAGE_ALAUDA=m
> ++CONFIG_USB_STORAGE_ONETOUCH=m
> ++CONFIG_USB_STORAGE_KARMA=m
> ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m
> ++CONFIG_USB_STORAGE_ENE_UB6250=m
> ++CONFIG_USB_MDC800=m
> ++CONFIG_USB_MICROTEK=m
> ++CONFIG_USBIP_CORE=m
> ++CONFIG_USBIP_VHCI_HCD=m
> ++CONFIG_USBIP_HOST=m
> ++CONFIG_USB_DWC2=y
> ++CONFIG_USB_SERIAL=m
> ++CONFIG_USB_SERIAL_GENERIC=y
> ++CONFIG_USB_SERIAL_AIRCABLE=m
> ++CONFIG_USB_SERIAL_ARK3116=m
> ++CONFIG_USB_SERIAL_BELKIN=m
> ++CONFIG_USB_SERIAL_CH341=m
> ++CONFIG_USB_SERIAL_WHITEHEAT=m
> ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
> ++CONFIG_USB_SERIAL_CP210X=m
> ++CONFIG_USB_SERIAL_CYPRESS_M8=m
> ++CONFIG_USB_SERIAL_EMPEG=m
> ++CONFIG_USB_SERIAL_FTDI_SIO=m
> ++CONFIG_USB_SERIAL_VISOR=m
> ++CONFIG_USB_SERIAL_IPAQ=m
> ++CONFIG_USB_SERIAL_IR=m
> ++CONFIG_USB_SERIAL_EDGEPORT=m
> ++CONFIG_USB_SERIAL_EDGEPORT_TI=m
> ++CONFIG_USB_SERIAL_F81232=m
> ++CONFIG_USB_SERIAL_GARMIN=m
> ++CONFIG_USB_SERIAL_IPW=m
> ++CONFIG_USB_SERIAL_IUU=m
> ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m
> ++CONFIG_USB_SERIAL_KEYSPAN=m
> ++CONFIG_USB_SERIAL_KLSI=m
> ++CONFIG_USB_SERIAL_KOBIL_SCT=m
> ++CONFIG_USB_SERIAL_MCT_U232=m
> ++CONFIG_USB_SERIAL_METRO=m
> ++CONFIG_USB_SERIAL_MOS7720=m
> ++CONFIG_USB_SERIAL_MOS7840=m
> ++CONFIG_USB_SERIAL_NAVMAN=m
> ++CONFIG_USB_SERIAL_PL2303=m
> ++CONFIG_USB_SERIAL_OTI6858=m
> ++CONFIG_USB_SERIAL_QCAUX=m
> ++CONFIG_USB_SERIAL_QUALCOMM=m
> ++CONFIG_USB_SERIAL_SPCP8X5=m
> ++CONFIG_USB_SERIAL_SAFE=m
> ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m
> ++CONFIG_USB_SERIAL_SYMBOL=m
> ++CONFIG_USB_SERIAL_TI=m
> ++CONFIG_USB_SERIAL_CYBERJACK=m
> ++CONFIG_USB_SERIAL_XIRCOM=m
> ++CONFIG_USB_SERIAL_OPTION=m
> ++CONFIG_USB_SERIAL_OMNINET=m
> ++CONFIG_USB_SERIAL_OPTICON=m
> ++CONFIG_USB_SERIAL_XSENS_MT=m
> ++CONFIG_USB_SERIAL_WISHBONE=m
> ++CONFIG_USB_SERIAL_SSU100=m
> ++CONFIG_USB_SERIAL_QT2=m
> ++CONFIG_USB_SERIAL_DEBUG=m
> ++CONFIG_USB_EMI62=m
> ++CONFIG_USB_EMI26=m
> ++CONFIG_USB_ADUTUX=m
> ++CONFIG_USB_SEVSEG=m
> ++CONFIG_USB_RIO500=m
> ++CONFIG_USB_LEGOTOWER=m
> ++CONFIG_USB_LCD=m
> ++CONFIG_USB_LED=m
> ++CONFIG_USB_CYPRESS_CY7C63=m
> ++CONFIG_USB_CYTHERM=m
> ++CONFIG_USB_IDMOUSE=m
> ++CONFIG_USB_FTDI_ELAN=m
> ++CONFIG_USB_APPLEDISPLAY=m
> ++CONFIG_USB_LD=m
> ++CONFIG_USB_TRANCEVIBRATOR=m
> ++CONFIG_USB_IOWARRIOR=m
> ++CONFIG_USB_TEST=m
> ++CONFIG_USB_ISIGHTFW=m
> ++CONFIG_USB_YUREX=m
> ++CONFIG_USB_ATM=m
> ++CONFIG_USB_SPEEDTOUCH=m
> ++CONFIG_USB_CXACRU=m
> ++CONFIG_USB_UEAGLEATM=m
> ++CONFIG_USB_XUSBATM=m
> ++CONFIG_MMC=y
> ++CONFIG_MMC_BLOCK_MINORS=32
> ++CONFIG_MMC_BCM2835=y
> ++CONFIG_MMC_BCM2835_DMA=y
> ++CONFIG_MMC_BCM2835_SDHOST=y
> ++CONFIG_MMC_SDHCI=y
> ++CONFIG_MMC_SDHCI_PLTFM=y
> ++CONFIG_MMC_SDHCI_BCM2835=y
> ++CONFIG_MMC_SPI=m
> ++CONFIG_LEDS_CLASS=y
> ++CONFIG_LEDS_GPIO=y
> ++CONFIG_LEDS_TRIGGER_TIMER=y
> ++CONFIG_LEDS_TRIGGER_ONESHOT=y
> ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
> ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y
> ++CONFIG_LEDS_TRIGGER_CPU=y
> ++CONFIG_LEDS_TRIGGER_GPIO=y
> ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
> ++CONFIG_LEDS_TRIGGER_TRANSIENT=m
> ++CONFIG_LEDS_TRIGGER_CAMERA=m
> ++CONFIG_LEDS_TRIGGER_INPUT=y
> ++CONFIG_LEDS_TRIGGER_PANIC=y
> ++CONFIG_RTC_CLASS=y
> ++# CONFIG_RTC_HCTOSYS is not set
> ++CONFIG_RTC_DRV_DS1307=m
> ++CONFIG_RTC_DRV_DS1374=m
> ++CONFIG_RTC_DRV_DS1672=m
> ++CONFIG_RTC_DRV_MAX6900=m
> ++CONFIG_RTC_DRV_RS5C372=m
> ++CONFIG_RTC_DRV_ISL1208=m
> ++CONFIG_RTC_DRV_ISL12022=m
> ++CONFIG_RTC_DRV_ISL12057=m
> ++CONFIG_RTC_DRV_X1205=m
> ++CONFIG_RTC_DRV_PCF8523=m
> ++CONFIG_RTC_DRV_PCF8563=m
> ++CONFIG_RTC_DRV_PCF8583=m
> ++CONFIG_RTC_DRV_M41T80=m
> ++CONFIG_RTC_DRV_BQ32K=m
> ++CONFIG_RTC_DRV_S35390A=m
> ++CONFIG_RTC_DRV_FM3130=m
> ++CONFIG_RTC_DRV_RX8581=m
> ++CONFIG_RTC_DRV_RX8025=m
> ++CONFIG_RTC_DRV_EM3027=m
> ++CONFIG_RTC_DRV_M41T93=m
> ++CONFIG_RTC_DRV_M41T94=m
> ++CONFIG_RTC_DRV_DS1302=m
> ++CONFIG_RTC_DRV_DS1305=m
> ++CONFIG_RTC_DRV_DS1390=m
> ++CONFIG_RTC_DRV_R9701=m
> ++CONFIG_RTC_DRV_RX4581=m
> ++CONFIG_RTC_DRV_RS5C348=m
> ++CONFIG_RTC_DRV_MAX6902=m
> ++CONFIG_RTC_DRV_PCF2123=m
> ++CONFIG_RTC_DRV_DS3232=m
> ++CONFIG_RTC_DRV_PCF2127=m
> ++CONFIG_RTC_DRV_RV3029C2=m
> ++CONFIG_DMADEVICES=y
> ++CONFIG_DMA_BCM2835=y
> ++CONFIG_UIO=m
> ++CONFIG_UIO_PDRV_GENIRQ=m
> ++CONFIG_STAGING=y
> ++CONFIG_PRISM2_USB=m
> ++CONFIG_R8712U=m
> ++CONFIG_R8188EU=m
> ++CONFIG_R8723AU=m
> ++CONFIG_VT6656=m
> ++CONFIG_SPEAKUP=m
> ++CONFIG_SPEAKUP_SYNTH_SOFT=m
> ++CONFIG_STAGING_MEDIA=y
> ++CONFIG_LIRC_STAGING=y
> ++CONFIG_LIRC_IMON=m
> ++CONFIG_LIRC_RPI=m
> ++CONFIG_LIRC_SASEM=m
> ++CONFIG_LIRC_SERIAL=m
> ++CONFIG_FB_TFT=m
> ++CONFIG_FB_TFT_AGM1264K_FL=m
> ++CONFIG_FB_TFT_BD663474=m
> ++CONFIG_FB_TFT_HX8340BN=m
> ++CONFIG_FB_TFT_HX8347D=m
> ++CONFIG_FB_TFT_HX8353D=m
> ++CONFIG_FB_TFT_ILI9163=m
> ++CONFIG_FB_TFT_ILI9320=m
> ++CONFIG_FB_TFT_ILI9325=m
> ++CONFIG_FB_TFT_ILI9340=m
> ++CONFIG_FB_TFT_ILI9341=m
> ++CONFIG_FB_TFT_ILI9481=m
> ++CONFIG_FB_TFT_ILI9486=m
> ++CONFIG_FB_TFT_PCD8544=m
> ++CONFIG_FB_TFT_RA8875=m
> ++CONFIG_FB_TFT_S6D02A1=m
> ++CONFIG_FB_TFT_S6D1121=m
> ++CONFIG_FB_TFT_SSD1289=m
> ++CONFIG_FB_TFT_SSD1306=m
> ++CONFIG_FB_TFT_SSD1331=m
> ++CONFIG_FB_TFT_SSD1351=m
> ++CONFIG_FB_TFT_ST7735R=m
> ++CONFIG_FB_TFT_TINYLCD=m
> ++CONFIG_FB_TFT_TLS8204=m
> ++CONFIG_FB_TFT_UC1701=m
> ++CONFIG_FB_TFT_UPD161704=m
> ++CONFIG_FB_TFT_WATTEROTT=m
> ++CONFIG_FB_FLEX=m
> ++CONFIG_FB_TFT_FBTFT_DEVICE=m
> ++# CONFIG_COMMON_CLK_XGENE is not set
> ++CONFIG_MAILBOX=y
> ++CONFIG_BCM2835_MBOX=y
> ++# CONFIG_IOMMU_SUPPORT is not set
> ++CONFIG_RASPBERRYPI_POWER=y
> ++CONFIG_EXTCON=m
> ++CONFIG_EXTCON_ARIZONA=m
> ++CONFIG_IIO=m
> ++CONFIG_IIO_BUFFER=y
> ++CONFIG_IIO_BUFFER_CB=m
> ++CONFIG_IIO_KFIFO_BUF=m
> ++CONFIG_MCP320X=m
> ++CONFIG_MCP3422=m
> ++CONFIG_DHT11=m
> ++CONFIG_PWM_BCM2835=m
> ++CONFIG_PWM_PCA9685=m
> ++CONFIG_GENERIC_PHY=y
> ++CONFIG_RASPBERRYPI_FIRMWARE=y
> ++CONFIG_EXT4_FS=y
> ++CONFIG_EXT4_FS_POSIX_ACL=y
> ++CONFIG_EXT4_FS_SECURITY=y
> ++CONFIG_REISERFS_FS=m
> ++CONFIG_REISERFS_FS_XATTR=y
> ++CONFIG_REISERFS_FS_POSIX_ACL=y
> ++CONFIG_REISERFS_FS_SECURITY=y
> ++CONFIG_JFS_FS=m
> ++CONFIG_JFS_POSIX_ACL=y
> ++CONFIG_JFS_SECURITY=y
> ++CONFIG_JFS_STATISTICS=y
> ++CONFIG_XFS_FS=m
> ++CONFIG_XFS_QUOTA=y
> ++CONFIG_XFS_POSIX_ACL=y
> ++CONFIG_XFS_RT=y
> ++CONFIG_GFS2_FS=m
> ++CONFIG_OCFS2_FS=m
> ++CONFIG_BTRFS_FS=m
> ++CONFIG_BTRFS_FS_POSIX_ACL=y
> ++CONFIG_NILFS2_FS=m
> ++CONFIG_F2FS_FS=y
> ++CONFIG_FANOTIFY=y
> ++CONFIG_QFMT_V1=m
> ++CONFIG_QFMT_V2=m
> ++CONFIG_AUTOFS4_FS=y
> ++CONFIG_FUSE_FS=m
> ++CONFIG_CUSE=m
> ++CONFIG_OVERLAY_FS=m
> ++CONFIG_FSCACHE=y
> ++CONFIG_FSCACHE_STATS=y
> ++CONFIG_FSCACHE_HISTOGRAM=y
> ++CONFIG_CACHEFILES=y
> ++CONFIG_ISO9660_FS=m
> ++CONFIG_JOLIET=y
> ++CONFIG_ZISOFS=y
> ++CONFIG_UDF_FS=m
> ++CONFIG_MSDOS_FS=y
> ++CONFIG_VFAT_FS=y
> ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
> ++CONFIG_NTFS_FS=m
> ++CONFIG_NTFS_RW=y
> ++CONFIG_TMPFS=y
> ++CONFIG_TMPFS_POSIX_ACL=y
> ++CONFIG_ECRYPT_FS=m
> ++CONFIG_HFS_FS=m
> ++CONFIG_HFSPLUS_FS=m
> ++CONFIG_JFFS2_FS=m
> ++CONFIG_JFFS2_SUMMARY=y
> ++CONFIG_UBIFS_FS=m
> ++CONFIG_SQUASHFS=m
> ++CONFIG_SQUASHFS_XATTR=y
> ++CONFIG_SQUASHFS_LZO=y
> ++CONFIG_SQUASHFS_XZ=y
> ++CONFIG_NFS_FS=y
> ++CONFIG_NFS_V3_ACL=y
> ++CONFIG_NFS_V4=y
> ++CONFIG_NFS_SWAP=y
> ++CONFIG_ROOT_NFS=y
> ++CONFIG_NFS_FSCACHE=y
> ++CONFIG_NFSD=m
> ++CONFIG_NFSD_V3_ACL=y
> ++CONFIG_NFSD_V4=y
> ++CONFIG_CIFS=m
> ++CONFIG_CIFS_WEAK_PW_HASH=y
> ++CONFIG_CIFS_UPCALL=y
> ++CONFIG_CIFS_XATTR=y
> ++CONFIG_CIFS_POSIX=y
> ++CONFIG_CIFS_ACL=y
> ++CONFIG_CIFS_DFS_UPCALL=y
> ++CONFIG_CIFS_SMB2=y
> ++CONFIG_CIFS_FSCACHE=y
> ++CONFIG_9P_FS=m
> ++CONFIG_9P_FS_POSIX_ACL=y
> ++CONFIG_NLS_DEFAULT="utf8"
> ++CONFIG_NLS_CODEPAGE_437=y
> ++CONFIG_NLS_CODEPAGE_737=m
> ++CONFIG_NLS_CODEPAGE_775=m
> ++CONFIG_NLS_CODEPAGE_850=m
> ++CONFIG_NLS_CODEPAGE_852=m
> ++CONFIG_NLS_CODEPAGE_855=m
> ++CONFIG_NLS_CODEPAGE_857=m
> ++CONFIG_NLS_CODEPAGE_860=m
> ++CONFIG_NLS_CODEPAGE_861=m
> ++CONFIG_NLS_CODEPAGE_862=m
> ++CONFIG_NLS_CODEPAGE_863=m
> ++CONFIG_NLS_CODEPAGE_864=m
> ++CONFIG_NLS_CODEPAGE_865=m
> ++CONFIG_NLS_CODEPAGE_866=m
> ++CONFIG_NLS_CODEPAGE_869=m
> ++CONFIG_NLS_CODEPAGE_936=m
> ++CONFIG_NLS_CODEPAGE_950=m
> ++CONFIG_NLS_CODEPAGE_932=m
> ++CONFIG_NLS_CODEPAGE_949=m
> ++CONFIG_NLS_CODEPAGE_874=m
> ++CONFIG_NLS_ISO8859_8=m
> ++CONFIG_NLS_CODEPAGE_1250=m
> ++CONFIG_NLS_CODEPAGE_1251=m
> ++CONFIG_NLS_ASCII=y
> ++CONFIG_NLS_ISO8859_1=m
> ++CONFIG_NLS_ISO8859_2=m
> ++CONFIG_NLS_ISO8859_3=m
> ++CONFIG_NLS_ISO8859_4=m
> ++CONFIG_NLS_ISO8859_5=m
> ++CONFIG_NLS_ISO8859_6=m
> ++CONFIG_NLS_ISO8859_7=m
> ++CONFIG_NLS_ISO8859_9=m
> ++CONFIG_NLS_ISO8859_13=m
> ++CONFIG_NLS_ISO8859_14=m
> ++CONFIG_NLS_ISO8859_15=m
> ++CONFIG_NLS_KOI8_R=m
> ++CONFIG_NLS_KOI8_U=m
> ++CONFIG_DLM=m
> ++CONFIG_PRINTK_TIME=y
> ++CONFIG_BOOT_PRINTK_DELAY=y
> ++CONFIG_DEBUG_MEMORY_INIT=y
> ++CONFIG_DETECT_HUNG_TASK=y
> ++CONFIG_TIMER_STATS=y
> ++CONFIG_IRQSOFF_TRACER=y
> ++CONFIG_SCHED_TRACER=y
> ++CONFIG_STACK_TRACER=y
> ++CONFIG_BLK_DEV_IO_TRACE=y
> ++CONFIG_FUNCTION_PROFILER=y
> ++CONFIG_KGDB=y
> ++CONFIG_KGDB_KDB=y
> ++CONFIG_KDB_KEYBOARD=y
> ++# CONFIG_DEBUG_SET_MODULE_RONX is not set
> ++# CONFIG_DEBUG_RODATA is not set
> ++CONFIG_CRYPTO_USER=m
> ++CONFIG_CRYPTO_CBC=y
> ++CONFIG_CRYPTO_CTS=m
> ++CONFIG_CRYPTO_XTS=m
> ++CONFIG_CRYPTO_XCBC=m
> ++CONFIG_CRYPTO_TGR192=m
> ++CONFIG_CRYPTO_WP512=m
> ++CONFIG_CRYPTO_CAST5=m
> ++CONFIG_CRYPTO_DES=y
> ++CONFIG_CRYPTO_USER_API_SKCIPHER=m
> ++# CONFIG_CRYPTO_HW is not set
> ++CONFIG_ARM64_CRYPTO=y
> ++CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
> ++CONFIG_CRYPTO_CRC32_ARM64=y
> ++CONFIG_CRC_ITU_T=y
> ++CONFIG_LIBCRC32C=y
> +diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h
> +index 7dbea6c..446b353 100644
> +--- a/arch/arm64/include/asm/dma-mapping.h
> ++++ b/arch/arm64/include/asm/dma-mapping.h
> +@@ -66,12 +66,14 @@ static inline bool is_device_dma_coherent(struct device *dev)
> +
> + static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr)
> + {
> +-      return (dma_addr_t)paddr;
> ++      dma_addr_t dev_addr = (dma_addr_t)paddr;
> ++      return dev_addr - ((dma_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
> + }
> +
> + static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dev_addr)
> + {
> +-      return (phys_addr_t)dev_addr;
> ++      phys_addr_t paddr = (phys_addr_t)dev_addr;
> ++      return paddr + ((phys_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
> + }
> +
> + static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
> +@@ -86,5 +88,14 @@ static inline void dma_mark_clean(void *addr, size_t size)
> + {
> + }
> +
> ++/* Override for dma_max_pfn() */
> ++static inline unsigned long dma_max_pfn(struct device *dev)
> ++{
> ++      dma_addr_t dma_max = (dma_addr_t)*dev->dma_mask;
> ++
> ++      return (ulong)dma_to_phys(dev, dma_max) >> PAGE_SHIFT;
> ++}
> ++#define dma_max_pfn(dev) dma_max_pfn(dev)
> ++
> + #endif        /* __KERNEL__ */
> + #endif        /* __ASM_DMA_MAPPING_H */
> +diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
> +index c02bf8a..a09553a 100644
> +--- a/drivers/irqchip/irq-bcm2835.c
> ++++ b/drivers/irqchip/irq-bcm2835.c
> +@@ -54,7 +54,9 @@
> + #include <linux/regmap.h>
> +
> + #include <asm/exception.h>
> ++#ifndef CONFIG_ARM64
> + #include <asm/mach/irq.h>
> ++#endif
> +
> + /* Put the bank and irq (32 bits) into the hwirq */
> + #define MAKE_HWIRQ(b, n)      (((b) << 5) | (n))
> +@@ -72,12 +74,16 @@
> + #define BANK0_VALID_MASK      (BANK0_HWIRQ_MASK | BANK1_HWIRQ | BANK2_HWIRQ \
> +                                       | SHORTCUT1_MASK | SHORTCUT2_MASK)
> +
> ++#ifndef CONFIG_ARM64
> + #undef ARM_LOCAL_GPU_INT_ROUTING
> + #define ARM_LOCAL_GPU_INT_ROUTING 0x0c
> ++#endif
> +
> ++#ifndef CONFIG_ARM64
> + #define REG_FIQ_CONTROL               0x0c
> + #define REG_FIQ_ENABLE                0x80
> + #define REG_FIQ_DISABLE               0
> ++#endif
> +
> + #define NR_BANKS              3
> + #define IRQS_PER_BANK         32
> +@@ -101,7 +107,9 @@ struct armctrl_ic {
> +       void __iomem *enable[NR_BANKS];
> +       void __iomem *disable[NR_BANKS];
> +       struct irq_domain *domain;
> ++#ifndef CONFIG_ARM64
> +       struct regmap *local_regmap;
> ++#endif
> + };
> +
> + static struct armctrl_ic intc __read_mostly;
> +@@ -109,6 +117,7 @@ static void __exception_irq_entry bcm2835_handle_irq(
> +       struct pt_regs *regs);
> + static void bcm2836_chained_handle_irq(struct irq_desc *desc);
> +
> ++#ifndef CONFIG_ARM64
> + static inline unsigned int hwirq_to_fiq(unsigned long hwirq)
> + {
> +       hwirq -= NUMBER_IRQS;
> +@@ -123,18 +132,22 @@ static inline unsigned int hwirq_to_fiq(unsigned long hwirq)
> +
> +       return hwirq + 64;
> + }
> ++#endif
> +
> + static void armctrl_mask_irq(struct irq_data *d)
> + {
> ++#ifndef CONFIG_ARM64
> +       if (d->hwirq >= NUMBER_IRQS)
> +               writel_relaxed(REG_FIQ_DISABLE, intc.base + REG_FIQ_CONTROL);
> +       else
> ++#endif
> +               writel_relaxed(HWIRQ_BIT(d->hwirq),
> +                              intc.disable[HWIRQ_BANK(d->hwirq)]);
> + }
> +
> + static void armctrl_unmask_irq(struct irq_data *d)
> + {
> ++#ifndef CONFIG_ARM64
> +       if (d->hwirq >= NUMBER_IRQS) {
> +               if (num_online_cpus() > 1) {
> +                       unsigned int data;
> +@@ -164,6 +177,9 @@ static void armctrl_unmask_irq(struct irq_data *d)
> +               writel_relaxed(HWIRQ_BIT(d->hwirq),
> +                              intc.enable[HWIRQ_BANK(d->hwirq)]);
> +       }
> ++#else
> ++      writel_relaxed(HWIRQ_BIT(d->hwirq), intc.enable[HWIRQ_BANK(d->hwirq)]);
> ++#endif
> + }
> +
> + static struct irq_chip armctrl_chip = {
> +@@ -241,6 +257,7 @@ static int __init armctrl_of_init(struct device_node *node,
> +               set_handle_irq(bcm2835_handle_irq);
> +       }
> +
> ++#ifndef CONFIG_ARM64
> +       if (is_2836) {
> +               intc.local_regmap =
> +                       syscon_regmap_lookup_by_compatible("brcm,bcm2836-arm-local");
> +@@ -261,6 +278,7 @@ static int __init armctrl_of_init(struct device_node *node,
> +               }
> +       }
> +       init_FIQ(FIQ_START);
> ++#endif
> +
> +       return 0;
> + }
> +@@ -322,7 +340,11 @@ static void __exception_irq_entry bcm2835_handle_irq(
> +       u32 hwirq;
> +
> +       while ((hwirq = get_next_armctrl_hwirq()) != ~0)
> ++#ifndef CONFIG_ARM64
> +               handle_IRQ(irq_linear_revmap(intc.domain, hwirq), regs);
> ++#else
> ++              handle_domain_irq(intc.domain, hwirq, regs);
> ++#endif
> + }
> +
> + static void bcm2836_chained_handle_irq(struct irq_desc *desc)
> +diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
> +index de3b3a3..b2425d7 100644
> +--- a/drivers/irqchip/irq-bcm2836.c
> ++++ b/drivers/irqchip/irq-bcm2836.c
> +@@ -175,13 +175,19 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs)
> +               u32 ipi = ffs(mbox_val) - 1;
> +
> +               writel(1 << ipi, mailbox0);
> ++#ifndef CONFIG_ARM64
> +               dsb();
> ++#endif
> +               handle_IPI(ipi, regs);
> + #endif
> +       } else if (stat) {
> +               u32 hwirq = ffs(stat) - 1;
> +
> ++#ifndef CONFIG_ARM64
> +               handle_IRQ(irq_linear_revmap(intc.domain, hwirq), regs);
> ++#else
> ++              handle_domain_irq(intc.domain, hwirq, regs);
> ++#endif
> +       }
> + }
> +
> +@@ -225,7 +231,7 @@ static struct notifier_block bcm2836_arm_irqchip_cpu_notifier = {
> + };
> +
> + #ifdef CONFIG_ARM
> +-int __init bcm2836_smp_boot_secondary(unsigned int cpu,
> ++static int __init bcm2836_smp_boot_secondary(unsigned int cpu,
> +                                     struct task_struct *idle)
> + {
> +       unsigned long secondary_startup_phys =
> +diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c
> +index d7b6b5a..2204ca9 100644
> +--- a/drivers/mmc/host/bcm2835-sdhost.c
> ++++ b/drivers/mmc/host/bcm2835-sdhost.c
> +@@ -241,7 +241,11 @@ static void log_init(u32 bus_to_phys)
> +       sdhost_log_buf = dma_zalloc_coherent(NULL, LOG_SIZE, &sdhost_log_addr,
> +                                            GFP_KERNEL);
> +       if (sdhost_log_buf) {
> ++#ifndef CONFIG_ARM64
> +               pr_info("sdhost: log_buf @ %p (%x)\n",
> ++#else
> ++              pr_info("sdhost: log_buf @ %p (%llx)\n",
> ++#endif
> +                       sdhost_log_buf, sdhost_log_addr);
> +               timer_base = ioremap_nocache(bus_to_phys + 0x7e003000, SZ_4K);
> +               if (!timer_base)
> +@@ -522,7 +526,11 @@ static void bcm2835_sdhost_dma_complete(void *param)
> +       unsigned long flags;
> +
> +       spin_lock_irqsave(&host->lock, flags);
> ++#ifndef CONFIG_ARM64
> +       log_event("DMA<", (u32)host->data, bcm2835_sdhost_read(host, SDHSTS));
> ++#else
> ++      log_event("DMA<", (u64)host->data, bcm2835_sdhost_read(host, SDHSTS));
> ++#endif
> +       log_event("DMA ", bcm2835_sdhost_read(host, SDCMD),
> +                 bcm2835_sdhost_read(host, SDEDM));
> +
> +@@ -554,7 +562,11 @@ static void bcm2835_sdhost_dma_complete(void *param)
> +
> +       bcm2835_sdhost_finish_data(host);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("DMA>", (u32)host->data, 0);
> ++#else
> ++      log_event("DMA>", (u64)host->data, 0);
> ++#endif
> +       spin_unlock_irqrestore(&host->lock, flags);
> + }
> +
> +@@ -743,7 +755,11 @@ static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host)
> +       u32 sdhsts;
> +       bool is_read;
> +       BUG_ON(!host->data);
> ++#ifndef CONFIG_ARM64
> +       log_event("XFP<", (u32)host->data, host->blocks);
> ++#else
> ++      log_event("XFP<", (u64)host->data, host->blocks);
> ++#endif
> +
> +       is_read = (host->data->flags & MMC_DATA_READ) != 0;
> +       if (is_read)
> +@@ -768,7 +784,11 @@ static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host)
> +                      sdhsts);
> +               host->data->error = -ETIMEDOUT;
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("XFP>", (u32)host->data, host->blocks);
> ++#else
> ++      log_event("XFP>", (u64)host->data, host->blocks);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +@@ -778,7 +798,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +       struct dma_async_tx_descriptor *desc = NULL;
> +       struct dma_chan *dma_chan;
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("PRD<", (u32)data, 0);
> ++#else
> ++      log_event("PRD<", (u64)data, 0);
> ++#endif
> +       pr_debug("bcm2835_sdhost_prepare_dma()\n");
> +
> +       dma_chan = host->dma_chan_rxtx;
> +@@ -789,7 +813,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +               dir_data = DMA_TO_DEVICE;
> +               dir_slave = DMA_MEM_TO_DEV;
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("PRD1", (u32)dma_chan, 0);
> ++#else
> ++      log_event("PRD1", (u64)dma_chan, 0);
> ++#endif
> +
> +       BUG_ON(!dma_chan->device);
> +       BUG_ON(!dma_chan->device->dev);
> +@@ -836,7 +864,11 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +               desc = dmaengine_prep_slave_sg(dma_chan, data->sg,
> +                                              len, dir_slave,
> +                                              DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
> ++#ifndef CONFIG_ARM64
> +       log_event("PRD3", (u32)desc, 0);
> ++#else
> ++      log_event("PRD3", (u64)desc, 0);
> ++#endif
> +
> +       if (desc) {
> +               desc->callback = bcm2835_sdhost_dma_complete;
> +@@ -845,12 +877,20 @@ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
> +               host->dma_chan = dma_chan;
> +               host->dma_dir = dir_data;
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("PDM>", (u32)data, 0);
> ++#else
> ++      log_event("PDM>", (u64)data, 0);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_start_dma(struct bcm2835_host *host)
> + {
> ++#ifndef CONFIG_ARM64
> +       log_event("SDMA", (u32)host->data, (u32)host->dma_chan);
> ++#else
> ++      log_event("SDMA", (u64)host->data, (u64)host->dma_chan);
> ++#endif
> +       dmaengine_submit(host->dma_desc);
> +       dma_async_issue_pending(host->dma_chan);
> + }
> +@@ -1074,7 +1114,11 @@ static void bcm2835_sdhost_finish_data(struct bcm2835_host *host)
> +       data = host->data;
> +       BUG_ON(!data);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("FDA<", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FDA<", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> +       pr_debug("finish_data(error %d, stop %d, sbc %d)\n",
> +              data->error, data->stop ? 1 : 0,
> +              host->mrq->sbc ? 1 : 0);
> +@@ -1097,7 +1141,11 @@ static void bcm2835_sdhost_finish_data(struct bcm2835_host *host)
> +       }
> +       else
> +               bcm2835_sdhost_transfer_complete(host);
> ++#ifndef CONFIG_ARM64
> +       log_event("FDA>", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FDA>", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
> +@@ -1111,7 +1159,11 @@ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
> +       data = host->data;
> +       host->data = NULL;
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("TCM<", (u32)data, data->error);
> ++#else
> ++      log_event("TCM<", (u64)data, data->error);
> ++#endif
> +       pr_debug("transfer_complete(error %d, stop %d)\n",
> +              data->error, data->stop ? 1 : 0);
> +
> +@@ -1133,7 +1185,11 @@ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
> +               bcm2835_sdhost_wait_transfer_complete(host);
> +               tasklet_schedule(&host->finish_tasklet);
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("TCM>", (u32)data, 0);
> ++#else
> ++      log_event("TCM>", (u64)data, 0);
> ++#endif
> + }
> +
> + /* If irq_flags is valid, the caller is in a thread context and is allowed
> +@@ -1148,7 +1204,11 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host,
> +       int timediff = 0;
> + #endif
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("FCM<", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FCM<", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> +       pr_debug("finish_command(%x)\n", bcm2835_sdhost_read(host, SDCMD));
> +
> +       BUG_ON(!host->cmd || !host->mrq);
> +@@ -1298,7 +1358,11 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host,
> +               else if (host->data_complete)
> +                       bcm2835_sdhost_transfer_complete(host);
> +       }
> ++#ifndef CONFIG_ARM64
> +       log_event("FCM>", (u32)host->mrq, (u32)host->cmd);
> ++#else
> ++      log_event("FCM>", (u64)host->mrq, (u64)host->cmd);
> ++#endif
> + }
> +
> + static void bcm2835_sdhost_timeout(unsigned long data)
> +@@ -1337,7 +1401,11 @@ static void bcm2835_sdhost_timeout(unsigned long data)
> +
> + static void bcm2835_sdhost_busy_irq(struct bcm2835_host *host, u32 intmask)
> + {
> ++#ifndef CONFIG_ARM64
> +       log_event("IRQB", (u32)host->cmd, intmask);
> ++#else
> ++      log_event("IRQB", (u64)host->cmd, intmask);
> ++#endif
> +       if (!host->cmd) {
> +               pr_err("%s: got command busy interrupt 0x%08x even "
> +                       "though no command operation was in progress.\n",
> +@@ -1390,7 +1458,11 @@ static void bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask)
> +          data/space available FIFO status bits. It is therefore not
> +          an error to get here when there is no data transfer in
> +          progress. */
> ++#ifndef CONFIG_ARM64
> +       log_event("IRQD", (u32)host->data, intmask);
> ++#else
> ++      log_event("IRQD", (u64)host->data, intmask);
> ++#endif
> +       if (!host->data)
> +               return;
> +
> +@@ -1427,7 +1499,11 @@ static void bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask)
> +
> + static void bcm2835_sdhost_block_irq(struct bcm2835_host *host, u32 intmask)
> + {
> ++#ifndef CONFIG_ARM64
> +       log_event("IRQK", (u32)host->data, intmask);
> ++#else
> ++      log_event("IRQK", (u64)host->data, intmask);
> ++#endif
> +       if (!host->data) {
> +               pr_err("%s: got block interrupt 0x%08x even "
> +                       "though no data operation was in progress.\n",
> +@@ -1686,10 +1762,18 @@ static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq
> +       edm = bcm2835_sdhost_read(host, SDEDM);
> +       fsm = edm & SDEDM_FSM_MASK;
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("REQ<", (u32)mrq, edm);
> ++#else
> ++      log_event("REQ<", (u64)mrq, edm);
> ++#endif
> +       if ((fsm != SDEDM_FSM_IDENTMODE) &&
> +           (fsm != SDEDM_FSM_DATAMODE)) {
> ++#ifndef CONFIG_ARM64
> +               log_event("REQ!", (u32)mrq, edm);
> ++#else
> ++              log_event("REQ!", (u64)mrq, edm);
> ++#endif
> +               if (host->debug) {
> +                       pr_warn("%s: previous command (%d) not complete (EDM %x)\n",
> +                              mmc_hostname(host->mmc),
> +@@ -1725,7 +1809,11 @@ static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq
> +                  mrq->data ? (u32)mrq->data->blksz : 0);
> +       mmiowb();
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("REQ>", (u32)mrq, 0);
> ++#else
> ++      log_event("REQ>", (u64)mrq, 0);
> ++#endif
> +       spin_unlock_irqrestore(&host->lock, flags);
> + }
> +
> +@@ -1781,7 +1869,11 @@ static void bcm2835_sdhost_cmd_wait_work(struct work_struct *work)
> +
> +       spin_lock_irqsave(&host->lock, flags);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("CWK<", (u32)host->cmd, (u32)host->mrq);
> ++#else
> ++      log_event("CWK<", (u64)host->cmd, (u64)host->mrq);
> ++#endif
> +
> +       /*
> +        * If this tasklet gets rescheduled while running, it will
> +@@ -1796,7 +1888,11 @@ static void bcm2835_sdhost_cmd_wait_work(struct work_struct *work)
> +
> +       mmiowb();
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("CWK>", (u32)host->cmd, 0);
> ++#else
> ++      log_event("CWK>", (u64)host->cmd, 0);
> ++#endif
> +
> +       spin_unlock_irqrestore(&host->lock, flags);
> + }
> +@@ -1812,7 +1908,11 @@ static void bcm2835_sdhost_tasklet_finish(unsigned long param)
> +
> +       spin_lock_irqsave(&host->lock, flags);
> +
> ++#ifndef CONFIG_ARM64
> +       log_event("TSK<", (u32)host->mrq, 0);
> ++#else
> ++      log_event("TSK<", (u64)host->mrq, 0);
> ++#endif
> +       /*
> +        * If this tasklet gets rescheduled while running, it will
> +        * be run again afterwards but without any active request.
> +@@ -1880,7 +1980,11 @@ static void bcm2835_sdhost_tasklet_finish(unsigned long param)
> +       }
> +
> +       mmc_request_done(host->mmc, mrq);
> ++#ifndef CONFIG_ARM64
> +       log_event("TSK>", (u32)mrq, 0);
> ++#else
> ++      log_event("TSK>", (u64)mrq, 0);
> ++#endif
> + }
> +
> + int bcm2835_sdhost_add_host(struct bcm2835_host *host)
> +diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
> +index 8493474..5402b8f 100644
> +--- a/drivers/spi/spi-bcm2835.c
> ++++ b/drivers/spi/spi-bcm2835.c
> +@@ -679,17 +679,21 @@ static void bcm2835_spi_set_cs(struct spi_device *spi, bool gpio_level)
> +       bcm2835_wr(bs, BCM2835_SPI_CS, cs);
> + }
> +
> ++#if 0
> + static int chip_match_name(struct gpio_chip *chip, void *data)
> + {
> +       return !strcmp(chip->label, data);
> + }
> ++#endif
> +
> + static int bcm2835_spi_setup(struct spi_device *spi)
> + {
> ++#if 0
> +       int err;
> +       struct gpio_chip *chip;
> +       struct device_node *pins;
> +       u32 pingroup_index;
> ++#endif
> +       /*
> +        * sanity checking the native-chipselects
> +        */
> +diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> +index a04d27e..61329c0 100644
> +--- a/drivers/tty/serial/amba-pl011.c
> ++++ b/drivers/tty/serial/amba-pl011.c
> +@@ -2345,6 +2345,7 @@ static struct uart_driver amba_reg = {
> +       .cons                   = AMBA_CONSOLE,
> + };
> +
> ++#if 0
> + static int pl011_probe_dt_alias(int index, struct device *dev)
> + {
> +       struct device_node *np;
> +@@ -2376,6 +2377,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev)
> +
> +       return ret;
> + }
> ++#endif
> +
> + /* unregisters the driver also if no more ports are left */
> + static void pl011_unregister_port(struct uart_amba_port *uap)
> +diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.c
> +index 37f6081..731ab30 100644
> +--- a/drivers/video/fbdev/bcm2708_fb.c
> ++++ b/drivers/video/fbdev/bcm2708_fb.c
> +@@ -735,7 +735,11 @@ static int bcm2708_fb_probe(struct platform_device *dev)
> +               goto free_fb;
> +       }
> +
> ++#ifndef CONFIG_ARM64
> +       pr_info("BCM2708FB: allocated DMA memory %08x\n",
> ++#else
> ++      pr_info("BCM2708FB: allocated DMA memory %016llx\n",
> ++#endif
> +              fb->cb_handle);
> +
> +       ret = bcm_dma_chan_alloc(BCM_DMA_FEATURE_BULK,
> +--
> +2.7.4
> +
> diff --git a/recipes-kernel/linux/linux-raspberrypi_4.7.bb b/recipes-kernel/linux/linux-raspberrypi_4.7.bb
> index 4a8fe36..a03a582 100644
> --- a/recipes-kernel/linux/linux-raspberrypi_4.7.bb
> +++ b/recipes-kernel/linux/linux-raspberrypi_4.7.bb
> @@ -6,4 +6,6 @@ SRCREV = "e7fa325a40f260ed9fb86391a0b65150eba8c112"
>  SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.7.y \
>             file://0001-fix-dtbo-rules.patch \
>  "
> +SRC_URI_append_raspberrypi3-64 = " file://0002-support-64bits.patch"
> +
>  require linux-raspberrypi.inc
> --
> 2.7.4
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-11-21  5:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-20 12:46 [meta-raspberrypi][PATCH 0/2] Support for 64bits target on raspberrypi3 Herve Jourdain
2016-11-20 12:46 ` [meta-raspberrypi][PATCH 1/2] Support for 64bits target on raspberrypi3 (generic part) Herve Jourdain
2016-11-20 19:38   ` Khem Raj
2016-11-20 12:46 ` [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7) Herve Jourdain
2016-11-20 19:41   ` Khem Raj
2016-11-21  5:03     ` Herve Jourdain

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.