From d2c4858afc6095181c60d44e91ff97e9d9cc957c Mon Sep 17 00:00:00 2001 From: Manoj Kumar Date: Fri, 18 Jan 2019 13:48:33 +0530 Subject: [PATCH 1/2] n1sdp/n1sdp_sensor: add sensor module Add module for on-chip temperature & voltage sensors. Change-Id: I0dda9e827e9b6c1ecac3899450d66b150771f526 Signed-off-by: Manoj Kumar --- .../n1sdp_sensor/include/mod_n1sdp_sensor.h | 97 ++++++++++++++++++ .../n1sdp_sensor/lib/mod_n1sdp_sensor.a | Bin 0 -> 6252 bytes 2 files changed, 97 insertions(+) create mode 100644 product/n1sdp/module/n1sdp_sensor/include/mod_n1sdp_sensor.h create mode 100644 product/n1sdp/module/n1sdp_sensor/lib/mod_n1sdp_sensor.a diff --git a/product/n1sdp/module/n1sdp_sensor/include/mod_n1sdp_sensor.h b/product/n1sdp/module/n1sdp_sensor/include/mod_n1sdp_sensor.h new file mode 100644 index 000000000..0e8e030d9 --- /dev/null +++ b/product/n1sdp/module/n1sdp_sensor/include/mod_n1sdp_sensor.h @@ -0,0 +1,97 @@ +/* + * Arm SCP/MCP Software + * Copyright (c) 2019, Arm Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef MOD_N1SDP_SENSOR_H +#define MOD_N1SDP_SENSOR_H + +#include +#include + +/*! + * \addtogroup GroupN1SDPModule N1SDP Product Modules + * @{ + */ + +/*! + * \defgroup GroupN1SDPSensor N1SDP Sensor Support + * + * \brief Driver for reading on-chip temperature & voltage sensor values. + * @{ + */ + +/*! + * \brief Temperature sensor indices. + */ +enum mod_n1sdp_temp_sensor_idx { + /*! Cluster 0 temperature sensor */ + MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER0, + + /*! Cluster 1 temperature sensor */ + MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER1, + + /*! SYSTOP temperature sensor */ + MOD_N1SDP_TEMP_SENSOR_IDX_SYSTEM, + + /*! Temperature sensor count */ + MOD_N1SDP_TEMP_SENSOR_COUNT, +}; + +/*! + * \brief Voltage sensor indices. + */ +enum mod_n1sdp_volt_sensor_idx { + /*! Cluster 0 Core 0 voltage sensor */ + MOD_N1SDP_VOLT_SENSOR_IDX_CLUS0CORE0 = MOD_N1SDP_TEMP_SENSOR_COUNT, + + /*! Cluster 0 Core 1 voltage sensor */ + MOD_N1SDP_VOLT_SENSOR_IDX_CLUS0CORE1, + + /*! Cluster 1 Core 0 voltage sensor */ + MOD_N1SDP_VOLT_SENSOR_IDX_CLUS1CORE0, + + /*! Cluster 1 Core 1 voltage sensor */ + MOD_N1SDP_VOLT_SENSOR_IDX_CLUS1CORE1, + + /*! SYSTOP voltage sensor */ + MOD_N1SDP_VOLT_SENSOR_IDX_SYSTEM, + + /*! Voltage sensor count */ + MOD_N1SDP_VOLT_SENSOR_COUNT, +}; + + +/*! + * \brief Temperature sensor element configuration. + */ +struct mod_n1sdp_temp_sensor_config { + /*! Threshold value to raise an alarm */ + int32_t alarm_threshold; + + /*! Threshold value to shutdown the temperature domain */ + int32_t shutdown_threshold; + + /*! Auxiliary sensor information */ + struct mod_sensor_info *info; +}; + +/*! + * \brief Voltage sensor element configuration. + */ +struct mod_n1sdp_volt_sensor_config { + /*! Auxiliary sensor information */ + struct mod_sensor_info *info; +}; + +/*! + * @} + */ + +/*! + * @} + */ + +#endif /* MOD_N1SDP_SENSOR_H */ diff --git a/product/n1sdp/module/n1sdp_sensor/lib/mod_n1sdp_sensor.a b/product/n1sdp/module/n1sdp_sensor/lib/mod_n1sdp_sensor.a new file mode 100644 index 0000000000000000000000000000000000000000..83e99202b70e9ed9f7b8deb5ca94d9650b314854 GIT binary patch literal 6252 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 L`AfrzKBM|?EdkbU literal 0 HcmV?d00001 -- GitLab From 463cfd83141ab12afd78ffb83337af9adaef5738 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Date: Fri, 18 Jan 2019 13:50:31 +0530 Subject: [PATCH 2/2] n1sdp: add config file for n1sdp sensor and include in build Change-Id: Ia89adb34fc8effd7e7eabc8f128b869d061a9871 Signed-off-by: Manoj Kumar --- product/n1sdp/scp_ramfw/config_sensor.c | 137 ++++++++++++++++++++++++ product/n1sdp/scp_ramfw/firmware.mk | 4 + 2 files changed, 141 insertions(+) create mode 100644 product/n1sdp/scp_ramfw/config_sensor.c diff --git a/product/n1sdp/scp_ramfw/config_sensor.c b/product/n1sdp/scp_ramfw/config_sensor.c new file mode 100644 index 000000000..783c6e783 --- /dev/null +++ b/product/n1sdp/scp_ramfw/config_sensor.c @@ -0,0 +1,137 @@ +/* + * Arm SCP/MCP Software + * Copyright (c) 2019, Arm Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include +#include +#include + +/* + * N1SDP sensor driver config + */ + +static struct mod_sensor_info info_temp_sensor = { + .type = MOD_SENSOR_TYPE_DEGREES_C, + .update_interval = 0, + .update_interval_multiplier = 0, + .unit_multiplier = 0, +}; + +static struct mod_sensor_info info_volt_sensor = { + .type = MOD_SENSOR_TYPE_VOLTS, + .update_interval = 0, + .update_interval_multiplier = 0, + .unit_multiplier = 0, +}; + +static const struct fwk_element n1sdp_sensor_element_table[] = { + [MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER0] = { + .name = "CLUS0 Temperature", + .data = &((struct mod_n1sdp_temp_sensor_config) { + .alarm_threshold = 70, + .shutdown_threshold = 80, + .info = &info_temp_sensor, + }), + }, + [MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER1] = { + .name = "CLUS1 Temperature", + .data = &((struct mod_n1sdp_temp_sensor_config) { + .alarm_threshold = 70, + .shutdown_threshold = 80, + .info = &info_temp_sensor, + }), + }, + [MOD_N1SDP_TEMP_SENSOR_IDX_SYSTEM] = { + .name = "SYS Temperature", + .data = &((struct mod_n1sdp_temp_sensor_config) { + .alarm_threshold = 70, + .shutdown_threshold = 80, + .info = &info_temp_sensor, + }), + }, + [MOD_N1SDP_VOLT_SENSOR_IDX_CLUS0CORE0] = { + .name = "CLUS0CORE0 Voltage", + .data = &((struct mod_n1sdp_volt_sensor_config) { + .info = &info_volt_sensor, + }), + }, + [MOD_N1SDP_VOLT_SENSOR_IDX_CLUS0CORE1] = { + .name = "CLUS0CORE1 Voltage", + .data = &((struct mod_n1sdp_volt_sensor_config) { + .info = &info_volt_sensor, + }), + }, + [MOD_N1SDP_VOLT_SENSOR_IDX_CLUS1CORE0] = { + .name = "CLUS1CORE0 Voltage", + .data = &((struct mod_n1sdp_volt_sensor_config) { + .info = &info_volt_sensor, + }), + }, + [MOD_N1SDP_VOLT_SENSOR_IDX_CLUS1CORE1] = { + .name = "CLUS1CORE1 Voltage", + .data = &((struct mod_n1sdp_volt_sensor_config) { + .info = &info_volt_sensor, + }), + }, + [MOD_N1SDP_VOLT_SENSOR_IDX_SYSTEM] = { + .name = "SYS Voltage", + .data = &((struct mod_n1sdp_volt_sensor_config) { + .info = &info_volt_sensor, + }), + }, + [MOD_N1SDP_VOLT_SENSOR_COUNT] = { 0 }, +}; + +static const struct fwk_element *get_n1sdp_sensor_element_table(fwk_id_t id) +{ + return n1sdp_sensor_element_table; +} + +struct fwk_module_config config_n1sdp_sensor = { + .get_element_table = get_n1sdp_sensor_element_table, +}; + + +/* + * Sensor module config + */ +static const struct fwk_element sensor_element_table[] = { + [MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER0] = { + .name = "CLUS0 Temperature", + .data = &((struct mod_sensor_dev_config) { + .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_N1SDP_SENSOR, + MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER0), + }), + }, + [MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER1] = { + .name = "CLUS1 Temperature", + .data = &((struct mod_sensor_dev_config) { + .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_N1SDP_SENSOR, + MOD_N1SDP_TEMP_SENSOR_IDX_CLUSTER1), + }), + }, + [MOD_N1SDP_TEMP_SENSOR_IDX_SYSTEM] = { + .name = "SYS Temperature", + .data = &((struct mod_sensor_dev_config) { + .driver_id = FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_N1SDP_SENSOR, + MOD_N1SDP_TEMP_SENSOR_IDX_SYSTEM), + }), + }, + [MOD_N1SDP_TEMP_SENSOR_COUNT] = { 0 }, +}; + +static const struct fwk_element *get_sensor_element_table(fwk_id_t module_id) +{ + return sensor_element_table; +} + +struct fwk_module_config config_sensor = { + .get_element_table = get_sensor_element_table, + .data = NULL, +}; diff --git a/product/n1sdp/scp_ramfw/firmware.mk b/product/n1sdp/scp_ramfw/firmware.mk index 989bfba6b..e395547e2 100644 --- a/product/n1sdp/scp_ramfw/firmware.mk +++ b/product/n1sdp/scp_ramfw/firmware.mk @@ -35,7 +35,10 @@ BS_FIRMWARE_MODULES := \ clock \ gtimer \ timer \ + n1sdp_sensor \ + sensor \ scmi_power_domain \ + scmi_sensor \ scmi_system_power \ scmi_management \ n1sdp_flash \ @@ -66,6 +69,7 @@ BS_FIRMWARE_SOURCES := \ config_clock.c \ config_n1sdp_flash.c \ config_n1sdp_pcie.c \ + config_sensor.c \ config_apcontext.c include $(BS_DIR)/firmware.mk -- GitLab