mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
firmware: stratix10-svc: Add definition for voltage and temperature sensor
Add entry in Stratix 10 Service Layer to support temperature and voltage sensor. Signed-off-by: Khairul Anuar Romli <khairul.anuar.romli@altera.com> Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
This commit is contained in:
committed by
Dinh Nguyen
parent
3a86608788
commit
4f49088c16
@@ -34,7 +34,7 @@
|
|||||||
* timeout is set to 30 seconds (30 * 1000) at Intel Stratix10 SoC.
|
* timeout is set to 30 seconds (30 * 1000) at Intel Stratix10 SoC.
|
||||||
*/
|
*/
|
||||||
#define SVC_NUM_DATA_IN_FIFO 32
|
#define SVC_NUM_DATA_IN_FIFO 32
|
||||||
#define SVC_NUM_CHANNEL 3
|
#define SVC_NUM_CHANNEL 4
|
||||||
#define FPGA_CONFIG_DATA_CLAIM_TIMEOUT_MS 200
|
#define FPGA_CONFIG_DATA_CLAIM_TIMEOUT_MS 200
|
||||||
#define FPGA_CONFIG_STATUS_TIMEOUT_SEC 30
|
#define FPGA_CONFIG_STATUS_TIMEOUT_SEC 30
|
||||||
#define BYTE_TO_WORD_SIZE 4
|
#define BYTE_TO_WORD_SIZE 4
|
||||||
@@ -341,6 +341,8 @@ static void svc_thread_recv_status_ok(struct stratix10_svc_data *p_data,
|
|||||||
case COMMAND_RSU_MAX_RETRY:
|
case COMMAND_RSU_MAX_RETRY:
|
||||||
case COMMAND_RSU_DCMF_STATUS:
|
case COMMAND_RSU_DCMF_STATUS:
|
||||||
case COMMAND_FIRMWARE_VERSION:
|
case COMMAND_FIRMWARE_VERSION:
|
||||||
|
case COMMAND_HWMON_READTEMP:
|
||||||
|
case COMMAND_HWMON_READVOLT:
|
||||||
cb_data->status = BIT(SVC_STATUS_OK);
|
cb_data->status = BIT(SVC_STATUS_OK);
|
||||||
cb_data->kaddr1 = &res.a1;
|
cb_data->kaddr1 = &res.a1;
|
||||||
break;
|
break;
|
||||||
@@ -525,7 +527,17 @@ static int svc_normal_to_secure_thread(void *data)
|
|||||||
a1 = (unsigned long)pdata->paddr;
|
a1 = (unsigned long)pdata->paddr;
|
||||||
a2 = 0;
|
a2 = 0;
|
||||||
break;
|
break;
|
||||||
|
/* for HWMON */
|
||||||
|
case COMMAND_HWMON_READTEMP:
|
||||||
|
a0 = INTEL_SIP_SMC_HWMON_READTEMP;
|
||||||
|
a1 = pdata->arg[0];
|
||||||
|
a2 = 0;
|
||||||
|
break;
|
||||||
|
case COMMAND_HWMON_READVOLT:
|
||||||
|
a0 = INTEL_SIP_SMC_HWMON_READVOLT;
|
||||||
|
a1 = pdata->arg[0];
|
||||||
|
a2 = 0;
|
||||||
|
break;
|
||||||
/* for polling */
|
/* for polling */
|
||||||
case COMMAND_POLL_SERVICE_STATUS:
|
case COMMAND_POLL_SERVICE_STATUS:
|
||||||
a0 = INTEL_SIP_SMC_SERVICE_COMPLETED;
|
a0 = INTEL_SIP_SMC_SERVICE_COMPLETED;
|
||||||
@@ -1197,6 +1209,11 @@ static int stratix10_svc_drv_probe(struct platform_device *pdev)
|
|||||||
chans[2].name = SVC_CLIENT_FCS;
|
chans[2].name = SVC_CLIENT_FCS;
|
||||||
spin_lock_init(&chans[2].lock);
|
spin_lock_init(&chans[2].lock);
|
||||||
|
|
||||||
|
chans[3].scl = NULL;
|
||||||
|
chans[3].ctrl = controller;
|
||||||
|
chans[3].name = SVC_CLIENT_HWMON;
|
||||||
|
spin_lock_init(&chans[3].lock);
|
||||||
|
|
||||||
list_add_tail(&controller->node, &svc_ctrl);
|
list_add_tail(&controller->node, &svc_ctrl);
|
||||||
platform_set_drvdata(pdev, controller);
|
platform_set_drvdata(pdev, controller);
|
||||||
|
|
||||||
|
|||||||
@@ -620,4 +620,38 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)
|
|||||||
#define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA \
|
#define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA \
|
||||||
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA)
|
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request INTEL_SIP_SMC_HWMON_READTEMP
|
||||||
|
* Sync call to request temperature
|
||||||
|
*
|
||||||
|
* Call register usage:
|
||||||
|
* a0 Temperature Channel
|
||||||
|
* a1-a7 not used
|
||||||
|
*
|
||||||
|
* Return status
|
||||||
|
* a0 INTEL_SIP_SMC_STATUS_OK
|
||||||
|
* a1 Temperature Value
|
||||||
|
* a2-a3 not used
|
||||||
|
*/
|
||||||
|
#define INTEL_SIP_SMC_FUNCID_HWMON_READTEMP 32
|
||||||
|
#define INTEL_SIP_SMC_HWMON_READTEMP \
|
||||||
|
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_HWMON_READTEMP)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request INTEL_SIP_SMC_HWMON_READVOLT
|
||||||
|
* Sync call to request voltage
|
||||||
|
*
|
||||||
|
* Call register usage:
|
||||||
|
* a0 Voltage Channel
|
||||||
|
* a1-a7 not used
|
||||||
|
*
|
||||||
|
* Return status
|
||||||
|
* a0 INTEL_SIP_SMC_STATUS_OK
|
||||||
|
* a1 Voltage Value
|
||||||
|
* a2-a3 not used
|
||||||
|
*/
|
||||||
|
#define INTEL_SIP_SMC_FUNCID_HWMON_READVOLT 33
|
||||||
|
#define INTEL_SIP_SMC_HWMON_READVOLT \
|
||||||
|
INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_HWMON_READVOLT)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -11,12 +11,14 @@
|
|||||||
*
|
*
|
||||||
* fpga: for FPGA configuration
|
* fpga: for FPGA configuration
|
||||||
* rsu: for remote status update
|
* rsu: for remote status update
|
||||||
|
* hwmon: for hardware monitoring (voltage and temperature)
|
||||||
*/
|
*/
|
||||||
#define SVC_CLIENT_FPGA "fpga"
|
#define SVC_CLIENT_FPGA "fpga"
|
||||||
#define SVC_CLIENT_RSU "rsu"
|
#define SVC_CLIENT_RSU "rsu"
|
||||||
#define SVC_CLIENT_FCS "fcs"
|
#define SVC_CLIENT_FCS "fcs"
|
||||||
|
#define SVC_CLIENT_HWMON "hwmon"
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Status of the sent command, in bit number
|
* Status of the sent command, in bit number
|
||||||
*
|
*
|
||||||
* SVC_STATUS_OK:
|
* SVC_STATUS_OK:
|
||||||
@@ -70,6 +72,7 @@
|
|||||||
#define SVC_RSU_REQUEST_TIMEOUT_MS 300
|
#define SVC_RSU_REQUEST_TIMEOUT_MS 300
|
||||||
#define SVC_FCS_REQUEST_TIMEOUT_MS 2000
|
#define SVC_FCS_REQUEST_TIMEOUT_MS 2000
|
||||||
#define SVC_COMPLETED_TIMEOUT_MS 30000
|
#define SVC_COMPLETED_TIMEOUT_MS 30000
|
||||||
|
#define SVC_HWMON_REQUEST_TIMEOUT_MS 300
|
||||||
|
|
||||||
struct stratix10_svc_chan;
|
struct stratix10_svc_chan;
|
||||||
|
|
||||||
@@ -171,6 +174,9 @@ enum stratix10_svc_command_code {
|
|||||||
COMMAND_MBOX_SEND_CMD = 100,
|
COMMAND_MBOX_SEND_CMD = 100,
|
||||||
/* Non-mailbox SMC Call */
|
/* Non-mailbox SMC Call */
|
||||||
COMMAND_SMC_SVC_VERSION = 200,
|
COMMAND_SMC_SVC_VERSION = 200,
|
||||||
|
/* for HWMON */
|
||||||
|
COMMAND_HWMON_READTEMP,
|
||||||
|
COMMAND_HWMON_READVOLT
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user