From f0693016547837ba4bca2d5891f5b4ec65667ee1 Mon Sep 17 00:00:00 2001 From: Xiang W Date: Sun, 15 Dec 2024 19:25:44 +0800 Subject: lib: utils: Improve rpmi_cppc_fc_db_trigger() for RV32 Improve 64-bit operation under rv32 and remove db_val_u32_hi in rpmi_cppc_fc_db_trigger(). Signed-off-by: Xiang W Reviewed-by: Anup Patel --- lib/utils/cppc/fdt_cppc_rpmi.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'lib/utils/cppc/fdt_cppc_rpmi.c') diff --git a/lib/utils/cppc/fdt_cppc_rpmi.c b/lib/utils/cppc/fdt_cppc_rpmi.c index b678990..4946ed1 100644 --- a/lib/utils/cppc/fdt_cppc_rpmi.c +++ b/lib/utils/cppc/fdt_cppc_rpmi.c @@ -59,11 +59,7 @@ static void rpmi_cppc_fc_db_trigger(struct rpmi_cppc *cppc) u8 db_val_u8 = 0; u16 db_val_u16 = 0; u32 db_val_u32 = 0; -#if __riscv_xlen != 32 u64 db_val_u64 = 0; -#else - u32 db_val_u32_hi = 0; -#endif switch (cppc->fc_db_width) { case RPMI_CPPC_FAST_CHANNEL_DB_WIDTH_8: @@ -95,16 +91,13 @@ static void rpmi_cppc_fc_db_trigger(struct rpmi_cppc *cppc) writeq(db_val_u64, (void *)cppc->fc_db_addr); #else - db_val_u32 = readl((void *)cppc->fc_db_addr); - db_val_u32_hi = readl((void *)(cppc->fc_db_addr + 4)); - - db_val_u32 = (u32)cppc->fc_db_setmask | - (db_val_u32 & (u32)cppc->fc_db_preservemask); - db_val_u32_hi = (u32)(cppc->fc_db_setmask >> 32) | - (db_val_u32 & (u32)(cppc->fc_db_preservemask >> 32)); - - writel(db_val_u32, (void *)cppc->fc_db_addr); - writel(db_val_u32_hi, (void *)(cppc->fc_db_addr + 4)); + db_val_u64 = readl((void *)(cppc->fc_db_addr + 4)); + db_val_u64 <<= 32; + db_val_u64 |= readl((void *)cppc->fc_db_addr); + db_val_u64 = cppc->fc_db_setmask | + (db_val_u64 & cppc->fc_db_preservemask); + writel(db_val_u64, (void *)cppc->fc_db_addr); + writel(db_val_u64 >> 32, (void *)(cppc->fc_db_addr + 4)); #endif break; default: -- cgit v1.1