diff --git a/config/boards/easy-eai-nano.csc b/config/boards/easy-eai-nano.csc new file mode 100644 index 000000000000..d9087421f971 --- /dev/null +++ b/config/boards/easy-eai-nano.csc @@ -0,0 +1,12 @@ +# Rockchip RV1126 quad-core Cortex-A7 EASY-EAI Nano +BOARD_NAME="EASY-EAI Nano" +BOARD_VENDOR="easy-eai" +BOARDFAMILY="rockchip-rv1126" +BOARD_MAINTAINER="hqnicolas" +INTRODUCED="2026" +KERNEL_TARGET="vendor" +KERNEL_TEST_TARGET="vendor" +BOOT_FDT_FILE="rv1126-nano.dtb" +BOOT_SOC="rv1126" +BOOTCONFIG="easy-eai-nano-rv1126_defconfig" +IMAGE_PARTITION_TABLE="gpt" diff --git a/config/bootenv/rv1126.txt b/config/bootenv/rv1126.txt new file mode 100644 index 000000000000..3a9f1a2b6019 --- /dev/null +++ b/config/bootenv/rv1126.txt @@ -0,0 +1,3 @@ +verbosity=1 +extraargs=coherent_pool=8M cma=8M video=off udev.children-max=1 +bootlogo=false diff --git a/config/bootscripts/boot-rv1126.cmd b/config/bootscripts/boot-rv1126.cmd new file mode 100644 index 000000000000..5de2edba52fa --- /dev/null +++ b/config/bootscripts/boot-rv1126.cmd @@ -0,0 +1,84 @@ +# DO NOT EDIT THIS FILE +# +# Please edit /boot/armbianEnv.txt to set supported parameters +# + +setenv kernel_addr_r "0x02080000" +setenv fdt_addr_r "0x08300000" +setenv load_addr "0x00100000" +setenv ramdisk_addr_r "0x0a200000" +setenv ramdisk_arg "-" +# default values +setenv rootdev "/dev/mmcblk0p1" +setenv verbosity "1" +setenv console "serial" +setenv bootlogo "false" +setenv rootfstype "ext4" +setenv docker_optimizations "off" +setenv earlycon "off" + +test -n "${distro_bootpart}" || setenv distro_bootpart 1 +test -n "${fdtfile}" || setenv fdtfile "rv1126-nano.dtb" + +echo "Boot script loaded from ${devtype} ${devnum}:${distro_bootpart}" + +if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}armbianEnv.txt; then + load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}armbianEnv.txt + env import -t ${load_addr} ${filesize} +fi + +if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi + +if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi +if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyS2,1500000n8 ${consoleargs}"; fi +if test "${earlycon}" = "on"; then setenv consoleargs "earlycon=uart8250,mmio32,0xff570000 ${consoleargs}"; fi +if test "${bootlogo}" = "true"; then + setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" +else + setenv consoleargs "splash=verbose ${consoleargs}" +fi + +# get PARTUUID of first partition on SD/eMMC the boot script was loaded from +if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:${distro_bootpart} partuuid; fi +if test "${rootdev}" = "/dev/mmcblk0p1"; then setenv rootdev "PARTUUID=${partuuid}"; fi + +setenv bootargs "root=${rootdev} rootwait rw rootfstype=${rootfstype} ${consoleargs} no_console_suspend consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}" + +if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory"; fi +echo "Final bootargs: ${bootargs}" + +echo "Loading initramfs to ${ramdisk_addr_r}..." +if load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} ${prefix}uInitrd; then + setenv ramdisk_arg "${ramdisk_addr_r}" + echo "Loaded initramfs (${filesize} bytes)" +else + echo "WARNING: failed to load ${prefix}uInitrd, booting without initramfs" +fi + +echo "Loading kernel zImage to ${kernel_addr_r}..." +if load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${prefix}zImage; then + echo "Loaded kernel zImage (${filesize} bytes)" +else + echo "ERROR: failed to load ${prefix}zImage, stopping boot" + exit +fi + +echo "Loading DTB ${prefix}dtb/${fdtfile} to ${fdt_addr_r}..." +if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}dtb/${fdtfile}; then + echo "Loaded DTB ${prefix}dtb/${fdtfile}" +else + echo "WARNING: failed to load ${prefix}dtb/${fdtfile}, trying rv1126-evb-ddr3-v13.dtb" + if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}dtb/rv1126-evb-ddr3-v13.dtb; then + setenv fdtfile "rv1126-evb-ddr3-v13.dtb" + echo "WARNING: using fallback DTB ${fdtfile}" + else + echo "ERROR: failed to load DTB, stopping boot" + exit + fi +fi + +echo "Booting kernel from ${kernel_addr_r} with initramfs ${ramdisk_arg} and DTB ${fdt_addr_r}..." +bootz ${kernel_addr_r} ${ramdisk_arg} ${fdt_addr_r} + +# Recompile with: +# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr diff --git a/config/kernel/linux-qrb2210-edge.config b/config/kernel/linux-qrb2210-edge.config index e701d6d955ce..fddf8bcbfc75 100644 --- a/config/kernel/linux-qrb2210-edge.config +++ b/config/kernel/linux-qrb2210-edge.config @@ -1,4 +1,4 @@ -# Armbian defconfig generated with 7.0 +# Armbian defconfig generated with 7.1 # CONFIG_LOCALVERSION_AUTO is not set CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y @@ -56,7 +56,6 @@ CONFIG_ARCH_HISI=y CONFIG_ARCH_KEEMBAY=y CONFIG_ARCH_MEDIATEK=y CONFIG_ARCH_MESON=y -CONFIG_ARCH_SPARX5=y CONFIG_ARCH_MVEBU=y CONFIG_ARCH_NXP=y CONFIG_ARCH_LAYERSCAPE=y @@ -138,7 +137,6 @@ CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_INET_ESP=m -CONFIG_IPV6=m CONFIG_NETFILTER=y CONFIG_BRIDGE_NETFILTER=m CONFIG_NETFILTER_NETLINK_HOOK=m @@ -295,7 +293,7 @@ CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE=m +CONFIG_BRIDGE=y CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_NET_DSA=m CONFIG_NET_DSA_TAG_OCELOT=m @@ -343,10 +341,7 @@ CONFIG_BT_NXPUART=m CONFIG_CFG80211=m CONFIG_CFG80211_WEXT=y CONFIG_MAC80211=m -CONFIG_ATH9K_HTC=m -# CONFIG_ATH9K_HTC_DEBUGFS is not set CONFIG_MAC80211_MESH=y -CONFIG_MAC80211_LEDS=y CONFIG_RFKILL=m CONFIG_RFKILL_INPUT=y CONFIG_RFKILL_GPIO=m @@ -508,6 +503,7 @@ CONFIG_USB_NET_SMSC95XX=m CONFIG_USB_NET_PLUSB=m CONFIG_USB_NET_MCS7830=m # CONFIG_WLAN_VENDOR_ADMTEK is not set +CONFIG_ATH9K_HTC=m CONFIG_ATH10K=m CONFIG_ATH10K_SNOC=m # CONFIG_WLAN_VENDOR_ATMEL is not set @@ -1192,6 +1188,10 @@ CONFIG_USB_RENESAS_USBHS_HCD=m CONFIG_USB_RENESAS_USBHS=m CONFIG_USB_ACM=m CONFIG_USB_STORAGE=y +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VUDC=m CONFIG_USB_CDNS_SUPPORT=m CONFIG_USB_CDNS3=m CONFIG_USB_CDNS3_GADGET=y @@ -1253,7 +1253,6 @@ CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_SDHCI_OF_ARASAN=y CONFIG_MMC_SDHCI_OF_ESDHC=y CONFIG_MMC_SDHCI_OF_DWCMSHC=y -CONFIG_MMC_SDHCI_OF_SPARX5=y CONFIG_MMC_SDHCI_CADENCE=y CONFIG_MMC_SDHCI_ESDHC_IMX=y CONFIG_MMC_SDHCI_TEGRA=y @@ -1546,11 +1545,6 @@ CONFIG_QCOM_APR=m CONFIG_QCOM_ICC_BWMON=m CONFIG_QCOM_PBS=m CONFIG_ROCKCHIP_IODOMAIN=y -CONFIG_ARCH_TEGRA_132_SOC=y -CONFIG_ARCH_TEGRA_210_SOC=y -CONFIG_ARCH_TEGRA_186_SOC=y -CONFIG_ARCH_TEGRA_194_SOC=y -CONFIG_ARCH_TEGRA_234_SOC=y CONFIG_TI_PRUSS=m CONFIG_OWL_PM_DOMAINS=y CONFIG_RASPBERRYPI_POWER=y @@ -1622,10 +1616,10 @@ CONFIG_RESET_QCOM_AOSS=y CONFIG_RESET_QCOM_PDC=m CONFIG_RESET_RZG2L_USBPHY_CTRL=y CONFIG_RESET_TI_SCI=y -CONFIG_PHY_SNPS_EUSB2=m -CONFIG_PHY_XGENE=y CONFIG_PHY_CAN_TRANSCEIVER=m CONFIG_PHY_NXP_PTN3222=m +CONFIG_PHY_SNPS_EUSB2=m +CONFIG_PHY_XGENE=y CONFIG_PHY_SUN4I_USB=y CONFIG_PHY_CADENCE_TORRENT=m CONFIG_PHY_CADENCE_DPHY=m @@ -1792,11 +1786,9 @@ CONFIG_CRYPTO_USER=y CONFIG_CRYPTO_BENCHMARK=m CONFIG_CRYPTO_CHACHA20=m CONFIG_CRYPTO_ECHAINIV=y -CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_ZSTD=m CONFIG_CRYPTO_USER_API_RNG=m CONFIG_CRYPTO_GHASH_ARM64_CE=y -CONFIG_CRYPTO_SM3_ARM64_CE=m CONFIG_CRYPTO_AES_ARM64_BS=m CONFIG_CRYPTO_AES_ARM64_CE_CCM=y CONFIG_CRYPTO_DEV_SUN8I_CE=m @@ -1814,10 +1806,6 @@ CONFIG_CRYPTO_DEV_SA2UL=m CONFIG_DMA_RESTRICTED_POOL=y CONFIG_CMA_SIZE_MBYTES=32 CONFIG_PRINTK_TIME=y -CONFIG_USBIP_CORE=m -CONFIG_USBIP_VHCI_HCD=m -CONFIG_USBIP_HOST=m -CONFIG_USBIP_VUDC=m CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_FS=y CONFIG_DEBUG_MEMORY_INIT=y diff --git a/config/kernel/linux-rockchip-rv1126-vendor.config b/config/kernel/linux-rockchip-rv1126-vendor.config new file mode 100644 index 000000000000..3764533d1e35 --- /dev/null +++ b/config/kernel/linux-rockchip-rv1126-vendor.config @@ -0,0 +1,602 @@ +# Armbian defconfig generated with 6.1 +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZ4=y +CONFIG_DEFAULT_HOSTNAME="localhost" +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +CONFIG_PREEMPT=y +CONFIG_SCHED_CORE=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +CONFIG_CGROUP_FAVOR_DYNMODS=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +CONFIG_CGROUP_MISC=y +CONFIG_NAMESPACES=y +CONFIG_USER_NS=y +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y +# CONFIG_BUG is not set +# CONFIG_ELF_CORE is not set +# CONFIG_BASE_FULL is not set +# CONFIG_IO_URING is not set +CONFIG_EMBEDDED=y +CONFIG_PERF_EVENTS=y +CONFIG_ARCH_ROCKCHIP=y +# CONFIG_HARDEN_BRANCH_PREDICTOR is not set +# CONFIG_HARDEN_BRANCH_HISTORY is not set +# CONFIG_VDSO is not set +# CONFIG_CACHE_L2X0 is not set +# CONFIG_ARM_ERRATA_643719 is not set +CONFIG_SMP=y +CONFIG_SCHED_SMT=y +CONFIG_VMSPLIT_3G_OPT=y +CONFIG_ARM_PSCI=y +CONFIG_HZ_300=y +CONFIG_THUMB2_KERNEL=y +CONFIG_HIGHMEM=y +# CONFIG_CPU_SW_DOMAIN_PAN is not set +CONFIG_ARCH_FORCE_MAX_ORDER=9 +CONFIG_UACCESS_WITH_MEMCPY=y +CONFIG_CMDLINE="user_debug=31" +CONFIG_CMDLINE_EXTEND=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPUFREQ_DT=y +CONFIG_ARM_ROCKCHIP_CPUFREQ=y +CONFIG_CPU_IDLE=y +CONFIG_ARM_CPUIDLE=y +CONFIG_VFP=y +CONFIG_NEON=y +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +# CONFIG_STACKPROTECTOR_STRONG is not set +# CONFIG_STRICT_KERNEL_RWX is not set +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_CMDLINE_PARTITION=y +CONFIG_IOSCHED_BFQ=y +CONFIG_ZSWAP=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_CMA=y +CONFIG_CMA_INACTIVE=y +# CONFIG_VM_EVENT_COUNTERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=m +CONFIG_INET=y +CONFIG_INET_ESP=m +# CONFIG_INET_DIAG is not set +CONFIG_IPV6=m +CONFIG_IPV6_TUNNEL=m +CONFIG_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=m +CONFIG_NETFILTER_NETLINK_HOOK=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NFT_REJECT_NETDEV=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=m +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_VS=m +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_NFCT=y +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_RAW=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_BRIDGE=m +# CONFIG_BRIDGE_IGMP_SNOOPING is not set +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_VLAN_8021Q=m +CONFIG_NET_SCHED=y +CONFIG_NET_CLS_CGROUP=m +CONFIG_CGROUP_NET_PRIO=y +CONFIG_BPF_STREAM_PARSER=y +CONFIG_CAN=m +CONFIG_BT=m +CONFIG_BT_RFCOMM=y +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=y +CONFIG_BT_HIDP=y +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_RFKILL=m +CONFIG_RFKILL_RK=m +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_ALLOW_DEV_COREDUMP is not set +CONFIG_ROCKCHIP_SIP=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_OF_PARTS is not set +CONFIG_MTD_BLOCK=y +CONFIG_MTD_SPI_NAND=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPI_NOR_MISC=y +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_BLOCK=y +# CONFIG_DTC_OMIT_DISABLED is not set +# CONFIG_DTC_OMIT_EMPTY is not set +CONFIG_ZRAM=m +CONFIG_ZRAM_WRITEBACK=y +CONFIG_ZRAM_MEMORY_TRACKING=y +CONFIG_SCSI=y +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_NETDEVICES=y +CONFIG_DUMMY=m +CONFIG_WIREGUARD=m +CONFIG_MACVLAN=m +CONFIG_IPVLAN=m +CONFIG_VXLAN=m +CONFIG_TUN=m +CONFIG_VETH=m +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ASIX is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CIRRUS is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_DAVICOM is not set +# CONFIG_NET_VENDOR_ENGLEDER is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_FARADAY is not set +# CONFIG_NET_VENDOR_FUNGIBLE is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HISILICON is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_ADI is not set +# CONFIG_NET_VENDOR_LITEX is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +CONFIG_STMMAC_ETH=y +CONFIG_STMMAC_ETHTOOL=y +CONFIG_STMMAC_FULL=y +# CONFIG_DWMAC_GENERIC is not set +CONFIG_DWMAC_ROCKCHIP_TOOL=y +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_VERTEXCOM is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WANGXUN is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +CONFIG_MOTORCOMM_PHY=m +CONFIG_REALTEK_PHY=y +CONFIG_CANFD_RK3576=m +CONFIG_PPP=y +CONFIG_USB_RTL8152=m +CONFIG_USB_USBNET=m +# CONFIG_USB_NET_AX8817X is not set +# CONFIG_USB_NET_AX88179_178A is not set +# CONFIG_USB_NET_CDCETHER is not set +# CONFIG_USB_NET_CDC_NCM is not set +CONFIG_USB_NET_DM9601=m +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_BROADCOM is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_MICROCHIP is not set +# CONFIG_WLAN_VENDOR_PURELIFI is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +CONFIG_WL_ROCKCHIP=m +# CONFIG_BCMDHD is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_SILABS is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +# CONFIG_WLAN_VENDOR_QUANTENNA is not set +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_ADC=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_GT9XX=m +CONFIG_SENSOR_DEVICE=y +CONFIG_VIDEO_GC2053=y +CONFIG_VIDEO_GC2093=y +CONFIG_LIGHT_DEVICE=y +CONFIG_LS_STK3332=y +CONFIG_PROXIMITY_DEVICE=y +CONFIG_PS_STK3332=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_RK805_PWRKEY=y +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=6 +CONFIG_SERIAL_8250_RUNTIME_UARTS=6 +CONFIG_SERIAL_8250_DW=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_ROCKCHIP=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_GPIO=y +CONFIG_I2C_RK3X=y +CONFIG_SPI=y +CONFIG_SPI_ROCKCHIP=y +CONFIG_SPI_ROCKCHIP_FLEXBUS_FSPI=y +CONFIG_SPI_ROCKCHIP_SFC=y +CONFIG_SPI_SPIDEV=y +# CONFIG_PTP_1588_CLOCK_KVM is not set +CONFIG_GPIO_SYSFS=y +CONFIG_POWER_RESET=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_POWER_SUPPLY=y +# CONFIG_HWMON is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_CPU_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_ROCKCHIP_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_DW_WATCHDOG=y +CONFIG_MFD_RK808=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_GPIO=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_RK801=y +CONFIG_REGULATOR_RK808=y +CONFIG_DRM=y +CONFIG_DRM_IGNORE_IOTCL_PERMIT=y +CONFIG_DRM_ROCKCHIP=y +CONFIG_ROCKCHIP_VOP=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_DRM_PANEL_SIMPLE=y +CONFIG_DRM_PANEL_SIMPLE_OF_ONLY=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_ROCKCHIP_MULTI_RGA=y +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_DYNAMIC_DMA_CHAN=y +CONFIG_SND_SOC_ROCKCHIP=y +CONFIG_SND_SOC_ROCKCHIP_ASRC=y +CONFIG_SND_SOC_ROCKCHIP_MULTI_DAIS=y +CONFIG_SND_SOC_ROCKCHIP_PDM_V2=y +CONFIG_SND_SOC_ROCKCHIP_SAI=y +CONFIG_SND_SOC_ROCKCHIP_SPDIF=y +CONFIG_SND_SOC_ROCKCHIP_SPDIFRX=y +CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=y +CONFIG_SND_SOC_DUMMY_CODEC=y +CONFIG_SND_SOC_ES7202=y +CONFIG_SND_SOC_ES7202_MIC_MAX_CHANNELS=8 +CONFIG_SND_SOC_ES8323=y +CONFIG_SND_SOC_RK3506=y +CONFIG_SND_SOC_RK730=y +CONFIG_SND_SOC_RK817=y +CONFIG_SND_SOC_RK_DSM=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_OTG=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_UAS=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC2=m +CONFIG_NOP_USB_XCEIV=m +CONFIG_USB_GADGET=m +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_UEVENT=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_ROLE_SWITCH=y +CONFIG_MMC=y +CONFIG_MMC_QUEUE_DEPTH=1 +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m +CONFIG_LEDS_GPIO=m +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_HYM8563=y +CONFIG_RTC_DRV_RK808=y +CONFIG_DMADEVICES=y +CONFIG_PL330_DMA=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_CMA=y +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +CONFIG_STAGING=y +CONFIG_COMMON_CLK_RK808=y +CONFIG_ROCKCHIP_CLK_OUT=y +# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_CPU_RV1126=y +CONFIG_ROCKCHIP_CPUINFO=y +CONFIG_ROCKCHIP_GRF=y +CONFIG_ROCKCHIP_IODOMAIN=y +CONFIG_ROCKCHIP_OPP=y +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_PVTM=y +CONFIG_ROCKCHIP_SUSPEND_MODE=y +CONFIG_ROCKCHIP_SYSTEM_MONITOR=y +CONFIG_ROCKCHIP_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +CONFIG_EXTCON_USB_GPIO=y +CONFIG_MEMORY=y +CONFIG_ROCKCHIP_DSMC=y +CONFIG_ROCKCHIP_DSMC_SLAVE=y +CONFIG_IIO=y +CONFIG_ROCKCHIP_FLEXBUS_ADC=y +CONFIG_ROCKCHIP_SARADC=y +CONFIG_ROCKCHIP_FLEXBUS_DAC=y +CONFIG_PWM=y +CONFIG_PWM_ROCKCHIP=y +# CONFIG_PHY_ROCKCHIP_INNO_USB2 is not set +CONFIG_PHY_ROCKCHIP_NANENG_USB2=y +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y +CONFIG_PHY_ROCKCHIP_USB=y +CONFIG_NVMEM_ROCKCHIP_EFUSE=y +CONFIG_NVMEM_ROCKCHIP_OTP=y +CONFIG_ROCKCHIP_RKNPU=y +CONFIG_ROCKCHIP_RKNPU_PROC_FS=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_DNOTIFY is not set +CONFIG_AUTOFS_FS=m +CONFIG_OVERLAY_FS=m +CONFIG_VFAT_FS=m +CONFIG_EXFAT_FS=m +CONFIG_NTFS3_FS=m +CONFIG_TMPFS=y +CONFIG_UBIFS_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_DECOMP_MULTI=y +# CONFIG_SQUASHFS_ZLIB is not set +CONFIG_SQUASHFS_ZSTD=y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_DEFLATE_COMPRESS is not set +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y +CONFIG_PSTORE_BOOT_LOG=y +CONFIG_EROFS_FS=m +CONFIG_NFS_FS=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_ISO8859_1=m +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_ENCRYPTED_KEYS=y +CONFIG_KEY_DH_OPERATIONS=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_CMAC=y +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=8 +CONFIG_PRINTK_TIME=y +CONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER=y +# CONFIG_DEBUG_MISC is not set +CONFIG_DEBUG_INFO_DWARF5=y +CONFIG_DEBUG_INFO_BTF=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_MAGIC_SYSRQ_SERIAL is not set +CONFIG_DEBUG_FS=y +# CONFIG_SLUB_DEBUG is not set +CONFIG_PANIC_ON_OOPS=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y +CONFIG_HARDLOCKUP_DETECTOR=y +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_SCHED_DEBUG is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_BOOTPARAM_RCU_STALL_PANIC=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_DEBUG_USER=y +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/config/sources/families/qrb2210.conf b/config/sources/families/qrb2210.conf index 0481204643d6..bfc8c4d346fc 100644 --- a/config/sources/families/qrb2210.conf +++ b/config/sources/families/qrb2210.conf @@ -59,10 +59,8 @@ function uboot_custom_postprocess() { case "${BRANCH}" in edge) - declare -g KERNEL_MAJOR_MINOR="7.0" - declare -g KERNELBRANCH='tag:v7.0' + declare -g KERNEL_MAJOR_MINOR="7.1" declare -g -i KERNEL_GIT_CACHE_TTL=120 # 2 minutes; this is a high-traffic repo - KERNELPATCHDIR="${LINUXFAMILY}-${BRANCH}" LINUXCONFIG="linux-${LINUXFAMILY}-${BRANCH}" ;; diff --git a/config/sources/families/rockchip-rv1126.conf b/config/sources/families/rockchip-rv1126.conf new file mode 100644 index 000000000000..34de3fcee31d --- /dev/null +++ b/config/sources/families/rockchip-rv1126.conf @@ -0,0 +1,114 @@ +# +# SPDX-License-Identifier: GPL-2.0 +# +# This file is a part of the Armbian Build Framework +# https://github.com/armbian/build/ +# + +enable_extension "rkbin-tools" + +BOOT_SOC=${BOOT_SOC:="rv1126"} + +ARCH=armhf +BOOTDELAY=1 +BOOTCONFIG="${BOOTCONFIG:-easy-eai-nano-rv1126_defconfig}" +LINUXFAMILY=rockchip-rv1126 +LINUXCONFIG=linux-rockchip-rv1126-vendor +OVERLAY_PREFIX=rv1126 +SERIALCON="${SERIALCON:-ttyS2:1500000}" +OFFSET=16 + +RKBIN_GIT_URL="${RKBIN_GIT_URL:-"https://github.com/rockchip-linux/rkbin.git"}" +RKBIN_DIR="$SRC/cache/sources/rkbin-tools" +BOOTSCRIPT="boot-rv1126.cmd:boot.cmd" +BOOTENV_FILE="rv1126.txt" +BOOTSOURCE="https://github.com/u-boot/u-boot.git" +BOOTBRANCH="tag:v2026.07" +BOOTPATCHDIR="v2026.07" +BOOTDIR="u-boot-rockchip-rv1126-v2026.07" + +DDR_BLOB="${DDR_BLOB:-"bin/rv11/rv1126_ddr_924MHz_v1.16.bin"}" +TEE_BLOB="${TEE_BLOB:-"bin/rv11/rv1126_tee_ta_v2.16.bin"}" +UBOOT_TARGET_MAP="ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB} TEE=${RKBIN_DIR}/${TEE_BLOB};;idbloader.img u-boot.itb u-boot-rockchip.bin" +UBOOT_HASH_EXTRA="${UBOOT_HASH_EXTRA:-} ${DDR_BLOB} ${TEE_BLOB}" + +case $BRANCH in + + vendor) + declare -g KERNEL_MAJOR_MINOR="6.1" + declare -g -i KERNEL_GIT_CACHE_TTL=120 + KERNELSOURCE='https://github.com/armbian/linux-rockchip.git' + KERNELBRANCH='branch:rk-6.1-rkr5.1' + KERNELPATCHDIR='rv1126-vendor-6.1' + ;; + +esac + +CPUMIN="408000" +CPUMAX="1512000" +GOVERNOR="ondemand" + +function uboot_make_config__rv1126_v2026_07_target_olddefconfig() { + [[ "${BOOTPATCHDIR}" == "v2026.07" ]] || return 0 + + display_alert "Completing RV1126 u-boot defaults" "${version} ${target_make}" "info" + run_host_command_logged "make ${target_make} olddefconfig ${cross_compile}" +} + +uboot_custom_postprocess() { + [[ "${BOOTPATCHDIR}" == "v2026.07" ]] || return 0 + + for artifact in idbloader.img u-boot.itb u-boot-rockchip.bin spl/u-boot-spl.bin; do + [[ -s "${artifact}" ]] || exit_with_error "RV1126 mainline u-boot artifact is missing or empty: ${artifact}" + done + + if command -v strings > /dev/null 2>&1; then + strings idbloader.img | grep -q "U-Boot SPL 2017.09" && exit_with_error "RV1126 idbloader.img contains legacy U-Boot SPL 2017.09" + strings idbloader.img | grep -q "U-Boot SPL 2026.07" || exit_with_error "RV1126 idbloader.img does not contain U-Boot SPL 2026.07" + fi + + local dumpimage_cmd="" + if command -v dumpimage > /dev/null 2>&1; then + dumpimage_cmd="dumpimage" + elif [[ -x tools/dumpimage ]]; then + dumpimage_cmd="./tools/dumpimage" + fi + + if [[ -n "${dumpimage_cmd}" ]]; then + local fit_dump + fit_dump="$(${dumpimage_cmd} -l u-boot.itb 2>&1)" || exit_with_error "RV1126 u-boot.itb dumpimage verification failed" + grep -q "Load Address:.*0x00600000" <<< "${fit_dump}" || exit_with_error "RV1126 u-boot.itb is missing U-Boot load address 0x00600000" + grep -q "Entry Point:.*0x00600000" <<< "${fit_dump}" || exit_with_error "RV1126 u-boot.itb is missing U-Boot entry point 0x00600000" + grep -q "Image .*op-tee" <<< "${fit_dump}" || exit_with_error "RV1126 u-boot.itb is missing OP-TEE image" + grep -q "Trusted Execution Environment Image" <<< "${fit_dump}" || exit_with_error "RV1126 u-boot.itb OP-TEE image has unexpected type" + fi +} + +write_uboot_platform() { + local logging_prelude="" + [[ $(type -t run_host_command_logged) == function ]] && logging_prelude="run_host_command_logged" + + [[ -f "$1/idbloader.img" ]] || { echo "write_uboot_platform: missing $1/idbloader.img" >&2; return 1; } + [[ -f "$1/u-boot.itb" ]] || { echo "write_uboot_platform: missing $1/u-boot.itb" >&2; return 1; } + + ${logging_prelude} dd "if=$1/idbloader.img" "of=$2" bs=512 seek=$((0x40)) conv=notrunc status=none + ${logging_prelude} dd "if=$1/u-boot.itb" "of=$2" bs=512 seek=$((0x4000)) conv=notrunc status=none +} + +family_tweaks() { + chroot_sdcard getent group gpio > /dev/null || chroot_sdcard groupadd --system --gid 900 gpio + chroot_sdcard getent group i2c > /dev/null || chroot_sdcard groupadd --system --gid 901 i2c + + return 0 +} + +family_tweaks_bsp() { + mkdir -p $destination/etc/udev/rules.d + mkdir -p $destination/usr/local/bin + + cp $SRC/packages/bsp/rockchip/70-gpio.rules $destination/etc/udev/rules.d + cp $SRC/packages/bsp/rockchip/71-i2c.rules $destination/etc/udev/rules.d + cp $SRC/packages/bsp/rockchip/asound.conf $destination/etc/ + + return 0 +} diff --git a/patch/kernel/qrb2210-edge/0005-dt-bindings-mfd-qcom-spmi-pmic-add-compatibles-for-p.patch b/patch/kernel/archive/qrb2210-7.1/0001-dt-bindings-mfd-qcom-spmi-pmic-add-compatibles-for-p.patch similarity index 86% rename from patch/kernel/qrb2210-edge/0005-dt-bindings-mfd-qcom-spmi-pmic-add-compatibles-for-p.patch rename to patch/kernel/archive/qrb2210-7.1/0001-dt-bindings-mfd-qcom-spmi-pmic-add-compatibles-for-p.patch index 2caea50093ac..3d8e6ade7b88 100644 --- a/patch/kernel/qrb2210-edge/0005-dt-bindings-mfd-qcom-spmi-pmic-add-compatibles-for-p.patch +++ b/patch/kernel/archive/qrb2210-7.1/0001-dt-bindings-mfd-qcom-spmi-pmic-add-compatibles-for-p.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 476224951ffab8c289be6ce7fda11a8afdf4c0c7 Mon Sep 17 00:00:00 2001 From: Alexey Klimov Date: Mon, 9 Feb 2026 14:24:25 +0000 -Subject: [PATCH 05/48] dt-bindings: mfd: qcom,spmi-pmic: add compatibles for +Subject: [PATCH 01/40] dt-bindings: mfd: qcom,spmi-pmic: add compatibles for pm4124-codec Qualcomm Agatti SoC has PM4125 PMIC, which includes audio codec. @@ -21,10 +21,10 @@ Link: https://lore.kernel.org/r/20260209142428.214428-2-srinivas.kandagatla@oss. 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml b/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml -index e5931d18d998..f58a85562c26 100644 +index 644c42b5e2e5..bdd304e9eac1 100644 --- a/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml +++ b/Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml -@@ -145,7 +145,11 @@ patternProperties: +@@ -146,7 +146,11 @@ patternProperties: "^audio-codec@[0-9a-f]+$": type: object @@ -37,3 +37,6 @@ index e5931d18d998..f58a85562c26 100644 "^battery@[0-9a-f]+$": type: object +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0006-arm64-dts-qcom-agatti-add-LPASS-devices.patch b/patch/kernel/archive/qrb2210-7.1/0002-arm64-dts-qcom-agatti-add-LPASS-devices.patch similarity index 96% rename from patch/kernel/qrb2210-edge/0006-arm64-dts-qcom-agatti-add-LPASS-devices.patch rename to patch/kernel/archive/qrb2210-7.1/0002-arm64-dts-qcom-agatti-add-LPASS-devices.patch index 590af850357b..67dacf16c317 100644 --- a/patch/kernel/qrb2210-edge/0006-arm64-dts-qcom-agatti-add-LPASS-devices.patch +++ b/patch/kernel/archive/qrb2210-7.1/0002-arm64-dts-qcom-agatti-add-LPASS-devices.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 6d5b3c6a1c22c80150a5223965f94f67bf00070a Mon Sep 17 00:00:00 2001 From: Alexey Klimov Date: Mon, 9 Feb 2026 14:24:26 +0000 -Subject: [PATCH 06/48] arm64: dts: qcom: agatti: add LPASS devices +Subject: [PATCH 02/40] arm64: dts: qcom: agatti: add LPASS devices The rxmacro, txmacro, vamacro, soundwire nodes, lpass clock controllers are required to support audio playback and @@ -15,10 +15,10 @@ Link: https://lore.kernel.org/r/20260209142428.214428-3-srinivas.kandagatla@oss. 1 file changed, 189 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/agatti.dtsi b/arch/arm64/boot/dts/qcom/agatti.dtsi -index 893cb0689013..00e961482a99 100644 +index 8a7337239b1e..018afba0cfba 100644 --- a/arch/arm64/boot/dts/qcom/agatti.dtsi +++ b/arch/arm64/boot/dts/qcom/agatti.dtsi -@@ -758,6 +758,42 @@ +@@ -758,6 +758,42 @@ data-pins { drive-strength = <8>; }; }; @@ -61,7 +61,7 @@ index 893cb0689013..00e961482a99 100644 }; gcc: clock-controller@1400000 { -@@ -2186,6 +2222,159 @@ +@@ -2186,6 +2222,159 @@ glink-edge { }; }; @@ -221,3 +221,6 @@ index 893cb0689013..00e961482a99 100644 remoteproc_adsp: remoteproc@ab00000 { compatible = "qcom,qcm2290-adsp-pas", "qcom,sm6115-adsp-pas"; reg = <0x0 0x0ab00000 0x0 0x100>; +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0007-arm64-dts-arduino-imola-add-support-for-sound.patch b/patch/kernel/archive/qrb2210-7.1/0003-arm64-dts-arduino-imola-add-support-for-sound.patch similarity index 91% rename from patch/kernel/qrb2210-edge/0007-arm64-dts-arduino-imola-add-support-for-sound.patch rename to patch/kernel/archive/qrb2210-7.1/0003-arm64-dts-arduino-imola-add-support-for-sound.patch index 8eaa5c72d2d2..03ac4e647790 100644 --- a/patch/kernel/qrb2210-edge/0007-arm64-dts-arduino-imola-add-support-for-sound.patch +++ b/patch/kernel/archive/qrb2210-7.1/0003-arm64-dts-arduino-imola-add-support-for-sound.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 446cfef735b9bf231374a0d384f627e464a94bd5 Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Mon, 9 Feb 2026 14:24:27 +0000 -Subject: [PATCH 07/48] arm64: dts: arduino-imola: add support for sound +Subject: [PATCH 03/40] arm64: dts: arduino-imola: add support for sound Add support for sound on Arduino UNO Q board, which includes - Headset playback and record. @@ -14,11 +14,11 @@ Link: https://lore.kernel.org/r/20260209142428.214428-4-srinivas.kandagatla@oss. 1 file changed, 137 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -index 197ab6eb1666..f36f7ff96252 100644 +index bf088fa9807f..25e94825b409 100644 --- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts +++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -@@ -109,6 +109,98 @@ - leds = <&ledr>, <&ledg>, <&ledb>; +@@ -119,6 +119,98 @@ vreg_anx_30: regulator-anx-30 { + regulator-boot-on; }; + sound { @@ -116,7 +116,7 @@ index 197ab6eb1666..f36f7ff96252 100644 /* PM4125 charger out, supplied by VBAT */ vph_pwr: regulator-vph-pwr { compatible = "regulator-fixed"; -@@ -333,6 +425,51 @@ +@@ -421,6 +513,51 @@ mcu@0 { }; }; @@ -166,5 +166,8 @@ index 197ab6eb1666..f36f7ff96252 100644 +}; + &tlmm { - spidev_cs: spidev-cs-state { - pins = "gpio17"; + jmisc_gpio18: jmisc-gpio18-state { + pins = "gpio18"; +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0008-arm64-defconfig-Enable-Agatti-audio-drivers.patch b/patch/kernel/archive/qrb2210-7.1/0004-arm64-defconfig-Enable-Agatti-audio-drivers.patch similarity index 75% rename from patch/kernel/qrb2210-edge/0008-arm64-defconfig-Enable-Agatti-audio-drivers.patch rename to patch/kernel/archive/qrb2210-7.1/0004-arm64-defconfig-Enable-Agatti-audio-drivers.patch index 1e7a3fe8c901..6bd8b9de8338 100644 --- a/patch/kernel/qrb2210-edge/0008-arm64-defconfig-Enable-Agatti-audio-drivers.patch +++ b/patch/kernel/archive/qrb2210-7.1/0004-arm64-defconfig-Enable-Agatti-audio-drivers.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 7cfbe647d291aab12d242a633115ef08d75947eb Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Mon, 9 Feb 2026 14:24:28 +0000 -Subject: [PATCH 08/48] arm64: defconfig: Enable Agatti audio drivers +Subject: [PATCH 04/40] arm64: defconfig: Enable Agatti audio drivers Enable reset controller and pm4125 audio codec driver that are required to enable audio support on Qualcomm Agatti SoC based platforms. @@ -13,22 +13,25 @@ Link: https://lore.kernel.org/r/20260209142428.214428-5-srinivas.kandagatla@oss. 1 file changed, 2 insertions(+) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig -index b67d5b1fc45b..6db35c1605a0 100644 +index 96ce783f24e7..084907764546 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig -@@ -1146,6 +1146,7 @@ CONFIG_SND_SOC_ES8328_I2C=m - CONFIG_SND_SOC_GTM601=m +@@ -1164,6 +1164,7 @@ CONFIG_SND_SOC_GTM601=m + CONFIG_SND_SOC_MAX98090=m CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=m +CONFIG_SND_SOC_PM4125_SDW=m CONFIG_SND_SOC_PCM3168A_I2C=m CONFIG_SND_SOC_RK3308=m CONFIG_SND_SOC_RK817=m -@@ -1550,6 +1551,7 @@ CONFIG_SM_GPUCC_8350=m - CONFIG_SM_GPUCC_8450=m +@@ -1582,6 +1583,7 @@ CONFIG_SM_GPUCC_8450=m CONFIG_SM_GPUCC_8550=m CONFIG_SM_GPUCC_8650=m + CONFIG_SM_GPUCC_8750=m +CONFIG_SM_LPASSCC_6115=m CONFIG_SM_TCSRCC_8550=y CONFIG_SM_TCSRCC_8650=y CONFIG_SM_TCSRCC_8750=m +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0013-ASoC-codecs-pm4125-fix-array-out-of-bounds.patch b/patch/kernel/archive/qrb2210-7.1/0005-ASoC-codecs-pm4125-fix-array-out-of-bounds.patch similarity index 95% rename from patch/kernel/qrb2210-edge/0013-ASoC-codecs-pm4125-fix-array-out-of-bounds.patch rename to patch/kernel/archive/qrb2210-7.1/0005-ASoC-codecs-pm4125-fix-array-out-of-bounds.patch index 61774aa6b9e5..434f88d58de6 100644 --- a/patch/kernel/qrb2210-edge/0013-ASoC-codecs-pm4125-fix-array-out-of-bounds.patch +++ b/patch/kernel/archive/qrb2210-7.1/0005-ASoC-codecs-pm4125-fix-array-out-of-bounds.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5e495c21d88450bfb60757d7d475956638dffcc9 Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Thu, 19 Mar 2026 10:10:45 +0000 -Subject: [PATCH 13/48] ASoC: codecs: pm4125: fix array-out-of-bounds +Subject: [PATCH 05/40] ASoC: codecs: pm4125: fix array-out-of-bounds Soundwire Ports are not fully defined in soundwire driver, which means that drivers trying to use those ports would get port index of zero, @@ -74,3 +74,6 @@ index 1f0a3f5389f1..52594a9608f3 100644 enable = ucontrol->value.integer.value[0]; +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0014-ASoC-qcom-common-setup-fe-dais-before-be-dais.patch b/patch/kernel/archive/qrb2210-7.1/0006-ASoC-qcom-common-setup-fe-dais-before-be-dais.patch similarity index 90% rename from patch/kernel/qrb2210-edge/0014-ASoC-qcom-common-setup-fe-dais-before-be-dais.patch rename to patch/kernel/archive/qrb2210-7.1/0006-ASoC-qcom-common-setup-fe-dais-before-be-dais.patch index 71a692328e25..c6a34e438b81 100644 --- a/patch/kernel/qrb2210-edge/0014-ASoC-qcom-common-setup-fe-dais-before-be-dais.patch +++ b/patch/kernel/archive/qrb2210-7.1/0006-ASoC-qcom-common-setup-fe-dais-before-be-dais.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From a9bb41b053a3ac73fa9dd0cca812bc6406ed800f Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Mon, 16 Mar 2026 13:55:53 +0000 -Subject: [PATCH 14/48] ASoC: qcom: common: setup fe dais before be dais +Subject: [PATCH 06/40] ASoC: qcom: common: setup fe dais before be dais On Elite DSP architecuture q6routing setup depends on some of the pcm dais to be probed to setup the routing. For some reason if the @@ -24,11 +24,11 @@ after. Signed-off-by: Srinivas Kandagatla --- - sound/soc/qcom/common.c | 193 +++++++++++++++++++++++----------------- - 1 file changed, 112 insertions(+), 81 deletions(-) + sound/soc/qcom/common.c | 205 +++++++++++++++++++++++----------------- + 1 file changed, 118 insertions(+), 87 deletions(-) diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c -index 7ee60a58a336..88e5cc3c9b49 100644 +index cf1f3a767cee..3daa1c7a3ebd 100644 --- a/sound/soc/qcom/common.c +++ b/sound/soc/qcom/common.c @@ -1,3 +1,4 @@ @@ -36,7 +36,7 @@ index 7ee60a58a336..88e5cc3c9b49 100644 // SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2018, Linaro Limited. // Copyright (c) 2018, The Linux Foundation. All rights reserved. -@@ -23,16 +24,106 @@ static const struct snd_soc_dapm_widget qcom_jack_snd_widgets[] = { +@@ -23,16 +24,112 @@ static const struct snd_soc_dapm_widget qcom_jack_snd_widgets[] = { SND_SOC_DAPM_SPK("DP7 Jack", NULL), }; @@ -88,6 +88,12 @@ index 7ee60a58a336..88e5cc3c9b49 100644 + + link->id = args.args[0]; + ++ if (link->id >= LPASS_MAX_PORT) { ++ dev_err(dev, "%s: Invalid cpu dai id %d\n", link->name, link->id); ++ ret = -EINVAL; ++ goto err; ++ } ++ + if (platform) { + link->platforms->of_node = of_parse_phandle(platform, + "sound-dai", @@ -146,7 +152,7 @@ index 7ee60a58a336..88e5cc3c9b49 100644 int ret, num_links; ret = snd_soc_of_parse_card_name(card, "model"); -@@ -82,89 +173,36 @@ int qcom_snd_parse_of(struct snd_soc_card *card) +@@ -82,95 +179,36 @@ int qcom_snd_parse_of(struct snd_soc_card *card) card->num_links = num_links; link = card->dai_link; @@ -193,6 +199,12 @@ index 7ee60a58a336..88e5cc3c9b49 100644 - - link->id = args.args[0]; - +- if (link->id >= LPASS_MAX_PORT) { +- dev_err(dev, "%s: Invalid cpu dai id %d\n", link->name, link->id); +- ret = -EINVAL; +- goto err; +- } +- - if (platform) { - link->platforms->of_node = of_parse_phandle(platform, - "sound-dai", @@ -254,7 +266,7 @@ index 7ee60a58a336..88e5cc3c9b49 100644 } if (!card->dapm_widgets) { -@@ -172,13 +210,6 @@ int qcom_snd_parse_of(struct snd_soc_card *card) +@@ -178,13 +216,6 @@ int qcom_snd_parse_of(struct snd_soc_card *card) card->num_dapm_widgets = ARRAY_SIZE(qcom_jack_snd_widgets); } @@ -268,3 +280,6 @@ index 7ee60a58a336..88e5cc3c9b49 100644 return ret; } EXPORT_SYMBOL_GPL(qcom_snd_parse_of); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch b/patch/kernel/archive/qrb2210-7.1/0007-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch similarity index 96% rename from patch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch rename to patch/kernel/archive/qrb2210-7.1/0007-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch index 37f57ef93259..1da2c9b995d2 100644 --- a/patch/kernel/qrb2210-edge/0015-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch +++ b/patch/kernel/archive/qrb2210-7.1/0007-arm64-dts-qcom-imola-add-support-for-media-carrier-b.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 274b86ee23314234749c0cf1bfc90cf71617dfc7 Mon Sep 17 00:00:00 2001 From: Riccardo Mereu Date: Wed, 18 Mar 2026 17:52:38 +0100 -Subject: [PATCH 15/48] arm64: dts: qcom: imola: add support for media carrier +Subject: [PATCH 07/40] arm64: dts: qcom: imola: add support for media carrier board Media Carrier is an expansion board for Arduino UnoQ. @@ -16,7 +16,7 @@ handled in user-space helping user to configure the board. --- arch/arm64/boot/dts/qcom/Makefile | 16 +++ arch/arm64/boot/dts/qcom/agatti.dtsi | 4 + - ...ola.dts => qrb2210-arduino-imola-base.dts} | 29 ++-- + ...ola.dts => qrb2210-arduino-imola-base.dts} | 30 ++-- ...rrier-media-camera-imx219-csi0-2lanes.dtso | 49 +++++++ ...rrier-media-camera-imx219-csi0-4lanes.dtso | 49 +++++++ ...rrier-media-camera-imx219-csi1-2lanes.dtso | 49 +++++++ @@ -25,7 +25,7 @@ handled in user-space helping user to configure the board. ...a-carrier-media-panel-8in_touch_a-dsi.dtso | 58 ++++++++ .../qrb2210-arduino-imola-carrier-media.dtso | 131 ++++++++++++++++++ ...rb2210-arduino-imola-video_sound-usbc.dtso | 61 ++++++++ - 11 files changed, 521 insertions(+), 19 deletions(-) + 11 files changed, 521 insertions(+), 20 deletions(-) rename arch/arm64/boot/dts/qcom/{qrb2210-arduino-imola.dts => qrb2210-arduino-imola-base.dts} (97%) create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-carrier-media-camera-imx219-csi0-2lanes.dtso create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-carrier-media-camera-imx219-csi0-4lanes.dtso @@ -37,10 +37,10 @@ handled in user-space helping user to configure the board. create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-video_sound-usbc.dtso diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile -index f80b5d9cf1e8..d92cbc887a8f 100644 +index 4ba8e7306419..26f243902450 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile -@@ -157,7 +157,23 @@ qcs9100-ride-r3-el2-dtbs := qcs9100-ride-r3.dtb lemans-el2.dtbo +@@ -193,7 +193,23 @@ qcs9100-ride-r3-el2-dtbs := qcs9100-ride-r3.dtb lemans-el2.dtbo dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-el2.dtb dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3-el2.dtb dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb @@ -65,10 +65,10 @@ index f80b5d9cf1e8..d92cbc887a8f 100644 qrb2210-rb1-vision-mezzanine-dtbs := qrb2210-rb1.dtb qrb2210-rb1-vision-mezzanine.dtbo diff --git a/arch/arm64/boot/dts/qcom/agatti.dtsi b/arch/arm64/boot/dts/qcom/agatti.dtsi -index 00e961482a99..ebeb2ff6b526 100644 +index 018afba0cfba..8380a4608eb0 100644 --- a/arch/arm64/boot/dts/qcom/agatti.dtsi +++ b/arch/arm64/boot/dts/qcom/agatti.dtsi -@@ -2464,6 +2464,10 @@ +@@ -2464,6 +2464,10 @@ dai@1 { dai@2 { reg = ; }; @@ -83,11 +83,11 @@ diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boo similarity index 97% rename from arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts rename to arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-base.dts -index f9233d2c55ba..590d8a6951a0 100644 +index 25e94825b409..627f8a4ce24c 100644 --- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts +++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-base.dts -@@ -110,7 +110,7 @@ - leds = <&ledr>, <&ledg>, <&ledb>; +@@ -119,7 +119,7 @@ vreg_anx_30: regulator-anx-30 { + regulator-boot-on; }; - sound { @@ -95,7 +95,7 @@ index f9233d2c55ba..590d8a6951a0 100644 compatible = "qcom,qrb2210-sndcard"; model = "Arduino-Imola-HPH-LOUT"; audio-routing = "IN1_HPHL", "HPHL_OUT", -@@ -141,6 +141,14 @@ +@@ -150,6 +150,14 @@ cpu { }; }; @@ -110,7 +110,7 @@ index f9233d2c55ba..590d8a6951a0 100644 hph-playback-dai-link { link-name = "HPH Playback"; cpu { -@@ -258,6 +266,7 @@ +@@ -257,6 +265,7 @@ anx7625: encoder@58 { analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>; pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>; @@ -118,7 +118,7 @@ index f9233d2c55ba..590d8a6951a0 100644 connector { compatible = "usb-c-connector"; -@@ -289,19 +298,6 @@ +@@ -290,20 +299,6 @@ anx_ss_in: endpoint { }; }; }; @@ -129,6 +129,7 @@ index f9233d2c55ba..590d8a6951a0 100644 - - port@0 { - reg = <0>; +- - anx_dsi0_in: endpoint { - remote-endpoint = <&mdss_dsi0_out>; - data-lanes = <0 1 2 3>; @@ -138,7 +139,7 @@ index f9233d2c55ba..590d8a6951a0 100644 }; }; -@@ -315,11 +311,6 @@ +@@ -317,11 +312,6 @@ &mdss_dsi0 { status = "okay"; }; @@ -693,3 +694,6 @@ index 000000000000..6fb256498cd1 + }; + }; +}; +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0016-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patch b/patch/kernel/archive/qrb2210-7.1/0008-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patch similarity index 70% rename from patch/kernel/qrb2210-edge/0016-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patch rename to patch/kernel/archive/qrb2210-7.1/0008-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patch index 66653496c213..cfbc57bbd6f9 100644 --- a/patch/kernel/qrb2210-edge/0016-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patch +++ b/patch/kernel/archive/qrb2210-7.1/0008-remoteproc-qcom_q6v5_pas-explicitly-list-firmware-fo.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 3f3fe14e94bb425a6da2d57224404fe050d40f86 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 30 Jul 2025 16:17:59 +0200 -Subject: [PATCH 16/48] remoteproc: qcom_q6v5_pas: explicitly list firmware for +Subject: [PATCH 08/40] remoteproc: qcom_q6v5_pas: explicitly list firmware for automatic inclusion in initramfs --- @@ -9,12 +9,15 @@ Subject: [PATCH 16/48] remoteproc: qcom_q6v5_pas: explicitly list firmware for 1 file changed, 2 insertions(+) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c -index 46204da046fa..e414131f5211 100644 +index da27d1d3c9da..f2c1b6be49ed 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c -@@ -1619,3 +1619,5 @@ static struct platform_driver qcom_pas_driver = { +@@ -1620,3 +1620,5 @@ static struct platform_driver qcom_pas_driver = { module_platform_driver(qcom_pas_driver); MODULE_DESCRIPTION("Qualcomm Peripheral Authentication Service remoteproc driver"); MODULE_LICENSE("GPL v2"); + +MODULE_FIRMWARE("qcom/qcm2290/adsp.mbn"); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0017-gpu-drm-msm-add-explicit-firmware-for-a702.patch b/patch/kernel/archive/qrb2210-7.1/0009-gpu-drm-msm-add-explicit-firmware-for-a702.patch similarity index 75% rename from patch/kernel/qrb2210-edge/0017-gpu-drm-msm-add-explicit-firmware-for-a702.patch rename to patch/kernel/archive/qrb2210-7.1/0009-gpu-drm-msm-add-explicit-firmware-for-a702.patch index 4e003db081a4..beb7f58cbd60 100644 --- a/patch/kernel/qrb2210-edge/0017-gpu-drm-msm-add-explicit-firmware-for-a702.patch +++ b/patch/kernel/archive/qrb2210-7.1/0009-gpu-drm-msm-add-explicit-firmware-for-a702.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From de50302c4ac5fc3af532f8a7be0d6ddff0ecf2ae Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 24 Jul 2025 11:52:58 +0200 -Subject: [PATCH 17/48] gpu: drm: msm: add explicit firmware for a702 +Subject: [PATCH 09/40] gpu: drm: msm: add explicit firmware for a702 update-initramfs uses this information to add the correct firmware to initramfs. Needed for early kms and plymouth to work properly @@ -10,13 +10,16 @@ Needed for early kms and plymouth to work properly 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c -index 38561f26837e..865e04344607 100644 +index 550ff3a9b82e..08074c59f577 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_catalog.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_catalog.c -@@ -1967,3 +1967,6 @@ static inline __always_unused void __build_asserts(void) +@@ -2206,3 +2206,6 @@ static inline __always_unused void __build_asserts(void) BUILD_BUG_ON(a690_protect.count > a690_protect.count_max); BUILD_BUG_ON(a730_protect.count > a730_protect.count_max); } + +MODULE_FIRMWARE("qcom/a702_sqe.fw"); +MODULE_FIRMWARE("qcom/qcm2290/a702_zap.mbn"); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0018-ASoC-qcom-sm8250-set-capture-channels-correctly.patch b/patch/kernel/archive/qrb2210-7.1/0010-ASoC-qcom-sm8250-set-capture-channels-correctly.patch similarity index 90% rename from patch/kernel/qrb2210-edge/0018-ASoC-qcom-sm8250-set-capture-channels-correctly.patch rename to patch/kernel/archive/qrb2210-7.1/0010-ASoC-qcom-sm8250-set-capture-channels-correctly.patch index d54114127fdb..7577f7070068 100644 --- a/patch/kernel/qrb2210-edge/0018-ASoC-qcom-sm8250-set-capture-channels-correctly.patch +++ b/patch/kernel/archive/qrb2210-7.1/0010-ASoC-qcom-sm8250-set-capture-channels-correctly.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From e2f5efd6804a32c14384f3b7b3bb445d09f123f2 Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Mon, 25 Aug 2025 23:08:33 +0100 -Subject: [PATCH 18/48] ASoC: qcom: sm8250: set capture channels correctly +Subject: [PATCH 10/40] ASoC: qcom: sm8250: set capture channels correctly Signed-off-by: Srinivas Kandagatla --- @@ -39,3 +39,6 @@ index f193d0ba63d0..385759496311 100644 return 0; } +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0019-ASoC-qcom-sm8250-set-i2s-format-needs.patch b/patch/kernel/archive/qrb2210-7.1/0011-ASoC-qcom-sm8250-set-i2s-format-needs.patch similarity index 89% rename from patch/kernel/qrb2210-edge/0019-ASoC-qcom-sm8250-set-i2s-format-needs.patch rename to patch/kernel/archive/qrb2210-7.1/0011-ASoC-qcom-sm8250-set-i2s-format-needs.patch index 3f215ee650f8..665c1ef8f549 100644 --- a/patch/kernel/qrb2210-edge/0019-ASoC-qcom-sm8250-set-i2s-format-needs.patch +++ b/patch/kernel/archive/qrb2210-7.1/0011-ASoC-qcom-sm8250-set-i2s-format-needs.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d991fd2346cccb550ec03abda05b740c43f594d9 Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Fri, 12 Sep 2025 18:18:31 +0100 -Subject: [PATCH 19/48] ASoC: qcom: sm8250: set i2s format needs +Subject: [PATCH 11/40] ASoC: qcom: sm8250: set i2s format needs Signed-off-by: Srinivas Kandagatla --- @@ -36,3 +36,6 @@ index 385759496311..8f6e1b03ad00 100644 default: break; } +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0020-ASoC-qcom-q6dsp-add-32-bit-support-for-i2s-backend-d.patch b/patch/kernel/archive/qrb2210-7.1/0012-ASoC-qcom-q6dsp-add-32-bit-support-for-i2s-backend-d.patch similarity index 84% rename from patch/kernel/qrb2210-edge/0020-ASoC-qcom-q6dsp-add-32-bit-support-for-i2s-backend-d.patch rename to patch/kernel/archive/qrb2210-7.1/0012-ASoC-qcom-q6dsp-add-32-bit-support-for-i2s-backend-d.patch index 260f6b067325..fb6721a3b0e2 100644 --- a/patch/kernel/qrb2210-edge/0020-ASoC-qcom-q6dsp-add-32-bit-support-for-i2s-backend-d.patch +++ b/patch/kernel/archive/qrb2210-7.1/0012-ASoC-qcom-q6dsp-add-32-bit-support-for-i2s-backend-d.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 9f045a24de93a566ad1e117c98ba880325d51c8c Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Fri, 12 Sep 2025 18:19:05 +0100 -Subject: [PATCH 20/48] ASoC: qcom: q6dsp: add 32 bit support for i2s backend +Subject: [PATCH 12/40] ASoC: qcom: q6dsp: add 32 bit support for i2s backend dais Signed-off-by: Srinivas Kandagatla @@ -11,10 +11,10 @@ Signed-off-by: Srinivas Kandagatla 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c -index 4eed54b071a5..b509bd8f6752 100644 +index e5cd82f77b55..507009dea60a 100644 --- a/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c +++ b/sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c -@@ -353,7 +353,7 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { +@@ -389,7 +389,7 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { .rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE | @@ -23,7 +23,7 @@ index 4eed54b071a5..b509bd8f6752 100644 .channels_min = 1, .channels_max = 8, .rate_min = 8000, -@@ -380,7 +380,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { +@@ -416,7 +416,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { .stream_name = "Secondary MI2S Playback", .rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, @@ -33,7 +33,7 @@ index 4eed54b071a5..b509bd8f6752 100644 .channels_min = 1, .channels_max = 8, .rate_min = 8000, -@@ -407,7 +408,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { +@@ -443,7 +444,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { .stream_name = "Tertiary MI2S Playback", .rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, @@ -43,7 +43,7 @@ index 4eed54b071a5..b509bd8f6752 100644 .channels_min = 1, .channels_max = 8, .rate_min = 8000, -@@ -434,7 +436,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { +@@ -470,7 +472,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { .stream_name = "Quaternary MI2S Playback", .rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, @@ -53,7 +53,7 @@ index 4eed54b071a5..b509bd8f6752 100644 .channels_min = 1, .channels_max = 8, .rate_min = 8000, -@@ -462,7 +465,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { +@@ -498,7 +501,8 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { .rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000, @@ -77,3 +77,6 @@ index 7386226046fa..bbaa47303456 100644 default: break; } +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0021-anx7625-allow-32-bit-format.patch b/patch/kernel/archive/qrb2210-7.1/0013-anx7625-allow-32-bit-format.patch similarity index 75% rename from patch/kernel/qrb2210-edge/0021-anx7625-allow-32-bit-format.patch rename to patch/kernel/archive/qrb2210-7.1/0013-anx7625-allow-32-bit-format.patch index f68e80256ebf..22c7c7272119 100644 --- a/patch/kernel/qrb2210-edge/0021-anx7625-allow-32-bit-format.patch +++ b/patch/kernel/archive/qrb2210-7.1/0013-anx7625-allow-32-bit-format.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f02588cd6cdc0d5012192d513e0295d5915e0cc7 Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Fri, 12 Sep 2025 18:20:20 +0100 -Subject: [PATCH 21/48] anx7625: allow 32 bit format +Subject: [PATCH 13/40] anx7625: allow 32 bit format The chip requires 32 bit frame, with 16-24 bits of valid data left aligned TODO: check that the output format is correct @@ -12,10 +12,10 @@ Signed-off-by: Srinivas Kandagatla 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c -index 763519ef0d38..0d4102250ec6 100644 +index 54b02242d6db..8c2046c156d5 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c -@@ -2061,6 +2061,7 @@ static int anx7625_audio_hw_params(struct device *dev, void *data, +@@ -2044,6 +2044,7 @@ static int anx7625_audio_hw_params(struct device *dev, void *data, wl = AUDIO_W_LEN_20_20MAX; break; case 24: @@ -23,3 +23,6 @@ index 763519ef0d38..0d4102250ec6 100644 wl = AUDIO_W_LEN_24_24MAX; break; default: +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0022-drm-anx7625-set-I2S-input-stream-as-right-justified.patch b/patch/kernel/archive/qrb2210-7.1/0014-drm-anx7625-set-I2S-input-stream-as-right-justified.patch similarity index 76% rename from patch/kernel/qrb2210-edge/0022-drm-anx7625-set-I2S-input-stream-as-right-justified.patch rename to patch/kernel/archive/qrb2210-7.1/0014-drm-anx7625-set-I2S-input-stream-as-right-justified.patch index 1cca6af1acb0..a2349198d024 100644 --- a/patch/kernel/qrb2210-edge/0022-drm-anx7625-set-I2S-input-stream-as-right-justified.patch +++ b/patch/kernel/archive/qrb2210-7.1/0014-drm-anx7625-set-I2S-input-stream-as-right-justified.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 770258f75f3a9fb37b4efd4256d8f2d8332aa061 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 14 Apr 2026 18:19:54 +0200 -Subject: [PATCH 22/48] drm: anx7625: set I2S input stream as right justified +Subject: [PATCH 14/40] drm: anx7625: set I2S input stream as right justified Limitiations of Qualcomm DSP make it very hard to left justify (chip's default) --- @@ -9,10 +9,10 @@ Limitiations of Qualcomm DSP make it very hard to left justify (chip's default) 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c -index 0d4102250ec6..9bff228917fc 100644 +index 8c2046c156d5..9c1095e065f7 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c -@@ -2101,6 +2101,11 @@ static int anx7625_audio_hw_params(struct device *dev, void *data, +@@ -2084,6 +2084,11 @@ static int anx7625_audio_hw_params(struct device *dev, void *data, ret |= anx7625_write_and(ctx, ctx->i2c.tx_p2_client, AUDIO_CHANNEL_STATUS_6, ~AUDIO_LAYOUT); @@ -24,3 +24,6 @@ index 0d4102250ec6..9bff228917fc 100644 /* FS */ switch (params->sample_rate) { case 32000: +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0023-ASoC-qcom-qdsp6-fix-microphone-stream-re-enable.patch b/patch/kernel/archive/qrb2210-7.1/0015-ASoC-qcom-qdsp6-fix-microphone-stream-re-enable.patch similarity index 70% rename from patch/kernel/qrb2210-edge/0023-ASoC-qcom-qdsp6-fix-microphone-stream-re-enable.patch rename to patch/kernel/archive/qrb2210-7.1/0015-ASoC-qcom-qdsp6-fix-microphone-stream-re-enable.patch index 17d4082cf59c..502e51062b15 100644 --- a/patch/kernel/qrb2210-edge/0023-ASoC-qcom-qdsp6-fix-microphone-stream-re-enable.patch +++ b/patch/kernel/archive/qrb2210-7.1/0015-ASoC-qcom-qdsp6-fix-microphone-stream-re-enable.patch @@ -1,17 +1,17 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 0ae54313407276e6b7a5544dc7f7755705cd8c4d Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 16 Apr 2026 14:53:29 +0200 -Subject: [PATCH 23/48] ASoC: qcom: qdsp6: fix microphone stream re-enable +Subject: [PATCH 15/40] ASoC: qcom: qdsp6: fix microphone stream re-enable --- sound/soc/qcom/qdsp6/q6asm-dai.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6asm-dai.c b/sound/soc/qcom/qdsp6/q6asm-dai.c -index 9e3d176f50c2..bd7ab7c9a5c7 100644 +index 4f09fdd40905..d6f2e80375da 100644 --- a/sound/soc/qcom/qdsp6/q6asm-dai.c +++ b/sound/soc/qcom/qdsp6/q6asm-dai.c -@@ -224,15 +224,19 @@ static int q6asm_dai_prepare(struct snd_soc_component *component, +@@ -222,8 +222,12 @@ static int q6asm_dai_prepare(struct snd_soc_component *component, } prtd->pcm_count = snd_pcm_lib_period_bytes(substream); @@ -24,9 +24,10 @@ index 9e3d176f50c2..bd7ab7c9a5c7 100644 + */ + if (prtd->state != Q6ASM_STREAM_IDLE) { /* clear the previous setup if any */ - q6asm_cmd(prtd->audio_client, prtd->stream_id, CMD_CLOSE); - q6asm_unmap_memory_regions(substream->stream, - prtd->audio_client); + ret = q6asm_cmd(prtd->audio_client, prtd->stream_id, CMD_CLOSE); + if (ret < 0) { +@@ -240,7 +244,7 @@ static int q6asm_dai_prepare(struct snd_soc_component *component, + q6routing_stream_close(soc_prtd->dai_link->id, substream->stream); - prtd->state = Q6ASM_STREAM_STOPPED; @@ -34,7 +35,7 @@ index 9e3d176f50c2..bd7ab7c9a5c7 100644 } ret = q6asm_map_memory_regions(substream->stream, prtd->audio_client, -@@ -257,7 +261,7 @@ static int q6asm_dai_prepare(struct snd_soc_component *component, +@@ -265,7 +269,7 @@ static int q6asm_dai_prepare(struct snd_soc_component *component, } if (ret < 0) { @@ -43,3 +44,6 @@ index 9e3d176f50c2..bd7ab7c9a5c7 100644 goto open_err; } +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0024-ASoC-codecs-pm4125-harden-swr-discovery-path.patch b/patch/kernel/archive/qrb2210-7.1/0016-ASoC-codecs-pm4125-harden-swr-discovery-path.patch similarity index 96% rename from patch/kernel/qrb2210-edge/0024-ASoC-codecs-pm4125-harden-swr-discovery-path.patch rename to patch/kernel/archive/qrb2210-7.1/0016-ASoC-codecs-pm4125-harden-swr-discovery-path.patch index 5a3a5d4aee65..5ce54a6e19b8 100644 --- a/patch/kernel/qrb2210-edge/0024-ASoC-codecs-pm4125-harden-swr-discovery-path.patch +++ b/patch/kernel/archive/qrb2210-7.1/0016-ASoC-codecs-pm4125-harden-swr-discovery-path.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 9389301ad3ab819614c2bf265d5e0e05348bcc8e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 1 Apr 2026 09:49:15 +0200 -Subject: [PATCH 24/48] ASoC: codecs: pm4125: harden swr discovery path +Subject: [PATCH 16/40] ASoC: codecs: pm4125: harden swr discovery path Completes ASoC: codecs: pm4125: fix array-out-of-bounds by adding extra checks. This avoids a race condition crash on @@ -129,3 +129,6 @@ index 52594a9608f3..1ce7c87eb37b 100644 portidx = sdw_priv->ch_info[ch_idx].port_num; if (!portidx) /* Invalid port index */ +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0025-dt-bindings-display-panel-himax-hx83102-describe-Wav.patch b/patch/kernel/archive/qrb2210-7.1/0017-dt-bindings-display-panel-himax-hx83102-describe-Wav.patch similarity index 83% rename from patch/kernel/qrb2210-edge/0025-dt-bindings-display-panel-himax-hx83102-describe-Wav.patch rename to patch/kernel/archive/qrb2210-7.1/0017-dt-bindings-display-panel-himax-hx83102-describe-Wav.patch index f7a8ce5e0d69..c9de2187d596 100644 --- a/patch/kernel/qrb2210-edge/0025-dt-bindings-display-panel-himax-hx83102-describe-Wav.patch +++ b/patch/kernel/archive/qrb2210-7.1/0017-dt-bindings-display-panel-himax-hx83102-describe-Wav.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5c82e745a98cec7bf10b150bb94fafea9da399cb Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:24 +0300 -Subject: [PATCH 25/48] dt-bindings: display/panel: himax,hx83102: describe +Subject: [PATCH 17/40] dt-bindings: display/panel: himax,hx83102: describe Waveshare panel Describe Waveshare 12.3-DSI-TOUCH-A panel which allegedly uses HX83102 @@ -14,10 +14,10 @@ Signed-off-by: Dmitry Baryshkov 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx83102.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx83102.yaml -index e4c1aa5deab9..5fb05119c5f9 100644 +index 66404b425af3..7667428bf9a8 100644 --- a/Documentation/devicetree/bindings/display/panel/himax,hx83102.yaml +++ b/Documentation/devicetree/bindings/display/panel/himax,hx83102.yaml -@@ -28,6 +28,8 @@ properties: +@@ -30,6 +30,8 @@ properties: - starry,2082109qfh040022-50e # STARRY himax83102-j02 10.51" WUXGA TFT LCD panel - starry,himax83102-j02 @@ -26,3 +26,6 @@ index e4c1aa5deab9..5fb05119c5f9 100644 - const: himax,hx83102 reg: +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0026-dt-bindings-display-panel-himax-hx8394-describe-Wave.patch b/patch/kernel/archive/qrb2210-7.1/0018-dt-bindings-display-panel-himax-hx8394-describe-Wave.patch similarity index 85% rename from patch/kernel/qrb2210-edge/0026-dt-bindings-display-panel-himax-hx8394-describe-Wave.patch rename to patch/kernel/archive/qrb2210-7.1/0018-dt-bindings-display-panel-himax-hx8394-describe-Wave.patch index 8d91164bc020..dead367c4d17 100644 --- a/patch/kernel/qrb2210-edge/0026-dt-bindings-display-panel-himax-hx8394-describe-Wave.patch +++ b/patch/kernel/archive/qrb2210-7.1/0018-dt-bindings-display-panel-himax-hx8394-describe-Wave.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 455be819e0e4257076d7eedd9069dc654f5184aa Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:25 +0300 -Subject: [PATCH 26/48] dt-bindings: display/panel: himax,hx8394: describe +Subject: [PATCH 18/40] dt-bindings: display/panel: himax,hx8394: describe Waveshare panel Describe Waveshare 5" and 5" DSI panels which use HX9365-E as a panel @@ -14,7 +14,7 @@ Signed-off-by: Dmitry Baryshkov 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml -index 5725a587e35c..629a395b51d3 100644 +index 84e840e0224f..83c343b02835 100644 --- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml +++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml @@ -23,6 +23,8 @@ properties: @@ -26,3 +26,6 @@ index 5725a587e35c..629a395b51d3 100644 - const: himax,hx8394 - items: - enum: +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0027-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patch b/patch/kernel/archive/qrb2210-7.1/0019-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patch similarity index 74% rename from patch/kernel/qrb2210-edge/0027-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patch rename to patch/kernel/archive/qrb2210-7.1/0019-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patch index d95517fb6a44..d04dd4901cb1 100644 --- a/patch/kernel/qrb2210-edge/0027-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patch +++ b/patch/kernel/archive/qrb2210-7.1/0019-dt-bindings-display-panel-jadard-jd9365da-h3-describ.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 954d343cc4627b09d0d279511755da04ae220b5e Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:26 +0300 -Subject: [PATCH 27/48] dt-bindings: display/panel: jadard,jd9365da-h3: +Subject: [PATCH 19/40] dt-bindings: display/panel: jadard,jd9365da-h3: describe Waveshare panel Describe Waveshare DSI panels which use JD9365 as a panel controller. @@ -9,24 +9,26 @@ Describe Waveshare DSI panels which use JD9365 as a panel controller. Acked-by: Krzysztof Kozlowski Signed-off-by: Dmitry Baryshkov --- - .../bindings/display/panel/jadard,jd9365da-h3.yaml | 7 +++++++ - 1 file changed, 7 insertions(+) + .../bindings/display/panel/jadard,jd9365da-h3.yaml | 6 ++++++ + 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/jadard,jd9365da-h3.yaml b/Documentation/devicetree/bindings/display/panel/jadard,jd9365da-h3.yaml -index 5802fb3c9ffe..def7405b9034 100644 +index e39efb44ed42..4eae802de9fd 100644 --- a/Documentation/devicetree/bindings/display/panel/jadard,jd9365da-h3.yaml +++ b/Documentation/devicetree/bindings/display/panel/jadard,jd9365da-h3.yaml -@@ -23,6 +23,13 @@ properties: - - melfas,lmfbx101117480 +@@ -24,6 +24,12 @@ properties: - radxa,display-10hd-ad001 - radxa,display-8hd-ad002 + - taiguanck,xti05101-01a + - waveshare,3.4-dsi-touch-c + - waveshare,4.0-dsi-touch-c + - waveshare,8.0-dsi-touch-a + - waveshare,9.0-dsi-touch-b + - waveshare,10.1-dsi-touch-a + - waveshare,10.1-dsi-touch-b -+ - const: jadard,jd9365da-h3 reg: +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0028-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patch b/patch/kernel/archive/qrb2210-7.1/0020-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patch similarity index 90% rename from patch/kernel/qrb2210-edge/0028-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patch rename to patch/kernel/archive/qrb2210-7.1/0020-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patch index 6964819fda93..6e6a825ac1db 100644 --- a/patch/kernel/qrb2210-edge/0028-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patch +++ b/patch/kernel/archive/qrb2210-7.1/0020-dt-bindings-display-panel-ilitek-ili9881c-describe-W.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 9522e0bfcf4a6f88879b120f9472d9232dd7c35c Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:27 +0300 -Subject: [PATCH 28/48] dt-bindings: display/panel: ilitek,ili9881c: describe +Subject: [PATCH 20/40] dt-bindings: display/panel: ilitek,ili9881c: describe Waveshare panel Describe Waveshare 7" DSI panel which uses ILI9881 as a panel @@ -34,3 +34,6 @@ index d979701a00a8..42e35986fbf6 100644 reset-gpios: true rotation: true +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0029-dt-bindings-dipslay-panel-describe-panels-using-Foca.patch b/patch/kernel/archive/qrb2210-7.1/0021-dt-bindings-dipslay-panel-describe-panels-using-Foca.patch similarity index 94% rename from patch/kernel/qrb2210-edge/0029-dt-bindings-dipslay-panel-describe-panels-using-Foca.patch rename to patch/kernel/archive/qrb2210-7.1/0021-dt-bindings-dipslay-panel-describe-panels-using-Foca.patch index 6777d93bd4dc..24de6145c291 100644 --- a/patch/kernel/qrb2210-edge/0029-dt-bindings-dipslay-panel-describe-panels-using-Foca.patch +++ b/patch/kernel/archive/qrb2210-7.1/0021-dt-bindings-dipslay-panel-describe-panels-using-Foca.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f70853285751edbb3fddc0b98370b96509416836 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:28 +0300 -Subject: [PATCH 29/48] dt-bindings: dipslay/panel: describe panels using +Subject: [PATCH 21/40] dt-bindings: dipslay/panel: describe panels using Focaltech OTA7290B Add schema for the panels using Focaltech OTA7290B controller. For now @@ -90,3 +90,6 @@ index 000000000000..db6775f4d75c + +... + +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0030-drm-of-add-helper-to-count-data-lanes-on-a-remote-en.patch b/patch/kernel/archive/qrb2210-7.1/0022-drm-of-add-helper-to-count-data-lanes-on-a-remote-en.patch similarity index 95% rename from patch/kernel/qrb2210-edge/0030-drm-of-add-helper-to-count-data-lanes-on-a-remote-en.patch rename to patch/kernel/archive/qrb2210-7.1/0022-drm-of-add-helper-to-count-data-lanes-on-a-remote-en.patch index b419239615f8..02fe4374fdba 100644 --- a/patch/kernel/qrb2210-edge/0030-drm-of-add-helper-to-count-data-lanes-on-a-remote-en.patch +++ b/patch/kernel/archive/qrb2210-7.1/0022-drm-of-add-helper-to-count-data-lanes-on-a-remote-en.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 8be3c2905687e476e5afdf91279128bccbf0ff5d Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:29 +0300 -Subject: [PATCH 30/48] drm/of: add helper to count data-lanes on a remote +Subject: [PATCH 22/40] drm/of: add helper to count data-lanes on a remote endpoint If the DSI panel supports versatile lanes configuration, its driver @@ -93,3 +93,6 @@ index f2f2bf82eff9..7bcc0ccfe0f4 100644 #endif #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DRM_MIPI_DSI) +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0031-drm-panel-himax-hx83102-support-Waveshare-12.3-DSI-p.patch b/patch/kernel/archive/qrb2210-7.1/0023-drm-panel-himax-hx83102-support-Waveshare-12.3-DSI-p.patch similarity index 91% rename from patch/kernel/qrb2210-edge/0031-drm-panel-himax-hx83102-support-Waveshare-12.3-DSI-p.patch rename to patch/kernel/archive/qrb2210-7.1/0023-drm-panel-himax-hx83102-support-Waveshare-12.3-DSI-p.patch index 8ba6e4a5e2e5..896ad14c06a8 100644 --- a/patch/kernel/qrb2210-edge/0031-drm-panel-himax-hx83102-support-Waveshare-12.3-DSI-p.patch +++ b/patch/kernel/archive/qrb2210-7.1/0023-drm-panel-himax-hx83102-support-Waveshare-12.3-DSI-p.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 5586236d5fa24822725c87f315f2ea9905458fa0 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:30 +0300 -Subject: [PATCH 31/48] drm/panel: himax-hx83102: support Waveshare 12.3" DSI +Subject: [PATCH 23/40] drm/panel: himax-hx83102: support Waveshare 12.3" DSI panel Add support for the Waveshare 12.3" DSI TOUCH-A panel. According to the @@ -11,14 +11,14 @@ descriptions override driver-wide defaults. Signed-off-by: Dmitry Baryshkov Reviewed-by: Neil Armstrong --- - drivers/gpu/drm/panel/panel-himax-hx83102.c | 146 +++++++++++++++++++- - 1 file changed, 144 insertions(+), 2 deletions(-) + drivers/gpu/drm/panel/panel-himax-hx83102.c | 144 +++++++++++++++++++- + 1 file changed, 142 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-himax-hx83102.c b/drivers/gpu/drm/panel/panel-himax-hx83102.c -index 1d3bb5dca559..320663ec6b4f 100644 +index a5e5c9ea7a73..811095e8f5b9 100644 --- a/drivers/gpu/drm/panel/panel-himax-hx83102.c +++ b/drivers/gpu/drm/panel/panel-himax-hx83102.c -@@ -28,11 +28,14 @@ +@@ -29,11 +29,14 @@ #define HX83102_UNKNOWN_B8 0xb8 #define HX83102_SETEXTC 0xb9 #define HX83102_SETMIPI 0xba @@ -33,17 +33,15 @@ index 1d3bb5dca559..320663ec6b4f 100644 #define HX83102_SETTCON 0xc7 #define HX83102_SETRAMDMY 0xc8 #define HX83102_SETPWM 0xc9 -@@ -76,6 +79,9 @@ struct hx83102_panel_desc { - unsigned int height_mm; +@@ -78,6 +81,7 @@ struct hx83102_panel_desc { } size; -+ bool has_backlight; + bool has_backlight; + unsigned long mode_flags; -+ + int (*init)(struct hx83102 *ctx); }; - -@@ -701,6 +707,111 @@ static int starry_2082109qfh040022_50e_init(struct hx83102 *ctx) +@@ -765,6 +769,111 @@ static int holitech_htf065h045_init(struct hx83102 *ctx) return dsi_ctx.accum_err; } @@ -155,8 +153,8 @@ index 1d3bb5dca559..320663ec6b4f 100644 static const struct drm_display_mode starry_mode = { .clock = 162680, .hdisplay = 1200, -@@ -833,6 +944,30 @@ static const struct hx83102_panel_desc starry_2082109qfh040022_50e_desc = { - .init = starry_2082109qfh040022_50e_init, +@@ -920,6 +1029,30 @@ static const struct hx83102_panel_desc holitech_htf065h045_desc = { + .init = holitech_htf065h045_init, }; +static const struct drm_display_mode waveshare_12_3_a_mode = { @@ -186,7 +184,7 @@ index 1d3bb5dca559..320663ec6b4f 100644 static int hx83102_enable(struct drm_panel *panel) { msleep(130); -@@ -1020,8 +1155,12 @@ static int hx83102_probe(struct mipi_dsi_device *dsi) +@@ -1170,8 +1303,12 @@ static int hx83102_probe(struct mipi_dsi_device *dsi) desc = of_device_get_match_data(&dsi->dev); dsi->lanes = 4; dsi->format = MIPI_DSI_FMT_RGB888; @@ -201,9 +199,9 @@ index 1d3bb5dca559..320663ec6b4f 100644 ctx->desc = desc; ctx->dsi = dsi; ret = hx83102_panel_add(ctx); -@@ -1069,6 +1208,9 @@ static const struct of_device_id hx83102_of_match[] = { - { .compatible = "starry,himax83102-j02", - .data = &starry_desc +@@ -1222,6 +1359,9 @@ static const struct of_device_id hx83102_of_match[] = { + { .compatible = "holitech,htf065h045", + .data = &holitech_htf065h045_desc }, + { .compatible = "waveshare,12.3-dsi-touch-a", + .data = &waveshare_12_3_inch_a_desc @@ -211,3 +209,6 @@ index 1d3bb5dca559..320663ec6b4f 100644 { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, hx83102_of_match); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0032-drm-panel-himax-hx8394-set-prepare_prev_first.patch b/patch/kernel/archive/qrb2210-7.1/0024-drm-panel-himax-hx8394-set-prepare_prev_first.patch similarity index 88% rename from patch/kernel/qrb2210-edge/0032-drm-panel-himax-hx8394-set-prepare_prev_first.patch rename to patch/kernel/archive/qrb2210-7.1/0024-drm-panel-himax-hx8394-set-prepare_prev_first.patch index 4a05089ef889..abf10f29ce25 100644 --- a/patch/kernel/qrb2210-edge/0032-drm-panel-himax-hx8394-set-prepare_prev_first.patch +++ b/patch/kernel/archive/qrb2210-7.1/0024-drm-panel-himax-hx8394-set-prepare_prev_first.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 3d7133960c3f2c4fefda623a95b3045666fec461 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:31 +0300 -Subject: [PATCH 32/48] drm/panel: himax-hx8394: set prepare_prev_first +Subject: [PATCH 24/40] drm/panel: himax-hx8394: set prepare_prev_first Sending DSI commands from the prepare() callback requires DSI link to be up at that point. For DSI hosts is guaranteed only if the panel driver @@ -28,3 +28,6 @@ index c4d3e09a228d..d64f3521eb15 100644 drm_panel_add(&ctx->panel); ret = mipi_dsi_attach(dsi); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0033-drm-panel-himax-hx8394-simplify-hx8394_enable.patch b/patch/kernel/archive/qrb2210-7.1/0025-drm-panel-himax-hx8394-simplify-hx8394_enable.patch similarity index 94% rename from patch/kernel/qrb2210-edge/0033-drm-panel-himax-hx8394-simplify-hx8394_enable.patch rename to patch/kernel/archive/qrb2210-7.1/0025-drm-panel-himax-hx8394-simplify-hx8394_enable.patch index eec6acbd8c64..e421101d10e2 100644 --- a/patch/kernel/qrb2210-edge/0033-drm-panel-himax-hx8394-simplify-hx8394_enable.patch +++ b/patch/kernel/archive/qrb2210-7.1/0025-drm-panel-himax-hx8394-simplify-hx8394_enable.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 6f98f8e3d615d7c2f242bf607f031152f6274ec6 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:32 +0300 -Subject: [PATCH 33/48] drm/panel: himax-hx8394: simplify hx8394_enable() +Subject: [PATCH 25/40] drm/panel: himax-hx8394: simplify hx8394_enable() Simplify hx8394_enable() function by using hx8394_disable() instead of open-coding it and mipi_dsi_msleep() instead of manual checks. @@ -79,3 +79,6 @@ index d64f3521eb15..1f23c50b6661 100644 return dsi_ctx.accum_err; } +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0034-drm-panel-himax-hx8394-support-Waveshare-DSI-panels.patch b/patch/kernel/archive/qrb2210-7.1/0026-drm-panel-himax-hx8394-support-Waveshare-DSI-panels.patch similarity index 98% rename from patch/kernel/qrb2210-edge/0034-drm-panel-himax-hx8394-support-Waveshare-DSI-panels.patch rename to patch/kernel/archive/qrb2210-7.1/0026-drm-panel-himax-hx8394-support-Waveshare-DSI-panels.patch index fb0fba188f4e..7b642f3675e5 100644 --- a/patch/kernel/qrb2210-edge/0034-drm-panel-himax-hx8394-support-Waveshare-DSI-panels.patch +++ b/patch/kernel/archive/qrb2210-7.1/0026-drm-panel-himax-hx8394-support-Waveshare-DSI-panels.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 2348a50b56468372b8ecad0d18d5de526cb5cc74 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:33 +0300 -Subject: [PATCH 34/48] drm/panel: himax-hx8394: support Waveshare DSI panels +Subject: [PATCH 26/40] drm/panel: himax-hx8394: support Waveshare DSI panels Enable support for Waveshare 5.0" and 5.5" DSI TOUCH-A panels. @@ -281,3 +281,6 @@ index 1f23c50b6661..bf80354567df 100644 { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, hx8394_of_match); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0035-drm-panel-jadard-jd9365da-h3-use-drm_connector_helpe.patch b/patch/kernel/archive/qrb2210-7.1/0027-drm-panel-jadard-jd9365da-h3-use-drm_connector_helpe.patch similarity index 89% rename from patch/kernel/qrb2210-edge/0035-drm-panel-jadard-jd9365da-h3-use-drm_connector_helpe.patch rename to patch/kernel/archive/qrb2210-7.1/0027-drm-panel-jadard-jd9365da-h3-use-drm_connector_helpe.patch index 879868feb748..556719765fde 100644 --- a/patch/kernel/qrb2210-edge/0035-drm-panel-jadard-jd9365da-h3-use-drm_connector_helpe.patch +++ b/patch/kernel/archive/qrb2210-7.1/0027-drm-panel-jadard-jd9365da-h3-use-drm_connector_helpe.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 8e3b324cf2f218092d571ba5af2fdf5e1254dae0 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:34 +0300 -Subject: [PATCH 35/48] drm/panel: jadard-jd9365da-h3: use +Subject: [PATCH 27/40] drm/panel: jadard-jd9365da-h3: use drm_connector_helper_get_modes_fixed Use existing helper instead of manually coding it. @@ -14,10 +14,10 @@ Signed-off-by: Dmitry Baryshkov 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig -index 307152ad7759..4495fc097ffa 100644 +index d592f4f4b939..9854d8b76c3e 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig -@@ -309,6 +309,7 @@ config DRM_PANEL_JADARD_JD9365DA_H3 +@@ -338,6 +338,7 @@ config DRM_PANEL_JADARD_JD9365DA_H3 depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE @@ -26,7 +26,7 @@ index 307152ad7759..4495fc097ffa 100644 Say Y here if you want to enable support for Jadard JD9365DA-H3 WXGA MIPI DSI panel. The panel support TFT dot matrix LCD with diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -index 5386a06fcd08..51ef99e8ecea 100644 +index c33c611e03c0..1884ad2404cd 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c @@ -12,6 +12,7 @@ @@ -63,3 +63,6 @@ index 5386a06fcd08..51ef99e8ecea 100644 } static enum drm_panel_orientation jadard_panel_get_orientation(struct drm_panel *panel) +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0036-drm-panel-jadard-jd9365da-h3-support-variable-DSI-co.patch b/patch/kernel/archive/qrb2210-7.1/0028-drm-panel-jadard-jd9365da-h3-support-variable-DSI-co.patch similarity index 95% rename from patch/kernel/qrb2210-edge/0036-drm-panel-jadard-jd9365da-h3-support-variable-DSI-co.patch rename to patch/kernel/archive/qrb2210-7.1/0028-drm-panel-jadard-jd9365da-h3-support-variable-DSI-co.patch index 39e9f0f33227..fa3361a480bf 100644 --- a/patch/kernel/qrb2210-edge/0036-drm-panel-jadard-jd9365da-h3-support-variable-DSI-co.patch +++ b/patch/kernel/archive/qrb2210-7.1/0028-drm-panel-jadard-jd9365da-h3-support-variable-DSI-co.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 47ed61b6d759bb4af4022d4c494ee9e0aaef5baf Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:35 +0300 -Subject: [PATCH 36/48] drm/panel: jadard-jd9365da-h3: support variable DSI +Subject: [PATCH 28/40] drm/panel: jadard-jd9365da-h3: support variable DSI configuration Several panels support attachment either using 4 DSI lanes or just 2. In @@ -18,7 +18,7 @@ Signed-off-by: Dmitry Baryshkov 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -index 51ef99e8ecea..a2d80bb3805c 100644 +index 1884ad2404cd..5ef17f710939 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c @@ -10,6 +10,7 @@ @@ -108,7 +108,7 @@ index 51ef99e8ecea..a2d80bb3805c 100644 .clock = (640 + 260 + 220 + 260) * (480 + 10 + 2 + 16) * 60 / 1000, .hdisplay = 640, -@@ -1374,7 +1382,26 @@ static int jadard_dsi_probe(struct mipi_dsi_device *dsi) +@@ -1614,7 +1622,26 @@ static int jadard_dsi_probe(struct mipi_dsi_device *dsi) dsi->format = desc->format; dsi->lanes = desc->lanes; @@ -136,3 +136,6 @@ index 51ef99e8ecea..a2d80bb3805c 100644 jadard->reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); if (IS_ERR(jadard->reset)) return dev_err_probe(&dsi->dev, PTR_ERR(jadard->reset), +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0037-drm-panel-jadard-jd9365da-h3-set-prepare_prev_first.patch b/patch/kernel/archive/qrb2210-7.1/0029-drm-panel-jadard-jd9365da-h3-set-prepare_prev_first.patch similarity index 81% rename from patch/kernel/qrb2210-edge/0037-drm-panel-jadard-jd9365da-h3-set-prepare_prev_first.patch rename to patch/kernel/archive/qrb2210-7.1/0029-drm-panel-jadard-jd9365da-h3-set-prepare_prev_first.patch index 184864fdcf61..fb5a00b9d701 100644 --- a/patch/kernel/qrb2210-edge/0037-drm-panel-jadard-jd9365da-h3-set-prepare_prev_first.patch +++ b/patch/kernel/archive/qrb2210-7.1/0029-drm-panel-jadard-jd9365da-h3-set-prepare_prev_first.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From d5853b702000e626bf8eb4ed2f4ee395a088a172 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:36 +0300 -Subject: [PATCH 37/48] drm/panel: jadard-jd9365da-h3: set prepare_prev_first +Subject: [PATCH 29/40] drm/panel: jadard-jd9365da-h3: set prepare_prev_first Sending DSI commands from the prepare() callback requires DSI link to be up at that point. For DSI hosts is guaranteed only if the panel driver @@ -16,10 +16,10 @@ Signed-off-by: Dmitry Baryshkov 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -index a2d80bb3805c..6618980ffc50 100644 +index 5ef17f710939..d9ef6c374f8f 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -@@ -1425,6 +1425,8 @@ static int jadard_dsi_probe(struct mipi_dsi_device *dsi) +@@ -1665,6 +1665,8 @@ static int jadard_dsi_probe(struct mipi_dsi_device *dsi) if (ret) return ret; @@ -28,3 +28,6 @@ index a2d80bb3805c..6618980ffc50 100644 drm_panel_add(&jadard->panel); mipi_dsi_set_drvdata(dsi, jadard); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0038-drm-panel-jadard-jd9365da-h3-support-Waveshare-round.patch b/patch/kernel/archive/qrb2210-7.1/0030-drm-panel-jadard-jd9365da-h3-support-Waveshare-round.patch similarity index 98% rename from patch/kernel/qrb2210-edge/0038-drm-panel-jadard-jd9365da-h3-support-Waveshare-round.patch rename to patch/kernel/archive/qrb2210-7.1/0030-drm-panel-jadard-jd9365da-h3-support-Waveshare-round.patch index 2b5e4c933626..bd7f4f71ca3e 100644 --- a/patch/kernel/qrb2210-edge/0038-drm-panel-jadard-jd9365da-h3-support-Waveshare-round.patch +++ b/patch/kernel/archive/qrb2210-7.1/0030-drm-panel-jadard-jd9365da-h3-support-Waveshare-round.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 0abba6398b2d5ab70ee865d9f1d038eb782b103c Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:37 +0300 -Subject: [PATCH 38/48] drm/panel: jadard-jd9365da-h3: support Waveshare round +Subject: [PATCH 30/40] drm/panel: jadard-jd9365da-h3: support Waveshare round DSI panels Add configuration for Waveshare 3.4" and 4.0" round DSI panels using @@ -15,11 +15,11 @@ Reviewed-by: Neil Armstrong 1 file changed, 476 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -index 6618980ffc50..f0f5f58df579 100644 +index d9ef6c374f8f..276395a21230 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -@@ -1359,6 +1359,474 @@ static const struct jadard_panel_desc anbernic_rgds_display_desc = { - MIPI_DSI_CLOCK_NON_CONTINUOUS | MIPI_DSI_MODE_LPM, +@@ -1599,6 +1599,474 @@ static const struct jadard_panel_desc taiguan_xti05101_01a_desc = { + .enter_sleep_to_reset_down_delay_ms = 100, }; +static int waveshare_3_4_c_init(struct jadard *jadard) @@ -493,9 +493,9 @@ index 6618980ffc50..f0f5f58df579 100644 static int jadard_dsi_probe(struct mipi_dsi_device *dsi) { struct device *dev = &dsi->dev; -@@ -1477,6 +1945,14 @@ static const struct of_device_id jadard_of_match[] = { - .compatible = "radxa,display-8hd-ad002", - .data = &radxa_display_8hd_ad002_desc +@@ -1721,6 +2189,14 @@ static const struct of_device_id jadard_of_match[] = { + .compatible = "taiguanck,xti05101-01a", + .data = &taiguan_xti05101_01a_desc }, + { + .compatible = "waveshare,3.4-dsi-touch-c", @@ -508,3 +508,6 @@ index 6618980ffc50..f0f5f58df579 100644 { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, jadard_of_match); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0039-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patch b/patch/kernel/archive/qrb2210-7.1/0031-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patch similarity index 98% rename from patch/kernel/qrb2210-edge/0039-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patch rename to patch/kernel/archive/qrb2210-7.1/0031-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patch index f89063c24177..b997bc58369d 100644 --- a/patch/kernel/qrb2210-edge/0039-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patch +++ b/patch/kernel/archive/qrb2210-7.1/0031-drm-panel-jadard-jd9365da-h3-support-Waveshare-WXGA-.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 0e56982026355b56f2085ca2ebab6fb7e1d36d8d Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:38 +0300 -Subject: [PATCH 39/48] drm/panel: jadard-jd9365da-h3: support Waveshare WXGA +Subject: [PATCH 31/40] drm/panel: jadard-jd9365da-h3: support Waveshare WXGA DSI panels Add configuration for several Waveshare 8.0" and 10.1" WXGA DSI panels @@ -15,10 +15,10 @@ Reviewed-by: Neil Armstrong 1 file changed, 568 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -index f0f5f58df579..a750758b330c 100644 +index 276395a21230..664a220f5245 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -@@ -1827,6 +1827,566 @@ static const struct jadard_panel_desc waveshare_4_0_inch_c_desc = { +@@ -2067,6 +2067,566 @@ static const struct jadard_panel_desc waveshare_4_0_inch_c_desc = { MIPI_DSI_MODE_LPM | MIPI_DSI_CLOCK_NON_CONTINUOUS, }; @@ -585,7 +585,7 @@ index f0f5f58df579..a750758b330c 100644 static int jadard_dsi_probe(struct mipi_dsi_device *dsi) { struct device *dev = &dsi->dev; -@@ -1953,6 +2513,14 @@ static const struct of_device_id jadard_of_match[] = { +@@ -2197,6 +2757,14 @@ static const struct of_device_id jadard_of_match[] = { .compatible = "waveshare,4.0-dsi-touch-c", .data = &waveshare_4_0_inch_c_desc }, @@ -600,3 +600,6 @@ index f0f5f58df579..a750758b330c 100644 { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, jadard_of_match); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0040-drm-panel-jadard-jd9365da-h3-support-Waveshare-720p-.patch b/patch/kernel/archive/qrb2210-7.1/0032-drm-panel-jadard-jd9365da-h3-support-Waveshare-720p-.patch similarity index 97% rename from patch/kernel/qrb2210-edge/0040-drm-panel-jadard-jd9365da-h3-support-Waveshare-720p-.patch rename to patch/kernel/archive/qrb2210-7.1/0032-drm-panel-jadard-jd9365da-h3-support-Waveshare-720p-.patch index 62d3cd371f27..2771627b6b91 100644 --- a/patch/kernel/qrb2210-edge/0040-drm-panel-jadard-jd9365da-h3-support-Waveshare-720p-.patch +++ b/patch/kernel/archive/qrb2210-7.1/0032-drm-panel-jadard-jd9365da-h3-support-Waveshare-720p-.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From f3f815f872a0ce4837da2342a5120ca835d57cbb Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:39 +0300 -Subject: [PATCH 40/48] drm/panel: jadard-jd9365da-h3: support Waveshare 720p +Subject: [PATCH 32/40] drm/panel: jadard-jd9365da-h3: support Waveshare 720p DSI panels Add configuration for Waveshare 9.0" and 10.1" 720p DSI panels using @@ -15,7 +15,7 @@ Reviewed-by: Neil Armstrong 1 file changed, 312 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c -index a750758b330c..f61c70a9a9ff 100644 +index 664a220f5245..d5609e397f3d 100644 --- a/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c +++ b/drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c @@ -21,6 +21,8 @@ @@ -27,7 +27,7 @@ index a750758b330c..f61c70a9a9ff 100644 struct jadard; struct jadard_panel_desc { -@@ -2043,6 +2045,49 @@ static const struct jadard_panel_desc waveshare_8_0_inch_a_desc = { +@@ -2283,6 +2285,49 @@ static const struct jadard_panel_desc waveshare_8_0_inch_a_desc = { MIPI_DSI_MODE_LPM | MIPI_DSI_CLOCK_NON_CONTINUOUS, }; @@ -77,7 +77,7 @@ index a750758b330c..f61c70a9a9ff 100644 static const struct drm_display_mode waveshare_10_1_a_mode = { .clock = (800 + 40 + 20 + 20) * (1280 + 20 + 20 + 4) * 60 / 1000, -@@ -2387,6 +2432,265 @@ static const struct jadard_panel_desc waveshare_10_1_inch_a_desc = { +@@ -2627,6 +2672,265 @@ static const struct jadard_panel_desc waveshare_10_1_inch_a_desc = { MIPI_DSI_MODE_LPM | MIPI_DSI_CLOCK_NON_CONTINUOUS, }; @@ -343,7 +343,7 @@ index a750758b330c..f61c70a9a9ff 100644 static int jadard_dsi_probe(struct mipi_dsi_device *dsi) { struct device *dev = &dsi->dev; -@@ -2517,10 +2821,18 @@ static const struct of_device_id jadard_of_match[] = { +@@ -2761,10 +3065,18 @@ static const struct of_device_id jadard_of_match[] = { .compatible = "waveshare,8.0-dsi-touch-a", .data = &waveshare_8_0_inch_a_desc }, @@ -362,3 +362,6 @@ index a750758b330c..f61c70a9a9ff 100644 { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, jadard_of_match); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0041-drm-panel-ilitek-ili9881c-support-Waveshare-7.0-DSI-.patch b/patch/kernel/archive/qrb2210-7.1/0033-drm-panel-ilitek-ili9881c-support-Waveshare-7.0-DSI-.patch similarity index 98% rename from patch/kernel/qrb2210-edge/0041-drm-panel-ilitek-ili9881c-support-Waveshare-7.0-DSI-.patch rename to patch/kernel/archive/qrb2210-7.1/0033-drm-panel-ilitek-ili9881c-support-Waveshare-7.0-DSI-.patch index 63969cd0d4eb..33f78b465886 100644 --- a/patch/kernel/qrb2210-edge/0041-drm-panel-ilitek-ili9881c-support-Waveshare-7.0-DSI-.patch +++ b/patch/kernel/archive/qrb2210-7.1/0033-drm-panel-ilitek-ili9881c-support-Waveshare-7.0-DSI-.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 3883827af87dc37c998463c14c40d5c3378ee38a Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:40 +0300 -Subject: [PATCH 41/48] drm/panel: ilitek-ili9881c: support Waveshare 7.0" DSI +Subject: [PATCH 33/40] drm/panel: ilitek-ili9881c: support Waveshare 7.0" DSI panel Enable support for Waveshare 7.0" DSI TOUCH-A panel. It requires @@ -331,3 +331,6 @@ index 947b47841b01..0652cdb57d11 100644 { .compatible = "ampire,am8001280g", .data = &am8001280g_desc }, { .compatible = "raspberrypi,dsi-5inch", &rpi_5inch_desc }, { .compatible = "raspberrypi,dsi-7inch", &rpi_7inch_desc }, +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0042-drm-panel-add-devm_drm_panel_add-helper.patch b/patch/kernel/archive/qrb2210-7.1/0034-drm-panel-add-devm_drm_panel_add-helper.patch similarity index 93% rename from patch/kernel/qrb2210-edge/0042-drm-panel-add-devm_drm_panel_add-helper.patch rename to patch/kernel/archive/qrb2210-7.1/0034-drm-panel-add-devm_drm_panel_add-helper.patch index f5decf4aab56..8d7fd3a00dfc 100644 --- a/patch/kernel/qrb2210-edge/0042-drm-panel-add-devm_drm_panel_add-helper.patch +++ b/patch/kernel/archive/qrb2210-7.1/0034-drm-panel-add-devm_drm_panel_add-helper.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 7b8b1a45763b038aa2b7d701bfe2542b5f79fccf Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:41 +0300 -Subject: [PATCH 42/48] drm/panel: add devm_drm_panel_add() helper +Subject: [PATCH 34/40] drm/panel: add devm_drm_panel_add() helper Add devm_drm_panel_add(), devres-managed version of drm_panel_add(). It's not uncommon for the panel drivers to use devres functions for most @@ -60,3 +60,6 @@ index 2407bfa60236..1fb9148dd095 100644 void drm_panel_prepare(struct drm_panel *panel); void drm_panel_unprepare(struct drm_panel *panel); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0043-drm-panel-add-driver-for-Waveshare-8.8-DSI-TOUCH-A-p.patch b/patch/kernel/archive/qrb2210-7.1/0035-drm-panel-add-driver-for-Waveshare-8.8-DSI-TOUCH-A-p.patch similarity index 97% rename from patch/kernel/qrb2210-edge/0043-drm-panel-add-driver-for-Waveshare-8.8-DSI-TOUCH-A-p.patch rename to patch/kernel/archive/qrb2210-7.1/0035-drm-panel-add-driver-for-Waveshare-8.8-DSI-TOUCH-A-p.patch index 1b3697aff3b5..f3280c4e8a63 100644 --- a/patch/kernel/qrb2210-edge/0043-drm-panel-add-driver-for-Waveshare-8.8-DSI-TOUCH-A-p.patch +++ b/patch/kernel/archive/qrb2210-7.1/0035-drm-panel-add-driver-for-Waveshare-8.8-DSI-TOUCH-A-p.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From cbb6244f651717782b2b6fd3f7af5019a56508d3 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:42 +0300 -Subject: [PATCH 43/48] drm/panel: add driver for Waveshare 8.8" DSI TOUCH-A +Subject: [PATCH 35/40] drm/panel: add driver for Waveshare 8.8" DSI TOUCH-A panel Add driver for the panel found on Waveshare 8.8" DSI TOUCH-A kit. It @@ -17,7 +17,7 @@ Signed-off-by: Dmitry Baryshkov create mode 100644 drivers/gpu/drm/panel/panel-focaltech-ota7290b.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig -index 4495fc097ffa..394dd8e64289 100644 +index 9854d8b76c3e..3e287e9aa297 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -144,6 +144,18 @@ config DRM_PANEL_FEIYANG_FY07024DI26A30D @@ -40,7 +40,7 @@ index 4495fc097ffa..394dd8e64289 100644 tristate "Generic DSI command mode panels" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile -index aeffaa95666d..46f359b5035b 100644 +index a4291dc3905b..0d694acbfbb6 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -17,6 +17,7 @@ obj-$(CONFIG_DRM_PANEL_EBBG_FT8719) += panel-ebbg-ft8719.o @@ -283,3 +283,6 @@ index 000000000000..8c135697a0fd + +MODULE_DESCRIPTION("Panel driver for Focaltech OTA7290B panels"); +MODULE_LICENSE("GPL"); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0044-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patch b/patch/kernel/archive/qrb2210-7.1/0036-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patch similarity index 96% rename from patch/kernel/qrb2210-edge/0044-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patch rename to patch/kernel/archive/qrb2210-7.1/0036-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patch index 66bf79815a01..9720f9ee2d3b 100644 --- a/patch/kernel/qrb2210-edge/0044-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patch +++ b/patch/kernel/archive/qrb2210-7.1/0036-dt-bindings-gpio-describe-Waveshare-GPIO-controller.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 184ad8c9f7a287dc34aefc322fefabecc842a1a3 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:43 +0300 -Subject: [PATCH 44/48] dt-bindings: gpio: describe Waveshare GPIO controller +Subject: [PATCH 36/40] dt-bindings: gpio: describe Waveshare GPIO controller The Waveshare DSI TOUCH family of panels has separate on-board GPIO controller, which controls power supplies to the panel and the touch @@ -126,3 +126,6 @@ index 000000000000..410348fcda25 + }; + }; +... +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0045-gpio-add-GPIO-controller-found-on-Waveshare-DSI-TOUC.patch b/patch/kernel/archive/qrb2210-7.1/0037-gpio-add-GPIO-controller-found-on-Waveshare-DSI-TOUC.patch similarity index 95% rename from patch/kernel/qrb2210-edge/0045-gpio-add-GPIO-controller-found-on-Waveshare-DSI-TOUC.patch rename to patch/kernel/archive/qrb2210-7.1/0037-gpio-add-GPIO-controller-found-on-Waveshare-DSI-TOUC.patch index 95765cc6ae92..d736508669f7 100644 --- a/patch/kernel/qrb2210-edge/0045-gpio-add-GPIO-controller-found-on-Waveshare-DSI-TOUC.patch +++ b/patch/kernel/archive/qrb2210-7.1/0037-gpio-add-GPIO-controller-found-on-Waveshare-DSI-TOUC.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 206c4c42f304b4740cf16776e0d04c88a9573d26 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Mon, 13 Apr 2026 17:05:44 +0300 -Subject: [PATCH 45/48] gpio: add GPIO controller found on Waveshare DSI TOUCH +Subject: [PATCH 37/40] gpio: add GPIO controller found on Waveshare DSI TOUCH panels The Waveshare DSI TOUCH family of panels has separate on-board GPIO @@ -20,10 +20,10 @@ Signed-off-by: Dmitry Baryshkov create mode 100644 drivers/gpio/gpio-waveshare-dsi.c diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig -index b45fb799e36c..e24ad7e32034 100644 +index 020e51e30317..8d8e3ac7cbc8 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -804,6 +804,16 @@ config GPIO_VISCONTI +@@ -805,6 +805,16 @@ config GPIO_VISCONTI help Say yes here to support GPIO on Tohisba Visconti. @@ -39,12 +39,12 @@ index b45fb799e36c..e24ad7e32034 100644 + config GPIO_WCD934X tristate "Qualcomm Technologies Inc WCD9340/WCD9341 GPIO controller driver" - depends on MFD_WCD934X && OF_GPIO + depends on MFD_WCD934X diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile -index c05f7d795c43..94f16f0f28d9 100644 +index b267598b517d..2ea47d9d3dca 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile -@@ -206,6 +206,7 @@ obj-$(CONFIG_GPIO_VIRTUSER) += gpio-virtuser.o +@@ -205,6 +205,7 @@ obj-$(CONFIG_GPIO_VIRTUSER) += gpio-virtuser.o obj-$(CONFIG_GPIO_VIRTIO) += gpio-virtio.o obj-$(CONFIG_GPIO_VISCONTI) += gpio-visconti.o obj-$(CONFIG_GPIO_VX855) += gpio-vx855.o @@ -266,3 +266,6 @@ index 000000000000..38f52351bb58 + +MODULE_DESCRIPTION("GPIO controller driver for Waveshare DSI touch panels"); +MODULE_LICENSE("GPL"); +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0046-dt-bindings-display-waveshare-dsp2dpi-describe-DSI2L.patch b/patch/kernel/archive/qrb2210-7.1/0038-dt-bindings-display-waveshare-dsp2dpi-describe-DSI2L.patch similarity index 90% rename from patch/kernel/qrb2210-edge/0046-dt-bindings-display-waveshare-dsp2dpi-describe-DSI2L.patch rename to patch/kernel/archive/qrb2210-7.1/0038-dt-bindings-display-waveshare-dsp2dpi-describe-DSI2L.patch index 28c70bdd188b..94ec136ef279 100644 --- a/patch/kernel/qrb2210-edge/0046-dt-bindings-display-waveshare-dsp2dpi-describe-DSI2L.patch +++ b/patch/kernel/archive/qrb2210-7.1/0038-dt-bindings-display-waveshare-dsp2dpi-describe-DSI2L.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 0574e709990160ab6f1c130f61c15e513d137981 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 12 Apr 2026 20:32:24 +0300 -Subject: [PATCH 46/48] dt-bindings: display: waveshare,dsp2dpi: describe +Subject: [PATCH 38/40] dt-bindings: display: waveshare,dsp2dpi: describe DSI2LVDS setup Several the Waveshare DSI LCD panel kits use DSI2LVDS ICN6202 bridge @@ -22,7 +22,7 @@ Reviewed-by: Krzysztof Kozlowski 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/display/bridge/waveshare,dsi2dpi.yaml b/Documentation/devicetree/bindings/display/bridge/waveshare,dsi2dpi.yaml -index 5e8498c8303d..604b8697110d 100644 +index 3820dd7e11af..4d34a92192bf 100644 --- a/Documentation/devicetree/bindings/display/bridge/waveshare,dsi2dpi.yaml +++ b/Documentation/devicetree/bindings/display/bridge/waveshare,dsi2dpi.yaml @@ -10,11 +10,14 @@ maintainers: @@ -42,7 +42,7 @@ index 5e8498c8303d..604b8697110d 100644 reg: maxItems: 1 -@@ -50,7 +53,7 @@ properties: +@@ -53,7 +56,7 @@ properties: port@1: $ref: /schemas/graph.yaml#/properties/port description: @@ -51,3 +51,6 @@ index 5e8498c8303d..604b8697110d 100644 required: - port@0 +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0047-drm-bridge-waveshare-dsi-support-DSI-LCD-kits-with-L.patch b/patch/kernel/archive/qrb2210-7.1/0039-drm-bridge-waveshare-dsi-support-DSI-LCD-kits-with-L.patch similarity index 81% rename from patch/kernel/qrb2210-edge/0047-drm-bridge-waveshare-dsi-support-DSI-LCD-kits-with-L.patch rename to patch/kernel/archive/qrb2210-7.1/0039-drm-bridge-waveshare-dsi-support-DSI-LCD-kits-with-L.patch index e161d3dc8fd2..919c0bec27f6 100644 --- a/patch/kernel/qrb2210-edge/0047-drm-bridge-waveshare-dsi-support-DSI-LCD-kits-with-L.patch +++ b/patch/kernel/archive/qrb2210-7.1/0039-drm-bridge-waveshare-dsi-support-DSI-LCD-kits-with-L.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 6f40b45af6a143e649a7bbd2d76895da0fba4689 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 12 Apr 2026 20:32:25 +0300 -Subject: [PATCH 47/48] drm/bridge: waveshare-dsi: support DSI LCD kits with +Subject: [PATCH 39/40] drm/bridge: waveshare-dsi: support DSI LCD kits with LVDS panels Several Waveshare DSI LCD kits use LVDS panels and the ICN6202 DSI2LVDS @@ -16,10 +16,10 @@ Reviewed-by: Neil Armstrong 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/waveshare-dsi.c b/drivers/gpu/drm/bridge/waveshare-dsi.c -index 43f4e7412d72..9df286175399 100644 +index 32d40414adb9..ded57f298d64 100644 --- a/drivers/gpu/drm/bridge/waveshare-dsi.c +++ b/drivers/gpu/drm/bridge/waveshare-dsi.c -@@ -175,7 +175,7 @@ static int ws_bridge_probe(struct i2c_client *i2c) +@@ -177,7 +177,7 @@ static int ws_bridge_probe(struct i2c_client *i2c) regmap_write(ws->reg_map, 0xc2, 0x01); regmap_write(ws->reg_map, 0xac, 0x01); @@ -28,7 +28,7 @@ index 43f4e7412d72..9df286175399 100644 ws->bridge.of_node = dev->of_node; devm_drm_bridge_add(dev, &ws->bridge); -@@ -183,7 +183,8 @@ static int ws_bridge_probe(struct i2c_client *i2c) +@@ -185,7 +185,8 @@ static int ws_bridge_probe(struct i2c_client *i2c) } static const struct of_device_id ws_bridge_of_ids[] = { @@ -38,3 +38,6 @@ index 43f4e7412d72..9df286175399 100644 { } }; +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0048-arch-arm64-qcom-imola-Align-panel-DTBO.patch b/patch/kernel/archive/qrb2210-7.1/0040-arch-arm64-qcom-imola-Align-panel-DTBO.patch similarity index 92% rename from patch/kernel/qrb2210-edge/0048-arch-arm64-qcom-imola-Align-panel-DTBO.patch rename to patch/kernel/archive/qrb2210-7.1/0040-arch-arm64-qcom-imola-Align-panel-DTBO.patch index c198db31fbee..f70a0cda98e3 100644 --- a/patch/kernel/qrb2210-edge/0048-arch-arm64-qcom-imola-Align-panel-DTBO.patch +++ b/patch/kernel/archive/qrb2210-7.1/0040-arch-arm64-qcom-imola-Align-panel-DTBO.patch @@ -1,7 +1,7 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From 87775f78c321034d37ff87753ad96839b6a33b03 Mon Sep 17 00:00:00 2001 From: Riccardo Mereu Date: Thu, 16 Apr 2026 16:46:17 +0200 -Subject: [PATCH 48/48] arch: arm64: qcom: imola: Align panel DTBO +Subject: [PATCH 40/40] arch: arm64: qcom: imola: Align panel DTBO Moving to downstream matching DTBO to the upstream one. @@ -64,7 +64,7 @@ index ce07422373dd..bab2bbd4535c 100644 }; }; -@@ -37,11 +60,11 @@ +@@ -37,11 +60,11 @@ &mdss_dsi0 { dsi_panel: dsi_panel@0 { reg = <0>; @@ -81,7 +81,7 @@ index ce07422373dd..bab2bbd4535c 100644 port { panel_in: endpoint { -@@ -49,7 +72,6 @@ +@@ -49,7 +72,6 @@ panel_in: endpoint { }; }; }; @@ -89,3 +89,6 @@ index ce07422373dd..bab2bbd4535c 100644 }; &mdss_dsi0_out { +-- +2.47.3 + diff --git a/patch/kernel/qrb2210-edge/0001-dt-bindings-drm-bridge-anx7625-describe-Type-C-conne.patch b/patch/kernel/qrb2210-edge/0001-dt-bindings-drm-bridge-anx7625-describe-Type-C-conne.patch deleted file mode 100644 index 5e2f1186b134..000000000000 --- a/patch/kernel/qrb2210-edge/0001-dt-bindings-drm-bridge-anx7625-describe-Type-C-conne.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -Date: Wed, 21 Jan 2026 12:15:45 +0200 -Subject: [PATCH 01/48] dt-bindings: drm/bridge: anx7625: describe Type-C - connector - -ANX7625 can be used to mux converted video stream with the USB signals -on a Type-C connector. Describe the optional connector subnode, make it -exclusive with the AUX bus and port@1 as it is impossible to have both -eDP panel and USB-C connector. - -Signed-off-by: Dmitry Baryshkov -Reviewed-by: Rob Herring (Arm) -Link: https://lore.kernel.org/r/20260121-anx7625-typec-v2-1-d14f31256a17@oss.qualcomm.com ---- - .../display/bridge/analogix,anx7625.yaml | 98 ++++++++++++++++++- - 1 file changed, 97 insertions(+), 1 deletion(-) - -diff --git a/Documentation/devicetree/bindings/display/bridge/analogix,anx7625.yaml b/Documentation/devicetree/bindings/display/bridge/analogix,anx7625.yaml -index a1ed1004651b..6ad466952c02 100644 ---- a/Documentation/devicetree/bindings/display/bridge/analogix,anx7625.yaml -+++ b/Documentation/devicetree/bindings/display/bridge/analogix,anx7625.yaml -@@ -85,6 +85,11 @@ properties: - aux-bus: - $ref: /schemas/display/dp-aux-bus.yaml# - -+ connector: -+ type: object -+ $ref: /schemas/connector/usb-connector.yaml# -+ unevaluatedProperties: false -+ - ports: - $ref: /schemas/graph.yaml#/properties/ports - -@@ -117,7 +122,6 @@ properties: - - required: - - port@0 -- - port@1 - - required: - - compatible -@@ -127,6 +131,28 @@ required: - - vdd33-supply - - ports - -+allOf: -+ - if: -+ required: -+ - aux-bus -+ - connector -+ then: -+ false -+ -+ - if: -+ required: -+ - connector -+ then: -+ properties: -+ ports: -+ properties: -+ port@1: false -+ else: -+ properties: -+ ports: -+ required: -+ - port@1 -+ - additionalProperties: false - - examples: -@@ -185,3 +211,73 @@ examples: - }; - }; - }; -+ - | -+ #include -+ -+ i2c { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ encoder@58 { -+ compatible = "analogix,anx7625"; -+ reg = <0x58>; -+ enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>; -+ reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>; -+ vdd10-supply = <&pp1000_mipibrdg>; -+ vdd18-supply = <&pp1800_mipibrdg>; -+ vdd33-supply = <&pp3300_mipibrdg>; -+ analogix,audio-enable; -+ analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>; -+ analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>; -+ -+ connector { -+ compatible = "usb-c-connector"; -+ power-role = "dual"; -+ data-role = "dual"; -+ vbus-supply = <&vbus_reg>; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ -+ endpoint { -+ remote-endpoint = <&usb_hs>; -+ }; -+ }; -+ -+ port@1 { -+ reg = <1>; -+ -+ endpoint { -+ remote-endpoint = <&usb_ss>; -+ }; -+ }; -+ -+ port@2 { -+ reg = <2>; -+ -+ endpoint { -+ remote-endpoint = <&usb_sbu>; -+ }; -+ }; -+ }; -+ }; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ endpoint { -+ remote-endpoint = <&mipi_dsi>; -+ bus-type = <7>; -+ data-lanes = <0 1 2 3>; -+ }; -+ }; -+ }; -+ }; -+ }; diff --git a/patch/kernel/qrb2210-edge/0002-drm-bridge-anx7625-implement-minimal-Type-C-support.patch b/patch/kernel/qrb2210-edge/0002-drm-bridge-anx7625-implement-minimal-Type-C-support.patch deleted file mode 100644 index 7a8e37b73924..000000000000 --- a/patch/kernel/qrb2210-edge/0002-drm-bridge-anx7625-implement-minimal-Type-C-support.patch +++ /dev/null @@ -1,334 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -Date: Wed, 21 Jan 2026 12:15:46 +0200 -Subject: [PATCH 02/48] drm: bridge: anx7625: implement minimal Type-C support - -ANX7625 can be used as a USB-C controller, handling USB and DP data -streams. Provide minimal Type-C support necessary for ANX7625 to -register the Type-C port device and properly respond to data / power -role events from the Type-C partner. - -While ANX7625 provides TCPCI interface, using it would circumvent the -on-chip running firmware. Analogix recommended using the higher-level -interface instead of TCPCI. - -Reviewed-by: Xin Ji -Reviewed-by: Heikki Krogerus -Signed-off-by: Dmitry Baryshkov -Link: https://lore.kernel.org/r/20260121-anx7625-typec-v2-2-d14f31256a17@oss.qualcomm.com ---- - drivers/gpu/drm/bridge/analogix/Kconfig | 1 + - drivers/gpu/drm/bridge/analogix/anx7625.c | 155 ++++++++++++++++++++-- - drivers/gpu/drm/bridge/analogix/anx7625.h | 22 ++- - 3 files changed, 168 insertions(+), 10 deletions(-) - -diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig b/drivers/gpu/drm/bridge/analogix/Kconfig -index 4846b2e9be7c..f3448b0631fe 100644 ---- a/drivers/gpu/drm/bridge/analogix/Kconfig -+++ b/drivers/gpu/drm/bridge/analogix/Kconfig -@@ -34,6 +34,7 @@ config DRM_ANALOGIX_ANX7625 - tristate "Analogix Anx7625 MIPI to DP interface support" - depends on DRM - depends on OF -+ depends on TYPEC || !TYPEC - select DRM_DISPLAY_DP_HELPER - select DRM_DISPLAY_HDCP_HELPER - select DRM_DISPLAY_HELPER -diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c -index 4e49e4f28d55..8dc6e3b16968 100644 ---- a/drivers/gpu/drm/bridge/analogix/anx7625.c -+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c -@@ -3,6 +3,7 @@ - * Copyright(c) 2020, Analogix Semiconductor. All rights reserved. - * - */ -+#include - #include - #include - #include -@@ -15,6 +16,9 @@ - #include - #include - #include -+#include -+#include -+#include - #include - - #include -@@ -1325,7 +1329,7 @@ static int anx7625_read_hpd_gpio_config_status(struct anx7625_data *ctx) - static void anx7625_disable_pd_protocol(struct anx7625_data *ctx) - { - struct device *dev = ctx->dev; -- int ret, val; -+ int ret; - - /* Reset main ocm */ - ret = anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, 0x88, 0x40); -@@ -1339,6 +1343,11 @@ static void anx7625_disable_pd_protocol(struct anx7625_data *ctx) - DRM_DEV_DEBUG_DRIVER(dev, "disable PD feature fail.\n"); - else - DRM_DEV_DEBUG_DRIVER(dev, "disable PD feature succeeded.\n"); -+} -+ -+static void anx7625_configure_hpd(struct anx7625_data *ctx) -+{ -+ int val; - - /* - * Make sure the HPD GPIO already be configured after OCM release before -@@ -1369,7 +1378,9 @@ static int anx7625_ocm_loading_check(struct anx7625_data *ctx) - if ((ret & FLASH_LOAD_STA_CHK) != FLASH_LOAD_STA_CHK) - return -ENODEV; - -- anx7625_disable_pd_protocol(ctx); -+ if (!ctx->typec_port) -+ anx7625_disable_pd_protocol(ctx); -+ anx7625_configure_hpd(ctx); - - DRM_DEV_DEBUG_DRIVER(dev, "Firmware ver %02x%02x,", - anx7625_reg_read(ctx, -@@ -1472,6 +1483,107 @@ static void anx7625_start_dp_work(struct anx7625_data *ctx) - DRM_DEV_DEBUG_DRIVER(dev, "Secure OCM version=%02x\n", ret); - } - -+#if IS_REACHABLE(CONFIG_TYPEC) -+static void anx7625_typec_set_orientation(struct anx7625_data *ctx) -+{ -+ u32 val = anx7625_reg_read(ctx, ctx->i2c.rx_p0_client, SYSTEM_STSTUS); -+ -+ if (val & (CC1_RP | CC1_RD)) -+ typec_set_orientation(ctx->typec_port, TYPEC_ORIENTATION_NORMAL); -+ else if (val & (CC2_RP | CC2_RD)) -+ typec_set_orientation(ctx->typec_port, TYPEC_ORIENTATION_REVERSE); -+ else -+ typec_set_orientation(ctx->typec_port, TYPEC_ORIENTATION_NONE); -+} -+ -+static void anx7625_typec_set_status(struct anx7625_data *ctx, -+ unsigned int intr_status, -+ unsigned int intr_vector) -+{ -+ if (intr_vector & CC_STATUS) -+ anx7625_typec_set_orientation(ctx); -+ if (intr_vector & DATA_ROLE_STATUS) { -+ enum typec_data_role data_role = (intr_status & DATA_ROLE_STATUS) ? -+ TYPEC_HOST : TYPEC_DEVICE; -+ usb_role_switch_set_role(ctx->role_sw, -+ (intr_status & DATA_ROLE_STATUS) ? -+ USB_ROLE_HOST : USB_ROLE_DEVICE); -+ typec_set_data_role(ctx->typec_port, data_role); -+ ctx->typec_data_role = data_role; -+ } -+ if (intr_vector & VBUS_STATUS) -+ typec_set_pwr_role(ctx->typec_port, -+ (intr_status & VBUS_STATUS) ? -+ TYPEC_SOURCE : TYPEC_SINK); -+ if (intr_vector & VCONN_STATUS) -+ typec_set_vconn_role(ctx->typec_port, -+ (intr_status & VCONN_STATUS) ? -+ TYPEC_SOURCE : TYPEC_SINK); -+} -+ -+static int anx7625_typec_register(struct anx7625_data *ctx) -+{ -+ struct typec_capability typec_cap = { }; -+ struct fwnode_handle *fwnode __free(fwnode_handle) = -+ device_get_named_child_node(ctx->dev, "connector"); -+ u32 val; -+ int ret; -+ -+ if (!fwnode) -+ return 0; -+ -+ ret = typec_get_fw_cap(&typec_cap, fwnode); -+ if (ret < 0) -+ return ret; -+ -+ typec_cap.revision = 0x0120; -+ typec_cap.pd_revision = 0x0300; -+ typec_cap.usb_capability = USB_CAPABILITY_USB2 | USB_CAPABILITY_USB3; -+ typec_cap.orientation_aware = true; -+ -+ typec_cap.driver_data = ctx; -+ -+ ctx->typec_port = typec_register_port(ctx->dev, &typec_cap); -+ if (IS_ERR(ctx->typec_port)) -+ return PTR_ERR(ctx->typec_port); -+ -+ ctx->role_sw = fwnode_usb_role_switch_get(fwnode); -+ if (IS_ERR(ctx->role_sw)) { -+ typec_unregister_port(ctx->typec_port); -+ return PTR_ERR(ctx->role_sw); -+ } -+ -+ val = anx7625_reg_read(ctx, ctx->i2c.rx_p0_client, SYSTEM_STSTUS); -+ -+ anx7625_typec_set_status(ctx, val, -+ CC_STATUS | DATA_ROLE_STATUS | -+ VBUS_STATUS | VCONN_STATUS); -+ -+ return 0; -+} -+ -+static void anx7625_typec_unregister(struct anx7625_data *ctx) -+{ -+ usb_role_switch_put(ctx->role_sw); -+ typec_unregister_port(ctx->typec_port); -+} -+#else -+static void anx7625_typec_set_status(struct anx7625_data *ctx, -+ unsigned int intr_status, -+ unsigned int intr_vector) -+{ -+} -+ -+static int anx7625_typec_register(struct anx7625_data *ctx) -+{ -+ return 0; -+} -+ -+static void anx7625_typec_unregister(struct anx7625_data *ctx) -+{ -+} -+#endif -+ - static int anx7625_read_hpd_status_p0(struct anx7625_data *ctx) - { - return anx7625_reg_read(ctx, ctx->i2c.rx_p0_client, SYSTEM_STSTUS); -@@ -1566,7 +1678,7 @@ static void dp_hpd_change_handler(struct anx7625_data *ctx, bool on) - } - } - --static int anx7625_hpd_change_detect(struct anx7625_data *ctx) -+static int anx7625_intr_status(struct anx7625_data *ctx) - { - int intr_vector, status; - struct device *dev = ctx->dev; -@@ -1593,9 +1705,6 @@ static int anx7625_hpd_change_detect(struct anx7625_data *ctx) - return status; - } - -- if (!(intr_vector & HPD_STATUS_CHANGE)) -- return -ENOENT; -- - status = anx7625_reg_read(ctx, ctx->i2c.rx_p0_client, - SYSTEM_STSTUS); - if (status < 0) { -@@ -1604,6 +1713,12 @@ static int anx7625_hpd_change_detect(struct anx7625_data *ctx) - } - - DRM_DEV_DEBUG_DRIVER(dev, "0x7e:0x45=%x\n", status); -+ -+ anx7625_typec_set_status(ctx, status, intr_vector); -+ -+ if (!(intr_vector & HPD_STATUS)) -+ return -ENOENT; -+ - dp_hpd_change_handler(ctx, status & HPD_STATUS); - - return 0; -@@ -1622,7 +1737,7 @@ static void anx7625_work_func(struct work_struct *work) - return; - } - -- event = anx7625_hpd_change_detect(ctx); -+ event = anx7625_intr_status(ctx); - - mutex_unlock(&ctx->lock); - -@@ -2741,11 +2856,29 @@ static int anx7625_i2c_probe(struct i2c_client *client) - } - - if (!platform->pdata.low_power_mode) { -- anx7625_disable_pd_protocol(platform); -+ struct fwnode_handle *fwnode; -+ -+ fwnode = device_get_named_child_node(dev, "connector"); -+ if (fwnode) -+ fwnode_handle_put(fwnode); -+ else -+ anx7625_disable_pd_protocol(platform); -+ -+ anx7625_configure_hpd(platform); -+ - pm_runtime_get_sync(dev); - _anx7625_hpd_polling(platform, 5000 * 100); - } - -+ if (platform->pdata.intp_irq) -+ anx7625_reg_write(platform, platform->i2c.rx_p0_client, -+ INTERFACE_CHANGE_INT_MASK, 0); -+ -+ /* After getting runtime handle */ -+ ret = anx7625_typec_register(platform); -+ if (ret) -+ goto pm_suspend; -+ - /* Add work function */ - if (platform->pdata.intp_irq) { - enable_irq(platform->pdata.intp_irq); -@@ -2759,6 +2892,10 @@ static int anx7625_i2c_probe(struct i2c_client *client) - - return 0; - -+pm_suspend: -+ if (!platform->pdata.low_power_mode) -+ pm_runtime_put_sync_suspend(&client->dev); -+ - free_wq: - if (platform->workqueue) - destroy_workqueue(platform->workqueue); -@@ -2774,6 +2911,8 @@ static void anx7625_i2c_remove(struct i2c_client *client) - { - struct anx7625_data *platform = i2c_get_clientdata(client); - -+ anx7625_typec_unregister(platform); -+ - drm_bridge_remove(&platform->bridge); - - if (platform->pdata.intp_irq) -diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h -index eb5580f1ab2f..a18561c213af 100644 ---- a/drivers/gpu/drm/bridge/analogix/anx7625.h -+++ b/drivers/gpu/drm/bridge/analogix/anx7625.h -@@ -51,9 +51,21 @@ - #define INTR_RECEIVED_MSG BIT(5) - - #define SYSTEM_STSTUS 0x45 -+#define INTERFACE_CHANGE_INT_MASK 0x43 - #define INTERFACE_CHANGE_INT 0x44 --#define HPD_STATUS_CHANGE 0x80 --#define HPD_STATUS 0x80 -+#define VCONN_STATUS BIT(2) -+#define VBUS_STATUS BIT(3) -+#define CC_STATUS BIT(4) -+#define DATA_ROLE_STATUS BIT(5) -+#define HPD_STATUS BIT(7) -+ -+#define NEW_CC_STATUS 0x46 -+#define CC1_RD BIT(0) -+#define CC1_RA BIT(1) -+#define CC1_RP (BIT(2) | BIT(3)) -+#define CC2_RD BIT(4) -+#define CC2_RA BIT(5) -+#define CC2_RP (BIT(6) | BIT(7)) - - /******** END of I2C Address 0x58 ********/ - -@@ -447,9 +459,15 @@ struct anx7625_i2c_client { - struct i2c_client *tcpc_client; - }; - -+struct typec_port; -+struct usb_role_switch; -+ - struct anx7625_data { - struct anx7625_platform_data pdata; - struct platform_device *audio_pdev; -+ struct typec_port *typec_port; -+ struct usb_role_switch *role_sw; -+ int typec_data_role; - int hpd_status; - int hpd_high_cnt; - int dp_en; diff --git a/patch/kernel/qrb2210-edge/0003-drm-bridge-anx7625-implement-message-sending.patch b/patch/kernel/qrb2210-edge/0003-drm-bridge-anx7625-implement-message-sending.patch deleted file mode 100644 index 4a4c9dd85361..000000000000 --- a/patch/kernel/qrb2210-edge/0003-drm-bridge-anx7625-implement-message-sending.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -Date: Wed, 21 Jan 2026 12:15:47 +0200 -Subject: [PATCH 03/48] drm: bridge: anx7625: implement message sending - -Swapping the data role requires sending the message to the other USB-C -side. Implement sending these messages through the OCM. The code is -largely based on the anx7411.c USB-C driver. - -Signed-off-by: Dmitry Baryshkov -Reviewed-by: Xin Ji -Link: https://lore.kernel.org/r/20260121-anx7625-typec-v2-3-d14f31256a17@oss.qualcomm.com ---- - drivers/gpu/drm/bridge/analogix/anx7625.c | 68 +++++++++++++++++++++++ - drivers/gpu/drm/bridge/analogix/anx7625.h | 12 ++++ - 2 files changed, 80 insertions(+) - -diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c -index 8dc6e3b16968..c43519097a45 100644 ---- a/drivers/gpu/drm/bridge/analogix/anx7625.c -+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c -@@ -1484,6 +1484,73 @@ static void anx7625_start_dp_work(struct anx7625_data *ctx) - } - - #if IS_REACHABLE(CONFIG_TYPEC) -+static u8 anx7625_checksum(u8 *buf, u8 len) -+{ -+ u8 ret = 0; -+ u8 i; -+ -+ for (i = 0; i < len; i++) -+ ret += buf[i]; -+ -+ return ret; -+} -+ -+static int anx7625_read_msg_ctrl_status(struct anx7625_data *ctx) -+{ -+ return anx7625_reg_read(ctx, ctx->i2c.rx_p0_client, CMD_SEND_BUF); -+} -+ -+static int anx7625_wait_msg_empty(struct anx7625_data *ctx) -+{ -+ int val; -+ -+ return readx_poll_timeout(anx7625_read_msg_ctrl_status, ctx, -+ val, (val < 0) || (val == 0), -+ 2000, 2000 * 150); -+} -+ -+static int anx7625_send_msg(struct anx7625_data *ctx, u8 type, u8 *buf, u8 size) -+{ -+ struct fw_msg *msg = &ctx->send_msg; -+ u8 crc; -+ int ret; -+ -+ size = min_t(u8, size, (u8)MAX_BUF_LEN); -+ memcpy(msg->buf, buf, size); -+ msg->msg_type = type; -+ -+ /* msg len equals buffer length + msg_type */ -+ msg->msg_len = size + 1; -+ -+ crc = anx7625_checksum((u8 *)msg, size + HEADER_LEN); -+ msg->buf[size] = 0 - crc; -+ -+ ret = anx7625_wait_msg_empty(ctx); -+ if (ret) -+ return ret; -+ -+ ret = anx7625_reg_block_write(ctx, ctx->i2c.rx_p0_client, -+ CMD_SEND_BUF + 1, size + HEADER_LEN, -+ &msg->msg_type); -+ ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, CMD_SEND_BUF, -+ msg->msg_len); -+ return ret; -+} -+ -+static int anx7625_typec_dr_set(struct typec_port *port, enum typec_data_role role) -+{ -+ struct anx7625_data *ctx = typec_get_drvdata(port); -+ -+ if (role == ctx->typec_data_role) -+ return 0; -+ -+ return anx7625_send_msg(ctx, 0x11, NULL, 0); -+} -+ -+static const struct typec_operations anx7625_typec_ops = { -+ .dr_set = anx7625_typec_dr_set, -+}; -+ - static void anx7625_typec_set_orientation(struct anx7625_data *ctx) - { - u32 val = anx7625_reg_read(ctx, ctx->i2c.rx_p0_client, SYSTEM_STSTUS); -@@ -1542,6 +1609,7 @@ static int anx7625_typec_register(struct anx7625_data *ctx) - typec_cap.orientation_aware = true; - - typec_cap.driver_data = ctx; -+ typec_cap.ops = &anx7625_typec_ops; - - ctx->typec_port = typec_register_port(ctx->dev, &typec_cap); - if (IS_ERR(ctx->typec_port)) -diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h -index a18561c213af..957d234ec07c 100644 ---- a/drivers/gpu/drm/bridge/analogix/anx7625.h -+++ b/drivers/gpu/drm/bridge/analogix/anx7625.h -@@ -67,6 +67,9 @@ - #define CC2_RA BIT(5) - #define CC2_RP (BIT(6) | BIT(7)) - -+#define CMD_SEND_BUF 0xC0 -+#define CMD_RECV_BUF 0xE0 -+ - /******** END of I2C Address 0x58 ********/ - - /***************************************************************/ -@@ -462,6 +465,14 @@ struct anx7625_i2c_client { - struct typec_port; - struct usb_role_switch; - -+#define MAX_BUF_LEN 30 -+struct fw_msg { -+ u8 msg_len; -+ u8 msg_type; -+ u8 buf[MAX_BUF_LEN]; -+} __packed; -+#define HEADER_LEN 2 -+ - struct anx7625_data { - struct anx7625_platform_data pdata; - struct platform_device *audio_pdev; -@@ -497,6 +508,7 @@ struct anx7625_data { - struct drm_connector *connector; - struct mipi_dsi_device *dsi; - struct drm_dp_aux aux; -+ struct fw_msg send_msg; - }; - - #endif /* __ANX7625_H__ */ diff --git a/patch/kernel/qrb2210-edge/0004-drm-bridge-anx7625-correctly-detect-if-PD-can-be-dis.patch b/patch/kernel/qrb2210-edge/0004-drm-bridge-anx7625-correctly-detect-if-PD-can-be-dis.patch deleted file mode 100644 index fe696d16f951..000000000000 --- a/patch/kernel/qrb2210-edge/0004-drm-bridge-anx7625-correctly-detect-if-PD-can-be-dis.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -Date: Wed, 11 Feb 2026 11:17:27 +0200 -Subject: [PATCH 04/48] drm: bridge: anx7625: correctly detect if PD can be - disabled - -During initial checks the ANX7625 bridge can be powered on before -setting up the Type-C port. At this point, when -anx7625_ocm_loading_check() checks if it can disable PD or not, it will -notice that typec_port is not set and disable PD, breaking orientation -and HPD handling. Unify the check between anx7625_ocm_loading_check() -anx7625_i2c_probe() and anx7625_typec_register() and check for the -presence of the "connector" node. - -Fixes: 8ad0f7d2e6fd ("drm: bridge: anx7625: implement message sending") -Signed-off-by: Dmitry Baryshkov -Link: https://lore.kernel.org/r/20260211-anx7625-fix-pd-v1-1-1dd31451b06f@oss.qualcomm.com ---- - drivers/gpu/drm/bridge/analogix/anx7625.c | 21 ++++++++++++++------- - 1 file changed, 14 insertions(+), 7 deletions(-) - -diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c -index c43519097a45..1157a58cf1b1 100644 ---- a/drivers/gpu/drm/bridge/analogix/anx7625.c -+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c -@@ -1363,6 +1363,18 @@ static void anx7625_configure_hpd(struct anx7625_data *ctx) - anx7625_hpd_timer_config(ctx); - } - -+static bool anx7625_need_pd(struct anx7625_data *ctx) -+{ -+ struct fwnode_handle *fwnode; -+ -+ fwnode = device_get_named_child_node(ctx->dev, "connector"); -+ if (!fwnode) -+ return false; -+ -+ fwnode_handle_put(fwnode); -+ return true; -+} -+ - static int anx7625_ocm_loading_check(struct anx7625_data *ctx) - { - int ret; -@@ -1378,7 +1390,7 @@ static int anx7625_ocm_loading_check(struct anx7625_data *ctx) - if ((ret & FLASH_LOAD_STA_CHK) != FLASH_LOAD_STA_CHK) - return -ENODEV; - -- if (!ctx->typec_port) -+ if (!anx7625_need_pd(ctx)) - anx7625_disable_pd_protocol(ctx); - anx7625_configure_hpd(ctx); - -@@ -2924,12 +2936,7 @@ static int anx7625_i2c_probe(struct i2c_client *client) - } - - if (!platform->pdata.low_power_mode) { -- struct fwnode_handle *fwnode; -- -- fwnode = device_get_named_child_node(dev, "connector"); -- if (fwnode) -- fwnode_handle_put(fwnode); -- else -+ if (!anx7625_need_pd(platform)) - anx7625_disable_pd_protocol(platform); - - anx7625_configure_hpd(platform); diff --git a/patch/kernel/qrb2210-edge/0009-arm64-dts-qcom-qrb2210-arduino-imola-describe-DSI-DP.patch b/patch/kernel/qrb2210-edge/0009-arm64-dts-qcom-qrb2210-arduino-imola-describe-DSI-DP.patch deleted file mode 100644 index c1ad9e212d92..000000000000 --- a/patch/kernel/qrb2210-edge/0009-arm64-dts-qcom-qrb2210-arduino-imola-describe-DSI-DP.patch +++ /dev/null @@ -1,177 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -Date: Wed, 11 Feb 2026 11:28:06 +0200 -Subject: [PATCH 09/48] arm64: dts: qcom: qrb2210-arduino-imola: describe DSI / - DP bridge - -Aruino Uno-Q uses Analogix ANX7625 DSI-to-DP bridge to convert DSI -signals to the connected USB-C DisplayPort dongles. Decribe the chip, -USB-C connector and routing of USB and display signals. - -Co-developed-by: Martino Facchin -Signed-off-by: Martino Facchin -Signed-off-by: Dmitry Baryshkov -Tested-by: Loic Poulain -Link: https://lore.kernel.org/r/20260211-uno-q-anx7625-v1-1-677bbcf63668@oss.qualcomm.com ---- - .../boot/dts/qcom/qrb2210-arduino-imola.dts | 112 ++++++++++++++++++ - 1 file changed, 112 insertions(+) - -diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -index f36f7ff96252..9cdfc86c92d7 100644 ---- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -+++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -@@ -6,6 +6,7 @@ - /dts-v1/; - - #include -+#include - #include "agatti.dtsi" - #include "pm4125.dtsi" - -@@ -201,6 +202,16 @@ - }; - }; - -+ vreg_anx_30: regulator-anx-30 { -+ /* ANX7625 VDD3 */ -+ compatible = "regulator-fixed"; -+ regulator-name = "anx30"; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ - /* PM4125 charger out, supplied by VBAT */ - vph_pwr: regulator-vph-pwr { - compatible = "regulator-fixed"; -@@ -234,6 +245,83 @@ - clock-frequency = <100000>; - - status = "okay"; -+ -+ anx7625: encoder@58 { -+ compatible = "analogix,anx7625"; -+ reg = <0x58>; -+ interrupts-extended = <&tlmm 81 IRQ_TYPE_EDGE_FALLING>; -+ vdd10-supply = <&pm4125_l11>; -+ vdd18-supply = <&pm4125_l15>; -+ vdd33-supply = <&vreg_anx_30>; -+ analogix,audio-enable; -+ analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>; -+ analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>; -+ -+ pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>; -+ -+ connector { -+ compatible = "usb-c-connector"; -+ power-role = "sink"; -+ data-role = "dual"; -+ try-power-role = "sink"; -+ -+ pd-revision = /bits/ 8 <0x03 0x00 0x00 0x00>; -+ op-sink-microwatt = <15000000>; -+ sink-pdos = ; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ anx_hs_in: endpoint { -+ remote-endpoint = <&usb_dwc3_hs>; -+ }; -+ }; -+ -+ port@1 { -+ reg = <1>; -+ anx_ss_in: endpoint { -+ remote-endpoint = <&usb_qmpphy_out>; -+ }; -+ }; -+ }; -+ }; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ anx_dsi0_in: endpoint { -+ remote-endpoint = <&mdss_dsi0_out>; -+ data-lanes = <0 1 2 3>; -+ }; -+ }; -+ }; -+ }; -+}; -+ -+&mdss { -+ status = "okay"; -+}; -+ -+&mdss_dsi0 { -+ vdda-supply = <&pm4125_l5>; -+ -+ status = "okay"; -+}; -+ -+&mdss_dsi0_out { -+ remote-endpoint = <&anx_dsi0_in>; -+ data-lanes = <0 1 2 3>; -+}; -+ -+&mdss_dsi0_phy { -+ status = "okay"; - }; - - &pm4125_vbus { -@@ -498,6 +586,22 @@ - output-disable; - }; - -+ anx7625_cable_det_pin: anx7625-cable-det-pins-state { -+ pins = "gpio46"; -+ function = "gpio"; -+ drive-strength = <16>; -+ output-disable; -+ bias-pull-up; -+ }; -+ -+ anx7625_int_pin: anx7625-int-pins-state { -+ pins = "gpio81"; -+ function = "gpio"; -+ drive-strength = <16>; -+ output-disable; -+ bias-pull-up; -+ }; -+ - key_volp_n: key-volp-n-state { - pins = "gpio96"; - function = "gpio"; -@@ -565,6 +669,10 @@ - status = "okay"; - }; - -+&usb_dwc3_hs { -+ remote-endpoint = <&anx_hs_in>; -+}; -+ - &usb_hsphy { - vdd-supply = <&pm4125_l12>; - vdda-pll-supply = <&pm4125_l13>; -@@ -580,6 +688,10 @@ - status = "okay"; - }; - -+&usb_qmpphy_out { -+ remote-endpoint = <&anx_ss_in>; -+}; -+ - &wifi { - vdd-0.8-cx-mx-supply = <&pm4125_l7>; - vdd-1.8-xo-supply = <&pm4125_l13>; diff --git a/patch/kernel/qrb2210-edge/0010-drm-bridge-anx7625-don-t-crash-if-Type-C-port-is-not.patch b/patch/kernel/qrb2210-edge/0010-drm-bridge-anx7625-don-t-crash-if-Type-C-port-is-not.patch deleted file mode 100644 index 31d869e63ac6..000000000000 --- a/patch/kernel/qrb2210-edge/0010-drm-bridge-anx7625-don-t-crash-if-Type-C-port-is-not.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Loic Poulain -Date: Sun, 15 Feb 2026 03:30:02 +0200 -Subject: [PATCH 10/48] drm: bridge: anx7625: don't crash if Type-C port is not - used - -The typec_set_*() functions do not tolerate being passed the NULL -typec_port instance. However, if CONFIG_TYPEC is enabled, but anx7625 -DT node doesn't have the usb-c connector fwnode, then typec_port remains -NULL, crashing the kernel. Prevent calling typec_set_foo() functions by -checking that ctx->typec_port is not NULL in anx7625_typec_set_status(). - - Call trace: - typec_set_orientation+0x18/0x68 (P) - anx7625_typec_set_status+0x108/0x13c - anx7625_work_func+0x124/0x438 - process_one_work+0x214/0x648 - worker_thread+0x1b4/0x358 - kthread+0x14c/0x214 - ret_from_fork+0x10/0x20 - Code: 910003fd a90153f3 aa0003f3 2a0103f4 (f9431400) - -Fixes: f81455b2d332 ("drm: bridge: anx7625: implement minimal Type-C support") -Reported-by: Salendarsingh Gaud -Signed-off-by: Loic Poulain -[db: dropped chunk anx7625_typec_unregister(), wrote commit message] -Cc: Amit Kucheria -Signed-off-by: Dmitry Baryshkov -Link: https://lore.kernel.org/r/20260215-anx-fix-no-typec-v1-1-75172a5ca88b@oss.qualcomm.com ---- - drivers/gpu/drm/bridge/analogix/anx7625.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c -index 1157a58cf1b1..763519ef0d38 100644 ---- a/drivers/gpu/drm/bridge/analogix/anx7625.c -+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c -@@ -1579,6 +1579,9 @@ static void anx7625_typec_set_status(struct anx7625_data *ctx, - unsigned int intr_status, - unsigned int intr_vector) - { -+ if (!ctx->typec_port) -+ return; -+ - if (intr_vector & CC_STATUS) - anx7625_typec_set_orientation(ctx); - if (intr_vector & DATA_ROLE_STATUS) { diff --git a/patch/kernel/qrb2210-edge/0011-arm64-dts-qcom-arduino-imola-fix-faulty-spidev-node.patch b/patch/kernel/qrb2210-edge/0011-arm64-dts-qcom-arduino-imola-fix-faulty-spidev-node.patch deleted file mode 100644 index 673cf978d913..000000000000 --- a/patch/kernel/qrb2210-edge/0011-arm64-dts-qcom-arduino-imola-fix-faulty-spidev-node.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Riccardo Mereu -Date: Fri, 13 Feb 2026 11:10:02 +0100 -Subject: [PATCH 11/48] arm64: dts: qcom: arduino-imola: fix faulty spidev node - -CS pin added on pinctrl0 property is causing spidev to return -ENODEV -since that GPIO is already part of spi5 pinmuxing. - -Fixes: 3f745bc0f11f ("arm64: dts: qcom: qrb2210: add dts for Arduino unoq") -Signed-off-by: Riccardo Mereu -Reviewed-by: Konrad Dybcio -Link: https://lore.kernel.org/r/20260213101002.105238-1-r.mereu.kernel@arduino.cc ---- - arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts | 12 ++---------- - 1 file changed, 2 insertions(+), 10 deletions(-) - -diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -index 9cdfc86c92d7..f9233d2c55ba 100644 ---- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -+++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts -@@ -505,11 +505,9 @@ - &spi5 { - status = "okay"; - -- spidev@0 { -- reg = <0>; -+ mcu@0 { - compatible = "arduino,unoq-mcu"; -- pinctrl-0 = <&spidev_cs>; -- pinctrl-names = "default"; -+ reg = <0>; - }; - }; - -@@ -559,12 +557,6 @@ - }; - - &tlmm { -- spidev_cs: spidev-cs-state { -- pins = "gpio17"; -- function = "gpio"; -- drive-strength = <16>; -- }; -- - jmisc_gpio18: jmisc-gpio18-state { - pins = "gpio18"; - function = "gpio"; diff --git a/patch/kernel/qrb2210-edge/0012-drm-msm-add-missing-MODULE_DEVICE_ID-definitions.patch b/patch/kernel/qrb2210-edge/0012-drm-msm-add-missing-MODULE_DEVICE_ID-definitions.patch deleted file mode 100644 index 5301d26e7f06..000000000000 --- a/patch/kernel/qrb2210-edge/0012-drm-msm-add-missing-MODULE_DEVICE_ID-definitions.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dmitry Baryshkov -Date: Thu, 19 Feb 2026 14:19:14 +0200 -Subject: [PATCH 12/48] drm/msm: add missing MODULE_DEVICE_ID definitions -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The drm/msm module bundles several drivers, each of them having a -separate OF match table, however only MDSS (subsystem) and KMS devices -had corresponding MODULE_DEVICE_ID tables. Thus, if the platform has -enabled only the GPU device (without enabling display counterparts), the -module will not be picked up and loaded by userspace. - -Add MODULE_DEVICE_ID to the GPU driver and to all other drivers in this -module. - -Fixes: 55459968176f ("drm/msm: add a330/apq8x74") -Reported-by: Loïc Minier -Signed-off-by: Dmitry Baryshkov -Link: https://lore.kernel.org/r/20260219-msm-device-id-v1-1-9e7315a6fd20@oss.qualcomm.com ---- - drivers/gpu/drm/msm/dp/dp_display.c | 1 + - drivers/gpu/drm/msm/dsi/dsi.c | 1 + - drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 1 + - drivers/gpu/drm/msm/hdmi/hdmi.c | 1 + - drivers/gpu/drm/msm/hdmi/hdmi_phy.c | 1 + - 5 files changed, 5 insertions(+) - -diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c -index 476848bf8cd1..d2124d625485 100644 ---- a/drivers/gpu/drm/msm/dp/dp_display.c -+++ b/drivers/gpu/drm/msm/dp/dp_display.c -@@ -210,6 +210,7 @@ static const struct of_device_id msm_dp_dt_match[] = { - { .compatible = "qcom,x1e80100-dp", .data = &msm_dp_desc_x1e80100 }, - {} - }; -+MODULE_DEVICE_TABLE(of, msm_dp_dt_match); - - static struct msm_dp_display_private *dev_get_dp_display_private(struct device *dev) - { -diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c -index d8bb40ef820e..3c9f01ed6271 100644 ---- a/drivers/gpu/drm/msm/dsi/dsi.c -+++ b/drivers/gpu/drm/msm/dsi/dsi.c -@@ -198,6 +198,7 @@ static const struct of_device_id dt_match[] = { - { .compatible = "qcom,dsi-ctrl-6g-qcm2290" }, - {} - }; -+MODULE_DEVICE_TABLE(of, dt_match); - - static const struct dev_pm_ops dsi_pm_ops = { - SET_RUNTIME_PM_OPS(msm_dsi_runtime_suspend, msm_dsi_runtime_resume, NULL) -diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c -index 7937266de1d2..c59375aaae19 100644 ---- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c -+++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c -@@ -582,6 +582,7 @@ static const struct of_device_id dsi_phy_dt_match[] = { - #endif - {} - }; -+MODULE_DEVICE_TABLE(of, dsi_phy_dt_match); - - /* - * Currently, we only support one SoC for each PHY type. When we have multiple -diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c -index 5afac09c0d33..d5ef5089c9e9 100644 ---- a/drivers/gpu/drm/msm/hdmi/hdmi.c -+++ b/drivers/gpu/drm/msm/hdmi/hdmi.c -@@ -441,6 +441,7 @@ static const struct of_device_id msm_hdmi_dt_match[] = { - { .compatible = "qcom,hdmi-tx-8660", .data = &hdmi_tx_8960_config }, - {} - }; -+MODULE_DEVICE_TABLE(of, msm_hdmi_dt_match); - - static struct platform_driver msm_hdmi_driver = { - .probe = msm_hdmi_dev_probe, -diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c -index 667573f1db7c..f726555bb681 100644 ---- a/drivers/gpu/drm/msm/hdmi/hdmi_phy.c -+++ b/drivers/gpu/drm/msm/hdmi/hdmi_phy.c -@@ -204,6 +204,7 @@ static const struct of_device_id msm_hdmi_phy_dt_match[] = { - .data = &msm_hdmi_phy_8998_cfg }, - {} - }; -+MODULE_DEVICE_TABLE(of, msm_hdmi_phy_dt_match); - - static struct platform_driver msm_hdmi_phy_platform_driver = { - .probe = msm_hdmi_phy_probe, diff --git a/patch/kernel/rv1126-vendor-6.1/0000.patching_config.yaml b/patch/kernel/rv1126-vendor-6.1/0000.patching_config.yaml new file mode 100644 index 000000000000..7d094e4912eb --- /dev/null +++ b/patch/kernel/rv1126-vendor-6.1/0000.patching_config.yaml @@ -0,0 +1,18 @@ +config: + name: rv1126-6.1 + kind: kernel + type: vendor + branch: rk-6.1-rkr5.1 + + dts-directories: + - { source: "dt", target: "arch/arm/boot/dts" } + + auto-patch-dt-makefile: + - { incremental: true, directory: "arch/arm/boot/dts", config-var: "CONFIG_ARCH_ROCKCHIP" } + + patches-to-git: + do-not-commit-files: + - "MAINTAINERS" + - "Documentation/devicetree/bindings/arm/rockchip.yaml" + do-not-commit-regexes: + - "^arch/([a-zA-Z0-9]+)/boot/dts/Makefile$" diff --git a/patch/kernel/rv1126-vendor-6.1/0001-rknpu-add-rv1126-compatible.patch b/patch/kernel/rv1126-vendor-6.1/0001-rknpu-add-rv1126-compatible.patch new file mode 100644 index 000000000000..2eb9610a7085 --- /dev/null +++ b/patch/kernel/rv1126-vendor-6.1/0001-rknpu-add-rv1126-compatible.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas +Date: Sat, 11 Jul 2026 00:00:00 -0300 +Subject: [PATCH] rknpu: add RV1126 compatible + +RV1126 has a single 32-bit NPU block. Add an explicit compatible using +the same single-core configuration as RV1106 so board DTS files do not +have to bind through a generic or mismatched SoC compatible. + +Signed-off-by: Nicolas +--- + drivers/rknpu/rknpu_drv.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/drivers/rknpu/rknpu_drv.c b/drivers/rknpu/rknpu_drv.c +index 111111111111..222222222222 100644 +--- a/drivers/rknpu/rknpu_drv.c ++++ b/drivers/rknpu/rknpu_drv.c +@@ -225,6 +225,27 @@ static const struct rknpu_config rv1106_rknpu_config = { + .cache_sgt_init = NULL, + }; + ++static const struct rknpu_config rv1126_rknpu_config = { ++ .bw_priority_addr = 0x0, ++ .bw_priority_length = 0x0, ++ .dma_mask = DMA_BIT_MASK(32), ++ .pc_data_amount_scale = 2, ++ .pc_task_number_bits = 16, ++ .pc_task_number_mask = 0xffff, ++ .pc_task_status_offset = 0x3c, ++ .pc_dma_ctrl = 0, ++ .irqs = rknpu_irqs, ++ .num_irqs = ARRAY_SIZE(rknpu_irqs), ++ .nbuf_phyaddr = 0, ++ .nbuf_size = 0, ++ .max_submit_number = (1 << 16) - 1, ++ .core_mask = 0x1, ++ .amount_top = &rknpu_old_top_amount, ++ .amount_core = NULL, ++ .state_init = NULL, ++ .cache_sgt_init = NULL, ++}; ++ + static const struct rknpu_config rk3562_rknpu_config = { + .bw_priority_addr = 0x0, + .bw_priority_length = 0x0, +@@ -300,6 +321,10 @@ static const struct of_device_id rknpu_of_match[] = { + .compatible = "rockchip,rv1106-rknpu", + .data = &rv1106_rknpu_config, + }, ++ { ++ .compatible = "rockchip,rv1126-rknpu", ++ .data = &rv1126_rknpu_config, ++ }, + { + .compatible = "rockchip,rk3562-rknpu", + .data = &rk3562_rknpu_config, +-- +2.43.0 + diff --git a/patch/kernel/rv1126-vendor-6.1/0002-rknpu-fix-arm32-gem-build.patch b/patch/kernel/rv1126-vendor-6.1/0002-rknpu-fix-arm32-gem-build.patch new file mode 100644 index 000000000000..fca5c574af30 --- /dev/null +++ b/patch/kernel/rv1126-vendor-6.1/0002-rknpu-fix-arm32-gem-build.patch @@ -0,0 +1,110 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas +Date: Sat, 11 Jul 2026 00:00:00 -0300 +Subject: [PATCH] rknpu: fix ARM32 GEM build + +RV1126 is built as armhf. Fix two RKNPU GEM build issues exposed there: +use the correct printk format for the unsigned long GEM size field and +use the ARM32 DMA cache maintenance helpers instead of ARM64-only +dcache_*_poc() symbols. Build RKNPU into the RV1126 kernel image so this +path does not depend on private ARM cache symbols being exported to modules. + +Signed-off-by: Nicolas +--- + drivers/rknpu/rknpu_gem.c | 33 ++++++++++++++++++++++++++++++++- + 1 file changed, 32 insertions(+), 1 deletion(-) + +diff --git a/drivers/rknpu/rknpu_gem.c b/drivers/rknpu/rknpu_gem.c +index 111111111111..222222222222 100644 +--- a/drivers/rknpu/rknpu_gem.c ++++ b/drivers/rknpu/rknpu_gem.c +@@ -16,6 +16,18 @@ + #include + #include + ++#ifdef CONFIG_ARM ++#ifndef MULTI_CACHE ++#define rknpu_dma_map_area __glue(_CACHE, _dma_map_area) ++#define rknpu_dma_unmap_area __glue(_CACHE, _dma_unmap_area) ++extern void rknpu_dma_map_area(const void *, size_t, int); ++extern void rknpu_dma_unmap_area(const void *, size_t, int); ++#else ++#define rknpu_dma_map_area cpu_cache.dma_map_area ++#define rknpu_dma_unmap_area cpu_cache.dma_unmap_area ++#endif ++#endif ++ + #if KERNEL_VERSION(5, 10, 0) <= LINUX_VERSION_CODE + #include + #endif +@@ -68,7 +68,7 @@ static int rknpu_gem_get_pages(struct rknpu_gem_object *rknpu_obj) + iova_aligned); + if (ret == 0) { + ret = -EFAULT; +- LOG_DEV_ERROR(drm->dev, "%s: dma map %zu fail\n", __func__, ++ LOG_DEV_ERROR(drm->dev, "%s: dma map %lu fail\n", __func__, + rknpu_obj->size); + goto free_sgt; + } +@@ -1562,9 +1562,14 @@ static int rknpu_cache_sync_with_sg(struct rknpu_device *rknpu_dev, + __dma_map_area(cache_start, cache_length, + DMA_TO_DEVICE); + #else ++#ifdef CONFIG_ARM ++ rknpu_dma_map_area(cache_start, cache_length, ++ DMA_TO_DEVICE); ++#else + dcache_clean_poc((unsigned long)cache_start, + (unsigned long)cache_start + + cache_length); ++#endif + #endif + } + +@@ -1573,9 +1578,14 @@ static int rknpu_cache_sync_with_sg(struct rknpu_device *rknpu_dev, + __dma_unmap_area(cache_start, cache_length, + DMA_FROM_DEVICE); + #else ++#ifdef CONFIG_ARM ++ rknpu_dma_unmap_area(cache_start, cache_length, ++ DMA_FROM_DEVICE); ++#else + dcache_inval_poc((unsigned long)cache_start, + (unsigned long)cache_start + + cache_length); ++#endif + #endif + } + +@@ -1626,9 +1636,14 @@ static int rknpu_cache_sync(struct rknpu_gem_object *rknpu_obj, + __dma_map_area(cache_start, cache_length, + DMA_TO_DEVICE); + #else ++#ifdef CONFIG_ARM ++ rknpu_dma_map_area(cache_start, cache_length, ++ DMA_TO_DEVICE); ++#else + dcache_clean_poc((unsigned long)cache_start, + (unsigned long)cache_start + + cache_length); ++#endif + #endif + } + +@@ -1637,9 +1652,14 @@ static int rknpu_cache_sync(struct rknpu_gem_object *rknpu_obj, + __dma_unmap_area(cache_start, cache_length, + DMA_FROM_DEVICE); + #else ++#ifdef CONFIG_ARM ++ rknpu_dma_unmap_area(cache_start, cache_length, ++ DMA_FROM_DEVICE); ++#else + dcache_inval_poc((unsigned long)cache_start, + (unsigned long)cache_start + + cache_length); ++#endif + #endif + } + +-- +2.43.0 diff --git a/patch/kernel/rv1126-vendor-6.1/0003-phy-rockchip-naneng-usb2-align-rv1126-host-tuning.patch b/patch/kernel/rv1126-vendor-6.1/0003-phy-rockchip-naneng-usb2-align-rv1126-host-tuning.patch new file mode 100644 index 000000000000..b86899dd3186 --- /dev/null +++ b/patch/kernel/rv1126-vendor-6.1/0003-phy-rockchip-naneng-usb2-align-rv1126-host-tuning.patch @@ -0,0 +1,33 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas +Date: Sun, 12 Jul 2026 00:00:00 -0300 +Subject: [PATCH] phy: rockchip-naneng-usb2: align RV1126 host tuning + +The EASY-EAI RV1126 vendor kernel does not enable the extra host wakeup +IRQ bit in rv1126_usb2phy_tuning(). Keep the Armbian RV1126 path aligned +with that proven vendor driver and leave the normal Naneng host-port +linestate/disconnect state machine intact. + +Signed-off-by: Nicolas +--- + drivers/phy/rockchip/phy-rockchip-naneng-usb2.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/drivers/phy/rockchip/phy-rockchip-naneng-usb2.c b/drivers/phy/rockchip/phy-rockchip-naneng-usb2.c +index 111111111111..222222222222 100644 +--- a/drivers/phy/rockchip/phy-rockchip-naneng-usb2.c ++++ b/drivers/phy/rockchip/phy-rockchip-naneng-usb2.c +@@ -1673,11 +1683,6 @@ static int rv1126_usb2phy_tuning(struct rockchip_usb2phy *rphy) + ret = regmap_write(rphy->grf, 0x1028c, 0x0f0f0100); + if (ret) + goto out; +- +- /* Enable host port wakeup irq */ +- ret = regmap_write(rphy->grf, 0x0000, 0x00040004); +- if (ret) +- goto out; + } + + out: +-- +2.43.0 diff --git a/patch/kernel/rv1126-vendor-6.1/dt/lmo-display.dtsi b/patch/kernel/rv1126-vendor-6.1/dt/lmo-display.dtsi new file mode 100644 index 000000000000..ff677ba0b645 --- /dev/null +++ b/patch/kernel/rv1126-vendor-6.1/dt/lmo-display.dtsi @@ -0,0 +1,1091 @@ + +&dsi { + status = "okay"; + + rockchip,lane-rate = <480>; + panel@0 { + compatible = "ilitek,ili9881d", "simple-panel-dsi"; + pinctrl-names = "default"; + pinctrl-0 = <&rst_lcd>; + reg = <0>; + backlight = <&backlight>; + power-supply = <&vcc18_lcd_n>; + reset-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_LOW>; + prepare-delay-ms = <100>; + reset-delay-ms = <100>; + init-delay-ms = <200>; + enable-delay-ms = <120>; + disable-delay-ms = <50>; + unprepare-delay-ms = <20>; + + width-mm = <108>; + height-mm = <172>; + + dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | + MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET)>; + dsi,format = ; + dsi,lanes = <4>; + + panel-init-sequence = [ + 39 00 04 FF 98 81 03 + 15 00 02 01 00 + 15 00 02 02 00 + 15 00 02 03 73 + 15 00 02 04 D7 + 15 00 02 05 00 + 15 00 02 06 08 + 15 00 02 07 11 + 15 00 02 08 00 + 15 00 02 09 3F + 15 00 02 0A 00 + 15 00 02 0B 00 + 15 00 02 0C 00 + 15 00 02 0D 00 + 15 00 02 0E 00 + 15 00 02 0F 3F + 15 00 02 10 3F + 15 00 02 11 00 + 15 00 02 12 00 + 15 00 02 13 00 + 15 00 02 14 00 + 15 00 02 15 00 + 15 00 02 16 00 + 15 00 02 17 00 + 15 00 02 18 00 + 15 00 02 19 00 + 15 00 02 1A 00 + 15 00 02 1B 00 + 15 00 02 1C 00 + 15 00 02 1D 00 + 15 00 02 1E 40 + 15 00 02 1F 80 + 15 00 02 20 06 + 15 00 02 21 01 + 15 00 02 22 00 + 15 00 02 23 00 + 15 00 02 24 00 + 15 00 02 25 00 + 15 00 02 26 00 + 15 00 02 27 00 + 15 00 02 28 33 + 15 00 02 29 33 + 15 00 02 2A 00 + 15 00 02 2B 00 + 15 00 02 2C 00 + 15 00 02 2D 00 + 15 00 02 2E 00 + 15 00 02 2F 00 + 15 00 02 30 00 + 15 00 02 31 00 + 15 00 02 32 00 + 15 00 02 33 00 + 15 00 02 34 00 + 15 00 02 35 00 + 15 00 02 36 00 + 15 00 02 37 00 + 15 00 02 38 00 + 15 00 02 39 00 + 15 00 02 3A 00 + 15 00 02 3B 00 + 15 00 02 3C 00 + 15 00 02 3D 00 + 15 00 02 3E 00 + 15 00 02 3F 00 + 15 00 02 40 00 + 15 00 02 41 00 + 15 00 02 42 00 + 15 00 02 43 00 + 15 00 02 44 00 + 15 00 02 50 01 + 15 00 02 51 23 + 15 00 02 52 44 + 15 00 02 53 67 + 15 00 02 54 89 + 15 00 02 55 AB + 15 00 02 56 01 + 15 00 02 57 23 + 15 00 02 58 45 + 15 00 02 59 67 + 15 00 02 5A 89 + 15 00 02 5B AB + 15 00 02 5C CD + 15 00 02 5D EF + 15 00 02 5E 00 + 15 00 02 5F 0C + 15 00 02 60 0C + 15 00 02 61 0F + 15 00 02 62 0F + 15 00 02 63 0E + 15 00 02 64 0E + 15 00 02 65 06 + 15 00 02 66 07 + 15 00 02 67 0D + 15 00 02 68 02 + 15 00 02 69 02 + 15 00 02 6A 02 + 15 00 02 6B 02 + 15 00 02 6C 02 + 15 00 02 6D 02 + 15 00 02 6E 0D + 15 00 02 6F 02 + 15 00 02 70 02 + 15 00 02 71 05 + 15 00 02 72 01 + 15 00 02 73 08 + 15 00 02 74 00 + 15 00 02 75 0C + 15 00 02 76 0C + 15 00 02 77 0F + 15 00 02 78 0F + 15 00 02 79 0E + 15 00 02 7A 0E + 15 00 02 7B 06 + 15 00 02 7C 07 + 15 00 02 7D 0D + 15 00 02 7E 02 + 15 00 02 7F 02 + 15 00 02 80 02 + 15 00 02 81 02 + 15 00 02 82 02 + 15 00 02 83 02 + 15 00 02 84 0D + 15 00 02 85 02 + 15 00 02 86 02 + 15 00 02 87 05 + 15 00 02 88 01 + 15 00 02 89 08 + 15 00 02 8A 00 + 39 00 04 FF 98 81 04 + 15 00 02 6E 3B + 15 00 02 6F 57 + 15 00 02 3A A4 + 15 00 02 8D 1F + 15 00 02 87 BA + 15 00 02 B2 D1 + 15 00 02 88 0B + 15 00 02 38 01 + 15 00 02 39 00 + 15 00 02 B5 07 + 15 00 02 31 75 + 15 00 02 3B 98 + 39 00 04 FF 98 81 01 + 15 00 02 22 0A + 15 00 02 31 09 + 15 00 02 53 62 + 15 00 02 55 40 + 15 00 02 50 86 + 15 00 02 51 82 + 15 00 02 60 27 + 15 00 02 62 20 + 15 00 02 A0 00 + 15 00 02 A1 11 + 15 00 02 A2 1F + 15 00 02 A3 13 + 15 00 02 A4 14 + 15 00 02 A5 28 + 15 00 02 A6 1D + 15 00 02 A7 1F + 15 00 02 A8 7A + 15 00 02 A9 1C + 15 00 02 AA 2A + 15 00 02 AB 69 + 15 00 02 AC 1A + 15 00 02 AD 18 + 15 00 02 AE 4D + 15 00 02 AF 22 + 15 00 02 B0 29 + 15 00 02 B1 4C + 15 00 02 B2 5B + 15 00 02 B3 23 + 15 00 02 C0 00 + 15 00 02 C1 12 + 15 00 02 C2 1F + 15 00 02 C3 12 + 15 00 02 C4 15 + 15 00 02 C5 29 + 15 00 02 C6 1D + 15 00 02 C7 1E + 15 00 02 C8 78 + 15 00 02 C9 1D + 15 00 02 CA 29 + 15 00 02 CB 69 + 15 00 02 CC 19 + 15 00 02 CD 18 + 15 00 02 CE 4C + 15 00 02 CF 21 + 15 00 02 D0 29 + 15 00 02 D1 4C + 15 00 02 D2 5B + 15 00 02 D3 23 + 39 00 04 FF 98 81 00 + 15 C8 02 11 00 + 15 C8 02 29 00 + ]; + + panel-init-sequence-jd9365da = [ + 15 00 02 E1 93 + 15 00 02 E2 65 + 15 00 02 E3 F8 + 15 00 02 80 03 + 15 00 02 E0 01 + 15 00 02 00 00 + 15 00 02 01 2A + 15 00 02 03 00 + 15 00 02 04 30 + 15 00 02 17 00 + 15 00 02 18 E7 + 15 00 02 19 00 + 15 00 02 1A 00 + 15 00 02 1B E7 + 15 00 02 1C 00 + 15 00 02 35 23 + 15 00 02 37 09 + 15 00 02 38 04 + 15 00 02 39 08 + 15 00 02 3A 12 + 15 00 02 3C 78 + 15 00 02 3D FF + 15 00 02 3E FF + 15 00 02 3F FF + 15 00 02 40 06 + 15 00 02 41 A0 + 15 00 02 43 14 + 15 00 02 44 0F + 15 00 02 45 30 + 15 00 02 4B 04 + 15 00 02 55 02 + 15 00 02 57 65 + 15 00 02 59 0A + 15 00 02 5A 28 + 15 00 02 5B 15 + 15 00 02 5D 7C + 15 00 02 5E 5A + 15 00 02 5F 45 + 15 00 02 60 36 + 15 00 02 61 2F + 15 00 02 62 20 + 15 00 02 63 24 + 15 00 02 64 0F + 15 00 02 65 2C + 15 00 02 66 2E + 15 00 02 67 31 + 15 00 02 68 52 + 15 00 02 69 40 + 15 00 02 6A 49 + 15 00 02 6B 3E + 15 00 02 6C 3B + 15 00 02 6D 30 + 15 00 02 6E 21 + 15 00 02 6F 0C + 15 00 02 70 7C + 15 00 02 71 5A + 15 00 02 72 45 + 15 00 02 73 36 + 15 00 02 74 2F + 15 00 02 75 20 + 15 00 02 76 24 + 15 00 02 77 0F + 15 00 02 78 2C + 15 00 02 79 2E + 15 00 02 7A 31 + 15 00 02 7B 52 + 15 00 02 7C 40 + 15 00 02 7D 49 + 15 00 02 7E 3E + 15 00 02 7F 3B + 15 00 02 80 30 + 15 00 02 81 21 + 15 00 02 82 0C + 15 00 02 E0 02 + 15 00 02 00 5F + 15 00 02 01 5F + 15 00 02 02 53 + 15 00 02 03 51 + 15 00 02 04 4B + 15 00 02 05 49 + 15 00 02 06 47 + 15 00 02 07 45 + 15 00 02 08 41 + 15 00 02 09 43 + 15 00 02 0A 5F + 15 00 02 0B 5F + 15 00 02 0C 5F + 15 00 02 0D 5F + 15 00 02 0E 5F + 15 00 02 0F 5F + 15 00 02 10 5F + 15 00 02 11 5F + 15 00 02 12 5F + 15 00 02 13 5F + 15 00 02 14 5F + 15 00 02 15 5F + 15 00 02 16 5F + 15 00 02 17 5F + 15 00 02 18 52 + 15 00 02 19 50 + 15 00 02 1A 4A + 15 00 02 1B 48 + 15 00 02 1C 46 + 15 00 02 1D 44 + 15 00 02 1E 40 + 15 00 02 1F 42 + 15 00 02 20 5F + 15 00 02 21 5F + 15 00 02 22 5F + 15 00 02 23 5F + 15 00 02 24 5F + 15 00 02 25 5F + 15 00 02 26 5F + 15 00 02 27 5F + 15 00 02 28 5F + 15 00 02 29 5F + 15 00 02 2A 5F + 15 00 02 2B 5F + 15 00 02 2C 1F + 15 00 02 2D 1F + 15 00 02 2E 00 + 15 00 02 2F 02 + 15 00 02 30 08 + 15 00 02 31 0A + 15 00 02 32 04 + 15 00 02 33 06 + 15 00 02 34 12 + 15 00 02 35 10 + 15 00 02 36 1F + 15 00 02 37 1F + 15 00 02 38 1F + 15 00 02 39 1F + 15 00 02 3A 1F + 15 00 02 3B 1F + 15 00 02 3C 1F + 15 00 02 3D 1F + 15 00 02 3E 1F + 15 00 02 3F 1F + 15 00 02 40 1F + 15 00 02 41 1F + 15 00 02 42 1F + 15 00 02 43 1F + 15 00 02 44 01 + 15 00 02 45 03 + 15 00 02 46 09 + 15 00 02 47 0B + 15 00 02 48 05 + 15 00 02 49 07 + 15 00 02 4A 13 + 15 00 02 4B 11 + 15 00 02 4C 1F + 15 00 02 4D 1F + 15 00 02 4E 1F + 15 00 02 4F 1F + 15 00 02 50 1F + 15 00 02 51 1F + 15 00 02 52 1F + 15 00 02 53 1F + 15 00 02 54 1F + 15 00 02 55 1F + 15 00 02 56 1F + 15 00 02 57 1F + 15 00 02 58 40 + 15 00 02 59 00 + 15 00 02 5A 00 + 15 00 02 5B 30 + 15 00 02 5C 09 + 15 00 02 5D 30 + 15 00 02 5E 01 + 15 00 02 5F 02 + 15 00 02 60 30 + 15 00 02 61 03 + 15 00 02 62 04 + 15 00 02 63 1C + 15 00 02 64 6A + 15 00 02 65 75 + 15 00 02 66 0d + 15 00 02 67 72 + 15 00 02 68 0c + 15 00 02 69 1C + 15 00 02 6A 6A + 15 00 02 6B 08 + 15 00 02 6C 00 + 15 00 02 6D 00 + 15 00 02 6E 00 + 15 00 02 6F 88 + 15 00 02 70 00 + 15 00 02 71 00 + 15 00 02 72 06 + 15 00 02 73 7B + 15 00 02 74 00 + 15 00 02 75 BB + 15 00 02 76 01 + 15 00 02 77 0D + 15 00 02 78 24 + 15 00 02 79 00 + 15 00 02 7A 00 + 15 00 02 7B 00 + 15 00 02 7C 00 + 15 00 02 7D 03 + 15 00 02 7E 7B + 15 00 02 E0 04 + 15 00 02 00 0E + 15 00 02 02 B3 + 15 00 02 0E 4A + 15 00 02 E0 00 + 05 C8 01 11 + 05 14 01 29 + ]; + + panel-init-sequence-jd9365d = [ + 15 00 02 E0 00 + + 15 00 02 E1 93 + 15 00 02 E2 65 + 15 00 02 E3 F8 + 15 00 02 80 03 + + 15 00 02 E0 01 + + 15 00 02 00 00 + 15 00 02 01 3C + 15 00 02 03 00 + 15 00 02 04 3C + + 15 00 02 0C 74 + 15 00 02 17 00 + 15 00 02 18 F7 + 15 00 02 19 01 + 15 00 02 1A 00 + 15 00 02 1B F7 + 15 00 02 1C 01 + + 15 00 02 24 F1 + + 15 00 02 35 23 + + 15 00 02 37 09 + + 15 00 02 38 04 + 15 00 02 39 00 + 15 00 02 3A 01 + 15 00 02 3C 70 + 15 00 02 3D FF + 15 00 02 3E FF + 15 00 02 3F 7F + + 15 00 02 40 06 + 15 00 02 41 A0 + 15 00 02 43 1E + 15 00 02 44 0B + 15 00 02 45 28 + + 15 00 02 55 01 + 15 00 02 57 A9 + 15 00 02 59 0A + 15 00 02 5A 2D + 15 00 02 5B 1A + 15 00 02 5C 15 + + 15 00 02 5D 7F + 15 00 02 5E 69 + 15 00 02 5F 59 + 15 00 02 60 4C + 15 00 02 61 47 + 15 00 02 62 38 + 15 00 02 63 3D + 15 00 02 64 27 + 15 00 02 65 41 + 15 00 02 66 40 + 15 00 02 67 40 + 15 00 02 68 5B + 15 00 02 69 46 + 15 00 02 6A 49 + 15 00 02 6B 3A + 15 00 02 6C 34 + 15 00 02 6D 25 + 15 00 02 6E 15 + 15 00 02 6F 02 + 15 00 02 70 7F + 15 00 02 71 69 + 15 00 02 72 59 + 15 00 02 73 4C + 15 00 02 74 47 + 15 00 02 75 38 + 15 00 02 76 3D + 15 00 02 77 27 + 15 00 02 78 41 + 15 00 02 79 40 + 15 00 02 7A 40 + 15 00 02 7B 5B + 15 00 02 7C 46 + 15 00 02 7D 49 + 15 00 02 7E 3A + 15 00 02 7F 34 + 15 00 02 80 25 + 15 00 02 81 15 + 15 00 02 82 02 + + 15 00 02 E0 02 + + 15 00 02 00 50 + 15 00 02 01 5F + 15 00 02 02 5F + 15 00 02 03 52 + 15 00 02 04 77 + 15 00 02 05 57 + 15 00 02 06 5F + 15 00 02 07 4E + 15 00 02 08 4C + 15 00 02 09 5F + 15 00 02 0A 4A + 15 00 02 0B 48 + 15 00 02 0C 5F + 15 00 02 0D 46 + 15 00 02 0E 44 + 15 00 02 0F 40 + 15 00 02 10 5F + 15 00 02 11 5F + 15 00 02 12 5F + 15 00 02 13 5F + 15 00 02 14 5F + 15 00 02 15 5F + + 15 00 02 16 51 + 15 00 02 17 5F + 15 00 02 18 5F + 15 00 02 19 53 + 15 00 02 1A 77 + 15 00 02 1B 57 + 15 00 02 1C 5F + 15 00 02 1D 4F + 15 00 02 1E 4D + 15 00 02 1F 5F + 15 00 02 20 4B + 15 00 02 21 49 + 15 00 02 22 5F + 15 00 02 23 47 + 15 00 02 24 45 + 15 00 02 25 41 + 15 00 02 26 5F + 15 00 02 27 5F + 15 00 02 28 5F + 15 00 02 29 5F + 15 00 02 2A 5F + 15 00 02 2B 5F + + 15 00 02 2C 01 + 15 00 02 2D 1F + 15 00 02 2E 1F + 15 00 02 2F 13 + 15 00 02 30 17 + 15 00 02 31 17 + 15 00 02 32 1F + 15 00 02 33 0D + 15 00 02 34 0F + 15 00 02 35 1F + 15 00 02 36 05 + 15 00 02 37 07 + 15 00 02 38 1F + 15 00 02 39 09 + 15 00 02 3A 0B + 15 00 02 3B 11 + 15 00 02 3C 1F + 15 00 02 3D 1F + 15 00 02 3E 1F + 15 00 02 3F 1F + 15 00 02 40 1F + 15 00 02 41 1F + + 15 00 02 42 00 + 15 00 02 43 1F + 15 00 02 44 1F + 15 00 02 45 12 + 15 00 02 46 17 + 15 00 02 47 17 + 15 00 02 48 1F + 15 00 02 49 0C + 15 00 02 4A 0E + 15 00 02 4B 1F + 15 00 02 4C 04 + 15 00 02 4D 06 + 15 00 02 4E 1F + 15 00 02 4F 08 + 15 00 02 50 0A + 15 00 02 51 10 + 15 00 02 52 1F + 15 00 02 53 1F + 15 00 02 54 1F + 15 00 02 55 1F + 15 00 02 56 1F + 15 00 02 57 1F + + 15 00 02 58 40 + 15 00 02 5B 10 + 15 00 02 5C 06 + 15 00 02 5D 40 + 15 00 02 5E 00 + 15 00 02 5F 00 + 15 00 02 60 40 + 15 00 02 61 03 + 15 00 02 62 04 + 15 00 02 63 6C + 15 00 02 64 6C + 15 00 02 65 75 + 15 00 02 66 08 + 15 00 02 67 B4 + 15 00 02 68 08 + 15 00 02 69 6C + 15 00 02 6A 6C + 15 00 02 6B 0C + 15 00 02 6D 00 + 15 00 02 6E 00 + 15 00 02 6F 88 + 15 00 02 75 BB + 15 00 02 76 00 + 15 00 02 77 05 + 15 00 02 78 2A + + 15 00 02 E0 04 + 15 00 02 09 11 + 15 00 02 0E 48 + 15 00 02 2B 08 + 15 00 02 2D 03 + 15 00 02 2E 03 + + 15 00 02 E0 00 + + 15 78 02 11 00 + 15 05 02 29 00 + ]; + + panel-init-sequence-ili9881c = [ + 39 00 04 FF 98 81 03 + 15 00 02 01 00 + 15 00 02 02 00 + 15 00 02 03 73 + 15 00 02 04 00 + 15 00 02 05 00 + 15 00 02 06 08 + 15 00 02 07 00 + 15 00 02 08 00 + 15 00 02 09 00 + 15 00 02 0A 01 + 15 00 02 0B 01 + 15 00 02 0C 00 + 15 00 02 0D 01 + 15 00 02 0E 01 + 15 00 02 0F 00 + 15 00 02 10 00 + 15 00 02 11 00 + 15 00 02 12 00 + 15 00 02 13 1F + 15 00 02 14 1F + 15 00 02 15 00 + 15 00 02 16 00 + 15 00 02 17 00 + 15 00 02 18 00 + 15 00 02 19 00 + 15 00 02 1A 00 + 15 00 02 1B 00 + 15 00 02 1C 00 + 15 00 02 1D 00 + 15 00 02 1E 40 + 15 00 02 1F C0 + 15 00 02 20 06 + 15 00 02 21 01 + 15 00 02 22 06 + 15 00 02 23 01 + 15 00 02 24 88 + 15 00 02 25 88 + 15 00 02 26 00 + 15 00 02 27 00 + 15 00 02 28 3B + 15 00 02 29 03 + 15 00 02 2A 00 + 15 00 02 2B 00 + 15 00 02 2C 00 + 15 00 02 2D 00 + 15 00 02 2E 00 + 15 00 02 2F 00 + 15 00 02 30 00 + 15 00 02 31 00 + 15 00 02 32 00 + 15 00 02 33 00 + 15 00 02 34 00 + 15 00 02 35 00 + 15 00 02 36 00 + 15 00 02 37 00 + 15 00 02 38 00 + 15 00 02 39 00 + 15 00 02 3A 00 + 15 00 02 3B 00 + 15 00 02 3C 00 + 15 00 02 3D 00 + 15 00 02 3E 00 + 15 00 02 3F 00 + 15 00 02 40 00 + 15 00 02 41 00 + 15 00 02 42 00 + 15 00 02 43 00 + 15 00 02 44 00 + 15 00 02 50 01 + 15 00 02 51 23 + 15 00 02 52 45 + 15 00 02 53 67 + 15 00 02 54 89 + 15 00 02 55 AB + 15 00 02 56 01 + 15 00 02 57 23 + 15 00 02 58 45 + 15 00 02 59 67 + 15 00 02 5A 89 + 15 00 02 5B AB + 15 00 02 5C CD + 15 00 02 5D EF + 15 00 02 5E 00 + 15 00 02 5F 01 + 15 00 02 60 01 + 15 00 02 61 06 + 15 00 02 62 06 + 15 00 02 63 07 + 15 00 02 64 07 + 15 00 02 65 00 + 15 00 02 66 00 + 15 00 02 67 02 + 15 00 02 68 02 + 15 00 02 69 05 + 15 00 02 6A 05 + 15 00 02 6B 02 + 15 00 02 6C 0D + 15 00 02 6D 0D + 15 00 02 6E 0C + 15 00 02 6F 0C + 15 00 02 70 0F + 15 00 02 71 0F + 15 00 02 72 0E + 15 00 02 73 0E + 15 00 02 74 02 + 15 00 02 75 01 + 15 00 02 76 01 + 15 00 02 77 06 + 15 00 02 78 06 + 15 00 02 79 07 + 15 00 02 7A 07 + 15 00 02 7B 00 + 15 00 02 7C 00 + 15 00 02 7D 02 + 15 00 02 7E 02 + 15 00 02 7F 05 + 15 00 02 80 05 + 15 00 02 81 02 + 15 00 02 82 0D + 15 00 02 83 0D + 15 00 02 84 0C + 15 00 02 85 0C + 15 00 02 86 0F + 15 00 02 87 0F + 15 00 02 88 0E + 15 00 02 89 0E + 15 00 02 8A 02 + 39 00 04 FF 98 81 04 + 15 00 02 6C 15 + 15 00 02 6E 2A + 15 00 02 6F 33 + 15 00 02 8D 1B + 15 00 02 87 BA + 15 00 02 3A 24 + 15 00 02 26 76 + 15 00 02 B2 D1 + 39 00 04 FF 98 81 01 + 15 00 02 22 0A + 15 00 02 31 00 + 15 00 02 43 66 + 15 00 02 53 42 + 15 00 02 50 87 + 15 00 02 51 82 + 15 00 02 60 15 + 15 00 02 61 01 + 15 00 02 62 0C + 15 00 02 63 00 + 15 00 02 A0 00 + 15 00 02 A1 13 + 15 00 02 A2 23 + 15 00 02 A3 14 + 15 00 02 A4 16 + 15 00 02 A5 29 + 15 00 02 A6 1E + 15 00 02 A7 1D + 15 00 02 A8 86 + 15 00 02 A9 1E + 15 00 02 AA 29 + 15 00 02 AB 74 + 15 00 02 AC 19 + 15 00 02 AD 17 + 15 00 02 AE 4B + 15 00 02 AF 20 + 15 00 02 B0 26 + 15 00 02 B1 4C + 15 00 02 B2 5D + 15 00 02 B3 3F + 15 00 02 C0 00 + 15 00 02 C1 13 + 15 00 02 C2 23 + 15 00 02 C3 14 + 15 00 02 C4 16 + 15 00 02 C5 29 + 15 00 02 C6 1E + 15 00 02 C7 1D + 15 00 02 C8 86 + 15 00 02 C9 1E + 15 00 02 CA 29 + 15 00 02 CB 74 + 15 00 02 CC 19 + 15 00 02 CD 17 + 15 00 02 CE 4B + 15 00 02 CF 20 + 15 00 02 D0 26 + 15 00 02 D1 4C + 15 00 02 D2 5D + 15 00 02 D3 3F + 39 00 04 FF 98 81 00 + 15 00 02 35 00 + 05 78 01 11 + 05 14 01 29 + ]; + + panel-init-sequence-ili9881p = [//720x1280 + 39 00 04 FF 98 81 01 + 15 00 02 01 00 + 15 00 02 02 00 + 15 00 02 03 56 + 15 00 02 04 13 + 15 00 02 05 13 + 15 00 02 06 0a + 15 00 02 07 05 + 15 00 02 08 05 + 15 00 02 09 1D + 15 00 02 0a 01 + 15 00 02 0b 00 + 15 00 02 0c 3F + 15 00 02 0d 29 + 15 00 02 0e 29 + 15 00 02 0f 1D + 15 00 02 10 1D + 15 00 02 11 00 + 15 00 02 12 00 + 15 00 02 13 08 + 15 00 02 14 08 + 15 00 02 15 00 + 15 00 02 16 00 + 15 00 02 17 00 + 15 00 02 18 00 + 15 00 02 19 00 + 15 00 02 1a 00 + 15 00 02 1b 00 + 15 00 02 1c 00 + 15 00 02 1d 00 + 15 00 02 1e 40 + 15 00 02 1f 88 + 15 00 02 20 08 + 15 00 02 21 01 + 15 00 02 22 00 + 15 00 02 23 00 + 15 00 02 24 00 + 15 00 02 25 00 + 15 00 02 26 00 + 15 00 02 27 00 + 15 00 02 28 33 + 15 00 02 29 03 + 15 00 02 2a 00 + 15 00 02 2b 00 + 15 00 02 2c 00 + 15 00 02 2d 00 + 15 00 02 2e 00 + 15 00 02 2f 00 + 15 00 02 30 00 + 15 00 02 31 00 + 15 00 02 32 00 + 15 00 02 33 00 + 15 00 02 34 00 + 15 00 02 35 00 + 15 00 02 36 00 + 15 00 02 37 00 + 15 00 02 38 00 + 15 00 02 39 0f + 15 00 02 3a 2a + 15 00 02 3b 00 + 15 00 02 3c 00 + 15 00 02 3d 00 + 15 00 02 3e 00 + 15 00 02 3f 00 + 15 00 02 40 00 + 15 00 02 41 e0 + 15 00 02 42 40 + 15 00 02 43 0f + 15 00 02 44 11 + 15 00 02 45 a8 + 15 00 02 46 00 + 15 00 02 47 08 + 15 00 02 48 00 + 15 00 02 49 01 + 15 00 02 4a 00 + 15 00 02 4b 00 + 15 00 02 4c b2 + 15 00 02 4d 22 + 15 00 02 4e 07 + 15 00 02 4f f1 + 15 00 02 50 29 + 15 00 02 51 72 + 15 00 02 52 25 + 15 00 02 53 b2 + 15 00 02 54 22 + 15 00 02 55 22 + 15 00 02 56 22 + 15 00 02 57 a2 + 15 00 02 58 22 + 15 00 02 59 06 + 15 00 02 5a e1 + 15 00 02 5b 28 + 15 00 02 5c 62 + 15 00 02 5d 24 + 15 00 02 5e a2 + 15 00 02 5f 22 + 15 00 02 60 22 + 15 00 02 61 22 + 15 00 02 62 ee + 15 00 02 63 02 + 15 00 02 64 0b + 15 00 02 65 02 + 15 00 02 66 02 + 15 00 02 67 0F + 15 00 02 68 00 + 15 00 02 69 01 + 15 00 02 6a 07 + 15 00 02 6b 55 + 15 00 02 6c 02 + 15 00 02 6d 02 + 15 00 02 6e 5b + 15 00 02 6f 59 + 15 00 02 70 02 + 15 00 02 71 02 + 15 00 02 72 57 + 15 00 02 73 02 + 15 00 02 74 02 + 15 00 02 75 02 + 15 00 02 76 02 + 15 00 02 77 02 + 15 00 02 78 02 + 15 00 02 79 02 + 15 00 02 7a 0a + 15 00 02 7b 02 + 15 00 02 7c 02 + 15 00 02 7d 0E + 15 00 02 7e 00 + 15 00 02 7f 01 + 15 00 02 80 06 + 15 00 02 81 54 + 15 00 02 82 02 + 15 00 02 83 02 + 15 00 02 84 5a + 15 00 02 85 58 + 15 00 02 86 02 + 15 00 02 87 02 + 15 00 02 88 56 + 15 00 02 89 02 + 15 00 02 8a 02 + 15 00 02 8b 02 + 15 00 02 8c 02 + 15 00 02 8d 02 + 15 00 02 8e 02 + 15 00 02 8f 44 + 15 00 02 90 44 + 39 00 04 FF 98 81 02 + 15 00 02 01 50 + 15 00 02 15 10 + 15 00 02 42 01 + 39 00 15 57 00 1A 29 13 17 2B 1F 20 8E 1E 2A 76 1A 17 4B 21 27 45 53 24 + 39 00 15 6B 00 1A 29 13 17 2B 1F 20 8E 1E 2A 76 1A 17 4B 21 27 45 53 24 + 39 00 04 FF 98 81 05 + 15 00 02 03 00 + 15 00 02 04 1E + 15 00 02 1A 50 + 15 00 02 1B 09 + 15 00 02 1E 11 + 15 00 02 26 0E + 15 00 02 38 A0 + 15 00 02 4C 11 + 15 00 02 4D 22 + 15 00 02 54 28 + 15 00 02 55 25 + 15 00 02 78 01 + 15 00 02 A9 C0 + 15 00 02 B1 70 + 15 00 02 B2 70 + 39 00 04 FF 98 81 06 + 15 00 02 01 03 + 15 00 02 2B 0A + 15 00 02 04 70 + 15 00 02 C0 7F + 15 00 02 C1 2A + 39 00 04 FF 98 81 00 + 15 C8 02 11 00 + 15 14 02 29 00 + 15 00 02 35 00 + 15 00 02 36 00 + ]; + + panel-exit-sequence = [ + 15 00 02 28 00 + 15 00 02 10 00 + ]; + + display-timings { + native-mode = <&timing0>; + + timing0: timing0 { + clock-frequency = <60000000>; + hactive = <800>; + vactive = <1280>; + hfront-porch = <20>; + hsync-len = <20>; + hback-porch = <20>; + vfront-porch = <30>; + vsync-len = <4>; + vback-porch = <8>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <0>; + pixelclk-active = <0>; + }; + + timing_ili9881c: timing-ili9881c { + clock-frequency = <60000000>; + hactive = <800>; + vactive = <1280>; + hfront-porch = <20>; + hsync-len = <20>; + hback-porch = <20>; + vfront-porch = <30>; + vsync-len = <4>; + vback-porch = <8>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <0>; + pixelclk-active = <0>; + }; + + timing_ili9881p: timing-ili9881p { + clock-frequency = <60000000>; + hactive = <720>; + vactive = <1280>; + hfront-porch = <20>; + hsync-len = <20>; + hback-porch = <20>; + vfront-porch = <30>; + vsync-len = <4>; + vback-porch = <8>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <0>; + pixelclk-active = <0>; + }; + }; + }; +}; diff --git a/patch/kernel/rv1126-vendor-6.1/dt/rv1126-nano.dts b/patch/kernel/rv1126-vendor-6.1/dt/rv1126-nano.dts new file mode 100644 index 000000000000..0fc8c0aa3270 --- /dev/null +++ b/patch/kernel/rv1126-vendor-6.1/dt/rv1126-nano.dts @@ -0,0 +1,529 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2020 Rockchip Electronics Co., Ltd. + */ +/dts-v1/; +#include "rv1126.dtsi" +#include "rv1126-evb-v12.dtsi" +/ { + model = "EASY-EAI Nano RV1126"; + compatible = "easy-eai,nano-rv1126", "rockchip,rv1126-evb-ddr3-v13", "rockchip,rv1126"; + + aliases { + ethernet0 = &gmac; + serial2 = &uart2; + }; + + chosen { + stdout-path = "serial2:1500000n8"; + bootargs = "earlycon=uart8250,mmio32,0xff570000 console=ttyS2,1500000n8 rootwait"; + }; + + /*pwmleds { + compatible = "pwm-leds"; + + pwmi_rgb { + label = "PWM-RGB"; + pwms = <&pwm1 0 25000 0>; + max-brightness = <100>; + }; + };*/ + + gpioleds { + pinctrl-names = "default"; + pinctrl-0 = <&ir_led_io>; + compatible = "gpio-leds"; + + ir_led { + label = "IR-LED"; + gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + }; + + vcc1v2_dvdd: vcc1v2-dvdd { + compatible = "regulator-fixed"; + regulator-name = "vcc1v2_dvdd"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + vcc2v8_avdd: vcc2v8-avdd { + compatible = "regulator-fixed"; + regulator-name = "vcc2v8_avdd"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; +}; + +&uart2 { + status = "okay"; +}; + +&csi_dphy0 { + status = "okay"; + ports { + port@0 { + mipi_in_ucam0: endpoint@1 { + remote-endpoint = <&ucam_out0>; + data-lanes = <1 2>; + }; + }; + port@1 { + csidphy0_out: endpoint@0 { + remote-endpoint = <&mipi_csi2_input>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&csi_dphy1 { + status = "okay"; + ports { + port@0 { + csi_dphy1_input: endpoint@1 { + remote-endpoint = <&ucam_out1>; + data-lanes = <1 2>; + }; + }; + port@1 { + csi_dphy1_output: endpoint@0 { + remote-endpoint = <&isp_in>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&i2c1 { + /delete-node/ ar0230@10; + /delete-node/ ov4689@36; + /delete-node/ os04a10@36; + gc2093: gc2093@7e { + compatible = "galaxycore,gc2093"; + reg = <0x7e>; + clocks = <&cru CLK_MIPICSI_OUT>; + clock-names = "xvclk"; + power-domains = <&power RV1126_PD_VI>; + pinctrl-names = "default"; + pinctrl-0 = <&mipicsi_clk1>; + avdd-supply = <&vcc_avdd>; + dovdd-supply = <&vcc_dovdd>; + dvdd-supply = <&vcc_dvdd>; + pwdn-gpios = <&gpio1 RK_PD6 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio1 RK_PD7 GPIO_ACTIVE_LOW>; + rockchip,camera-module-index = <1>; + rockchip,camera-module-facing = "front"; + rockchip,camera-module-name = "YT-RV1109-2-V1"; + rockchip,camera-module-lens-name = "40IR-2MP-F20"; + //ir-cut = <&cam_ircut0>; + port { + ucam_out1: endpoint { + remote-endpoint = <&csi_dphy1_input>; + data-lanes = <1 2>; + }; + }; + }; + + gc2053: gc2053@37 { //IR + compatible = "galaxycore,gc2053"; + reg = <0x37>; + + clocks = <&cru CLK_MIPICSI_OUT>; + clock-names = "xvclk"; + + power-domains = <&power RV1126_PD_VI>; + pinctrl-names = "rockchip,camera_default"; + pinctrl-0 = <&mipicsi_clk0>; + power-gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_HIGH>; + pwdn-gpios = <&gpio1 RK_PD4 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>; + + avdd-supply = <&vcc2v8_avdd>; + dovdd-supply = <&vcc_dovdd>; + dvdd-supply = <&vcc1v2_dvdd>; + + rockchip,camera-module-index = <0>; + rockchip,camera-module-facing = "front"; + rockchip,camera-module-name = "YT-RV1109-2-V1"; + rockchip,camera-module-lens-name = "40IR-2MP-F20"; + port { + ucam_out0: endpoint { + remote-endpoint = <&mipi_in_ucam0>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&i2c3 { + status = "disabled"; + +}; + +&i2c5 { + status = "okay"; + pinctrl-0 = <&i2c5m1_xfer>; + /delete-node/ gt1x@14; + + gt9xx@14 { + pinctrl-names = "default"; + pinctrl-0 = <&rst_touch_easy &int_touch_easy>; + compatible = "goodix,gt9xx"; + reg = <0x14>; + touch-gpio = <&gpio3 RK_PC1 IRQ_TYPE_LEVEL_LOW>; + reset-gpio = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>; + max-x = <720>; + max-y = <1280>; + tp-size = <911>; + status = "okay"; + }; +}; + +&spi0 { + status = "okay"; + num-cs = <2>; + pinctrl-names = "default", "high_speed"; + pinctrl-0 = <&spi0m2_pins &spi0m2_cs0 &spi0m2_cs1>; + pinctrl-1 = <&spi0m2_pins &spi0m2_cs0 &spi0m2_cs1>; + + spi_dev@0 { + compatible = "rockchip,spidev"; + reg = <0>; + spi-max-frequency = <12000000>; + spi-lsb-first; + }; + + spi_dev@1 { + compatible = "rockchip,spidev"; + reg = <1>; + spi-max-frequency = <12000000>; + spi-lsb-first; + }; +}; + +&spi1 { + status = "okay"; + num-cs = <2>; + + spi_dev@0 { + compatible = "rockchip,spidev"; + reg = <0>; + spi-max-frequency = <12000000>; + spi-lsb-first; + }; + + spi_dev@1 { + compatible = "rockchip,spidev"; + reg = <1>; + spi-max-frequency = <12000000>; + spi-lsb-first; + }; +}; + +&i2s1_2ch { + pinctrl-0 = <&i2s1m2_sclk + &i2s1m2_lrck + &i2s1m2_sdi + &i2s1m2_sdo>; + status = "okay"; + #sound-dai-cells = <0>; +}; + +&rk809_sound { + simple-audio-card,cpu { + sound-dai = <&i2s1_2ch>; + }; +}; + +&can { + pinctrl-names = "default"; + pinctrl-0 = <&canm0_pins>; + status = "okay"; +}; + +&cam_ircut0 { + status = "disabled"; +}; + +&isp_reserved { + size = <0x5c00000>; +}; + +&mipi_csi2 { + status = "okay"; + ports { + port@0 { + mipi_csi2_input: endpoint@1 { + remote-endpoint = <&csidphy0_out>; + data-lanes = <1 2>; + }; + }; + + port@1 { + mipi_csi2_output: endpoint@0 { + remote-endpoint = <&cif_mipi_in>; + data-lanes = <1 2>; + }; + }; + }; +}; + +&rk809 { + regulators { + vcc_dvdd: LDO_REG6 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + vcc_avdd: LDO_REG7 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + }; +}; + +&npu { + compatible = "rockchip,rv1126-rknpu"; + clocks = <&cru CLK_CORE_NPU>, <&cru ACLK_NPU>, <&cru HCLK_NPU>, + <&cru PCLK_PDNPU>; + clock-names = "clk_npu", "aclk_npu", "hclk_npu", "pclk_pdnpu"; + interrupt-names = "npu_irq"; + resets = <&cru SRST_NPU_A>, <&cru SRST_NPU_H>, <&cru SRST_NPU>; + reset-names = "srst_a", "srst_h", "srst_npu"; + rknpu-supply = <&vdd_npu_vepu>; + status = "okay"; +}; + +&rkcif_mipi_lvds { + status = "okay"; + port { + cif_mipi_in: endpoint { + remote-endpoint = <&mipi_csi2_output>; + data-lanes = <1 2>; + }; + }; +}; + +&rkcif_mipi_lvds_sditf { + status = "okay"; + + port { + cif_sditf: endpoint { + remote-endpoint = <&isp_virt1_in>; + data-lanes = <1 2 3 4>; + }; + }; +}; + +&rkisp_vir0 { + ports { + port@0 { + isp_in: endpoint@0 { + remote-endpoint = <&csi_dphy1_output>; + }; + }; + }; +}; + +&rkisp_vir1 { + status = "okay"; + ports { + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + isp_virt1_in: endpoint@0 { + reg = <0>; + remote-endpoint = <&cif_sditf>; + }; + }; + }; +}; + +&rkispp_vir1 { + status = "okay"; +}; + +&rkispp { + status = "okay"; + /* the max input w h and fps of mulit sensor */ + max-input = <1920 1080 30>; +}; + +&pwm3 { + status = "disabled"; +}; + +&pwm8 { + status = "okay"; + pinctrl-0 = <&pwm8m1_pins>; +}; + +&pwm9 { + pinctrl-0 = <&pwm9m1_pins>; + status = "okay"; +}; + +&pwm10 { + pinctrl-0 = <&pwm10m1_pins>; + status = "okay"; +}; + +&backlight { + pwms = <&pwm8 0 25000 0>; +}; + +&vcc18_lcd_n { + /delete-property/ gpio; + /delete-property/ enable-active-high; + regulator-always-on; +}; + +&mdio { + /delete-node/ phy@0; + phy: phy@1 { + compatible = "ethernet-phy-id001c.c816"; + reg = <0x1>; + }; +}; + +&gmac { + phy-mode = "rmii"; + clock_in_out = "output"; + + snps,reset-gpio = <&gpio2 RK_PA5 GPIO_ACTIVE_LOW>; + snps,reset-active-low; + snps,reset-delays-us = <0 50000 10000>; + + assigned-clocks = <&cru CLK_GMAC_SRC>, <&cru CLK_GMAC_TX_RX>; + assigned-clock-parents = <&cru CLK_GMAC_SRC_M1>, <&cru RMII_MODE_CLK>; + assigned-clock-rates = <50000000>; + + pinctrl-names = "default"; + pinctrl-0 = <&rmiim1_miim &rmiim1_bus2 &rgmiim1_mclkinout_level0 &phy_rst>; + + phy-handle = <&phy>; + status = "okay"; + + /delete-property/ tx_delay; + /delete-property/ rx_delay; +}; + +&uart3 { + pinctrl-names = "default"; + pinctrl-0 = <&uart3m0_xfer>; + status = "okay"; +}; + +&uart4 { + pinctrl-names = "default"; + pinctrl-0 = <&uart4m0_xfer>; + status = "okay"; +}; + +&uart5 { + pinctrl-names = "default"; + pinctrl-0 = <&uart5m0_xfer>; + status = "okay"; +}; + +&pmu_io_domains { + vccio6-supply = <&vcc_3v3>; +}; + +&sdmmc { + max-frequency = <50000000>; + bus-width = <4>; + cap-sd-highspeed; + no-sdio; + no-mmc; + vmmc-supply = <&vcc3v3_sd>; + /delete-property/ sd-uhs-sdr12; + /delete-property/ sd-uhs-sdr25; + /delete-property/ sd-uhs-sdr104; + /delete-property/ vqmmc-supply; +}; + +&sfc { + status = "disabled"; + /delete-node/ flash@0; +}; + +&wdt { + status = "okay"; +}; + +&pinctrl { + pinctrl-names = "default"; + pinctrl-0 = <&gc_rst &gc_pwdn &cam_en>; + + mipi-dsi { + /omit-if-no-ref/ + rst_lcd: rst-lcd { + rockchip,pins = <3 RK_PC2 0 &pcfg_pull_up>; + }; + }; + touch-screen { + /omit-if-no-ref/ + rst_touch_easy: rst-touch-easy { + rockchip,pins = + <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>; + }; + /omit-if-no-ref/ + int_touch_easy: int-touch-easy { + rockchip,pins = + <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>; + }; + + /omit-if-no-ref/ + rst_touch_face: rst-touch-face { + rockchip,pins = + <2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>; + }; + /omit-if-no-ref/ + int_touch_face: int-touch-face { + rockchip,pins = + <2 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + mipi-csi { + /omit-if-no-ref/ + gc_rst: gc-rst { + rockchip,pins = + <1 RK_PD5 RK_FUNC_GPIO &pcfg_output_high>; + }; + /omit-if-no-ref/ + gc_pwdn: gc-pwdn { + rockchip,pins = + <1 RK_PD4 RK_FUNC_GPIO &pcfg_output_low>; + }; + /omit-if-no-ref/ + cam_en: cam-en { + rockchip,pins = + <2 RK_PA0 RK_FUNC_GPIO &pcfg_output_high>; + }; + /omit-if-no-ref/ + ir_led_io: ir-led-io { + rockchip,pins = + <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + ethernet { + /omit-if-no-ref/ + phy_rst: phy-rst { + rockchip,pins = + <2 RK_PA5 RK_FUNC_GPIO &pcfg_output_low>; + }; + }; +}; + +#include "lmo-display.dtsi" + +&dsi { + panel@0 { + reset-gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; + }; +}; diff --git a/patch/u-boot/v2026.07/board_easy-eai-nano/add-board-easy-eai-nano-rv1126.patch b/patch/u-boot/v2026.07/board_easy-eai-nano/add-board-easy-eai-nano-rv1126.patch new file mode 100644 index 000000000000..34305db7f8c4 --- /dev/null +++ b/patch/u-boot/v2026.07/board_easy-eai-nano/add-board-easy-eai-nano-rv1126.patch @@ -0,0 +1,300 @@ +diff --git a/arch/arm/dts/rv1126-easy-eai-nano-u-boot.dtsi b/arch/arm/dts/rv1126-easy-eai-nano-u-boot.dtsi +new file mode 100644 +index 00000000000..0b54f0b4ec8 +--- /dev/null ++++ b/arch/arm/dts/rv1126-easy-eai-nano-u-boot.dtsi +@@ -0,0 +1,56 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2026 Nicolas Henrique ++ */ ++ ++#include "rv1126-u-boot.dtsi" ++ ++/ { ++ chosen { ++ u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc; ++ }; ++}; ++ ++&emmc { ++ bootph-pre-ram; ++}; ++ ++&emmc_bus8 { ++ bootph-pre-ram; ++}; ++ ++&emmc_clk { ++ bootph-pre-ram; ++}; ++ ++&emmc_cmd { ++ bootph-pre-ram; ++}; ++ ++&emmc_rstnout { ++ bootph-pre-ram; ++}; ++ ++&sdmmc { ++ bootph-pre-ram; ++}; ++ ++&sdmmc0_bus4 { ++ bootph-pre-ram; ++}; ++ ++&sdmmc0_clk { ++ bootph-pre-ram; ++}; ++ ++&sdmmc0_cmd { ++ bootph-pre-ram; ++}; ++ ++&sdio { ++ status = "disabled"; ++}; ++ ++&uart2 { ++ bootph-pre-ram; ++}; +diff --git a/arch/arm/mach-rockchip/rv1126/Kconfig b/arch/arm/mach-rockchip/rv1126/Kconfig +index 00f99f8cf36..5a3def56788 100644 +--- a/arch/arm/mach-rockchip/rv1126/Kconfig ++++ b/arch/arm/mach-rockchip/rv1126/Kconfig +@@ -20,7 +20,13 @@ config TARGET_RV1126_SONOFF_IHOST + Sonoff iHost is a smart home gateway based on Rockchip RV1126 SoC. + It features Wifi, Bluetooth and Zigbee radios that are used by many + smart home devices. + ++config TARGET_RV1126_EASY_EAI_NANO ++ bool "EASY-EAI Nano RV1126" ++ help ++ EASY-EAI Nano RV1126 is a compact Rockchip RV1126 board with 2 GiB ++ DDR3, eMMC, SD-card slot, UART2 console, and RMII Ethernet. ++ + config SOC_SPECIFIC_OPTIONS # dummy + def_bool y + select HAS_CUSTOM_SYS_INIT_SP_ADDR +@@ -63,5 +69,6 @@ config TEXT_BASE + + source "board/edgeble/neural-compute-module-2/Kconfig" + source "board/itead/sonoff-ihost/Kconfig" ++source "board/easy-eai/nano-rv1126/Kconfig" + + endif +diff --git a/board/easy-eai/nano-rv1126/Kconfig b/board/easy-eai/nano-rv1126/Kconfig +new file mode 100644 +index 00000000000..0c08de3a05a +--- /dev/null ++++ b/board/easy-eai/nano-rv1126/Kconfig +@@ -0,0 +1,15 @@ ++if TARGET_RV1126_EASY_EAI_NANO ++ ++config SYS_BOARD ++ default "nano-rv1126" ++ ++config SYS_VENDOR ++ default "easy-eai" ++ ++config SYS_CONFIG_NAME ++ default "easy-eai-nano-rv1126" ++ ++config BOARD_SPECIFIC_OPTIONS # dummy ++ def_bool y ++ ++endif +diff --git a/include/configs/easy-eai-nano-rv1126.h b/include/configs/easy-eai-nano-rv1126.h +new file mode 100644 +index 00000000000..405b0bd58c8 +--- /dev/null ++++ b/include/configs/easy-eai-nano-rv1126.h +@@ -0,0 +1,10 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++ ++#ifndef __EASY_EAI_NANO_RV1126_H ++#define __EASY_EAI_NANO_RV1126_H ++ ++#define ROCKCHIP_DEVICE_SETTINGS ++ ++#include ++ ++#endif /* __EASY_EAI_NANO_RV1126_H */ +diff --git a/configs/easy-eai-nano-rv1126_defconfig b/configs/easy-eai-nano-rv1126_defconfig +new file mode 100644 +index 00000000000..4eaf7f49e98 +--- /dev/null ++++ b/configs/easy-eai-nano-rv1126_defconfig +@@ -0,0 +1,65 @@ ++CONFIG_ARM=y ++CONFIG_SPL_SKIP_LOWLEVEL_INIT_ONLY=y ++CONFIG_TPL_SKIP_LOWLEVEL_INIT_ONLY=y ++CONFIG_COUNTER_FREQUENCY=24000000 ++CONFIG_SYS_ARCH_TIMER=y ++CONFIG_ARCH_ROCKCHIP=y ++CONFIG_NR_DRAM_BANKS=2 ++CONFIG_DEFAULT_DEVICE_TREE="rockchip/rv1126-easy-eai-nano" ++CONFIG_SYS_MONITOR_LEN=614400 ++CONFIG_ROCKCHIP_RV1126=y ++CONFIG_ROCKCHIP_EXTERNAL_TPL=y ++CONFIG_TARGET_RV1126_EASY_EAI_NANO=y ++CONFIG_SYS_BOOTM_LEN=0x4000000 ++CONFIG_SYS_LOAD_ADDR=0xe00800 ++CONFIG_DEBUG_UART_BASE=0xff570000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_DEBUG_UART=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_USE_BOOTCOMMAND=y ++CONFIG_BOOTCOMMAND="setenv scriptaddr 0x02000000; setenv devtype mmc; setenv distro_bootpart 1; setenv prefix /boot/; for devnum in 1 0; do if mmc dev ${devnum}; then if load mmc ${devnum}:1 ${scriptaddr} /boot/boot.scr; then setenv devnum ${devnum}; echo Boot script loaded from mmc ${devnum}:1; source ${scriptaddr}; fi; fi; done; echo No Armbian boot script found" ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_BOOTDELAY=1 ++CONFIG_DEFAULT_FDT_FILE="rv1126-easy-eai-nano.dtb" ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_SPL_NO_BSS_LIMIT=y ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set ++# CONFIG_CMD_BOOTD is not set ++# CONFIG_CMD_ELF is not set ++# CONFIG_CMD_IMI is not set ++# CONFIG_CMD_XIMG is not set ++CONFIG_CMD_GPT=y ++# CONFIG_CMD_LOADB is not set ++# CONFIG_CMD_LOADS is not set ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PART=y ++CONFIG_CMD_SOURCE=y ++CONFIG_CMD_BOOTZ=y ++CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_CMD_EXT4=y ++CONFIG_CMD_FS_GENERIC=y ++# CONFIG_CMD_ITEST is not set ++# CONFIG_CMD_SETEXPR is not set ++# CONFIG_SPL_DOS_PARTITION is not set ++# CONFIG_ISO_PARTITION is not set ++CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_ENV_RELOC_GD_ENV_ADDR=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MISC=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_REGULATOR_PWM=y ++CONFIG_PWM_ROCKCHIP=y ++# CONFIG_RAM_ROCKCHIP_DEBUG is not set ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYSRESET=y ++# CONFIG_TPL_SYSRESET is not set ++CONFIG_DM_THERMAL=y ++CONFIG_SPL_TINY_MEMSET=y ++CONFIG_LZO=y ++CONFIG_ERRNO_STR=y +diff --git a/dts/upstream/src/arm/rockchip/rv1126-easy-eai-nano.dts b/dts/upstream/src/arm/rockchip/rv1126-easy-eai-nano.dts +new file mode 100644 +index 00000000000..c21c5bb2dec +--- /dev/null ++++ b/dts/upstream/src/arm/rockchip/rv1126-easy-eai-nano.dts +@@ -0,0 +1,98 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2026 Nicolas Henrique ++ */ ++ ++/dts-v1/; ++#include "rv1126.dtsi" ++ ++/ { ++ model = "EASY-EAI Nano RV1126"; ++ compatible = "easy-eai,nano-rv1126", "rockchip,rv1126"; ++ ++ aliases { ++ mmc0 = &emmc; ++ mmc1 = &sdmmc; ++ serial2 = &uart2; ++ }; ++ ++ chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ vcc3v3_sys: regulator-vcc3v3-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ vcc_1v8: regulator-vcc-1v8 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ }; ++ ++ vcc3v3_sd: regulator-vcc3v3-sd { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_sd"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++}; ++ ++&emmc { ++ bus-width = <8>; ++ cap-mmc-highspeed; ++ disable-wp; ++ mmc-hs200-1_8v; ++ non-removable; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&emmc_bus8 &emmc_cmd &emmc_clk &emmc_rstnout>; ++ rockchip,default-sample-phase = <90>; ++ vmmc-supply = <&vcc3v3_sys>; ++ vqmmc-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&pmu_io_domains { ++ pmuio0-supply = <&vcc3v3_sys>; ++ pmuio1-supply = <&vcc3v3_sys>; ++ vccio1-supply = <&vcc_1v8>; ++ vccio2-supply = <&vcc3v3_sd>; ++ vccio3-supply = <&vcc3v3_sd>; ++ vccio4-supply = <&vcc3v3_sys>; ++ vccio5-supply = <&vcc3v3_sys>; ++ vccio6-supply = <&vcc3v3_sys>; ++ vccio7-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdmmc { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ disable-wp; ++ max-frequency = <50000000>; ++ no-mmc; ++ no-sdio; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_bus4 &sdmmc0_det>; ++ rockchip,default-sample-phase = <90>; ++ vmmc-supply = <&vcc3v3_sd>; ++ status = "okay"; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&wdt { ++ status = "okay"; ++};