mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-17 17:31:27 +00:00
This series is based on * 2020-07-10 ipq6018-ilq-11-0_qca_oem-034672b0676c37b1f4519e5720e18e95fe6236ef Add support for * qsdk kernel/v4.4 * qsdk ethernet subsystem * v5.7 ath11k backport + QualComm staging patches (wlan_ap_1.0) * ath11k-firmware * hostapd/iw/... Feature support * full boot, system detection * sysupgrade to nand * HE support via latest hostapd * driver support for usb, crypto, hwmon, cpufreq, ... Missing * NSS/HW flow offloading - FW blob is not redistributable Using the qsdk v4.4 is an intermediate solution while the vanilla is being tested. Vanilla kernel is almost on feature par. Work has already started to upstream the ethernet and switch drivers. Once complete the target will be fully upstream. Signed-off-by: John Crispin <john@phrozen.org>
2591 lines
71 KiB
Diff
2591 lines
71 KiB
Diff
From 6367262413f4ea86ed974799b36c65ab9a705ff1 Mon Sep 17 00:00:00 2001
|
|
From: John Crispin <john@phrozen.org>
|
|
Date: Sat, 18 Jul 2020 08:53:44 +0200
|
|
Subject: [PATCH 3/4] ipq807x: add the Qualcomm AX target support
|
|
|
|
Signed-off-by: John Crispin <john@phrozen.org>
|
|
---
|
|
target/linux/ipq807x/Makefile | 19 +
|
|
.../ipq807x/base-files/etc/board.d/02_network | 39 +
|
|
.../etc/hotplug.d/firmware/10-ath11k-caldata | 46 +
|
|
.../base-files/lib/upgrade/platform.sh | 25 +
|
|
target/linux/ipq807x/config-4.4 | 741 +++++++++++++
|
|
target/linux/ipq807x/image/Makefile | 22 +
|
|
target/linux/ipq807x/image/ipq60xx.mk | 10 +
|
|
target/linux/ipq807x/image/ipq807x.mk | 11 +
|
|
target/linux/ipq807x/ipq60xx/config-default | 236 +++++
|
|
.../linux/ipq807x/ipq60xx/profiles/default.mk | 9 +
|
|
target/linux/ipq807x/ipq60xx/target.mk | 8 +
|
|
target/linux/ipq807x/ipq807x/config-default | 209 ++++
|
|
.../linux/ipq807x/ipq807x/profiles/default.mk | 9 +
|
|
target/linux/ipq807x/ipq807x/target.mk | 8 +
|
|
target/linux/ipq807x/modules.mk | 58 ++
|
|
.../linux/ipq807x/patches/100-qrtr-ns.patch | 976 ++++++++++++++++++
|
|
.../linux/ipq807x/patches/101-squashfs.patch | 16 +
|
|
17 files changed, 2442 insertions(+)
|
|
create mode 100644 target/linux/ipq807x/Makefile
|
|
create mode 100755 target/linux/ipq807x/base-files/etc/board.d/02_network
|
|
create mode 100755 target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
|
|
create mode 100755 target/linux/ipq807x/base-files/lib/upgrade/platform.sh
|
|
create mode 100644 target/linux/ipq807x/config-4.4
|
|
create mode 100644 target/linux/ipq807x/image/Makefile
|
|
create mode 100644 target/linux/ipq807x/image/ipq60xx.mk
|
|
create mode 100644 target/linux/ipq807x/image/ipq807x.mk
|
|
create mode 100644 target/linux/ipq807x/ipq60xx/config-default
|
|
create mode 100644 target/linux/ipq807x/ipq60xx/profiles/default.mk
|
|
create mode 100644 target/linux/ipq807x/ipq60xx/target.mk
|
|
create mode 100644 target/linux/ipq807x/ipq807x/config-default
|
|
create mode 100644 target/linux/ipq807x/ipq807x/profiles/default.mk
|
|
create mode 100644 target/linux/ipq807x/ipq807x/target.mk
|
|
create mode 100644 target/linux/ipq807x/modules.mk
|
|
create mode 100644 target/linux/ipq807x/patches/100-qrtr-ns.patch
|
|
create mode 100644 target/linux/ipq807x/patches/101-squashfs.patch
|
|
|
|
diff --git a/target/linux/ipq807x/Makefile b/target/linux/ipq807x/Makefile
|
|
new file mode 100644
|
|
index 0000000000..5aa8e81364
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/Makefile
|
|
@@ -0,0 +1,19 @@
|
|
+include $(TOPDIR)/rules.mk
|
|
+
|
|
+ARCH:=aarch64
|
|
+BOARD:=ipq807x
|
|
+BOARDNAME:=Qualcomm Atheros AX
|
|
+SUBTARGETS:=ipq807x ipq60xx
|
|
+FEATURES:=squashfs ramdisk nand pcie usb
|
|
+KERNELNAME:=Image dtbs
|
|
+CPU_TYPE:=cortex-a53
|
|
+
|
|
+KERNEL_PATCHVER:=4.4
|
|
+KERNEL_NAME_SUFFIX=-qsdk
|
|
+
|
|
+include $(INCLUDE_DIR)/target.mk
|
|
+DEFAULT_PACKAGES += kmod-qca-nss-dp kmod-qca-ssdk swconfig \
|
|
+ kmod-usb-phy-ipq807x kmod-usb-dwc3-of-simple \
|
|
+ kmod-ath11k kmod-qrtr_mproc wpad
|
|
+
|
|
+$(eval $(call BuildTarget))
|
|
diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network
|
|
new file mode 100755
|
|
index 0000000000..1749ae75aa
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/base-files/etc/board.d/02_network
|
|
@@ -0,0 +1,39 @@
|
|
+#!/bin/sh
|
|
+
|
|
+. /lib/functions.sh
|
|
+. /lib/functions/uci-defaults.sh
|
|
+. /lib/functions/system.sh
|
|
+
|
|
+qcom_setup_interfaces()
|
|
+{
|
|
+ local board="$1"
|
|
+
|
|
+ case $board in
|
|
+ qcom,ipq6018-cp01|\
|
|
+ qcom,ipq807x-hk01)
|
|
+ ucidef_add_switch "switch0"
|
|
+ ucidef_add_switch_attr "switch0" "enable" "false"
|
|
+ ucidef_add_switch_attr "switch0" "reset" "false"
|
|
+ ucidef_set_interface_lan "eth0 eth1 eth2 eth3 eth4"
|
|
+ ucidef_set_interface_wan "eth5"
|
|
+ ;;
|
|
+ esac
|
|
+}
|
|
+
|
|
+qcom_setup_macs()
|
|
+{
|
|
+ local board="$1"
|
|
+
|
|
+ case $board in
|
|
+ *)
|
|
+ ;;
|
|
+ esac
|
|
+}
|
|
+
|
|
+board_config_update
|
|
+board=$(board_name)
|
|
+qcom_setup_interfaces $board
|
|
+qcom_setup_macs $board
|
|
+board_config_flush
|
|
+
|
|
+exit 0
|
|
diff --git a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
|
|
new file mode 100755
|
|
index 0000000000..ca34f54eb8
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
|
|
@@ -0,0 +1,46 @@
|
|
+#!/bin/sh
|
|
+
|
|
+[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
|
+
|
|
+. /lib/functions.sh
|
|
+. /lib/functions/system.sh
|
|
+
|
|
+caldata_die() {
|
|
+ echo "caldata: " "$*"
|
|
+ exit 1
|
|
+}
|
|
+
|
|
+caldata_extract() {
|
|
+ local part=$1
|
|
+ local offset=$(($2))
|
|
+ local count=$(($3))
|
|
+ local mtd
|
|
+
|
|
+ mtd=$(find_mtd_chardev $part)
|
|
+ [ -n "$mtd" ] || caldata_die "no mtd device found for partition $part"
|
|
+
|
|
+ dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
|
|
+ caldata_die "failed to extract calibration data from $mtd"
|
|
+}
|
|
+
|
|
+board=$(board_name)
|
|
+
|
|
+case "$FIRMWARE" in
|
|
+"IPQ8074/caldata.bin")
|
|
+ case "$board" in
|
|
+ qcom,ipq807x-hk01)
|
|
+ caldata_extract "0:ART" 0x1000 0x20000
|
|
+ ;;
|
|
+ esac
|
|
+ ;;
|
|
+"IPQ6018/caldata.bin")
|
|
+ case "$board" in
|
|
+ qcom,ipq6018-cp01)
|
|
+ caldata_extract "0:ART" 0x1000 0x20000
|
|
+ ;;
|
|
+ esac
|
|
+ ;;
|
|
+*)
|
|
+ exit 1
|
|
+ ;;
|
|
+esac
|
|
diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
|
|
new file mode 100755
|
|
index 0000000000..40abca6903
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
|
|
@@ -0,0 +1,25 @@
|
|
+platform_check_image() {
|
|
+ local magic_long="$(get_magic_long "$1")"
|
|
+ board=$(board_name)
|
|
+ case $board in
|
|
+ qcom,ipq6018-cp01|\
|
|
+ qcom,ipq807x-hk01)
|
|
+ [ "$magic_long" = "73797375" ] && return 0
|
|
+ ;;
|
|
+ esac
|
|
+ return 1
|
|
+}
|
|
+
|
|
+platform_do_upgrade() {
|
|
+ CI_UBIPART="rootfs"
|
|
+ CI_ROOTPART="ubi_rootfs"
|
|
+ CI_IPQ807X=1
|
|
+
|
|
+ board=$(board_name)
|
|
+ case $board in
|
|
+ qcom,ipq6018-cp01|\
|
|
+ qcom,ipq807x-hk01)
|
|
+ nand_upgrade_tar "$1"
|
|
+ ;;
|
|
+ esac
|
|
+}
|
|
diff --git a/target/linux/ipq807x/config-4.4 b/target/linux/ipq807x/config-4.4
|
|
new file mode 100644
|
|
index 0000000000..89597b5030
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/config-4.4
|
|
@@ -0,0 +1,741 @@
|
|
+# CONFIG_AHCI_IPQ is not set
|
|
+CONFIG_ALIGNMENT_TRAP=y
|
|
+# CONFIG_ALLOW_DEV_COREDUMP is not set
|
|
+# CONFIG_AMBA_PL08X is not set
|
|
+# CONFIG_APM_EMULATION is not set
|
|
+# CONFIG_APQ_GCC_8084 is not set
|
|
+# CONFIG_APQ_MMCC_8084 is not set
|
|
+# CONFIG_AR8216_PHY is not set
|
|
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
|
|
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
|
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
|
+CONFIG_ARCH_HAS_SG_CHAIN=y
|
|
+CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
|
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
|
+# CONFIG_ARCH_IPQ807x is not set
|
|
+# CONFIG_ARCH_IPQ6018 is not set
|
|
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
|
+# CONFIG_ARCH_MSM8960 is not set
|
|
+# CONFIG_ARCH_MSM8974 is not set
|
|
+CONFIG_ARCH_MSM8X60=y
|
|
+CONFIG_ARCH_MULTIPLATFORM=y
|
|
+# CONFIG_ARCH_MULTI_CPU_AUTO is not set
|
|
+CONFIG_ARCH_MULTI_V6_V7=y
|
|
+CONFIG_ARCH_MULTI_V7=y
|
|
+CONFIG_ARCH_NR_GPIO=0
|
|
+CONFIG_ARCH_QCOM=y
|
|
+CONFIG_QSEECOM=m
|
|
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
|
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
|
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
|
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
|
|
+CONFIG_ARCH_SUPPORTS_UPROBES=y
|
|
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
|
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
|
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
|
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
|
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
|
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
|
+CONFIG_ARM=y
|
|
+CONFIG_ARM_AMBA=y
|
|
+CONFIG_ARM_ARCH_TIMER=y
|
|
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
|
+# CONFIG_ARM_ATAG_DTB_COMPAT is not set
|
|
+CONFIG_ARM_CCI=y
|
|
+CONFIG_ARM_CCI400_COMMON=y
|
|
+CONFIG_ARM_CCI400_PMU=y
|
|
+CONFIG_ARM_CCI_PMU=y
|
|
+CONFIG_ARM_CPU_SUSPEND=y
|
|
+CONFIG_ARM_GIC=y
|
|
+CONFIG_ARM_HAS_SG_CHAIN=y
|
|
+# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
|
|
+CONFIG_ARM_CPUIDLE=y
|
|
+CONFIG_ARM_L1_CACHE_SHIFT=6
|
|
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
|
+# CONFIG_ARM_LPAE is not set
|
|
+CONFIG_ARM_MODULE_PLTS=y
|
|
+CONFIG_ARM_PATCH_PHYS_VIRT=y
|
|
+CONFIG_ARM_PMU=y
|
|
+CONFIG_ARM_PSCI=y
|
|
+CONFIG_ARM_PSCI_FW=y
|
|
+CONFIG_ARM_QCOM_CPUFREQ=y
|
|
+# CONFIG_ARM_SMMU is not set
|
|
+# CONFIG_ARM_SP805_WATCHDOG is not set
|
|
+CONFIG_ARM_THUMB=y
|
|
+# CONFIG_ARM_THUMBEE is not set
|
|
+CONFIG_ARM_UNWIND=y
|
|
+CONFIG_ARM_VIRT_EXT=y
|
|
+CONFIG_AT803X_PHY=y
|
|
+# CONFIG_ATA is not set
|
|
+CONFIG_BLK_DEV_NVME=y
|
|
+CONFIG_BLK_DEV_RAM=y
|
|
+CONFIG_BLK_DEV_RAM_COUNT=16
|
|
+CONFIG_BLK_DEV_RAM_SIZE=4096
|
|
+# CONFIG_VIRTIO_BLK is not set
|
|
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
|
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
|
|
+CONFIG_BOUNCE=y
|
|
+CONFIG_BUILD_BIN2C=y
|
|
+CONFIG_CNSS_QCA6290=y
|
|
+# CONFIG_CNSS2 is not set
|
|
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|
+CONFIG_CC_STACKPROTECTOR=y
|
|
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
|
|
+CONFIG_CC_STACKPROTECTOR_REGULAR=y
|
|
+# CONFIG_CHARGER_QCOM_SMBB is not set
|
|
+CONFIG_CLEANCACHE=y
|
|
+CONFIG_CLKDEV_LOOKUP=y
|
|
+CONFIG_CLKSRC_OF=y
|
|
+CONFIG_CLKSRC_PROBE=y
|
|
+CONFIG_CLKSRC_QCOM=y
|
|
+CONFIG_CLONE_BACKWARDS=y
|
|
+CONFIG_COMMON_CLK=y
|
|
+CONFIG_COMMON_CLK_QCOM=y
|
|
+CONFIG_CONFIGFS_FS=y
|
|
+CONFIG_COREDUMP=y
|
|
+# CONFIG_CORESIGHT is not set
|
|
+# CONFIG_CORESIGHT_CSR is not set
|
|
+# CONFIG_CORESIGHT_CTI is not set
|
|
+# NFIG_CORESIGHT_EVENT is not set
|
|
+# CONFIG_CORESIGHT_HWEVENT is not set
|
|
+# CONFIG_CORESIGHT_LINKS_AND_SINKS is not set
|
|
+# CONFIG_CORESIGHT_LINK_AND_SINK_TMC is not set
|
|
+# CONFIG_CORESIGHT_QCOM_REPLICATOR is not set
|
|
+# CONFIG_CORESIGHT_QPDI is not set
|
|
+# CONFIG_CORESIGHT_SINK_ETBV10 is not set
|
|
+# CONFIG_CORESIGHT_SINK_TPIU is not set
|
|
+# CONFIG_CORESIGHT_SOURCE_DUMMY is not set
|
|
+# CONFIG_CORESIGHT_SOURCE_ETM3X is not set
|
|
+# CONFIG_CORESIGHT_SOURCE_ETM4X is not set
|
|
+# CONFIG_CORESIGHT_REMOTE_ETM is not set
|
|
+# CONFIG_CORESIGHT_STM is not set
|
|
+# CONFIG_CORESIGHT_TPDA is not set
|
|
+# CONFIG_CORESIGHT_TPDM is not set
|
|
+# CONFIG_CORESIGHT_TPDM_DEFAULT_ENABLE is not set
|
|
+CONFIG_CPUFREQ_DT=y
|
|
+CONFIG_CPUFREQ_DT_PLATDEV=y
|
|
+CONFIG_CPU_32v6K=y
|
|
+CONFIG_CPU_32v7=y
|
|
+CONFIG_CPU_ABRT_EV7=y
|
|
+# CONFIG_CPU_BIG_ENDIAN is not set
|
|
+# CONFIG_CPU_BPREDICT_DISABLE is not set
|
|
+CONFIG_CPU_CACHE_V7=y
|
|
+CONFIG_CPU_CACHE_VIPT=y
|
|
+CONFIG_CPU_COPY_V6=y
|
|
+CONFIG_CPU_CP15=y
|
|
+CONFIG_CPU_CP15_MMU=y
|
|
+# CONFIG_CPU_SW_DOMAIN_PAN is not set
|
|
+CONFIG_CPU_FREQ=y
|
|
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
|
+CONFIG_CPU_FREQ_GOV_COMMON=y
|
|
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
|
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
|
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
|
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
|
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
|
+CONFIG_CPU_FREQ_STAT=y
|
|
+CONFIG_CPU_HAS_ASID=y
|
|
+# CONFIG_CPU_ICACHE_DISABLE is not set
|
|
+CONFIG_CPU_IDLE=y
|
|
+CONFIG_CPU_IDLE_GOV_LADDER=y
|
|
+CONFIG_CPU_IDLE_GOV_MENU=y
|
|
+CONFIG_CPU_PABRT_V7=y
|
|
+CONFIG_CPU_PM=y
|
|
+CONFIG_CPU_RMAP=y
|
|
+# CONFIG_CPU_THERMAL is not set
|
|
+CONFIG_CPU_TLB_V7=y
|
|
+CONFIG_CPU_V7=y
|
|
+CONFIG_CRC16=y
|
|
+# CONFIG_CRC32_SARWATE is not set
|
|
+CONFIG_CRC32_SLICEBY8=y
|
|
+CONFIG_CROSS_MEMORY_ATTACH=y
|
|
+# CONFIG_CRYPTO_DEV_QCOM_MSM_QCE is not set
|
|
+# CONFIG_CRYPTO_DEV_OTA_CRYPTO is not set
|
|
+# CONFIG_FIPS_ENABLE is not set
|
|
+CONFIG_CRYPTO_AEAD=y
|
|
+CONFIG_CRYPTO_AEAD2=y
|
|
+CONFIG_CRYPTO_BLKCIPHER=y
|
|
+CONFIG_CRYPTO_BLKCIPHER2=y
|
|
+CONFIG_CRYPTO_CCM=y
|
|
+CONFIG_CRYPTO_CRC32C=y
|
|
+CONFIG_CRYPTO_CTR=y
|
|
+CONFIG_CRYPTO_DEFLATE=y
|
|
+CONFIG_CRYPTO_CMAC=y
|
|
+# CONFIG_CRYPTO_DEV_QCOM_ICE is not set
|
|
+CONFIG_CRYPTO_ECHAINIV=y
|
|
+CONFIG_CRYPTO_HASH2=y
|
|
+CONFIG_CRYPTO_HASH_INFO=y
|
|
+CONFIG_CRYPTO_HW=y
|
|
+CONFIG_CRYPTO_LZO=y
|
|
+CONFIG_CRYPTO_MANAGER=y
|
|
+CONFIG_CRYPTO_MANAGER2=y
|
|
+CONFIG_CRYPTO_NULL=y
|
|
+CONFIG_CRYPTO_RNG=y
|
|
+CONFIG_CRYPTO_RNG2=y
|
|
+CONFIG_CRYPTO_SEQIV=y
|
|
+CONFIG_CRYPTO_SHA256=y
|
|
+CONFIG_CRYPTO_WORKQUEUE=y
|
|
+CONFIG_CRYPTO_XZ=y
|
|
+CONFIG_CRYPTO_ARC4=y
|
|
+CONFIG_CRYPTO_GCM=y
|
|
+CONFIG_DCACHE_WORD_ACCESS=y
|
|
+CONFIG_DEBUG_BUGVERBOSE=y
|
|
+CONFIG_DEBUG_GPIO=y
|
|
+# CONFIG_DEBUG_INFO_REDUCED is not set
|
|
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
|
+# CONFIG_DEBUG_UART_8250 is not set
|
|
+# CONFIG_DEBUG_USER is not set
|
|
+CONFIG_DECOMPRESS_GZIP=y
|
|
+CONFIG_DEVMEM=y
|
|
+# CONFIG_DIAG_OVER_USB is not set
|
|
+CONFIG_DMADEVICES=y
|
|
+CONFIG_DMA_ENGINE=y
|
|
+CONFIG_DMA_OF=y
|
|
+CONFIG_DMA_VIRTUAL_CHANNELS=y
|
|
+CONFIG_DTC=y
|
|
+# CONFIG_DWMAC_GENERIC is not set
|
|
+# CONFIG_DWMAC_IPQ806X is not set
|
|
+# CONFIG_DWMAC_SUNXI is not set
|
|
+# CONFIG_DW_DMAC_PCI is not set
|
|
+# CONFIG_VHOST_NET is not set
|
|
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
|
|
+CONFIG_DYNAMIC_DEBUG=y
|
|
+CONFIG_ETHERNET_PACKET_MANGLE=y
|
|
+CONFIG_EXT4_FS=y
|
|
+# CONFIG_EXT4_USE_FOR_EXT2 is not set
|
|
+CONFIG_FB=y
|
|
+CONFIG_FB_CFB_COPYAREA=y
|
|
+CONFIG_FB_CFB_FILLRECT=y
|
|
+CONFIG_FB_CFB_IMAGEBLIT=y
|
|
+CONFIG_FB_CMDLINE=y
|
|
+CONFIG_FB_QCOM_QPIC=y
|
|
+CONFIG_FB_QCOM_QPIC_ER_SSD1963_PANEL=y
|
|
+CONFIG_FB_SYS_FOPS=y
|
|
+CONFIG_FIXED_PHY=y
|
|
+CONFIG_FIX_EARLYCON_MEM=y
|
|
+CONFIG_FS_MBCACHE=y
|
|
+# CONFIG_GCC_PLUGINS is not set
|
|
+CONFIG_GENERIC_ALLOCATOR=y
|
|
+CONFIG_GENERIC_BUG=y
|
|
+CONFIG_GENERIC_CLOCKEVENTS=y
|
|
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
|
+# CONFIG_GENERIC_CPUFREQ_KRAIT is not set
|
|
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
|
+CONFIG_GENERIC_IO=y
|
|
+CONFIG_GENERIC_IRQ_SHOW=y
|
|
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
|
+CONFIG_GENERIC_MSI_IRQ=y
|
|
+CONFIG_GENERIC_PCI_IOMAP=y
|
|
+CONFIG_GENERIC_PHY=y
|
|
+CONFIG_GENERIC_PINCONF=y
|
|
+CONFIG_GENERIC_SCHED_CLOCK=y
|
|
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
|
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
|
+CONFIG_GENERIC_STRNLEN_USER=y
|
|
+CONFIG_GENERIC_TIME_VSYSCALL=y
|
|
+CONFIG_GPIOLIB=y
|
|
+CONFIG_GPIOLIB_IRQCHIP=y
|
|
+CONFIG_GPIO_DEVRES=y
|
|
+# CONFIG_GPIO_LATCH is not set
|
|
+# CONFIG_GPIO_NXP_74HC153 is not set
|
|
+CONFIG_GPIO_SYSFS=y
|
|
+CONFIG_HANDLE_DOMAIN_IRQ=y
|
|
+CONFIG_HARDIRQS_SW_RESEND=y
|
|
+CONFIG_HAS_DMA=y
|
|
+CONFIG_HAS_IOMEM=y
|
|
+CONFIG_HAS_IOPORT_MAP=y
|
|
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
|
|
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
|
+CONFIG_HAVE_ARCH_BITREVERSE=y
|
|
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
|
+CONFIG_HAVE_ARCH_KGDB=y
|
|
+CONFIG_HAVE_ARCH_PFN_VALID=y
|
|
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
|
+CONFIG_HAVE_ARCH_TRACEHOOK=y
|
|
+CONFIG_HAVE_ARM_ARCH_TIMER=y
|
|
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
|
+CONFIG_HAVE_BPF_JIT=y
|
|
+CONFIG_HAVE_CC_STACKPROTECTOR=y
|
|
+CONFIG_HAVE_CLK=y
|
|
+CONFIG_HAVE_CLK_PREPARE=y
|
|
+CONFIG_HAVE_CONTEXT_TRACKING=y
|
|
+CONFIG_HAVE_C_RECORDMCOUNT=y
|
|
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
|
+CONFIG_HAVE_DMA_API_DEBUG=y
|
|
+CONFIG_HAVE_DMA_ATTRS=y
|
|
+CONFIG_HAVE_DMA_CONTIGUOUS=y
|
|
+CONFIG_HAVE_DYNAMIC_FTRACE=y
|
|
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
|
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
|
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
|
+CONFIG_HAVE_FUNCTION_TRACER=y
|
|
+# CONFIG_SRD_TRACE is not set
|
|
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
|
+CONFIG_HAVE_HW_BREAKPOINT=y
|
|
+CONFIG_HAVE_IDE=y
|
|
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
|
+CONFIG_HAVE_KERNEL_GZIP=y
|
|
+CONFIG_HAVE_KERNEL_LZ4=y
|
|
+CONFIG_HAVE_KERNEL_LZMA=y
|
|
+CONFIG_HAVE_KERNEL_LZO=y
|
|
+CONFIG_HAVE_KERNEL_XZ=y
|
|
+# CONFIG_HAVE_KPROBES is not set
|
|
+# CONFIG_HAVE_KRETPROBES is not set
|
|
+CONFIG_HAVE_MEMBLOCK=y
|
|
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
|
+CONFIG_HAVE_NET_DSA=y
|
|
+CONFIG_HAVE_OPROFILE=y
|
|
+# CONFIG_HAVE_OPTPROBES is not set
|
|
+CONFIG_HAVE_PERF_EVENTS=y
|
|
+CONFIG_HAVE_PERF_REGS=y
|
|
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
|
+CONFIG_HAVE_PROC_CPU=y
|
|
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
|
+CONFIG_HAVE_SMP=y
|
|
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
|
+CONFIG_HAVE_UID16=y
|
|
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
|
+CONFIG_HIGHMEM=y
|
|
+CONFIG_HIGHPTE=y
|
|
+CONFIG_HOTPLUG_CPU=y
|
|
+CONFIG_HWSPINLOCK=y
|
|
+CONFIG_HWSPINLOCK_QCOM=y
|
|
+CONFIG_HW_RANDOM=y
|
|
+CONFIG_HW_RANDOM_MSM=y
|
|
+CONFIG_HZ_FIXED=0
|
|
+CONFIG_I2C=y
|
|
+CONFIG_I2C_BOARDINFO=y
|
|
+CONFIG_I2C_CHARDEV=y
|
|
+CONFIG_I2C_COMPAT=y
|
|
+CONFIG_I2C_HELPER_AUTO=y
|
|
+CONFIG_I2C_QUP=y
|
|
+# CONFIG_IIO is not set
|
|
+# CONFIG_IIO_BUFFER is not set
|
|
+# CONFIG_IIO_TRIGGER is not set
|
|
+CONFIG_IKCONFIG=y
|
|
+CONFIG_IKCONFIG_PROC=y
|
|
+CONFIG_INITRAMFS_SOURCE=""
|
|
+# CONFIG_INPUT_PM8941_PWRKEY is not set
|
|
+CONFIG_IOMMU_HELPER=y
|
|
+# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
|
|
+# CONFIG_IPQ_GCC_4019 is not set
|
|
+# CONFIG_IPQ_GCC_6018 is not set
|
|
+# CONFIG_IPQ_APSS_6018 is not set
|
|
+# CONFIG_IPQ_GCC_806X is not set
|
|
+# CONFIG_IPQ_ADSS_807x is not set
|
|
+# CONFIG_IPQ_APSS_807x is not set
|
|
+# CONFIG_IPQ_GCC_807x is not set
|
|
+# CONFIG_IPQ_ADCC_4019 is not set
|
|
+# CONFIG_IPQ_LCC_806X is not set
|
|
+# CONFIG_IPQ_REMOTEPROC_ADSP is not set
|
|
+# CONFIG_IPQ_SUBSYSTEM_RESTART is not set
|
|
+# CONFIG_IPQ_SUBSYSTEM_RESTART_TEST is not set
|
|
+CONFIG_IRQCHIP=y
|
|
+CONFIG_IRQ_DOMAIN=y
|
|
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
|
+CONFIG_IRQ_FORCED_THREADING=y
|
|
+CONFIG_IRQ_WORK=y
|
|
+CONFIG_JBD2=y
|
|
+# CONFIG_IPC_ROUTER is not set
|
|
+# CONFIG_IPC_ROUTER_SECURITY is not set
|
|
+# CONFIG_IPC_LOGGING is not set
|
|
+CONFIG_KPSS_XCC=y
|
|
+# CONFIG_KRAITCC is not set
|
|
+# CONFIG_KRAIT_CLOCKS is not set
|
|
+# CONFIG_KRAIT_L2_ACCESSORS is not set
|
|
+CONFIG_LEDS_IPQ=y
|
|
+CONFIG_LEDS_TLC591XX=y
|
|
+# CONFIG_LEDS_PCA9956B is not set
|
|
+CONFIG_LIBFDT=y
|
|
+CONFIG_LOCKUP_DETECTOR=y
|
|
+CONFIG_LOCK_SPIN_ON_OWNER=y
|
|
+CONFIG_LZO_COMPRESS=y
|
|
+CONFIG_LZO_DECOMPRESS=y
|
|
+CONFIG_MDIO=y
|
|
+CONFIG_MDIO_BITBANG=y
|
|
+CONFIG_MDIO_BOARDINFO=y
|
|
+CONFIG_MDIO_GPIO=y
|
|
+# CONFIG_MDIO_QCA is not set
|
|
+CONFIG_MFD_QCOM_RPM=y
|
|
+CONFIG_MFD_SPMI_PMIC=y
|
|
+# CONFIG_SLIMBUS is not set
|
|
+# CONFIG_SLIMBUS_MSM_CTRL is not set
|
|
+# CONFIG_SLIMBUS_MSM_NGD is not set
|
|
+# CONFIG_OF_SLIMBUS is not set
|
|
+CONFIG_MFD_SYSCON=y
|
|
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
|
+CONFIG_MIGHT_HAVE_PCI=y
|
|
+CONFIG_MMC=y
|
|
+CONFIG_MMC_ARMMMCI=y
|
|
+CONFIG_MMC_BLOCK=y
|
|
+CONFIG_MMC_BLOCK_MINORS=32
|
|
+CONFIG_MMC_QCOM_DML=y
|
|
+CONFIG_MMC_QCOM_TUNING=y
|
|
+CONFIG_MMC_SDHCI=y
|
|
+CONFIG_MMC_SDHCI_MSM=y
|
|
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
|
|
+# CONFIG_MMC_SDHCI_PCI is not set
|
|
+CONFIG_MMC_SDHCI_PLTFM=y
|
|
+# CONFIG_MMC_TIFM_SD is not set
|
|
+CONFIG_MODULES_TREE_LOOKUP=y
|
|
+CONFIG_MODULES_USE_ELF_REL=y
|
|
+# CONFIG_MSM_GCC_8660 is not set
|
|
+# CONFIG_MSM_GCC_8916 is not set
|
|
+# CONFIG_MSM_GCC_8960 is not set
|
|
+# CONFIG_MSM_GCC_8974 is not set
|
|
+# CONFIG_MSM_LCC_8960 is not set
|
|
+# CONFIG_MSM_MMCC_8960 is not set
|
|
+# CONFIG_MSM_MMCC_8974 is not set
|
|
+# CONFIG_MSM_MHI is not set
|
|
+# CONFIG_MSM_IPC_ROUTER_MHI_XPRT is not set
|
|
+# CONFIG_MSM_MHI_DEBUG is not set
|
|
+# CONFIG_MSM_MHI_DEV is not set
|
|
+# CONFIG_MSM_MHI_UCI is not set
|
|
+# CONFIG_DIAGFWD_BRIDGE_CODE is not set
|
|
+# CONFIG_MSM_BUS_SCALING is not set
|
|
+# CONFIG_BUS_TOPOLOGY_ADHOC is not set
|
|
+# CONFIG_QPNP_REVID is not set
|
|
+# CONFIG_SPS is not set
|
|
+# CONFIG_SPS_SUPPORT_NDP_BAM is not set
|
|
+# CONFIG_USB_BAM is not set
|
|
+# CONFIG_SPS_SUPPORT_BAMDMA is not set
|
|
+# CONFIG_IPA is not set
|
|
+# CONFIG_IPA3 is not set
|
|
+# CONFIG_EP_PCIE is not set
|
|
+# CONFIG_GSI is not set
|
|
+# CONFIG_PFT is not set
|
|
+# CONFIG_SEEMP_CORE is not set
|
|
+# CONFIG_GPIO_USB_DETECT is not set
|
|
+# CONFIG_MSM_GLINK is not set
|
|
+# CONFIG_MSM_GLINK_LOOPBACK_SERVER is not set
|
|
+# CONFIG_MSM_GLINK_SMEM_NATIVE_XPRT is not set
|
|
+# CONFIG_MSM_GLINK_PKT is not set
|
|
+# CONFIG_MSM_IPC_ROUTER_GLINK_XPRT is not set
|
|
+# CONFIG_MSM_QMI_INTERFACE is not set
|
|
+# CONFIG_MSM_TEST_QMI_CLIENT is not set
|
|
+# CONFIG_GLINK_DEBUG_FS is not set
|
|
+# CONFIG_MSM_RPM_SMD is not set
|
|
+# CONFIG_MSM_RPM_GLINK is not set
|
|
+CONFIG_MSM_RPM_LOG=y
|
|
+# CONFIG_MSM_SMEM is not set
|
|
+CONFIG_MTD_CMDLINE_PARTS=y
|
|
+CONFIG_MTD_M25P80=y
|
|
+CONFIG_MTD_NAND=y
|
|
+CONFIG_MTD_NAND_ECC=y
|
|
+CONFIG_MTD_NAND_QCOM=y
|
|
+CONFIG_MTD_QCOM_SMEM_PARTS=y
|
|
+CONFIG_MTD_SPINAND_GIGADEVICE=y
|
|
+CONFIG_MTD_SPINAND_MT29F=y
|
|
+CONFIG_MTD_SPINAND_ONDIEECC=y
|
|
+CONFIG_MTD_SPI_NOR=y
|
|
+CONFIG_MTD_SPLIT_FIRMWARE=y
|
|
+CONFIG_MTD_SPLIT_FIT_FW=y
|
|
+CONFIG_MTD_UBI=y
|
|
+CONFIG_MTD_UBI_BEB_LIMIT=20
|
|
+CONFIG_MTD_UBI_BLOCK=y
|
|
+# CONFIG_MTD_UBI_FASTMAP is not set
|
|
+CONFIG_MTD_UBI_GLUEBI=y
|
|
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
|
+CONFIG_MULTI_IRQ_HANDLER=y
|
|
+CONFIG_MUTEX_SPIN_ON_OWNER=y
|
|
+CONFIG_NEED_DMA_MAP_STATE=y
|
|
+CONFIG_NEON=y
|
|
+CONFIG_NET=y
|
|
+# CONFIG_NET_DSA_MV88E6063 is not set
|
|
+CONFIG_NET_FLOW_LIMIT=y
|
|
+CONFIG_NET_PTP_CLASSIFY=y
|
|
+CONFIG_NO_BOOTMEM=y
|
|
+CONFIG_NO_HZ=y
|
|
+CONFIG_NO_HZ_COMMON=y
|
|
+CONFIG_NO_HZ_IDLE=y
|
|
+CONFIG_NR_CPUS=4
|
|
+CONFIG_NUM_ALT_PARTITION=8
|
|
+CONFIG_NVMEM=y
|
|
+CONFIG_OF=y
|
|
+CONFIG_OF_ADDRESS=y
|
|
+CONFIG_OF_ADDRESS_PCI=y
|
|
+CONFIG_OF_EARLY_FLATTREE=y
|
|
+CONFIG_OF_FLATTREE=y
|
|
+CONFIG_OF_GPIO=y
|
|
+CONFIG_OF_IRQ=y
|
|
+CONFIG_OF_MDIO=y
|
|
+CONFIG_OF_MTD=y
|
|
+CONFIG_OF_NET=y
|
|
+CONFIG_OF_PCI=y
|
|
+CONFIG_OF_PCI_IRQ=y
|
|
+CONFIG_OF_RESERVED_MEM=y
|
|
+CONFIG_OLD_SIGACTION=y
|
|
+CONFIG_OLD_SIGSUSPEND3=y
|
|
+CONFIG_PAGE_OFFSET=0xC0000000
|
|
+CONFIG_PANIC_ON_OOPS=y
|
|
+CONFIG_PANIC_ON_OOPS_VALUE=1
|
|
+CONFIG_PANIC_TIMEOUT=5
|
|
+CONFIG_PCI=y
|
|
+# CONFIG_PCIEAER is not set
|
|
+CONFIG_PCIE_DW=y
|
|
+# CONFIG_PCIE_DW_PLAT is not set
|
|
+CONFIG_PCIE_PME=y
|
|
+CONFIG_PCIE_QCOM=y
|
|
+CONFIG_PCI_DOMAINS=y
|
|
+CONFIG_PCI_DOMAINS_GENERIC=y
|
|
+CONFIG_PCI_MSI=y
|
|
+CONFIG_PERF_EVENTS=y
|
|
+CONFIG_PERF_USE_VMALLOC=y
|
|
+CONFIG_PGTABLE_LEVELS=2
|
|
+CONFIG_PHYLIB=y
|
|
+# CONFIG_PHY_IPQ_BALDUR_USB is not set
|
|
+# CONFIG_PHY_IPQ_UNIPHY_USB is not set
|
|
+# CONFIG_PHY_QCOM_APQ8064_SATA is not set
|
|
+# CONFIG_PHY_QCOM_IPQ806X_SATA is not set
|
|
+CONFIG_PHY_QCA_PCIE_QMP=y
|
|
+# CONFIG_PHY_QCOM_UFS is not set
|
|
+CONFIG_PINCTRL=y
|
|
+# CONFIG_PINCTRL_APQ8064 is not set
|
|
+# CONFIG_PINCTRL_APQ8084 is not set
|
|
+# CONFIG_PINCTRL_IPQ4019 is not set
|
|
+# CONFIG_PINCTRL_IPQ6018 is not set
|
|
+# CONFIG_PINCTRL_IPQ8064 is not set
|
|
+# CONFIG_PINCTRL_IPQ807x is not set
|
|
+CONFIG_PINCTRL_MSM=y
|
|
+# CONFIG_PINCTRL_MSM8660 is not set
|
|
+# CONFIG_PINCTRL_MSM8916 is not set
|
|
+# CONFIG_PINCTRL_MSM8960 is not set
|
|
+CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
|
|
+# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
|
|
+# CONFIG_PL330_DMA is not set
|
|
+CONFIG_PM=y
|
|
+CONFIG_PM_CLK=y
|
|
+# CONFIG_PM_DEBUG is not set
|
|
+CONFIG_PM_GENERIC_DOMAINS=y
|
|
+CONFIG_PM_GENERIC_DOMAINS_OF=y
|
|
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
|
|
+CONFIG_PM_OPP=y
|
|
+CONFIG_PM_SLEEP=y
|
|
+CONFIG_PM_SLEEP_SMP=y
|
|
+CONFIG_POWER_RESET=y
|
|
+CONFIG_POWER_RESET_MSM=y
|
|
+CONFIG_POWER_SUPPLY=y
|
|
+CONFIG_PREEMPT=y
|
|
+CONFIG_PREEMPT_COUNT=y
|
|
+# CONFIG_PREEMPT_NONE is not set
|
|
+CONFIG_PREEMPT_RCU=y
|
|
+CONFIG_PRINTK_TIME=y
|
|
+CONFIG_PROC_PAGE_MONITOR=y
|
|
+# CONFIG_PROC_STRIPPED is not set
|
|
+CONFIG_PWM=y
|
|
+# CONFIG_PWM_IPQ4019 is not set
|
|
+# CONFIG_PWM_PCA9685 is not set
|
|
+CONFIG_PWM_SYSFS=y
|
|
+CONFIG_QCOM_ADM=y
|
|
+# CONFIG_QCOM_APM is not set
|
|
+CONFIG_QCOM_BAM_DMA=y
|
|
+# CONFIG_QCOM_COINCELL is not set
|
|
+# CONFIG_QCOM_DCC is not set
|
|
+CONFIG_QCOM_GDSC=y
|
|
+CONFIG_QCOM_GSBI=y
|
|
+# CONFIG_QCOM_HFPLL is not set
|
|
+CONFIG_QCOM_MEMORY_DUMP_V2=y
|
|
+CONFIG_QCOM_QFPROM=y
|
|
+# CONFIG_QCOM_SPMI_TEMP_ALARM is not set
|
|
+CONFIG_QCOM_RPM_CLK=y
|
|
+# CONFIG_QCOM_RTB is not set
|
|
+# CONFIG_QCOM_PM is not set
|
|
+CONFIG_QCOM_SCM=y
|
|
+CONFIG_QCOM_SCM_32=y
|
|
+# CONFIG_HAVE_ARM_SMCCC is not set
|
|
+CONFIG_QCA_SCM_RESTART_REASON=y
|
|
+CONFIG_IPQ_TCSR=y
|
|
+CONFIG_QCOM_QFPROM=y
|
|
+# CONFIG_QCOM_SMD is not set
|
|
+CONFIG_QCOM_SMEM=y
|
|
+CONFIG_QCOM_SMEM_STATE=y
|
|
+# CONFIG_QCOM_SMD is not set
|
|
+CONFIG_QCOM_SMP2P=y
|
|
+# CONFIG_QCOM_SPMI_VADC is not set
|
|
+CONFIG_QCOM_TSENS=y
|
|
+CONFIG_QCOM_TZ_LOG=y
|
|
+CONFIG_QCOM_WDT=y
|
|
+CONFIG_QMI_ENCDEC=y
|
|
+CONFIG_RATIONAL=y
|
|
+# CONFIG_RCU_BOOST is not set
|
|
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
|
|
+# CONFIG_RCU_EXPERT is not set
|
|
+CONFIG_RCU_STALL_COMMON=y
|
|
+CONFIG_RD_GZIP=y
|
|
+CONFIG_REGMAP=y
|
|
+# CONFIG_REGMAP_ALLOW_WRITE_DEBUGFS is not set
|
|
+CONFIG_REGMAP_MMIO=y
|
|
+CONFIG_REGULATOR=y
|
|
+# CONFIG_REGULATOR_CPR3 is not set
|
|
+CONFIG_REGULATOR_GPIO=y
|
|
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
|
+CONFIG_REGULATOR_QCOM_RPM=y
|
|
+CONFIG_REGULATOR_QCOM_SPMI=y
|
|
+# CONFIG_REGULATOR_IPQ40XX is not set
|
|
+# CONFIG_REGULATOR_RPM_SMD is not set
|
|
+# CONFIG_REGULATOR_RPM_GLINK is not set
|
|
+CONFIG_RELAY=y
|
|
+CONFIG_REMOTEPROC=y
|
|
+# CONFIG_IPQ807X_REMOTEPROC is not set
|
|
+CONFIG_RESET_CONTROLLER=y
|
|
+CONFIG_RFS_ACCEL=y
|
|
+CONFIG_RPS=y
|
|
+CONFIG_RTC_CLASS=y
|
|
+# CONFIG_RTC_DRV_CMOS is not set
|
|
+# CONFIG_RTC_DRV_PM8XXX is not set
|
|
+CONFIG_RWSEM_SPIN_ON_OWNER=y
|
|
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
|
+# CONFIG_SATA_AHCI is not set
|
|
+CONFIG_SCHED_HRTICK=y
|
|
+# CONFIG_SCSI is not set
|
|
+# CONFIG_SCHED_INFO is not set
|
|
+# CONFIG_SCSI_DMA is not set
|
|
+# CONFIG_SERIAL_8250 is not set
|
|
+# CONFIG_SERIAL_8250_CONSOLE is not set
|
|
+# CONFIG_SERIAL_8250_DMA is not set
|
|
+# CONFIG_SERIAL_AMBA_PL010 is not set
|
|
+# CONFIG_SERIAL_AMBA_PL011 is not set
|
|
+CONFIG_SERIAL_MSM=y
|
|
+CONFIG_SERIAL_MSM_CONSOLE=y
|
|
+# CONFIG_VIRTIO_CONSOLE is not set
|
|
+CONFIG_SMP=y
|
|
+CONFIG_SMP_ON_UP=y
|
|
+CONFIG_SPARSE_IRQ=y
|
|
+CONFIG_SPI=y
|
|
+CONFIG_SPI_MASTER=y
|
|
+CONFIG_SPI_QUP=y
|
|
+CONFIG_SPI_SPIDEV=y
|
|
+# CONFIG_SPI_VSC7385 is not set
|
|
+CONFIG_SPMI=y
|
|
+CONFIG_SPMI_MSM_PMIC_ARB=y
|
|
+CONFIG_SRCU=y
|
|
+# CONFIG_STRIP_ASM_SYMS is not set
|
|
+# CONFIG_STOPWATCH is not set
|
|
+CONFIG_SUSPEND=y
|
|
+CONFIG_SWCONFIG=y
|
|
+CONFIG_SWIOTLB=y
|
|
+# CONFIG_SWAP is not set
|
|
+CONFIG_SWP_EMULATE=y
|
|
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
|
+CONFIG_THERMAL=y
|
|
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
|
+CONFIG_THERMAL_GOV_STEP_WISE=y
|
|
+CONFIG_THERMAL_GOV_USER_SPACE=y
|
|
+CONFIG_THERMAL_HWMON=y
|
|
+CONFIG_THERMAL_OF=y
|
|
+CONFIG_THERMAL_WRITABLE_TRIPS=y
|
|
+# CONFIG_THUMB2_KERNEL is not set
|
|
+# CONFIG_TICK_CPU_ACCOUNTING is not set
|
|
+CONFIG_IRQ_TIME_ACCOUNTING=y
|
|
+CONFIG_TRACING_EVENTS_GPIO=y
|
|
+CONFIG_UBIFS_FS=y
|
|
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
|
+CONFIG_UBIFS_FS_LZO=y
|
|
+CONFIG_UBIFS_FS_XZ=y
|
|
+CONFIG_UBIFS_FS_ZLIB=y
|
|
+CONFIG_UEVENT_HELPER_PATH=""
|
|
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
|
+CONFIG_UNINLINE_SPIN_UNLOCK=y
|
|
+CONFIG_USB_GADGET=n
|
|
+CONFIG_USB_SUPPORT=y
|
|
+# CONFIG_USB_DWC3_OF_SIMPLE is not set
|
|
+# CONFIG_USB_QCOM_8X16_PHY is not set
|
|
+# CONFIG_USB_QCOM_QUSB_PHY is not set
|
|
+# CONFIG_USB_QCOM_QMP_PHY is not set
|
|
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
|
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
|
+# CONFIG_USB_OHCI_LITTLE_ENDIAN is not set
|
|
+CONFIG_USE_OF=y
|
|
+CONFIG_VDSO=y
|
|
+CONFIG_VECTORS_BASE=0xffff0000
|
|
+CONFIG_VFP=y
|
|
+CONFIG_VFPv3=y
|
|
+CONFIG_VM_EVENT_COUNTERS=y
|
|
+CONFIG_WATCHDOG_CORE=y
|
|
+# CONFIG_WL_TI is not set
|
|
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
|
|
+CONFIG_XPS=y
|
|
+CONFIG_XZ_DEC_ARM=y
|
|
+CONFIG_XZ_DEC_BCJ=y
|
|
+CONFIG_ZBOOT_ROM_BSS=0
|
|
+CONFIG_ZBOOT_ROM_TEXT=0
|
|
+CONFIG_ZLIB_DEFLATE=y
|
|
+CONFIG_ZLIB_INFLATE=y
|
|
+CONFIG_ZONE_DMA_FLAG=0
|
|
+CONFIG_QCOM_CACHE_DUMP=y
|
|
+CONFIG_QCOM_CACHE_DUMP_ON_PANIC=y
|
|
+CONFIG_QCOM_RESTART_REASON=y
|
|
+CONFIG_QCOM_DLOAD_MODE=y
|
|
+CONFIG_QCOM_DLOAD_MODE_APPSBL=y
|
|
+CONFIG_FW_AUTH=y
|
|
+CONFIG_FW_AUTH_TEST=m
|
|
+CONFIG_ASYMMETRIC_KEY_TYPE=y
|
|
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
|
|
+CONFIG_PUBLIC_KEY_ALGO_RSA=y
|
|
+CONFIG_X509_CERTIFICATE_PARSER=y
|
|
+CONFIG_PKCS7_MESSAGE_PARSER=n
|
|
+CONFIG_KEYS=y
|
|
+CONFIG_SKB_RECYCLER=y
|
|
+CONFIG_SKB_RECYCLER_MULTI_CPU=y
|
|
+# CONFIG_SKB_RECYCLER_PREALLOC is not set
|
|
+# CONFIG_U_SERIAL_CONSOLE is not set
|
|
+CONFIG_SCSI_SCAN_ASYNC=y
|
|
+# CONFIG_NF_IPV6_DUMMY_HEADER is not set
|
|
+# CONFIG_RMNET is not set
|
|
+# CONFIG_RMNET_DATA is not set
|
|
+# CONFIG_MSM_SECURE_BUFFER is not set
|
|
+# CONFIG_STAGING is not set
|
|
+# CONFIG_ANDROID is not set
|
|
+# CONFIG_ION is not set
|
|
+# CONFIG_ION_DUMMY is not set
|
|
+# CONFIG_ION_MSM is not set
|
|
+# CONFIG_ION_TEST is not set
|
|
+# CONFIG_CMA is not set
|
|
+# CONFIG_CMA_DEBUG is not set
|
|
+# CONFIG_CMA_DEBUGFS is not set
|
|
+# CONFIG_DMA_CMA is not set
|
|
+# CONFIG_CMA_AREAS is not set
|
|
+# CONFIG_CMA_SIZE_MBYTES is not set
|
|
+# CONFIG_CMA_SIZE_SEL_MBYTES is not set
|
|
+# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
|
+# CONFIG_CMA_SIZE_SEL_MIN is not set
|
|
+# CONFIG_CMA_SIZE_SEL_MAX is not set
|
|
+# CONFIG_CMA_ALIGNMENT is not set
|
|
+# CONFIG_ASHMEM is not set
|
|
+# CONFIG_ANDROID_TIMED_OUTPUT is not set
|
|
+# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
|
|
+# CONFIG_SYNC is not set
|
|
+# CONFIG_SW_SYNC is not set
|
|
+# CONFIG_FSL_MC_BUS is not set
|
|
+# CONFIG_ALLOC_BUFFERS_IN_4K_CHUNKS is not set
|
|
+# CONFIG_ALLOC_SKB_PAGE_FRAG_DISABLE is not set
|
|
+# CONFIG_MMAP_ALLOW_UNINITIALIZED is not set
|
|
+# CONFIG_MAILBOX is not set
|
|
+# CONFIG_MAILBOX_TEST is not set
|
|
+# CONFIG_QCOM_APCS_IPC is not set
|
|
+# CONFIG_QCOM_GLINK_SSR is not set
|
|
+# CONFIG_QCOM_Q6V5_WCSS is not set
|
|
+# CONFIG_QCOM_SYSMON is not set
|
|
+# CONFIG_QRTR is not set
|
|
+# CONFIG_QRTR_SMD is not set
|
|
+# CONFIG_QRTR_TUN is not set
|
|
+# CONFIG_RPMSG is not set
|
|
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
|
|
+# CONFIG_RPMSG_VIRTIO is not set
|
|
+# CONFIG_RPMSG_CHAR is not set
|
|
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
|
|
+# CONFIG_RPMSG_QCOM_SMD is not set
|
|
+CONFIG_QCA_MINIDUMP=y
|
|
+# CONFIG_QCA_MINIDUMP_DEBUG is not set
|
|
+# CONFIG_QRTR_USB is not set
|
|
+# CONFIG_QRTR_FIFO is not set
|
|
+# CONFIG_QRTR_MHI is not set
|
|
+# CONFIG_MHI_BUS is not set
|
|
+# CONFIG_MHI_QTI is not set
|
|
+# CONFIG_MHI_NETDEV is not set
|
|
+# CONFIG_MHI_DEBUG is not set
|
|
+# CONFIG_MHI_UCI is not set
|
|
+# CONFIG_MHI_SATELLITE is not set
|
|
+# CONFIG_DIAG_OVER_QRTR is not set
|
|
+# CONFIG_MSM_ADSPRPC is not set
|
|
+CONFIG_CRYPTO_MICHAEL_MIC=y
|
|
diff --git a/target/linux/ipq807x/image/Makefile b/target/linux/ipq807x/image/Makefile
|
|
new file mode 100644
|
|
index 0000000000..5752cbcabc
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/image/Makefile
|
|
@@ -0,0 +1,22 @@
|
|
+include $(TOPDIR)/rules.mk
|
|
+include $(INCLUDE_DIR)/image.mk
|
|
+
|
|
+IMG_PREFIX:=$(VERSION_DIST_SANITIZED)-$(IMG_PREFIX_VERNUM)$(IMG_PREFIX_VERCODE)$(IMG_PREFIX_EXTRA)$(BOARD)
|
|
+
|
|
+# default all platform image(fit) build
|
|
+define Device/Default
|
|
+ PROFILES = Default $$(DEVICE_NAME)
|
|
+ KERNEL_NAME := zImage
|
|
+ FILESYSTEMS := squashfs
|
|
+ DEVICE_DTS_DIR := $(DTS_DIR)
|
|
+ IMAGES := sysupgrade.bin
|
|
+ IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
|
+ IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
|
|
+ KERNEL_NAME := Image
|
|
+ KERNEL = kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
|
+ KERNEL_INITRAMFS = kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
|
+endef
|
|
+
|
|
+include $(SUBTARGET).mk
|
|
+
|
|
+$(eval $(call BuildImage))
|
|
diff --git a/target/linux/ipq807x/image/ipq60xx.mk b/target/linux/ipq807x/image/ipq60xx.mk
|
|
new file mode 100644
|
|
index 0000000000..867f1552f3
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/image/ipq60xx.mk
|
|
@@ -0,0 +1,10 @@
|
|
+KERNEL_LOADADDR := 0x41080000
|
|
+
|
|
+define Device/qcom_cp01_c1
|
|
+ DEVICE_TITLE := Qualcomm Cypress C1
|
|
+ DEVICE_DTS := qcom-ipq6018-cp01-c1
|
|
+ DEVICE_DTS_DIR := $(DTS_DIR)/qcom
|
|
+ SUPPORTED_DEVICES := qcom,ipq6018-cp01
|
|
+ IMAGES := sysupgrade.tar
|
|
+endef
|
|
+TARGET_DEVICES += qcom_cp01_c1
|
|
diff --git a/target/linux/ipq807x/image/ipq807x.mk b/target/linux/ipq807x/image/ipq807x.mk
|
|
new file mode 100644
|
|
index 0000000000..7a65cfd4ea
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/image/ipq807x.mk
|
|
@@ -0,0 +1,11 @@
|
|
+KERNEL_LOADADDR := 0x41080000
|
|
+
|
|
+define Device/qcom_hk01
|
|
+ DEVICE_TITLE := Qualcomm Hawkeye HK01
|
|
+ DEVICE_DTS := qcom-ipq807x-hk01
|
|
+ DEVICE_DTS_DIR := $(DTS_DIR)/qcom
|
|
+ DEVICE_DTS_CONFIG=config@hk01
|
|
+ IMAGES := sysupgrade.tar
|
|
+ SUPPORTED_DEVICES := qcom,ipq807x-hk01
|
|
+endef
|
|
+TARGET_DEVICES += qcom_hk01
|
|
diff --git a/target/linux/ipq807x/ipq60xx/config-default b/target/linux/ipq807x/ipq60xx/config-default
|
|
new file mode 100644
|
|
index 0000000000..c75b628657
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/ipq60xx/config-default
|
|
@@ -0,0 +1,236 @@
|
|
+CONFIG_64BIT=y
|
|
+# CONFIG_ACPI is not set
|
|
+CONFIG_ALLOC_BUFFERS_IN_4K_CHUNKS=y
|
|
+CONFIG_ANDROID=y
|
|
+# CONFIG_ANDROID_BINDER_IPC is not set
|
|
+CONFIG_AQUANTIA_PHY=y
|
|
+# CONFIG_AQ_PHY is not set
|
|
+# CONFIG_ARCH_BCM_IPROC is not set
|
|
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
|
+# CONFIG_ARCH_EXYNOS7 is not set
|
|
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
|
|
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
|
|
+# CONFIG_ARCH_LAYERSCAPE is not set
|
|
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
|
|
+# CONFIG_ARCH_SEATTLE is not set
|
|
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
|
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
|
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
+# CONFIG_ARCH_SPRD is not set
|
|
+# CONFIG_ARCH_STRATIX10 is not set
|
|
+# CONFIG_ARCH_THUNDER is not set
|
|
+CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
|
|
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
|
|
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
|
|
+# CONFIG_ARCH_XGENE is not set
|
|
+# CONFIG_ARCH_ZYNQMP is not set
|
|
+CONFIG_ARM64=y
|
|
+# CONFIG_ARM64_16K_PAGES is not set
|
|
+CONFIG_ARM64_4K_PAGES=y
|
|
+# CONFIG_ARM64_64K_PAGES is not set
|
|
+# CONFIG_ARM64_CRYPTO is not set
|
|
+CONFIG_ARM64_ERRATUM_819472=y
|
|
+CONFIG_ARM64_ERRATUM_824069=y
|
|
+CONFIG_ARM64_ERRATUM_826319=y
|
|
+CONFIG_ARM64_ERRATUM_827319=y
|
|
+CONFIG_ARM64_ERRATUM_832075=y
|
|
+CONFIG_ARM64_ERRATUM_843419=y
|
|
+CONFIG_ARM64_ERRATUM_845719=y
|
|
+CONFIG_ARM64_HW_AFDBM=y
|
|
+# CONFIG_ARM64_LSE_ATOMICS is not set
|
|
+CONFIG_ARM64_PAN=y
|
|
+# CONFIG_ARM64_PTDUMP is not set
|
|
+# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
|
|
+CONFIG_ARM64_VA_BITS=39
|
|
+CONFIG_ARM64_VA_BITS_39=y
|
|
+# CONFIG_ARM64_VA_BITS_48 is not set
|
|
+# CONFIG_ARMV8_DEPRECATED is not set
|
|
+CONFIG_ARM_GIC_V2M=y
|
|
+CONFIG_ARM_GIC_V3=y
|
|
+CONFIG_ARM_GIC_V3_ITS=y
|
|
+CONFIG_ARM_QTI_IPQ60XX_CPUFREQ=y
|
|
+CONFIG_ARM_SMMU=y
|
|
+# CONFIG_ARM_SMMU_V3 is not set
|
|
+CONFIG_ASN1=y
|
|
+CONFIG_ASSOCIATIVE_ARRAY=y
|
|
+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
|
+CONFIG_BLOCK_COMPAT=y
|
|
+# CONFIG_BOOTCONFIG_PARTITION is not set
|
|
+# CONFIG_CAVIUM_ERRATUM_22375 is not set
|
|
+# CONFIG_CAVIUM_ERRATUM_23154 is not set
|
|
+# CONFIG_CAVIUM_ERRATUM_27456 is not set
|
|
+CONFIG_CLZ_TAB=y
|
|
+CONFIG_CMA=y
|
|
+CONFIG_CMA_ALIGNMENT=8
|
|
+CONFIG_CMA_AREAS=7
|
|
+CONFIG_CMA_DEBUG=y
|
|
+CONFIG_CMA_DEBUGFS=y
|
|
+CONFIG_CMA_SIZE_MBYTES=0
|
|
+CONFIG_CMA_SIZE_SEL_MBYTES=y
|
|
+# CONFIG_COMMON_CLK_VERSATILE is not set
|
|
+CONFIG_COMMON_CLK_XGENE=y
|
|
+CONFIG_COMPAT=y
|
|
+CONFIG_COMPAT_BINFMT_ELF=y
|
|
+CONFIG_COMPAT_NETLINK_MESSAGES=y
|
|
+CONFIG_COMPAT_OLD_SIGACTION=y
|
|
+# CONFIG_CNSS_QCN9000 is not set
|
|
+CONFIG_CORESIGHT=y
|
|
+CONFIG_CORESIGHT_CSR=y
|
|
+CONFIG_CORESIGHT_CTI=y
|
|
+CONFIG_CORESIGHT_HWEVENT=y
|
|
+CONFIG_CORESIGHT_LINKS_AND_SINKS=y
|
|
+CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y
|
|
+CONFIG_CORESIGHT_QCOM_REPLICATOR=y
|
|
+CONFIG_CORESIGHT_SINK_TPIU=y
|
|
+CONFIG_CORESIGHT_SOURCE_ETM4X=y
|
|
+CONFIG_CORESIGHT_STM=y
|
|
+CONFIG_CORESIGHT_TPDA=y
|
|
+CONFIG_CORESIGHT_TPDM=y
|
|
+CONFIG_CRC_CCITT=m
|
|
+CONFIG_CRYPTO_AKCIPHER=y
|
|
+CONFIG_CRYPTO_AKCIPHER2=y
|
|
+# CONFIG_CRYPTO_DEV_QCEDEV is not set
|
|
+# CONFIG_CRYPTO_DEV_QCRYPTO is not set
|
|
+CONFIG_CRYPTO_DRBG=y
|
|
+CONFIG_CRYPTO_DRBG_HMAC=y
|
|
+CONFIG_CRYPTO_DRBG_MENU=y
|
|
+CONFIG_CRYPTO_GF128MUL=y
|
|
+CONFIG_CRYPTO_GHASH=y
|
|
+CONFIG_CRYPTO_HASH=y
|
|
+CONFIG_CRYPTO_HMAC=y
|
|
+CONFIG_CRYPTO_JITTERENTROPY=y
|
|
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
|
+CONFIG_CRYPTO_NULL2=y
|
|
+CONFIG_CRYPTO_PCOMP2=y
|
|
+CONFIG_CRYPTO_RNG_DEFAULT=y
|
|
+CONFIG_CRYPTO_SHA512=y
|
|
+CONFIG_DIAG_CHAR=m
|
|
+CONFIG_DMA_CMA=y
|
|
+CONFIG_DMA_SHARED_BUFFER=y
|
|
+CONFIG_DMI=y
|
|
+CONFIG_DMIID=y
|
|
+# CONFIG_DMI_SYSFS is not set
|
|
+CONFIG_DT_IDLE_STATES=y
|
|
+CONFIG_EDAC_SUPPORT=y
|
|
+CONFIG_EFI=y
|
|
+CONFIG_EFIVAR_FS=m
|
|
+CONFIG_EFI_ARMSTUB=y
|
|
+CONFIG_EFI_ESRT=y
|
|
+CONFIG_EFI_PARAMS_FROM_FDT=y
|
|
+CONFIG_EFI_RUNTIME_WRAPPERS=y
|
|
+CONFIG_EFI_STUB=y
|
|
+# CONFIG_EFI_VARS is not set
|
|
+CONFIG_EXTCON=y
|
|
+CONFIG_EXTCON_USB_GPIO=y
|
|
+CONFIG_FB_DEFERRED_IO=y
|
|
+CONFIG_FRAME_POINTER=y
|
|
+CONFIG_FRAME_WARN=2048
|
|
+CONFIG_FREEZER=y
|
|
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
|
+CONFIG_GENERIC_CPU_AUTOPROBE=y
|
|
+CONFIG_GENERIC_CSUM=y
|
|
+CONFIG_GENERIC_EARLY_IOREMAP=y
|
|
+CONFIG_GENERIC_IRQ_MIGRATION=y
|
|
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
|
+# CONFIG_GPIO_XGENE is not set
|
|
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
|
|
+CONFIG_HAVE_ARCH_KASAN=y
|
|
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
|
|
+CONFIG_HAVE_ARM_SMCCC=y
|
|
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
|
|
+CONFIG_HAVE_CMPXCHG_LOCAL=y
|
|
+CONFIG_HAVE_DEBUG_BUGVERBOSE=y
|
|
+CONFIG_HAVE_GENERIC_RCU_GUP=y
|
|
+CONFIG_HAVE_MEMORY_PRESENT=y
|
|
+CONFIG_HAVE_PATA_PLATFORM=y
|
|
+CONFIG_HAVE_RCU_TABLE_FREE=y
|
|
+# CONFIG_HUGETLBFS is not set
|
|
+# CONFIG_HW_RANDOM_VIRTIO is not set
|
|
+# CONFIG_I2C_CADENCE is not set
|
|
+CONFIG_IIO=y
|
|
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
|
+CONFIG_IOMMU_API=y
|
|
+CONFIG_IOMMU_DMA=y
|
|
+CONFIG_IOMMU_IOVA=y
|
|
+CONFIG_IOMMU_IO_PGTABLE=y
|
|
+# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
|
+CONFIG_IOMMU_IO_PGTABLE_LPAE=y
|
|
+# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
|
|
+CONFIG_IOMMU_SUPPORT=y
|
|
+CONFIG_ION=y
|
|
+CONFIG_ION_MSM=y
|
|
+# CONFIG_IPQ_APSS_5018 is not set
|
|
+# CONFIG_IPQ_GCC_5018 is not set
|
|
+CONFIG_IPQ_APSS_6018=y
|
|
+CONFIG_IPQ_GCC_6018=y
|
|
+CONFIG_IPQ_MEM_PROFILE=0
|
|
+# CONFIG_KCOV is not set
|
|
+# CONFIG_KVM is not set
|
|
+CONFIG_LEDS_PCA9956B=y
|
|
+CONFIG_MDIO_QCA=y
|
|
+CONFIG_MEMORY_ISOLATION=y
|
|
+CONFIG_MIGRATION=y
|
|
+CONFIG_MODULES_USE_ELF_RELA=y
|
|
+CONFIG_MPILIB=y
|
|
+# CONFIG_MTD_NAND_SERIAL is not set
|
|
+# CONFIG_PAGE_SCOPE_MULTI_PAGE_READ is not set
|
|
+CONFIG_MSM_SECURE_BUFFER=y
|
|
+CONFIG_NEED_SG_DMA_LENGTH=y
|
|
+CONFIG_NET_SWITCHDEV=y
|
|
+# CONFIG_NET_VENDOR_CAVIUM is not set
|
|
+CONFIG_NLS=y
|
|
+CONFIG_NUM_ALT_PARTITION=16
|
|
+CONFIG_OF_IOMMU=y
|
|
+CONFIG_OID_REGISTRY=y
|
|
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
|
|
+# CONFIG_PCI_HISI is not set
|
|
+CONFIG_PCI_LABEL=y
|
|
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
|
+CONFIG_PGTABLE_LEVELS=3
|
|
+CONFIG_PHYS_ADDR_T_64BIT=y
|
|
+# CONFIG_PHY_XGENE is not set
|
|
+# CONFIG_PINCTRL_IPQ5018 is not set
|
|
+CONFIG_PINCTRL_IPQ6018=y
|
|
+# CONFIG_PKCS7_MESSAGE_PARSER is not set
|
|
+# CONFIG_POWER_RESET_XGENE is not set
|
|
+CONFIG_PPS=y
|
|
+CONFIG_PTP_1588_CLOCK=y
|
|
+CONFIG_PWM_IPQ4019=y
|
|
+# CONFIG_QCA_85XX_SWITCH is not set
|
|
+CONFIG_QCOM_APM=y
|
|
+CONFIG_QCOM_DCC=y
|
|
+CONFIG_QCOM_QMI_HELPERS=y
|
|
+CONFIG_QCOM_SCM_64=y
|
|
+CONFIG_QCOM_SPMI_VADC=y
|
|
+# CONFIG_QTI_Q6V5_ADSP is not set
|
|
+CONFIG_REGMAP_ALLOW_WRITE_DEBUGFS=y
|
|
+CONFIG_REGMAP_I2C=y
|
|
+CONFIG_REGMAP_SPI=y
|
|
+CONFIG_REGMAP_SPMI=y
|
|
+CONFIG_REGULATOR_CPR3=y
|
|
+CONFIG_REGULATOR_CPR3_NPU=y
|
|
+CONFIG_REGULATOR_CPR4_APSS=y
|
|
+# CONFIG_RTC_DRV_EFI is not set
|
|
+# CONFIG_SKB_FIXED_SIZE_2K is not set
|
|
+CONFIG_SPARSEMEM=y
|
|
+CONFIG_SPARSEMEM_EXTREME=y
|
|
+CONFIG_SPARSEMEM_MANUAL=y
|
|
+CONFIG_SPARSEMEM_VMEMMAP=y
|
|
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
|
+CONFIG_SPS=y
|
|
+CONFIG_SPS_SUPPORT_NDP_BAM=y
|
|
+CONFIG_STAGING=y
|
|
+CONFIG_SUSPEND_FREEZER=y
|
|
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
|
+CONFIG_SYSVIPC_COMPAT=y
|
|
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
|
|
+CONFIG_THREAD_INFO_IN_TASK=y
|
|
+CONFIG_UCS2_STRING=y
|
|
+# CONFIG_USB_GADGET is not set
|
|
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|
+# CONFIG_VFIO is not set
|
|
+CONFIG_VIRTIO=y
|
|
+# CONFIG_VIRTIO_NET is not set
|
|
+CONFIG_VIRTUALIZATION=y
|
|
+CONFIG_WANT_DEV_COREDUMP=y
|
|
+CONFIG_ZONE_DMA_FLAG=1
|
|
diff --git a/target/linux/ipq807x/ipq60xx/profiles/default.mk b/target/linux/ipq807x/ipq60xx/profiles/default.mk
|
|
new file mode 100644
|
|
index 0000000000..f47e73acfc
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/ipq60xx/profiles/default.mk
|
|
@@ -0,0 +1,9 @@
|
|
+define Profile/Default
|
|
+ NAME:=Default Profile (minimum package set)
|
|
+endef
|
|
+
|
|
+define Profile/Default/Description
|
|
+Default package set compatible with most boards.
|
|
+endef
|
|
+$(eval $(call Profile,Default))
|
|
+
|
|
diff --git a/target/linux/ipq807x/ipq60xx/target.mk b/target/linux/ipq807x/ipq60xx/target.mk
|
|
new file mode 100644
|
|
index 0000000000..18eef9b4e0
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/ipq60xx/target.mk
|
|
@@ -0,0 +1,8 @@
|
|
+SUBTARGET:=ipq60xx
|
|
+BOARDNAME:=IPQ60xx based boards
|
|
+
|
|
+DEFAULT_PACKAGES += ath11k-firmware-ipq60xx
|
|
+
|
|
+define Target/Description
|
|
+ Build images for IPQ60xx systems.
|
|
+endef
|
|
diff --git a/target/linux/ipq807x/ipq807x/config-default b/target/linux/ipq807x/ipq807x/config-default
|
|
new file mode 100644
|
|
index 0000000000..683f4a1b97
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/ipq807x/config-default
|
|
@@ -0,0 +1,209 @@
|
|
+CONFIG_64BIT=y
|
|
+# CONFIG_ACPI is not set
|
|
+CONFIG_AQUANTIA_PHY=y
|
|
+# CONFIG_AQ_PHY is not set
|
|
+# CONFIG_ARCH_BCM_IPROC is not set
|
|
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
|
+# CONFIG_ARCH_EXYNOS7 is not set
|
|
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
|
|
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
|
|
+# CONFIG_ARCH_LAYERSCAPE is not set
|
|
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
|
|
+# CONFIG_ARCH_SEATTLE is not set
|
|
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
|
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
|
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
|
+# CONFIG_ARCH_SPRD is not set
|
|
+# CONFIG_ARCH_STRATIX10 is not set
|
|
+# CONFIG_ARCH_THUNDER is not set
|
|
+CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
|
|
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
|
|
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
|
|
+# CONFIG_ARCH_XGENE is not set
|
|
+# CONFIG_ARCH_ZYNQMP is not set
|
|
+CONFIG_ARM64=y
|
|
+# CONFIG_ARM64_16K_PAGES is not set
|
|
+CONFIG_ARM64_4K_PAGES=y
|
|
+# CONFIG_ARM64_64K_PAGES is not set
|
|
+# CONFIG_ARM64_CRYPTO is not set
|
|
+CONFIG_ARM64_ERRATUM_819472=y
|
|
+CONFIG_ARM64_ERRATUM_824069=y
|
|
+CONFIG_ARM64_ERRATUM_826319=y
|
|
+CONFIG_ARM64_ERRATUM_827319=y
|
|
+CONFIG_ARM64_ERRATUM_832075=y
|
|
+CONFIG_ARM64_ERRATUM_843419=y
|
|
+CONFIG_ARM64_ERRATUM_845719=y
|
|
+CONFIG_ARM64_HW_AFDBM=y
|
|
+# CONFIG_ARM64_LSE_ATOMICS is not set
|
|
+CONFIG_ARM64_PAN=y
|
|
+# CONFIG_ARM64_PTDUMP is not set
|
|
+# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
|
|
+CONFIG_ARM64_VA_BITS=39
|
|
+CONFIG_ARM64_VA_BITS_39=y
|
|
+# CONFIG_ARM64_VA_BITS_48 is not set
|
|
+# CONFIG_ARMV8_DEPRECATED is not set
|
|
+CONFIG_ARM_GIC_V2M=y
|
|
+CONFIG_ARM_GIC_V3=y
|
|
+CONFIG_ARM_GIC_V3_ITS=y
|
|
+# CONFIG_ARM_QTI_IPQ60XX_CPUFREQ is not set
|
|
+CONFIG_ASN1=y
|
|
+CONFIG_ASSOCIATIVE_ARRAY=y
|
|
+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
|
+CONFIG_BLOCK_COMPAT=y
|
|
+# CONFIG_BOOTCONFIG_PARTITION is not set
|
|
+# CONFIG_CAVIUM_ERRATUM_22375 is not set
|
|
+# CONFIG_CAVIUM_ERRATUM_23154 is not set
|
|
+# CONFIG_CAVIUM_ERRATUM_27456 is not set
|
|
+CONFIG_CLZ_TAB=y
|
|
+# CONFIG_COMMON_CLK_VERSATILE is not set
|
|
+CONFIG_COMMON_CLK_XGENE=y
|
|
+CONFIG_COMPAT=y
|
|
+CONFIG_COMPAT_BINFMT_ELF=y
|
|
+CONFIG_COMPAT_NETLINK_MESSAGES=y
|
|
+CONFIG_COMPAT_OLD_SIGACTION=y
|
|
+# CONFIG_CNSS_QCN9000 is not set
|
|
+CONFIG_CORESIGHT=y
|
|
+CONFIG_CORESIGHT_CSR=y
|
|
+CONFIG_CORESIGHT_CTI=y
|
|
+CONFIG_CORESIGHT_HWEVENT=y
|
|
+CONFIG_CORESIGHT_LINKS_AND_SINKS=y
|
|
+CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y
|
|
+CONFIG_CORESIGHT_QCOM_REPLICATOR=y
|
|
+CONFIG_CORESIGHT_SINK_TPIU=y
|
|
+CONFIG_CORESIGHT_SOURCE_ETM4X=y
|
|
+CONFIG_CORESIGHT_STM=y
|
|
+CONFIG_CORESIGHT_TPDA=y
|
|
+CONFIG_CORESIGHT_TPDM=y
|
|
+CONFIG_CRC_CCITT=m
|
|
+CONFIG_CRYPTO_AKCIPHER=y
|
|
+CONFIG_CRYPTO_AKCIPHER2=y
|
|
+# CONFIG_CRYPTO_DEV_QCEDEV is not set
|
|
+# CONFIG_CRYPTO_DEV_QCRYPTO is not set
|
|
+CONFIG_CRYPTO_DRBG=y
|
|
+CONFIG_CRYPTO_DRBG_HMAC=y
|
|
+CONFIG_CRYPTO_DRBG_MENU=y
|
|
+CONFIG_CRYPTO_GF128MUL=y
|
|
+CONFIG_CRYPTO_GHASH=y
|
|
+CONFIG_CRYPTO_HASH=y
|
|
+CONFIG_CRYPTO_HMAC=y
|
|
+CONFIG_CRYPTO_JITTERENTROPY=y
|
|
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
|
+CONFIG_CRYPTO_NULL2=y
|
|
+CONFIG_CRYPTO_PCOMP2=y
|
|
+CONFIG_CRYPTO_RNG_DEFAULT=y
|
|
+CONFIG_CRYPTO_SHA512=y
|
|
+CONFIG_DIAG_CHAR=m
|
|
+CONFIG_DMI=y
|
|
+CONFIG_DMIID=y
|
|
+# CONFIG_DMI_SYSFS is not set
|
|
+CONFIG_DT_IDLE_STATES=y
|
|
+CONFIG_EDAC_SUPPORT=y
|
|
+CONFIG_EFI=y
|
|
+CONFIG_EFIVAR_FS=m
|
|
+CONFIG_EFI_ARMSTUB=y
|
|
+CONFIG_EFI_ESRT=y
|
|
+CONFIG_EFI_PARAMS_FROM_FDT=y
|
|
+CONFIG_EFI_RUNTIME_WRAPPERS=y
|
|
+CONFIG_EFI_STUB=y
|
|
+# CONFIG_EFI_VARS is not set
|
|
+CONFIG_FB_DEFERRED_IO=y
|
|
+CONFIG_FRAME_POINTER=y
|
|
+CONFIG_FRAME_WARN=2048
|
|
+CONFIG_FREEZER=y
|
|
+# CONFIG_GCC_PLUGINS is not set
|
|
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
|
+CONFIG_GENERIC_CPU_AUTOPROBE=y
|
|
+CONFIG_GENERIC_CSUM=y
|
|
+CONFIG_GENERIC_EARLY_IOREMAP=y
|
|
+CONFIG_GENERIC_IRQ_MIGRATION=y
|
|
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
|
+# CONFIG_GPIO_XGENE is not set
|
|
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
|
|
+CONFIG_HAVE_ARCH_KASAN=y
|
|
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
|
|
+CONFIG_HAVE_ARM_SMCCC=y
|
|
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
|
|
+CONFIG_HAVE_CMPXCHG_LOCAL=y
|
|
+CONFIG_HAVE_DEBUG_BUGVERBOSE=y
|
|
+CONFIG_HAVE_GENERIC_RCU_GUP=y
|
|
+CONFIG_HAVE_MEMORY_PRESENT=y
|
|
+CONFIG_HAVE_PATA_PLATFORM=y
|
|
+CONFIG_HAVE_RCU_TABLE_FREE=y
|
|
+# CONFIG_HUGETLBFS is not set
|
|
+# CONFIG_HW_RANDOM_VIRTIO is not set
|
|
+# CONFIG_I2C_CADENCE is not set
|
|
+CONFIG_IIO=y
|
|
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
|
+CONFIG_IPQ_ADSS_807x=y
|
|
+# CONFIG_IPQ_GCC_5018 is not set
|
|
+# CONFIG_IPQ_APSS_5018 is not set
|
|
+CONFIG_IPQ_APSS_807x=y
|
|
+CONFIG_IPQ_GCC_807x=y
|
|
+CONFIG_IPQ_MEM_PROFILE=0
|
|
+# CONFIG_KVM is not set
|
|
+# CONFIG_KCOV is not set
|
|
+CONFIG_MAILBOX=y
|
|
+CONFIG_MDIO_QCA=y
|
|
+CONFIG_MODULES_USE_ELF_RELA=y
|
|
+CONFIG_MPILIB=y
|
|
+# CONFIG_MTD_NAND_SERIAL is not set
|
|
+# CONFIG_PAGE_SCOPE_MULTI_PAGE_READ is not set
|
|
+CONFIG_NEED_SG_DMA_LENGTH=y
|
|
+# CONFIG_NET_SWITCHDEV is not set
|
|
+# CONFIG_NET_VENDOR_CAVIUM is not set
|
|
+CONFIG_NLS=y
|
|
+CONFIG_NUM_ALT_PARTITION=16
|
|
+CONFIG_OID_REGISTRY=y
|
|
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
|
|
+# CONFIG_PCI_HISI is not set
|
|
+CONFIG_PCI_LABEL=y
|
|
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
|
+CONFIG_PGTABLE_LEVELS=3
|
|
+CONFIG_PHYS_ADDR_T_64BIT=y
|
|
+# CONFIG_PHY_XGENE is not set
|
|
+CONFIG_PINCTRL_IPQ807x=y
|
|
+# CONFIG_PINCTRL_IPQ5018 is not set
|
|
+# CONFIG_PKCS7_MESSAGE_PARSER is not set
|
|
+# CONFIG_POWER_RESET_XGENE is not set
|
|
+CONFIG_PPS=y
|
|
+CONFIG_PTP_1588_CLOCK=y
|
|
+CONFIG_PWM_IPQ4019=y
|
|
+# CONFIG_QCA_85XX_SWITCH is not set
|
|
+CONFIG_QCOM_APM=y
|
|
+CONFIG_QCOM_DCC=y
|
|
+CONFIG_QCOM_QMI_HELPERS=y
|
|
+CONFIG_QCOM_SCM_64=y
|
|
+CONFIG_QCOM_SPMI_VADC=y
|
|
+# CONFIG_QTI_Q6V5_ADSP is not set
|
|
+CONFIG_REGMAP_ALLOW_WRITE_DEBUGFS=y
|
|
+CONFIG_REGMAP_I2C=y
|
|
+CONFIG_REGMAP_SPI=y
|
|
+CONFIG_REGMAP_SPMI=y
|
|
+CONFIG_REGULATOR_CPR3=y
|
|
+CONFIG_REGULATOR_CPR3_NPU=y
|
|
+CONFIG_REGULATOR_CPR4_APSS=y
|
|
+CONFIG_RMNET=y
|
|
+CONFIG_RMNET_DATA=y
|
|
+CONFIG_RMNET_DATA_DEBUG_PKT=y
|
|
+# CONFIG_RTC_DRV_EFI is not set
|
|
+# CONFIG_SKB_FIXED_SIZE_2K is not set
|
|
+CONFIG_SPARSEMEM=y
|
|
+CONFIG_SPARSEMEM_EXTREME=y
|
|
+CONFIG_SPARSEMEM_MANUAL=y
|
|
+CONFIG_SPARSEMEM_VMEMMAP=y
|
|
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
|
+CONFIG_SPS=y
|
|
+CONFIG_SPS_SUPPORT_NDP_BAM=y
|
|
+CONFIG_SUSPEND_FREEZER=y
|
|
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
|
+CONFIG_SYSVIPC_COMPAT=y
|
|
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
|
|
+CONFIG_THREAD_INFO_IN_TASK=y
|
|
+CONFIG_UCS2_STRING=y
|
|
+# CONFIG_USB_GADGET is not set
|
|
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|
+CONFIG_VIRTIO=y
|
|
+# CONFIG_VIRTIO_NET is not set
|
|
+CONFIG_VIRTUALIZATION=y
|
|
+CONFIG_WANT_DEV_COREDUMP=y
|
|
+CONFIG_ZONE_DMA_FLAG=1
|
|
diff --git a/target/linux/ipq807x/ipq807x/profiles/default.mk b/target/linux/ipq807x/ipq807x/profiles/default.mk
|
|
new file mode 100644
|
|
index 0000000000..f47e73acfc
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/ipq807x/profiles/default.mk
|
|
@@ -0,0 +1,9 @@
|
|
+define Profile/Default
|
|
+ NAME:=Default Profile (minimum package set)
|
|
+endef
|
|
+
|
|
+define Profile/Default/Description
|
|
+Default package set compatible with most boards.
|
|
+endef
|
|
+$(eval $(call Profile,Default))
|
|
+
|
|
diff --git a/target/linux/ipq807x/ipq807x/target.mk b/target/linux/ipq807x/ipq807x/target.mk
|
|
new file mode 100644
|
|
index 0000000000..40674b2992
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/ipq807x/target.mk
|
|
@@ -0,0 +1,8 @@
|
|
+SUBTARGET:=ipq807x
|
|
+BOARDNAME:=IPQ807x based boards
|
|
+
|
|
+DEFAULT_PACKAGES += ath11k-firmware-ipq807x
|
|
+
|
|
+define Target/Description
|
|
+ Build images for IPQ807x systems.
|
|
+endef
|
|
diff --git a/target/linux/ipq807x/modules.mk b/target/linux/ipq807x/modules.mk
|
|
new file mode 100644
|
|
index 0000000000..3b772a5726
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/modules.mk
|
|
@@ -0,0 +1,58 @@
|
|
+define KernelPackage/usb-phy-ipq807x
|
|
+ TITLE:=DWC3 USB QCOM PHY driver for IPQ807x
|
|
+ DEPENDS:=@TARGET_ipq807x
|
|
+ KCONFIG:= \
|
|
+ CONFIG_USB_QCOM_QUSB_PHY \
|
|
+ CONFIG_USB_QCOM_QMP_PHY
|
|
+ FILES:= \
|
|
+ $(LINUX_DIR)/drivers/usb/phy/phy-msm-qusb.ko \
|
|
+ $(LINUX_DIR)/drivers/usb/phy/phy-msm-ssusb-qmp.ko
|
|
+ AUTOLOAD:=$(call AutoLoad,45,phy-msm-qusb phy-msm-ssusb-qmp,1)
|
|
+ $(call AddDepends/usb)
|
|
+endef
|
|
+
|
|
+define KernelPackage/usb-phy-ipq807x/description
|
|
+ This driver provides support for the USB PHY drivers
|
|
+ within the IPQ807x SoCs.
|
|
+endef
|
|
+
|
|
+$(eval $(call KernelPackage,usb-phy-ipq807x))
|
|
+
|
|
+
|
|
+define KernelPackage/qrtr_mproc
|
|
+ TITLE:= Ath11k Specific kernel configs for IPQ807x and IPQ60xx
|
|
+ DEPENDS+= @TARGET_ipq807x
|
|
+ KCONFIG:= \
|
|
+ CONFIG_QRTR=y \
|
|
+ CONFIG_QCOM_APCS_IPC=y \
|
|
+ CONFIG_QCOM_GLINK_SSR=y \
|
|
+ CONFIG_QCOM_Q6V5_WCSS=y \
|
|
+ CONFIG_MSM_RPM_RPMSG=y \
|
|
+ CONFIG_RPMSG_QCOM_GLINK_RPM=y \
|
|
+ CONFIG_REGULATOR_RPM_GLINK=y \
|
|
+ CONFIG_QCOM_SYSMON=y \
|
|
+ CONFIG_RPMSG=y \
|
|
+ CONFIG_RPMSG_CHAR=y \
|
|
+ CONFIG_RPMSG_QCOM_GLINK_SMEM=y \
|
|
+ CONFIG_RPMSG_QCOM_SMD=y \
|
|
+ CONFIG_QRTR_SMD=y \
|
|
+ CONFIG_QCOM_QMI_HELPERS=y \
|
|
+ CONFIG_SAMPLES=y \
|
|
+ CONFIG_SAMPLE_QMI_CLIENT=m \
|
|
+ CONFIG_SAMPLE_TRACE_EVENTS=n \
|
|
+ CONFIG_SAMPLE_KOBJECT=n \
|
|
+ CONFIG_SAMPLE_KPROBES=n \
|
|
+ CONFIG_SAMPLE_KRETPROBES=n \
|
|
+ CONFIG_SAMPLE_HW_BREAKPOINT=n \
|
|
+ CONFIG_SAMPLE_KFIFO=n \
|
|
+ CONFIG_SAMPLE_CONFIGFS=n \
|
|
+ CONFIG_SAMPLE_RPMSG_CLIENT=n \
|
|
+ CONFIG_MAILBOX=y \
|
|
+ CONFIG_DIAG_OVER_QRTR=y
|
|
+endef
|
|
+
|
|
+define KernelPackage/qrtr_mproc/description
|
|
+Kernel configs for ath11k support specific to ipq807x and IPQ60xx
|
|
+endef
|
|
+
|
|
+$(eval $(call KernelPackage,qrtr_mproc))
|
|
diff --git a/target/linux/ipq807x/patches/100-qrtr-ns.patch b/target/linux/ipq807x/patches/100-qrtr-ns.patch
|
|
new file mode 100644
|
|
index 0000000000..850e644778
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/patches/100-qrtr-ns.patch
|
|
@@ -0,0 +1,976 @@
|
|
+Index: linux-4.4.60/net/qrtr/ns.c
|
|
+===================================================================
|
|
+--- /dev/null
|
|
++++ linux-4.4.60/net/qrtr/ns.c
|
|
+@@ -0,0 +1,760 @@
|
|
++// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
|
++/*
|
|
++ * Copyright (c) 2015, Sony Mobile Communications Inc.
|
|
++ * Copyright (c) 2013, The Linux Foundation. All rights reserved.
|
|
++ * Copyright (c) 2020, Linaro Ltd.
|
|
++ */
|
|
++
|
|
++#include <linux/module.h>
|
|
++#include <linux/qrtr.h>
|
|
++#include <linux/workqueue.h>
|
|
++#include <net/sock.h>
|
|
++
|
|
++#include "qrtr.h"
|
|
++
|
|
++#define CREATE_TRACE_POINTS
|
|
++#include <trace/events/qrtr.h>
|
|
++
|
|
++static RADIX_TREE(nodes, GFP_KERNEL);
|
|
++
|
|
++static struct {
|
|
++ struct socket *sock;
|
|
++ struct sockaddr_qrtr bcast_sq;
|
|
++ struct list_head lookups;
|
|
++ struct workqueue_struct *workqueue;
|
|
++ struct work_struct work;
|
|
++ int local_node;
|
|
++} qrtr_ns;
|
|
++
|
|
++static const char * const qrtr_ctrl_pkt_strings[] = {
|
|
++ [QRTR_TYPE_HELLO] = "hello",
|
|
++ [QRTR_TYPE_BYE] = "bye",
|
|
++ [QRTR_TYPE_NEW_SERVER] = "new-server",
|
|
++ [QRTR_TYPE_DEL_SERVER] = "del-server",
|
|
++ [QRTR_TYPE_DEL_CLIENT] = "del-client",
|
|
++ [QRTR_TYPE_RESUME_TX] = "resume-tx",
|
|
++ [QRTR_TYPE_EXIT] = "exit",
|
|
++ [QRTR_TYPE_PING] = "ping",
|
|
++ [QRTR_TYPE_NEW_LOOKUP] = "new-lookup",
|
|
++ [QRTR_TYPE_DEL_LOOKUP] = "del-lookup",
|
|
++};
|
|
++
|
|
++struct qrtr_server_filter {
|
|
++ unsigned int service;
|
|
++ unsigned int instance;
|
|
++ unsigned int ifilter;
|
|
++};
|
|
++
|
|
++struct qrtr_lookup {
|
|
++ unsigned int service;
|
|
++ unsigned int instance;
|
|
++
|
|
++ struct sockaddr_qrtr sq;
|
|
++ struct list_head li;
|
|
++};
|
|
++
|
|
++struct qrtr_server {
|
|
++ unsigned int service;
|
|
++ unsigned int instance;
|
|
++
|
|
++ unsigned int node;
|
|
++ unsigned int port;
|
|
++
|
|
++ struct list_head qli;
|
|
++};
|
|
++
|
|
++struct qrtr_node {
|
|
++ unsigned int id;
|
|
++ struct radix_tree_root servers;
|
|
++};
|
|
++
|
|
++static struct qrtr_node *node_get(unsigned int node_id)
|
|
++{
|
|
++ struct qrtr_node *node;
|
|
++
|
|
++ node = radix_tree_lookup(&nodes, node_id);
|
|
++ if (node)
|
|
++ return node;
|
|
++
|
|
++ /* If node didn't exist, allocate and insert it to the tree */
|
|
++ node = kzalloc(sizeof(*node), GFP_KERNEL);
|
|
++ if (!node)
|
|
++ return NULL;
|
|
++
|
|
++ node->id = node_id;
|
|
++
|
|
++ radix_tree_insert(&nodes, node_id, node);
|
|
++
|
|
++ return node;
|
|
++}
|
|
++
|
|
++static int server_match(const struct qrtr_server *srv,
|
|
++ const struct qrtr_server_filter *f)
|
|
++{
|
|
++ unsigned int ifilter = f->ifilter;
|
|
++
|
|
++ if (f->service != 0 && srv->service != f->service)
|
|
++ return 0;
|
|
++ if (!ifilter && f->instance)
|
|
++ ifilter = ~0;
|
|
++
|
|
++ return (srv->instance & ifilter) == f->instance;
|
|
++}
|
|
++
|
|
++static int service_announce_new(struct sockaddr_qrtr *dest,
|
|
++ struct qrtr_server *srv)
|
|
++{
|
|
++ struct qrtr_ctrl_pkt pkt;
|
|
++ struct msghdr msg = { };
|
|
++ struct kvec iv;
|
|
++
|
|
++ trace_qrtr_ns_service_announce_new(srv->service, srv->instance,
|
|
++ srv->node, srv->port);
|
|
++
|
|
++ iv.iov_base = &pkt;
|
|
++ iv.iov_len = sizeof(pkt);
|
|
++
|
|
++ memset(&pkt, 0, sizeof(pkt));
|
|
++ pkt.cmd = cpu_to_le32(QRTR_TYPE_NEW_SERVER);
|
|
++ pkt.server.service = cpu_to_le32(srv->service);
|
|
++ pkt.server.instance = cpu_to_le32(srv->instance);
|
|
++ pkt.server.node = cpu_to_le32(srv->node);
|
|
++ pkt.server.port = cpu_to_le32(srv->port);
|
|
++
|
|
++ msg.msg_name = (struct sockaddr *)dest;
|
|
++ msg.msg_namelen = sizeof(*dest);
|
|
++
|
|
++ return kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
|
|
++}
|
|
++
|
|
++static int service_announce_del(struct sockaddr_qrtr *dest,
|
|
++ struct qrtr_server *srv)
|
|
++{
|
|
++ struct qrtr_ctrl_pkt pkt;
|
|
++ struct msghdr msg = { };
|
|
++ struct kvec iv;
|
|
++ int ret;
|
|
++
|
|
++ trace_qrtr_ns_service_announce_del(srv->service, srv->instance,
|
|
++ srv->node, srv->port);
|
|
++
|
|
++ iv.iov_base = &pkt;
|
|
++ iv.iov_len = sizeof(pkt);
|
|
++
|
|
++ memset(&pkt, 0, sizeof(pkt));
|
|
++ pkt.cmd = cpu_to_le32(QRTR_TYPE_DEL_SERVER);
|
|
++ pkt.server.service = cpu_to_le32(srv->service);
|
|
++ pkt.server.instance = cpu_to_le32(srv->instance);
|
|
++ pkt.server.node = cpu_to_le32(srv->node);
|
|
++ pkt.server.port = cpu_to_le32(srv->port);
|
|
++
|
|
++ msg.msg_name = (struct sockaddr *)dest;
|
|
++ msg.msg_namelen = sizeof(*dest);
|
|
++
|
|
++ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
|
|
++ if (ret < 0)
|
|
++ pr_err("failed to announce del service\n");
|
|
++
|
|
++ return ret;
|
|
++}
|
|
++
|
|
++static void lookup_notify(struct sockaddr_qrtr *to, struct qrtr_server *srv,
|
|
++ bool new)
|
|
++{
|
|
++ struct qrtr_ctrl_pkt pkt;
|
|
++ struct msghdr msg = { };
|
|
++ struct kvec iv;
|
|
++ int ret;
|
|
++
|
|
++ iv.iov_base = &pkt;
|
|
++ iv.iov_len = sizeof(pkt);
|
|
++
|
|
++ memset(&pkt, 0, sizeof(pkt));
|
|
++ pkt.cmd = new ? cpu_to_le32(QRTR_TYPE_NEW_SERVER) :
|
|
++ cpu_to_le32(QRTR_TYPE_DEL_SERVER);
|
|
++ if (srv) {
|
|
++ pkt.server.service = cpu_to_le32(srv->service);
|
|
++ pkt.server.instance = cpu_to_le32(srv->instance);
|
|
++ pkt.server.node = cpu_to_le32(srv->node);
|
|
++ pkt.server.port = cpu_to_le32(srv->port);
|
|
++ }
|
|
++
|
|
++ msg.msg_name = (struct sockaddr *)to;
|
|
++ msg.msg_namelen = sizeof(*to);
|
|
++
|
|
++ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
|
|
++ if (ret < 0)
|
|
++ pr_err("failed to send lookup notification\n");
|
|
++}
|
|
++
|
|
++static int announce_servers(struct sockaddr_qrtr *sq)
|
|
++{
|
|
++ struct radix_tree_iter iter;
|
|
++ struct qrtr_server *srv;
|
|
++ struct qrtr_node *node;
|
|
++ void __rcu **slot;
|
|
++ int ret;
|
|
++
|
|
++ node = node_get(qrtr_ns.local_node);
|
|
++ if (!node)
|
|
++ return 0;
|
|
++
|
|
++ /* Announce the list of servers registered in this node */
|
|
++ radix_tree_for_each_slot(slot, &node->servers, &iter, 0) {
|
|
++ srv = radix_tree_deref_slot(slot);
|
|
++
|
|
++ ret = service_announce_new(sq, srv);
|
|
++ if (ret < 0) {
|
|
++ pr_err("failed to announce new service\n");
|
|
++ return ret;
|
|
++ }
|
|
++ }
|
|
++
|
|
++ return 0;
|
|
++}
|
|
++
|
|
++static struct qrtr_server *server_add(unsigned int service,
|
|
++ unsigned int instance,
|
|
++ unsigned int node_id,
|
|
++ unsigned int port)
|
|
++{
|
|
++ struct qrtr_server *srv;
|
|
++ struct qrtr_server *old;
|
|
++ struct qrtr_node *node;
|
|
++
|
|
++ if (!service || !port)
|
|
++ return NULL;
|
|
++
|
|
++ srv = kzalloc(sizeof(*srv), GFP_KERNEL);
|
|
++ if (!srv)
|
|
++ return NULL;
|
|
++
|
|
++ srv->service = service;
|
|
++ srv->instance = instance;
|
|
++ srv->node = node_id;
|
|
++ srv->port = port;
|
|
++
|
|
++ node = node_get(node_id);
|
|
++ if (!node)
|
|
++ goto err;
|
|
++
|
|
++ /* Delete the old server on the same port */
|
|
++ old = radix_tree_lookup(&node->servers, port);
|
|
++ if (old) {
|
|
++ radix_tree_delete(&node->servers, port);
|
|
++ kfree(old);
|
|
++ }
|
|
++
|
|
++ radix_tree_insert(&node->servers, port, srv);
|
|
++
|
|
++ trace_qrtr_ns_server_add(srv->service, srv->instance,
|
|
++ srv->node, srv->port);
|
|
++
|
|
++ return srv;
|
|
++
|
|
++err:
|
|
++ kfree(srv);
|
|
++ return NULL;
|
|
++}
|
|
++
|
|
++static int server_del(struct qrtr_node *node, unsigned int port)
|
|
++{
|
|
++ struct qrtr_lookup *lookup;
|
|
++ struct qrtr_server *srv;
|
|
++ struct list_head *li;
|
|
++
|
|
++ srv = radix_tree_lookup(&node->servers, port);
|
|
++ if (!srv)
|
|
++ return -ENOENT;
|
|
++
|
|
++ radix_tree_delete(&node->servers, port);
|
|
++
|
|
++ /* Broadcast the removal of local servers */
|
|
++ if (srv->node == qrtr_ns.local_node)
|
|
++ service_announce_del(&qrtr_ns.bcast_sq, srv);
|
|
++
|
|
++ /* Announce the service's disappearance to observers */
|
|
++ list_for_each(li, &qrtr_ns.lookups) {
|
|
++ lookup = container_of(li, struct qrtr_lookup, li);
|
|
++ if (lookup->service && lookup->service != srv->service)
|
|
++ continue;
|
|
++ if (lookup->instance && lookup->instance != srv->instance)
|
|
++ continue;
|
|
++
|
|
++ lookup_notify(&lookup->sq, srv, false);
|
|
++ }
|
|
++
|
|
++ kfree(srv);
|
|
++
|
|
++ return 0;
|
|
++}
|
|
++
|
|
++static int say_hello(struct sockaddr_qrtr *dest)
|
|
++{
|
|
++ struct qrtr_ctrl_pkt pkt;
|
|
++ struct msghdr msg = { };
|
|
++ struct kvec iv;
|
|
++ int ret;
|
|
++
|
|
++ iv.iov_base = &pkt;
|
|
++ iv.iov_len = sizeof(pkt);
|
|
++
|
|
++ memset(&pkt, 0, sizeof(pkt));
|
|
++ pkt.cmd = cpu_to_le32(QRTR_TYPE_HELLO);
|
|
++
|
|
++ msg.msg_name = (struct sockaddr *)dest;
|
|
++ msg.msg_namelen = sizeof(*dest);
|
|
++
|
|
++ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
|
|
++ if (ret < 0)
|
|
++ pr_err("failed to send hello msg\n");
|
|
++
|
|
++ return ret;
|
|
++}
|
|
++
|
|
++/* Announce the list of servers registered on the local node */
|
|
++static int ctrl_cmd_hello(struct sockaddr_qrtr *sq)
|
|
++{
|
|
++ int ret;
|
|
++
|
|
++ ret = say_hello(sq);
|
|
++ if (ret < 0)
|
|
++ return ret;
|
|
++
|
|
++ return announce_servers(sq);
|
|
++}
|
|
++
|
|
++static int ctrl_cmd_bye(struct sockaddr_qrtr *from)
|
|
++{
|
|
++ struct qrtr_node *local_node;
|
|
++ struct radix_tree_iter iter;
|
|
++ struct qrtr_ctrl_pkt pkt;
|
|
++ struct qrtr_server *srv;
|
|
++ struct sockaddr_qrtr sq;
|
|
++ struct msghdr msg = { };
|
|
++ struct qrtr_node *node;
|
|
++ void __rcu **slot;
|
|
++ struct kvec iv;
|
|
++ int ret;
|
|
++
|
|
++ iv.iov_base = &pkt;
|
|
++ iv.iov_len = sizeof(pkt);
|
|
++
|
|
++ node = node_get(from->sq_node);
|
|
++ if (!node)
|
|
++ return 0;
|
|
++
|
|
++ /* Advertise removal of this client to all servers of remote node */
|
|
++ radix_tree_for_each_slot(slot, &node->servers, &iter, 0) {
|
|
++ srv = radix_tree_deref_slot(slot);
|
|
++ server_del(node, srv->port);
|
|
++ }
|
|
++
|
|
++ /* Advertise the removal of this client to all local servers */
|
|
++ local_node = node_get(qrtr_ns.local_node);
|
|
++ if (!local_node)
|
|
++ return 0;
|
|
++
|
|
++ memset(&pkt, 0, sizeof(pkt));
|
|
++ pkt.cmd = cpu_to_le32(QRTR_TYPE_BYE);
|
|
++ pkt.client.node = cpu_to_le32(from->sq_node);
|
|
++
|
|
++ radix_tree_for_each_slot(slot, &local_node->servers, &iter, 0) {
|
|
++ srv = radix_tree_deref_slot(slot);
|
|
++
|
|
++ sq.sq_family = AF_QIPCRTR;
|
|
++ sq.sq_node = srv->node;
|
|
++ sq.sq_port = srv->port;
|
|
++
|
|
++ msg.msg_name = (struct sockaddr *)&sq;
|
|
++ msg.msg_namelen = sizeof(sq);
|
|
++
|
|
++ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
|
|
++ if (ret < 0) {
|
|
++ pr_err("failed to send bye cmd\n");
|
|
++ return ret;
|
|
++ }
|
|
++ }
|
|
++
|
|
++ return 0;
|
|
++}
|
|
++
|
|
++static int ctrl_cmd_del_client(struct sockaddr_qrtr *from,
|
|
++ unsigned int node_id, unsigned int port)
|
|
++{
|
|
++ struct qrtr_node *local_node;
|
|
++ struct radix_tree_iter iter;
|
|
++ struct qrtr_lookup *lookup;
|
|
++ struct qrtr_ctrl_pkt pkt;
|
|
++ struct msghdr msg = { };
|
|
++ struct qrtr_server *srv;
|
|
++ struct sockaddr_qrtr sq;
|
|
++ struct qrtr_node *node;
|
|
++ struct list_head *tmp;
|
|
++ struct list_head *li;
|
|
++ void __rcu **slot;
|
|
++ struct kvec iv;
|
|
++ int ret;
|
|
++
|
|
++ iv.iov_base = &pkt;
|
|
++ iv.iov_len = sizeof(pkt);
|
|
++
|
|
++ /* Don't accept spoofed messages */
|
|
++ if (from->sq_node != node_id)
|
|
++ return -EINVAL;
|
|
++
|
|
++ /* Local DEL_CLIENT messages comes from the port being closed */
|
|
++ if (from->sq_node == qrtr_ns.local_node && from->sq_port != port)
|
|
++ return -EINVAL;
|
|
++
|
|
++ /* Remove any lookups by this client */
|
|
++ list_for_each_safe(li, tmp, &qrtr_ns.lookups) {
|
|
++ lookup = container_of(li, struct qrtr_lookup, li);
|
|
++ if (lookup->sq.sq_node != node_id)
|
|
++ continue;
|
|
++ if (lookup->sq.sq_port != port)
|
|
++ continue;
|
|
++
|
|
++ list_del(&lookup->li);
|
|
++ kfree(lookup);
|
|
++ }
|
|
++
|
|
++ /* Remove the server belonging to this port */
|
|
++ node = node_get(node_id);
|
|
++ if (node)
|
|
++ server_del(node, port);
|
|
++
|
|
++ /* Advertise the removal of this client to all local servers */
|
|
++ local_node = node_get(qrtr_ns.local_node);
|
|
++ if (!local_node)
|
|
++ return 0;
|
|
++
|
|
++ memset(&pkt, 0, sizeof(pkt));
|
|
++ pkt.cmd = cpu_to_le32(QRTR_TYPE_DEL_CLIENT);
|
|
++ pkt.client.node = cpu_to_le32(node_id);
|
|
++ pkt.client.port = cpu_to_le32(port);
|
|
++
|
|
++ radix_tree_for_each_slot(slot, &local_node->servers, &iter, 0) {
|
|
++ srv = radix_tree_deref_slot(slot);
|
|
++
|
|
++ sq.sq_family = AF_QIPCRTR;
|
|
++ sq.sq_node = srv->node;
|
|
++ sq.sq_port = srv->port;
|
|
++
|
|
++ msg.msg_name = (struct sockaddr *)&sq;
|
|
++ msg.msg_namelen = sizeof(sq);
|
|
++
|
|
++ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
|
|
++ if (ret < 0) {
|
|
++ pr_err("failed to send del client cmd\n");
|
|
++ return ret;
|
|
++ }
|
|
++ }
|
|
++
|
|
++ return 0;
|
|
++}
|
|
++
|
|
++static int ctrl_cmd_new_server(struct sockaddr_qrtr *from,
|
|
++ unsigned int service, unsigned int instance,
|
|
++ unsigned int node_id, unsigned int port)
|
|
++{
|
|
++ struct qrtr_lookup *lookup;
|
|
++ struct qrtr_server *srv;
|
|
++ struct list_head *li;
|
|
++ int ret = 0;
|
|
++
|
|
++ /* Ignore specified node and port for local servers */
|
|
++ if (from->sq_node == qrtr_ns.local_node) {
|
|
++ node_id = from->sq_node;
|
|
++ port = from->sq_port;
|
|
++ }
|
|
++
|
|
++ /* Don't accept spoofed messages */
|
|
++ if (from->sq_node != node_id)
|
|
++ return -EINVAL;
|
|
++
|
|
++ srv = server_add(service, instance, node_id, port);
|
|
++ if (!srv)
|
|
++ return -EINVAL;
|
|
++
|
|
++ if (srv->node == qrtr_ns.local_node) {
|
|
++ ret = service_announce_new(&qrtr_ns.bcast_sq, srv);
|
|
++ if (ret < 0) {
|
|
++ pr_err("failed to announce new service\n");
|
|
++ return ret;
|
|
++ }
|
|
++ }
|
|
++
|
|
++ /* Notify any potential lookups about the new server */
|
|
++ list_for_each(li, &qrtr_ns.lookups) {
|
|
++ lookup = container_of(li, struct qrtr_lookup, li);
|
|
++ if (lookup->service && lookup->service != service)
|
|
++ continue;
|
|
++ if (lookup->instance && lookup->instance != instance)
|
|
++ continue;
|
|
++
|
|
++ lookup_notify(&lookup->sq, srv, true);
|
|
++ }
|
|
++
|
|
++ return ret;
|
|
++}
|
|
++
|
|
++static int ctrl_cmd_del_server(struct sockaddr_qrtr *from,
|
|
++ unsigned int service, unsigned int instance,
|
|
++ unsigned int node_id, unsigned int port)
|
|
++{
|
|
++ struct qrtr_node *node;
|
|
++
|
|
++ /* Ignore specified node and port for local servers*/
|
|
++ if (from->sq_node == qrtr_ns.local_node) {
|
|
++ node_id = from->sq_node;
|
|
++ port = from->sq_port;
|
|
++ }
|
|
++
|
|
++ /* Don't accept spoofed messages */
|
|
++ if (from->sq_node != node_id)
|
|
++ return -EINVAL;
|
|
++
|
|
++ /* Local servers may only unregister themselves */
|
|
++ if (from->sq_node == qrtr_ns.local_node && from->sq_port != port)
|
|
++ return -EINVAL;
|
|
++
|
|
++ node = node_get(node_id);
|
|
++ if (!node)
|
|
++ return -ENOENT;
|
|
++
|
|
++ return server_del(node, port);
|
|
++}
|
|
++
|
|
++static int ctrl_cmd_new_lookup(struct sockaddr_qrtr *from,
|
|
++ unsigned int service, unsigned int instance)
|
|
++{
|
|
++ struct radix_tree_iter node_iter;
|
|
++ struct qrtr_server_filter filter;
|
|
++ struct radix_tree_iter srv_iter;
|
|
++ struct qrtr_lookup *lookup;
|
|
++ struct qrtr_node *node;
|
|
++ void __rcu **node_slot;
|
|
++ void __rcu **srv_slot;
|
|
++
|
|
++ /* Accept only local observers */
|
|
++ if (from->sq_node != qrtr_ns.local_node)
|
|
++ return -EINVAL;
|
|
++
|
|
++ lookup = kzalloc(sizeof(*lookup), GFP_KERNEL);
|
|
++ if (!lookup)
|
|
++ return -ENOMEM;
|
|
++
|
|
++ lookup->sq = *from;
|
|
++ lookup->service = service;
|
|
++ lookup->instance = instance;
|
|
++ list_add_tail(&lookup->li, &qrtr_ns.lookups);
|
|
++
|
|
++ memset(&filter, 0, sizeof(filter));
|
|
++ filter.service = service;
|
|
++ filter.instance = instance;
|
|
++
|
|
++ radix_tree_for_each_slot(node_slot, &nodes, &node_iter, 0) {
|
|
++ node = radix_tree_deref_slot(node_slot);
|
|
++
|
|
++ radix_tree_for_each_slot(srv_slot, &node->servers,
|
|
++ &srv_iter, 0) {
|
|
++ struct qrtr_server *srv;
|
|
++
|
|
++ srv = radix_tree_deref_slot(srv_slot);
|
|
++ if (!server_match(srv, &filter))
|
|
++ continue;
|
|
++
|
|
++ lookup_notify(from, srv, true);
|
|
++ }
|
|
++ }
|
|
++
|
|
++ /* Empty notification, to indicate end of listing */
|
|
++ lookup_notify(from, NULL, true);
|
|
++
|
|
++ return 0;
|
|
++}
|
|
++
|
|
++static void ctrl_cmd_del_lookup(struct sockaddr_qrtr *from,
|
|
++ unsigned int service, unsigned int instance)
|
|
++{
|
|
++ struct qrtr_lookup *lookup;
|
|
++ struct list_head *tmp;
|
|
++ struct list_head *li;
|
|
++
|
|
++ list_for_each_safe(li, tmp, &qrtr_ns.lookups) {
|
|
++ lookup = container_of(li, struct qrtr_lookup, li);
|
|
++ if (lookup->sq.sq_node != from->sq_node)
|
|
++ continue;
|
|
++ if (lookup->sq.sq_port != from->sq_port)
|
|
++ continue;
|
|
++ if (lookup->service != service)
|
|
++ continue;
|
|
++ if (lookup->instance && lookup->instance != instance)
|
|
++ continue;
|
|
++
|
|
++ list_del(&lookup->li);
|
|
++ kfree(lookup);
|
|
++ }
|
|
++}
|
|
++
|
|
++static void qrtr_ns_worker(struct work_struct *work)
|
|
++{
|
|
++ const struct qrtr_ctrl_pkt *pkt;
|
|
++ size_t recv_buf_size = 4096;
|
|
++ struct sockaddr_qrtr sq;
|
|
++ struct msghdr msg = { };
|
|
++ unsigned int cmd;
|
|
++ ssize_t msglen;
|
|
++ void *recv_buf;
|
|
++ struct kvec iv;
|
|
++ int ret;
|
|
++
|
|
++ msg.msg_name = (struct sockaddr *)&sq;
|
|
++ msg.msg_namelen = sizeof(sq);
|
|
++
|
|
++ recv_buf = kzalloc(recv_buf_size, GFP_KERNEL);
|
|
++ if (!recv_buf)
|
|
++ return;
|
|
++
|
|
++ for (;;) {
|
|
++ iv.iov_base = recv_buf;
|
|
++ iv.iov_len = recv_buf_size;
|
|
++
|
|
++ msglen = kernel_recvmsg(qrtr_ns.sock, &msg, &iv, 1,
|
|
++ iv.iov_len, MSG_DONTWAIT);
|
|
++
|
|
++ if (msglen == -EAGAIN)
|
|
++ break;
|
|
++
|
|
++ if (msglen < 0) {
|
|
++ pr_err("error receiving packet: %zd\n", msglen);
|
|
++ break;
|
|
++ }
|
|
++
|
|
++ pkt = recv_buf;
|
|
++ cmd = le32_to_cpu(pkt->cmd);
|
|
++ if (cmd < ARRAY_SIZE(qrtr_ctrl_pkt_strings) &&
|
|
++ qrtr_ctrl_pkt_strings[cmd])
|
|
++ trace_qrtr_ns_message(qrtr_ctrl_pkt_strings[cmd],
|
|
++ sq.sq_node, sq.sq_port);
|
|
++
|
|
++ ret = 0;
|
|
++ switch (cmd) {
|
|
++ case QRTR_TYPE_HELLO:
|
|
++ ret = ctrl_cmd_hello(&sq);
|
|
++ break;
|
|
++ case QRTR_TYPE_BYE:
|
|
++ ret = ctrl_cmd_bye(&sq);
|
|
++ break;
|
|
++ case QRTR_TYPE_DEL_CLIENT:
|
|
++ ret = ctrl_cmd_del_client(&sq,
|
|
++ le32_to_cpu(pkt->client.node),
|
|
++ le32_to_cpu(pkt->client.port));
|
|
++ break;
|
|
++ case QRTR_TYPE_NEW_SERVER:
|
|
++ ret = ctrl_cmd_new_server(&sq,
|
|
++ le32_to_cpu(pkt->server.service),
|
|
++ le32_to_cpu(pkt->server.instance),
|
|
++ le32_to_cpu(pkt->server.node),
|
|
++ le32_to_cpu(pkt->server.port));
|
|
++ break;
|
|
++ case QRTR_TYPE_DEL_SERVER:
|
|
++ ret = ctrl_cmd_del_server(&sq,
|
|
++ le32_to_cpu(pkt->server.service),
|
|
++ le32_to_cpu(pkt->server.instance),
|
|
++ le32_to_cpu(pkt->server.node),
|
|
++ le32_to_cpu(pkt->server.port));
|
|
++ break;
|
|
++ case QRTR_TYPE_EXIT:
|
|
++ case QRTR_TYPE_PING:
|
|
++ case QRTR_TYPE_RESUME_TX:
|
|
++ break;
|
|
++ case QRTR_TYPE_NEW_LOOKUP:
|
|
++ ret = ctrl_cmd_new_lookup(&sq,
|
|
++ le32_to_cpu(pkt->server.service),
|
|
++ le32_to_cpu(pkt->server.instance));
|
|
++ break;
|
|
++ case QRTR_TYPE_DEL_LOOKUP:
|
|
++ ctrl_cmd_del_lookup(&sq,
|
|
++ le32_to_cpu(pkt->server.service),
|
|
++ le32_to_cpu(pkt->server.instance));
|
|
++ break;
|
|
++ }
|
|
++
|
|
++ if (ret < 0)
|
|
++ pr_err("failed while handling packet from %d:%d",
|
|
++ sq.sq_node, sq.sq_port);
|
|
++ }
|
|
++
|
|
++ kfree(recv_buf);
|
|
++}
|
|
++
|
|
++static void qrtr_ns_data_ready(struct sock *sk)
|
|
++{
|
|
++ queue_work(qrtr_ns.workqueue, &qrtr_ns.work);
|
|
++}
|
|
++
|
|
++void qrtr_ns_init(void)
|
|
++{
|
|
++ struct sockaddr_qrtr sq;
|
|
++ int sl = sizeof(sq);
|
|
++ int ret;
|
|
++
|
|
++ INIT_LIST_HEAD(&qrtr_ns.lookups);
|
|
++ INIT_WORK(&qrtr_ns.work, qrtr_ns_worker);
|
|
++
|
|
++ ret = sock_create_kern(&init_net, AF_QIPCRTR, SOCK_DGRAM,
|
|
++ PF_QIPCRTR, &qrtr_ns.sock);
|
|
++ if (ret < 0)
|
|
++ return;
|
|
++
|
|
++ ret = kernel_getsockname(qrtr_ns.sock, (struct sockaddr *)&sq, &sl);
|
|
++ if (ret < 0) {
|
|
++ pr_err("failed to get socket name\n");
|
|
++ goto err_sock;
|
|
++ }
|
|
++
|
|
++ qrtr_ns.workqueue = alloc_workqueue("qrtr_ns_handler", WQ_UNBOUND, 1);
|
|
++ if (!qrtr_ns.workqueue)
|
|
++ goto err_sock;
|
|
++
|
|
++ qrtr_ns.sock->sk->sk_data_ready = qrtr_ns_data_ready;
|
|
++
|
|
++ sq.sq_port = QRTR_PORT_CTRL;
|
|
++ qrtr_ns.local_node = sq.sq_node;
|
|
++
|
|
++ ret = kernel_bind(qrtr_ns.sock, (struct sockaddr *)&sq, sizeof(sq));
|
|
++ if (ret < 0) {
|
|
++ pr_err("failed to bind to socket\n");
|
|
++ goto err_wq;
|
|
++ }
|
|
++
|
|
++ qrtr_ns.bcast_sq.sq_family = AF_QIPCRTR;
|
|
++ qrtr_ns.bcast_sq.sq_node = QRTR_NODE_BCAST;
|
|
++ qrtr_ns.bcast_sq.sq_port = QRTR_PORT_CTRL;
|
|
++
|
|
++ ret = say_hello(&qrtr_ns.bcast_sq);
|
|
++ if (ret < 0)
|
|
++ goto err_wq;
|
|
++
|
|
++ return;
|
|
++
|
|
++err_wq:
|
|
++ destroy_workqueue(qrtr_ns.workqueue);
|
|
++err_sock:
|
|
++ sock_release(qrtr_ns.sock);
|
|
++}
|
|
++EXPORT_SYMBOL_GPL(qrtr_ns_init);
|
|
++
|
|
++void qrtr_ns_remove(void)
|
|
++{
|
|
++ cancel_work_sync(&qrtr_ns.work);
|
|
++ destroy_workqueue(qrtr_ns.workqueue);
|
|
++ sock_release(qrtr_ns.sock);
|
|
++}
|
|
++EXPORT_SYMBOL_GPL(qrtr_ns_remove);
|
|
++
|
|
++MODULE_AUTHOR("Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>");
|
|
++MODULE_DESCRIPTION("Qualcomm IPC Router Nameservice");
|
|
++MODULE_LICENSE("Dual BSD/GPL");
|
|
+Index: linux-4.4.60/net/qrtr/qrtr.c
|
|
+===================================================================
|
|
+--- linux-4.4.60.orig/net/qrtr/qrtr.c
|
|
++++ linux-4.4.60/net/qrtr/qrtr.c
|
|
+@@ -135,6 +135,8 @@ static DEFINE_IDR(qrtr_ports);
|
|
+ static DEFINE_MUTEX(qrtr_port_lock);
|
|
+ static DEFINE_MUTEX(qrtr_node_locking);
|
|
+
|
|
++static struct delayed_work qrtr_ns_work;
|
|
++
|
|
+ /**
|
|
+ * struct qrtr_node - endpoint node
|
|
+ * @ep_lock: lock for endpoint management and callbacks
|
|
+@@ -1765,33 +1767,6 @@ static int qrtr_create(struct net *net,
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+-static const struct nla_policy qrtr_policy[IFA_MAX + 1] = {
|
|
+- [IFA_LOCAL] = { .type = NLA_U32 },
|
|
+-};
|
|
+-
|
|
+-static int qrtr_addr_doit(struct sk_buff *skb, struct nlmsghdr *nlh)
|
|
+-{
|
|
+- struct nlattr *tb[IFA_MAX + 1];
|
|
+- struct ifaddrmsg *ifm;
|
|
+- int rc;
|
|
+-
|
|
+- if (!netlink_capable(skb, CAP_NET_ADMIN))
|
|
+- return -EPERM;
|
|
+-
|
|
+- ASSERT_RTNL();
|
|
+-
|
|
+- rc = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, qrtr_policy);
|
|
+- if (rc < 0)
|
|
+- return rc;
|
|
+-
|
|
+- ifm = nlmsg_data(nlh);
|
|
+- if (!tb[IFA_LOCAL])
|
|
+- return -EINVAL;
|
|
+-
|
|
+- qrtr_local_nid = nla_get_u32(tb[IFA_LOCAL]);
|
|
+- return 0;
|
|
+-}
|
|
+-
|
|
+ static const struct net_proto_family qrtr_family = {
|
|
+ .owner = THIS_MODULE,
|
|
+ .family = AF_QIPCRTR,
|
|
+@@ -1811,7 +1786,8 @@ static int __init qrtr_proto_init(void)
|
|
+ proto_unregister(&qrtr_proto);
|
|
+ return rc;
|
|
+ }
|
|
+- rtnl_register(PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, NULL);
|
|
++
|
|
++ qrtr_ns_init();
|
|
+
|
|
+ return 0;
|
|
+ }
|
|
+@@ -1819,7 +1795,8 @@ postcore_initcall(qrtr_proto_init);
|
|
+
|
|
+ static void __exit qrtr_proto_fini(void)
|
|
+ {
|
|
+- rtnl_unregister(PF_QIPCRTR, RTM_NEWADDR);
|
|
++ cancel_delayed_work_sync(&qrtr_ns_work);
|
|
++ qrtr_ns_remove();
|
|
+ sock_unregister(qrtr_family.family);
|
|
+ proto_unregister(&qrtr_proto);
|
|
+ }
|
|
+Index: linux-4.4.60/net/qrtr/qrtr.h
|
|
+===================================================================
|
|
+--- linux-4.4.60.orig/net/qrtr/qrtr.h
|
|
++++ linux-4.4.60/net/qrtr/qrtr.h
|
|
+@@ -33,4 +33,9 @@ void qrtr_endpoint_unregister(struct qrt
|
|
+ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len);
|
|
+
|
|
+ int qrtr_peek_pkt_size(const void *data);
|
|
++
|
|
++void qrtr_ns_init(void);
|
|
++
|
|
++void qrtr_ns_remove(void);
|
|
++
|
|
+ #endif
|
|
+Index: linux-4.4.60/net/qrtr/Makefile
|
|
+===================================================================
|
|
+--- linux-4.4.60.orig/net/qrtr/Makefile
|
|
++++ linux-4.4.60/net/qrtr/Makefile
|
|
+@@ -1,4 +1,4 @@
|
|
+-obj-$(CONFIG_QRTR) := qrtr.o
|
|
++obj-$(CONFIG_QRTR) := qrtr.o ns.o
|
|
+
|
|
+ obj-$(CONFIG_QRTR_SMD) += qrtr-smd.o
|
|
+ qrtr-smd-y := smd.o
|
|
+Index: linux-4.4.60/include/trace/events/qrtr.h
|
|
+===================================================================
|
|
+--- /dev/null
|
|
++++ linux-4.4.60/include/trace/events/qrtr.h
|
|
+@@ -0,0 +1,115 @@
|
|
++/* SPDX-License-Identifier: GPL-2.0 */
|
|
++#undef TRACE_SYSTEM
|
|
++#define TRACE_SYSTEM qrtr
|
|
++
|
|
++#if !defined(_TRACE_QRTR_H) || defined(TRACE_HEADER_MULTI_READ)
|
|
++#define _TRACE_QRTR_H
|
|
++
|
|
++#include <linux/qrtr.h>
|
|
++#include <linux/tracepoint.h>
|
|
++
|
|
++TRACE_EVENT(qrtr_ns_service_announce_new,
|
|
++
|
|
++ TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port),
|
|
++
|
|
++ TP_ARGS(service, instance, node, port),
|
|
++
|
|
++ TP_STRUCT__entry(
|
|
++ __field(__le32, service)
|
|
++ __field(__le32, instance)
|
|
++ __field(__le32, node)
|
|
++ __field(__le32, port)
|
|
++ ),
|
|
++
|
|
++ TP_fast_assign(
|
|
++ __entry->service = service;
|
|
++ __entry->instance = instance;
|
|
++ __entry->node = node;
|
|
++ __entry->port = port;
|
|
++ ),
|
|
++
|
|
++ TP_printk("advertising new server [%d:%x]@[%d:%d]",
|
|
++ __entry->service, __entry->instance, __entry->node,
|
|
++ __entry->port
|
|
++ )
|
|
++);
|
|
++
|
|
++TRACE_EVENT(qrtr_ns_service_announce_del,
|
|
++
|
|
++ TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port),
|
|
++
|
|
++ TP_ARGS(service, instance, node, port),
|
|
++
|
|
++ TP_STRUCT__entry(
|
|
++ __field(__le32, service)
|
|
++ __field(__le32, instance)
|
|
++ __field(__le32, node)
|
|
++ __field(__le32, port)
|
|
++ ),
|
|
++
|
|
++ TP_fast_assign(
|
|
++ __entry->service = service;
|
|
++ __entry->instance = instance;
|
|
++ __entry->node = node;
|
|
++ __entry->port = port;
|
|
++ ),
|
|
++
|
|
++ TP_printk("advertising removal of server [%d:%x]@[%d:%d]",
|
|
++ __entry->service, __entry->instance, __entry->node,
|
|
++ __entry->port
|
|
++ )
|
|
++);
|
|
++
|
|
++TRACE_EVENT(qrtr_ns_server_add,
|
|
++
|
|
++ TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port),
|
|
++
|
|
++ TP_ARGS(service, instance, node, port),
|
|
++
|
|
++ TP_STRUCT__entry(
|
|
++ __field(__le32, service)
|
|
++ __field(__le32, instance)
|
|
++ __field(__le32, node)
|
|
++ __field(__le32, port)
|
|
++ ),
|
|
++
|
|
++ TP_fast_assign(
|
|
++ __entry->service = service;
|
|
++ __entry->instance = instance;
|
|
++ __entry->node = node;
|
|
++ __entry->port = port;
|
|
++ ),
|
|
++
|
|
++ TP_printk("add server [%d:%x]@[%d:%d]",
|
|
++ __entry->service, __entry->instance, __entry->node,
|
|
++ __entry->port
|
|
++ )
|
|
++);
|
|
++
|
|
++TRACE_EVENT(qrtr_ns_message,
|
|
++
|
|
++ TP_PROTO(const char * const ctrl_pkt_str, __u32 sq_node, __u32 sq_port),
|
|
++
|
|
++ TP_ARGS(ctrl_pkt_str, sq_node, sq_port),
|
|
++
|
|
++ TP_STRUCT__entry(
|
|
++ __string(ctrl_pkt_str, ctrl_pkt_str)
|
|
++ __field(__u32, sq_node)
|
|
++ __field(__u32, sq_port)
|
|
++ ),
|
|
++
|
|
++ TP_fast_assign(
|
|
++ __assign_str(ctrl_pkt_str, ctrl_pkt_str);
|
|
++ __entry->sq_node = sq_node;
|
|
++ __entry->sq_port = sq_port;
|
|
++ ),
|
|
++
|
|
++ TP_printk("%s from %d:%d",
|
|
++ __get_str(ctrl_pkt_str), __entry->sq_node, __entry->sq_port
|
|
++ )
|
|
++);
|
|
++
|
|
++#endif /* _TRACE_QRTR_H */
|
|
++
|
|
++/* This part must be outside protection */
|
|
++#include <trace/define_trace.h>
|
|
diff --git a/target/linux/ipq807x/patches/101-squashfs.patch b/target/linux/ipq807x/patches/101-squashfs.patch
|
|
new file mode 100644
|
|
index 0000000000..5744a2a5bf
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq807x/patches/101-squashfs.patch
|
|
@@ -0,0 +1,16 @@
|
|
+Index: linux-4.4.60/fs/squashfs/xz_wrapper.c
|
|
+===================================================================
|
|
+--- linux-4.4.60.orig/fs/squashfs/xz_wrapper.c
|
|
++++ linux-4.4.60/fs/squashfs/xz_wrapper.c
|
|
+@@ -40,10 +40,8 @@ struct squashfs_xz {
|
|
+ };
|
|
+
|
|
+ struct disk_comp_opts {
|
|
+- __le32 flags;
|
|
+- __le16 bit_opts;
|
|
+- __le16 fb;
|
|
+ __le32 dictionary_size;
|
|
++ __le32 flags;
|
|
+ };
|
|
+
|
|
+ struct comp_opts {
|
|
--
|
|
2.25.1
|
|
|