From 12bd26f46c749825f877ff8639303ddbc8034e52 Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Wed, 21 Dec 2016 17:15:11 +0100 Subject: [PATCH] linux4.9: various tweaks - enabled CONFIG_MMC_REALTEK_USB=m (fixes #5195) - enabled CONFIG_IKCONFIG=y (multiple requests) - removed beaglebone patch (use beaglebone-kernel instead) - reenabled armv7 and aarch64 cross-building - installing dtb for aarch64 - fix cyclic module dependency and depmod crash in 4.9.0 allmodconfig --- srcpkgs/linux4.9/files/i386-dotconfig | 4 +- srcpkgs/linux4.9/files/x86_64-dotconfig | 4 +- srcpkgs/linux4.9/patches/remoteproc.patch | 162 ++++++++++++++++++++++ srcpkgs/linux4.9/template | 16 +-- 4 files changed, 172 insertions(+), 14 deletions(-) create mode 100644 srcpkgs/linux4.9/patches/remoteproc.patch diff --git a/srcpkgs/linux4.9/files/i386-dotconfig b/srcpkgs/linux4.9/files/i386-dotconfig index 928eb6e9c7..13da537178 100644 --- a/srcpkgs/linux4.9/files/i386-dotconfig +++ b/srcpkgs/linux4.9/files/i386-dotconfig @@ -136,7 +136,7 @@ CONFIG_RCU_STALL_COMMON=y # CONFIG_TREE_RCU_TRACE is not set # CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y -CONFIG_IKCONFIG=m +CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=19 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 @@ -5917,7 +5917,7 @@ CONFIG_MMC_VUB300=m CONFIG_MMC_USHC=m # CONFIG_MMC_USDHI6ROL0 is not set CONFIG_MMC_REALTEK_PCI=m -# CONFIG_MMC_REALTEK_USB is not set +CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_TOSHIBA_PCI=m CONFIG_MMC_MTK=m CONFIG_MEMSTICK=m diff --git a/srcpkgs/linux4.9/files/x86_64-dotconfig b/srcpkgs/linux4.9/files/x86_64-dotconfig index 130711d28d..9b172eeaea 100644 --- a/srcpkgs/linux4.9/files/x86_64-dotconfig +++ b/srcpkgs/linux4.9/files/x86_64-dotconfig @@ -141,7 +141,7 @@ CONFIG_RCU_STALL_COMMON=y # CONFIG_TREE_RCU_TRACE is not set # CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y -CONFIG_IKCONFIG=m +CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=19 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 @@ -5938,7 +5938,7 @@ CONFIG_MMC_VUB300=m CONFIG_MMC_USHC=m # CONFIG_MMC_USDHI6ROL0 is not set CONFIG_MMC_REALTEK_PCI=m -# CONFIG_MMC_REALTEK_USB is not set +CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_TOSHIBA_PCI=m CONFIG_MMC_MTK=m CONFIG_MEMSTICK=m diff --git a/srcpkgs/linux4.9/patches/remoteproc.patch b/srcpkgs/linux4.9/patches/remoteproc.patch new file mode 100644 index 0000000000..4a827ed451 --- /dev/null +++ b/srcpkgs/linux4.9/patches/remoteproc.patch @@ -0,0 +1,162 @@ +From patchwork Fri Nov 4 02:37:25 2016 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +Subject: remoteproc: qcom_wcnss: Fix circular module dependency +From: Bjorn Andersson +X-Patchwork-Id: 9411771 +Message-Id: <1478227045-1768-1-git-send-email-bjorn.andersson@linaro.org> +To: Ohad Ben-Cohen , + Bjorn Andersson +Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, + linux-arm-msm@vger.kernel.org, + =?UTF-8?q?Andreas=20F=C3=A4rber?= +Date: Thu, 3 Nov 2016 19:37:25 -0700 + +The tie between the main WCNSS driver and the IRIS driver causes a +circular dependency between the two modules. Neither part makes sense to +have on their own so lets merge them into one module. + +For the sake of picking up the clock and regulator resources described +in the iris of_node we need an associated struct device. But, to keep +the size of the patch down we continue to represent the IRIS part as its +own platform_driver, within the same module, rather than setting up a +dummy device. + +Reported-by: Andreas Färber +Signed-off-by: Bjorn Andersson +--- + drivers/remoteproc/Kconfig | 5 ----- + drivers/remoteproc/Makefile | 5 +++-- + drivers/remoteproc/qcom_wcnss.c | 25 +++++++++++++++++++++++-- + drivers/remoteproc/qcom_wcnss.h | 2 ++ + drivers/remoteproc/qcom_wcnss_iris.c | 8 +------- + 5 files changed, 29 insertions(+), 16 deletions(-) + +diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig +index f396bfef5d42..5fcbefcb8636 100644 +--- a/drivers/remoteproc/Kconfig ++++ b/drivers/remoteproc/Kconfig +@@ -91,17 +91,12 @@ config QCOM_Q6V5_PIL + Say y here to support the Qualcomm Peripherial Image Loader for the + Hexagon V5 based remote processors. + +-config QCOM_WCNSS_IRIS +- tristate +- depends on OF && ARCH_QCOM +- + config QCOM_WCNSS_PIL + tristate "Qualcomm WCNSS Peripheral Image Loader" + depends on OF && ARCH_QCOM + depends on QCOM_SMEM + select QCOM_MDT_LOADER + select QCOM_SCM +- select QCOM_WCNSS_IRIS + select REMOTEPROC + help + Say y here to support the Peripheral Image Loader for the Qualcomm +diff --git a/drivers/remoteproc/Makefile b/drivers/remoteproc/Makefile +index 6dfb62ed643f..034b6f3563a7 100644 +--- a/drivers/remoteproc/Makefile ++++ b/drivers/remoteproc/Makefile +@@ -13,6 +13,7 @@ obj-$(CONFIG_WKUP_M3_RPROC) += wkup_m3_rproc.o + obj-$(CONFIG_DA8XX_REMOTEPROC) += da8xx_remoteproc.o + obj-$(CONFIG_QCOM_MDT_LOADER) += qcom_mdt_loader.o + obj-$(CONFIG_QCOM_Q6V5_PIL) += qcom_q6v5_pil.o +-obj-$(CONFIG_QCOM_WCNSS_IRIS) += qcom_wcnss_iris.o +-obj-$(CONFIG_QCOM_WCNSS_PIL) += qcom_wcnss.o ++obj-$(CONFIG_QCOM_WCNSS_PIL) += qcom_wcnss_pil.o ++qcom_wcnss_pil-y += qcom_wcnss.o ++qcom_wcnss_pil-y += qcom_wcnss_iris.o + obj-$(CONFIG_ST_REMOTEPROC) += st_remoteproc.o +diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c +index f5cedeaafba1..323b629474a6 100644 +--- a/drivers/remoteproc/qcom_wcnss.c ++++ b/drivers/remoteproc/qcom_wcnss.c +@@ -143,7 +143,6 @@ void qcom_wcnss_assign_iris(struct qcom_wcnss *wcnss, + + mutex_unlock(&wcnss->iris_lock); + } +-EXPORT_SYMBOL_GPL(qcom_wcnss_assign_iris); + + static int wcnss_load(struct rproc *rproc, const struct firmware *fw) + { +@@ -619,6 +618,28 @@ static struct platform_driver wcnss_driver = { + }, + }; + +-module_platform_driver(wcnss_driver); ++static int __init wcnss_init(void) ++{ ++ int ret; ++ ++ ret = platform_driver_register(&wcnss_driver); ++ if (ret) ++ return ret; ++ ++ ret = platform_driver_register(&qcom_iris_driver); ++ if (ret) ++ platform_driver_unregister(&wcnss_driver); ++ ++ return ret; ++} ++module_init(wcnss_init); ++ ++static void __exit wcnss_exit(void) ++{ ++ platform_driver_unregister(&qcom_iris_driver); ++ platform_driver_unregister(&wcnss_driver); ++} ++module_exit(wcnss_exit); ++ + MODULE_DESCRIPTION("Qualcomm Peripherial Image Loader for Wireless Subsystem"); + MODULE_LICENSE("GPL v2"); +diff --git a/drivers/remoteproc/qcom_wcnss.h b/drivers/remoteproc/qcom_wcnss.h +index 9dc4a9fe41e1..25fb7f62a457 100644 +--- a/drivers/remoteproc/qcom_wcnss.h ++++ b/drivers/remoteproc/qcom_wcnss.h +@@ -4,6 +4,8 @@ + struct qcom_iris; + struct qcom_wcnss; + ++extern struct platform_driver qcom_iris_driver; ++ + struct wcnss_vreg_info { + const char * const name; + int min_voltage; +diff --git a/drivers/remoteproc/qcom_wcnss_iris.c b/drivers/remoteproc/qcom_wcnss_iris.c +index f0ca24a8dd0b..05d6e175411a 100644 +--- a/drivers/remoteproc/qcom_wcnss_iris.c ++++ b/drivers/remoteproc/qcom_wcnss_iris.c +@@ -94,14 +94,12 @@ int qcom_iris_enable(struct qcom_iris *iris) + + return ret; + } +-EXPORT_SYMBOL_GPL(qcom_iris_enable); + + void qcom_iris_disable(struct qcom_iris *iris) + { + clk_disable_unprepare(iris->xo_clk); + regulator_bulk_disable(iris->num_vregs, iris->vregs); + } +-EXPORT_SYMBOL_GPL(qcom_iris_disable); + + static int qcom_iris_probe(struct platform_device *pdev) + { +@@ -174,7 +172,7 @@ static const struct of_device_id iris_of_match[] = { + {} + }; + +-static struct platform_driver wcnss_driver = { ++struct platform_driver qcom_iris_driver = { + .probe = qcom_iris_probe, + .remove = qcom_iris_remove, + .driver = { +@@ -182,7 +180,3 @@ static struct platform_driver wcnss_driver = { + .of_match_table = iris_of_match, + }, + }; +- +-module_platform_driver(wcnss_driver); +-MODULE_DESCRIPTION("Qualcomm Wireless Subsystem Iris driver"); +-MODULE_LICENSE("GPL v2"); diff --git a/srcpkgs/linux4.9/template b/srcpkgs/linux4.9/template index 2753e56a33..829db2f7df 100644 --- a/srcpkgs/linux4.9/template +++ b/srcpkgs/linux4.9/template @@ -1,7 +1,8 @@ # Template file for 'linux4.9' pkgname=linux4.9 version=4.9.0 -revision=2 +revision=3 +patch_args="-Np1" wrksrc="linux-${version%.*}" maintainer="Juan RP " homepage="http://www.kernel.org" @@ -10,8 +11,7 @@ short_desc="The Linux kernel and modules (${version%.*} series)" distfiles="https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${version%.*}.tar.xz" checksum=029098dcffab74875e086ae970e3828456838da6e0ba22ce3f64ef764f3d7f1a -nocross=yes -nodebug=yes +nodebug=yes # -dbg package is generated below manually nostrip=yes noverifyrdeps=yes noshlibprovides=yes @@ -44,11 +44,7 @@ do_configure() { case "$XBPS_TARGET_MACHINE" in i686*) arch=i386;; x86_64*) arch=x86_64;; - armv7*) arch=arm - $XBPS_FETCH_CMD http://rcn-ee.com/deb/sid-armhf/v${version}-armv7-x2/patch-${version}-armv7-x2.diff.gz - gunzip patch-${version}-armv7-x2.diff.gz - patch -Np1 -i patch-${version}-armv7-x2.diff - ;; + armv7*) arch=arm;; aarch64*) arch=arm64;; esac @@ -123,8 +119,8 @@ do_install() { ;; arm64) vinstall arch/arm64/boot/Image 644 boot vmlinux-${_kernver} - # vmkdir boot/dtbs - # cp arch/arm64/boot/dts/*.dtb ${DESTDIR}/boot/dtbs + vmkdir boot/dtbs + cp arch/arm64/boot/dts/*/*.dtb ${DESTDIR}/boot/dtbs ;; esac