[yocto] [meta-raspberrypi][PATCH 2/2] Support for 64bits target on raspberrypi3 (patches for supporting 64bits on linux 4.7)

Khem Raj raj.khem at gmail.com
Sun Nov 20 11:41:31 PST 2016


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 at neuf.fr> wrote:
> Signed-off-by: Herve Jourdain <herve.jourdain at 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 at 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 at 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 = ðernet;
> ++      };
> ++};
> ++
> ++&usb {
> ++      usb1 at 1 {
> ++              compatible = "usb424,9514";
> ++              reg = <1>;
> ++              #address-cells = <1>;
> ++              #size-cells = <0>;
> ++
> ++              ethernet: usbether at 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 at 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 at 0 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <0>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000d8>;
> ++              };
> ++
> ++              cpu1: cpu at 1 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <1>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000e0>;
> ++              };
> ++
> ++              cpu2: cpu at 2 {
> ++                      device_type = "cpu";
> ++                      compatible = "arm,cortex-a53";
> ++                      reg = <2>;
> ++                      enable-method = "spin-table";
> ++                      cpu-release-addr = <0x0 0x000000e8>;
> ++              };
> ++
> ++              cpu3: cpu at 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 at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto



More information about the yocto mailing list