mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2026-07-02 22:02:01 +01:00
platform: generic: spacemit: k1: fix wrong address definitions
PMU_AP_CORE2_IDLE_CFG and PMU_AP_CORE3_IDLE_CFG are not continuous with
PMU_AP_CORE0_IDLE_CFG and PMU_AP_CORE1_IDLE_CFG. They are at PMU AP
base + 0x160 and + 0x164, matching the vendor OpenSBI definitions. After
fixing these addresses, the intermediate cluster offset macros are
redundant now, so define the wakeup and idle registers directly as
PMU_AP_BASE offsets. This makes the actual register addresses easier to
inspect and compare against the vendor code.
C1_RVBADDR_HI_ADDR is also corrected according to the vendor OpenSBI
definition. This was tested by writing an invalid value to the corrected
address, which prevents cluster1 CPUs from coming online, while doing
the same with the old address does not affect SMP boot.
Fixes: 1f84ec2a ("platform: generic: spacemit: add K1")
Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
Link: https://lore.kernel.org/r/20260623-k1-fix-addr-v1-1-3dbde8c03bd6@pigmoral.tech
Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
@@ -25,33 +25,23 @@
|
||||
|
||||
#define PMU_AP_BASE 0xd4282800
|
||||
|
||||
#define PMU_AP_CORE0_WAKEUP_OFFSET (PMU_AP_BASE + 0x12c)
|
||||
#define PMU_AP_CORE4_WAKEUP_OFFSET (PMU_AP_BASE + 0x324)
|
||||
#define PMU_AP_CLUSTER0_WAKEUP_OFFSET(index) (PMU_AP_CORE0_WAKEUP_OFFSET + index * 4)
|
||||
#define PMU_AP_CLUSTER1_WAKEUP_OFFSET(index) (PMU_AP_CORE4_WAKEUP_OFFSET + index * 4)
|
||||
#define PMU_AP_CORE0_WAKEUP (PMU_AP_BASE + 0x12c)
|
||||
#define PMU_AP_CORE1_WAKEUP (PMU_AP_BASE + 0x130)
|
||||
#define PMU_AP_CORE2_WAKEUP (PMU_AP_BASE + 0x134)
|
||||
#define PMU_AP_CORE3_WAKEUP (PMU_AP_BASE + 0x138)
|
||||
#define PMU_AP_CORE4_WAKEUP (PMU_AP_BASE + 0x324)
|
||||
#define PMU_AP_CORE5_WAKEUP (PMU_AP_BASE + 0x328)
|
||||
#define PMU_AP_CORE6_WAKEUP (PMU_AP_BASE + 0x32c)
|
||||
#define PMU_AP_CORE7_WAKEUP (PMU_AP_BASE + 0x330)
|
||||
|
||||
#define PMU_AP_CORE0_IDLE_CFG_OFFSET (PMU_AP_BASE + 0x124)
|
||||
#define PMU_AP_CORE4_IDLE_CFG_OFFSET (PMU_AP_BASE + 0x304)
|
||||
#define PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(index) (PMU_AP_CORE0_IDLE_CFG_OFFSET + index * 4)
|
||||
#define PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(index) (PMU_AP_CORE4_IDLE_CFG_OFFSET + index * 4)
|
||||
|
||||
#define PMU_AP_CORE0_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(0)
|
||||
#define PMU_AP_CORE1_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(1)
|
||||
#define PMU_AP_CORE2_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(2)
|
||||
#define PMU_AP_CORE3_WAKEUP PMU_AP_CLUSTER0_WAKEUP_OFFSET(3)
|
||||
#define PMU_AP_CORE4_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(0)
|
||||
#define PMU_AP_CORE5_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(1)
|
||||
#define PMU_AP_CORE6_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(2)
|
||||
#define PMU_AP_CORE7_WAKEUP PMU_AP_CLUSTER1_WAKEUP_OFFSET(3)
|
||||
|
||||
#define PMU_AP_CORE0_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(0)
|
||||
#define PMU_AP_CORE1_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(1)
|
||||
#define PMU_AP_CORE2_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(2)
|
||||
#define PMU_AP_CORE3_IDLE_CFG PMU_AP_CLUSTER0_IDLE_CFG_OFFSET(3)
|
||||
#define PMU_AP_CORE4_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(0)
|
||||
#define PMU_AP_CORE5_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(1)
|
||||
#define PMU_AP_CORE6_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(2)
|
||||
#define PMU_AP_CORE7_IDLE_CFG PMU_AP_CLUSTER1_IDLE_CFG_OFFSET(3)
|
||||
#define PMU_AP_CORE0_IDLE_CFG (PMU_AP_BASE + 0x124)
|
||||
#define PMU_AP_CORE1_IDLE_CFG (PMU_AP_BASE + 0x128)
|
||||
#define PMU_AP_CORE2_IDLE_CFG (PMU_AP_BASE + 0x160)
|
||||
#define PMU_AP_CORE3_IDLE_CFG (PMU_AP_BASE + 0x164)
|
||||
#define PMU_AP_CORE4_IDLE_CFG (PMU_AP_BASE + 0x304)
|
||||
#define PMU_AP_CORE5_IDLE_CFG (PMU_AP_BASE + 0x308)
|
||||
#define PMU_AP_CORE6_IDLE_CFG (PMU_AP_BASE + 0x30c)
|
||||
#define PMU_AP_CORE7_IDLE_CFG (PMU_AP_BASE + 0x310)
|
||||
|
||||
/* power down */
|
||||
#define PMU_AP_IDLE_PWRDWN BIT(0)
|
||||
@@ -68,7 +58,7 @@
|
||||
#define C0_RVBADDR_LO_ADDR 0xd4282db0
|
||||
#define C0_RVBADDR_HI_ADDR 0xd4282db4
|
||||
#define C1_RVBADDR_LO_ADDR 0xd4282eb0
|
||||
#define C1_RVBADDR_HI_ADDR 0xd4282c04
|
||||
#define C1_RVBADDR_HI_ADDR 0xd4282eb4
|
||||
|
||||
#define CCI_550_PLATFORM_CCI_ADDR 0xd8500000
|
||||
|
||||
|
||||
Reference in New Issue
Block a user