]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
feat(allwinner): add extra CPU control registers
authorMikhail Kalashnikov <iuncuim@gmail.com>
Fri, 9 Dec 2022 01:56:20 +0000 (01:56 +0000)
committerAndre Przywara <andre.przywara@arm.com>
Wed, 26 Apr 2023 16:45:29 +0000 (17:45 +0100)
The die used in several variants of the Allwinner H616 SoC (H313, T507)
seems to produced in at least two revisions. The newer one differs from
the original by using a different CPU control register IP block.

Add those newly used register offsets to the respective header file. The
MMIO block itself is actually present in both variants, though the
registers are different. The new registers tend to use one register per
core, in contrast to one register per cluster in the older revisions.

Change-Id: Ifbda1bdc67a6a16fbb901dbc83996e4a148b7602
Signed-off-by: Mikhail Kalashnikov <iuncuim@gmail.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
plat/allwinner/common/include/sunxi_cpucfg_ncat.h
plat/allwinner/sun50i_h6/include/sunxi_mmap.h
plat/allwinner/sun50i_h616/include/sunxi_mmap.h

index 5bfda5db94d07ca033cb008d173438125a5d2d7a..22828c27151fc9aaecac647927932d6e987a11eb 100644 (file)
 #define SUNXI_CPUCFG_CLS_CTRL_REG0(c)  (SUNXI_CPUCFG_BASE + 0x0010 + (c) * 0x10)
 #define SUNXI_CPUCFG_CLS_CTRL_REG1(c)  (SUNXI_CPUCFG_BASE + 0x0014 + (c) * 0x10)
 #define SUNXI_CPUCFG_CACHE_CFG_REG     (SUNXI_CPUCFG_BASE + 0x0024)
+/* The T507 datasheet does not mention this register. */
 #define SUNXI_CPUCFG_DBG_REG0          (SUNXI_CPUCFG_BASE + 0x00c0)
 
 #define SUNXI_CPUCFG_RST_CTRL_REG(c)   (SUNXI_CPUCFG_BASE + 0x0000 + (c) * 4)
 #define SUNXI_CPUCFG_RVBAR_LO_REG(n)   (SUNXI_CPUCFG_BASE + 0x0040 + (n) * 8)
 #define SUNXI_CPUCFG_RVBAR_HI_REG(n)   (SUNXI_CPUCFG_BASE + 0x0044 + (n) * 8)
 
+#define SUNXI_C0_CPU_CTRL_REG(n)       (SUNXI_CPUCFG_BASE + 0x0060 + (n) * 4)
+
+#define SUNXI_CPU_CTRL_REG(n)          (SUNXI_CPUSUBSYS_BASE + 0x20 + (n) * 4)
+#define SUNXI_ALT_RVBAR_LO_REG(n)      (SUNXI_CPUSUBSYS_BASE + 0x40 + (n) * 8)
+#define SUNXI_ALT_RVBAR_HI_REG(n)      (SUNXI_CPUSUBSYS_BASE + 0x44 + (n) * 8)
+
 #define SUNXI_POWERON_RST_REG(c)       (SUNXI_R_CPUCFG_BASE + 0x0040 + (c) * 4)
 #define SUNXI_POWEROFF_GATING_REG(c)   (SUNXI_R_CPUCFG_BASE + 0x0044 + (c) * 4)
 #define SUNXI_CPU_POWER_CLAMP_REG(c, n)        (SUNXI_R_CPUCFG_BASE + 0x0050 + \
                                        (c) * 0x10 + (n) * 4)
+#define SUNXI_CPU_UNK_REG(n)           (SUNXI_R_CPUCFG_BASE + 0x0070 + (n) * 4)
 
 #define SUNXI_CPUIDLE_EN_REG           (SUNXI_R_CPUCFG_BASE + 0x0100)
 #define SUNXI_CORE_CLOSE_REG           (SUNXI_R_CPUCFG_BASE + 0x0104)
index 58216d848814a3442de56ebb844e501683b87720..43133be22544feead344745ee48791c40a27fce7 100644 (file)
@@ -59,5 +59,6 @@
 #define SUNXI_R_RSB_BASE               0x07083000
 #define SUNXI_R_UART_BASE              0x07080000
 #define SUNXI_R_PIO_BASE               0x07022000
+#define SUNXI_CPUSUBSYS_BASE           0x08100000
 
 #endif /* SUNXI_MMAP_H */
index 3b4f4a02ea748c4dc92182f1e53d6260493f617f..24a4ba8e62c055f38e330eae74e05e31f23d32a7 100644 (file)
@@ -41,6 +41,7 @@
 #define SUNXI_R_UART_BASE              0x07080000
 #define SUNXI_R_I2C_BASE               0x07081400
 #define SUNXI_R_RSB_BASE               0x07083000
+#define SUNXI_CPUSUBSYS_BASE           0x08100000
 #define SUNXI_CPUCFG_BASE              0x09010000
 
 #endif /* SUNXI_MMAP_H */