From 1a3d6966de165b9c2e944506546b58f6eefc2d5f Mon Sep 17 00:00:00 2001
From: Daniel Gachet <daniel.gachet@hefr.ch>
Date: Fri, 7 Sep 2018 22:54:12 +0200
Subject: [PATCH] nano: use now generated gdb on host; linux configuration
 improved; thermal code added

---
 config/buildroot_nano.patch | 395 ++++++++++++++++++++++++++++++++----
 1 file changed, 351 insertions(+), 44 deletions(-)

diff --git a/config/buildroot_nano.patch b/config/buildroot_nano.patch
index 31ac479..08eac25 100644
--- a/config/buildroot_nano.patch
+++ b/config/buildroot_nano.patch
@@ -1,12 +1,12 @@
  board/friendlyarm/nanopi-neo-plus2/boot.cmd        |   6 +
  board/friendlyarm/nanopi-neo-plus2/genimage.cfg    |  40 ++
- board/friendlyarm/nanopi-neo-plus2/linux.patch     |  73 +++
- .../nanopi-neo-plus2/nanopi_neo_plus2_defconfig    | 707 +++++++++++++++++++++
+ board/friendlyarm/nanopi-neo-plus2/linux.patch     | 385 ++++++++++++
+ board/friendlyarm/nanopi-neo-plus2/linux_defconfig | 693 +++++++++++++++++++++
  board/friendlyarm/nanopi-neo-plus2/readme.txt      |  37 ++
  board/friendlyarm/nanopi-neo-plus2/uboot.patch     |  24 +
  board/friendlyarm/nanopi-neo-plus2/uboot_defconfig |  16 +
- configs/nanopi_neo_plus2_defconfig                 |  63 ++
- 8 files changed, 966 insertions(+)
+ configs/nanopi_neo_plus2_defconfig                 |  72 +++
+ 8 files changed, 1273 insertions(+)
 
 diff --git a/board/friendlyarm/nanopi-neo-plus2/boot.cmd b/board/friendlyarm/nanopi-neo-plus2/boot.cmd
 new file mode 100644
@@ -68,14 +68,54 @@ index 0000000000..9072d815b3
 +}
 diff --git a/board/friendlyarm/nanopi-neo-plus2/linux.patch b/board/friendlyarm/nanopi-neo-plus2/linux.patch
 new file mode 100644
-index 0000000000..2940412ff9
+index 0000000000..e921c2927c
 --- /dev/null
 +++ b/board/friendlyarm/nanopi-neo-plus2/linux.patch
-@@ -0,0 +1,73 @@
-+ .../boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts  |  3 ++-
-+ arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi           | 18 +++++++++++++++---
-+ 2 files changed, 17 insertions(+), 4 deletions(-)
+@@ -0,0 +1,385 @@
++ arch/arm/boot/dts/sunxi-h3-h5.dtsi                 |  20 ++
++ .../dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts   |   3 +-
++ arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi       |  18 +-
++ drivers/thermal/Kconfig                            |   7 +
++ drivers/thermal/Makefile                           |   1 +
++ drivers/thermal/sun8i_ths.c                        | 239 +++++++++++++++++++++
++ 6 files changed, 284 insertions(+), 4 deletions(-)
 +
++diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
++index c3bff1105e5d..4364546956ba 100644
++--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+++++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
++@@ -488,6 +488,18 @@
++ 			};
++ 		};
++ 
+++		ths: ths@1c25000 {
+++			#thermal-sensor-cells = <0>;
+++			compatible = "allwinner,sun8i-h3-ths";
+++			reg = <0x01c25000 0x400>,
+++			      <0x01c14234 0x4>;
+++			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+++			resets = <&ccu RST_BUS_THS>;
+++			reset-names = "ahb";
+++			clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
+++			clock-names = "ahb", "ths";
+++		};
+++
++ 		timer@1c20c00 {
++ 			compatible = "allwinner,sun4i-a10-timer";
++ 			reg = <0x01c20c00 0xa0>;
++@@ -857,4 +869,12 @@
++ 			};
++ 		};
++ 	};
+++	
+++	thermal-zones {
+++		cpu_thermal: cpu_thermal {
+++			polling-delay-passive = <330>;
+++			polling-delay = <1000>;
+++			thermal-sensors = <&ths 0>;
+++		};
+++	};
++ };
 +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
 +index 506e25ba028a..798d6ad90017 100644
 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
@@ -145,12 +185,284 @@ index 0000000000..2940412ff9
 + 	psci {
 + 		compatible = "arm,psci-0.2";
 + 		method = "smc";
-diff --git a/board/friendlyarm/nanopi-neo-plus2/nanopi_neo_plus2_defconfig b/board/friendlyarm/nanopi-neo-plus2/nanopi_neo_plus2_defconfig
++diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
++index 82979880f985..9f8d8bbc6ff3 100644
++--- a/drivers/thermal/Kconfig
+++++ b/drivers/thermal/Kconfig
++@@ -420,6 +420,13 @@ depends on ARCH_BCM || ARCH_BRCMSTB || ARCH_BCM2835 || COMPILE_TEST
++ source "drivers/thermal/broadcom/Kconfig"
++ endmenu
++ 
+++config SUN8I_THS
+++	tristate "Thermal sensor driver for Allwinner H3"
+++	depends on MACH_SUN8I || (ARM64 && ARCH_SUNXI)
+++	depends on OF
+++	help
+++	  Enable this to support thermal reporting on some newer Allwinner SoCs.
+++
++ menu "Texas Instruments thermal drivers"
++ depends on ARCH_HAS_BANDGAP || COMPILE_TEST
++ depends on HAS_IOMEM
++diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
++index 610344eb3e03..dc8a24fddba9 100644
++--- a/drivers/thermal/Makefile
+++++ b/drivers/thermal/Makefile
++@@ -61,3 +61,4 @@ obj-$(CONFIG_MTK_THERMAL)	+= mtk_thermal.o
++ obj-$(CONFIG_GENERIC_ADC_THERMAL)	+= thermal-generic-adc.o
++ obj-$(CONFIG_ZX2967_THERMAL)	+= zx2967_thermal.o
++ obj-$(CONFIG_UNIPHIER_THERMAL)	+= uniphier_thermal.o
+++obj-$(CONFIG_SUN8I_THS)		+= sun8i_ths.o
++diff --git a/drivers/thermal/sun8i_ths.c b/drivers/thermal/sun8i_ths.c
++new file mode 100644
++index 000000000000..cfe7d1073b8c
++--- /dev/null
+++++ b/drivers/thermal/sun8i_ths.c
++@@ -0,0 +1,239 @@
+++/*
+++ * Thermal sensor driver for Allwinner H3 SoC
+++ *
+++ * Copyright (C) 2016 Ondřej Jirman
+++ * Based on the work of Josef Gajdusek <atx@atx.name>
+++ *
+++ * This software is licensed under the terms of the GNU General Public
+++ * License version 2, as published by the Free Software Foundation, and
+++ * may be copied, distributed, and modified under those terms.
+++ *
+++ * This program is distributed in the hope that it will be useful,
+++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+++ * GNU General Public License for more details.
+++ *
+++ */
+++
+++#include <linux/clk.h>
+++#include <linux/interrupt.h>
+++#include <linux/io.h>
+++#include <linux/module.h>
+++#include <linux/of_device.h>
+++#include <linux/platform_device.h>
+++#include <linux/reset.h>
+++#include <linux/slab.h>
+++#include <linux/thermal.h>
+++#include <linux/printk.h>
+++
+++#define THS_H3_CTRL0		0x00
+++#define THS_H3_CTRL2		0x40
+++#define THS_H3_INT_CTRL		0x44
+++#define THS_H3_STAT		0x48
+++#define THS_H3_FILTER		0x70
+++#define THS_H3_CDATA		0x74
+++#define THS_H3_DATA		0x80
+++
+++#define THS_H3_CTRL0_SENSOR_ACQ0(x)     (x)
+++#define THS_H3_CTRL2_SENSE_EN           BIT(0)
+++#define THS_H3_CTRL2_SENSOR_ACQ1(x)     ((x) << 16)
+++#define THS_H3_INT_CTRL_DATA_IRQ_EN     BIT(8)
+++#define THS_H3_INT_CTRL_THERMAL_PER(x)  ((x) << 12)
+++#define THS_H3_STAT_DATA_IRQ_STS        BIT(8)
+++#define THS_H3_FILTER_TYPE(x)           ((x) << 0)
+++#define THS_H3_FILTER_EN                BIT(2)
+++
+++#define THS_H3_CLK_IN 40000000  /* Hz */
+++#define THS_H3_DATA_PERIOD 330  /* ms */
+++
+++#define THS_H3_FILTER_TYPE_VALUE		2  /* average over 2^(n+1) samples */
+++#define THS_H3_FILTER_DIV			(1 << (THS_H3_FILTER_TYPE_VALUE + 1))
+++#define THS_H3_INT_CTRL_THERMAL_PER_VALUE \
+++	(THS_H3_DATA_PERIOD * (THS_H3_CLK_IN / 1000) / THS_H3_FILTER_DIV / 4096 - 1)
+++#define THS_H3_CTRL0_SENSOR_ACQ0_VALUE		0x3f /* 16us */
+++#define THS_H3_CTRL2_SENSOR_ACQ1_VALUE		0x3f
+++
+++struct sun8i_ths_data {
+++	struct reset_control *reset;
+++	struct clk *clk;
+++	struct clk *busclk;
+++	void __iomem *regs;
+++	struct thermal_zone_device *tzd;
+++	u32 temp;
+++};
+++
+++static int sun8i_ths_get_temp(void *_data, int *out)
+++{
+++	struct sun8i_ths_data *data = _data;
+++
+++	if (data->temp == 0)
+++		return -EBUSY;
+++
+++	/* Formula and parameters from the Allwinner 3.4 kernel */
+++	*out = 217000 - (int)((data->temp * 1000000) / 8253);
+++	return 0;
+++}
+++
+++static irqreturn_t sun8i_ths_irq_thread(int irq, void *_data)
+++{
+++	struct sun8i_ths_data *data = _data;
+++
+++	writel(THS_H3_STAT_DATA_IRQ_STS, data->regs + THS_H3_STAT);
+++
+++	data->temp = readl(data->regs + THS_H3_DATA);
+++	if (data->temp)
+++		thermal_zone_device_update(data->tzd, THERMAL_EVENT_TEMP_SAMPLE);
+++
+++	return IRQ_HANDLED;
+++}
+++
+++static void sun8i_ths_h3_init(struct sun8i_ths_data *data)
+++{
+++	writel(THS_H3_CTRL0_SENSOR_ACQ0(THS_H3_CTRL0_SENSOR_ACQ0_VALUE),
+++		data->regs + THS_H3_CTRL0);
+++	writel(THS_H3_FILTER_EN | THS_H3_FILTER_TYPE(THS_H3_FILTER_TYPE_VALUE),
+++		data->regs + THS_H3_FILTER);
+++	writel(THS_H3_CTRL2_SENSOR_ACQ1(THS_H3_CTRL2_SENSOR_ACQ1_VALUE) |
+++		THS_H3_CTRL2_SENSE_EN,
+++		data->regs + THS_H3_CTRL2);
+++	writel(THS_H3_INT_CTRL_THERMAL_PER(THS_H3_INT_CTRL_THERMAL_PER_VALUE) |
+++		THS_H3_INT_CTRL_DATA_IRQ_EN,
+++		data->regs + THS_H3_INT_CTRL);
+++}
+++
+++static const struct thermal_zone_of_device_ops sun8i_ths_thermal_ops = {
+++	.get_temp = sun8i_ths_get_temp,
+++};
+++
+++static int sun8i_ths_probe(struct platform_device *pdev)
+++{
+++	struct sun8i_ths_data *data;
+++	struct resource *res;
+++	int ret;
+++	int irq;
+++
+++	data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
+++	if (!data)
+++		return -ENOMEM;
+++
+++	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+++        if (!res) {
+++                dev_err(&pdev->dev, "no memory resources defined\n");
+++                return -EINVAL;
+++        }
+++
+++	data->regs = devm_ioremap_resource(&pdev->dev, res);
+++	if (IS_ERR(data->regs)) {
+++		ret = PTR_ERR(data->regs);
+++		dev_err(&pdev->dev, "failed to ioremap THS registers: %d\n", ret);
+++		return ret;
+++	}
+++
+++	irq = platform_get_irq(pdev, 0);
+++	if (irq < 0) {
+++		dev_err(&pdev->dev, "failed to get IRQ: %d\n", irq);
+++		return irq;
+++	}
+++
+++	ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
+++					sun8i_ths_irq_thread, IRQF_ONESHOT,
+++					dev_name(&pdev->dev), data);
+++	if (ret)
+++		return ret;
+++
+++	data->busclk = devm_clk_get(&pdev->dev, "ahb");
+++	if (IS_ERR(data->busclk)) {
+++		ret = PTR_ERR(data->busclk);
+++		dev_err(&pdev->dev, "failed to get ahb clk: %d\n", ret);
+++		return ret;
+++	}
+++
+++	data->clk = devm_clk_get(&pdev->dev, "ths");
+++	if (IS_ERR(data->clk)) {
+++		ret = PTR_ERR(data->clk);
+++		dev_err(&pdev->dev, "failed to get ths clk: %d\n", ret);
+++		return ret;
+++	}
+++
+++	data->reset = devm_reset_control_get(&pdev->dev, "ahb");
+++	if (IS_ERR(data->reset)) {
+++		ret = PTR_ERR(data->reset);
+++		dev_err(&pdev->dev, "failed to get reset: %d\n", ret);
+++		return ret;
+++	}
+++
+++	ret = reset_control_deassert(data->reset);
+++	if (ret) {
+++		dev_err(&pdev->dev, "reset deassert failed: %d\n", ret);
+++		return ret;
+++	}
+++
+++	ret = clk_prepare_enable(data->busclk);
+++	if (ret) {
+++		dev_err(&pdev->dev, "failed to enable bus clk: %d\n", ret);
+++		goto err_assert_reset;
+++	}
+++
+++	ret = clk_prepare_enable(data->clk);
+++	if (ret) {
+++		dev_err(&pdev->dev, "failed to enable ths clk: %d\n", ret);
+++		goto err_disable_bus;
+++	}
+++
+++	ret = clk_set_rate(data->clk, THS_H3_CLK_IN);
+++	if (ret)
+++		goto err_disable_ths;
+++
+++	data->tzd = devm_thermal_zone_of_sensor_register(&pdev->dev, 0, data,
+++						    &sun8i_ths_thermal_ops);
+++	if (IS_ERR(data->tzd)) {
+++		ret = PTR_ERR(data->tzd);
+++		dev_err(&pdev->dev, "failed to register thermal zone: %d\n",
+++				ret);
+++		goto err_disable_ths;
+++	}
+++
+++	sun8i_ths_h3_init(data);
+++
+++	platform_set_drvdata(pdev, data);
+++	return 0;
+++
+++err_disable_ths:
+++	clk_disable_unprepare(data->clk);
+++err_disable_bus:
+++	clk_disable_unprepare(data->busclk);
+++err_assert_reset:
+++	reset_control_assert(data->reset);
+++	return ret;
+++}
+++
+++static int sun8i_ths_remove(struct platform_device *pdev)
+++{
+++	struct sun8i_ths_data *data = platform_get_drvdata(pdev);
+++
+++	reset_control_assert(data->reset);
+++	clk_disable_unprepare(data->clk);
+++	clk_disable_unprepare(data->busclk);
+++	return 0;
+++}
+++
+++static const struct of_device_id sun8i_ths_id_table[] = {
+++	{ .compatible = "allwinner,sun8i-h3-ths", },
+++	{ /* sentinel */ },
+++};
+++MODULE_DEVICE_TABLE(of, sun8i_ths_id_table);
+++
+++static struct platform_driver sun8i_ths_driver = {
+++	.probe = sun8i_ths_probe,
+++	.remove = sun8i_ths_remove,
+++	.driver = {
+++		.name = "sun8i_ths",
+++		.of_match_table = sun8i_ths_id_table,
+++	},
+++};
+++
+++module_platform_driver(sun8i_ths_driver);
+++
+++MODULE_AUTHOR("Ondřej Jirman <megous@megous.com>");
+++MODULE_DESCRIPTION("Thermal sensor driver for Allwinner H3 SoC");
+++MODULE_LICENSE("GPL v2");
+diff --git a/board/friendlyarm/nanopi-neo-plus2/linux_defconfig b/board/friendlyarm/nanopi-neo-plus2/linux_defconfig
 new file mode 100644
-index 0000000000..757355e000
+index 0000000000..b69419a154
 --- /dev/null
-+++ b/board/friendlyarm/nanopi-neo-plus2/nanopi_neo_plus2_defconfig
-@@ -0,0 +1,707 @@
++++ b/board/friendlyarm/nanopi-neo-plus2/linux_defconfig
+@@ -0,0 +1,693 @@
 +CONFIG_SYSVIPC=y
 +CONFIG_POSIX_MQUEUE=y
 +CONFIG_AUDIT=y
@@ -219,15 +531,9 @@ index 0000000000..757355e000
 +CONFIG_ARCH_ZX=y
 +CONFIG_ARCH_ZYNQMP=y
 +CONFIG_PCI=y
-+CONFIG_HOTPLUG_PCI_PCIE=y
 +CONFIG_PCI_IOV=y
 +CONFIG_HOTPLUG_PCI=y
 +CONFIG_HOTPLUG_PCI_ACPI=y
-+CONFIG_PCI_LAYERSCAPE=y
-+CONFIG_PCI_HISI=y
-+CONFIG_PCIE_QCOM=y
-+CONFIG_PCIE_ARMADA_8K=y
-+CONFIG_PCIE_KIRIN=y
 +CONFIG_PCI_AARDVARK=y
 +CONFIG_PCI_TEGRA=y
 +CONFIG_PCIE_RCAR=y
@@ -235,7 +541,11 @@ index 0000000000..757355e000
 +CONFIG_PCI_XGENE=y
 +CONFIG_PCI_HOST_THUNDER_PEM=y
 +CONFIG_PCI_HOST_THUNDER_ECAM=y
-+CONFIG_PCIE_ROCKCHIP=m
++CONFIG_PCI_LAYERSCAPE=y
++CONFIG_PCI_HISI=y
++CONFIG_PCIE_QCOM=y
++CONFIG_PCIE_ARMADA_8K=y
++CONFIG_PCIE_KIRIN=y
 +CONFIG_ARM64_VA_BITS_48=y
 +CONFIG_SCHED_MC=y
 +CONFIG_NUMA=y
@@ -338,9 +648,7 @@ index 0000000000..757355e000
 +CONFIG_BLK_DEV_LOOP=y
 +CONFIG_BLK_DEV_NBD=m
 +CONFIG_VIRTIO_BLK=y
-+CONFIG_BLK_DEV_NVME=m
 +CONFIG_SRAM=y
-+CONFIG_EEPROM_AT25=m
 +# CONFIG_SCSI_PROC_FS is not set
 +CONFIG_BLK_DEV_SD=y
 +CONFIG_SCSI_SAS_ATA=y
@@ -382,9 +690,9 @@ index 0000000000..757355e000
 +# CONFIG_NET_VENDOR_AQUANTIA is not set
 +# CONFIG_NET_VENDOR_ARC is not set
 +# CONFIG_NET_VENDOR_ATHEROS is not set
-+# CONFIG_NET_CADENCE is not set
 +# CONFIG_NET_VENDOR_BROADCOM is not set
 +# CONFIG_NET_VENDOR_BROCADE is not set
++# CONFIG_NET_CADENCE is not set
 +# CONFIG_NET_VENDOR_CAVIUM is not set
 +# CONFIG_NET_VENDOR_CHELSIO is not set
 +# CONFIG_NET_VENDOR_CISCO is not set
@@ -393,12 +701,12 @@ index 0000000000..757355e000
 +# CONFIG_NET_VENDOR_DLINK is not set
 +# CONFIG_NET_VENDOR_EMULEX is not set
 +# CONFIG_NET_VENDOR_EZCHIP is not set
-+# CONFIG_NET_VENDOR_EXAR is not set
 +# CONFIG_NET_VENDOR_FREESCALE is not set
 +# CONFIG_NET_VENDOR_HISILICON is not set
 +# CONFIG_NET_VENDOR_HP is not set
 +# CONFIG_NET_VENDOR_HUAWEI is not set
 +# CONFIG_NET_VENDOR_INTEL is not set
++# CONFIG_NET_VENDOR_EXAR is not set
 +# CONFIG_NET_VENDOR_MARVELL is not set
 +# CONFIG_NET_VENDOR_MELLANOX is not set
 +# CONFIG_NET_VENDOR_MICREL is not set
@@ -412,15 +720,15 @@ index 0000000000..757355e000
 +# CONFIG_NET_PACKET_ENGINE is not set
 +# CONFIG_NET_VENDOR_QLOGIC is not set
 +# CONFIG_NET_VENDOR_QUALCOMM is not set
++# CONFIG_NET_VENDOR_RDC is not set
 +# CONFIG_NET_VENDOR_REALTEK is not set
 +# CONFIG_NET_VENDOR_RENESAS is not set
-+# CONFIG_NET_VENDOR_RDC is not set
 +# CONFIG_NET_VENDOR_ROCKER is not set
 +# CONFIG_NET_VENDOR_SAMSUNG is not set
 +# CONFIG_NET_VENDOR_SEEQ is not set
++# CONFIG_NET_VENDOR_SOLARFLARE is not set
 +# CONFIG_NET_VENDOR_SILAN is not set
 +# CONFIG_NET_VENDOR_SIS is not set
-+# CONFIG_NET_VENDOR_SOLARFLARE is not set
 +# CONFIG_NET_VENDOR_SMSC is not set
 +# CONFIG_NET_VENDOR_SOCIONEXT is not set
 +CONFIG_STMMAC_ETH=y
@@ -428,11 +736,11 @@ index 0000000000..757355e000
 +# CONFIG_DWMAC_MESON is not set
 +# CONFIG_DWMAC_ROCKCHIP is not set
 +# CONFIG_NET_VENDOR_SUN is not set
++# CONFIG_NET_VENDOR_SYNOPSYS is not set
 +# CONFIG_NET_VENDOR_TEHUTI is not set
 +# CONFIG_NET_VENDOR_TI is not set
 +# CONFIG_NET_VENDOR_VIA is not set
 +# CONFIG_NET_VENDOR_WIZNET is not set
-+# CONFIG_NET_VENDOR_SYNOPSYS is not set
 +CONFIG_MDIO_BITBANG=y
 +CONFIG_MDIO_BUS_MUX_MMIOREG=y
 +CONFIG_LED_TRIGGER_PHY=y
@@ -526,7 +834,6 @@ index 0000000000..757355e000
 +CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
 +CONFIG_PINCTRL_MT7622=y
 +CONFIG_GPIO_SYSFS=y
-+# CONFIG_GPIO_RASPBERRYPI_EXP is not set
 +# CONFIG_GPIO_BRCMSTB is not set
 +CONFIG_GPIO_DWAPB=y
 +# CONFIG_GPIO_TEGRA is not set
@@ -548,6 +855,7 @@ index 0000000000..757355e000
 +CONFIG_ROCKCHIP_THERMAL=m
 +CONFIG_RCAR_GEN3_THERMAL=y
 +CONFIG_BRCMSTB_THERMAL=m
++CONFIG_SUN8I_THS=y
 +CONFIG_EXYNOS_THERMAL=y
 +CONFIG_TEGRA_BPMP_THERMAL=m
 +CONFIG_QCOM_TSENS=y
@@ -658,7 +966,6 @@ index 0000000000..757355e000
 +CONFIG_USB_CHIPIDEA=y
 +CONFIG_USB_CHIPIDEA_UDC=y
 +CONFIG_USB_CHIPIDEA_HOST=y
-+CONFIG_USB_CHIPIDEA_ULPI=y
 +CONFIG_USB_ISP1760=y
 +CONFIG_USB_HSIC_USB3503=y
 +CONFIG_NOP_USB_XCEIV=y
@@ -666,7 +973,6 @@ index 0000000000..757355e000
 +CONFIG_USB_GADGET=y
 +CONFIG_USB_RENESAS_USBHS_UDC=m
 +CONFIG_USB_RENESAS_USB3=m
-+CONFIG_USB_ULPI_BUS=y
 +CONFIG_MMC=y
 +CONFIG_MMC_BLOCK_MINORS=32
 +CONFIG_MMC_ARMMMCI=y
@@ -748,7 +1054,6 @@ index 0000000000..757355e000
 +CONFIG_ARM_MHU=y
 +CONFIG_PLATFORM_MHU=y
 +CONFIG_BCM2835_MBOX=y
-+CONFIG_HI6220_MBOX=y
 +CONFIG_QCOM_APCS_IPC=y
 +CONFIG_ROCKCHIP_IOMMU=y
 +CONFIG_TEGRA_IOMMU_SMMU=y
@@ -756,7 +1061,6 @@ index 0000000000..757355e000
 +CONFIG_ARM_SMMU_V3=y
 +CONFIG_QCOM_IOMMU=y
 +CONFIG_RPMSG_QCOM_SMD=y
-+CONFIG_RASPBERRYPI_POWER=y
 +CONFIG_QCOM_SMEM=y
 +CONFIG_QCOM_SMD_RPM=y
 +CONFIG_QCOM_SMP2P=y
@@ -798,31 +1102,25 @@ index 0000000000..757355e000
 +CONFIG_TEE=y
 +CONFIG_OPTEE=y
 +CONFIG_ARM_SCPI_PROTOCOL=y
-+CONFIG_RASPBERRYPI_FIRMWARE=y
++# CONFIG_DMIID is not set
 +CONFIG_EFI_CAPSULE_LOADER=y
 +CONFIG_ACPI=y
 +CONFIG_ACPI_APEI=y
 +CONFIG_ACPI_APEI_GHES=y
-+CONFIG_ACPI_APEI_PCIEAER=y
 +CONFIG_ACPI_APEI_MEMORY_FAILURE=y
 +CONFIG_ACPI_APEI_EINJ=y
 +CONFIG_EXT2_FS=y
 +CONFIG_EXT3_FS=y
 +CONFIG_EXT4_FS_POSIX_ACL=y
-+CONFIG_BTRFS_FS=m
-+CONFIG_BTRFS_FS_POSIX_ACL=y
 +CONFIG_FANOTIFY=y
 +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
 +CONFIG_QUOTA=y
++# CONFIG_PRINT_QUOTA_WARNING is not set
 +CONFIG_AUTOFS4_FS=y
-+CONFIG_FUSE_FS=m
-+CONFIG_CUSE=m
-+CONFIG_OVERLAY_FS=m
 +CONFIG_VFAT_FS=y
 +CONFIG_HUGETLBFS=y
 +CONFIG_CONFIGFS_FS=y
 +CONFIG_EFIVAR_FS=y
-+CONFIG_SQUASHFS=y
 +CONFIG_NFS_FS=y
 +CONFIG_NFS_V4=y
 +CONFIG_NFS_V4_1=y
@@ -955,13 +1253,15 @@ index 0000000000..f1c64ba55e
 +CONFIG_USB_EHCI_HCD=y
 diff --git a/configs/nanopi_neo_plus2_defconfig b/configs/nanopi_neo_plus2_defconfig
 new file mode 100644
-index 0000000000..849a568b4d
+index 0000000000..d44e8690a8
 --- /dev/null
 +++ b/configs/nanopi_neo_plus2_defconfig
-@@ -0,0 +1,63 @@
+@@ -0,0 +1,72 @@
 +BR2_aarch64=y
 +BR2_ARM_FPU_VFPV4=y
 +BR2_TOOLCHAIN_EXTERNAL=y
++BR2_PACKAGE_HOST_GDB=y
++BR2_GDB_VERSION_8_0=y
 +BR2_TARGET_GENERIC_ISSUE="Welcome to FriendlyARM Nanopi NEO Plus2"
 +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
 +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-neo-plus2/genimage.cfg"
@@ -970,7 +1270,7 @@ index 0000000000..849a568b4d
 +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.5"
 +BR2_LINUX_KERNEL_PATCH="board/friendlyarm/nanopi-neo-plus2/linux.patch"
 +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/friendlyarm/nanopi-neo-plus2/nanopi_neo_plus2_defconfig"
++BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/friendlyarm/nanopi-neo-plus2/linux_defconfig"
 +BR2_LINUX_KERNEL_DTS_SUPPORT=y
 +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-nanopi-neo-plus2"
 +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
@@ -983,15 +1283,22 @@ index 0000000000..849a568b4d
 +BR2_PACKAGE_GDB=y
 +BR2_PACKAGE_GDB_SERVER=y
 +BR2_PACKAGE_GDB_DEBUGGER=y
++BR2_PACKAGE_LSOF=y
 +BR2_PACKAGE_OPROFILE=y
 +BR2_PACKAGE_STRACE=y
++BR2_PACKAGE_VALGRIND=y
++BR2_PACKAGE_I2C_TOOLS=y
++BR2_PACKAGE_UBOOT_TOOLS=y
++BR2_PACKAGE_MICROPYTHON=y
++BR2_PACKAGE_MICROPYTHON_LIB=y
 +BR2_PACKAGE_OPENSSH=y
 +BR2_PACKAGE_HTOP=y
 +BR2_PACKAGE_PROCPS_NG=y
++BR2_PACKAGE_VIM=y
 +BR2_TARGET_ROOTFS_EXT2=y
 +BR2_TARGET_ROOTFS_EXT2_4=y
 +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs"
-+BR2_TARGET_ROOTFS_EXT2_SIZE="100M"
++BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
 +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
 +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git"
-- 
GitLab