diff --git a/feeds/ipq95xx/ath11k-firmware/Makefile b/feeds/ipq95xx/ath11k-firmware/Makefile new file mode 100644 index 000000000..55a13c0d8 --- /dev/null +++ b/feeds/ipq95xx/ath11k-firmware/Makefile @@ -0,0 +1,37 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=ath11k-firmware +PKG_SOURCE_PROTO:=git +PKG_BRANCH:=main +PKG_SOURCE_URL:=https://github.com/quic/upstream-wifi-fw.git +PKG_MIRROR_HASH:=557505744764b0442c887be3f5bb0ce924323d785b6d207899f19fad992a6020 +PKG_SOURCE_VERSION:=3417bb86645c5ff4c58258db7cc33e43260b4222 + +PKG_MAINTAINER:=John Crispin + +include $(INCLUDE_DIR)/package.mk + +define Package/ath11k-firmware-default + SECTION:=firmware + CATEGORY:=Firmware + URL:=$(PKG_SOURCE_URL) + DEPENDS:= +endef + +define Package/ath11k-firmware-ipq95xx + $(Package/ath11k-firmware-default) + TITLE:=ath11k firmware for IPQ95xx devices + DEPENDS:=@TARGET_ipq95xx +endef + +define Build/Compile + +endef + +define Package/ath11k-firmware-ipq95xx/install + $(INSTALL_DIR) $(1)/lib/firmware/IPQ9574/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/ath11k-firmware/IPQ9574/hw1.0/2.9.0.1/WLAN.HK.2.9.0.1-01890-QCAHKSWPL_SILICONZ-1/* \ + $(1)/lib/firmware/IPQ9574/ +endef + +$(eval $(call BuildPackage,ath11k-firmware-ipq95xx)) diff --git a/feeds/ipq95xx/ath11k-wifi/Makefile b/feeds/ipq95xx/ath11k-wifi/Makefile new file mode 100644 index 000000000..300c3029c --- /dev/null +++ b/feeds/ipq95xx/ath11k-wifi/Makefile @@ -0,0 +1,36 @@ +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/version.mk + +PKG_NAME:=ath11k-wifi +PKG_RELEASE:=1 +PKG_FLAGS:=nonshared + +include $(INCLUDE_DIR)/package.mk + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Compile + +endef + +define Package/ath11k-wifi-default + SUBMENU:=ath11k Board-Specific Overrides + SECTION:=firmware + CATEGORY:=Firmware + DEPENDS:=@TARGET_ipq95xx + TITLE:=Custom Board +endef + +define Package/ath11k-wifi-qcom-ipq95xx +$(call Package/ath11k-wifi-default) + TITLE:=board-2.bin for QCOM IPQ9574 eval kits +endef + +define Package/ath11k-wifi-qcom-ipq95xx/install + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ9574/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.IPQ9574 $(1)/lib/firmware/ath11k/IPQ9574/hw1.0/board-2.bin +endef + +$(eval $(call BuildPackage,ath11k-wifi-qcom-ipq95xx)) diff --git a/feeds/ipq95xx/ath11k-wifi/board-2.bin.IPQ9574 b/feeds/ipq95xx/ath11k-wifi/board-2.bin.IPQ9574 new file mode 100644 index 000000000..bf1d9c8e9 Binary files /dev/null and b/feeds/ipq95xx/ath11k-wifi/board-2.bin.IPQ9574 differ diff --git a/feeds/ipq95xx/ath12k-firmware/Makefile b/feeds/ipq95xx/ath12k-firmware/Makefile new file mode 100644 index 000000000..05e075182 --- /dev/null +++ b/feeds/ipq95xx/ath12k-firmware/Makefile @@ -0,0 +1,37 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=ath12k-firmware +PKG_SOURCE_PROTO:=git +PKG_BRANCH:=main +PKG_SOURCE_URL:=https://github.com/quic/upstream-wifi-fw.git +PKG_MIRROR_HASH:=ade4287ff2935ad1d54e5dabb8e6de28f648d0974fa76238fcc1616235e6773e +PKG_SOURCE_VERSION:=3417bb86645c5ff4c58258db7cc33e43260b4222 + +PKG_MAINTAINER:=John Crispin + +include $(INCLUDE_DIR)/package.mk + +define Package/ath12k-firmware-default + SECTION:=firmware + CATEGORY:=Firmware + URL:=$(PKG_SOURCE_URL) + DEPENDS:= +endef + +define Package/ath12k-firmware-qcn92xx + $(Package/ath12k-firmware-default) + TITLE:=ath12k firmware for qcn92xx devices + DEPENDS:=@TARGET_ipq95xx +endef + +define Build/Compile + +endef + +define Package/ath12k-firmware-qcn92xx/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw2.0 + $(INSTALL_DATA) $(PKG_BUILD_DIR)/ath12k-firmware/QCN9274/hw2.0/1.1.1/WLAN.WBE.1.1.1-00126-QCAHKSWPL_SILICONZ-1/* \ + $(1)/lib/firmware/ath12k/QCN92XX/hw2.0 +endef + +$(eval $(call BuildPackage,ath12k-firmware-qcn92xx)) diff --git a/feeds/ipq95xx/ath12k-wifi/Makefile b/feeds/ipq95xx/ath12k-wifi/Makefile new file mode 100644 index 000000000..4fbd25470 --- /dev/null +++ b/feeds/ipq95xx/ath12k-wifi/Makefile @@ -0,0 +1,36 @@ +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/version.mk + +PKG_NAME:=ath12k-wifi +PKG_RELEASE:=1 +PKG_FLAGS:=nonshared + +include $(INCLUDE_DIR)/package.mk + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Compile + +endef + +define Package/ath12k-wifi-default + SUBMENU:=ath12k Board-Specific Overrides + SECTION:=firmware + CATEGORY:=Firmware + DEPENDS:=@TARGET_qcn9274 + TITLE:=Custom Board +endef + +define Package/ath12k-wifi-qcom-qcn9274 +$(call Package/ath12k-wifi-default) + TITLE:=board-2.bin for QCOM QCN9274 eval kits +endef + +define Package/ath12k-wifi-qcom-qcn9274/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN9274/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.QCN9274 $(1)/lib/firmware/ath12k/QCN9274/hw1.0/board-2.bin +endef + +$(eval $(call BuildPackage,ath12k-wifi-qcom-qcn9274)) diff --git a/feeds/ipq95xx/ath12k-wifi/board-2.bin.IPQ9574 b/feeds/ipq95xx/ath12k-wifi/board-2.bin.IPQ9574 new file mode 100644 index 000000000..bf1d9c8e9 Binary files /dev/null and b/feeds/ipq95xx/ath12k-wifi/board-2.bin.IPQ9574 differ diff --git a/feeds/ipq95xx/ath12k-wifi/board-2.bin.QCN9274 b/feeds/ipq95xx/ath12k-wifi/board-2.bin.QCN9274 new file mode 100755 index 000000000..76791ac51 Binary files /dev/null and b/feeds/ipq95xx/ath12k-wifi/board-2.bin.QCN9274 differ diff --git a/feeds/ipq95xx/ipq95xx/Makefile b/feeds/ipq95xx/ipq95xx/Makefile index d6650c5f7..082591d4b 100644 --- a/feeds/ipq95xx/ipq95xx/Makefile +++ b/feeds/ipq95xx/ipq95xx/Makefile @@ -12,15 +12,16 @@ SUBTARGETS:=generic ipq95xx_32 KERNELNAME:=zImage Image dtbs KERNEL_PATCHVER:=5.4 -KERNEL_NAME_SUFFIX=-qsdk-879aa8d1f540d2357674beed0069e4450946b831 +KERNEL_NAME_SUFFIX=-qsdk-f2ee796db820cd8261889849f043c9c816196452 include $(INCLUDE_DIR)/target.mk DEFAULT_PACKAGES += \ uboot-envtools kmod-leds-gpio kmod-gpio-button-hotplug kmod-button-hotplug \ - kmod-usb3 swconfig \ + kmod-usb3 swconfig kmod-qca-nss-dp \ kmod-usb-phy-ipq807x kmod-usb-dwc3-qcom-internal \ - kmod-qca-nss-ppe kmod-qca-ssdk-nohnat kmod-qca-psdk kmod-qca-nss-dp \ + kmod-qca-nss-ppe kmod-qca-ssdk-nohnat kmod-qca-psdk \ kmod-gpio-button-hotplug iwinfo uboot-envtools swconfig \ + kmod-ath11k-ahb ath11k-firmware-ipq95xx \ kmod-ath12k ath12k-firmware-qcn92xx wpad-openssl \ -procd-ujail diff --git a/feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata new file mode 100755 index 000000000..dbbae10ba --- /dev/null +++ b/feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata @@ -0,0 +1,41 @@ +#!/bin/sh +export >> /tmp/foo + +[ -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 +ath11k/IPQ9574/hw1.0/caldata.bin) + case "$board" in + qcom,ipq9574-ap-al02-c15) + caldata_extract "0:ART" 0x1000 0x20000 + ;; + esac + ;; +*) + exit 1 + ;; +esac diff --git a/feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata b/feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata new file mode 100755 index 000000000..f7bb7bc29 --- /dev/null +++ b/feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata @@ -0,0 +1,41 @@ +#!/bin/sh +export >> /tmp/foo + +[ -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 +ath12k/QCN92XX/hw1.0/cal-pci-0002:01:00.0.bin) + case "$board" in + _qcom,ipq9574-ap-al02-c4) + caldata_extract "0:ART" 0x1000 0x20000 + ;; + esac + ;; +*) + exit 1 + ;; +esac diff --git a/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh b/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh new file mode 100644 index 000000000..41a2de529 --- /dev/null +++ b/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh @@ -0,0 +1,391 @@ +# Copyright (C) 2014 OpenWrt.org +# + +. /lib/functions.sh + +# 'kernel' partition or UBI volume on NAND contains the kernel +CI_KERNPART="${CI_KERNPART:-kernel}" + +# 'ubi' partition on NAND contains UBI +CI_UBIPART="${CI_UBIPART:-ubi}" + +# 'rootfs' UBI volume on NAND contains the rootfs +CI_ROOTPART="${CI_ROOTPART:-rootfs}" + +# ipq807x qsdk kernel misbehaves +CI_IPQ807X=0 + +# update BOOTCONFIG partitions (rotate rootfs/rootfs_1) +CI_BOOTCFG=0 + +# update uboot-env if upgrade suceeded +CI_FWSETENV= + +ubi_mknod() { + local dir="$1" + local dev="/dev/$(basename $dir)" + + [ -e "$dev" ] && return 0 + + local devid="$(cat $dir/dev)" + local major="${devid%%:*}" + local minor="${devid##*:}" + mknod "$dev" c $major $minor +} + +nand_find_volume() { + local ubidevdir ubivoldir + ubidevdir="/sys/devices/virtual/ubi/$1" + [ ! -d "$ubidevdir" ] && return 1 + for ubivoldir in $ubidevdir/${1}_*; do + [ ! -d "$ubivoldir" ] && continue + if [ "$( cat $ubivoldir/name )" = "$2" ]; then + basename $ubivoldir + ubi_mknod "$ubivoldir" + return 0 + fi + done +} + +nand_find_ubi() { + local ubidevdir ubidev mtdnum + mtdnum="$( find_mtd_index $1 )" + [ ! "$mtdnum" ] && return 1 + for ubidevdir in /sys/devices/virtual/ubi/ubi*; do + [ ! -d "$ubidevdir" ] && continue + cmtdnum="$( cat $ubidevdir/mtd_num )" + [ ! "$mtdnum" ] && continue + if [ "$mtdnum" = "$cmtdnum" ]; then + ubidev=$( basename $ubidevdir ) + ubi_mknod "$ubidevdir" + echo $ubidev + return 0 + fi + done +} + +nand_get_magic_long() { + dd if="$1" skip=$2 bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +get_magic_long_tar() { + ( tar xf $1 $2 -O | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null +} + +identify_magic() { + local magic=$1 + case "$magic" in + "55424923") + echo "ubi" + ;; + "31181006") + echo "ubifs" + ;; + "68737173") + echo "squashfs" + ;; + "d00dfeed") + echo "fit" + ;; + "4349"*) + echo "combined" + ;; + *) + echo "unknown $magic" + ;; + esac +} + + +identify() { + identify_magic $(nand_get_magic_long "$1" "${2:-0}") +} + +identify_tar() { + identify_magic $(get_magic_long_tar "$1" "$2") +} + +nand_restore_config() { + sync + local ubidev=$( nand_find_ubi $CI_UBIPART ) + local ubivol="$( nand_find_volume $ubidev rootfs_data )" + [ ! "$ubivol" ] && + ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )" + mkdir /tmp/new_root + if ! mount -t ubifs /dev/$ubivol /tmp/new_root; then + echo "mounting ubifs $ubivol failed" + rmdir /tmp/new_root + return 1 + fi + mv "$1" "/tmp/new_root/$BACKUP_FILE" + umount /tmp/new_root + sync + rmdir /tmp/new_root +} + +nand_upgrade_prepare_ubi() { + local rootfs_length="$1" + local rootfs_type="$2" + local rootfs_data_max="$(fw_printenv -n rootfs_data_max 2>/dev/null)" + [ -n "$rootfs_data_max" ] && rootfs_data_max=$(printf %d "$rootfs_data_max") + + local kernel_length="$3" + local has_env="${4:-0}" + + [ -n "$rootfs_length" -o -n "$kernel_length" ] || return 1 + + local mtdnum="$( find_mtd_index "$CI_UBIPART" )" + if [ ! "$mtdnum" ]; then + echo "cannot find ubi mtd partition $CI_UBIPART" + return 1 + fi + + [ "$CI_IPQ807X" = 1 ] && ubidetach -f -m $mtdnum + + local ubidev="$( nand_find_ubi "$CI_UBIPART" )" + if [ ! "$ubidev" ]; then + ubiattach -m "$mtdnum" + sync + ubidev="$( nand_find_ubi "$CI_UBIPART" )" + fi + + if [ ! "$ubidev" ]; then + ubiformat /dev/mtd$mtdnum -y + ubiattach -m "$mtdnum" + sync + ubidev="$( nand_find_ubi "$CI_UBIPART" )" + [ "$has_env" -gt 0 ] && { + ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB + ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB + } + fi + + local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )" + local root_ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )" + local data_ubivol="$( nand_find_volume $ubidev rootfs_data )" + + local ubiblk ubiblkvol + for ubiblk in /dev/ubiblock*_? ; do + [ -e "$ubiblk" ] || continue + echo "removing ubiblock${ubiblk:13}" + ubiblkvol=ubi${ubiblk:13} + if ! ubiblock -r /dev/$ubiblkvol; then + echo "cannot remove $ubiblk" + return 1 + fi + done + + # kill volumes + [ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_KERNPART || true + [ "$root_ubivol" -a "$root_ubivol" != "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_ROOTPART || true + [ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || true + + # update kernel + if [ -n "$kernel_length" ]; then + if ! ubimkvol /dev/$ubidev -N $CI_KERNPART -s $kernel_length; then + echo "cannot create kernel volume" + return 1; + fi + fi + + # update rootfs + if [ -n "$rootfs_length" ]; then + local rootfs_size_param + if [ "$rootfs_type" = "ubifs" ]; then + rootfs_size_param="-m" + else + rootfs_size_param="-s $rootfs_length" + fi + if ! ubimkvol /dev/$ubidev -N $CI_ROOTPART $rootfs_size_param; then + echo "cannot create rootfs volume" + return 1; + fi + fi + + # create rootfs_data for non-ubifs rootfs + if [ "$rootfs_type" != "ubifs" ]; then + local availeb=$(cat /sys/devices/virtual/ubi/$ubidev/avail_eraseblocks) + local ebsize=$(cat /sys/devices/virtual/ubi/$ubidev/eraseblock_size) + local avail_size=$(( $availeb * $ebsize )) + local rootfs_data_size_param="-m" + if [ -n "$rootfs_data_max" ] && + [ "$rootfs_data_max" != "0" ] && + [ "$rootfs_data_max" -le "$avail_size" ]; then + rootfs_data_size_param="-s $rootfs_data_max" + fi + if ! ubimkvol /dev/$ubidev -N rootfs_data $rootfs_data_size_param; then + echo "cannot initialize rootfs_data volume" + return 1 + fi + fi + sync + return 0 +} + +nand_qca_update_bootconfig() { + local primary="0" + local mtdnum + local part + + [ -f /proc/boot_info/rootfs/primaryboot ] || return + [ -f /proc/boot_info/getbinary_bootconfig ] || return + + [ "$(cat /proc/boot_info/rootfs/primaryboot)" = "0" ] && primary="1" + echo "$primary" > /proc/boot_info/rootfs/primaryboot 2>/dev/null + + for part in "0:BOOTCONFIG" "0:BOOTCONFIG1"; do + mtdnum="$(find_mtd_index "$part")" + [ -c "/dev/mtd${mtdnum}" ] && { + mtd -qq write /proc/boot_info/getbinary_bootconfig \ + "/dev/mtd${mtdnum}" 2>/dev/null &&\ + echo "partition '$part' updated" + } + done +} + +nand_do_upgrade_success() { + local conf_tar="/tmp/sysupgrade.tgz" + sync + [ "$CI_BOOTCFG" = 1 ] && nand_qca_update_bootconfig + [ -n "$CI_FWSETENV" ] && fw_setenv $CI_FWSETENV + [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" + echo "sysupgrade successful" + umount -a + reboot -f +} + +# Flash the UBI image to MTD partition +nand_upgrade_ubinized() { + local ubi_file="$1" + local mtdnum="$(find_mtd_index "$CI_UBIPART")" + + [ ! "$mtdnum" ] && { + CI_UBIPART="rootfs" + mtdnum="$(find_mtd_index "$CI_UBIPART")" + } + + if [ ! "$mtdnum" ]; then + echo "cannot find mtd device $CI_UBIPART" + umount -a + reboot -f + fi + + local mtddev="/dev/mtd${mtdnum}" + ubidetach -p "${mtddev}" || true + sync + ubiformat "${mtddev}" -y -f "${ubi_file}" + ubiattach -p "${mtddev}" + nand_do_upgrade_success +} + +# Write the UBIFS image to UBI volume +nand_upgrade_ubifs() { + local rootfs_length=$( (cat $1 | wc -c) 2> /dev/null) + + nand_upgrade_prepare_ubi "$rootfs_length" "ubifs" "" "" + + local ubidev="$( nand_find_ubi "$CI_UBIPART" )" + local root_ubivol="$(nand_find_volume $ubidev $CI_ROOTPART)" + ubiupdatevol /dev/$root_ubivol -s $rootfs_length $1 + + nand_do_upgrade_success +} + +nand_upgrade_fit() { + local fit_file="$1" + local fit_length="$(wc -c < "$fit_file")" + + nand_upgrade_prepare_ubi "" "" "$fit_length" "1" + + local fit_ubidev="$(nand_find_ubi "$CI_UBIPART")" + local fit_ubivol="$(nand_find_volume $fit_ubidev "$CI_KERNPART")" + ubiupdatevol /dev/$fit_ubivol -s $fit_length $fit_file + + nand_do_upgrade_success +} + +nand_upgrade_tar() { + local tar_file="$1" + local kernel_mtd="$(find_mtd_index $CI_KERNPART)" + + local board_dir=$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$') + board_dir=${board_dir%/} + + kernel_length=$( (tar xf "$tar_file" ${board_dir}/kernel -O | wc -c) 2> /dev/null) + local has_rootfs=0 + local rootfs_length + local rootfs_type + + tar tf "$tar_file" ${board_dir}/root 1>/dev/null 2>/dev/null && has_rootfs=1 + [ "$has_rootfs" = "1" ] && { + rootfs_length=$( (tar xf "$tar_file" ${board_dir}/root -O | wc -c) 2> /dev/null) + rootfs_type="$(identify_tar "$tar_file" ${board_dir}/root)" + } + + local has_kernel=1 + local has_env=0 + + [ "$CI_IPQ807X" = 0 -a "$kernel_length" != 0 -a -n "$kernel_mtd" ] && { + tar xf $tar_file ${board_dir}/kernel -O | mtd write - $CI_KERNPART + } + [ "$CI_IPQ807X" = 0 ] && { + [ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel= + } + + nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "${has_kernel:+$kernel_length}" "$has_env" + + local ubidev="$( nand_find_ubi "$CI_UBIPART" )" + [ "$has_kernel" = "1" ] && { + local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )" + tar xf "$tar_file" ${board_dir}/kernel -O | \ + ubiupdatevol /dev/$kern_ubivol -s $kernel_length - + } + + [ "$has_rootfs" = "1" ] && { + local root_ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )" + tar xf "$tar_file" ${board_dir}/root -O | \ + ubiupdatevol /dev/$root_ubivol -s $rootfs_length - + } + nand_do_upgrade_success +} + +# Recognize type of passed file and start the upgrade process +nand_do_upgrade() { + local file_type=$(identify $1) + + [ ! "$( find_mtd_index "$CI_UBIPART" )" ] && CI_UBIPART="rootfs" + + case "$file_type" in + "fit") nand_upgrade_fit $1;; + "ubi") nand_upgrade_ubinized $1;; + "ubifs") nand_upgrade_ubifs $1;; + *) nand_upgrade_tar $1;; + esac +} + +# Check if passed file is a valid one for NAND sysupgrade. Currently it accepts +# 3 types of files: +# 1) UBI - should contain an ubinized image, header is checked for the proper +# MAGIC +# 2) UBIFS - should contain UBIFS partition that will replace "rootfs" volume, +# header is checked for the proper MAGIC +# 3) TAR - archive has to include "sysupgrade-BOARD" directory with a non-empty +# "CONTROL" file (at this point its content isn't verified) +# +# You usually want to call this function in platform_check_image. +# +# $(1): board name, used in case of passing TAR file +# $(2): file to be checked +nand_do_platform_check() { + local board_name="$1" + local tar_file="$2" + local control_length=$( (tar xf $tar_file sysupgrade-$board_name/CONTROL -O | wc -c) 2> /dev/null) + local file_type="$(identify $2)" + + [ "$control_length" = 0 -a "$file_type" != "ubi" -a "$file_type" != "ubifs" -a "$file_type" != "fit" ] && { + echo "Invalid sysupgrade file." + return 1 + } + + return 0 +} diff --git a/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/platform.sh b/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/platform.sh index efbb70551..0e79272d7 100644 --- a/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/platform.sh @@ -3,30 +3,9 @@ RAMFS_COPY_BIN='fw_printenv fw_setenv' RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock' -qca_do_upgrade() { - local tar_file="$1" - - local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$') - board_dir=${board_dir%/} - local dev=$(find_mtd_chardev "0:HLOS") - - tar Oxf $tar_file ${board_dir}/kernel | mtd write - ${dev} - - if [ -n "$UPGRADE_BACKUP" ]; then - tar Oxf $tar_file ${board_dir}/root | mtd -j "$UPGRADE_BACKUP" write - rootfs - else - tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs - fi -} - platform_check_image() { local magic_long="$(get_magic_long "$1")" - board=$(board_name) - case $board in - qcom,ipq9574-ap-al02-c4) - [ "$magic_long" = "73797375" ] && return 0 - ;; - esac + [ "$magic_long" = "73797375" ] && return 0 return 1 } @@ -37,8 +16,9 @@ platform_do_upgrade() { board=$(board_name) case $board in - qcom,ipq9574-ap-al02-c4) - qca_do_upgrade "$1" + qcom,ipq9574-ap-al02-c4|\ + qcom,ipq9574-ap-al02-c15) + nand_upgrade_tar "$1" ;; esac } diff --git a/feeds/ipq95xx/ipq95xx/config-5.4 b/feeds/ipq95xx/ipq95xx/config-5.4 index 9e556f8d3..bd28a8c7d 100644 --- a/feeds/ipq95xx/ipq95xx/config-5.4 +++ b/feeds/ipq95xx/ipq95xx/config-5.4 @@ -1262,6 +1262,14 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA_FLAG=0 # CONFIG_DEBUG_MEM_USAGE is not set # CONFIG_DIAG_CHAR is not set +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY=y # CONFIG_NF_CONNTRACK_RTCACHE is not set +# CONFIG_PCIE_DW_DEBUGFS is not set +# CONFIG_PINCTRL_IPQ5332 is not set +# CONFIG_IPQ_GCC_IPQ5332 is not set +# CONFIG_IPQ_APSS_IPQ5332 is not set CONFIG_INIT_STACK_NONE=y # CONFIG_INIT_STACK_ALL is not set +# CONFIG_SECCRYPT is not set +CONFIG_HWMON=y diff --git a/feeds/ipq95xx/ipq95xx/image/ipq95xx.mk b/feeds/ipq95xx/ipq95xx/image/ipq95xx.mk index 3050364e0..7a1191ba9 100644 --- a/feeds/ipq95xx/ipq95xx/image/ipq95xx.mk +++ b/feeds/ipq95xx/ipq95xx/image/ipq95xx.mk @@ -5,10 +5,23 @@ define Device/qcom_al02-c4 DEVICE_DTS := ipq9574-al02-c4 DEVICE_DTS_CONFIG := config@al02-c4 SUPPORTED_DEVICES := qcom,ipq9574-ap-al02-c4 -# DEVICE_PACKAGES := ath11k-wifi-tplink-ex227 IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand IMAGE/nand-factory.ubi := append-ubi + DEVICE_PACKAGES := ath12k-wifi-qcom-qcn9274 endef TARGET_DEVICES += qcom_al02-c4 + +define Device/qcom_al02-c15 + DEVICE_TITLE := Qualcomm AP-AL02-C15 + DEVICE_DTS := ipq9574-al02-c15 + DEVICE_DTS_CONFIG := config@al02-c15 + SUPPORTED_DEVICES := qcom,ipq9574-ap-al02-c15 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi + DEVICE_PACKAGES := ath11k-wifi-qcom-ipq95xx +endef +TARGET_DEVICES += qcom_al02-c15 diff --git a/feeds/ipq95xx/ipq95xx/modules.mk b/feeds/ipq95xx/ipq95xx/modules.mk new file mode 100644 index 000000000..405d8e104 --- /dev/null +++ b/feeds/ipq95xx/ipq95xx/modules.mk @@ -0,0 +1,61 @@ +define KernelPackage/usb-dwc3-internal + TITLE:=DWC3 USB controller driver + DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget + KCONFIG:= \ + CONFIG_USB_DWC3 \ + CONFIG_USB_DWC3_HOST=n \ + CONFIG_USB_DWC3_GADGET=n \ + CONFIG_USB_DWC3_DUAL_ROLE=y \ + CONFIG_EXTCON=y \ + CONFIG_USB_DWC3_DEBUG=n \ + CONFIG_USB_DWC3_VERBOSE=n + FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3.ko + AUTOLOAD:=$(call AutoLoad,84,dwc3) + $(call AddPlatformDepends/usb) +endef + +define KernelPackage/usb-dwc3-internal/description + This driver provides support for the Dual Role SuperSpeed + USB Controller based on the Synopsys DesignWare USB3 IP Core +endef + +$(eval $(call KernelPackage,usb-dwc3-internal)) + +define KernelPackage/usb-dwc3-qcom-internal + TITLE:=DWC3 QTI USB driver + DEPENDS:=@!LINUX_4_14 @(TARGET_ipq40xx||TARGET_ipq806x||TARGET_ipq807x||TARGET_ipq60xx||TARGET_ipq95xx||TARGET_ipq50xx||TARGET_ipq53xx) +kmod-usb-dwc3-internal + KCONFIG:= CONFIG_USB_DWC3_QCOM + FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko + AUTOLOAD:=$(call AutoLoad,83,dwc3-qcom) + $(call AddPlatformDepends/usb) +endef + +define KernelPackage/usb-dwc3-qcom-internal/description + Some QTI SoCs use DesignWare Core IP for USB2/3 functionality. + This driver also handles Qscratch wrapper which is needed for + peripheral mode support. +endef + +$(eval $(call KernelPackage,usb-dwc3-qcom-internal)) + +define KernelPackage/usb-phy-ipq807x + TITLE:=DWC3 USB QTI PHY drivers for IPQ807x based targets + DEPENDS:=@TARGET_ipq||TARGET_ipq807x||TARGET_ipq95xx||TARGET_ipq60xx + KCONFIG:= \ + CONFIG_PHY_QCOM_QUSB2 \ + CONFIG_PHY_QCOM_QMP=y \ + CONFIG_USB_QCOM_QUSB_PHY \ + CONFIG_USB_QCOM_QMP_PHY + FILES:= \ + $(LINUX_DIR)/drivers/phy/qualcomm/phy-qcom-qusb2.ko@ge5.4 \ + $(LINUX_DIR)/drivers/usb/phy/phy-msm-qusb.ko@le4.4 \ + $(LINUX_DIR)/drivers/usb/phy/phy-msm-ssusb-qmp.ko@le4.4 + AUTOLOAD:=$(call AutoLoad,85,phy-qcom-qusb2 phy-msm-qusb phy-msm-ssusb-qmp) + $(call AddPlatformDepends/usb) +endef + +define KernelPackage/usb-phy-ipq807x/description + Support for USB PHY drivers in IPQ807x based SoCs. +endef + +$(eval $(call KernelPackage,usb-phy-ipq807x)) diff --git a/feeds/ipq95xx/ipq95xx/patches/002-dload_dis.patch b/feeds/ipq95xx/ipq95xx/patches/002-dload_dis.patch new file mode 100644 index 000000000..9ed342008 --- /dev/null +++ b/feeds/ipq95xx/ipq95xx/patches/002-dload_dis.patch @@ -0,0 +1,24 @@ +Index: linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/arch/arm64/boot/dts/qcom/ipq6018.dtsi +=================================================================== +--- linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452.orig/arch/arm64/boot/dts/qcom/ipq6018.dtsi ++++ linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/arch/arm64/boot/dts/qcom/ipq6018.dtsi +@@ -1882,6 +1882,7 @@ + + qti,scm_restart_reason { + compatible = "qti_ipq6018,scm_restart_reason"; ++ dload_status = <1>; + }; + + ctx_save: ctx-save { +Index: linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/arch/arm64/boot/dts/qcom/ipq9574.dtsi +=================================================================== +--- linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452.orig/arch/arm64/boot/dts/qcom/ipq9574.dtsi ++++ linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/arch/arm64/boot/dts/qcom/ipq9574.dtsi +@@ -3678,6 +3678,7 @@ + + qti,scm_restart_reason { + compatible = "qti_ipq9574,scm_restart_reason"; ++ dload_status = <1>; + }; + + qti,gadget_diag@0 { diff --git a/feeds/ipq95xx/ipq95xx/patches/100-GPIO-add-named-gpio-exports.patch b/feeds/ipq95xx/ipq95xx/patches/100-GPIO-add-named-gpio-exports.patch index a7f1a48bd..0bc92b6b5 100644 --- a/feeds/ipq95xx/ipq95xx/patches/100-GPIO-add-named-gpio-exports.patch +++ b/feeds/ipq95xx/ipq95xx/patches/100-GPIO-add-named-gpio-exports.patch @@ -11,8 +11,10 @@ Signed-off-by: John Crispin include/linux/gpio/consumer.h | 8 +++++ 4 files changed, 91 insertions(+), 1 deletion(-) ---- a/drivers/gpio/gpiolib-of.c -+++ b/drivers/gpio/gpiolib-of.c +Index: linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/drivers/gpio/gpiolib-of.c +=================================================================== +--- linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452.orig/drivers/gpio/gpiolib-of.c ++++ linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/drivers/gpio/gpiolib-of.c @@ -19,6 +19,8 @@ #include #include @@ -91,8 +93,10 @@ Signed-off-by: John Crispin +}; + +module_platform_driver(gpio_export_driver); ---- a/drivers/gpio/gpiolib-sysfs.c -+++ b/drivers/gpio/gpiolib-sysfs.c +Index: linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/drivers/gpio/gpiolib-sysfs.c +=================================================================== +--- linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452.orig/drivers/gpio/gpiolib-sysfs.c ++++ linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/drivers/gpio/gpiolib-sysfs.c @@ -571,7 +571,7 @@ static struct class gpio_class = { * * Returns zero on success, else an error. @@ -124,8 +128,10 @@ Signed-off-by: John Crispin EXPORT_SYMBOL_GPL(gpiod_export); static int match_export(struct device *dev, const void *desc) ---- a/include/asm-generic/gpio.h -+++ b/include/asm-generic/gpio.h +Index: linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/include/asm-generic/gpio.h +=================================================================== +--- linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452.orig/include/asm-generic/gpio.h ++++ linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/include/asm-generic/gpio.h @@ -127,6 +127,12 @@ static inline int gpio_export(unsigned g return gpiod_export(gpio_to_desc(gpio), direction_may_change); } @@ -139,8 +145,10 @@ Signed-off-by: John Crispin static inline int gpio_export_link(struct device *dev, const char *name, unsigned gpio) { ---- a/include/linux/gpio/consumer.h -+++ b/include/linux/gpio/consumer.h +Index: linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/include/linux/gpio/consumer.h +=================================================================== +--- linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452.orig/include/linux/gpio/consumer.h ++++ linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/include/linux/gpio/consumer.h @@ -668,6 +668,7 @@ static inline void devm_acpi_dev_remove_ #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS) diff --git a/feeds/ipq95xx/ipq95xx/patches/100-bpf-Fix-the-off-by-two-error-in-range-markings.patch b/feeds/ipq95xx/ipq95xx/patches/100-bpf-Fix-the-off-by-two-error-in-range-markings.patch index b325b5254..f0f318992 100644 --- a/feeds/ipq95xx/ipq95xx/patches/100-bpf-Fix-the-off-by-two-error-in-range-markings.patch +++ b/feeds/ipq95xx/ipq95xx/patches/100-bpf-Fix-the-off-by-two-error-in-range-markings.patch @@ -45,20 +45,11 @@ Link: https://lore.kernel.org/bpf/20211130181607.593149-1-maximmi@nvidia.com Signed-off-by: Greg Kroah-Hartman --- ---- a/kernel/bpf/verifier.c -+++ b/kernel/bpf/verifier.c -@@ -5372,7 +5372,7 @@ static void find_good_pkt_pointers(struc - - new_range = dst_reg->off; - if (range_right_open) -- new_range--; -+ new_range++; - - /* Examples for register markings: - * ---- a/tools/testing/selftests/bpf/verifier/xdp_direct_packet_access.c -+++ b/tools/testing/selftests/bpf/verifier/xdp_direct_packet_access.c -@@ -112,10 +112,10 @@ +Index: linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/tools/testing/selftests/bpf/verifier/xdp_direct_packet_access.c +=================================================================== +--- linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452.orig/tools/testing/selftests/bpf/verifier/xdp_direct_packet_access.c ++++ linux-5.4.213-qsdk-f2ee796db820cd8261889849f043c9c816196452/tools/testing/selftests/bpf/verifier/xdp_direct_packet_access.c +@@ -202,10 +202,10 @@ BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data_end)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), @@ -71,7 +62,7 @@ Signed-off-by: Greg Kroah-Hartman BPF_MOV64_IMM(BPF_REG_0, 0), BPF_EXIT_INSN(), }, -@@ -167,10 +167,10 @@ +@@ -293,10 +293,10 @@ BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data_end)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), @@ -84,7 +75,7 @@ Signed-off-by: Greg Kroah-Hartman BPF_MOV64_IMM(BPF_REG_0, 0), BPF_EXIT_INSN(), }, -@@ -274,9 +274,9 @@ +@@ -469,9 +469,9 @@ BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data_end)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), @@ -96,7 +87,7 @@ Signed-off-by: Greg Kroah-Hartman BPF_MOV64_IMM(BPF_REG_0, 0), BPF_EXIT_INSN(), }, -@@ -437,9 +437,9 @@ +@@ -740,9 +740,9 @@ BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data_end)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), @@ -108,7 +99,7 @@ Signed-off-by: Greg Kroah-Hartman BPF_MOV64_IMM(BPF_REG_0, 0), BPF_EXIT_INSN(), }, -@@ -544,10 +544,10 @@ +@@ -918,10 +918,10 @@ offsetof(struct xdp_md, data_meta)), BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), @@ -121,7 +112,7 @@ Signed-off-by: Greg Kroah-Hartman BPF_MOV64_IMM(BPF_REG_0, 0), BPF_EXIT_INSN(), }, -@@ -599,10 +599,10 @@ +@@ -1009,10 +1009,10 @@ offsetof(struct xdp_md, data_meta)), BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), @@ -134,7 +125,7 @@ Signed-off-by: Greg Kroah-Hartman BPF_MOV64_IMM(BPF_REG_0, 0), BPF_EXIT_INSN(), }, -@@ -706,9 +706,9 @@ +@@ -1185,9 +1185,9 @@ offsetof(struct xdp_md, data_meta)), BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), @@ -146,7 +137,7 @@ Signed-off-by: Greg Kroah-Hartman BPF_MOV64_IMM(BPF_REG_0, 0), BPF_EXIT_INSN(), }, -@@ -869,9 +869,9 @@ +@@ -1456,9 +1456,9 @@ offsetof(struct xdp_md, data_meta)), BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)), BPF_MOV64_REG(BPF_REG_1, BPF_REG_2), diff --git a/feeds/ipq95xx/ipq95xx/patches/101-mm-page_alloc-fix-building-error-on-Werror-array-com.patch b/feeds/ipq95xx/ipq95xx/patches/101-mm-page_alloc-fix-building-error-on-Werror-array-com.patch deleted file mode 100644 index 39ac81fb6..000000000 --- a/feeds/ipq95xx/ipq95xx/patches/101-mm-page_alloc-fix-building-error-on-Werror-array-com.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Xiongwei Song -Date: Fri, 14 Jan 2022 14:07:24 -0800 -Subject: [PATCH] mm: page_alloc: fix building error on -Werror=array-compare - -Arthur Marsh reported we would hit the error below when building kernel -with gcc-12: - - CC mm/page_alloc.o - mm/page_alloc.c: In function `mem_init_print_info': - mm/page_alloc.c:8173:27: error: comparison between two arrays [-Werror=array-compare] - 8173 | if (start <= pos && pos < end && size > adj) \ - | - -In C++20, the comparision between arrays should be warned. - -Link: https://lkml.kernel.org/r/20211125130928.32465-1-sxwjean@me.com -Signed-off-by: Xiongwei Song -Reported-by: Arthur Marsh -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds ---- - ---- a/mm/page_alloc.c -+++ b/mm/page_alloc.c -@@ -7579,7 +7579,7 @@ void __init mem_init_print_info(const ch - */ - #define adj_init_size(start, end, size, pos, adj) \ - do { \ -- if (start <= pos && pos < end && size > adj) \ -+ if (&start[0] <= &pos[0] && &pos[0] < &end[0] && size > adj) \ - size -= adj; \ - } while (0) - diff --git a/feeds/ipq95xx/ipq95xx/patches/200-pstore.patch b/feeds/ipq95xx/ipq95xx/patches/200-pstore.patch index c40d38325..4af18c41f 100644 --- a/feeds/ipq95xx/ipq95xx/patches/200-pstore.patch +++ b/feeds/ipq95xx/ipq95xx/patches/200-pstore.patch @@ -1,42 +1,49 @@ -Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/arch/arm64/boot/dts/qcom/ipq8074-memory.dtsi +Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/arch/arm64/boot/dts/qcom/ipq6018-memory.dtsi =================================================================== ---- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/arch/arm64/boot/dts/qcom/ipq8074-memory.dtsi -+++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/arch/arm64/boot/dts/qcom/ipq8074-memory.dtsi -@@ -129,6 +129,12 @@ - no-map; - reg = <0x0 0x4d900000 0x0 0x100000>; - }; -+ -+ ramoops@4da00000 { -+ compatible = "ramoops"; -+ reg = <0x0 0x4da00000 0x0 0x100000>; -+ record-size = <0x1000>; -+ }; - }; - #elif __IPQ_MEM_PROFILE_512_MB__ - /* 512 MB Profile -@@ -249,6 +255,12 @@ - no-map; - reg = <0x0 0x4e800000 0x0 0x100000>; - }; -+ -+ ramoops@4e900000 { -+ compatible = "ramoops"; -+ reg = <0x0 0x4e900000 0x0 0x100000>; -+ record-size = <0x1000>; -+ }; - }; - #else - /* Default Profile -@@ -371,6 +383,11 @@ - reg = <0x0 0x51000000 0x0 0x100000>; +--- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/arch/arm64/boot/dts/qcom/ipq6018-memory.dtsi ++++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/arch/arm64/boot/dts/qcom/ipq6018-memory.dtsi +@@ -132,6 +132,14 @@ + reg = <0x0 0x4d400000 0x0 0x100000>; }; -+ ramoops@51200000 { ++ ramoops@4d500000 { + compatible = "ramoops"; -+ reg = <0x0 0x51200000 0x0 0x100000>; ++ reg = <0x0 0x4d500000 0x0 0x100000>; + record-size = <0x1000>; ++ console-size = <0x1000>; ++ pmsg-size = <0x1000>; + }; - }; - #endif - }; ++ + rpm_msg_ram: rpm_msg_ram@0x60000 { + no-map; + reg = <0x0 0x60000 0x0 0x6000>; +@@ -256,6 +264,14 @@ + reg = <0x0 0x4e300000 0x0 0x100000>; + }; + ++ ramoops@4e400000 { ++ compatible = "ramoops"; ++ reg = <0x0 0x4e400000 0x0 0x100000>; ++ record-size = <0x1000>; ++ console-size = <0x1000>; ++ pmsg-size = <0x1000>; ++ }; ++ + rpm_msg_ram: rpm_msg_ram@0x60000 { + no-map; + reg = <0x0 0x60000 0x0 0x6000>; +@@ -383,6 +399,14 @@ + reg = <0x0 0x50100000 0x0 0x100000>; + }; + ++ ramoops@50200000 { ++ compatible = "ramoops"; ++ reg = <0x0 0x50200000 0x0 0x100000>; ++ record-size = <0x1000>; ++ console-size = <0x1000>; ++ pmsg-size = <0x1000>; ++ }; ++ + rpm_msg_ram: rpm_msg_ram@0x60000 { + no-map; + reg = <0x0 0x60000 0x0 0x6000>; diff --git a/feeds/ipq95xx/iw/Makefile b/feeds/ipq95xx/iw/Makefile index f8da328b6..8f99cb747 100644 --- a/feeds/ipq95xx/iw/Makefile +++ b/feeds/ipq95xx/iw/Makefile @@ -13,7 +13,7 @@ PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://www.kernel.org/pub/software/network/iw -PKG_MD5SUM:=782a3460da2854bd2e5b8f96845a62f8 +PKG_HASH:=4c44e42762f903f9094ba5a598998c800a97a62afd6fd31ec1e0a799e308659c PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=GPL-2.0 diff --git a/feeds/ipq95xx/mac80211/ath.mk b/feeds/ipq95xx/mac80211/ath.mk index df694ba8e..c27f73a3b 100644 --- a/feeds/ipq95xx/mac80211/ath.mk +++ b/feeds/ipq95xx/mac80211/ath.mk @@ -289,7 +289,7 @@ define KernelPackage/ath11k TITLE:=Atheros 802.11ax wireless cards support URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath11k DEPENDS+= @TARGET_ipq95xx +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT \ - +@DRIVER_11AX_SUPPORT +HWMON:kmod-hwmon-core + +@DRIVER_11AX_SUPPORT FILES:= \ $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath11k/ath11k.ko endef @@ -324,7 +324,7 @@ define KernelPackage/ath12k TITLE:=Atheros 802.11be wireless cards support URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath12k DEPENDS+= @TARGET_ipq95xx +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT \ - +@DRIVER_11AX_SUPPORT +HWMON:kmod-hwmon-core + +@DRIVER_11AX_SUPPORT FILES:= \ $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath12k/ath12k.ko AUTOLOAD:=$(call AutoProbe,ath12k) diff --git a/feeds/ipq95xx/nat46/Makefile b/feeds/ipq95xx/nat46/Makefile index 60c7b45a9..1ce5fba99 100644 --- a/feeds/ipq95xx/nat46/Makefile +++ b/feeds/ipq95xx/nat46/Makefile @@ -20,7 +20,7 @@ define KernelPackage/nat46 SECTION:=kernel SUBMENU:=Network Support FILES:=$(PKG_BUILD_DIR)/nat46/modules/nat46.ko - AUTOLOAD:=$(call AutoLoad,29,nat46) + AUTOLOAD:=$(call AutoLoad,20,nat46) endef include $(INCLUDE_DIR)/kernel-defaults.mk diff --git a/feeds/ipq95xx/qca-nss-dp/Makefile b/feeds/ipq95xx/qca-nss-dp/Makefile index 9b23afcab..079c40339 100644 --- a/feeds/ipq95xx/qca-nss-dp/Makefile +++ b/feeds/ipq95xx/qca-nss-dp/Makefile @@ -6,8 +6,8 @@ PKG_SOURCE_PROTO:=git PKG_BRANCH:=master PKG_RELEASE:=2 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-dp -PKG_MIRROR_HASH:=40d262941d32f025b12f8d295453b34e63c6df5988f71267357e23aca2bfb6cd -PKG_VERSION:=8b8f7b1bbfb9f3bde16c42fb61d8ffaa87d9b1b6 +PKG_MIRROR_HASH:=317e92240197e203d7cdc50a69c97631bc6c35ad71a903a616d9917b64ce26e7 +PKG_VERSION:=5cd7e43b5f76bb14de38ac8fe1805c367abef91a PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) diff --git a/feeds/ipq95xx/qca-nss-ppe/Makefile b/feeds/ipq95xx/qca-nss-ppe/Makefile index 4c9ce13db..f345f0a2b 100644 --- a/feeds/ipq95xx/qca-nss-ppe/Makefile +++ b/feeds/ipq95xx/qca-nss-ppe/Makefile @@ -6,8 +6,8 @@ PKG_SOURCE_PROTO:=git PKG_BRANCH:=master PKG_RELEASE:=2 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-ppe -PKG_MIRROR_HASH:=f3355f9e5b6635954806eb9653751ebf40a04cf7b8113c8abca17b075de30619 -PKG_VERSION:=15a863594d33ad56044d7f11905bcbb41e3eb948 +PKG_MIRROR_HASH:=754a604e282d97af3eac8b6af0a16c4fe48fdef8f04ae593d016e1f0ba9886da +PKG_VERSION:=ffc8f2447dbb2d4a29d1fca4fad516132d5848fe PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) @@ -119,6 +119,8 @@ EXTRA_CFLAGS+= \ -I$(STAGING_DIR)/usr/include/qca-ssdk/fal \ -I$(STAGING_DIR)/usr/include/qca-ssdk/init \ -I$(STAGING_DIR)/usr/include/nat46 \ + -Wno-error=unused-variable \ + ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-ppe-bridge-mgr),) MAKE_OPTS+=bridge-mgr=y @@ -149,6 +151,7 @@ define Build/Compile EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ SoC="$(subtarget)" \ KBUILD_MODPOST_WARN=1 \ + V=1 \ modules endef diff --git a/feeds/ipq95xx/qca-nss-ppe/patches/100-compile.patch b/feeds/ipq95xx/qca-nss-ppe/patches/100-compile.patch new file mode 100644 index 000000000..07b6b3534 --- /dev/null +++ b/feeds/ipq95xx/qca-nss-ppe/patches/100-compile.patch @@ -0,0 +1,25 @@ +Index: qca-nss-ppe-ffc8f2447dbb2d4a29d1fca4fad516132d5848fe/drv/ppe_drv/tun/ppe_drv_tun.c +=================================================================== +--- qca-nss-ppe-ffc8f2447dbb2d4a29d1fca4fad516132d5848fe.orig/drv/ppe_drv/tun/ppe_drv_tun.c ++++ qca-nss-ppe-ffc8f2447dbb2d4a29d1fca4fad516132d5848fe/drv/ppe_drv/tun/ppe_drv_tun.c +@@ -114,7 +114,7 @@ static void ppe_drv_tun_free(struct kref + */ + static bool ppe_drv_tun_deref(struct ppe_drv_tun *ptun) + { +- uint8_t tun_idx = ptun->tun_idx; ++ //uint8_t tun_idx = ptun->tun_idx; + + ppe_drv_assert(kref_read(&ptun->ref), "%p: ref count under run for tun", ptun); + +Index: qca-nss-ppe-ffc8f2447dbb2d4a29d1fca4fad516132d5848fe/drv/ppe_drv/tun/ppe_drv_tun_encap.c +=================================================================== +--- qca-nss-ppe-ffc8f2447dbb2d4a29d1fca4fad516132d5848fe.orig/drv/ppe_drv/tun/ppe_drv_tun_encap.c ++++ qca-nss-ppe-ffc8f2447dbb2d4a29d1fca4fad516132d5848fe/drv/ppe_drv/tun/ppe_drv_tun_encap.c +@@ -95,7 +95,6 @@ void ppe_drv_tun_encap_free(struct kref + */ + bool ppe_drv_tun_encap_deref(struct ppe_drv_tun_encap *ptec) + { +- uint8_t tun_idx = ptec->tun_idx; + + ppe_drv_assert(kref_read(&ptec->ref), "%p: ref count under run for ptec", ptec); + diff --git a/feeds/ipq95xx/qca-psdk/Makefile b/feeds/ipq95xx/qca-psdk/Makefile index 3ae6fada3..1e5ba7263 100755 --- a/feeds/ipq95xx/qca-psdk/Makefile +++ b/feeds/ipq95xx/qca-psdk/Makefile @@ -6,7 +6,7 @@ PKG_SOURCE_PROTO:=git PKG_BRANCH:=master PKG_RELEASE:=2 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-psdk -PKG_VERSION:=402973acc8a17d9b685ed3c3490b7d6289f4798f +PKG_VERSION:=ffc8f2447dbb2d4a29d1fca4fad516132d5848fe PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) diff --git a/feeds/ipq95xx/qca-ssdk-shell/Makefile b/feeds/ipq95xx/qca-ssdk-shell/Makefile index 22d996dc3..c3a74a229 100644 --- a/feeds/ipq95xx/qca-ssdk-shell/Makefile +++ b/feeds/ipq95xx/qca-ssdk-shell/Makefile @@ -7,8 +7,7 @@ PKG_SOURCE_PROTO:=git PKG_BRANCH:=master PKG_RELEASE:=1 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/ssdk-shell -PKG_MIRROR_HASH:=5bb53abc2b8e2cfaad10b1a94aa6d70d60d678ae9c1be043130f714888cb93a4 -PKG_VERSION:=0e1460b64a61355bebace6773070272610b12199 +PKG_VERSION:=b78d6095444e22b274e8b47e10100a2f51a3b65e PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) diff --git a/feeds/ipq95xx/qca-ssdk/Makefile b/feeds/ipq95xx/qca-ssdk/Makefile index 346c5f3ea..4f41a3343 100644 --- a/feeds/ipq95xx/qca-ssdk/Makefile +++ b/feeds/ipq95xx/qca-ssdk/Makefile @@ -7,9 +7,8 @@ PKG_SOURCE_PROTO:=git PKG_BRANCH:=master PKG_RELEASE:=1 PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk -PKG_MIRROR_HASH:=0c3384b2220d29a3e6ec544c2736c205423a7f11122950c4a4ddc271489f57ec -#PKG_MIRROR_HASH:=3be4158fc80540c8dcb2d844110205685fa81c935fdd2268aee72b04d34d7c1f -PKG_VERSION:=6ee7e05bd4cf4961d85f535e9aaf9f028c9e4e92 +PKG_MIRROR_HASH:=63209e01c092bd6ee63a4094995b78772c8e4ff7cd7f81f8dba51366697a4639 +PKG_VERSION:=9e687f44ee13ce0904f291c9771172b488b7f9ed PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) diff --git a/profiles/qcom_al02-c15.yml b/profiles/qcom_al02-c15.yml new file mode 100644 index 000000000..932541fbe --- /dev/null +++ b/profiles/qcom_al02-c15.yml @@ -0,0 +1,13 @@ +--- +profile: qcom_al02-c15 +target: ipq95xx +subtarget: generic +description: Build image for the IPQ9574/AP-AL02-C15 +image: bin/targets/ipq60xx/generic/openwrt-ipq60xx-edgecore_eap101-squashfs-sysupgrade.tar +feeds: + - name: ipq95xx + path: ../../feeds/ipq95xx +packages: + - ipq95xx +diffconfig: | + CONFIG_KERNEL_IPQ_MEM_PROFILE=0