Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

firmware: stratix10-svc: To support a command ATF Get Version

We are to support a new SMC Command of hexadecimal 0x200 that returns
the ATF Firmware major and minor version.

Signed-off-by: Ang Tien Sung <tien.sung.ang@intel.com>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
Link: https://lore.kernel.org/r/20220711223140.2307945-6-dinguyen@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Ang Tien Sung and committed by
Greg Kroah-Hartman
7935e899 1b4394c5

+33
+10
drivers/firmware/stratix10-svc.c
··· 343 343 cb_data->status = BIT(SVC_STATUS_OK); 344 344 cb_data->kaddr1 = &res.a1; 345 345 break; 346 + case COMMAND_SMC_SVC_VERSION: 347 + cb_data->status = BIT(SVC_STATUS_OK); 348 + cb_data->kaddr1 = &res.a1; 349 + cb_data->kaddr2 = &res.a2; 350 + break; 346 351 case COMMAND_RSU_DCMF_VERSION: 347 352 cb_data->status = BIT(SVC_STATUS_OK); 348 353 cb_data->kaddr1 = &res.a1; ··· 526 521 break; 527 522 case COMMAND_RSU_DCMF_STATUS: 528 523 a0 = INTEL_SIP_SMC_RSU_DCMF_STATUS; 524 + a1 = 0; 525 + a2 = 0; 526 + break; 527 + case COMMAND_SMC_SVC_VERSION: 528 + a0 = INTEL_SIP_SMC_SVC_VERSION; 529 529 a1 = 0; 530 530 a2 = 0; 531 531 break;
+18
include/linux/firmware/intel/stratix10-smc.h
··· 467 467 INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FIRMWARE_VERSION) 468 468 469 469 /** 470 + * Request INTEL_SIP_SMC_SVC_VERSION 471 + * 472 + * Sync call used to query the SIP SMC API Version 473 + * 474 + * Call register usage: 475 + * a0 INTEL_SIP_SMC_SVC_VERSION 476 + * a1-a7 not used 477 + * 478 + * Return status: 479 + * a0 INTEL_SIP_SMC_STATUS_OK 480 + * a1 Major 481 + * a2 Minor 482 + */ 483 + #define INTEL_SIP_SMC_SVC_FUNCID_VERSION 512 484 + #define INTEL_SIP_SMC_SVC_VERSION \ 485 + INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_SVC_FUNCID_VERSION) 486 + 487 + /** 470 488 * SMC call protocol for FPGA Crypto Service (FCS) 471 489 * FUNCID starts from 90 472 490 */
+5
include/linux/firmware/intel/stratix10-svc-client.h
··· 114 114 * @COMMAND_FIRMWARE_VERSION: query running firmware version, return status 115 115 * is SVC_STATUS_OK or SVC_STATUS_ERROR 116 116 * 117 + * @COMMAND_SMC_SVC_VERSION: Non-mailbox SMC SVC API Version, 118 + * return status is SVC_STATUS_OK 119 + * 117 120 * @COMMAND_RSU_DCMF_STATUS: query firmware for the DCMF status 118 121 * return status is SVC_STATUS_OK or SVC_STATUS_ERROR 119 122 * ··· 163 160 COMMAND_FCS_RANDOM_NUMBER_GEN, 164 161 /* for general status poll */ 165 162 COMMAND_POLL_SERVICE_STATUS = 40, 163 + /* Non-mailbox SMC Call */ 164 + COMMAND_SMC_SVC_VERSION = 200, 166 165 }; 167 166 168 167 /**