From 6ede645282f94c32a33a2c6858375b8c2f609922 Mon Sep 17 00:00:00 2001
From: Wenli Looi <wlooi@ucalgary.ca>
Date: Tue, 15 Jun 2021 02:21:01 -0700
Subject: [PATCH] ath79: add support for booting QCN5502 SoC

Based on wikidevi, QCN5502 is a "Dragonfly" like QCA9561 and QCA9563.
Treating it as QCA956x seems to work.

Signed-off-by: Wenli Looi <wlooi@ucalgary.ca>
---
 ...th79-add-support-for-booting-QCN550x.patch | 48 +++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 target/linux/ath79/patches-5.10/940-ath79-add-support-for-booting-QCN550x.patch

diff --git a/target/linux/ath79/patches-5.10/940-ath79-add-support-for-booting-QCN550x.patch b/target/linux/ath79/patches-5.10/940-ath79-add-support-for-booting-QCN550x.patch
new file mode 100644
index 0000000000..cf77433634
--- /dev/null
+++ b/target/linux/ath79/patches-5.10/940-ath79-add-support-for-booting-QCN550x.patch
@@ -0,0 +1,48 @@
+From: Wenli Looi <wlooi@ucalgary.ca>
+Date: Sun, 20 Jun 2021 23:32:28 -0700
+Subject: [PATCH] ath79: add support for booting QCN550x
+
+Based on wikidevi, QCN550x is a "Dragonfly" like QCA9561 and QCA9563.
+Treating it as QCA956x seems to work.
+Tested on Netgear EX7300v2 which boots successfully with
+the same CPU clock as the stock firmware.
+
+Link: https://wikidevi.wi-cat.ru/Qualcomm#bgn
+Link: https://wikidevi.wi-cat.ru/Qualcomm_Atheros#.28a.29bgn_2
+Signed-off-by: Wenli Looi <wlooi@ucalgary.ca>
+
+--- a/arch/mips/ath79/early_printk.c
++++ b/arch/mips/ath79/early_printk.c
+@@ -121,6 +121,7 @@ static void prom_putchar_init(void)
+ 	case REV_ID_MAJOR_QCA9558:
+ 	case REV_ID_MAJOR_TP9343:
+ 	case REV_ID_MAJOR_QCA956X:
++	case REV_ID_MAJOR_QCN550X:
+ 		_prom_putchar = prom_putchar_ar71xx;
+ 		break;
+ 
+--- a/arch/mips/ath79/setup.c
++++ b/arch/mips/ath79/setup.c
+@@ -168,6 +168,12 @@ static void __init ath79_detect_sys_type
+ 		rev = id & QCA956X_REV_ID_REVISION_MASK;
+ 		break;
+ 
++	case REV_ID_MAJOR_QCN550X:
++		ath79_soc = ATH79_SOC_QCA956X;
++		chip = "550X";
++		rev = id & QCA956X_REV_ID_REVISION_MASK;
++		break;
++
+ 	case REV_ID_MAJOR_TP9343:
+ 		ath79_soc = ATH79_SOC_TP9343;
+ 		chip = "9343";
+--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
++++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
+@@ -867,6 +867,7 @@
+ #define REV_ID_MAJOR_QCA9558		0x1130
+ #define REV_ID_MAJOR_TP9343		0x0150
+ #define REV_ID_MAJOR_QCA956X		0x1150
++#define REV_ID_MAJOR_QCN550X		0x2170
+ 
+ #define AR71XX_REV_ID_MINOR_MASK	0x3
+ #define AR71XX_REV_ID_MINOR_AR7130	0x0
-- 
2.30.2