From a4b7ab448665cf85af6afaf7d436f24de2a7ca8c Mon Sep 17 00:00:00 2001 From: Besar Wicaksono Date: Mon, 24 Mar 2025 22:00:33 +0000 Subject: [PATCH] tegra: hwpm: add csn/csnh enum Add new enums for CSN/CSNH ip and resource to kernel driver and userspace library. JIRA MSST-869 Change-Id: I821010dca617596b86b0fec07f499cf1e6e3f258 Signed-off-by: Besar Wicaksono Reviewed-on: https://git-master.nvidia.com/r/c/linux-hwpm/+/3325216 Reviewed-by: Yifei Wan GVS: buildbot_gerritrpt Reviewed-by: Vasuki Shankar --- drivers/tegra/hwpm/include/tegra_hwpm.h | 9 +++++++++ drivers/tegra/hwpm/os/linux/ip_utils.c | 18 ++++++++++++++++++ include/uapi/linux/tegra-soc-hwpm-uapi.h | 6 ++++++ libnvsochwpm/include/nv_soc_hwpm.h | 6 ++++++ libnvsochwpm/os/lnx/nv_soc_hwpm_lnx.c | 6 ++++++ 5 files changed, 45 insertions(+) diff --git a/drivers/tegra/hwpm/include/tegra_hwpm.h b/drivers/tegra/hwpm/include/tegra_hwpm.h index 63b19e4..fccedeb 100644 --- a/drivers/tegra/hwpm/include/tegra_hwpm.h +++ b/drivers/tegra/hwpm/include/tegra_hwpm.h @@ -105,6 +105,9 @@ enum tegra_hwpm_ip_enum { TEGRA_HWPM_IP_UCF_SCB, TEGRA_HWPM_IP_CPU, TEGRA_HWPM_IP_NVTHERM, + TEGRA_HWPM_IP_CSN, /* CSN instance 0-31 */ + TEGRA_HWPM_IP_CSN_EXT_0, /* CSN (extended) instance 32-63 */ + TEGRA_HWPM_IP_CSNH, TERGA_HWPM_NUM_IPS }; @@ -154,6 +157,9 @@ static inline const char *tegra_hwpm_ip_string(enum tegra_hwpm_ip_enum ip_enum) [TEGRA_HWPM_IP_UCF_SCB] = "ucf_scb", [TEGRA_HWPM_IP_CPU] = "cpu", [TEGRA_HWPM_IP_NVTHERM] = "nvtherm", + [TEGRA_HWPM_IP_CSN] = "csn", + [TEGRA_HWPM_IP_CSN_EXT_0] = "csn_ext_0", + [TEGRA_HWPM_IP_CSNH] = "csnh", [TERGA_HWPM_NUM_IPS] = "unknown", }; @@ -210,6 +216,9 @@ enum tegra_hwpm_resource_enum { TEGRA_HWPM_RESOURCE_UCF_SCB, TEGRA_HWPM_RESOURCE_CPU, TEGRA_HWPM_RESOURCE_NVTHERM, + TEGRA_HWPM_RESOURCE_CSN, /* CSN instance 0-31 */ + TEGRA_HWPM_RESOURCE_CSN_EXT_0, /* CSN (extended) instance 32-63 */ + TEGRA_HWPM_RESOURCE_CSNH, TERGA_HWPM_NUM_RESOURCES }; diff --git a/drivers/tegra/hwpm/os/linux/ip_utils.c b/drivers/tegra/hwpm/os/linux/ip_utils.c index c3b11ba..724c9bc 100644 --- a/drivers/tegra/hwpm/os/linux/ip_utils.c +++ b/drivers/tegra/hwpm/os/linux/ip_utils.c @@ -150,6 +150,15 @@ static u32 tegra_hwpm_translate_soc_hwpm_ip(struct tegra_soc_hwpm *hwpm, case TEGRA_SOC_HWPM_IP_NVTHERM: ip_enum_idx = TEGRA_HWPM_IP_NVTHERM; break; + case TEGRA_SOC_HWPM_IP_CSN: + ip_enum_idx = TEGRA_HWPM_IP_CSN; + break; + case TEGRA_SOC_HWPM_IP_CSN_EXT_0: + ip_enum_idx = TEGRA_HWPM_IP_CSN_EXT_0; + break; + case TEGRA_SOC_HWPM_IP_CSNH: + ip_enum_idx = TEGRA_HWPM_IP_CSNH; + break; default: tegra_hwpm_err(hwpm, "Queried enum tegra_soc_hwpm_ip %d is invalid", @@ -318,6 +327,15 @@ u32 tegra_hwpm_translate_soc_hwpm_resource(struct tegra_soc_hwpm *hwpm, case TEGRA_SOC_HWPM_RESOURCE_NVTHERM: res_enum_idx = TEGRA_HWPM_RESOURCE_NVTHERM; break; + case TEGRA_SOC_HWPM_RESOURCE_CSN: + res_enum_idx = TEGRA_HWPM_RESOURCE_CSN; + break; + case TEGRA_SOC_HWPM_RESOURCE_CSN_EXT_0: + res_enum_idx = TEGRA_HWPM_RESOURCE_CSN_EXT_0; + break; + case TEGRA_SOC_HWPM_RESOURCE_CSNH: + res_enum_idx = TEGRA_HWPM_RESOURCE_CSNH; + break; default: tegra_hwpm_err(hwpm, "Queried enum tegra_soc_hwpm_resource %d is invalid", diff --git a/include/uapi/linux/tegra-soc-hwpm-uapi.h b/include/uapi/linux/tegra-soc-hwpm-uapi.h index fd55184..9e4a515 100644 --- a/include/uapi/linux/tegra-soc-hwpm-uapi.h +++ b/include/uapi/linux/tegra-soc-hwpm-uapi.h @@ -63,6 +63,9 @@ enum tegra_soc_hwpm_ip { TEGRA_SOC_HWPM_IP_UCF_SCB, TEGRA_SOC_HWPM_IP_CPU, TEGRA_SOC_HWPM_IP_NVTHERM, + TEGRA_SOC_HWPM_IP_CSN, /* CSN instance 0-31 */ + TEGRA_SOC_HWPM_IP_CSN_EXT_0, /* CSN (extended) instance 32-63 */ + TEGRA_SOC_HWPM_IP_CSNH, TERGA_SOC_HWPM_NUM_IPS }; @@ -151,6 +154,9 @@ enum tegra_soc_hwpm_resource { TEGRA_SOC_HWPM_RESOURCE_UCF_SCB, TEGRA_SOC_HWPM_RESOURCE_CPU, TEGRA_SOC_HWPM_RESOURCE_NVTHERM, + TEGRA_SOC_HWPM_RESOURCE_CSN, /* CSN instance 0-31 */ + TEGRA_SOC_HWPM_RESOURCE_CSN_EXT_0, /* CSN (extended) instance 32-63 */ + TEGRA_SOC_HWPM_RESOURCE_CSNH, TERGA_SOC_HWPM_NUM_RESOURCES }; diff --git a/libnvsochwpm/include/nv_soc_hwpm.h b/libnvsochwpm/include/nv_soc_hwpm.h index 2baee0c..b1e7548 100644 --- a/libnvsochwpm/include/nv_soc_hwpm.h +++ b/libnvsochwpm/include/nv_soc_hwpm.h @@ -74,6 +74,9 @@ typedef enum { NV_SOC_HWPM_IP_UCF_SCB, NV_SOC_HWPM_IP_CPU, NV_SOC_HWPM_IP_NVTHERM, + NV_SOC_HWPM_IP_CSN, /* CSN instance 0-31 */ + NV_SOC_HWPM_IP_CSN_EXT_0, /* CSN (extended) instance 32-63 */ + NV_SOC_HWPM_IP_CSNH, NV_SOC_HWPM_NUM_IPS } nv_soc_hwpm_ip; @@ -137,6 +140,9 @@ typedef enum { NV_SOC_HWPM_RESOURCE_UCF_SCB, NV_SOC_HWPM_RESOURCE_CPU, NV_SOC_HWPM_RESOURCE_NVTHERM, + NV_SOC_HWPM_RESOURCE_CSN, /* CSN instance 0-31 */ + NV_SOC_HWPM_RESOURCE_CSN_EXT_0, /* CSN (extended) instance 32-63 */ + NV_SOC_HWPM_RESOURCE_CSNH, NV_SOC_HWPM_NUM_RESOURCES } nv_soc_hwpm_resource; diff --git a/libnvsochwpm/os/lnx/nv_soc_hwpm_lnx.c b/libnvsochwpm/os/lnx/nv_soc_hwpm_lnx.c index d432e3e..3ea9347 100644 --- a/libnvsochwpm/os/lnx/nv_soc_hwpm_lnx.c +++ b/libnvsochwpm/os/lnx/nv_soc_hwpm_lnx.c @@ -124,6 +124,12 @@ static uint32_t get_ip_max_instances( switch (ip) { case NV_SOC_HWPM_IP_NVTHERM: return 1; + case NV_SOC_HWPM_IP_CSN: + return 32; + case NV_SOC_HWPM_IP_CSN_EXT_0: + return 10; + case NV_SOC_HWPM_IP_CSNH: + return 7; default: break; }