[PATCH v3 1/3] soc: qcom: cmd-db: export RPMh accelerator type string helper
Maulik Shah <[email protected]>
| Newsgroups | org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260812-rpmh-timeout-debug-v1-v3-1-68c0a40dce23@oss.qualcomm.com> |
RPMh resource addresses encode the accelerator type (ARC, VRM, BCM) in bits [19:16], matching the cmd_db_hw_type enum values. Add cmd_db_hw_type_str() to map an RPMh address to its accelerator type name string using the existing SLAVE_ID() macro, and export it so drivers that handle raw RPMh addresses can produce human-readable diagnostic output without duplicating the address encoding knowledge. Assisted-by: Claude:claude-sonnet-4-5 Reviewed-by: Dmitry Baryshkov <[email protected]> Reviewed-by: Navya Malempati <[email protected]> Signed-off-by: Maulik Shah <[email protected]> --- drivers/soc/qcom/cmd-db.c | 20 ++++++++++++++++++++ include/soc/qcom/cmd-db.h | 5 +++++ 2 files changed, 25 insertions(+) diff --git a/drivers/soc/qcom/cmd-db.c b/drivers/soc/qcom/cmd-db.c index 3f1eee784387..117f810d5ca4 100644 --- a/drivers/soc/qcom/cmd-db.c +++ b/drivers/soc/qcom/cmd-db.c @@ -267,6 +267,26 @@ enum cmd_db_hw_type cmd_db_read_slave_id(const char *id) } EXPORT_SYMBOL_GPL(cmd_db_read_slave_id); +/** + * cmd_db_hw_type_str() - Return the name string for an RPMh accelerator address. + * @addr: RPMh resource address whose slave ID encodes the accelerator type. + * + * Extracts the slave ID from bits [19:16] of @addr and maps it to the + * corresponding cmd_db_hw_type name. + * + * Return: A constant string: "ARC", "VRM", "BCM", or "unknown". + */ +const char *cmd_db_hw_type_str(u32 addr) +{ + switch (SLAVE_ID(addr)) { + case CMD_DB_HW_ARC: return "ARC"; + case CMD_DB_HW_VRM: return "VRM"; + case CMD_DB_HW_BCM: return "BCM"; + default: return "unknown"; + } +} +EXPORT_SYMBOL_GPL(cmd_db_hw_type_str); + #ifdef CONFIG_DEBUG_FS static int cmd_db_debugfs_dump(struct seq_file *seq, void *p) { diff --git a/include/soc/qcom/cmd-db.h b/include/soc/qcom/cmd-db.h index 47a6cab75e63..34adc04eac94 100644 --- a/include/soc/qcom/cmd-db.h +++ b/include/soc/qcom/cmd-db.h @@ -29,6 +29,8 @@ bool cmd_db_match_resource_addr(u32 addr1, u32 addr2); enum cmd_db_hw_type cmd_db_read_slave_id(const char *resource_id); int cmd_db_ready(void); + +const char *cmd_db_hw_type_str(u32 addr); #else static inline u32 cmd_db_read_addr(const char *resource_id) { return 0; } @@ -44,5 +46,8 @@ static inline enum cmd_db_hw_type cmd_db_read_slave_id(const char *resource_id) static inline int cmd_db_ready(void) { return -ENODEV; } + +static inline const char *cmd_db_hw_type_str(u32 addr) +{ return "unknown"; } #endif /* CONFIG_QCOM_COMMAND_DB */ #endif /* __QCOM_COMMAND_DB_H__ */ -- 2.43.0