diff mbox series

[bug#51775] Rebased wip-pinebook-pro branch

Message ID bOGpoTUJVqKP3U95E5b3BWzge1uPCA2M7df8JZR5Pe3JIxf060qsd3GmdZHGx7KLrk7NmSkvTIH_iFdpfUOgUfObqgHxBATE-niaCGxGaMw=@protonmail.com
State New
Headers show
Series [bug#51775] Rebased wip-pinebook-pro branch | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

phodina Nov. 11, 2021, 9:02 p.m. UTC
Hi,

Thanks for the amazing work on Pinebook Pro!

Here are the patches rebased on linux-libre-5.10 on Guix master.

I also saw another issue regarding HW graphics support. [1]

Should I also rebase the changes from there?
Kind regards
Petr

[1] http://issues.guix.gnu.org/40835

Comments

Vagrant Cascadian Nov. 12, 2021, 5:30 a.m. UTC | #1
On 2021-11-11, phodina@protonmail.com wrote:
> Thanks for the amazing work on Pinebook Pro!
>
> Here are the patches rebased on linux-libre-5.10 on Guix master.
...
> Should I also rebase the changes from there?

I stopped working on the wip-pinebook-pro branch in May 2021:

  Pinebook Pro no longer WIP
  https://lists.gnu.org/archive/html/guix-devel/2021-05/msg00032.html

All the features that seemed important were merged into guix's master
branch at that time, with only very small and minor patches to
linux-libre. I've since tested several other features, such as
NVMe. Some of the quirks seem to have gotten less bad over time, as
support has improved upstream.

I'm not sure it's worth adding a large patchset to support a 5.10.x
linux-libre kernel at this point... What features are missing from the
default kernel?

What guix master branch does lack is decent documentation for the
pinebook-pro; there is a system image configuration but I have not tried
it out so cannot speak to how well it works.


live well,
  vagrant
Efraim Flashner Nov. 16, 2021, 7:20 p.m. UTC | #2
On Thu, Nov 11, 2021 at 09:30:09PM -0800, Vagrant Cascadian wrote:
> On 2021-11-11, phodina@protonmail.com wrote:
> > Thanks for the amazing work on Pinebook Pro!
> >
> > Here are the patches rebased on linux-libre-5.10 on Guix master.
> ...
> > Should I also rebase the changes from there?
> 
> I stopped working on the wip-pinebook-pro branch in May 2021:
> 
>   Pinebook Pro no longer WIP
>   https://lists.gnu.org/archive/html/guix-devel/2021-05/msg00032.html
> 
> All the features that seemed important were merged into guix's master
> branch at that time, with only very small and minor patches to
> linux-libre. I've since tested several other features, such as
> NVMe. Some of the quirks seem to have gotten less bad over time, as
> support has improved upstream.
> 
> I'm not sure it's worth adding a large patchset to support a 5.10.x
> linux-libre kernel at this point... What features are missing from the
> default kernel?
> 
> What guix master branch does lack is decent documentation for the
> pinebook-pro; there is a system image configuration but I have not tried
> it out so cannot speak to how well it works.
> 
> 
> live well,
>   vagrant

The pinebook pro boots from the SD card first if it's present, right? I
have one sitting next to me, I can take some time and build an image and
test it out.
Vagrant Cascadian Nov. 16, 2021, 11:22 p.m. UTC | #3
On 2021-11-16, Efraim Flashner wrote:
> On Thu, Nov 11, 2021 at 09:30:09PM -0800, Vagrant Cascadian wrote:
>> What guix master branch does lack is decent documentation for the
>> pinebook-pro; there is a system image configuration but I have not tried
>> it out so cannot speak to how well it works.

> The pinebook pro boots from the SD card first if it's present, right? I
> have one sitting next to me, I can take some time and build an image and
> test it out.

Pretty sure the hard-coded bootrom boot order is SPI -> eMMC -> microSD
-> ... other stuff

So it depends on what else you have installed. I've never installed
u-boot to SPI and yanked the eMMC to keep updates easier to fix when
regressions happen; the u-boot loaded from microSD boots off of NVMe
nicely...


live well,
  vagrant
phodina Nov. 17, 2021, 10:38 a.m. UTC | #4
Hi,

On Wednesday, November 17th, 2021 at 12:22 AM, Vagrant Cascadian <vagrant@debian.org> wrote:

> On 2021-11-16, Efraim Flashner wrote:
>
> > On Thu, Nov 11, 2021 at 09:30:09PM -0800, Vagrant Cascadian wrote:
> >
> > > What guix master branch does lack is decent documentation for the
> > >
> > > pinebook-pro; there is a system image configuration but I have not tried
> > >
> > > it out so cannot speak to how well it works.

I've used the system image configuration the build image for my Pinebook Pro.

It works, though I experience issue when I reboot the system the output on the screen is just some garbage. It has to be turned off completely. Then after cold boot it displays everything properly.

So I started to investigate which patch I'm missing and found this wip-pinebook-pro branch.
>
> > The pinebook pro boots from the SD card first if it's present, right? I
> >
> > have one sitting next to me, I can take some time and build an image and
> >
> > test it out.
>
> Pretty sure the hard-coded bootrom boot order is SPI -> eMMC -> microSD
>
> -> ... other stuff
>
Yes there is bootrom which launches the u-boot. I've updated mine to latest version and it let's me select, though boots first eMMC.

> So it depends on what else you have installed. I've never installed
>
> u-boot to SPI and yanked the eMMC to keep updates easier to fix when
>
> regressions happen; the u-boot loaded from microSD boots off of NVMe
>
> nicely...
>
> live well,
>
> vagrant

So the way forward would be to check with mainline which patches are already accepted, right?

Also I agree it makes no sense to support 5.10 version of the kernel.

Petr
Vagrant Cascadian Nov. 17, 2021, 4:53 p.m. UTC | #5
On 2021-11-17, phodina@protonmail.com wrote:
> On Wednesday, November 17th, 2021 at 12:22 AM, Vagrant Cascadian <vagrant@debian.org> wrote:
>> On 2021-11-16, Efraim Flashner wrote:
>> > On Thu, Nov 11, 2021 at 09:30:09PM -0800, Vagrant Cascadian wrote:
>> > > What guix master branch does lack is decent documentation for the
>> > > pinebook-pro; there is a system image configuration but I have not tried
>> > > it out so cannot speak to how well it works.
>
> I've used the system image configuration the build image for my Pinebook Pro. 
>
> It works, though I experience issue when I reboot the system the
> output on the screen is just some garbage. It has to be turned off
> completely. Then after cold boot it displays everything properly.
>
> So I started to investigate which patch I'm missing and found this
> wip-pinebook-pro branch.

I also experienced that behavior using wip-pinebook-pro back in the
day... so I don't think you'll find a solution there.


> So the way forward would be to check with mainline which patches are
> already accepted, right?
>
> Also I agree it makes no sense to support 5.10 version of the kernel. 

Sure, though I don't see any newer branches on:

  https://gitlab.manjaro.org/tsys/linux-pinebook-pro

Which is where the patches on wip-pinebook-pro came from...

So my guess is there hasn't been much activity unless someone else is
doing the upstreaming work.


live well,
  vagrant

p.s. no need to encrypt messages to me when also sending the same
messages to the public bug tracker! :)
diff mbox series

Patch

From 0e36faedf61aa99505241bbf998320ad54a6d6db Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Thu, 11 Nov 2021 21:48:31 +0100
Subject: [PATCH 1/2] gnu: Add patches for pinebook-pro.

* gnu/local.mk: Add patches.
* gnu/packages/linux.scm (%pinebook-pro-patches): New variable.
* gnu/packages/patches/linux-libre-pinebook-pro-*.patch: Add patches.

diff --git a/gnu/local.mk b/gnu/local.mk
index 05258ac054..4736650972 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1439,6 +1439,28 @@  dist_patch_DATA =						\
   %D%/packages/patches/linphone-desktop-without-sdk.patch           \
   %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \
   %D%/packages/patches/linux-libre-arm64-generic-pinebook-lcd.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-01-soc-rockchip-Add-rockchip-suspend-mode-driver.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-02-firmware-Add-Rockchip-SIP-driver.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-03-tty-serdev-support-shutdown-op.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-04-bluetooth-hci_serdev-Clear-registered-bit-on-unregis.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-05-bluetooth-hci_bcm-disable-power-on-shutdown.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-06-mmc-core-pwrseq_simple-disable-mmc-power-on-shutdown.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-07-regulator-core-add-generic-suspend-states-support.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-08-usb-typec-bus-Catch-crash-due-to-partner-NULL-value.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-09-usb-typec-tcpm-add-hacky-generic-altmode-support.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-10-phy-rockchip-typec-Set-extcon-capabilities.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-11-usb-typec-altmodes-displayport-Add-hacky-generic-alt.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-12-sound-soc-codecs-es8316-Run-micdetect-only-if-jack-s.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-13-ASoC-soc-jack.c-supported-inverted-jack-detect-GPIOs.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-14-arm64-dts-rockchip-add-default-rk3399-rockchip-suspe.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-15-arm64-dts-rockchip-enable-earlycon.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-16-arm64-dts-rockchip-reserve-memory-for-ATF-rockchip-S.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-17-arm64-dts-rockchip-use-power-led-for-disk-activity-i.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-18-arm64-dts-rockchip-add-typec-extcon-hack.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-19-arm64-dts-rockchip-add-rockchip-suspend-node.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-20-arm64-configs-add-defconfig-for-Pinebook-Pro.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-21-arm64-dts-rockchip-setup-USB-type-c-port-as-dual-dat.patch \
+  %D%/packages/patches/linux-libre-pinebook-pro-22-soc-rockchip-Port-rockchip_pm_config-driver-to-Linux.patch \
   %D%/packages/patches/linux-pam-no-setfsuid.patch		\
   %D%/packages/patches/lirc-localstatedir.patch			\
   %D%/packages/patches/lirc-reproducible-build.patch		\
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index f386139638..d91d1fe4b6 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -477,6 +477,34 @@  (define %linux-libre-arm-export-__sync_icache_dcache-patch
     (sha256
      (base32 "1ifnfhpakzffn4b8n7x7w5cps9mzjxlkcfz9zqak2vaw8nzvl39f"))))
 
+(define %pinebook-pro-patches
+  ;; Pinebook Pro patches from manjaro v5.10 branch:
+  ;; https://gitlab.manjaro.org/tsys/linux-pinebook-pro.git
+  ;; Rebased and squashed for 5.10.14
+  (search-patches
+   "linux-libre-pinebook-pro-01-soc-rockchip-Add-rockchip-suspend-mode-driver.patch"
+   "linux-libre-pinebook-pro-02-firmware-Add-Rockchip-SIP-driver.patch"
+   "linux-libre-pinebook-pro-03-tty-serdev-support-shutdown-op.patch"
+   "linux-libre-pinebook-pro-04-bluetooth-hci_serdev-Clear-registered-bit-on-unregis.patch"
+   "linux-libre-pinebook-pro-05-bluetooth-hci_bcm-disable-power-on-shutdown.patch"
+   "linux-libre-pinebook-pro-06-mmc-core-pwrseq_simple-disable-mmc-power-on-shutdown.patch"
+   "linux-libre-pinebook-pro-07-regulator-core-add-generic-suspend-states-support.patch"
+   "linux-libre-pinebook-pro-08-usb-typec-bus-Catch-crash-due-to-partner-NULL-value.patch"
+   "linux-libre-pinebook-pro-09-usb-typec-tcpm-add-hacky-generic-altmode-support.patch"
+   "linux-libre-pinebook-pro-10-phy-rockchip-typec-Set-extcon-capabilities.patch"
+   "linux-libre-pinebook-pro-11-usb-typec-altmodes-displayport-Add-hacky-generic-alt.patch"
+   "linux-libre-pinebook-pro-12-sound-soc-codecs-es8316-Run-micdetect-only-if-jack-s.patch"
+   "linux-libre-pinebook-pro-13-ASoC-soc-jack.c-supported-inverted-jack-detect-GPIOs.patch"
+   "linux-libre-pinebook-pro-14-arm64-dts-rockchip-add-default-rk3399-rockchip-suspe.patch"
+   "linux-libre-pinebook-pro-15-arm64-dts-rockchip-enable-earlycon.patch"
+   "linux-libre-pinebook-pro-16-arm64-dts-rockchip-reserve-memory-for-ATF-rockchip-S.patch"
+   "linux-libre-pinebook-pro-17-arm64-dts-rockchip-use-power-led-for-disk-activity-i.patch"
+   "linux-libre-pinebook-pro-18-arm64-dts-rockchip-add-typec-extcon-hack.patch"
+   "linux-libre-pinebook-pro-19-arm64-dts-rockchip-add-rockchip-suspend-node.patch"
+   "linux-libre-pinebook-pro-20-arm64-configs-add-defconfig-for-Pinebook-Pro.patch"
+   "linux-libre-pinebook-pro-21-arm64-dts-rockchip-setup-USB-type-c-port-as-dual-dat.patch"
+   "linux-libre-pinebook-pro-22-soc-rockchip-Port-rockchip_pm_config-driver-to-Linux.patch"))
+
 (define (source-with-patches source patches)
   (origin
     (inherit source)
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-01-soc-rockchip-Add-rockchip-suspend-mode-driver.patch b/gnu/packages/patches/linux-libre-pinebook-pro-01-soc-rockchip-Add-rockchip-suspend-mode-driver.patch
new file mode 100644
index 0000000000..8ca0c39bb3
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-01-soc-rockchip-Add-rockchip-suspend-mode-driver.patch
@@ -0,0 +1,375 @@ 
+From bd06237d842c9a2c57905f42a7ccb5f085b9ea12 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:06:20 +0200
+Subject: [PATCH 01/22] soc: rockchip: Add rockchip suspend mode driver
+
+Code gore, do not mainline. This belongs in ATF
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ .../soc/rockchip/rockchip-pm-config.txt       |  39 ++++
+ drivers/soc/rockchip/Kconfig                  |   6 +
+ drivers/soc/rockchip/Makefile                 |   1 +
+ drivers/soc/rockchip/rockchip_pm_config.c     | 212 ++++++++++++++++++
+ include/dt-bindings/suspend/rockchip-rk3399.h |  60 +++++
+ 5 files changed, 318 insertions(+)
+ create mode 100644 Documentation/devicetree/bindings/soc/rockchip/rockchip-pm-config.txt
+ create mode 100644 drivers/soc/rockchip/rockchip_pm_config.c
+ create mode 100644 include/dt-bindings/suspend/rockchip-rk3399.h
+
+diff --git a/Documentation/devicetree/bindings/soc/rockchip/rockchip-pm-config.txt b/Documentation/devicetree/bindings/soc/rockchip/rockchip-pm-config.txt
+new file mode 100644
+index 000000000000..a8fd70f17597
+--- /dev/null
++++ b/Documentation/devicetree/bindings/soc/rockchip/rockchip-pm-config.txt
+@@ -0,0 +1,39 @@
++* the suspend mode config
++
++- compatible: "rockchip,pm-config"
++  Compatibility with rk3399
++
++- rockchip,sleep-mode-config : the sleep mode config,
++  ARMOFF, OSC disabled ...
++
++- rockchip,wakeup-config: the wake up sourece enable.
++  GPIO, USB, SD...
++
++- rockchip,pwm-regulator-config: the pwm regulator name.
++
++Example:
++	rockchip_suspend: rockchip_suspend {
++		compatible = "rockchip,pm-rk3399";
++		status = "okay";
++		rockchip,sleep-mode-config = <
++			(0
++			| RKPM_SLP_ARMPD
++			| RKPM_SLP_PERILPPD
++			| RKPM_SLP_DDR_RET
++			| RKPM_SLP_PLLPD
++			| RKPM_SLP_OSC_DIS
++			| RKPM_SLP_CENTER_PD
++			| RKPM_SLP_AP_PWROFF
++			)
++		>;
++		rockchip,wakeup-config = <
++			(0 |
++			RKPM_GPIO_WKUP_EN |
++			RKPM_PWM_WKUP_EN)
++		>;
++		rockchip,pwm-regulator-config = <
++			(0 |
++			PWM2_REGULATOR_EN
++			)
++		>;
++	};
+diff --git a/drivers/soc/rockchip/Kconfig b/drivers/soc/rockchip/Kconfig
+index 2c13bf4dd5db..f403ab803b42 100644
+--- a/drivers/soc/rockchip/Kconfig
++++ b/drivers/soc/rockchip/Kconfig
+@@ -34,4 +34,10 @@ config ROCKCHIP_PM_DOMAINS
+ 
+           If unsure, say N.
+ 
++config ROCKCHIP_SUSPEND_MODE
++	bool "Rockchip suspend mode config"
++	depends on ROCKCHIP_SIP
++	help
++	  Say Y here if you want to set the suspend mode to the ATF.
++
+ endif
+diff --git a/drivers/soc/rockchip/Makefile b/drivers/soc/rockchip/Makefile
+index 875032f7344e..7aa3d5d1b330 100644
+--- a/drivers/soc/rockchip/Makefile
++++ b/drivers/soc/rockchip/Makefile
+@@ -5,3 +5,4 @@
+ obj-$(CONFIG_ROCKCHIP_GRF) += grf.o
+ obj-$(CONFIG_ROCKCHIP_IODOMAIN) += io-domain.o
+ obj-$(CONFIG_ROCKCHIP_PM_DOMAINS) += pm_domains.o
++obj-$(CONFIG_ROCKCHIP_SUSPEND_MODE) += rockchip_pm_config.o
+diff --git a/drivers/soc/rockchip/rockchip_pm_config.c b/drivers/soc/rockchip/rockchip_pm_config.c
+new file mode 100644
+index 000000000000..43b2e0f33343
+--- /dev/null
++++ b/drivers/soc/rockchip/rockchip_pm_config.c
+@@ -0,0 +1,212 @@
++/*
++ * Rockchip Generic power configuration support.
++ *
++ * Copyright (c) 2017 ROCKCHIP, Co. Ltd.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/arm-smccc.h>
++#include <linux/bitops.h>
++#include <linux/cpu.h>
++#include <linux/of_gpio.h>
++#include <linux/platform_device.h>
++#include <linux/regulator/machine.h>
++#include <linux/rockchip/rockchip_sip.h>
++#include <linux/suspend.h>
++#include <dt-bindings/input/input.h>
++
++#define PM_INVALID_GPIO	0xffff
++
++static const struct of_device_id pm_match_table[] = {
++	{ .compatible = "rockchip,pm-rk3399",},
++	{ },
++};
++
++#define MAX_PWRKEY_NUMS		20
++#define MAX_NUM_KEYS		60
++
++struct rkxx_remote_key_table {
++	int scancode;
++	int keycode;
++};
++
++static int parse_ir_pwrkeys(unsigned int *pwrkey, int size, int *nkey)
++{
++	struct device_node *node;
++	struct device_node *child_node;
++	struct rkxx_remote_key_table key_table[MAX_NUM_KEYS];
++	int i;
++	int len = 0, nbuttons;
++	int num = 0;
++	u32 usercode, scancode;
++
++	for_each_node_by_name(node, "pwm") {
++		for_each_child_of_node(node, child_node) {
++			if (of_property_read_u32(child_node,
++						 "rockchip,usercode",
++						 &usercode))
++				break;
++
++			if (of_get_property(child_node,
++					    "rockchip,key_table",
++					    &len) == NULL ||
++			    len <= 0)
++				break;
++
++			len = len < sizeof(key_table) ? len : sizeof(key_table);
++			len /= sizeof(u32);
++			if (of_property_read_u32_array(child_node,
++						       "rockchip,key_table",
++						       (u32 *)key_table,
++						       len))
++				break;
++
++			nbuttons = len / 2;
++			for (i = 0; i < nbuttons && num < size; ++i) {
++				if (key_table[i].keycode == KEY_POWER) {
++					scancode = key_table[i].scancode;
++					pr_debug("usercode=%x, key=%x\n",
++						 usercode, scancode);
++					pwrkey[num] = (usercode & 0xffff) << 16;
++					pwrkey[num] |= (scancode & 0xff) << 8;
++					++num;
++				}
++			}
++		}
++	}
++
++	*nkey = num;
++
++	return num ? 0 : -1;
++}
++
++static void rockchip_pm_virt_pwroff_prepare(void)
++{
++	int error;
++	int i, nkey;
++	u32 power_key[MAX_PWRKEY_NUMS];
++
++	if ((parse_ir_pwrkeys(power_key, ARRAY_SIZE(power_key), &nkey))) {
++		pr_err("Parse ir powerkey code failed!\n");
++		return;
++	}
++
++	for (i = 0; i < nkey; ++i)
++		sip_smc_set_suspend_mode(VIRTUAL_POWEROFF, 1, power_key[i]);
++
++	regulator_suspend_prepare(PM_SUSPEND_MEM);
++
++	error = disable_nonboot_cpus();
++	if (error) {
++		pr_err("Disable nonboot cpus failed!\n");
++		return;
++	}
++
++	sip_smc_set_suspend_mode(VIRTUAL_POWEROFF, 0, 1);
++	sip_smc_virtual_poweroff();
++}
++
++static int __init pm_config_init(struct platform_device *pdev)
++{
++	const struct of_device_id *match_id;
++	struct device_node *node;
++	u32 mode_config = 0;
++	u32 wakeup_config = 0;
++	u32 pwm_regulator_config = 0;
++	int gpio_temp[10];
++	u32 sleep_debug_en = 0;
++	u32 apios_suspend = 0;
++	u32 virtual_poweroff_en = 0;
++	enum of_gpio_flags flags;
++	int i = 0;
++	int length;
++
++	match_id = of_match_node(pm_match_table, pdev->dev.of_node);
++	if (!match_id)
++		return -ENODEV;
++
++	node = of_find_node_by_name(NULL, "rockchip-suspend");
++
++	if (IS_ERR_OR_NULL(node)) {
++		dev_err(&pdev->dev, "%s dev node err\n",  __func__);
++		return -ENODEV;
++	}
++
++	if (of_property_read_u32_array(node,
++				       "rockchip,sleep-mode-config",
++				       &mode_config, 1))
++		dev_warn(&pdev->dev, "not set sleep mode config\n");
++	else
++		sip_smc_set_suspend_mode(SUSPEND_MODE_CONFIG, mode_config, 0);
++
++	if (of_property_read_u32_array(node,
++				       "rockchip,wakeup-config",
++				       &wakeup_config, 1))
++		dev_warn(&pdev->dev, "not set wakeup-config\n");
++	else
++		sip_smc_set_suspend_mode(WKUP_SOURCE_CONFIG, wakeup_config, 0);
++
++	if (of_property_read_u32_array(node,
++				       "rockchip,pwm-regulator-config",
++				       &pwm_regulator_config, 1))
++		dev_warn(&pdev->dev, "not set pwm-regulator-config\n");
++	else
++		sip_smc_set_suspend_mode(PWM_REGULATOR_CONFIG,
++					 pwm_regulator_config,
++					 0);
++
++	length = of_gpio_named_count(node, "rockchip,power-ctrl");
++
++	if (length > 0 && length < 10) {
++		for (i = 0; i < length; i++) {
++			gpio_temp[i] = of_get_named_gpio_flags(node,
++							     "rockchip,power-ctrl",
++							     i,
++							     &flags);
++			if (!gpio_is_valid(gpio_temp[i]))
++				break;
++			sip_smc_set_suspend_mode(GPIO_POWER_CONFIG,
++						 i,
++						 gpio_temp[i]);
++		}
++	}
++	sip_smc_set_suspend_mode(GPIO_POWER_CONFIG, i, PM_INVALID_GPIO);
++
++	if (!of_property_read_u32_array(node,
++					"rockchip,sleep-debug-en",
++					&sleep_debug_en, 1))
++		sip_smc_set_suspend_mode(SUSPEND_DEBUG_ENABLE,
++					 sleep_debug_en,
++					 0);
++
++	if (!of_property_read_u32_array(node,
++					"rockchip,apios-suspend",
++					&apios_suspend, 1))
++		sip_smc_set_suspend_mode(APIOS_SUSPEND_CONFIG,
++					 apios_suspend,
++					 0);
++
++	if (!of_property_read_u32_array(node,
++					"rockchip,virtual-poweroff",
++					&virtual_poweroff_en, 1) &&
++	    virtual_poweroff_en)
++		pm_power_off_prepare = rockchip_pm_virt_pwroff_prepare;
++
++	return 0;
++}
++
++static struct platform_driver pm_driver = {
++	.driver = {
++		.name = "rockchip-pm",
++		.of_match_table = pm_match_table,
++	},
++};
++
++static int __init rockchip_pm_drv_register(void)
++{
++	return platform_driver_probe(&pm_driver, pm_config_init);
++}
++subsys_initcall(rockchip_pm_drv_register);
+diff --git a/include/dt-bindings/suspend/rockchip-rk3399.h b/include/dt-bindings/suspend/rockchip-rk3399.h
+new file mode 100644
+index 000000000000..0cccd6430ef6
+--- /dev/null
++++ b/include/dt-bindings/suspend/rockchip-rk3399.h
+@@ -0,0 +1,60 @@
++/*
++ * Header providing constants for Rockchip suspend bindings.
++ *
++ * Copyright (C) 2017, Fuzhou Rockchip Electronics Co., Ltd
++ * Author: Tony.Xie
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ */
++
++#ifndef __DT_BINDINGS_SUSPEND_ROCKCHIP_RK3399_H__
++#define __DT_BINDINGS_SUSPEND_ROCKCHIP_RK3399_H__
++
++/* the suspend mode */
++#define RKPM_SLP_WFI				(1 << 0)
++#define RKPM_SLP_ARMPD				(1 << 1)
++#define RKPM_SLP_PERILPPD			(1 << 2)
++#define RKPM_SLP_DDR_RET			(1 << 3)
++#define RKPM_SLP_PLLPD				(1 << 4)
++#define RKPM_SLP_OSC_DIS			(1 << 5)
++#define RKPM_SLP_CENTER_PD			(1 << 6)
++#define RKPM_SLP_AP_PWROFF			(1 << 7)
++
++/* the wake up source */
++#define RKPM_CLUSTER_L_WKUP_EN			(1 << 0)
++#define RKPM_CLUSTER_B_WKUPB_EN			(1 << 1)
++#define RKPM_GPIO_WKUP_EN			(1 << 2)
++#define RKPM_SDIO_WKUP_EN			(1 << 3)
++#define RKPM_SDMMC_WKUP_EN			(1 << 4)
++#define RKPM_TIMER_WKUP_EN			(1 << 6)
++#define RKPM_USB_WKUP_EN			(1 << 7)
++#define RKPM_SFT_WKUP_EN			(1 << 8)
++#define RKPM_WDT_M0_WKUP_EN			(1 << 9)
++#define RKPM_TIME_OUT_WKUP_EN			(1 << 10)
++#define RKPM_PWM_WKUP_EN			(1 << 11)
++#define RKPM_PCIE_WKUP_EN			(1 << 13)
++
++/* the pwm regulator */
++#define PWM0_REGULATOR_EN			(1 << 0)
++#define PWM1_REGULATOR_EN			(1 << 1)
++#define PWM2_REGULATOR_EN			(1 << 2)
++#define PWM3A_REGULATOR_EN			(1 << 3)
++#define PWM3B_REGULATOR_EN			(1 << 4)
++
++/* the APIO voltage domain */
++#define RKPM_APIO0_SUSPEND			(1 << 0)
++#define RKPM_APIO1_SUSPEND			(1 << 1)
++#define RKPM_APIO2_SUSPEND			(1 << 2)
++#define RKPM_APIO3_SUSPEND			(1 << 3)
++#define RKPM_APIO4_SUSPEND			(1 << 4)
++#define RKPM_APIO5_SUSPEND			(1 << 5)
++
++#endif
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-02-firmware-Add-Rockchip-SIP-driver.patch b/gnu/packages/patches/linux-libre-pinebook-pro-02-firmware-Add-Rockchip-SIP-driver.patch
new file mode 100644
index 0000000000..9190e0086b
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-02-firmware-Add-Rockchip-SIP-driver.patch
@@ -0,0 +1,474 @@ 
+From f96cdf076bcc4a12af7670c5cb3ff584d2adf988 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:11:05 +0200
+Subject: [PATCH 02/22] firmware: Add Rockchip SIP driver
+
+Used exclusively for suspend signaling. Drop for mainline and
+use PSCI
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/firmware/Kconfig              |   7 +
+ drivers/firmware/Makefile             |   1 +
+ drivers/firmware/rockchip_sip.c       | 262 ++++++++++++++++++++++++++
+ include/linux/rockchip/rockchip_sip.h | 149 +++++++++++++++
+ 4 files changed, 419 insertions(+)
+ create mode 100644 drivers/firmware/rockchip_sip.c
+ create mode 100644 include/linux/rockchip/rockchip_sip.h
+
+diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
+index 3315e3c21586..1dfa18dde097 100644
+--- a/drivers/firmware/Kconfig
++++ b/drivers/firmware/Kconfig
+@@ -250,6 +250,13 @@ config QCOM_SCM_DOWNLOAD_MODE_DEFAULT
+ 
+ 	  Say Y here to enable "download mode" by default.
+ 
++config ROCKCHIP_SIP
++	bool "Rockchip SIP interface"
++	depends on ARM64 && ARM_PSCI_FW
++	help
++	  Say Y here if you want to enable SIP callbacks for Rockchip platforms
++	  This option enables support for communicating with the ATF.
++
+ config TI_SCI_PROTOCOL
+ 	tristate "TI System Control Interface (TISCI) Message Protocol"
+ 	depends on TI_MESSAGE_MANAGER
+diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile
+index 5e013b6a3692..85c40483e5fa 100644
+--- a/drivers/firmware/Makefile
++++ b/drivers/firmware/Makefile
+@@ -28,6 +28,7 @@ obj-y				+= meson/
+ obj-$(CONFIG_GOOGLE_FIRMWARE)	+= google/
+ obj-$(CONFIG_EFI)		+= efi/
+ obj-$(CONFIG_UEFI_CPER)		+= efi/
++obj-$(CONFIG_ROCKCHIP_SIP)	+= rockchip_sip.o
+ obj-y				+= imx/
+ obj-y				+= psci/
+ obj-y				+= smccc/
+diff --git a/drivers/firmware/rockchip_sip.c b/drivers/firmware/rockchip_sip.c
+new file mode 100644
+index 000000000000..6ed780c587e1
+--- /dev/null
++++ b/drivers/firmware/rockchip_sip.c
+@@ -0,0 +1,262 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * Copyright (C) 2016, Fuzhou Rockchip Electronics Co., Ltd
++ */
++
++#include <linux/arm-smccc.h>
++#include <linux/io.h>
++#include <linux/rockchip/rockchip_sip.h>
++#include <asm/cputype.h>
++#include <asm/smp_plat.h>
++#include <uapi/linux/psci.h>
++#include <linux/ptrace.h>
++
++#ifdef CONFIG_64BIT
++#define PSCI_FN_NATIVE(version, name)	PSCI_##version##_FN64_##name
++#else
++#define PSCI_FN_NATIVE(version, name)	PSCI_##version##_FN_##name
++#endif
++
++#define SIZE_PAGE(n)	((n) << 12)
++
++static struct arm_smccc_res __invoke_sip_fn_smc(unsigned long function_id,
++						unsigned long arg0,
++						unsigned long arg1,
++						unsigned long arg2)
++{
++	struct arm_smccc_res res;
++
++	arm_smccc_smc(function_id, arg0, arg1, arg2, 0, 0, 0, 0, &res);
++	return res;
++}
++
++struct arm_smccc_res sip_smc_ddr_cfg(u32 arg0, u32 arg1, u32 arg2)
++{
++	return __invoke_sip_fn_smc(SIP_DDR_CFG, arg0, arg1, arg2);
++}
++
++struct arm_smccc_res sip_smc_get_atf_version(void)
++{
++	return __invoke_sip_fn_smc(SIP_ATF_VERSION, 0, 0, 0);
++}
++
++struct arm_smccc_res sip_smc_get_sip_version(void)
++{
++	return __invoke_sip_fn_smc(SIP_SIP_VERSION, 0, 0, 0);
++}
++
++int sip_smc_set_suspend_mode(u32 ctrl, u32 config1, u32 config2)
++{
++	struct arm_smccc_res res;
++
++	res = __invoke_sip_fn_smc(SIP_SUSPEND_MODE, ctrl, config1, config2);
++	return res.a0;
++}
++
++int sip_smc_virtual_poweroff(void)
++{
++	struct arm_smccc_res res;
++
++	res = __invoke_sip_fn_smc(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND), 0, 0, 0);
++	return res.a0;
++}
++
++struct arm_smccc_res sip_smc_request_share_mem(u32 page_num,
++					       share_page_type_t page_type)
++{
++	struct arm_smccc_res res;
++	unsigned long share_mem_phy;
++
++	res = __invoke_sip_fn_smc(SIP_SHARE_MEM, page_num, page_type, 0);
++	if (IS_SIP_ERROR(res.a0))
++		goto error;
++
++	share_mem_phy = res.a1;
++	res.a1 = (unsigned long)ioremap(share_mem_phy, SIZE_PAGE(page_num));
++
++error:
++	return res;
++}
++
++struct arm_smccc_res sip_smc_mcu_el3fiq(u32 arg0, u32 arg1, u32 arg2)
++{
++	return __invoke_sip_fn_smc(SIP_MCU_EL3FIQ_CFG, arg0, arg1, arg2);
++}
++
++/************************** fiq debugger **************************************/
++#ifdef CONFIG_ARM64
++#define SIP_UARTDBG_FN		SIP_UARTDBG_CFG64
++#else
++#define SIP_UARTDBG_FN		SIP_UARTDBG_CFG
++#endif
++
++static int fiq_sip_enabled;
++static int fiq_target_cpu;
++static phys_addr_t ft_fiq_mem_phy;
++static void __iomem *ft_fiq_mem_base;
++static void (*sip_fiq_debugger_uart_irq_tf)(struct pt_regs _pt_regs,
++					    unsigned long cpu);
++int sip_fiq_debugger_is_enabled(void)
++{
++	return fiq_sip_enabled;
++}
++
++static struct pt_regs sip_fiq_debugger_get_pt_regs(void *reg_base,
++						   unsigned long sp_el1)
++{
++	struct pt_regs fiq_pt_regs;
++
++#ifdef CONFIG_ARM64
++	/* copy cpu context */
++	memcpy(&fiq_pt_regs, reg_base, 8 * 31);
++
++	/* copy pstate */
++	memcpy(&fiq_pt_regs.pstate, reg_base + 0x110, 8);
++
++	/* EL1 mode */
++	if (fiq_pt_regs.pstate & 0x10)
++		memcpy(&fiq_pt_regs.sp, reg_base + 0xf8, 8);
++	/* EL0 mode */
++	else
++		fiq_pt_regs.sp = sp_el1;
++
++	/* copy pc */
++	memcpy(&fiq_pt_regs.pc, reg_base + 0x118, 8);
++#else
++	struct sm_nsec_ctx *nsec_ctx = reg_base;
++
++	fiq_pt_regs.ARM_r0 = nsec_ctx->r0;
++	fiq_pt_regs.ARM_r1 = nsec_ctx->r1;
++	fiq_pt_regs.ARM_r2 = nsec_ctx->r2;
++	fiq_pt_regs.ARM_r3 = nsec_ctx->r3;
++	fiq_pt_regs.ARM_r4 = nsec_ctx->r4;
++	fiq_pt_regs.ARM_r5 = nsec_ctx->r5;
++	fiq_pt_regs.ARM_r6 = nsec_ctx->r6;
++	fiq_pt_regs.ARM_r7 = nsec_ctx->r7;
++	fiq_pt_regs.ARM_r8 = nsec_ctx->r8;
++	fiq_pt_regs.ARM_r9 = nsec_ctx->r9;
++	fiq_pt_regs.ARM_r10 = nsec_ctx->r10;
++	fiq_pt_regs.ARM_fp = nsec_ctx->r11;
++	fiq_pt_regs.ARM_ip = nsec_ctx->r12;
++	fiq_pt_regs.ARM_sp = nsec_ctx->svc_sp;
++	fiq_pt_regs.ARM_lr = nsec_ctx->svc_lr;
++	fiq_pt_regs.ARM_pc = nsec_ctx->mon_lr;
++	fiq_pt_regs.ARM_cpsr = nsec_ctx->mon_spsr;
++#endif
++
++	return fiq_pt_regs;
++}
++
++static void sip_fiq_debugger_uart_irq_tf_cb(unsigned long sp_el1,
++					    unsigned long offset,
++					    unsigned long cpu)
++{
++	struct pt_regs fiq_pt_regs;
++	char *cpu_context;
++
++	/* calling fiq handler */
++	if (ft_fiq_mem_base) {
++		cpu_context = (char *)ft_fiq_mem_base + offset;
++		fiq_pt_regs = sip_fiq_debugger_get_pt_regs(cpu_context, sp_el1);
++		sip_fiq_debugger_uart_irq_tf(fiq_pt_regs, cpu);
++	}
++
++	/* fiq handler done, return to EL3(then EL3 return to EL1 entry) */
++	__invoke_sip_fn_smc(SIP_UARTDBG_FN, 0, 0, UARTDBG_CFG_OSHDL_TO_OS);
++}
++
++int sip_fiq_debugger_uart_irq_tf_init(u32 irq_id, void *callback_fn)
++{
++	struct arm_smccc_res res;
++
++	fiq_target_cpu = 0;
++
++	/* init fiq debugger callback */
++	sip_fiq_debugger_uart_irq_tf = callback_fn;
++	res = __invoke_sip_fn_smc(SIP_UARTDBG_FN, irq_id,
++				  (unsigned long)sip_fiq_debugger_uart_irq_tf_cb,
++				  UARTDBG_CFG_INIT);
++	if (IS_SIP_ERROR(res.a0)) {
++		pr_err("%s error: %d\n", __func__, (int)res.a0);
++		return res.a0;
++	}
++
++	/* share memory ioremap */
++	if (!ft_fiq_mem_base) {
++		ft_fiq_mem_phy = res.a1;
++		ft_fiq_mem_base = ioremap(ft_fiq_mem_phy,
++					  FIQ_UARTDBG_SHARE_MEM_SIZE);
++		if (!ft_fiq_mem_base) {
++			pr_err("%s: share memory ioremap failed\n", __func__);
++			return -ENOMEM;
++		}
++	}
++
++	fiq_sip_enabled = 1;
++
++	return SIP_RET_SUCCESS;
++}
++
++int sip_fiq_debugger_switch_cpu(u32 cpu)
++{
++	struct arm_smccc_res res;
++
++	fiq_target_cpu = cpu;
++	res = __invoke_sip_fn_smc(SIP_UARTDBG_FN, cpu_logical_map(cpu),
++				  0, UARTDBG_CFG_OSHDL_CPUSW);
++	return res.a0;
++}
++
++void sip_fiq_debugger_enable_debug(bool enable)
++{
++	unsigned long val;
++
++	val = enable ? UARTDBG_CFG_OSHDL_DEBUG_ENABLE :
++		       UARTDBG_CFG_OSHDL_DEBUG_DISABLE;
++
++	__invoke_sip_fn_smc(SIP_UARTDBG_FN, 0, 0, val);
++}
++
++int sip_fiq_debugger_set_print_port(u32 port_phyaddr, u32 baudrate)
++{
++	struct arm_smccc_res res;
++
++	res = __invoke_sip_fn_smc(SIP_UARTDBG_FN, port_phyaddr, baudrate,
++				  UARTDBG_CFG_PRINT_PORT);
++	return res.a0;
++}
++
++int sip_fiq_debugger_request_share_memory(void)
++{
++	struct arm_smccc_res res;
++
++	/* request page share memory */
++	res = sip_smc_request_share_mem(FIQ_UARTDBG_PAGE_NUMS,
++					SHARE_PAGE_TYPE_UARTDBG);
++	if (IS_SIP_ERROR(res.a0))
++		return res.a0;
++
++	return SIP_RET_SUCCESS;
++}
++
++int sip_fiq_debugger_get_target_cpu(void)
++{
++	return fiq_target_cpu;
++}
++
++void sip_fiq_debugger_enable_fiq(bool enable, uint32_t tgt_cpu)
++{
++	u32 en;
++
++	fiq_target_cpu = tgt_cpu;
++	en = enable ? UARTDBG_CFG_FIQ_ENABEL : UARTDBG_CFG_FIQ_DISABEL;
++	__invoke_sip_fn_smc(SIP_UARTDBG_FN, tgt_cpu, 0, en);
++}
+diff --git a/include/linux/rockchip/rockchip_sip.h b/include/linux/rockchip/rockchip_sip.h
+new file mode 100644
+index 000000000000..b19f64ede981
+--- /dev/null
++++ b/include/linux/rockchip/rockchip_sip.h
+@@ -0,0 +1,149 @@
++/* Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 and
++ * only version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ */
++#ifndef __ROCKCHIP_SIP_H
++#define __ROCKCHIP_SIP_H
++
++#include <linux/arm-smccc.h>
++#include <linux/io.h>
++
++/* SMC function IDs for SiP Service queries, compatible with kernel-3.10 */
++#define SIP_ATF_VERSION			0x82000001
++#define SIP_ACCESS_REG			0x82000002
++#define SIP_SUSPEND_MODE		0x82000003
++#define SIP_PENDING_CPUS		0x82000004
++#define SIP_UARTDBG_CFG			0x82000005
++#define SIP_UARTDBG_CFG64		0xc2000005
++#define SIP_MCU_EL3FIQ_CFG		0x82000006
++#define SIP_ACCESS_CHIP_STATE64		0xc2000006
++#define SIP_SECURE_MEM_CONFIG		0x82000007
++#define SIP_ACCESS_CHIP_EXTRA_STATE64	0xc2000007
++#define SIP_DDR_CFG			0x82000008
++#define SIP_SHARE_MEM			0x82000009
++#define SIP_SIP_VERSION			0x8200000a
++#define SIP_REMOTECTL_CFG		0x8200000b
++
++/* Trust firmware version */
++#define ATF_VER_MAJOR(ver)		(((ver) >> 16) & 0xffff)
++#define ATF_VER_MINOR(ver)		(((ver) >> 0) & 0xffff)
++
++/* SIP_ACCESS_REG: read or write */
++#define SECURE_REG_RD			0x0
++#define SECURE_REG_WR			0x1
++
++/* Fiq debugger share memory: 8KB enough */
++#define FIQ_UARTDBG_PAGE_NUMS		2
++#define FIQ_UARTDBG_SHARE_MEM_SIZE	((FIQ_UARTDBG_PAGE_NUMS) * 4096)
++
++/* Error return code */
++#define IS_SIP_ERROR(x)			(!!(x))
++
++#define SIP_RET_SUCCESS			0
++#define SIP_RET_SMC_UNKNOWN		-1
++#define SIP_RET_NOT_SUPPORTED		-2
++#define SIP_RET_INVALID_PARAMS		-3
++#define SIP_RET_INVALID_ADDRESS		-4
++#define SIP_RET_DENIED			-5
++
++/* SIP_UARTDBG_CFG64 call types */
++#define UARTDBG_CFG_INIT		0xf0
++#define UARTDBG_CFG_OSHDL_TO_OS		0xf1
++#define UARTDBG_CFG_OSHDL_CPUSW		0xf3
++#define UARTDBG_CFG_OSHDL_DEBUG_ENABLE	0xf4
++#define UARTDBG_CFG_OSHDL_DEBUG_DISABLE	0xf5
++#define UARTDBG_CFG_PRINT_PORT		0xf7
++#define UARTDBG_CFG_FIQ_ENABEL		0xf8
++#define UARTDBG_CFG_FIQ_DISABEL		0xf9
++
++/* SIP_SUSPEND_MODE32 call types */
++#define SUSPEND_MODE_CONFIG		0x01
++#define WKUP_SOURCE_CONFIG		0x02
++#define PWM_REGULATOR_CONFIG		0x03
++#define GPIO_POWER_CONFIG		0x04
++#define SUSPEND_DEBUG_ENABLE		0x05
++#define APIOS_SUSPEND_CONFIG		0x06
++#define VIRTUAL_POWEROFF		0x07
++
++/* SIP_REMOTECTL_CFG call types */
++#define	REMOTECTL_SET_IRQ		0xf0
++#define REMOTECTL_SET_PWM_CH		0xf1
++#define REMOTECTL_SET_PWRKEY		0xf2
++#define REMOTECTL_GET_WAKEUP_STATE	0xf3
++#define REMOTECTL_ENABLE		0xf4
++/* wakeup state */
++#define REMOTECTL_PWRKEY_WAKEUP		0xdeadbeaf
++
++/* Share mem page types */
++typedef enum {
++	SHARE_PAGE_TYPE_INVALID = 0,
++	SHARE_PAGE_TYPE_UARTDBG,
++	SHARE_PAGE_TYPE_MAX,
++} share_page_type_t;
++
++/*
++ * Rules: struct arm_smccc_res contains result and data, details:
++ *
++ * a0: error code(0: success, !0: error);
++ * a1~a3: data
++ */
++struct arm_smccc_res sip_smc_get_atf_version(void);
++struct arm_smccc_res sip_smc_get_sip_version(void);
++struct arm_smccc_res sip_smc_ddr_cfg(u32 arg0, u32 arg1, u32 arg2);
++struct arm_smccc_res sip_smc_request_share_mem(u32 page_num,
++					       share_page_type_t page_type);
++struct arm_smccc_res sip_smc_mcu_el3fiq(u32 arg0, u32 arg1, u32 arg2);
++
++int sip_smc_set_suspend_mode(u32 ctrl, u32 config1, u32 config2);
++int sip_smc_virtual_poweroff(void);
++/***************************fiq debugger **************************************/
++void sip_fiq_debugger_enable_fiq(bool enable, uint32_t tgt_cpu);
++void sip_fiq_debugger_enable_debug(bool enable);
++int sip_fiq_debugger_uart_irq_tf_init(u32 irq_id, void *callback_fn);
++int sip_fiq_debugger_set_print_port(u32 port_phyaddr, u32 baudrate);
++int sip_fiq_debugger_request_share_memory(void);
++int sip_fiq_debugger_get_target_cpu(void);
++int sip_fiq_debugger_switch_cpu(u32 cpu);
++int sip_fiq_debugger_is_enabled(void);
++
++/* optee cpu_context */
++struct sm_nsec_ctx {
++	u32 usr_sp;
++	u32 usr_lr;
++	u32 irq_spsr;
++	u32 irq_sp;
++	u32 irq_lr;
++	u32 svc_spsr;
++	u32 svc_sp;
++	u32 svc_lr;
++	u32 abt_spsr;
++	u32 abt_sp;
++	u32 abt_lr;
++	u32 und_spsr;
++	u32 und_sp;
++	u32 und_lr;
++	u32 mon_lr;
++	u32 mon_spsr;
++	u32 r4;
++	u32 r5;
++	u32 r6;
++	u32 r7;
++	u32 r8;
++	u32 r9;
++	u32 r10;
++	u32 r11;
++	u32 r12;
++	u32 r0;
++	u32 r1;
++	u32 r2;
++	u32 r3;
++};
++
++#endif
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-03-tty-serdev-support-shutdown-op.patch b/gnu/packages/patches/linux-libre-pinebook-pro-03-tty-serdev-support-shutdown-op.patch
new file mode 100644
index 0000000000..48591d444a
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-03-tty-serdev-support-shutdown-op.patch
@@ -0,0 +1,55 @@ 
+From 336bc343e754aa1b30c877eec59b3fa1e905aa1e Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:12:56 +0200
+Subject: [PATCH 03/22] tty: serdev: support shutdown op
+
+Allow serdev drivers to register a shutdown handler
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/tty/serdev/core.c | 11 +++++++++++
+ include/linux/serdev.h    |  1 +
+ 2 files changed, 12 insertions(+)
+
+diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
+index c5f0d936b003..37e45c356540 100644
+--- a/drivers/tty/serdev/core.c
++++ b/drivers/tty/serdev/core.c
+@@ -432,11 +432,22 @@ static int serdev_drv_remove(struct device *dev)
+ 	return 0;
+ }
+ 
++static void serdev_drv_shutdown(struct device *dev)
++{
++	const struct serdev_device_driver *sdrv;
++	if (dev->driver) {
++		sdrv = to_serdev_device_driver(dev->driver);
++		if (sdrv->shutdown)
++			sdrv->shutdown(to_serdev_device(dev));
++	}
++}
++
+ static struct bus_type serdev_bus_type = {
+ 	.name		= "serial",
+ 	.match		= serdev_device_match,
+ 	.probe		= serdev_drv_probe,
+ 	.remove		= serdev_drv_remove,
++	.shutdown	= serdev_drv_shutdown,
+ };
+ 
+ /**
+diff --git a/include/linux/serdev.h b/include/linux/serdev.h
+index 9f14f9c12ec4..94050561325c 100644
+--- a/include/linux/serdev.h
++++ b/include/linux/serdev.h
+@@ -63,6 +63,7 @@ struct serdev_device_driver {
+ 	struct device_driver driver;
+ 	int	(*probe)(struct serdev_device *);
+ 	void	(*remove)(struct serdev_device *);
++	void	(*shutdown)(struct serdev_device *);
+ };
+ 
+ static inline struct serdev_device_driver *to_serdev_device_driver(struct device_driver *d)
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-04-bluetooth-hci_serdev-Clear-registered-bit-on-unregis.patch b/gnu/packages/patches/linux-libre-pinebook-pro-04-bluetooth-hci_serdev-Clear-registered-bit-on-unregis.patch
new file mode 100644
index 0000000000..0d68d4c9ae
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-04-bluetooth-hci_serdev-Clear-registered-bit-on-unregis.patch
@@ -0,0 +1,26 @@ 
+From bbb5b65d82c2fdbe80cf5fe4d7bfefee738f110c Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:14:06 +0200
+Subject: [PATCH 04/22] bluetooth: hci_serdev: Clear registered bit on
+ unregister
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/bluetooth/hci_serdev.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/bluetooth/hci_serdev.c b/drivers/bluetooth/hci_serdev.c
+index ef96ad06fa54..95c723c0ea01 100644
+--- a/drivers/bluetooth/hci_serdev.c
++++ b/drivers/bluetooth/hci_serdev.c
+@@ -395,5 +395,7 @@ void hci_uart_unregister_device(struct hci_uart *hu)
+ 		clear_bit(HCI_UART_PROTO_READY, &hu->flags);
+ 		serdev_device_close(hu->serdev);
+ 	}
++
++	clear_bit(HCI_UART_REGISTERED, &hu->flags);
+ }
+ EXPORT_SYMBOL_GPL(hci_uart_unregister_device);
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-05-bluetooth-hci_bcm-disable-power-on-shutdown.patch b/gnu/packages/patches/linux-libre-pinebook-pro-05-bluetooth-hci_bcm-disable-power-on-shutdown.patch
new file mode 100644
index 0000000000..4ec2d8b6ef
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-05-bluetooth-hci_bcm-disable-power-on-shutdown.patch
@@ -0,0 +1,51 @@ 
+From 60a2b2a921205f5a42c94f7e9c491ca7d11ad820 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:15:08 +0200
+Subject: [PATCH 05/22] bluetooth: hci_bcm: disable power on shutdown
+
+Firmware behaves wonky when not power cycled over reboots
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/bluetooth/hci_bcm.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
+index 8ea5ca8d71d6..6d5871992f79 100644
+--- a/drivers/bluetooth/hci_bcm.c
++++ b/drivers/bluetooth/hci_bcm.c
+@@ -1469,6 +1469,23 @@ static void bcm_serdev_remove(struct serdev_device *serdev)
+ 	hci_uart_unregister_device(&bcmdev->serdev_hu);
+ }
+ 
++static void bcm_serdev_shutdown(struct serdev_device *serdev)
++{
++	struct bcm_device *bcmdev = serdev_device_get_drvdata(serdev);
++
++/*
++	if (test_bit(HCI_UART_REGISTERED, &bcmdev->hu->flags)) {
++		hci_uart_unregister_device(&bcmdev->serdev_hu);
++	}
++*/
++	dev_info(bcmdev->dev, "Cutting power to bluetooth module\n");
++	if (bcm_gpio_set_power(bcmdev, false)) {
++		dev_err(bcmdev->dev, "Failed to power down\n");
++	}
++	usleep_range(500000, 1000000);
++}
++
++
+ #ifdef CONFIG_OF
+ static struct bcm_device_data bcm4354_device_data = {
+ 	.no_early_set_baudrate = true,
+@@ -1494,6 +1511,7 @@ MODULE_DEVICE_TABLE(of, bcm_bluetooth_of_match);
+ static struct serdev_device_driver bcm_serdev_driver = {
+ 	.probe = bcm_serdev_probe,
+ 	.remove = bcm_serdev_remove,
++	.shutdown = bcm_serdev_shutdown,
+ 	.driver = {
+ 		.name = "hci_uart_bcm",
+ 		.of_match_table = of_match_ptr(bcm_bluetooth_of_match),
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-06-mmc-core-pwrseq_simple-disable-mmc-power-on-shutdown.patch b/gnu/packages/patches/linux-libre-pinebook-pro-06-mmc-core-pwrseq_simple-disable-mmc-power-on-shutdown.patch
new file mode 100644
index 0000000000..506911440f
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-06-mmc-core-pwrseq_simple-disable-mmc-power-on-shutdown.patch
@@ -0,0 +1,64 @@ 
+From 53639b3558c206be0fec6153f307e5c28f1dd343 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:16:52 +0200
+Subject: [PATCH 06/22] mmc: core: pwrseq_simple: disable mmc power on shutdown
+
+Fix for Broadcom SDIO WiFi modules. They misbehave if reinitialized
+without a power cycle.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/mmc/core/pwrseq_simple.c | 19 ++++++++++++++++---
+ 1 file changed, 16 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/mmc/core/pwrseq_simple.c b/drivers/mmc/core/pwrseq_simple.c
+index ea4d3670560e..38fe7e29aba6 100644
+--- a/drivers/mmc/core/pwrseq_simple.c
++++ b/drivers/mmc/core/pwrseq_simple.c
+@@ -80,10 +80,8 @@ static void mmc_pwrseq_simple_post_power_on(struct mmc_host *host)
+ 		msleep(pwrseq->post_power_on_delay_ms);
+ }
+ 
+-static void mmc_pwrseq_simple_power_off(struct mmc_host *host)
++static void __mmc_pwrseq_simple_power_off(struct mmc_pwrseq_simple *pwrseq)
+ {
+-	struct mmc_pwrseq_simple *pwrseq = to_pwrseq_simple(host->pwrseq);
+-
+ 	mmc_pwrseq_simple_set_gpios_value(pwrseq, 1);
+ 
+ 	if (pwrseq->power_off_delay_us)
+@@ -96,6 +94,12 @@ static void mmc_pwrseq_simple_power_off(struct mmc_host *host)
+ 	}
+ }
+ 
++static void mmc_pwrseq_simple_power_off(struct mmc_host *host)
++{
++	struct mmc_pwrseq_simple *pwrseq = to_pwrseq_simple(host->pwrseq);
++	__mmc_pwrseq_simple_power_off(pwrseq);
++}
++
+ static const struct mmc_pwrseq_ops mmc_pwrseq_simple_ops = {
+ 	.pre_power_on = mmc_pwrseq_simple_pre_power_on,
+ 	.post_power_on = mmc_pwrseq_simple_post_power_on,
+@@ -151,9 +155,18 @@ static int mmc_pwrseq_simple_remove(struct platform_device *pdev)
+ 	return 0;
+ }
+ 
++static void mmc_pwrseq_simple_shutdown(struct platform_device *pdev)
++{
++	struct mmc_pwrseq_simple *pwrseq = platform_get_drvdata(pdev);
++
++	dev_info(&pdev->dev, "Turning off mmc\n");
++	__mmc_pwrseq_simple_power_off(pwrseq);
++}
++
+ static struct platform_driver mmc_pwrseq_simple_driver = {
+ 	.probe = mmc_pwrseq_simple_probe,
+ 	.remove = mmc_pwrseq_simple_remove,
++	.shutdown = mmc_pwrseq_simple_shutdown,
+ 	.driver = {
+ 		.name = "pwrseq_simple",
+ 		.of_match_table = mmc_pwrseq_simple_of_match,
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-07-regulator-core-add-generic-suspend-states-support.patch b/gnu/packages/patches/linux-libre-pinebook-pro-07-regulator-core-add-generic-suspend-states-support.patch
new file mode 100644
index 0000000000..d5ec58e897
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-07-regulator-core-add-generic-suspend-states-support.patch
@@ -0,0 +1,104 @@ 
+From c54fa5c850858a70cfab20bf81ec8b0fb0b9e4c2 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:19:31 +0200
+Subject: [PATCH 07/22] regulator: core: add generic suspend states support
+
+This commit adds genric suspend support for regualtors without
+explicit suspend ops.
+Not sure if this would be accepted mainline, the reinitialization
+procedure might be unsafe.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/regulator/core.c         | 46 +++++++++++++++++++++++++++++---
+ include/linux/regulator/driver.h |  3 +++
+ 2 files changed, 46 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
+index 42bbd99a36ac..72fb6f417c36 100644
+--- a/drivers/regulator/core.c
++++ b/drivers/regulator/core.c
+@@ -5411,6 +5411,14 @@ void regulator_unregister(struct regulator_dev *rdev)
+ EXPORT_SYMBOL_GPL(regulator_unregister);
+ 
+ #ifdef CONFIG_SUSPEND
++static inline int can_enable(struct regulator_dev *rdev) {
++	return rdev->ena_pin || rdev->desc->ops->enable;
++}
++
++static inline int can_disable(struct regulator_dev *rdev) {
++	return rdev->ena_pin || rdev->desc->ops->disable;
++}
++
+ /**
+  * regulator_suspend - prepare regulators for system wide suspend
+  * @dev: ``&struct device`` pointer that is passed to _regulator_suspend()
+@@ -5430,6 +5438,28 @@ static int regulator_suspend(struct device *dev)
+ 
+ 	regulator_lock(rdev);
+ 	ret = __suspend_set_state(rdev, rstate);
++	if (ret) {
++		goto out;
++	}
++
++	rstate = regulator_get_suspend_state(rdev, state);
++	if (rstate == NULL)
++		goto out;
++
++	if (rstate->enabled == ENABLE_IN_SUSPEND && can_enable(rdev)) {
++		if (!rdev->desc->ops->set_suspend_enable) {
++			rdev->resume_state = _regulator_is_enabled(rdev);
++			rdev_info(rdev, "Entering suspend %d, enabling forcibly, was %s\n", state, rdev->resume_state ? "on" : "off");
++			ret = _regulator_do_enable(rdev);
++		}
++	} else if (rstate->enabled == DISABLE_IN_SUSPEND && can_disable(rdev)) {
++		if (!rdev->desc->ops->set_suspend_disable) {
++			rdev->resume_state = _regulator_is_enabled(rdev);
++			rdev_info(rdev, "Entering suspend %d, disabling forcibly, was %s\n", state, rdev->resume_state ? "on" : "off");
++			ret = _regulator_do_disable(rdev);
++		}
++	}
++out:
+ 	regulator_unlock(rdev);
+ 
+ 	return ret;
+@@ -5452,9 +5482,19 @@ static int regulator_resume(struct device *dev)
+ 
+ 	regulator_lock(rdev);
+ 
+-	if (rstate->enabled == ENABLE_IN_SUSPEND ||
+-	    rstate->enabled == DISABLE_IN_SUSPEND)
+-		ret = rdev->desc->ops->resume(rdev);
++	if (rstate->enabled == ENABLE_IN_SUSPEND || rstate->enabled == DISABLE_IN_SUSPEND) {
++		if (rdev->desc->ops->resume) {
++			ret = rdev->desc->ops->resume(rdev);
++		} else if ((rstate->enabled == ENABLE_IN_SUSPEND && !rdev->desc->ops->set_suspend_enable) || 
++		           (rstate->enabled == DISABLE_IN_SUSPEND && !rdev->desc->ops->set_suspend_disable)) {
++			rdev_info(rdev, "Resuming, restoring state to %s\n", rdev->resume_state ? "on" : "off");
++			if (rdev->resume_state && can_enable(rdev)) {
++				ret = _regulator_do_enable(rdev);
++			} else if (!rdev->resume_state && can_disable(rdev)) {
++				ret = _regulator_do_disable(rdev);
++			}
++		}
++	}
+ 
+ 	regulator_unlock(rdev);
+ 
+diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
+index 11cade73726c..8a67654b5911 100644
+--- a/include/linux/regulator/driver.h
++++ b/include/linux/regulator/driver.h
+@@ -470,6 +470,9 @@ struct regulator_dev {
+ 
+ 	/* time when this regulator was disabled last time */
+ 	unsigned long last_off_jiffy;
++
++	/* state when resuming */
++	int resume_state;
+ };
+ 
+ struct regulator_dev *
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-08-usb-typec-bus-Catch-crash-due-to-partner-NULL-value.patch b/gnu/packages/patches/linux-libre-pinebook-pro-08-usb-typec-bus-Catch-crash-due-to-partner-NULL-value.patch
new file mode 100644
index 0000000000..ed1f6d72fa
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-08-usb-typec-bus-Catch-crash-due-to-partner-NULL-value.patch
@@ -0,0 +1,36 @@ 
+From e4f2d18bd78d5df019f9f68b56c9d6e8fa12afb5 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:22:09 +0200
+Subject: [PATCH 08/22] usb: typec: bus: Catch crash due to partner NULL value
+
+Think this has been fixed upstream, have not seen it happen for ages.
+Drop on next rebase.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/usb/typec/bus.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/usb/typec/bus.c b/drivers/usb/typec/bus.c
+index e8ddb81cb6df..1d0265f46441 100644
+--- a/drivers/usb/typec/bus.c
++++ b/drivers/usb/typec/bus.c
+@@ -154,8 +154,14 @@ EXPORT_SYMBOL_GPL(typec_altmode_exit);
+  */
+ void typec_altmode_attention(struct typec_altmode *adev, u32 vdo)
+ {
+-	struct typec_altmode *pdev = &to_altmode(adev)->partner->adev;
++	struct typec_altmode *pdev;
++	WARN_ONCE(!adev, "typec bus attention: adev is NULL!");
++	WARN_ONCE(!to_altmode(adev)->partner, "typec bus attention: partner is NULL!");
++	if(!adev || !to_altmode(adev)->partner) {
++		return;
++	}
+ 
++	pdev = &to_altmode(adev)->partner->adev;
+ 	if (pdev->ops && pdev->ops->attention)
+ 		pdev->ops->attention(pdev, vdo);
+ }
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-09-usb-typec-tcpm-add-hacky-generic-altmode-support.patch b/gnu/packages/patches/linux-libre-pinebook-pro-09-usb-typec-tcpm-add-hacky-generic-altmode-support.patch
new file mode 100644
index 0000000000..0aa1410063
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-09-usb-typec-tcpm-add-hacky-generic-altmode-support.patch
@@ -0,0 +1,254 @@ 
+From e0e623d023f4781e93cdca1c3774723fe989e520 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:23:54 +0200
+Subject: [PATCH 09/22] usb: typec: tcpm: add hacky generic altmode support
+
+This is a hack and it is based on extcon. Do not try to mainline
+unless you are in need for some retroactive abortion by the
+maintainers.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/usb/typec/tcpm/tcpm.c | 139 +++++++++++++++++++++++++++++++++-
+ 1 file changed, 138 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
+index a6fae1f86505..2908771f4d4e 100644
+--- a/drivers/usb/typec/tcpm/tcpm.c
++++ b/drivers/usb/typec/tcpm/tcpm.c
+@@ -9,6 +9,7 @@
+ #include <linux/debugfs.h>
+ #include <linux/device.h>
+ #include <linux/hrtimer.h>
++#include <linux/extcon-provider.h>
+ #include <linux/jiffies.h>
+ #include <linux/kernel.h>
+ #include <linux/kthread.h>
+@@ -369,6 +370,11 @@ struct tcpm_port {
+ 	/* Sink caps have been queried */
+ 	bool sink_cap_done;
+ 
++#ifdef CONFIG_EXTCON
++	struct extcon_dev *extcon;
++	unsigned int *extcon_cables;
++#endif
++
+ #ifdef CONFIG_DEBUG_FS
+ 	struct dentry *dentry;
+ 	struct mutex logbuffer_lock;	/* log buffer access lock */
+@@ -654,6 +660,35 @@ static void tcpm_debugfs_exit(const struct tcpm_port *port) { }
+ 
+ #endif
+ 
++static void tcpm_update_extcon_data(struct tcpm_port *port, bool attached) {
++#ifdef CONFIG_EXTCON
++	unsigned int *capability = port->extcon_cables;
++	if (port->data_role == TYPEC_HOST) {
++		extcon_set_state(port->extcon, EXTCON_USB, false);
++		extcon_set_state(port->extcon, EXTCON_USB_HOST, attached);
++	} else {
++		extcon_set_state(port->extcon, EXTCON_USB, true);
++		extcon_set_state(port->extcon, EXTCON_USB_HOST, attached);
++	}
++	while (*capability != EXTCON_NONE) {
++		if (attached) {
++			union extcon_property_value val;
++			val.intval = (port->polarity == TYPEC_POLARITY_CC2);
++			extcon_set_property(port->extcon, *capability,
++				EXTCON_PROP_USB_TYPEC_POLARITY, val);
++		} else {
++			extcon_set_state(port->extcon, *capability, false);
++		}
++		extcon_sync(port->extcon, *capability);
++		capability++;
++	}
++	tcpm_log(port, "Extcon update (%s): %s, %s",
++		attached ? "attached" : "detached",
++		port->data_role == TYPEC_HOST ? "host" : "device",
++		port->polarity == TYPEC_POLARITY_CC1 ? "normal" : "flipped");
++#endif
++}
++
+ static int tcpm_pd_transmit(struct tcpm_port *port,
+ 			    enum tcpm_transmit_type type,
+ 			    const struct pd_message *msg)
+@@ -881,6 +916,8 @@ static int tcpm_set_roles(struct tcpm_port *port, bool attached,
+ 	typec_set_data_role(port->typec_port, data);
+ 	typec_set_pwr_role(port->typec_port, role);
+ 
++	tcpm_update_extcon_data(port, attached);
++
+ 	return 0;
+ }
+ 
+@@ -1132,7 +1169,7 @@ static void svdm_consume_modes(struct tcpm_port *port, const u32 *p, int cnt)
+ 		paltmode->mode = i;
+ 		paltmode->vdo = p[i];
+ 
+-		tcpm_log(port, " Alternate mode %d: SVID 0x%04x, VDO %d: 0x%08x",
++		tcpm_log(port, "Alternate mode %d: SVID 0x%04x, VDO %d: 0x%08x",
+ 			 pmdata->altmodes, paltmode->svid,
+ 			 paltmode->mode, paltmode->vdo);
+ 
+@@ -1154,6 +1191,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port)
+ 				 modep->altmode_desc[i].svid);
+ 			altmode = NULL;
+ 		}
++		else
++			tcpm_log(port, "Registered altmode 0x%04x", modep->altmode_desc[i].svid);
++
+ 		port->partner_altmode[i] = altmode;
+ 	}
+ }
+@@ -1249,9 +1289,11 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev,
+ 			modep->svid_index++;
+ 			if (modep->svid_index < modep->nsvids) {
+ 				u16 svid = modep->svids[modep->svid_index];
++				tcpm_log(port, "More modes available, sending discover");
+ 				response[0] = VDO(svid, 1, CMD_DISCOVER_MODES);
+ 				rlen = 1;
+ 			} else {
++				tcpm_log(port, "Got all patner modes, registering");
+ 				tcpm_register_partner_altmodes(port);
+ 			}
+ 			break;
+@@ -2836,6 +2878,7 @@ static int tcpm_src_attach(struct tcpm_port *port)
+ static void tcpm_typec_disconnect(struct tcpm_port *port)
+ {
+ 	if (port->connected) {
++		tcpm_update_extcon_data(port, false);
+ 		typec_unregister_partner(port->partner);
+ 		port->partner = NULL;
+ 		port->connected = false;
+@@ -2902,6 +2945,8 @@ static void tcpm_detach(struct tcpm_port *port)
+ 	}
+ 
+ 	tcpm_reset_port(port);
++
++	tcpm_update_extcon_data(port, false);
+ }
+ 
+ static void tcpm_src_detach(struct tcpm_port *port)
+@@ -4732,6 +4777,64 @@ void tcpm_tcpc_reset(struct tcpm_port *port)
+ }
+ EXPORT_SYMBOL_GPL(tcpm_tcpc_reset);
+ 
++unsigned int default_supported_cables[] = {
++	EXTCON_NONE
++};
++
++static int tcpm_fw_get_caps_late(struct tcpm_port *port,
++			    struct fwnode_handle *fwnode)
++{
++	int ret, i;
++	ret = fwnode_property_count_u32(fwnode, "typec-altmodes");
++	if (ret > 0) {
++		u32 *props;
++		if (ret % 4) {
++			dev_err(port->dev, "Length of typec altmode array must be divisible by 4");
++			return -EINVAL;
++		}
++
++		props = devm_kzalloc(port->dev, sizeof(u32) * ret, GFP_KERNEL);
++		if (!props) {
++			dev_err(port->dev, "Failed to allocate memory for altmode properties");
++			return -ENOMEM;
++		}
++
++		if(fwnode_property_read_u32_array(fwnode, "typec-altmodes", props, ret) < 0) {
++			dev_err(port->dev, "Failed to read altmodes from port");
++			return -EINVAL;
++		}
++
++		i = 0;
++		while (ret > 0 && i < ARRAY_SIZE(port->port_altmode)) {
++			struct typec_altmode *alt;
++			struct typec_altmode_desc alt_desc = {
++				.svid = props[i * 4],
++				.mode = props[i * 4 + 1],
++				.vdo  = props[i * 4 + 2],
++				.roles = props[i * 4 + 3],
++			};
++
++
++			tcpm_log(port, "Adding altmode SVID: 0x%04x, mode: %d, vdo: %u, role: %d",
++				alt_desc.svid, alt_desc.mode, alt_desc.vdo, alt_desc.roles);
++			alt = typec_port_register_altmode(port->typec_port,
++							  &alt_desc);
++			if (IS_ERR(alt)) {
++				tcpm_log(port,
++					 "%s: failed to register port alternate mode 0x%x",
++					 dev_name(port->dev), alt_desc.svid);
++				break;
++			}
++			typec_altmode_set_drvdata(alt, port);
++			alt->ops = &tcpm_altmode_ops;
++			port->port_altmode[i] = alt;
++			i++;
++			ret -= 4;
++		}
++	}
++	return 0;
++}
++
+ static int tcpm_fw_get_caps(struct tcpm_port *port,
+ 			    struct fwnode_handle *fwnode)
+ {
+@@ -4742,6 +4845,23 @@ static int tcpm_fw_get_caps(struct tcpm_port *port,
+ 	if (!fwnode)
+ 		return -EINVAL;
+ 
++#ifdef CONFIG_EXTCON
++	ret = fwnode_property_count_u32(fwnode, "extcon-cables");
++	if (ret > 0) {
++		port->extcon_cables = devm_kzalloc(port->dev, sizeof(u32) * ret, GFP_KERNEL);
++		if (!port->extcon_cables) {
++			dev_err(port->dev, "Failed to allocate memory for extcon cable types. "\
++				"Using default tyes");
++			goto extcon_default;
++		}
++		fwnode_property_read_u32_array(fwnode, "extcon-cables", port->extcon_cables, ret);
++	} else {
++extcon_default:
++		dev_info(port->dev, "No cable types defined, using default cables");
++		port->extcon_cables = default_supported_cables;
++	}
++#endif
++
+ 	/* USB data support is optional */
+ 	ret = fwnode_property_read_string(fwnode, "data-role", &cap_str);
+ 	if (ret == 0) {
+@@ -5114,6 +5234,17 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
+ 		goto out_destroy_wq;
+ 
+ 	port->try_role = port->typec_caps.prefer_role;
++#ifdef CONFIG_EXTCON
++	port->extcon = devm_extcon_dev_allocate(dev, port->extcon_cables);
++	if (IS_ERR(port->extcon)) {
++		dev_err(dev, "Failed to allocate extcon device: %ld", PTR_ERR(port->extcon));
++		goto out_destroy_wq;
++	}
++	if((err = devm_extcon_dev_register(dev, port->extcon))) {
++		dev_err(dev, "Failed to register extcon device: %d", err);
++		goto out_destroy_wq;
++	}
++#endif
+ 
+ 	port->typec_caps.fwnode = tcpc->fwnode;
+ 	port->typec_caps.revision = 0x0120;	/* Type-C spec release 1.2 */
+@@ -5141,6 +5272,12 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
+ 		goto out_role_sw_put;
+ 	}
+ 
++	err = tcpm_fw_get_caps_late(port, tcpc->fwnode);
++	if (err < 0) {
++		dev_err(dev, "Failed to get altmodes from fwnode");
++		goto out_destroy_wq;
++	}
++
+ 	mutex_lock(&port->lock);
+ 	tcpm_init(port);
+ 	mutex_unlock(&port->lock);
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-10-phy-rockchip-typec-Set-extcon-capabilities.patch b/gnu/packages/patches/linux-libre-pinebook-pro-10-phy-rockchip-typec-Set-extcon-capabilities.patch
new file mode 100644
index 0000000000..12986568c0
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-10-phy-rockchip-typec-Set-extcon-capabilities.patch
@@ -0,0 +1,50 @@ 
+From bad8f5fa346a3de7e394ccc8ba96b9939c6de966 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:25:32 +0200
+Subject: [PATCH 10/22] phy: rockchip: typec: Set extcon capabilities
+
+Do not mainline, hack.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/phy/rockchip/phy-rockchip-typec.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c b/drivers/phy/rockchip/phy-rockchip-typec.c
+index 70a31251b202..5385bb4f0bd4 100644
+--- a/drivers/phy/rockchip/phy-rockchip-typec.c
++++ b/drivers/phy/rockchip/phy-rockchip-typec.c
+@@ -40,6 +40,7 @@
+ #include <linux/clk-provider.h>
+ #include <linux/delay.h>
+ #include <linux/extcon.h>
++#include <linux/extcon-provider.h>
+ #include <linux/io.h>
+ #include <linux/iopoll.h>
+ #include <linux/kernel.h>
+@@ -1160,6 +1161,22 @@ static int rockchip_typec_phy_probe(struct platform_device *pdev)
+ 				dev_err(dev, "Invalid or missing extcon\n");
+ 			return PTR_ERR(tcphy->extcon);
+ 		}
++	} else {
++		extcon_set_property_capability(tcphy->extcon, EXTCON_USB,
++					       EXTCON_PROP_USB_SS);
++		extcon_set_property_capability(tcphy->extcon, EXTCON_USB_HOST,
++					       EXTCON_PROP_USB_SS);
++		extcon_set_property_capability(tcphy->extcon, EXTCON_DISP_DP,
++					       EXTCON_PROP_USB_SS);
++		extcon_set_property_capability(tcphy->extcon, EXTCON_USB,
++					       EXTCON_PROP_USB_TYPEC_POLARITY);
++		extcon_set_property_capability(tcphy->extcon, EXTCON_USB_HOST,
++					       EXTCON_PROP_USB_TYPEC_POLARITY);
++		extcon_set_property_capability(tcphy->extcon, EXTCON_DISP_DP,
++					       EXTCON_PROP_USB_TYPEC_POLARITY);
++		extcon_sync(tcphy->extcon, EXTCON_USB);
++		extcon_sync(tcphy->extcon, EXTCON_USB_HOST);
++		extcon_sync(tcphy->extcon, EXTCON_DISP_DP);
+ 	}
+ 
+ 	pm_runtime_enable(dev);
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-11-usb-typec-altmodes-displayport-Add-hacky-generic-alt.patch b/gnu/packages/patches/linux-libre-pinebook-pro-11-usb-typec-altmodes-displayport-Add-hacky-generic-alt.patch
new file mode 100644
index 0000000000..383964c34f
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-11-usb-typec-altmodes-displayport-Add-hacky-generic-alt.patch
@@ -0,0 +1,121 @@ 
+From c6e5e01ca875770f71febe4c87f60fd57df86f6f Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:26:27 +0200
+Subject: [PATCH 11/22] usb: typec: altmodes: displayport: Add hacky, generic
+ altmode detection
+
+Do not mainline, hack.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/usb/typec/altmodes/displayport.c | 55 ++++++++++++++++++++++--
+ 1 file changed, 52 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c
+index e62e5e3da01e..a3d03db476aa 100644
+--- a/drivers/usb/typec/altmodes/displayport.c
++++ b/drivers/usb/typec/altmodes/displayport.c
+@@ -9,6 +9,8 @@
+  */
+ 
+ #include <linux/delay.h>
++#include <linux/extcon.h>
++#include <linux/extcon-provider.h>
+ #include <linux/mutex.h>
+ #include <linux/module.h>
+ #include <linux/usb/pd_vdo.h>
+@@ -135,15 +137,53 @@ static int dp_altmode_status_update(struct dp_altmode *dp)
+ 	return ret;
+ }
+ 
++static void dp_altmode_update_extcon(struct dp_altmode *dp, bool disconnect) {
++	const struct device *dev = &dp->port->dev;
++	struct extcon_dev* edev = NULL;
++
++	while (dev) {
++		edev = extcon_find_edev_by_node(dev->of_node);
++		if(!IS_ERR(edev)) {
++			break;
++		}
++		dev = dev->parent;
++	}
++
++	if (IS_ERR_OR_NULL(edev)) {
++		return;
++	}
++
++	if (disconnect || !dp->data.conf) {
++		extcon_set_state_sync(edev, EXTCON_DISP_DP, false);
++	} else {
++		union extcon_property_value extcon_true = { .intval = true };
++		extcon_set_state(edev, EXTCON_DISP_DP, true);
++		if (DP_CONF_GET_PIN_ASSIGN(dp->data.conf) & DP_PIN_ASSIGN_MULTI_FUNC_MASK) {
++			extcon_set_state_sync(edev, EXTCON_USB_HOST, true);
++			extcon_set_property(edev, EXTCON_DISP_DP, EXTCON_PROP_USB_SS,
++						 extcon_true);
++		} else {
++			extcon_set_state_sync(edev, EXTCON_USB_HOST, false);
++		}
++		extcon_sync(edev, EXTCON_DISP_DP);
++		extcon_set_state_sync(edev, EXTCON_USB, false);
++	}
++
++}
++
+ static int dp_altmode_configured(struct dp_altmode *dp)
+ {
+ 	int ret;
+ 
+ 	sysfs_notify(&dp->alt->dev.kobj, "displayport", "configuration");
+ 
+-	if (!dp->data.conf)
++	if (!dp->data.conf) {
++		dp_altmode_update_extcon(dp, true);
+ 		return typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
+ 					    &dp->data);
++	}
++
++	dp_altmode_update_extcon(dp, false);
+ 
+ 	ret = dp_altmode_notify(dp);
+ 	if (ret)
+@@ -170,9 +210,11 @@ static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf)
+ 	if (ret) {
+ 		if (DP_CONF_GET_PIN_ASSIGN(dp->data.conf))
+ 			dp_altmode_notify(dp);
+-		else
++		else {
++			dp_altmode_update_extcon(dp, true);
+ 			typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
+ 					     &dp->data);
++		}
+ 	}
+ 
+ 	return ret;
+@@ -211,6 +253,8 @@ static void dp_altmode_work(struct work_struct *work)
+ 	case DP_STATE_EXIT:
+ 		if (typec_altmode_exit(dp->alt))
+ 			dev_err(&dp->alt->dev, "Exit Mode Failed!\n");
++		else
++			dp_altmode_update_extcon(dp, true);
+ 		break;
+ 	default:
+ 		break;
+@@ -521,8 +565,13 @@ int dp_altmode_probe(struct typec_altmode *alt)
+ 	if (!(DP_CAP_DFP_D_PIN_ASSIGN(port->vdo) &
+ 	      DP_CAP_UFP_D_PIN_ASSIGN(alt->vdo)) &&
+ 	    !(DP_CAP_UFP_D_PIN_ASSIGN(port->vdo) &
+-	      DP_CAP_DFP_D_PIN_ASSIGN(alt->vdo)))
++	      DP_CAP_DFP_D_PIN_ASSIGN(alt->vdo))) {
++		dev_err(&alt->dev, "No compatible pin configuration found:"\
++			"%04lx -> %04lx, %04lx <- %04lx",
++			DP_CAP_DFP_D_PIN_ASSIGN(port->vdo), DP_CAP_UFP_D_PIN_ASSIGN(alt->vdo),
++			DP_CAP_UFP_D_PIN_ASSIGN(port->vdo), DP_CAP_DFP_D_PIN_ASSIGN(alt->vdo));
+ 		return -ENODEV;
++	}
+ 
+ 	ret = sysfs_create_group(&alt->dev.kobj, &dp_altmode_group);
+ 	if (ret)
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-12-sound-soc-codecs-es8316-Run-micdetect-only-if-jack-s.patch b/gnu/packages/patches/linux-libre-pinebook-pro-12-sound-soc-codecs-es8316-Run-micdetect-only-if-jack-s.patch
new file mode 100644
index 0000000000..145dcaebbe
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-12-sound-soc-codecs-es8316-Run-micdetect-only-if-jack-s.patch
@@ -0,0 +1,30 @@ 
+From 126efe7f7d0e627bfe03d4d78832bef3490d40d1 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:34:47 +0200
+Subject: [PATCH 12/22] sound: soc: codecs: es8316: Run micdetect only if jack
+ status asserted
+
+Think this is (was?) required to prevent flapping of detection status on
+the PBP.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ sound/soc/codecs/es8316.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sound/soc/codecs/es8316.c b/sound/soc/codecs/es8316.c
+index bd5d230c5df2..a2d8bf620b6f 100644
+--- a/sound/soc/codecs/es8316.c
++++ b/sound/soc/codecs/es8316.c
+@@ -688,7 +688,7 @@ static void es8316_disable_jack_detect(struct snd_soc_component *component)
+ 	snd_soc_component_update_bits(component, ES8316_GPIO_DEBOUNCE,
+ 				      ES8316_GPIO_ENABLE_INTERRUPT, 0);
+ 
+-	if (es8316->jack->status & SND_JACK_MICROPHONE) {
++	if (es8316->jack && (es8316->jack->status & SND_JACK_MICROPHONE)) {
+ 		es8316_disable_micbias_for_mic_gnd_short_detect(component);
+ 		snd_soc_jack_report(es8316->jack, 0, SND_JACK_BTN_0);
+ 	}
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-13-ASoC-soc-jack.c-supported-inverted-jack-detect-GPIOs.patch b/gnu/packages/patches/linux-libre-pinebook-pro-13-ASoC-soc-jack.c-supported-inverted-jack-detect-GPIOs.patch
new file mode 100644
index 0000000000..4474287811
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-13-ASoC-soc-jack.c-supported-inverted-jack-detect-GPIOs.patch
@@ -0,0 +1,45 @@ 
+From f171e08de69e55167fbab2fd3e15b5ee10024e80 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:36:47 +0200
+Subject: [PATCH 13/22] ASoC: soc-jack.c: supported inverted jack detect GPIOs
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ sound/soc/soc-jack.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/sound/soc/soc-jack.c b/sound/soc/soc-jack.c
+index 0f1820f36b4d..8d9d77814f33 100644
+--- a/sound/soc/soc-jack.c
++++ b/sound/soc/soc-jack.c
+@@ -216,8 +216,6 @@ static void snd_soc_jack_gpio_detect(struct snd_soc_jack_gpio *gpio)
+ 	int report;
+ 
+ 	enable = gpiod_get_value_cansleep(gpio->desc);
+-	if (gpio->invert)
+-		enable = !enable;
+ 
+ 	if (enable)
+ 		report = gpio->report;
+@@ -346,6 +344,9 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
+ 				goto undo;
+ 			}
+ 		} else {
++			int flags = GPIOF_IN;
++			if (gpios[i].invert)
++				flags |= GPIOF_ACTIVE_LOW;
+ 			/* legacy GPIO number */
+ 			if (!gpio_is_valid(gpios[i].gpio)) {
+ 				dev_err(jack->card->dev,
+@@ -355,7 +356,7 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
+ 				goto undo;
+ 			}
+ 
+-			ret = gpio_request_one(gpios[i].gpio, GPIOF_IN,
++			ret = gpio_request_one(gpios[i].gpio, flags,
+ 					       gpios[i].name);
+ 			if (ret)
+ 				goto undo;
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-14-arm64-dts-rockchip-add-default-rk3399-rockchip-suspe.patch b/gnu/packages/patches/linux-libre-pinebook-pro-14-arm64-dts-rockchip-add-default-rk3399-rockchip-suspe.patch
new file mode 100644
index 0000000000..bc99d0df33
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-14-arm64-dts-rockchip-add-default-rk3399-rockchip-suspe.patch
@@ -0,0 +1,57 @@ 
+From 9d17d48ded2440f543fa2c7468a7fc976cea9458 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:38:03 +0200
+Subject: [PATCH 14/22] arm64: dts: rockchip: add default rk3399
+ rockchip-suspend node
+
+Again this has no place in mainline. Should be handled by ATF
+and signalled via PSCI.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+index 7a9a7aca86c6..f83f9402f307 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+@@ -9,6 +9,7 @@
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/pinctrl/rockchip.h>
+ #include <dt-bindings/power/rk3399-power.h>
++#include <dt-bindings/suspend/rockchip-rk3399.h>
+ #include <dt-bindings/thermal/thermal.h>
+ 
+ / {
+@@ -2680,4 +2681,27 @@ pcie_clkreqnb_cpm: pci-clkreqnb-cpm {
+ 		};
+ 
+ 	};
++
++	rockchip_suspend: rockchip-suspend {
++		compatible = "rockchip,pm-rk3399";
++		status = "disabled";
++		rockchip,sleep-debug-en = <0>;
++		rockchip,virtual-poweroff = <0>;
++		rockchip,sleep-mode-config = <
++			(0
++			| RKPM_SLP_ARMPD
++			| RKPM_SLP_PERILPPD
++			| RKPM_SLP_DDR_RET
++			| RKPM_SLP_PLLPD
++			| RKPM_SLP_OSC_DIS
++			| RKPM_SLP_CENTER_PD
++			| RKPM_SLP_AP_PWROFF
++			)
++		>;
++		rockchip,wakeup-config = <
++			(0
++			| RKPM_GPIO_WKUP_EN
++			)
++		>;
++	};
+ };
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-15-arm64-dts-rockchip-enable-earlycon.patch b/gnu/packages/patches/linux-libre-pinebook-pro-15-arm64-dts-rockchip-enable-earlycon.patch
new file mode 100644
index 0000000000..b72b8217c5
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-15-arm64-dts-rockchip-enable-earlycon.patch
@@ -0,0 +1,25 @@ 
+From 6a2021b2b1b12fd451fa64abdb5035e966869b14 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:39:55 +0200
+Subject: [PATCH 15/22] arm64: dts: rockchip: enable earlycon
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+index 06d48338c836..c1aad8f88b8a 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+@@ -19,6 +19,7 @@ / {
+ 	compatible = "pine64,pinebook-pro", "rockchip,rk3399";
+ 
+ 	chosen {
++		bootargs = "earlycon=uart8250,mmio32,0xff1a0000";
+ 		stdout-path = "serial2:1500000n8";
+ 	};
+ 
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-16-arm64-dts-rockchip-reserve-memory-for-ATF-rockchip-S.patch b/gnu/packages/patches/linux-libre-pinebook-pro-16-arm64-dts-rockchip-reserve-memory-for-ATF-rockchip-S.patch
new file mode 100644
index 0000000000..2e86c5d859
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-16-arm64-dts-rockchip-reserve-memory-for-ATF-rockchip-S.patch
@@ -0,0 +1,45 @@ 
+From 7ef823687e24b71de4280fcf4c4b32fc05c3be12 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:40:31 +0200
+Subject: [PATCH 16/22] arm64: dts: rockchip: reserve memory for ATF rockchip
+ SIP
+
+Definitely not for mainline
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+index c1aad8f88b8a..7595633d9a7f 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+@@ -23,6 +23,11 @@ chosen {
+ 		stdout-path = "serial2:1500000n8";
+ 	};
+ 
++	memory {
++		device_type = "memory";
++		reg = <0x0 0x00200000 0x0 0xf7e00000>;
++	};
++
+ 	backlight: edp-backlight {
+ 		compatible = "pwm-backlight";
+ 		power-supply = <&vcc_12v>;
+@@ -133,6 +138,12 @@ sdio_pwrseq: sdio-pwrseq {
+ 		reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+ 	};
+ 
++	/* first 128k(0xff8d0000~0xff8f0000) for ddr and ATF */
++	sram@ff8d0000 {
++		compatible = "mmio-sram";
++		reg = <0x0 0xff8d0000 0x0 0x20000>; /* 128k */
++	};
++
+ 	/* Audio components */
+ 	es8316-sound {
+ 		compatible = "simple-audio-card";
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-17-arm64-dts-rockchip-use-power-led-for-disk-activity-i.patch b/gnu/packages/patches/linux-libre-pinebook-pro-17-arm64-dts-rockchip-use-power-led-for-disk-activity-i.patch
new file mode 100644
index 0000000000..7c69053fde
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-17-arm64-dts-rockchip-use-power-led-for-disk-activity-i.patch
@@ -0,0 +1,28 @@ 
+From 31ceda56288f7679eeffc8fc892ab2c65c1e74b9 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:42:54 +0200
+Subject: [PATCH 17/22] arm64: dts: rockchip: use power led for disk-activity
+ indication
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+index 7595633d9a7f..667eeeb019de 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+@@ -110,7 +110,8 @@ green_led: led-0 {
+ 			default-state = "on";
+ 			function = LED_FUNCTION_POWER;
+ 			gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
+-			label = "green:power";
++			label = "green:disk-activity";
++			linux,default-trigger = "mmc2-inverted";
+ 		};
+ 
+ 		red_led: led-1 {
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-18-arm64-dts-rockchip-add-typec-extcon-hack.patch b/gnu/packages/patches/linux-libre-pinebook-pro-18-arm64-dts-rockchip-add-typec-extcon-hack.patch
new file mode 100644
index 0000000000..9f6f080a5b
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-18-arm64-dts-rockchip-add-typec-extcon-hack.patch
@@ -0,0 +1,45 @@ 
+From f39335d0fecd2a0994a5b9572064ec78d2bd746c Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:44:15 +0200
+Subject: [PATCH 18/22] arm64: dts: rockchip: add typec extcon hack
+
+Not for mainline
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+index 667eeeb019de..7c5bca24481c 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+@@ -394,6 +394,7 @@ mains_charger: dc-charger {
+ 
+ &cdn_dp {
+ 	status = "okay";
++	extcon = <&fusb0>;
+ };
+ 
+ &cpu_b0 {
+@@ -728,6 +729,9 @@ connector {
+ 				<PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>;
+ 			try-power-role = "sink";
+ 
++			extcon-cables = <1 2 5 6 9 10 12 44>;
++			typec-altmodes = <0xff01 1 0x001c0000 1>;
++
+ 			ports {
+ 				#address-cells = <1>;
+ 				#size-cells = <0>;
+@@ -995,6 +999,7 @@ spiflash: flash@0 {
+ };
+ 
+ &tcphy0 {
++	extcon = <&fusb0>;
+ 	status = "okay";
+ };
+ 
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-19-arm64-dts-rockchip-add-rockchip-suspend-node.patch b/gnu/packages/patches/linux-libre-pinebook-pro-19-arm64-dts-rockchip-add-rockchip-suspend-node.patch
new file mode 100644
index 0000000000..1bec58402e
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-19-arm64-dts-rockchip-add-rockchip-suspend-node.patch
@@ -0,0 +1,49 @@ 
+From 3cb1a4675a9d516906028371baa01ee8b504cebe Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 14:44:40 +0200
+Subject: [PATCH 19/22] arm64: dts: rockchip: add rockchip-suspend node
+
+No mainline
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ .../boot/dts/rockchip/rk3399-pinebook-pro.dts | 23 +++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+index 7c5bca24481c..36f66cbee142 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+@@ -947,6 +947,29 @@ &pwm2 {
+ 	status = "okay";
+ };
+ 
++&rockchip_suspend {
++	status = "okay";
++	rockchip,sleep-debug-en = <1>;
++	rockchip,sleep-mode-config = <
++		(0
++		| RKPM_SLP_ARMPD
++		| RKPM_SLP_PERILPPD
++		| RKPM_SLP_DDR_RET
++		| RKPM_SLP_PLLPD
++		| RKPM_SLP_CENTER_PD
++		| RKPM_SLP_AP_PWROFF
++		)
++	>;
++	rockchip,pwm-regulator-config = <
++		(0
++		| PWM2_REGULATOR_EN
++		)
++	>;
++	rockchip,power-ctrl =
++		<&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>,
++		<&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>;
++};
++
+ &saradc {
+ 	vref-supply = <&vcca1v8_s3>;
+ 	status = "okay";
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-20-arm64-configs-add-defconfig-for-Pinebook-Pro.patch b/gnu/packages/patches/linux-libre-pinebook-pro-20-arm64-configs-add-defconfig-for-Pinebook-Pro.patch
new file mode 100644
index 0000000000..8e84655144
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-20-arm64-configs-add-defconfig-for-Pinebook-Pro.patch
@@ -0,0 +1,3016 @@ 
+From dbfbe37af60500660395b1ca29899ff52d045fe2 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Thu, 28 May 2020 15:20:15 +0200
+Subject: [PATCH 20/22] arm64: configs: add defconfig for Pinebook Pro
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+
+arm64: configs: Update Pinbook Pro defconfig to v5.8-rc1
+---
+ arch/arm64/configs/pinebook_pro_defconfig | 2994 +++++++++++++++++++++
+ 1 file changed, 2994 insertions(+)
+ create mode 100644 arch/arm64/configs/pinebook_pro_defconfig
+
+diff --git a/arch/arm64/configs/pinebook_pro_defconfig b/arch/arm64/configs/pinebook_pro_defconfig
+new file mode 100644
+index 000000000000..2977cea49142
+--- /dev/null
++++ b/arch/arm64/configs/pinebook_pro_defconfig
+@@ -0,0 +1,2994 @@
++CONFIG_LOCALVERSION="-MANJARO-ARM"
++# CONFIG_LOCALVERSION_AUTO is not set
++CONFIG_SYSVIPC=y
++CONFIG_POSIX_MQUEUE=y
++CONFIG_GENERIC_IRQ_DEBUGFS=y
++CONFIG_NO_HZ=y
++CONFIG_HIGH_RES_TIMERS=y
++CONFIG_PREEMPT_VOLUNTARY=y
++CONFIG_IRQ_TIME_ACCOUNTING=y
++CONFIG_BSD_PROCESS_ACCT=y
++CONFIG_BSD_PROCESS_ACCT_V3=y
++CONFIG_TASK_XACCT=y
++CONFIG_TASK_IO_ACCOUNTING=y
++CONFIG_IKCONFIG=y
++CONFIG_IKCONFIG_PROC=y
++CONFIG_LOG_BUF_SHIFT=23
++CONFIG_LOG_CPU_MAX_BUF_SHIFT=14
++CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=15
++CONFIG_MEMCG=y
++CONFIG_BLK_CGROUP=y
++CONFIG_CFS_BANDWIDTH=y
++CONFIG_CGROUP_PIDS=y
++CONFIG_CGROUP_RDMA=y
++CONFIG_CGROUP_FREEZER=y
++CONFIG_CGROUP_HUGETLB=y
++CONFIG_CPUSETS=y
++CONFIG_CGROUP_DEVICE=y
++CONFIG_CGROUP_CPUACCT=y
++CONFIG_CGROUP_PERF=y
++CONFIG_CGROUP_BPF=y
++CONFIG_NAMESPACES=y
++CONFIG_USER_NS=y
++CONFIG_CHECKPOINT_RESTORE=y
++CONFIG_SCHED_AUTOGROUP=y
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_EXPERT=y
++CONFIG_KALLSYMS_ALL=y
++CONFIG_BPF_SYSCALL=y
++# CONFIG_COMPAT_BRK is not set
++CONFIG_SLAB_FREELIST_RANDOM=y
++CONFIG_PROFILING=y
++CONFIG_ARCH_ROCKCHIP=y
++CONFIG_ARM64_VA_BITS_48=y
++CONFIG_SCHED_MC=y
++CONFIG_SCHED_SMT=y
++CONFIG_NR_CPUS=8
++CONFIG_HZ_100=y
++CONFIG_SECCOMP=y
++CONFIG_PARAVIRT_TIME_ACCOUNTING=y
++CONFIG_KEXEC=y
++CONFIG_KEXEC_FILE=y
++CONFIG_COMPAT=y
++# CONFIG_ARM64_PTR_AUTH is not set
++CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y
++CONFIG_CMDLINE="console=ttyAMA0"
++CONFIG_HIBERNATION=y
++CONFIG_PM_DEBUG=y
++CONFIG_PM_TEST_SUSPEND=y
++CONFIG_ENERGY_MODEL=y
++CONFIG_CPU_IDLE_GOV_LADDER=y
++CONFIG_ARM_CPUIDLE=y
++CONFIG_CPU_FREQ=y
++CONFIG_CPU_FREQ_STAT=y
++CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
++CONFIG_CPU_FREQ_GOV_POWERSAVE=y
++CONFIG_CPU_FREQ_GOV_USERSPACE=y
++CONFIG_CPU_FREQ_GOV_ONDEMAND=y
++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
++CONFIG_CPUFREQ_DT=y
++CONFIG_ACPI_CPPC_CPUFREQ=y
++CONFIG_ARM_SCPI_CPUFREQ=y
++CONFIG_ARM_SCPI_PROTOCOL=y
++CONFIG_DMI_SYSFS=y
++CONFIG_ROCKCHIP_SIP=y
++CONFIG_EFI_VARS=y
++CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
++# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set
++CONFIG_EFI_BOOTLOADER_CONTROL=y
++CONFIG_ACPI=y
++CONFIG_ACPI_EC_DEBUGFS=y
++CONFIG_ACPI_DOCK=y
++CONFIG_ACPI_IPMI=m
++CONFIG_ACPI_PCI_SLOT=y
++CONFIG_ACPI_HED=y
++CONFIG_ACPI_CUSTOM_METHOD=y
++CONFIG_PMIC_OPREGION=y
++CONFIG_ACPI_CONFIGFS=m
++CONFIG_VIRTUALIZATION=y
++CONFIG_KVM=y
++CONFIG_CRYPTO_SHA1_ARM64_CE=y
++CONFIG_CRYPTO_SHA2_ARM64_CE=y
++CONFIG_CRYPTO_SHA512_ARM64_CE=y
++CONFIG_CRYPTO_SHA3_ARM64=y
++CONFIG_CRYPTO_SM3_ARM64_CE=y
++CONFIG_CRYPTO_SM4_ARM64_CE=y
++CONFIG_CRYPTO_GHASH_ARM64_CE=y
++CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=y
++CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
++CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
++CONFIG_CRYPTO_CHACHA20_NEON=y
++CONFIG_CRYPTO_NHPOLY1305_NEON=y
++CONFIG_CRYPTO_AES_ARM64_BS=y
++CONFIG_JUMP_LABEL=y
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++CONFIG_MODULE_COMPRESS=y
++CONFIG_UNUSED_SYMBOLS=y
++CONFIG_BLK_DEV_ZONED=y
++CONFIG_BLK_DEV_THROTTLING=y
++CONFIG_BLK_CMDLINE_PARSER=y
++CONFIG_BLK_WBT=y
++CONFIG_BLK_SED_OPAL=y
++CONFIG_PARTITION_ADVANCED=y
++CONFIG_AIX_PARTITION=y
++CONFIG_OSF_PARTITION=y
++CONFIG_AMIGA_PARTITION=y
++CONFIG_MAC_PARTITION=y
++CONFIG_BSD_DISKLABEL=y
++CONFIG_MINIX_SUBPARTITION=y
++CONFIG_SOLARIS_X86_PARTITION=y
++CONFIG_UNIXWARE_DISKLABEL=y
++CONFIG_LDM_PARTITION=y
++CONFIG_SGI_PARTITION=y
++CONFIG_SUN_PARTITION=y
++CONFIG_KARMA_PARTITION=y
++CONFIG_IOSCHED_BFQ=y
++CONFIG_BFQ_GROUP_IOSCHED=y
++CONFIG_BINFMT_MISC=y
++CONFIG_KSM=y
++CONFIG_CLEANCACHE=y
++CONFIG_FRONTSWAP=y
++CONFIG_CMA=y
++CONFIG_CMA_DEBUGFS=y
++CONFIG_ZSWAP=y
++CONFIG_Z3FOLD=y
++CONFIG_ZSMALLOC=y
++CONFIG_NET=y
++CONFIG_PACKET=y
++CONFIG_PACKET_DIAG=m
++CONFIG_UNIX=y
++CONFIG_UNIX_DIAG=m
++CONFIG_TLS=m
++CONFIG_XFRM_USER=y
++CONFIG_XFRM_SUB_POLICY=y
++CONFIG_XFRM_STATISTICS=y
++CONFIG_NET_KEY=m
++CONFIG_NET_KEY_MIGRATE=y
++CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++CONFIG_IP_ADVANCED_ROUTER=y
++CONFIG_IP_FIB_TRIE_STATS=y
++CONFIG_IP_MULTIPLE_TABLES=y
++CONFIG_IP_ROUTE_MULTIPATH=y
++CONFIG_IP_ROUTE_VERBOSE=y
++CONFIG_NET_IPIP=m
++CONFIG_NET_IPGRE_DEMUX=m
++CONFIG_NET_IPGRE=m
++CONFIG_NET_IPGRE_BROADCAST=y
++CONFIG_IP_MROUTE=y
++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
++CONFIG_IP_PIMSM_V1=y
++CONFIG_IP_PIMSM_V2=y
++CONFIG_NET_IPVTI=m
++CONFIG_NET_FOU_IP_TUNNELS=y
++CONFIG_INET_AH=m
++CONFIG_INET_ESP=m
++CONFIG_INET_IPCOMP=m
++CONFIG_INET_DIAG=m
++CONFIG_INET_UDP_DIAG=m
++CONFIG_INET_RAW_DIAG=m
++CONFIG_TCP_CONG_ADVANCED=y
++CONFIG_TCP_CONG_HSTCP=m
++CONFIG_TCP_CONG_HYBLA=m
++CONFIG_TCP_CONG_NV=m
++CONFIG_TCP_CONG_SCALABLE=m
++CONFIG_TCP_CONG_LP=m
++CONFIG_TCP_CONG_VENO=m
++CONFIG_TCP_CONG_YEAH=m
++CONFIG_TCP_CONG_ILLINOIS=m
++CONFIG_TCP_CONG_DCTCP=m
++CONFIG_TCP_CONG_CDG=m
++CONFIG_TCP_CONG_BBR=m
++CONFIG_TCP_MD5SIG=y
++CONFIG_IPV6_ROUTER_PREF=y
++CONFIG_IPV6_ROUTE_INFO=y
++CONFIG_IPV6_OPTIMISTIC_DAD=y
++CONFIG_INET6_AH=m
++CONFIG_INET6_ESP=m
++CONFIG_INET6_IPCOMP=m
++CONFIG_IPV6_MIP6=y
++CONFIG_IPV6_ILA=m
++CONFIG_IPV6_VTI=m
++CONFIG_IPV6_SIT=m
++CONFIG_IPV6_SIT_6RD=y
++CONFIG_IPV6_GRE=m
++CONFIG_IPV6_SUBTREES=y
++CONFIG_IPV6_MROUTE=y
++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
++CONFIG_IPV6_PIMSM_V2=y
++CONFIG_IPV6_SEG6_LWTUNNEL=y
++CONFIG_IPV6_SEG6_HMAC=y
++CONFIG_NETLABEL=y
++CONFIG_NETFILTER=y
++CONFIG_NF_CONNTRACK=m
++CONFIG_NF_LOG_NETDEV=m
++CONFIG_NF_CONNTRACK_ZONES=y
++CONFIG_NF_CONNTRACK_EVENTS=y
++CONFIG_NF_CONNTRACK_TIMEOUT=y
++CONFIG_NF_CONNTRACK_TIMESTAMP=y
++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_NF_CT_NETLINK_TIMEOUT=m
++CONFIG_NF_CT_NETLINK_HELPER=m
++CONFIG_NETFILTER_NETLINK_GLUE_CT=y
++CONFIG_NF_TABLES=m
++CONFIG_NF_TABLES_INET=y
++CONFIG_NF_TABLES_NETDEV=y
++CONFIG_NFT_NUMGEN=m
++CONFIG_NFT_CT=m
++CONFIG_NFT_FLOW_OFFLOAD=m
++CONFIG_NFT_COUNTER=m
++CONFIG_NFT_CONNLIMIT=m
++CONFIG_NFT_LOG=m
++CONFIG_NFT_LIMIT=m
++CONFIG_NFT_MASQ=m
++CONFIG_NFT_REDIR=m
++CONFIG_NFT_NAT=m
++CONFIG_NFT_TUNNEL=m
++CONFIG_NFT_OBJREF=m
++CONFIG_NFT_QUEUE=m
++CONFIG_NFT_QUOTA=m
++CONFIG_NFT_REJECT=m
++CONFIG_NFT_COMPAT=m
++CONFIG_NFT_HASH=m
++CONFIG_NFT_FIB_INET=m
++CONFIG_NFT_XFRM=m
++CONFIG_NFT_SOCKET=m
++CONFIG_NFT_OSF=m
++CONFIG_NFT_TPROXY=m
++CONFIG_NFT_DUP_NETDEV=m
++CONFIG_NFT_FWD_NETDEV=m
++CONFIG_NFT_FIB_NETDEV=m
++CONFIG_NF_FLOW_TABLE_INET=m
++CONFIG_NF_FLOW_TABLE=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_CT=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_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_CGROUP=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_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_IPCOMP=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_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_IPMARK=m
++CONFIG_IP_SET_HASH_IPPORT=m
++CONFIG_IP_SET_HASH_IPPORTIP=m
++CONFIG_IP_SET_HASH_IPPORTNET=m
++CONFIG_IP_SET_HASH_IPMAC=m
++CONFIG_IP_SET_HASH_MAC=m
++CONFIG_IP_SET_HASH_NETPORTNET=m
++CONFIG_IP_SET_HASH_NET=m
++CONFIG_IP_SET_HASH_NETNET=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_IPV6=y
++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_FO=m
++CONFIG_IP_VS_OVF=m
++CONFIG_IP_VS_LBLC=m
++CONFIG_IP_VS_LBLCR=m
++CONFIG_IP_VS_DH=m
++CONFIG_IP_VS_SH=m
++CONFIG_IP_VS_MH=m
++CONFIG_IP_VS_SED=m
++CONFIG_IP_VS_NQ=m
++CONFIG_IP_VS_FTP=m
++CONFIG_IP_VS_PE_SIP=m
++CONFIG_NFT_DUP_IPV4=m
++CONFIG_NFT_FIB_IPV4=m
++CONFIG_NF_TABLES_ARP=y
++CONFIG_NF_FLOW_TABLE_IPV4=m
++CONFIG_NF_LOG_ARP=m
++CONFIG_NF_REJECT_IPV4=y
++CONFIG_IP_NF_IPTABLES=y
++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_TARGET_SYNPROXY=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_SECURITY=m
++CONFIG_IP_NF_ARPTABLES=m
++CONFIG_IP_NF_ARPFILTER=m
++CONFIG_IP_NF_ARP_MANGLE=m
++CONFIG_NFT_DUP_IPV6=m
++CONFIG_NFT_FIB_IPV6=m
++CONFIG_NF_FLOW_TABLE_IPV6=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_MATCH_SRH=m
++CONFIG_IP6_NF_TARGET_HL=m
++CONFIG_IP6_NF_FILTER=m
++CONFIG_IP6_NF_TARGET_REJECT=m
++CONFIG_IP6_NF_TARGET_SYNPROXY=m
++CONFIG_IP6_NF_MANGLE=m
++CONFIG_IP6_NF_RAW=m
++CONFIG_IP6_NF_SECURITY=m
++CONFIG_IP6_NF_NAT=m
++CONFIG_IP6_NF_TARGET_MASQUERADE=m
++CONFIG_IP6_NF_TARGET_NPT=m
++CONFIG_NF_TABLES_BRIDGE=m
++CONFIG_NFT_BRIDGE_REJECT=m
++CONFIG_NF_LOG_BRIDGE=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_BPFILTER=y
++CONFIG_IP_DCCP=m
++CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
++CONFIG_SCTP_COOKIE_HMAC_MD5=y
++CONFIG_RDS=m
++CONFIG_RDS_TCP=m
++CONFIG_TIPC=m
++CONFIG_ATM=m
++CONFIG_ATM_CLIP=m
++CONFIG_ATM_LANE=m
++CONFIG_ATM_BR2684=m
++CONFIG_L2TP=m
++CONFIG_L2TP_DEBUGFS=m
++CONFIG_L2TP_V3=y
++CONFIG_L2TP_IP=m
++CONFIG_L2TP_ETH=m
++CONFIG_BRIDGE=m
++CONFIG_BRIDGE_VLAN_FILTERING=y
++CONFIG_NET_DSA=m
++CONFIG_VLAN_8021Q=m
++CONFIG_VLAN_8021Q_GVRP=y
++CONFIG_VLAN_8021Q_MVRP=y
++CONFIG_ATALK=m
++CONFIG_DEV_APPLETALK=m
++CONFIG_IPDDP=m
++CONFIG_IPDDP_ENCAP=y
++CONFIG_6LOWPAN=m
++CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m
++CONFIG_6LOWPAN_GHC_UDP=m
++CONFIG_6LOWPAN_GHC_ICMPV6=m
++CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m
++CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m
++CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=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_ATM=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_CBS=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=y
++CONFIG_NET_SCH_FQ=m
++CONFIG_NET_SCH_HHF=m
++CONFIG_NET_SCH_PIE=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_PERF=y
++CONFIG_CLS_U32_MARK=y
++CONFIG_NET_CLS_RSVP=m
++CONFIG_NET_CLS_RSVP6=m
++CONFIG_NET_CLS_FLOW=m
++CONFIG_NET_CLS_CGROUP=y
++CONFIG_NET_CLS_BPF=m
++CONFIG_NET_CLS_FLOWER=m
++CONFIG_NET_CLS_MATCHALL=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_CANID=m
++CONFIG_NET_EMATCH_IPSET=m
++CONFIG_NET_EMATCH_IPT=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_SAMPLE=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_NET_ACT_VLAN=m
++CONFIG_NET_ACT_BPF=m
++CONFIG_NET_ACT_CONNMARK=m
++CONFIG_NET_ACT_SKBMOD=m
++CONFIG_NET_ACT_IFE=m
++CONFIG_NET_ACT_TUNNEL_KEY=m
++CONFIG_NET_IFE_SKBMARK=m
++CONFIG_NET_IFE_SKBPRIO=m
++CONFIG_NET_IFE_SKBTCINDEX=m
++CONFIG_DCB=y
++CONFIG_BATMAN_ADV=m
++# CONFIG_BATMAN_ADV_BATMAN_V is not set
++CONFIG_BATMAN_ADV_NC=y
++CONFIG_BATMAN_ADV_DEBUGFS=y
++CONFIG_OPENVSWITCH=m
++CONFIG_VSOCKETS=m
++CONFIG_VIRTIO_VSOCKETS=m
++CONFIG_NETLINK_DIAG=m
++CONFIG_MPLS_ROUTING=m
++CONFIG_CGROUP_NET_PRIO=y
++CONFIG_BPF_JIT=y
++CONFIG_BPF_STREAM_PARSER=y
++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_VXCAN=m
++CONFIG_CAN_SLCAN=m
++CONFIG_CAN_C_CAN=m
++CONFIG_CAN_C_CAN_PLATFORM=m
++CONFIG_CAN_C_CAN_PCI=m
++CONFIG_CAN_CC770=m
++CONFIG_CAN_CC770_PLATFORM=m
++CONFIG_CAN_M_CAN=m
++CONFIG_CAN_SJA1000=m
++CONFIG_CAN_EMS_PCI=m
++CONFIG_CAN_KVASER_PCI=m
++CONFIG_CAN_PEAK_PCI=m
++CONFIG_CAN_PLX_PCI=m
++CONFIG_CAN_SJA1000_PLATFORM=m
++CONFIG_CAN_SOFTING=m
++CONFIG_CAN_8DEV_USB=m
++CONFIG_CAN_EMS_USB=m
++CONFIG_CAN_ESD_USB2=m
++CONFIG_CAN_GS_USB=m
++CONFIG_CAN_KVASER_USB=m
++CONFIG_CAN_PEAK_USB=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_HCIBTSDIO=m
++CONFIG_BT_HCIUART=m
++CONFIG_BT_HCIUART_BCSP=y
++CONFIG_BT_HCIUART_ATH3K=y
++CONFIG_BT_HCIUART_LL=y
++CONFIG_BT_HCIUART_3WIRE=y
++CONFIG_BT_HCIUART_INTEL=y
++CONFIG_BT_HCIUART_BCM=y
++CONFIG_BT_HCIUART_QCA=y
++CONFIG_BT_HCIUART_MRVL=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_CFG80211=m
++CONFIG_CFG80211_CERTIFICATION_ONUS=y
++# CONFIG_CFG80211_REQUIRE_SIGNED_REGDB is not set
++CONFIG_CFG80211_DEBUGFS=y
++CONFIG_MAC80211=m
++CONFIG_MAC80211_MESH=y
++CONFIG_RFKILL=m
++CONFIG_RFKILL_INPUT=y
++CONFIG_RFKILL_GPIO=m
++CONFIG_NET_9P=m
++CONFIG_NET_9P_VIRTIO=m
++CONFIG_NFC=m
++CONFIG_NFC_DIGITAL=m
++CONFIG_NFC_NCI=m
++CONFIG_NFC_HCI=m
++CONFIG_NFC_SHDLC=y
++CONFIG_NFC_SIM=m
++CONFIG_NFC_PORT100=m
++CONFIG_NFC_PN544_I2C=m
++CONFIG_NFC_MICROREAD_I2C=m
++CONFIG_NFC_MRVL_USB=m
++CONFIG_NFC_ST21NFCA_I2C=m
++CONFIG_PCI=y
++CONFIG_PCIEPORTBUS=y
++CONFIG_HOTPLUG_PCI_PCIE=y
++CONFIG_PCIEAER=y
++CONFIG_PCIEAER_INJECT=m
++CONFIG_PCIE_ECRC=y
++CONFIG_PCI_STUB=y
++CONFIG_PCI_IOV=y
++CONFIG_PCI_PRI=y
++CONFIG_PCI_PASID=y
++CONFIG_HOTPLUG_PCI=y
++CONFIG_HOTPLUG_PCI_ACPI=y
++CONFIG_PCI_HOST_GENERIC=y
++CONFIG_PCI_XGENE=y
++CONFIG_PCIE_ROCKCHIP_HOST=y
++CONFIG_PCIE_DW_PLAT_HOST=y
++CONFIG_PCI_HISI=y
++CONFIG_DEVTMPFS=y
++CONFIG_DEVTMPFS_MOUNT=y
++CONFIG_DEBUG_DEVRES=y
++CONFIG_SIMPLE_PM_BUS=y
++CONFIG_VEXPRESS_CONFIG=y
++CONFIG_CONNECTOR=y
++CONFIG_MTD=y
++CONFIG_MTD_OF_PARTS=m
++CONFIG_MTD_BLOCK=m
++CONFIG_MTD_CFI=m
++CONFIG_MTD_CFI_INTELEXT=m
++CONFIG_MTD_CFI_AMDSTD=m
++CONFIG_MTD_CFI_STAA=m
++CONFIG_MTD_PHYSMAP=m
++CONFIG_MTD_PHYSMAP_OF=y
++CONFIG_MTD_RAW_NAND=y
++CONFIG_MTD_SPI_NOR=y
++CONFIG_MTD_UBI=m
++CONFIG_BLK_DEV_NULL_BLK=m
++CONFIG_ZRAM=m
++CONFIG_BLK_DEV_UMEM=m
++CONFIG_BLK_DEV_LOOP=m
++CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
++CONFIG_BLK_DEV_DRBD=m
++CONFIG_BLK_DEV_NBD=m
++CONFIG_BLK_DEV_SKD=m
++CONFIG_BLK_DEV_SX8=m
++CONFIG_BLK_DEV_RAM=m
++CONFIG_BLK_DEV_RAM_SIZE=16384
++CONFIG_CDROM_PKTCDVD=m
++CONFIG_ATA_OVER_ETH=m
++CONFIG_VIRTIO_BLK=m
++CONFIG_BLK_DEV_RBD=m
++CONFIG_BLK_DEV_NVME=m
++CONFIG_NVME_MULTIPATH=y
++CONFIG_TIFM_7XX1=m
++CONFIG_ENCLOSURE_SERVICES=m
++CONFIG_APDS9802ALS=m
++CONFIG_ISL29003=m
++CONFIG_ISL29020=m
++CONFIG_SENSORS_TSL2550=m
++CONFIG_SENSORS_BH1770=m
++CONFIG_SENSORS_APDS990X=m
++CONFIG_SRAM=y
++CONFIG_EEPROM_AT24=m
++CONFIG_EEPROM_LEGACY=m
++CONFIG_EEPROM_MAX6875=m
++CONFIG_SENSORS_LIS3_I2C=m
++CONFIG_ECHO=m
++CONFIG_RAID_ATTRS=m
++CONFIG_BLK_DEV_SD=y
++CONFIG_CHR_DEV_ST=m
++CONFIG_BLK_DEV_SR=y
++CONFIG_CHR_DEV_SG=y
++CONFIG_CHR_DEV_SCH=m
++CONFIG_SCSI_ENCLOSURE=m
++CONFIG_SCSI_CONSTANTS=y
++CONFIG_SCSI_LOGGING=y
++CONFIG_SCSI_SCAN_ASYNC=y
++CONFIG_SCSI_FC_ATTRS=m
++CONFIG_SCSI_SAS_ATA=y
++CONFIG_SCSI_SRP_ATTRS=m
++CONFIG_ISCSI_TCP=m
++CONFIG_SCSI_BNX2_ISCSI=m
++CONFIG_SCSI_BNX2X_FCOE=m
++CONFIG_BE2ISCSI=m
++CONFIG_SCSI_HPSA=m
++CONFIG_SCSI_MVSAS=m
++# CONFIG_SCSI_MVSAS_DEBUG is not set
++CONFIG_SCSI_MVSAS_TASKLET=y
++CONFIG_SCSI_MVUMI=m
++CONFIG_SCSI_ARCMSR=m
++CONFIG_SCSI_ESAS2R=m
++CONFIG_MEGARAID_NEWGEN=y
++CONFIG_MEGARAID_MM=m
++CONFIG_MEGARAID_MAILBOX=m
++CONFIG_MEGARAID_LEGACY=m
++CONFIG_MEGARAID_SAS=m
++CONFIG_SCSI_UFSHCD=y
++CONFIG_SCSI_UFSHCD_PCI=m
++CONFIG_SCSI_UFSHCD_PLATFORM=y
++CONFIG_SCSI_HPTIOP=m
++CONFIG_LIBFC=m
++CONFIG_LIBFCOE=m
++CONFIG_FCOE=m
++CONFIG_SCSI_SNIC=m
++CONFIG_SCSI_DMX3191D=m
++CONFIG_SCSI_INITIO=m
++CONFIG_SCSI_INIA100=m
++CONFIG_SCSI_STEX=m
++CONFIG_SCSI_SYM53C8XX_2=m
++CONFIG_SCSI_IPR=m
++CONFIG_SCSI_QLOGIC_1280=m
++CONFIG_SCSI_QLA_FC=m
++CONFIG_TCM_QLA2XXX=m
++CONFIG_SCSI_QLA_ISCSI=m
++CONFIG_SCSI_DC395x=m
++CONFIG_SCSI_AM53C974=m
++CONFIG_SCSI_WD719X=m
++CONFIG_SCSI_DEBUG=m
++CONFIG_SCSI_PMCRAID=m
++CONFIG_SCSI_VIRTIO=y
++CONFIG_SCSI_CHELSIO_FCOE=m
++CONFIG_SCSI_DH=y
++CONFIG_SCSI_DH_RDAC=m
++CONFIG_SCSI_DH_HP_SW=m
++CONFIG_SCSI_DH_EMC=m
++CONFIG_SCSI_DH_ALUA=m
++CONFIG_ATA=y
++CONFIG_SATA_AHCI=y
++CONFIG_SATA_AHCI_PLATFORM=y
++CONFIG_AHCI_XGENE=y
++CONFIG_SATA_INIC162X=m
++CONFIG_SATA_ACARD_AHCI=m
++CONFIG_SATA_SIL24=y
++CONFIG_PDC_ADMA=m
++CONFIG_SATA_QSTOR=m
++CONFIG_SATA_SX4=m
++CONFIG_ATA_PIIX=y
++CONFIG_SATA_MV=m
++CONFIG_SATA_NV=m
++CONFIG_SATA_PROMISE=m
++CONFIG_SATA_SIL=m
++CONFIG_SATA_SIS=m
++CONFIG_SATA_SVW=m
++CONFIG_SATA_ULI=m
++CONFIG_SATA_VIA=m
++CONFIG_SATA_VITESSE=m
++CONFIG_PATA_ALI=m
++CONFIG_PATA_AMD=m
++CONFIG_PATA_ARTOP=m
++CONFIG_PATA_ATIIXP=m
++CONFIG_PATA_ATP867X=m
++CONFIG_PATA_CMD64X=m
++CONFIG_PATA_CYPRESS=m
++CONFIG_PATA_EFAR=m
++CONFIG_PATA_HPT366=m
++CONFIG_PATA_HPT37X=m
++CONFIG_PATA_HPT3X2N=m
++CONFIG_PATA_HPT3X3=m
++CONFIG_PATA_IT8213=m
++CONFIG_PATA_IT821X=m
++CONFIG_PATA_JMICRON=m
++CONFIG_PATA_MARVELL=m
++CONFIG_PATA_NETCELL=m
++CONFIG_PATA_NINJA32=m
++CONFIG_PATA_NS87415=m
++CONFIG_PATA_OLDPIIX=m
++CONFIG_PATA_OPTIDMA=m
++CONFIG_PATA_PDC2027X=m
++CONFIG_PATA_PDC_OLD=m
++CONFIG_PATA_RDC=m
++CONFIG_PATA_SCH=m
++CONFIG_PATA_SERVERWORKS=m
++CONFIG_PATA_SIL680=m
++CONFIG_PATA_TOSHIBA=m
++CONFIG_PATA_TRIFLEX=m
++CONFIG_PATA_VIA=m
++CONFIG_PATA_WINBOND=m
++CONFIG_PATA_CMD640_PCI=m
++CONFIG_PATA_MPIIX=m
++CONFIG_PATA_NS87410=m
++CONFIG_PATA_OPTI=m
++CONFIG_PATA_PLATFORM=y
++CONFIG_PATA_OF_PLATFORM=y
++CONFIG_ATA_GENERIC=m
++CONFIG_MD=y
++CONFIG_BLK_DEV_MD=y
++CONFIG_MD_LINEAR=m
++CONFIG_MD_MULTIPATH=m
++CONFIG_MD_FAULTY=m
++CONFIG_MD_CLUSTER=m
++CONFIG_BCACHE=m
++CONFIG_BLK_DEV_DM=y
++CONFIG_DM_DEBUG=y
++CONFIG_DM_CRYPT=m
++CONFIG_DM_SNAPSHOT=y
++CONFIG_DM_THIN_PROVISIONING=m
++CONFIG_DM_CACHE=m
++CONFIG_DM_WRITECACHE=m
++CONFIG_DM_MIRROR=y
++CONFIG_DM_LOG_USERSPACE=m
++CONFIG_DM_RAID=m
++CONFIG_DM_ZERO=y
++CONFIG_DM_MULTIPATH=m
++CONFIG_DM_MULTIPATH_QL=m
++CONFIG_DM_MULTIPATH_ST=m
++CONFIG_DM_DELAY=m
++CONFIG_DM_DUST=m
++CONFIG_DM_INIT=y
++CONFIG_DM_UEVENT=y
++CONFIG_DM_FLAKEY=m
++CONFIG_DM_VERITY=m
++CONFIG_DM_VERITY_FEC=y
++CONFIG_DM_SWITCH=m
++CONFIG_DM_LOG_WRITES=m
++CONFIG_DM_INTEGRITY=m
++CONFIG_DM_ZONED=m
++CONFIG_TARGET_CORE=m
++CONFIG_TCM_IBLOCK=m
++CONFIG_TCM_FILEIO=m
++CONFIG_TCM_PSCSI=m
++CONFIG_TCM_USER2=m
++CONFIG_LOOPBACK_TARGET=m
++CONFIG_TCM_FC=m
++CONFIG_ISCSI_TARGET=m
++CONFIG_FIREWIRE_NOSY=m
++CONFIG_BONDING=m
++CONFIG_DUMMY=m
++CONFIG_WIREGUARD=m
++CONFIG_EQUALIZER=m
++CONFIG_NET_FC=y
++CONFIG_IFB=m
++CONFIG_NET_TEAM=m
++CONFIG_NET_TEAM_MODE_BROADCAST=m
++CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
++CONFIG_NET_TEAM_MODE_RANDOM=m
++CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
++CONFIG_NET_TEAM_MODE_LOADBALANCE=m
++CONFIG_MACVLAN=m
++CONFIG_MACVTAP=m
++CONFIG_IPVLAN=m
++CONFIG_IPVTAP=m
++CONFIG_VXLAN=m
++CONFIG_GENEVE=m
++CONFIG_NETCONSOLE=m
++CONFIG_NETCONSOLE_DYNAMIC=y
++CONFIG_TUN=m
++CONFIG_VETH=m
++CONFIG_VIRTIO_NET=m
++CONFIG_NLMON=m
++CONFIG_NET_VRF=m
++# CONFIG_ATM_DRIVERS is not set
++CONFIG_NET_DSA_BCM_SF2=m
++CONFIG_NET_DSA_MV88E6060=m
++CONFIG_NET_DSA_MV88E6XXX=m
++CONFIG_NET_DSA_MV88E6XXX_PTP=y
++CONFIG_NET_DSA_QCA8K=m
++# CONFIG_NET_VENDOR_3COM is not set
++# CONFIG_NET_VENDOR_ADAPTEC is not set
++CONFIG_ET131X=m
++CONFIG_ACENIC=m
++CONFIG_ALTERA_TSE=m
++CONFIG_AMD8111_ETH=m
++CONFIG_PCNET32=m
++CONFIG_AMD_XGBE=m
++CONFIG_AQTION=m
++CONFIG_ATL2=m
++CONFIG_ATL1=m
++CONFIG_ATL1E=m
++CONFIG_ATL1C=m
++CONFIG_ALX=m
++# CONFIG_NET_VENDOR_AURORA is not set
++CONFIG_B44=m
++CONFIG_BCMGENET=m
++CONFIG_TIGON3=m
++CONFIG_BNX2X=m
++# CONFIG_NET_VENDOR_BROCADE is not set
++CONFIG_MACB=m
++# CONFIG_NET_VENDOR_CAVIUM is not set
++# CONFIG_NET_VENDOR_CHELSIO is not set
++# CONFIG_NET_VENDOR_CISCO is not set
++CONFIG_DNET=m
++# CONFIG_NET_VENDOR_DEC is not set
++CONFIG_DL2K=m
++CONFIG_SUNDANCE=m
++# CONFIG_NET_VENDOR_EMULEX is not set
++# CONFIG_NET_VENDOR_EZCHIP is not set
++CONFIG_HIX5HD2_GMAC=m
++CONFIG_HIP04_ETH=m
++CONFIG_HNS_DSAF=m
++CONFIG_HNS_ENET=m
++# CONFIG_NET_VENDOR_I825XX is not set
++CONFIG_E100=m
++CONFIG_E1000=m
++CONFIG_E1000E=m
++CONFIG_IGB=m
++CONFIG_IGBVF=m
++CONFIG_IXGB=m
++CONFIG_IXGBE=m
++CONFIG_IXGBE_DCB=y
++CONFIG_IXGBEVF=m
++CONFIG_I40E=m
++CONFIG_I40EVF=m
++CONFIG_FM10K=m
++CONFIG_JME=m
++CONFIG_MVMDIO=m
++CONFIG_SKGE=m
++CONFIG_SKGE_GENESIS=y
++CONFIG_SKY2=m
++CONFIG_MLX4_EN=m
++CONFIG_KSZ884X_PCI=m
++CONFIG_MYRI10GE=m
++CONFIG_FEALNX=m
++CONFIG_NATSEMI=m
++CONFIG_NS83820=m
++CONFIG_NE2K_PCI=m
++CONFIG_FORCEDETH=m
++CONFIG_ETHOC=m
++CONFIG_HAMACHI=m
++CONFIG_YELLOWFIN=m
++# CONFIG_NET_VENDOR_QLOGIC is not set
++# CONFIG_NET_VENDOR_QUALCOMM is not set
++CONFIG_R6040=m
++CONFIG_8139CP=m
++CONFIG_8139TOO=m
++# CONFIG_8139TOO_PIO is not set
++CONFIG_8139TOO_8129=y
++CONFIG_R8169=m
++# CONFIG_NET_VENDOR_RENESAS is not set
++CONFIG_ROCKER=m
++# CONFIG_NET_VENDOR_SAMSUNG is not set
++# CONFIG_NET_VENDOR_SEEQ is not set
++CONFIG_SC92031=m
++CONFIG_SIS900=m
++CONFIG_SIS190=m
++CONFIG_SMC91X=m
++CONFIG_EPIC100=m
++CONFIG_SMSC911X=m
++CONFIG_SMSC9420=m
++CONFIG_STMMAC_ETH=m
++CONFIG_DWMAC_DWC_QOS_ETH=m
++# CONFIG_NET_VENDOR_SUN is not set
++CONFIG_TEHUTI=m
++CONFIG_VIA_RHINE=m
++CONFIG_VIA_RHINE_MMIO=y
++CONFIG_VIA_VELOCITY=m
++# CONFIG_NET_VENDOR_WIZNET is not set
++CONFIG_NET_SB1000=y
++CONFIG_MDIO_BITBANG=m
++CONFIG_MDIO_BUS_MUX_GPIO=m
++CONFIG_MDIO_BUS_MUX_MMIOREG=m
++CONFIG_PHYLIB=y
++CONFIG_LED_TRIGGER_PHY=y
++CONFIG_SFP=m
++CONFIG_AMD_PHY=m
++CONFIG_BCM87XX_PHY=m
++CONFIG_BROADCOM_PHY=m
++CONFIG_CICADA_PHY=m
++CONFIG_DAVICOM_PHY=m
++CONFIG_DP83848_PHY=m
++CONFIG_DP83867_PHY=m
++CONFIG_ICPLUS_PHY=m
++CONFIG_LSI_ET1011C_PHY=m
++CONFIG_LXT_PHY=m
++CONFIG_MARVELL_10G_PHY=m
++CONFIG_MICREL_PHY=m
++CONFIG_NATIONAL_PHY=m
++CONFIG_AT803X_PHY=m
++CONFIG_QSEMI_PHY=m
++CONFIG_ROCKCHIP_PHY=y
++CONFIG_STE10XP=m
++CONFIG_VITESSE_PHY=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_PPTP=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_LAN78XX=m
++CONFIG_USB_NET_CDC_EEM=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=m
++CONFIG_USB_NET_GL620A=m
++CONFIG_USB_NET_PLUSB=m
++CONFIG_USB_NET_MCS7830=m
++CONFIG_USB_ALI_M5632=y
++CONFIG_USB_AN2720=y
++CONFIG_USB_EPSON2888=y
++CONFIG_USB_KC2190=y
++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_USB_NET_CH9200=m
++CONFIG_ADM8211=m
++CONFIG_ATH5K=m
++CONFIG_ATH5K_DEBUG=y
++CONFIG_ATH9K=m
++CONFIG_ATH9K_AHB=y
++CONFIG_ATH9K_DEBUGFS=y
++CONFIG_ATH9K_HTC=m
++CONFIG_ATH9K_HWRNG=y
++CONFIG_ATH9K_COMMON_SPECTRAL=y
++CONFIG_CARL9170=m
++CONFIG_ATH6KL=m
++CONFIG_ATH6KL_SDIO=m
++CONFIG_ATH6KL_USB=m
++CONFIG_ATH6KL_DEBUG=y
++CONFIG_AR5523=m
++CONFIG_WIL6210=m
++CONFIG_ATH10K=m
++CONFIG_ATH10K_PCI=m
++CONFIG_ATH10K_DEBUGFS=y
++CONFIG_WCN36XX=m
++CONFIG_ATMEL=m
++CONFIG_PCI_ATMEL=m
++CONFIG_AT76C50X_USB=m
++CONFIG_B43=m
++CONFIG_B43_SDIO=y
++CONFIG_B43_DEBUG=y
++CONFIG_B43LEGACY=m
++CONFIG_BRCMSMAC=m
++CONFIG_BRCMFMAC=m
++CONFIG_BRCMFMAC_USB=y
++CONFIG_BRCMFMAC_PCIE=y
++CONFIG_BRCM_TRACING=y
++CONFIG_BRCMDBG=y
++CONFIG_IPW2100=m
++CONFIG_IPW2100_MONITOR=y
++CONFIG_IPW2200=m
++CONFIG_IPW2200_MONITOR=y
++CONFIG_IPW2200_PROMISCUOUS=y
++CONFIG_IPW2200_QOS=y
++CONFIG_IWL4965=m
++CONFIG_IWL3945=m
++CONFIG_IWLEGACY_DEBUG=y
++CONFIG_IWLEGACY_DEBUGFS=y
++CONFIG_IWLWIFI=m
++CONFIG_IWLDVM=m
++CONFIG_IWLMVM=m
++CONFIG_IWLWIFI_DEBUG=y
++CONFIG_IWLWIFI_DEBUGFS=y
++CONFIG_HOSTAP=m
++CONFIG_HOSTAP_FIRMWARE=y
++CONFIG_HOSTAP_PLX=m
++CONFIG_HOSTAP_PCI=m
++CONFIG_HERMES=m
++CONFIG_HERMES_PRISM=y
++CONFIG_PLX_HERMES=m
++CONFIG_TMD_HERMES=m
++CONFIG_NORTEL_HERMES=m
++CONFIG_PCI_HERMES=m
++CONFIG_ORINOCO_USB=m
++CONFIG_P54_COMMON=m
++CONFIG_P54_USB=m
++CONFIG_P54_PCI=m
++CONFIG_PRISM54=m
++CONFIG_LIBERTAS=m
++CONFIG_LIBERTAS_USB=m
++CONFIG_LIBERTAS_SDIO=m
++CONFIG_LIBERTAS_MESH=y
++CONFIG_LIBERTAS_THINFIRM=m
++CONFIG_LIBERTAS_THINFIRM_USB=m
++CONFIG_MWIFIEX=m
++CONFIG_MWIFIEX_SDIO=m
++CONFIG_MWIFIEX_PCIE=m
++CONFIG_MWIFIEX_USB=m
++CONFIG_MWL8K=m
++CONFIG_MT7601U=m
++CONFIG_RT2X00=m
++CONFIG_RT2400PCI=m
++CONFIG_RT2500PCI=m
++CONFIG_RT61PCI=m
++CONFIG_RT2800PCI=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_RT2X00_LIB_DEBUGFS=y
++CONFIG_RTL8180=m
++CONFIG_RTL8187=m
++CONFIG_RTL8192CE=m
++CONFIG_RTL8192SE=m
++CONFIG_RTL8192DE=m
++CONFIG_RTL8723AE=m
++CONFIG_RTL8723BE=m
++CONFIG_RTL8188EE=m
++CONFIG_RTL8192EE=m
++CONFIG_RTL8821AE=m
++CONFIG_RTL8192CU=m
++CONFIG_RTL8XXXU=m
++CONFIG_RSI_91X=m
++CONFIG_CW1200=m
++CONFIG_CW1200_WLAN_SDIO=m
++CONFIG_WL1251=m
++CONFIG_WL1251_SPI=m
++CONFIG_WL1251_SDIO=m
++CONFIG_WL12XX=m
++CONFIG_WL18XX=m
++CONFIG_WLCORE_SPI=m
++CONFIG_WLCORE_SDIO=m
++CONFIG_USB_ZD1201=m
++CONFIG_ZD1211RW=m
++CONFIG_QTNFMAC_PCIE=m
++CONFIG_MAC80211_HWSIM=m
++CONFIG_USB_NET_RNDIS_WLAN=m
++CONFIG_IEEE802154_FAKELB=m
++CONFIG_IEEE802154_ATUSB=m
++CONFIG_INPUT_SPARSEKMAP=m
++CONFIG_INPUT_MOUSEDEV=y
++CONFIG_INPUT_JOYDEV=m
++CONFIG_INPUT_EVDEV=y
++CONFIG_KEYBOARD_ADC=m
++CONFIG_KEYBOARD_GPIO=m
++CONFIG_KEYBOARD_GPIO_POLLED=m
++CONFIG_KEYBOARD_CROS_EC=y
++CONFIG_MOUSE_PS2_ELANTECH=y
++CONFIG_MOUSE_PS2_SENTELIC=y
++CONFIG_MOUSE_SERIAL=m
++CONFIG_MOUSE_APPLETOUCH=m
++CONFIG_MOUSE_BCM5974=m
++CONFIG_MOUSE_CYAPA=m
++CONFIG_MOUSE_ELAN_I2C=y
++CONFIG_MOUSE_ELAN_I2C_SMBUS=y
++CONFIG_MOUSE_VSXXXAA=m
++CONFIG_MOUSE_SYNAPTICS_I2C=m
++CONFIG_MOUSE_SYNAPTICS_USB=m
++CONFIG_INPUT_JOYSTICK=y
++CONFIG_JOYSTICK_IFORCE=m
++CONFIG_JOYSTICK_IFORCE_USB=m
++CONFIG_JOYSTICK_IFORCE_232=m
++CONFIG_JOYSTICK_WARRIOR=m
++CONFIG_JOYSTICK_MAGELLAN=m
++CONFIG_JOYSTICK_SPACEORB=m
++CONFIG_JOYSTICK_SPACEBALL=m
++CONFIG_JOYSTICK_STINGER=m
++CONFIG_JOYSTICK_TWIDJOY=m
++CONFIG_JOYSTICK_ZHENHUA=m
++CONFIG_JOYSTICK_XPAD=m
++CONFIG_JOYSTICK_XPAD_FF=y
++CONFIG_JOYSTICK_XPAD_LEDS=y
++CONFIG_INPUT_TABLET=y
++CONFIG_TABLET_USB_ACECAD=m
++CONFIG_TABLET_USB_AIPTEK=m
++CONFIG_TABLET_USB_GTCO=m
++CONFIG_TABLET_USB_HANWANG=m
++CONFIG_TABLET_USB_KBTAB=m
++CONFIG_TABLET_USB_PEGASUS=m
++CONFIG_TABLET_SERIAL_WACOM4=m
++CONFIG_INPUT_TOUCHSCREEN=y
++CONFIG_TOUCHSCREEN_ATMEL_MXT=y
++CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
++CONFIG_TOUCHSCREEN_DYNAPRO=m
++CONFIG_TOUCHSCREEN_EETI=m
++CONFIG_TOUCHSCREEN_EGALAX=m
++CONFIG_TOUCHSCREEN_FUJITSU=m
++CONFIG_TOUCHSCREEN_ILI210X=m
++CONFIG_TOUCHSCREEN_GUNZE=m
++CONFIG_TOUCHSCREEN_ELAN=m
++CONFIG_TOUCHSCREEN_ELO=m
++CONFIG_TOUCHSCREEN_WACOM_W8001=m
++CONFIG_TOUCHSCREEN_WACOM_I2C=m
++CONFIG_TOUCHSCREEN_MCS5000=m
++CONFIG_TOUCHSCREEN_MMS114=m
++CONFIG_TOUCHSCREEN_MTOUCH=m
++CONFIG_TOUCHSCREEN_INEXIO=m
++CONFIG_TOUCHSCREEN_MK712=m
++CONFIG_TOUCHSCREEN_PENMOUNT=m
++CONFIG_TOUCHSCREEN_EDT_FT5X06=m
++CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
++CONFIG_TOUCHSCREEN_TOUCHWIN=m
++CONFIG_TOUCHSCREEN_PIXCIR=m
++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
++CONFIG_TOUCHSCREEN_TOUCHIT213=m
++CONFIG_TOUCHSCREEN_TSC_SERIO=m
++CONFIG_TOUCHSCREEN_TSC2007=m
++CONFIG_TOUCHSCREEN_ST1232=m
++CONFIG_TOUCHSCREEN_ZFORCE=m
++CONFIG_INPUT_MISC=y
++CONFIG_INPUT_E3X0_BUTTON=m
++CONFIG_INPUT_MMA8450=m
++CONFIG_INPUT_ATI_REMOTE2=m
++CONFIG_INPUT_KEYSPAN_REMOTE=m
++CONFIG_INPUT_KXTJ9=m
++CONFIG_INPUT_POWERMATE=m
++CONFIG_INPUT_YEALINK=m
++CONFIG_INPUT_CM109=m
++CONFIG_INPUT_AXP20X_PEK=m
++CONFIG_INPUT_UINPUT=m
++CONFIG_INPUT_PWM_BEEPER=m
++CONFIG_INPUT_RK805_PWRKEY=m
++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
++CONFIG_INPUT_CMA3000=m
++CONFIG_INPUT_CMA3000_I2C=m
++CONFIG_SERIO_AMBAKMI=y
++CONFIG_SERIO_RAW=m
++CONFIG_SERIO_ALTERA_PS2=m
++CONFIG_SERIO_ARC_PS2=m
++# CONFIG_LEGACY_PTYS is not set
++CONFIG_SERIAL_8250=y
++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
++# CONFIG_SERIAL_8250_16550A_VARIANTS is not set
++CONFIG_SERIAL_8250_CONSOLE=y
++CONFIG_SERIAL_8250_NR_UARTS=32
++CONFIG_SERIAL_8250_EXTENDED=y
++CONFIG_SERIAL_8250_MANY_PORTS=y
++CONFIG_SERIAL_8250_SHARE_IRQ=y
++CONFIG_SERIAL_8250_RSA=y
++CONFIG_SERIAL_8250_DW=y
++CONFIG_SERIAL_OF_PLATFORM=y
++CONFIG_SERIAL_AMBA_PL011=y
++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
++CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y
++CONFIG_SERIAL_JSM=m
++CONFIG_SERIAL_ARC=m
++CONFIG_SERIAL_FSL_LPUART=y
++CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
++CONFIG_SERIAL_NONSTANDARD=y
++CONFIG_ROCKETPORT=m
++CONFIG_CYCLADES=m
++CONFIG_SYNCLINKMP=m
++CONFIG_SYNCLINK_GT=m
++CONFIG_N_HDLC=m
++CONFIG_N_GSM=m
++CONFIG_NOZOMI=m
++CONFIG_SERIAL_DEV_BUS=y
++CONFIG_VIRTIO_CONSOLE=y
++CONFIG_IPMI_HANDLER=y
++CONFIG_IPMI_DEVICE_INTERFACE=m
++CONFIG_IPMI_SSIF=m
++CONFIG_IPMI_WATCHDOG=m
++CONFIG_IPMI_POWEROFF=m
++CONFIG_HW_RANDOM=y
++CONFIG_HW_RANDOM_TIMERIOMEM=m
++CONFIG_HW_RANDOM_VIRTIO=m
++CONFIG_RAW_DRIVER=y
++CONFIG_MAX_RAW_DEVS=8192
++CONFIG_TCG_TPM=y
++CONFIG_TCG_TIS_I2C_INFINEON=y
++CONFIG_TCG_ATMEL=m
++CONFIG_I2C_CHARDEV=m
++CONFIG_I2C_ARB_GPIO_CHALLENGE=m
++CONFIG_I2C_MUX_GPIO=m
++CONFIG_I2C_MUX_GPMUX=m
++CONFIG_I2C_MUX_PCA9541=m
++CONFIG_I2C_MUX_PCA954x=y
++CONFIG_I2C_MUX_PINCTRL=m
++CONFIG_I2C_MUX_REG=m
++CONFIG_I2C_DEMUX_PINCTRL=m
++CONFIG_I2C_NFORCE2=m
++CONFIG_I2C_SCMI=y
++CONFIG_I2C_DESIGNWARE_PLATFORM=y
++CONFIG_I2C_DESIGNWARE_PCI=m
++CONFIG_I2C_GPIO=m
++CONFIG_I2C_PCA_PLATFORM=m
++CONFIG_I2C_RK3X=y
++CONFIG_I2C_SIMTEC=m
++CONFIG_I2C_DIOLAN_U2C=m
++CONFIG_I2C_TINY_USB=m
++CONFIG_I2C_VIPERBOARD=m
++CONFIG_I2C_CROS_EC_TUNNEL=y
++CONFIG_I2C_STUB=m
++CONFIG_I2C_SLAVE=y
++CONFIG_I2C_SLAVE_EEPROM=m
++CONFIG_SPI=y
++CONFIG_SPI_NXP_FLEXSPI=y
++CONFIG_SPI_GPIO=y
++CONFIG_SPI_PL022=y
++CONFIG_SPI_ROCKCHIP=y
++CONFIG_SPI_SPIDEV=m
++CONFIG_SPMI=y
++CONFIG_PPS_CLIENT_LDISC=m
++CONFIG_PPS_CLIENT_GPIO=m
++CONFIG_DP83640_PHY=m
++CONFIG_PINCTRL_AMD=y
++CONFIG_PINCTRL_SINGLE=y
++CONFIG_PINCTRL_MAX77620=y
++CONFIG_PINCTRL_RK805=y
++CONFIG_GPIO_SYSFS=y
++CONFIG_GPIO_DWAPB=y
++CONFIG_GPIO_PL061=y
++CONFIG_GPIO_SYSCON=y
++CONFIG_GPIO_XGENE=y
++CONFIG_GPIO_PCA953X=y
++CONFIG_GPIO_PCA953X_IRQ=y
++CONFIG_GPIO_MAX77620=y
++CONFIG_GPIO_VIPERBOARD=m
++CONFIG_W1=m
++CONFIG_W1_MASTER_DS2490=m
++CONFIG_W1_MASTER_DS2482=m
++CONFIG_W1_MASTER_DS1WM=m
++CONFIG_W1_SLAVE_THERM=m
++CONFIG_W1_SLAVE_SMEM=m
++CONFIG_W1_SLAVE_DS2408=m
++# CONFIG_W1_SLAVE_DS2408_READBACK is not set
++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_DS2433_CRC=y
++CONFIG_W1_SLAVE_DS2780=m
++CONFIG_W1_SLAVE_DS2781=m
++CONFIG_W1_SLAVE_DS28E04=m
++CONFIG_POWER_AVS=y
++CONFIG_ROCKCHIP_IODOMAIN=y
++CONFIG_POWER_RESET_GPIO=y
++CONFIG_POWER_RESET_GPIO_RESTART=y
++CONFIG_POWER_RESET_RESTART=y
++CONFIG_POWER_RESET_VEXPRESS=y
++CONFIG_POWER_RESET_XGENE=y
++CONFIG_POWER_RESET_SYSCON=y
++CONFIG_POWER_RESET_SYSCON_POWEROFF=y
++CONFIG_SYSCON_REBOOT_MODE=y
++CONFIG_BATTERY_CW2015=m
++CONFIG_BATTERY_SBS=m
++CONFIG_CHARGER_SBS=m
++CONFIG_MANAGER_SBS=m
++CONFIG_CHARGER_AXP20X=m
++CONFIG_CHARGER_GPIO=y
++CONFIG_CHARGER_SMB347=m
++CONFIG_CHARGER_CROS_USBPD=m
++CONFIG_SENSORS_AD7414=m
++CONFIG_SENSORS_AD7418=m
++CONFIG_SENSORS_ADM1021=m
++CONFIG_SENSORS_ADM1025=m
++CONFIG_SENSORS_ADM1026=m
++CONFIG_SENSORS_ADM1029=m
++CONFIG_SENSORS_ADM1031=m
++CONFIG_SENSORS_ADM9240=m
++CONFIG_SENSORS_ADT7410=m
++CONFIG_SENSORS_ADT7411=m
++CONFIG_SENSORS_ADT7462=m
++CONFIG_SENSORS_ADT7470=m
++CONFIG_SENSORS_ADT7475=m
++CONFIG_SENSORS_ASC7621=m
++CONFIG_SENSORS_ARM_SCPI=y
++CONFIG_SENSORS_ATXP1=m
++CONFIG_SENSORS_DS620=m
++CONFIG_SENSORS_DS1621=m
++CONFIG_SENSORS_F71805F=m
++CONFIG_SENSORS_F71882FG=m
++CONFIG_SENSORS_F75375S=m
++CONFIG_SENSORS_GL518SM=m
++CONFIG_SENSORS_GL520SM=m
++CONFIG_SENSORS_G760A=m
++CONFIG_SENSORS_G762=m
++CONFIG_SENSORS_GPIO_FAN=m
++CONFIG_SENSORS_IBMAEM=m
++CONFIG_SENSORS_IBMPEX=m
++CONFIG_SENSORS_IIO_HWMON=m
++CONFIG_SENSORS_IT87=m
++CONFIG_SENSORS_POWR1220=m
++CONFIG_SENSORS_LINEAGE=m
++CONFIG_SENSORS_LTC2945=m
++CONFIG_SENSORS_LTC4151=m
++CONFIG_SENSORS_LTC4215=m
++CONFIG_SENSORS_LTC4222=m
++CONFIG_SENSORS_LTC4245=m
++CONFIG_SENSORS_LTC4260=m
++CONFIG_SENSORS_LTC4261=m
++CONFIG_SENSORS_MAX16065=m
++CONFIG_SENSORS_MAX1619=m
++CONFIG_SENSORS_MAX1668=m
++CONFIG_SENSORS_MAX197=m
++CONFIG_SENSORS_MAX6639=m
++CONFIG_SENSORS_MAX6642=m
++CONFIG_SENSORS_MAX6650=m
++CONFIG_SENSORS_MAX6697=m
++CONFIG_SENSORS_MCP3021=m
++CONFIG_SENSORS_LM63=m
++CONFIG_SENSORS_LM73=m
++CONFIG_SENSORS_LM75=m
++CONFIG_SENSORS_LM77=m
++CONFIG_SENSORS_LM78=m
++CONFIG_SENSORS_LM80=m
++CONFIG_SENSORS_LM83=m
++CONFIG_SENSORS_LM85=m
++CONFIG_SENSORS_LM87=m
++CONFIG_SENSORS_LM90=m
++CONFIG_SENSORS_LM92=m
++CONFIG_SENSORS_LM93=m
++CONFIG_SENSORS_LM95234=m
++CONFIG_SENSORS_LM95241=m
++CONFIG_SENSORS_LM95245=m
++CONFIG_SENSORS_PC87360=m
++CONFIG_SENSORS_PC87427=m
++CONFIG_SENSORS_NTC_THERMISTOR=m
++CONFIG_SENSORS_NCT6683=m
++CONFIG_SENSORS_NCT6775=m
++CONFIG_SENSORS_NCT7802=m
++CONFIG_SENSORS_NCT7904=m
++CONFIG_SENSORS_PCF8591=m
++CONFIG_PMBUS=m
++CONFIG_SENSORS_ADM1275=m
++CONFIG_SENSORS_LM25066=m
++CONFIG_SENSORS_LTC2978=m
++CONFIG_SENSORS_MAX16064=m
++CONFIG_SENSORS_MAX34440=m
++CONFIG_SENSORS_MAX8688=m
++CONFIG_SENSORS_TPS40422=m
++CONFIG_SENSORS_UCD9000=m
++CONFIG_SENSORS_UCD9200=m
++CONFIG_SENSORS_ZL6100=m
++CONFIG_SENSORS_PWM_FAN=m
++CONFIG_SENSORS_SHT15=m
++CONFIG_SENSORS_SHT21=m
++CONFIG_SENSORS_SHT3x=m
++CONFIG_SENSORS_SHTC1=m
++CONFIG_SENSORS_SIS5595=m
++CONFIG_SENSORS_DME1737=m
++CONFIG_SENSORS_EMC1403=m
++CONFIG_SENSORS_EMC6W201=m
++CONFIG_SENSORS_SMSC47M1=m
++CONFIG_SENSORS_SMSC47M192=m
++CONFIG_SENSORS_SMSC47B397=m
++CONFIG_SENSORS_SCH5627=m
++CONFIG_SENSORS_SCH5636=m
++CONFIG_SENSORS_ADC128D818=m
++CONFIG_SENSORS_ADS7828=m
++CONFIG_SENSORS_AMC6821=m
++CONFIG_SENSORS_INA209=m
++CONFIG_SENSORS_INA2XX=m
++CONFIG_SENSORS_INA3221=m
++CONFIG_SENSORS_TC74=m
++CONFIG_SENSORS_THMC50=m
++CONFIG_SENSORS_TMP102=m
++CONFIG_SENSORS_TMP103=m
++CONFIG_SENSORS_TMP108=m
++CONFIG_SENSORS_TMP401=m
++CONFIG_SENSORS_TMP421=m
++CONFIG_SENSORS_VEXPRESS=m
++CONFIG_SENSORS_VIA686A=m
++CONFIG_SENSORS_VT1211=m
++CONFIG_SENSORS_VT8231=m
++CONFIG_SENSORS_W83781D=m
++CONFIG_SENSORS_W83791D=m
++CONFIG_SENSORS_W83792D=m
++CONFIG_SENSORS_W83793=m
++CONFIG_SENSORS_W83795=m
++CONFIG_SENSORS_W83L785TS=m
++CONFIG_SENSORS_W83L786NG=m
++CONFIG_SENSORS_W83627HF=m
++CONFIG_SENSORS_W83627EHF=m
++CONFIG_SENSORS_ACPI_POWER=m
++CONFIG_THERMAL_WRITABLE_TRIPS=y
++CONFIG_THERMAL_GOV_FAIR_SHARE=y
++CONFIG_THERMAL_GOV_BANG_BANG=y
++CONFIG_THERMAL_GOV_USER_SPACE=y
++CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
++CONFIG_CPU_THERMAL=y
++CONFIG_CLOCK_THERMAL=y
++CONFIG_DEVFREQ_THERMAL=y
++CONFIG_THERMAL_EMULATION=y
++CONFIG_MAX77620_THERMAL=m
++CONFIG_ROCKCHIP_THERMAL=m
++CONFIG_GENERIC_ADC_THERMAL=m
++CONFIG_WATCHDOG=y
++CONFIG_WATCHDOG_CORE=y
++CONFIG_SOFT_WATCHDOG=m
++CONFIG_GPIO_WATCHDOG=m
++CONFIG_ARM_SP805_WATCHDOG=m
++CONFIG_ARM_SBSA_WATCHDOG=m
++CONFIG_DW_WATCHDOG=m
++CONFIG_MAX77620_WATCHDOG=m
++CONFIG_ALIM7101_WDT=m
++CONFIG_I6300ESB_WDT=m
++CONFIG_PCIPCWATCHDOG=m
++CONFIG_WDTPCI=m
++CONFIG_USBPCWATCHDOG=m
++CONFIG_SSB_DRIVER_GPIO=y
++CONFIG_BCMA_DRIVER_GMAC_CMN=y
++CONFIG_BCMA_DRIVER_GPIO=y
++CONFIG_MFD_AXP20X_I2C=y
++CONFIG_MFD_MAX77620=y
++CONFIG_MFD_VIPERBOARD=m
++CONFIG_MFD_RK808=y
++CONFIG_MFD_SEC_CORE=y
++CONFIG_MFD_SM501=m
++CONFIG_MFD_SM501_GPIO=y
++CONFIG_MFD_VX855=m
++CONFIG_REGULATOR_FIXED_VOLTAGE=y
++CONFIG_REGULATOR_AXP20X=y
++CONFIG_REGULATOR_FAN53555=y
++CONFIG_REGULATOR_GPIO=y
++CONFIG_REGULATOR_MAX77620=y
++CONFIG_REGULATOR_PFUZE100=y
++CONFIG_REGULATOR_PWM=y
++CONFIG_REGULATOR_QCOM_SPMI=y
++CONFIG_REGULATOR_RK808=y
++CONFIG_REGULATOR_S2MPS11=y
++CONFIG_REGULATOR_VCTRL=y
++CONFIG_REGULATOR_VEXPRESS=y
++CONFIG_RC_CORE=y
++CONFIG_LIRC=y
++CONFIG_BPF_LIRC_MODE2=y
++CONFIG_RC_DECODERS=y
++CONFIG_IR_NEC_DECODER=m
++CONFIG_IR_RC5_DECODER=m
++CONFIG_IR_RC6_DECODER=m
++CONFIG_IR_JVC_DECODER=m
++CONFIG_IR_SONY_DECODER=m
++CONFIG_IR_SANYO_DECODER=m
++CONFIG_IR_SHARP_DECODER=m
++CONFIG_IR_MCE_KBD_DECODER=m
++CONFIG_IR_XMP_DECODER=m
++CONFIG_IR_IMON_DECODER=m
++CONFIG_IR_RCMM_DECODER=m
++CONFIG_RC_DEVICES=y
++CONFIG_RC_ATI_REMOTE=m
++CONFIG_IR_ENE=m
++CONFIG_IR_HIX5HD2=m
++CONFIG_IR_IMON=m
++CONFIG_IR_IMON_RAW=m
++CONFIG_IR_MCEUSB=m
++CONFIG_IR_ITE_CIR=m
++CONFIG_IR_FINTEK=m
++CONFIG_IR_NUVOTON=m
++CONFIG_IR_REDRAT3=m
++CONFIG_IR_SPI=m
++CONFIG_IR_STREAMZAP=m
++CONFIG_IR_IGORPLUGUSB=m
++CONFIG_IR_IGUANA=m
++CONFIG_IR_TTUSBIR=m
++CONFIG_RC_LOOPBACK=m
++CONFIG_IR_GPIO_CIR=m
++CONFIG_IR_SERIAL=m
++CONFIG_IR_SERIAL_TRANSMITTER=y
++CONFIG_IR_SIR=m
++CONFIG_RC_XBOX_DVD=m
++CONFIG_MEDIA_CEC_RC=y
++CONFIG_USB_PULSE8_CEC=m
++CONFIG_USB_RAINSHADOW_CEC=m
++CONFIG_MEDIA_SUPPORT=y
++CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
++CONFIG_VIDEO_V4L2_SUBDEV_API=y
++CONFIG_DVB_MAX_ADAPTERS=8
++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_TOUPTEK=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_STK1160_COMMON=m
++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_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_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_DVB_USB_ZD1301=m
++CONFIG_DVB_TTUSB_BUDGET=m
++CONFIG_DVB_TTUSB_DEC=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_USB_AIRSPY=m
++CONFIG_USB_HACKRF=m
++CONFIG_MEDIA_PCI_SUPPORT=y
++CONFIG_VIDEO_SOLO6X10=m
++CONFIG_VIDEO_TW68=m
++CONFIG_VIDEO_IVTV=m
++CONFIG_VIDEO_IVTV_ALSA=m
++CONFIG_VIDEO_FB_IVTV=m
++CONFIG_VIDEO_HEXIUM_GEMINI=m
++CONFIG_VIDEO_HEXIUM_ORION=m
++CONFIG_VIDEO_MXB=m
++CONFIG_VIDEO_DT3155=m
++CONFIG_VIDEO_CX18=m
++CONFIG_VIDEO_CX18_ALSA=m
++CONFIG_VIDEO_CX23885=m
++CONFIG_MEDIA_ALTERA_CI=m
++CONFIG_VIDEO_CX25821=m
++CONFIG_VIDEO_CX25821_ALSA=m
++CONFIG_VIDEO_CX88=m
++CONFIG_VIDEO_CX88_ALSA=m
++CONFIG_VIDEO_CX88_BLACKBIRD=m
++CONFIG_VIDEO_CX88_DVB=m
++CONFIG_VIDEO_BT848=m
++CONFIG_DVB_BT8XX=m
++CONFIG_VIDEO_SAA7134=m
++CONFIG_VIDEO_SAA7134_ALSA=m
++CONFIG_VIDEO_SAA7134_DVB=m
++CONFIG_VIDEO_SAA7134_GO7007=m
++CONFIG_VIDEO_SAA7164=m
++CONFIG_DVB_AV7110=m
++CONFIG_DVB_BUDGET_CORE=m
++CONFIG_DVB_BUDGET=m
++CONFIG_DVB_BUDGET_CI=m
++CONFIG_DVB_BUDGET_AV=m
++CONFIG_DVB_BUDGET_PATCH=m
++CONFIG_DVB_B2C2_FLEXCOP_PCI=m
++CONFIG_DVB_PLUTO2=m
++CONFIG_DVB_DM1105=m
++CONFIG_DVB_PT1=m
++CONFIG_DVB_PT3=m
++CONFIG_MANTIS_CORE=m
++CONFIG_DVB_MANTIS=m
++CONFIG_DVB_HOPPER=m
++CONFIG_DVB_NGENE=m
++CONFIG_DVB_DDBRIDGE=m
++CONFIG_DVB_SMIPCIE=m
++CONFIG_RADIO_SI470X=m
++CONFIG_USB_SI470X=m
++CONFIG_I2C_SI470X=m
++CONFIG_RADIO_SI4713=m
++CONFIG_USB_SI4713=m
++CONFIG_PLATFORM_SI4713=m
++CONFIG_USB_MR800=m
++CONFIG_USB_DSBR=m
++CONFIG_RADIO_MAXIRADIO=m
++CONFIG_RADIO_SHARK=m
++CONFIG_RADIO_SHARK2=m
++CONFIG_USB_KEENE=m
++CONFIG_USB_RAREMONO=m
++CONFIG_USB_MA901=m
++CONFIG_RADIO_TEA5764=m
++CONFIG_RADIO_SAA7706H=m
++CONFIG_RADIO_TEF6862=m
++CONFIG_RADIO_WL1273=m
++CONFIG_V4L_PLATFORM_DRIVERS=y
++CONFIG_V4L_MEM2MEM_DRIVERS=y
++CONFIG_VIDEO_ROCKCHIP_RGA=m
++CONFIG_SMS_SDIO_DRV=m
++CONFIG_DVB_DUMMY_FE=m
++CONFIG_DRM=m
++CONFIG_DRM_LOAD_EDID_FIRMWARE=y
++CONFIG_DRM_I2C_NXP_TDA998X=m
++CONFIG_DRM_HDLCD=m
++CONFIG_DRM_MALI_DISPLAY=m
++CONFIG_DRM_RADEON=m
++CONFIG_DRM_RADEON_USERPTR=y
++CONFIG_DRM_AMDGPU=m
++CONFIG_DRM_NOUVEAU=m
++CONFIG_DRM_VGEM=m
++CONFIG_DRM_ROCKCHIP=m
++CONFIG_ROCKCHIP_ANALOGIX_DP=y
++CONFIG_ROCKCHIP_CDN_DP=y
++CONFIG_ROCKCHIP_DW_HDMI=y
++CONFIG_ROCKCHIP_DW_MIPI_DSI=y
++CONFIG_ROCKCHIP_INNO_HDMI=y
++CONFIG_ROCKCHIP_LVDS=y
++CONFIG_ROCKCHIP_RGB=y
++CONFIG_DRM_UDL=m
++CONFIG_DRM_AST=m
++CONFIG_DRM_MGAG200=m
++CONFIG_DRM_QXL=m
++CONFIG_DRM_BOCHS=m
++CONFIG_DRM_VIRTIO_GPU=m
++CONFIG_DRM_PANEL_SIMPLE=m
++CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
++CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m
++CONFIG_DRM_NXP_PTN3460=m
++CONFIG_DRM_PARADE_PS8622=m
++CONFIG_DRM_SIL_SII8620=m
++CONFIG_DRM_SII902X=m
++CONFIG_DRM_TOSHIBA_TC358767=m
++CONFIG_DRM_TI_TFP410=m
++CONFIG_DRM_ANALOGIX_ANX78XX=m
++CONFIG_DRM_I2C_ADV7511=m
++CONFIG_DRM_I2C_ADV7511_AUDIO=y
++CONFIG_DRM_DW_HDMI_CEC=m
++CONFIG_DRM_HISI_KIRIN=m
++CONFIG_DRM_CIRRUS_QEMU=m
++CONFIG_DRM_PL111=m
++CONFIG_DRM_PANFROST=m
++CONFIG_FB=y
++CONFIG_FIRMWARE_EDID=y
++CONFIG_FB_TILEBLITTING=y
++CONFIG_FB_UDL=m
++CONFIG_FB_VIRTUAL=m
++CONFIG_FB_SIMPLE=y
++CONFIG_FB_SSD1307=m
++CONFIG_LCD_CLASS_DEVICE=m
++CONFIG_LCD_PLATFORM=m
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
++CONFIG_BACKLIGHT_GENERIC=m
++CONFIG_BACKLIGHT_PWM=m
++CONFIG_BACKLIGHT_LP855X=m
++CONFIG_BACKLIGHT_GPIO=m
++CONFIG_FRAMEBUFFER_CONSOLE=y
++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
++CONFIG_SOUND=y
++CONFIG_SND=y
++CONFIG_SND_OSSEMUL=y
++CONFIG_SND_MIXER_OSS=m
++CONFIG_SND_PCM_OSS=m
++CONFIG_SND_HRTIMER=m
++# CONFIG_SND_SUPPORT_OLD_API is not set
++CONFIG_SND_VERBOSE_PRINTK=y
++CONFIG_SND_DEBUG=y
++CONFIG_SND_DEBUG_VERBOSE=y
++CONFIG_SND_SEQUENCER=m
++CONFIG_SND_SEQ_DUMMY=m
++CONFIG_SND_SEQUENCER_OSS=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_AC97_POWER_SAVE=y
++CONFIG_SND_AD1889=m
++CONFIG_SND_ATIIXP=m
++CONFIG_SND_ATIIXP_MODEM=m
++CONFIG_SND_AU8810=m
++CONFIG_SND_AU8820=m
++CONFIG_SND_AU8830=m
++CONFIG_SND_BT87X=m
++CONFIG_SND_CA0106=m
++CONFIG_SND_CMIPCI=m
++CONFIG_SND_OXYGEN=m
++CONFIG_SND_CS4281=m
++CONFIG_SND_CS46XX=m
++CONFIG_SND_CTXFI=m
++CONFIG_SND_DARLA20=m
++CONFIG_SND_GINA20=m
++CONFIG_SND_LAYLA20=m
++CONFIG_SND_DARLA24=m
++CONFIG_SND_GINA24=m
++CONFIG_SND_LAYLA24=m
++CONFIG_SND_MONA=m
++CONFIG_SND_MIA=m
++CONFIG_SND_ECHO3G=m
++CONFIG_SND_INDIGO=m
++CONFIG_SND_INDIGOIO=m
++CONFIG_SND_INDIGODJ=m
++CONFIG_SND_INDIGOIOX=m
++CONFIG_SND_INDIGODJX=m
++CONFIG_SND_ENS1370=m
++CONFIG_SND_ENS1371=m
++CONFIG_SND_FM801=m
++CONFIG_SND_FM801_TEA575X_BOOL=y
++CONFIG_SND_HDSP=m
++CONFIG_SND_HDSPM=m
++CONFIG_SND_ICE1724=m
++CONFIG_SND_INTEL8X0=m
++CONFIG_SND_INTEL8X0M=m
++CONFIG_SND_KORG1212=m
++CONFIG_SND_LOLA=m
++CONFIG_SND_LX6464ES=m
++CONFIG_SND_MIXART=m
++CONFIG_SND_NM256=m
++CONFIG_SND_PCXHR=m
++CONFIG_SND_RIPTIDE=m
++CONFIG_SND_RME32=m
++CONFIG_SND_RME96=m
++CONFIG_SND_RME9652=m
++CONFIG_SND_VIA82XX=m
++CONFIG_SND_VIA82XX_MODEM=m
++CONFIG_SND_VIRTUOSO=m
++CONFIG_SND_VX222=m
++CONFIG_SND_YMFPCI=m
++CONFIG_SND_HDA_INTEL=m
++CONFIG_SND_HDA_HWDEP=y
++CONFIG_SND_HDA_INPUT_BEEP=y
++CONFIG_SND_HDA_INPUT_BEEP_MODE=0
++CONFIG_SND_HDA_PATCH_LOADER=y
++CONFIG_SND_HDA_CODEC_REALTEK=m
++CONFIG_SND_HDA_CODEC_ANALOG=m
++CONFIG_SND_HDA_CODEC_SIGMATEL=m
++CONFIG_SND_HDA_CODEC_VIA=m
++CONFIG_SND_HDA_CODEC_HDMI=m
++CONFIG_SND_HDA_CODEC_CIRRUS=m
++CONFIG_SND_HDA_CODEC_CONEXANT=m
++CONFIG_SND_HDA_CODEC_CA0110=m
++CONFIG_SND_HDA_CODEC_CA0132=m
++CONFIG_SND_HDA_CODEC_CMEDIA=m
++CONFIG_SND_HDA_CODEC_SI3054=m
++CONFIG_SND_HDA_PREALLOC_SIZE=4096
++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_USB_HIFACE=m
++CONFIG_SND_USB_POD=m
++CONFIG_SND_USB_PODHD=m
++CONFIG_SND_USB_TONEPORT=m
++CONFIG_SND_USB_VARIAX=m
++CONFIG_SND_SOC=y
++CONFIG_SND_SOC_AMD_ACP=m
++CONFIG_SND_I2S_HI6210_I2S=m
++CONFIG_SND_SOC_ROCKCHIP=m
++CONFIG_SND_SOC_ROCKCHIP_PDM=m
++CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
++CONFIG_SND_SOC_ROCKCHIP_MAX98090=m
++CONFIG_SND_SOC_ROCKCHIP_RT5645=m
++CONFIG_SND_SOC_RK3288_HDMI_ANALOG=m
++CONFIG_SND_SOC_RK3399_GRU_SOUND=m
++CONFIG_SND_SOC_CROS_EC_CODEC=m
++CONFIG_SND_SOC_ES8316=m
++CONFIG_SND_SOC_MSM8916_WCD_ANALOG=y
++CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=y
++CONFIG_SND_SOC_PCM3168A_I2C=m
++CONFIG_SND_SOC_RK3328=m
++CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m
++CONFIG_SND_SIMPLE_CARD=m
++CONFIG_SND_AUDIO_GRAPH_CARD=m
++CONFIG_HID_BATTERY_STRENGTH=y
++CONFIG_HIDRAW=y
++CONFIG_UHID=m
++CONFIG_HID_A4TECH=m
++CONFIG_HID_ACCUTOUCH=m
++CONFIG_HID_ACRUX=m
++CONFIG_HID_ACRUX_FF=y
++CONFIG_HID_APPLE=m
++CONFIG_HID_APPLEIR=m
++CONFIG_HID_AUREAL=m
++CONFIG_HID_BELKIN=m
++CONFIG_HID_BETOP_FF=m
++CONFIG_HID_CHERRY=m
++CONFIG_HID_CHICONY=m
++CONFIG_HID_CORSAIR=m
++CONFIG_HID_COUGAR=m
++CONFIG_HID_MACALLY=m
++CONFIG_HID_PRODIKEYS=m
++CONFIG_HID_CMEDIA=m
++CONFIG_HID_CP2112=m
++CONFIG_HID_CYPRESS=m
++CONFIG_HID_DRAGONRISE=m
++CONFIG_DRAGONRISE_FF=y
++CONFIG_HID_EMS_FF=m
++CONFIG_HID_ELECOM=m
++CONFIG_HID_ELO=m
++CONFIG_HID_EZKEY=m
++CONFIG_HID_GEMBIRD=m
++CONFIG_HID_GFRM=m
++CONFIG_HID_HOLTEK=m
++CONFIG_HOLTEK_FF=y
++CONFIG_HID_GT683R=m
++CONFIG_HID_KEYTOUCH=m
++CONFIG_HID_KYE=m
++CONFIG_HID_UCLOGIC=m
++CONFIG_HID_WALTOP=m
++CONFIG_HID_VIEWSONIC=m
++CONFIG_HID_GYRATION=m
++CONFIG_HID_ICADE=m
++CONFIG_HID_ITE=m
++CONFIG_HID_JABRA=m
++CONFIG_HID_TWINHAN=m
++CONFIG_HID_KENSINGTON=m
++CONFIG_HID_LCPOWER=m
++CONFIG_HID_LENOVO=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_MALTRON=m
++CONFIG_HID_MAYFLASH=m
++CONFIG_HID_REDRAGON=m
++CONFIG_HID_MICROSOFT=m
++CONFIG_HID_MONTEREY=m
++CONFIG_HID_MULTITOUCH=m
++CONFIG_HID_NTI=m
++CONFIG_HID_NTRIG=m
++CONFIG_HID_ORTEK=m
++CONFIG_HID_PANTHERLORD=m
++CONFIG_PANTHERLORD_FF=y
++CONFIG_HID_PENMOUNT=m
++CONFIG_HID_PETALYNX=m
++CONFIG_HID_PICOLCD=m
++CONFIG_HID_PICOLCD_FB=y
++CONFIG_HID_PICOLCD_BACKLIGHT=y
++CONFIG_HID_PICOLCD_LCD=y
++CONFIG_HID_PICOLCD_LEDS=y
++CONFIG_HID_PICOLCD_CIR=y
++CONFIG_HID_PLANTRONICS=m
++CONFIG_HID_PRIMAX=m
++CONFIG_HID_RETRODE=m
++CONFIG_HID_ROCCAT=m
++CONFIG_HID_SAITEK=m
++CONFIG_HID_SAMSUNG=m
++CONFIG_HID_SONY=m
++CONFIG_SONY_FF=y
++CONFIG_HID_SPEEDLINK=m
++CONFIG_HID_STEAM=m
++CONFIG_HID_STEELSERIES=m
++CONFIG_HID_SUNPLUS=m
++CONFIG_HID_RMI=m
++CONFIG_HID_GREENASIA=m
++CONFIG_GREENASIA_FF=y
++CONFIG_HID_SMARTJOYPLUS=m
++CONFIG_SMARTJOYPLUS_FF=y
++CONFIG_HID_TIVO=m
++CONFIG_HID_TOPSEED=m
++CONFIG_HID_THINGM=m
++CONFIG_HID_THRUSTMASTER=m
++CONFIG_THRUSTMASTER_FF=y
++CONFIG_HID_UDRAW_PS3=m
++CONFIG_HID_U2FZERO=m
++CONFIG_HID_WACOM=m
++CONFIG_HID_WIIMOTE=m
++CONFIG_HID_XINMO=m
++CONFIG_HID_ZEROPLUS=m
++CONFIG_ZEROPLUS_FF=y
++CONFIG_HID_ZYDACRON=m
++CONFIG_HID_SENSOR_HUB=m
++CONFIG_HID_SENSOR_CUSTOM_SENSOR=m
++CONFIG_HID_ALPS=m
++CONFIG_HID_PID=y
++CONFIG_USB_HIDDEV=y
++CONFIG_I2C_HID=m
++CONFIG_USB_LED_TRIG=y
++CONFIG_USB=y
++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
++CONFIG_USB_OTG=y
++CONFIG_USB_MON=y
++CONFIG_USB_XHCI_HCD=y
++CONFIG_USB_EHCI_HCD=y
++CONFIG_USB_EHCI_HCD_PLATFORM=y
++CONFIG_USB_MAX3421_HCD=y
++CONFIG_USB_OHCI_HCD=y
++CONFIG_USB_OHCI_HCD_PLATFORM=y
++CONFIG_USB_UHCI_HCD=y
++CONFIG_USB_U132_HCD=m
++CONFIG_USB_SL811_HCD=m
++CONFIG_USB_SL811_HCD_ISO=y
++CONFIG_USB_PRINTER=m
++CONFIG_USB_TMC=m
++CONFIG_USB_STORAGE=y
++CONFIG_USB_STORAGE_REALTEK=y
++CONFIG_USB_STORAGE_DATAFAB=y
++CONFIG_USB_STORAGE_FREECOM=y
++CONFIG_USB_STORAGE_ISD200=y
++CONFIG_USB_STORAGE_USBAT=y
++CONFIG_USB_STORAGE_SDDR09=y
++CONFIG_USB_STORAGE_SDDR55=y
++CONFIG_USB_STORAGE_JUMPSHOT=y
++CONFIG_USB_STORAGE_ALAUDA=y
++CONFIG_USB_STORAGE_ONETOUCH=y
++CONFIG_USB_STORAGE_KARMA=y
++CONFIG_USB_STORAGE_CYPRESS_ATACB=y
++CONFIG_USB_STORAGE_ENE_UB6250=y
++CONFIG_USB_UAS=y
++CONFIG_USB_MDC800=m
++CONFIG_USB_MICROTEK=m
++CONFIG_USBIP_CORE=m
++CONFIG_USBIP_VHCI_HCD=m
++CONFIG_USBIP_HOST=m
++CONFIG_USBIP_VUDC=m
++CONFIG_USB_MUSB_HDRC=y
++CONFIG_USB_DWC3=y
++CONFIG_USB_DWC3_ULPI=y
++CONFIG_USB_DWC2=y
++CONFIG_USB_DWC2_PCI=y
++CONFIG_USB_CHIPIDEA=y
++CONFIG_USB_CHIPIDEA_UDC=y
++CONFIG_USB_CHIPIDEA_HOST=y
++CONFIG_USB_ISP1760=y
++CONFIG_USB_SERIAL=y
++CONFIG_USB_SERIAL_CONSOLE=y
++CONFIG_USB_SERIAL_GENERIC=y
++CONFIG_USB_SERIAL_SIMPLE=m
++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_F8153X=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_MXUPORT=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_SAFE_PADDED=y
++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_UPD78F0730=m
++CONFIG_USB_SERIAL_DEBUG=m
++CONFIG_USB_EMI62=m
++CONFIG_USB_EMI26=m
++CONFIG_USB_ADUTUX=m
++CONFIG_USB_SEVSEG=m
++CONFIG_USB_LEGOTOWER=m
++CONFIG_USB_LCD=m
++CONFIG_USB_IDMOUSE=m
++CONFIG_USB_FTDI_ELAN=m
++CONFIG_USB_APPLEDISPLAY=m
++CONFIG_USB_SISUSBVGA=m
++CONFIG_USB_SISUSBVGA_CON=y
++CONFIG_USB_LD=m
++CONFIG_USB_TRANCEVIBRATOR=m
++CONFIG_USB_IOWARRIOR=m
++CONFIG_USB_ISIGHTFW=m
++CONFIG_USB_YUREX=m
++CONFIG_USB_HSIC_USB3503=y
++CONFIG_USB_HSIC_USB4604=y
++CONFIG_USB_CHAOSKEY=m
++CONFIG_USB_ATM=m
++CONFIG_USB_CXACRU=m
++CONFIG_USB_UEAGLEATM=m
++CONFIG_USB_XUSBATM=m
++CONFIG_USB_GPIO_VBUS=y
++CONFIG_USB_ISP1301=y
++CONFIG_USB_ULPI=y
++CONFIG_USB_GADGET=y
++CONFIG_USB_GADGET_VBUS_DRAW=500
++CONFIG_USB_CONFIGFS=m
++CONFIG_USB_CONFIGFS_SERIAL=y
++CONFIG_USB_CONFIGFS_ACM=y
++CONFIG_USB_CONFIGFS_OBEX=y
++CONFIG_USB_CONFIGFS_NCM=y
++CONFIG_USB_CONFIGFS_ECM=y
++CONFIG_USB_CONFIGFS_ECM_SUBSET=y
++CONFIG_USB_CONFIGFS_RNDIS=y
++CONFIG_USB_CONFIGFS_EEM=y
++CONFIG_USB_CONFIGFS_MASS_STORAGE=y
++CONFIG_USB_CONFIGFS_F_FS=y
++CONFIG_USB_CONFIGFS_F_UAC1=y
++CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y
++CONFIG_USB_CONFIGFS_F_UAC2=y
++CONFIG_USB_CONFIGFS_F_MIDI=y
++CONFIG_USB_CONFIGFS_F_HID=y
++CONFIG_USB_CONFIGFS_F_UVC=y
++CONFIG_USB_CONFIGFS_F_PRINTER=y
++CONFIG_USB_CONFIGFS_F_TCM=y
++CONFIG_USB_AUDIO=m
++CONFIG_GADGET_UAC1=y
++CONFIG_USB_ETH=m
++CONFIG_USB_ETH_EEM=y
++CONFIG_USB_G_NCM=m
++CONFIG_USB_GADGETFS=m
++CONFIG_USB_FUNCTIONFS=m
++CONFIG_USB_FUNCTIONFS_ETH=y
++CONFIG_USB_FUNCTIONFS_RNDIS=y
++CONFIG_USB_FUNCTIONFS_GENERIC=y
++CONFIG_USB_MASS_STORAGE=m
++CONFIG_USB_GADGET_TARGET=m
++CONFIG_USB_G_SERIAL=m
++CONFIG_USB_MIDI_GADGET=m
++CONFIG_USB_G_PRINTER=m
++CONFIG_USB_CDC_COMPOSITE=m
++CONFIG_USB_G_ACM_MS=m
++CONFIG_USB_G_MULTI=m
++CONFIG_USB_G_MULTI_CDC=y
++CONFIG_USB_G_HID=m
++CONFIG_USB_G_WEBCAM=m
++CONFIG_TYPEC=y
++CONFIG_TYPEC_TCPM=y
++CONFIG_TYPEC_TCPCI=y
++CONFIG_TYPEC_FUSB302=y
++CONFIG_TYPEC_DP_ALTMODE=y
++CONFIG_MMC=y
++CONFIG_PWRSEQ_SD8787=m
++CONFIG_MMC_BLOCK_MINORS=32
++CONFIG_SDIO_UART=m
++CONFIG_MMC_ARMMMCI=y
++# CONFIG_MMC_STM32_SDMMC is not set
++CONFIG_MMC_SDHCI=y
++CONFIG_MMC_SDHCI_PCI=y
++CONFIG_MMC_SDHCI_ACPI=y
++CONFIG_MMC_SDHCI_PLTFM=y
++CONFIG_MMC_SDHCI_OF_ARASAN=y
++CONFIG_MMC_SDHCI_OF_AT91=y
++CONFIG_MMC_SDHCI_CADENCE=y
++CONFIG_MMC_SDHCI_F_SDH30=y
++CONFIG_MMC_TIFM_SD=y
++CONFIG_MMC_SPI=y
++CONFIG_MMC_CB710=y
++CONFIG_MMC_VIA_SDMMC=y
++CONFIG_MMC_DW=y
++CONFIG_MMC_DW_EXYNOS=y
++CONFIG_MMC_DW_K3=y
++CONFIG_MMC_DW_PCI=y
++CONFIG_MMC_DW_ROCKCHIP=y
++CONFIG_MMC_VUB300=m
++CONFIG_MMC_USHC=m
++CONFIG_MMC_USDHI6ROL0=y
++CONFIG_MMC_TOSHIBA_PCI=y
++CONFIG_MMC_MTK=y
++CONFIG_MMC_SDHCI_XENON=y
++CONFIG_MEMSTICK=m
++CONFIG_MSPRO_BLOCK=m
++CONFIG_MEMSTICK_TIFM_MS=m
++CONFIG_MEMSTICK_JMICRON_38X=m
++CONFIG_MEMSTICK_R592=m
++CONFIG_LEDS_CLASS=y
++CONFIG_LEDS_CLASS_FLASH=m
++CONFIG_LEDS_LM3530=m
++CONFIG_LEDS_GPIO=y
++CONFIG_LEDS_LP3944=m
++CONFIG_LEDS_PCA955X=m
++CONFIG_LEDS_PCA963X=m
++CONFIG_LEDS_PWM=m
++CONFIG_LEDS_LT3593=m
++CONFIG_LEDS_BLINKM=m
++CONFIG_LEDS_SYSCON=y
++CONFIG_LEDS_USER=m
++CONFIG_LEDS_TRIGGER_TIMER=y
++CONFIG_LEDS_TRIGGER_ONESHOT=y
++CONFIG_LEDS_TRIGGER_DISK=y
++CONFIG_LEDS_TRIGGER_MTD=y
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++CONFIG_LEDS_TRIGGER_BACKLIGHT=y
++CONFIG_LEDS_TRIGGER_CPU=y
++CONFIG_LEDS_TRIGGER_ACTIVITY=y
++CONFIG_LEDS_TRIGGER_GPIO=y
++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
++CONFIG_LEDS_TRIGGER_TRANSIENT=y
++CONFIG_LEDS_TRIGGER_CAMERA=y
++CONFIG_LEDS_TRIGGER_PANIC=y
++CONFIG_LEDS_TRIGGER_NETDEV=y
++CONFIG_LEDS_TRIGGER_PATTERN=m
++CONFIG_LEDS_TRIGGER_AUDIO=m
++CONFIG_ACCESSIBILITY=y
++CONFIG_A11Y_BRAILLE_CONSOLE=y
++CONFIG_EDAC=y
++CONFIG_EDAC_XGENE=m
++CONFIG_RTC_CLASS=y
++# CONFIG_RTC_SYSTOHC is not set
++CONFIG_RTC_INTF_DEV_UIE_EMUL=y
++CONFIG_RTC_DRV_ABX80X=m
++CONFIG_RTC_DRV_DS1307=m
++CONFIG_RTC_DRV_DS1374=m
++CONFIG_RTC_DRV_DS1374_WDT=y
++CONFIG_RTC_DRV_DS1672=m
++CONFIG_RTC_DRV_MAX6900=m
++CONFIG_RTC_DRV_RK808=y
++CONFIG_RTC_DRV_RS5C372=m
++CONFIG_RTC_DRV_ISL1208=m
++CONFIG_RTC_DRV_ISL12022=m
++CONFIG_RTC_DRV_X1205=m
++CONFIG_RTC_DRV_PCF8523=m
++CONFIG_RTC_DRV_PCF85063=m
++CONFIG_RTC_DRV_PCF85363=m
++CONFIG_RTC_DRV_PCF8563=m
++CONFIG_RTC_DRV_PCF8583=m
++CONFIG_RTC_DRV_M41T80=m
++CONFIG_RTC_DRV_M41T80_WDT=y
++CONFIG_RTC_DRV_BQ32K=m
++CONFIG_RTC_DRV_FM3130=m
++CONFIG_RTC_DRV_RX8581=m
++CONFIG_RTC_DRV_RX8025=m
++CONFIG_RTC_DRV_EM3027=m
++CONFIG_RTC_DRV_DS3232=m
++CONFIG_RTC_DRV_PCF2127=m
++CONFIG_RTC_DRV_RV3029C2=m
++CONFIG_RTC_DRV_DS1286=m
++CONFIG_RTC_DRV_DS1511=m
++CONFIG_RTC_DRV_DS1553=m
++CONFIG_RTC_DRV_DS1685_FAMILY=m
++CONFIG_RTC_DRV_DS1742=m
++CONFIG_RTC_DRV_DS2404=m
++CONFIG_RTC_DRV_EFI=y
++CONFIG_RTC_DRV_STK17TA8=m
++CONFIG_RTC_DRV_M48T35=m
++CONFIG_RTC_DRV_M48T59=m
++CONFIG_RTC_DRV_MSM6242=m
++CONFIG_RTC_DRV_BQ4802=m
++CONFIG_RTC_DRV_RP5C01=m
++CONFIG_RTC_DRV_V3020=m
++CONFIG_RTC_DRV_CROS_EC=y
++CONFIG_RTC_DRV_PL031=y
++CONFIG_DMADEVICES=y
++CONFIG_MV_XOR_V2=y
++CONFIG_PL330_DMA=y
++CONFIG_QCOM_HIDMA_MGMT=y
++CONFIG_QCOM_HIDMA=y
++CONFIG_DW_DMAC=m
++CONFIG_DW_DMAC_PCI=m
++CONFIG_ASYNC_TX_DMA=y
++CONFIG_AUXDISPLAY=y
++CONFIG_UIO_CIF=m
++CONFIG_UIO_AEC=m
++CONFIG_UIO_SERCOS3=m
++CONFIG_UIO_PCI_GENERIC=m
++CONFIG_VFIO=m
++CONFIG_VFIO_PCI=m
++CONFIG_VFIO_PLATFORM=m
++CONFIG_VFIO_AMBA=m
++CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET=m
++CONFIG_VFIO_PLATFORM_AMDXGBE_RESET=m
++CONFIG_VIRTIO_PCI=y
++CONFIG_VIRTIO_BALLOON=m
++CONFIG_VIRTIO_INPUT=m
++CONFIG_VIRTIO_MMIO=m
++CONFIG_VHOST_NET=m
++CONFIG_VHOST_SCSI=m
++CONFIG_VHOST_VSOCK=m
++CONFIG_STAGING=y
++CONFIG_PRISM2_USB=m
++CONFIG_RTL8192U=m
++CONFIG_RTLLIB=m
++CONFIG_RTL8192E=m
++CONFIG_R8712U=m
++CONFIG_R8188EU=m
++CONFIG_ADIS16203=m
++CONFIG_ADIS16240=m
++CONFIG_AD7816=m
++CONFIG_AD7280=m
++CONFIG_ADT7316=m
++CONFIG_ADT7316_I2C=m
++CONFIG_AD7150=m
++CONFIG_AD7746=m
++CONFIG_AD9832=m
++CONFIG_AD9834=m
++CONFIG_AD5933=m
++CONFIG_ADE7854=m
++CONFIG_AD2S1210=m
++CONFIG_STAGING_MEDIA=y
++CONFIG_VIDEO_HANTRO=y
++CONFIG_VIDEO_ROCKCHIP_VDEC=m
++CONFIG_VIDEO_USBVISION=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_HX8357D=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_SH1106=m
++CONFIG_FB_TFT_SSD1289=m
++CONFIG_FB_TFT_SSD1305=m
++CONFIG_FB_TFT_SSD1306=m
++CONFIG_FB_TFT_SSD1331=m
++CONFIG_FB_TFT_SSD1351=m
++CONFIG_FB_TFT_ST7735R=m
++CONFIG_FB_TFT_ST7789V=m
++CONFIG_FB_TFT_TINYLCD=m
++CONFIG_FB_TFT_TLS8204=m
++CONFIG_FB_TFT_UC1611=m
++CONFIG_FB_TFT_UC1701=m
++CONFIG_FB_TFT_UPD161704=m
++CONFIG_FB_TFT_WATTEROTT=m
++CONFIG_MFD_CROS_EC=y
++CONFIG_CHROMEOS_TBMC=m
++CONFIG_CROS_EC_I2C=y
++CONFIG_CROS_EC_RPMSG=m
++CONFIG_CROS_EC_SPI=y
++CONFIG_CROS_KBD_LED_BACKLIGHT=y
++CONFIG_CROS_EC_LIGHTBAR=m
++CONFIG_CROS_EC_VBC=m
++CONFIG_CROS_EC_DEBUGFS=m
++CONFIG_CROS_EC_SYSFS=m
++CONFIG_COMMON_CLK_RK808=y
++CONFIG_COMMON_CLK_SCPI=y
++CONFIG_COMMON_CLK_XGENE=y
++CONFIG_COMMON_CLK_PWM=y
++CONFIG_HWSPINLOCK=y
++CONFIG_ARM_MHU=y
++CONFIG_PLATFORM_MHU=y
++CONFIG_ROCKCHIP_MBOX=y
++CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y
++CONFIG_ROCKCHIP_IOMMU=y
++CONFIG_ARM_SMMU=y
++CONFIG_ARM_SMMU_V3=y
++CONFIG_REMOTEPROC=y
++CONFIG_RPMSG_CHAR=y
++CONFIG_RPMSG_QCOM_GLINK_RPM=y
++CONFIG_ROCKCHIP_PM_DOMAINS=y
++CONFIG_ROCKCHIP_SUSPEND_MODE=y
++CONFIG_DEVFREQ_GOV_PERFORMANCE=y
++CONFIG_ARM_RK3399_DMC_DEVFREQ=y
++CONFIG_EXTCON_ADC_JACK=m
++CONFIG_EXTCON_GPIO=y
++CONFIG_EXTCON_USB_GPIO=y
++CONFIG_EXTCON_USBC_CROS_EC=y
++CONFIG_MEMORY=y
++CONFIG_IIO=y
++CONFIG_IIO_BUFFER_CB=y
++CONFIG_IIO_BUFFER_HW_CONSUMER=m
++CONFIG_IIO_SW_DEVICE=m
++CONFIG_IIO_SW_TRIGGER=m
++CONFIG_ADIS16201=m
++CONFIG_ADIS16209=m
++CONFIG_ADXL345_I2C=m
++CONFIG_ADXL345_SPI=m
++CONFIG_ADXL372_SPI=m
++CONFIG_ADXL372_I2C=m
++CONFIG_BMA180=m
++CONFIG_BMA220=m
++CONFIG_BMC150_ACCEL=m
++CONFIG_DA280=m
++CONFIG_DA311=m
++CONFIG_DMARD06=m
++CONFIG_DMARD09=m
++CONFIG_DMARD10=m
++CONFIG_HID_SENSOR_ACCEL_3D=m
++CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m
++CONFIG_IIO_ST_ACCEL_3AXIS=m
++CONFIG_KXSD9=m
++CONFIG_KXCJK1013=m
++CONFIG_MC3230=m
++CONFIG_MMA7455_I2C=m
++CONFIG_MMA7455_SPI=m
++CONFIG_MMA7660=m
++CONFIG_MMA8452=m
++CONFIG_MMA9551=m
++CONFIG_MMA9553=m
++CONFIG_MXC4005=m
++CONFIG_MXC6255=m
++CONFIG_SCA3000=m
++CONFIG_STK8312=m
++CONFIG_STK8BA50=m
++CONFIG_AD7124=m
++CONFIG_AD7192=m
++CONFIG_AD7266=m
++CONFIG_AD7291=m
++CONFIG_AD7298=m
++CONFIG_AD7476=m
++CONFIG_AD7606_IFACE_PARALLEL=m
++CONFIG_AD7606_IFACE_SPI=m
++CONFIG_AD7766=m
++CONFIG_AD7768_1=m
++CONFIG_AD7780=m
++CONFIG_AD7791=m
++CONFIG_AD7793=m
++CONFIG_AD7887=m
++CONFIG_AD7923=m
++CONFIG_AD7949=m
++CONFIG_AD799X=m
++CONFIG_AXP20X_ADC=m
++CONFIG_AXP288_ADC=m
++CONFIG_CC10001_ADC=m
++CONFIG_ENVELOPE_DETECTOR=m
++CONFIG_HI8435=m
++CONFIG_HX711=m
++CONFIG_INA2XX_ADC=m
++CONFIG_LTC2471=m
++CONFIG_LTC2485=m
++CONFIG_LTC2497=m
++CONFIG_MAX1027=m
++CONFIG_MAX11100=m
++CONFIG_MAX1118=m
++CONFIG_MAX1363=m
++CONFIG_MAX9611=m
++CONFIG_MCP320X=m
++CONFIG_MCP3422=m
++CONFIG_MCP3911=m
++CONFIG_NAU7802=m
++CONFIG_QCOM_SPMI_IADC=m
++CONFIG_QCOM_SPMI_VADC=y
++CONFIG_QCOM_SPMI_ADC5=m
++CONFIG_ROCKCHIP_SARADC=m
++CONFIG_SD_ADC_MODULATOR=m
++CONFIG_TI_ADC081C=m
++CONFIG_TI_ADC0832=m
++CONFIG_TI_ADC084S021=m
++CONFIG_TI_ADC12138=m
++CONFIG_TI_ADC108S102=m
++CONFIG_TI_ADC128S052=m
++CONFIG_TI_ADC161S626=m
++CONFIG_TI_ADS1015=m
++CONFIG_TI_ADS7950=m
++CONFIG_TI_ADS8344=m
++CONFIG_TI_ADS8688=m
++CONFIG_TI_ADS124S08=m
++CONFIG_TI_TLC4541=m
++CONFIG_VF610_ADC=m
++CONFIG_VIPERBOARD_ADC=m
++CONFIG_IIO_RESCALE=m
++CONFIG_AD8366=m
++CONFIG_ATLAS_PH_SENSOR=m
++CONFIG_BME680=m
++CONFIG_CCS811=m
++CONFIG_IAQCORE=m
++CONFIG_PMS7003=m
++CONFIG_SENSIRION_SGP30=m
++CONFIG_SPS30=m
++CONFIG_VZ89X=m
++CONFIG_IIO_CROS_EC_SENSORS_CORE=m
++CONFIG_IIO_CROS_EC_SENSORS=m
++CONFIG_AD5064=m
++CONFIG_AD5360=m
++CONFIG_AD5380=m
++CONFIG_AD5421=m
++CONFIG_AD5446=m
++CONFIG_AD5449=m
++CONFIG_AD5592R=m
++CONFIG_AD5593R=m
++CONFIG_AD5504=m
++CONFIG_AD5624R_SPI=m
++CONFIG_AD5686_SPI=m
++CONFIG_AD5696_I2C=m
++CONFIG_AD5755=m
++CONFIG_AD5758=m
++CONFIG_AD5761=m
++CONFIG_AD5764=m
++CONFIG_AD5791=m
++CONFIG_AD7303=m
++CONFIG_AD8801=m
++CONFIG_DPOT_DAC=m
++CONFIG_DS4424=m
++CONFIG_LTC1660=m
++CONFIG_LTC2632=m
++CONFIG_M62332=m
++CONFIG_MAX517=m
++CONFIG_MAX5821=m
++CONFIG_MCP4725=m
++CONFIG_MCP4922=m
++CONFIG_TI_DAC082S085=m
++CONFIG_TI_DAC5571=m
++CONFIG_TI_DAC7311=m
++CONFIG_TI_DAC7612=m
++CONFIG_VF610_DAC=m
++CONFIG_AD9523=m
++CONFIG_ADF4350=m
++CONFIG_ADIS16080=m
++CONFIG_ADIS16130=m
++CONFIG_ADIS16136=m
++CONFIG_ADIS16260=m
++CONFIG_ADXRS450=m
++CONFIG_BMG160=m
++CONFIG_FXAS21002C=m
++CONFIG_HID_SENSOR_GYRO_3D=m
++CONFIG_MPU3050_I2C=m
++CONFIG_IIO_ST_GYRO_3AXIS=m
++CONFIG_ITG3200=m
++CONFIG_AFE4403=m
++CONFIG_AFE4404=m
++CONFIG_MAX30100=m
++CONFIG_MAX30102=m
++CONFIG_AM2315=m
++CONFIG_DHT11=m
++CONFIG_HDC100X=m
++CONFIG_HID_SENSOR_HUMIDITY=m
++CONFIG_HTS221=m
++CONFIG_HTU21=m
++CONFIG_SI7005=m
++CONFIG_SI7020=m
++CONFIG_ADIS16400=m
++CONFIG_ADIS16480=m
++CONFIG_BMI160_I2C=m
++CONFIG_BMI160_SPI=m
++CONFIG_KMX61=m
++CONFIG_INV_MPU6050_I2C=m
++CONFIG_INV_MPU6050_SPI=m
++CONFIG_IIO_ST_LSM6DSX=m
++CONFIG_ACPI_ALS=m
++CONFIG_ADJD_S311=m
++CONFIG_AL3320A=m
++CONFIG_APDS9300=m
++CONFIG_APDS9960=m
++CONFIG_BH1750=m
++CONFIG_BH1780=m
++CONFIG_CM32181=m
++CONFIG_CM3232=m
++CONFIG_CM3323=m
++CONFIG_CM3605=m
++CONFIG_CM36651=m
++CONFIG_IIO_CROS_EC_LIGHT_PROX=m
++CONFIG_GP2AP020A00F=m
++CONFIG_SENSORS_ISL29018=m
++CONFIG_SENSORS_ISL29028=m
++CONFIG_ISL29125=m
++CONFIG_HID_SENSOR_ALS=m
++CONFIG_HID_SENSOR_PROX=m
++CONFIG_JSA1212=m
++CONFIG_RPR0521=m
++CONFIG_LTR501=m
++CONFIG_LV0104CS=m
++CONFIG_MAX44000=m
++CONFIG_MAX44009=m
++CONFIG_OPT3001=m
++CONFIG_PA12203001=m
++CONFIG_SI1133=m
++CONFIG_SI1145=m
++CONFIG_STK3310=m
++CONFIG_ST_UVIS25=m
++CONFIG_TCS3414=m
++CONFIG_TCS3472=m
++CONFIG_SENSORS_TSL2563=m
++CONFIG_TSL2583=m
++CONFIG_TSL2772=m
++CONFIG_TSL4531=m
++CONFIG_US5182D=m
++CONFIG_VCNL4000=m
++CONFIG_VCNL4035=m
++CONFIG_VEML6070=m
++CONFIG_VL6180=m
++CONFIG_ZOPT2201=m
++CONFIG_AK8974=m
++CONFIG_AK09911=m
++CONFIG_BMC150_MAGN_I2C=m
++CONFIG_BMC150_MAGN_SPI=m
++CONFIG_MAG3110=m
++CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
++CONFIG_MMC35240=m
++CONFIG_IIO_ST_MAGN_3AXIS=m
++CONFIG_SENSORS_HMC5843_I2C=m
++CONFIG_SENSORS_HMC5843_SPI=m
++CONFIG_SENSORS_RM3100_I2C=m
++CONFIG_SENSORS_RM3100_SPI=m
++CONFIG_IIO_MUX=y
++CONFIG_HID_SENSOR_INCLINOMETER_3D=m
++CONFIG_HID_SENSOR_DEVICE_ROTATION=m
++CONFIG_IIO_HRTIMER_TRIGGER=m
++CONFIG_IIO_INTERRUPT_TRIGGER=m
++CONFIG_IIO_TIGHTLOOP_TRIGGER=m
++CONFIG_IIO_SYSFS_TRIGGER=m
++CONFIG_AD5272=m
++CONFIG_DS1803=m
++CONFIG_MAX5481=m
++CONFIG_MAX5487=m
++CONFIG_MCP4018=m
++CONFIG_MCP4131=m
++CONFIG_MCP4531=m
++CONFIG_MCP41010=m
++CONFIG_TPL0102=m
++CONFIG_LMP91000=m
++CONFIG_ABP060MG=m
++CONFIG_BMP280=m
++CONFIG_IIO_CROS_EC_BARO=m
++CONFIG_HID_SENSOR_PRESS=m
++CONFIG_HP03=m
++CONFIG_MPL115_I2C=m
++CONFIG_MPL115_SPI=m
++CONFIG_MPL3115=m
++CONFIG_MS5611=m
++CONFIG_MS5611_I2C=m
++CONFIG_MS5611_SPI=m
++CONFIG_MS5637=m
++CONFIG_IIO_ST_PRESS=m
++CONFIG_T5403=m
++CONFIG_HP206C=m
++CONFIG_ZPA2326=m
++CONFIG_AS3935=m
++CONFIG_ISL29501=m
++CONFIG_LIDAR_LITE_V2=m
++CONFIG_MB1232=m
++CONFIG_RFD77402=m
++CONFIG_SRF04=m
++CONFIG_SX9500=m
++CONFIG_SRF08=m
++CONFIG_VL53L0X_I2C=m
++CONFIG_AD2S90=m
++CONFIG_AD2S1200=m
++CONFIG_MAXIM_THERMOCOUPLE=m
++CONFIG_HID_SENSOR_TEMP=m
++CONFIG_MLX90614=m
++CONFIG_MLX90632=m
++CONFIG_TMP006=m
++CONFIG_TMP007=m
++CONFIG_TSYS01=m
++CONFIG_TSYS02D=m
++CONFIG_MAX31856=m
++CONFIG_PWM_CROS_EC=m
++CONFIG_PWM_ROCKCHIP=y
++CONFIG_PHY_XGENE=y
++CONFIG_PHY_QCOM_USB_HS=y
++CONFIG_PHY_QCOM_USB_HSIC=y
++CONFIG_PHY_ROCKCHIP_DP=y
++CONFIG_PHY_ROCKCHIP_EMMC=y
++CONFIG_PHY_ROCKCHIP_INNO_HDMI=y
++CONFIG_PHY_ROCKCHIP_INNO_USB2=y
++CONFIG_PHY_ROCKCHIP_PCIE=y
++CONFIG_PHY_ROCKCHIP_TYPEC=y
++CONFIG_POWERCAP=y
++CONFIG_ARM_CCI_PMU=y
++CONFIG_ARM_CCN=y
++CONFIG_HISI_PMU=y
++CONFIG_LIBNVDIMM=y
++CONFIG_BLK_DEV_PMEM=m
++CONFIG_ND_BLK=m
++CONFIG_ROCKCHIP_EFUSE=y
++CONFIG_MUX_GPIO=y
++CONFIG_VALIDATE_FS_PARSER=y
++CONFIG_EXT4_FS=y
++CONFIG_EXT4_FS_POSIX_ACL=y
++CONFIG_EXT4_FS_SECURITY=y
++CONFIG_REISERFS_FS=m
++CONFIG_REISERFS_PROC_INFO=y
++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_XFS_FS=y
++CONFIG_XFS_QUOTA=y
++CONFIG_XFS_POSIX_ACL=y
++CONFIG_GFS2_FS=m
++CONFIG_GFS2_FS_LOCKING_DLM=y
++CONFIG_OCFS2_FS=m
++# CONFIG_OCFS2_FS_STATS is not set
++# CONFIG_OCFS2_DEBUG_MASKLOG is not set
++CONFIG_BTRFS_FS=m
++CONFIG_BTRFS_FS_POSIX_ACL=y
++CONFIG_NILFS2_FS=m
++CONFIG_F2FS_FS=y
++CONFIG_F2FS_FS_SECURITY=y
++CONFIG_FS_ENCRYPTION=y
++CONFIG_FANOTIFY=y
++CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
++CONFIG_QUOTA_NETLINK_INTERFACE=y
++# CONFIG_PRINT_QUOTA_WARNING is not set
++CONFIG_QFMT_V2=y
++CONFIG_AUTOFS4_FS=y
++CONFIG_FUSE_FS=y
++CONFIG_CUSE=y
++CONFIG_OVERLAY_FS=m
++CONFIG_FSCACHE=m
++CONFIG_FSCACHE_STATS=y
++CONFIG_FSCACHE_OBJECT_LIST=y
++CONFIG_CACHEFILES=m
++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=y
++CONFIG_NTFS_RW=y
++CONFIG_PROC_KCORE=y
++CONFIG_TMPFS=y
++CONFIG_TMPFS_POSIX_ACL=y
++CONFIG_HUGETLBFS=y
++CONFIG_EFIVAR_FS=y
++CONFIG_AFFS_FS=m
++CONFIG_ECRYPT_FS=m
++CONFIG_HFS_FS=m
++CONFIG_HFSPLUS_FS=m
++CONFIG_BEFS_FS=m
++CONFIG_UBIFS_FS=m
++CONFIG_CRAMFS=m
++CONFIG_SQUASHFS=m
++CONFIG_SQUASHFS_XATTR=y
++CONFIG_SQUASHFS_LZ4=y
++CONFIG_SQUASHFS_LZO=y
++CONFIG_SQUASHFS_XZ=y
++CONFIG_MINIX_FS=m
++CONFIG_ROMFS_FS=m
++CONFIG_PSTORE=y
++CONFIG_PSTORE_RAM=m
++CONFIG_SYSV_FS=m
++CONFIG_UFS_FS=m
++CONFIG_NFS_FS=y
++# CONFIG_NFS_V2 is not set
++CONFIG_NFS_V3_ACL=y
++CONFIG_NFS_V4=y
++CONFIG_NFS_SWAP=y
++CONFIG_NFS_V4_1=y
++CONFIG_NFS_V4_2=y
++# CONFIG_NFS_DISABLE_UDP_SUPPORT is not set
++CONFIG_NFSD=m
++CONFIG_NFSD_V3_ACL=y
++CONFIG_NFSD_V4=y
++CONFIG_NFSD_BLOCKLAYOUT=y
++CONFIG_NFSD_SCSILAYOUT=y
++CONFIG_NFSD_FLEXFILELAYOUT=y
++CONFIG_NFSD_V4_SECURITY_LABEL=y
++CONFIG_SUNRPC_DEBUG=y
++CONFIG_CEPH_FS=m
++CONFIG_CEPH_FSCACHE=y
++CONFIG_CEPH_FS_POSIX_ACL=y
++CONFIG_CIFS=m
++CONFIG_CIFS_WEAK_PW_HASH=y
++CONFIG_CIFS_UPCALL=y
++CONFIG_CIFS_XATTR=y
++CONFIG_CIFS_POSIX=y
++CONFIG_CIFS_DFS_UPCALL=y
++CONFIG_CIFS_FSCACHE=y
++CONFIG_CODA_FS=m
++CONFIG_9P_FS=m
++CONFIG_9P_FSCACHE=y
++CONFIG_9P_FS_POSIX_ACL=y
++CONFIG_9P_FS_SECURITY=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_NLS_MAC_ROMAN=m
++CONFIG_NLS_MAC_CELTIC=m
++CONFIG_NLS_MAC_CENTEURO=m
++CONFIG_NLS_MAC_CROATIAN=m
++CONFIG_NLS_MAC_CYRILLIC=m
++CONFIG_NLS_MAC_GAELIC=m
++CONFIG_NLS_MAC_GREEK=m
++CONFIG_NLS_MAC_ICELAND=m
++CONFIG_NLS_MAC_INUIT=m
++CONFIG_NLS_MAC_ROMANIAN=m
++CONFIG_NLS_MAC_TURKISH=m
++CONFIG_DLM=m
++CONFIG_DLM_DEBUG=y
++CONFIG_PERSISTENT_KEYRINGS=y
++CONFIG_TRUSTED_KEYS=m
++CONFIG_ENCRYPTED_KEYS=y
++CONFIG_SECURITY=y
++CONFIG_SECURITY_NETWORK=y
++CONFIG_SECURITY_NETWORK_XFRM=y
++CONFIG_SECURITY_YAMA=y
++# CONFIG_INTEGRITY is not set
++CONFIG_LSM="yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor"
++CONFIG_CRYPTO_USER=m
++# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
++CONFIG_CRYPTO_PCRYPT=m
++CONFIG_CRYPTO_DH=m
++CONFIG_CRYPTO_GCM=y
++CONFIG_CRYPTO_AEGIS128=m
++CONFIG_CRYPTO_SEQIV=y
++CONFIG_CRYPTO_CFB=m
++CONFIG_CRYPTO_LRW=m
++CONFIG_CRYPTO_OFB=m
++CONFIG_CRYPTO_PCBC=m
++CONFIG_CRYPTO_KEYWRAP=m
++CONFIG_CRYPTO_ADIANTUM=m
++CONFIG_CRYPTO_XCBC=m
++CONFIG_CRYPTO_VMAC=m
++CONFIG_CRYPTO_RMD128=m
++CONFIG_CRYPTO_RMD160=m
++CONFIG_CRYPTO_RMD256=m
++CONFIG_CRYPTO_RMD320=m
++CONFIG_CRYPTO_TGR192=m
++CONFIG_CRYPTO_WP512=m
++CONFIG_CRYPTO_ANUBIS=m
++CONFIG_CRYPTO_BLOWFISH=m
++CONFIG_CRYPTO_CAMELLIA=m
++CONFIG_CRYPTO_CAST5=m
++CONFIG_CRYPTO_CAST6=m
++CONFIG_CRYPTO_FCRYPT=m
++CONFIG_CRYPTO_KHAZAD=m
++CONFIG_CRYPTO_SALSA20=m
++CONFIG_CRYPTO_SEED=m
++CONFIG_CRYPTO_SERPENT=m
++CONFIG_CRYPTO_TEA=m
++CONFIG_CRYPTO_TWOFISH=m
++CONFIG_CRYPTO_842=m
++CONFIG_CRYPTO_LZ4=m
++CONFIG_CRYPTO_LZ4HC=m
++CONFIG_CRYPTO_ANSI_CPRNG=m
++CONFIG_CRYPTO_DRBG_HASH=y
++CONFIG_CRYPTO_DRBG_CTR=y
++CONFIG_CRYPTO_USER_API_HASH=y
++CONFIG_CRYPTO_USER_API_SKCIPHER=y
++CONFIG_CRYPTO_USER_API_RNG=y
++CONFIG_CRYPTO_USER_API_AEAD=y
++CONFIG_CRYPTO_DEV_CCP=y
++CONFIG_CRYPTO_DEV_ROCKCHIP=m
++CONFIG_CRYPTO_DEV_SAFEXCEL=m
++CONFIG_CRYPTO_DEV_CCREE=m
++CONFIG_ASYMMETRIC_KEY_TYPE=y
++CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
++CONFIG_X509_CERTIFICATE_PARSER=y
++CONFIG_PKCS7_MESSAGE_PARSER=y
++CONFIG_SYSTEM_TRUSTED_KEYRING=y
++# CONFIG_XZ_DEC_X86 is not set
++# CONFIG_XZ_DEC_POWERPC is not set
++# CONFIG_XZ_DEC_IA64 is not set
++# CONFIG_XZ_DEC_SPARC is not set
++CONFIG_DMA_CMA=y
++CONFIG_CMA_SIZE_MBYTES=64
++CONFIG_PRINTK_TIME=y
++CONFIG_BOOT_PRINTK_DELAY=y
++CONFIG_DYNAMIC_DEBUG=y
++CONFIG_FRAME_WARN=1024
++CONFIG_STRIP_ASM_SYMS=y
++CONFIG_DEBUG_SECTION_MISMATCH=y
++CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0
++# CONFIG_MAGIC_SYSRQ_SERIAL is not set
++CONFIG_KGDB=y
++CONFIG_KGDB_TESTS=y
++CONFIG_DEBUG_VM=y
++CONFIG_SOFTLOCKUP_DETECTOR=y
++CONFIG_SCHEDSTATS=y
++CONFIG_STACKTRACE=y
++CONFIG_DEBUG_LIST=y
++CONFIG_RCU_TORTURE_TEST=m
++CONFIG_RCU_CPU_STALL_TIMEOUT=60
++# CONFIG_RCU_TRACE is not set
++# CONFIG_FTRACE is not set
++# CONFIG_RUNTIME_TESTING_MENU is not set
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-21-arm64-dts-rockchip-setup-USB-type-c-port-as-dual-dat.patch b/gnu/packages/patches/linux-libre-pinebook-pro-21-arm64-dts-rockchip-setup-USB-type-c-port-as-dual-dat.patch
new file mode 100644
index 0000000000..a6d48766e3
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-21-arm64-dts-rockchip-setup-USB-type-c-port-as-dual-dat.patch
@@ -0,0 +1,31 @@ 
+From d82f08c93de578e9f804454950afcf0ea05f4c23 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Sat, 6 Jun 2020 23:45:10 +0200
+Subject: [PATCH 21/22] arm64: dts: rockchip: setup USB type c port as dual
+ data role
+
+Some chargers try to put the charged device into device data role.
+Before this commit this condition caused the tcpm state machine to
+issue a hard reset due to a capability missmatch.
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+index 36f66cbee142..6177d3a0e272 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
+@@ -719,7 +719,7 @@ fusb0: fusb30x@22 {
+ 
+ 		connector {
+ 			compatible = "usb-c-connector";
+-			data-role = "host";
++			data-role = "dual";
+ 			label = "USB-C";
+ 			op-sink-microwatt = <1000000>;
+ 			power-role = "dual";
+-- 
+2.30.0
+
diff --git a/gnu/packages/patches/linux-libre-pinebook-pro-22-soc-rockchip-Port-rockchip_pm_config-driver-to-Linux.patch b/gnu/packages/patches/linux-libre-pinebook-pro-22-soc-rockchip-Port-rockchip_pm_config-driver-to-Linux.patch
new file mode 100644
index 0000000000..68c21da3ab
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-pinebook-pro-22-soc-rockchip-Port-rockchip_pm_config-driver-to-Linux.patch
@@ -0,0 +1,27 @@ 
+From b867286f70ce1368a0536ba45846f318473736e0 Mon Sep 17 00:00:00 2001
+From: Tobias Schramm <t.schramm@manjaro.org>
+Date: Tue, 16 Jun 2020 21:29:29 +0200
+Subject: [PATCH 22/22] soc: rockchip: Port rockchip_pm_config driver to Linux
+ 5.8
+
+Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
+---
+ drivers/soc/rockchip/rockchip_pm_config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/soc/rockchip/rockchip_pm_config.c b/drivers/soc/rockchip/rockchip_pm_config.c
+index 43b2e0f33343..07a0ff9465d3 100644
+--- a/drivers/soc/rockchip/rockchip_pm_config.c
++++ b/drivers/soc/rockchip/rockchip_pm_config.c
+@@ -99,7 +99,7 @@ static void rockchip_pm_virt_pwroff_prepare(void)
+ 
+ 	regulator_suspend_prepare(PM_SUSPEND_MEM);
+ 
+-	error = disable_nonboot_cpus();
++	error = freeze_secondary_cpus(0);
+ 	if (error) {
+ 		pr_err("Disable nonboot cpus failed!\n");
+ 		return;
+-- 
+2.30.0
+
-- 
2.33.1