223 #ifndef __attribute__
224 #define __attribute__()
229 #define TISCI_BIT(n) (1UL << (n))
237 #ifndef SYSFW_DEVGRPS_H
250 #define DEVGRP_ALL (0x00U)
253 #define DEVGRP_00 ((0x01U) << 0U)
255 #define DEVGRP_01 ((0x01U) << 1U)
257 #define DEVGRP_02 ((0x01U) << 2U)
259 #define DEVGRP_03 ((0x01U) << 3U)
261 #define DEVGRP_04 ((0x01U) << 4U)
263 #define DEVGRP_05 ((0x01U) << 5U)
265 #define DEVGRP_06 ((0x01U) << 6U)
270 #define DEVGRP_DMSC ((0x01U) << 7U)
272 #define DEVGRP_DMSC_ALL (0xFFU)
277 #if defined(SOC_J721E) || defined(SOC_J7200)
278 #define SCICLIENT_COMMON_X509_HEADER_ADDR (0x41cffb00)
279 #elif defined(SOC_J721S2) || defined(SOC_J784S4)
280 #define SCICLIENT_COMMON_X509_HEADER_ADDR (0x41cfdb00)
282 #define SCICLIENT_COMMON_X509_HEADER_ADDR (0x41cffb00)
285 #define SCISERVER_COMMON_X509_HEADER_ADDR \
286 SCICLIENT_COMMON_X509_HEADER_ADDR
292 #define MAX_NUM_DEVGRPS (8U)
294 #include <ti/drv/sciclient/soc/sysfw/include/tisci/tisci_protocol.h>
295 #include <ti/drv/sciclient/soc/sysfw/include/tisci/tisci_boardcfg_macros.h>
296 #include <ti/drv/sciclient/soc/sysfw/include/tisci/tisci_boardcfg.h>
297 #include <ti/drv/sciclient/soc/sysfw/include/tisci/tisci_boardcfg_rm.h>
298 #include <ti/drv/sciclient/soc/sysfw/include/tisci/tisci_core.h>
299 #if defined (SOC_AM65XX)
300 #include <ti/drv/sciclient/soc/sysfw/include/am65x/tisci_resasg_types.h>
301 #include <ti/drv/sciclient/soc/sysfw/include/am65x/tisci_hosts.h>
302 #include <ti/drv/sciclient/soc/sysfw/include/am65x/tisci_sec_proxy.h>
303 #include <ti/drv/sciclient/soc/sysfw/include/am65x/tisci_boardcfg_constraints.h>
304 #include <ti/drv/sciclient/soc/sysfw/include/am65x/tisci_clocks.h>
305 #include <ti/drv/sciclient/soc/sysfw/include/am65x_sr2/tisci_clocks.h>
307 #if defined (SOC_J721E)
308 #include <ti/drv/sciclient/soc/sysfw/include/j721e/tisci_resasg_types.h>
309 #include <ti/drv/sciclient/soc/sysfw/include/j721e/tisci_hosts.h>
310 #include <ti/drv/sciclient/soc/sysfw/include/j721e/tisci_sec_proxy.h>
311 #include <ti/drv/sciclient/soc/sysfw/include/j721e/tisci_boardcfg_constraints.h>
313 #if defined (SOC_J7200)
314 #include <ti/drv/sciclient/soc/sysfw/include/j7200/tisci_resasg_types.h>
315 #include <ti/drv/sciclient/soc/sysfw/include/j7200/tisci_hosts.h>
316 #include <ti/drv/sciclient/soc/sysfw/include/j7200/tisci_sec_proxy.h>
317 #include <ti/drv/sciclient/soc/sysfw/include/j7200/tisci_boardcfg_constraints.h>
319 #if defined (SOC_AM64X)
320 #include <ti/drv/sciclient/soc/sysfw/include/am64x/tisci_resasg_types.h>
321 #include <ti/drv/sciclient/soc/sysfw/include/am64x/tisci_hosts.h>
322 #include <ti/drv/sciclient/soc/sysfw/include/am64x/tisci_sec_proxy.h>
323 #include <ti/drv/sciclient/soc/sysfw/include/am64x/tisci_boardcfg_constraints.h>
325 #if defined (SOC_J721S2)
326 #include <ti/drv/sciclient/soc/sysfw/include/j721s2/tisci_resasg_types.h>
327 #include <ti/drv/sciclient/soc/sysfw/include/j721s2/tisci_hosts.h>
328 #include <ti/drv/sciclient/soc/sysfw/include/j721s2/tisci_sec_proxy.h>
329 #include <ti/drv/sciclient/soc/sysfw/include/j721s2/tisci_boardcfg_constraints.h>
332 #define TISCI_HOST_ID_DMSC2DM TISCI_HOST_ID_TIFS2DM
334 #define TISCI_SEC_PROXY_DM2DMSC_WRITE_NOTIFY_RESP_THREAD_ID \
335 TISCI_SEC_PROXY_DM2TIFS_WRITE_NOTIFY_RESP_THREAD_ID
336 #define TISCI_SEC_PROXY_DM2DMSC_READ_RESPONSE_THREAD_ID \
337 TISCI_SEC_PROXY_DM2TIFS_READ_RESPONSE_THREAD_ID
339 #if defined (SOC_J784S4)
340 #include <ti/drv/sciclient/soc/sysfw/include/j784s4/tisci_resasg_types.h>
341 #include <ti/drv/sciclient/soc/sysfw/include/j784s4/tisci_hosts.h>
342 #include <ti/drv/sciclient/soc/sysfw/include/j784s4/tisci_sec_proxy.h>
343 #include <ti/drv/sciclient/soc/sysfw/include/j784s4/tisci_boardcfg_constraints.h>
346 #define TISCI_HOST_ID_DMSC2DM TISCI_HOST_ID_TIFS2DM
348 #define TISCI_SEC_PROXY_DM2DMSC_WRITE_NOTIFY_RESP_THREAD_ID \
349 TISCI_SEC_PROXY_DM2TIFS_WRITE_NOTIFY_RESP_THREAD_ID
350 #define TISCI_SEC_PROXY_DM2DMSC_READ_RESPONSE_THREAD_ID \
351 TISCI_SEC_PROXY_DM2TIFS_READ_RESPONSE_THREAD_ID
353 #if defined (SOC_J722S)
354 #include <ti/drv/sciclient/soc/sysfw/include/j722s/tisci_resasg_types.h>
355 #include <ti/drv/sciclient/soc/sysfw/include/j722s/tisci_hosts.h>
356 #include <ti/drv/sciclient/soc/sysfw/include/j722s/tisci_sec_proxy.h>
357 #include <ti/drv/sciclient/soc/sysfw/include/j722s/tisci_boardcfg_constraints.h>
358 #include <ti/drv/sciclient/soc/sysfw/include/tisci/lpm/tisci_lpm.h>
361 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_sec_macros.h>
362 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_dkek.h>
363 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_ext_otp.h>
364 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_firewall.h>
365 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_keystore.h>
366 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_procboot.h>
367 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_sa2ul_rm.h>
368 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_sec_handover.h>
369 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_secure_jtag.h>
370 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_soc_uid.h>
371 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_keywriter.h>
372 #include <ti/drv/sciclient/soc/sysfw/include/tisci/security/tisci_dkek.h>
373 #include <ti/drv/sciclient/soc/sysfw/include/tisci/lpm/tisci_lpm.h>
374 #include <ti/drv/sciclient/soc/sysfw/include/tisci/pm/tisci_pm_clock.h>
375 #include <ti/drv/sciclient/soc/sysfw/include/tisci/pm/tisci_pm_device.h>
376 #include <ti/drv/sciclient/soc/sysfw/include/tisci/pm/tisci_pm_core.h>
377 #include <ti/drv/sciclient/soc/sysfw/include/tisci/rm/tisci_rm_ra.h>
378 #include <ti/drv/sciclient/soc/sysfw/include/tisci/rm/tisci_rm_irq.h>
379 #include <ti/drv/sciclient/soc/sysfw/include/tisci/rm/tisci_rm_udmap.h>
380 #include <ti/drv/sciclient/soc/sysfw/include/tisci/rm/tisci_rm_psil.h>
381 #include <ti/drv/sciclient/soc/sysfw/include/tisci/rm/tisci_rm_shared.h>
382 #include <ti/drv/sciclient/soc/sysfw/include/tisci/rm/tisci_rm_core.h>
383 #include <ti/drv/sciclient/soc/sysfw/include/tisci/rm/tisci_rm_proxy.h>
384 #include <ti/drv/sciclient/soc/sciclient_soc_priv.h>
385 #include <ti/drv/sciclient/include/sciclient_soc.h>
392 #include <ti/drv/sciclient/include/sciclient_boardcfg.h>
415 #define SCICLIENT_SERVICE_OPERATION_MODE_POLLED (0U)
416 #define SCICLIENT_SERVICE_OPERATION_MODE_INTERRUPT (1U)
428 #define SCICLIENT_SERVICE_WAIT_FOREVER (0xFFFFFFFFU)
429 #define SCICLIENT_SERVICE_NO_WAIT (0x0U)
433 #define SCICLIENT_FT_PASS (0xA5A5U)
435 #define SCICLIENT_FT_FAIL (0x5A5AU)
741 uint8_t * pCommonHeader, uint8_t * pBoardCfgHeader,
742 const Sciclient_BoardCfgPrms_t * pInPmPrms,
743 const Sciclient_BoardCfgPrms_t * pInRmPrms);
757 uint8_t * pCommonHeader,
758 Sciclient_BoardCfgPrms_t * pInPmPrms,
759 Sciclient_BoardCfgPrms_t * pInRmPrms);
int32_t Sciclient_deinit(void)
De-initialization of sciclient. This de-initialization is specific to the application....
int32_t Sciclient_init(const Sciclient_ConfigPrms_t *pCfgPrms)
This API is called once for registering interrupts and creating semaphore handles to be able to talk ...
uint8_t devgrp_t
Defines the sysfw DEVGRP type. This is meant to be used in code or data structures that require disti...
Definition: sciclient.h:242
int32_t Sciclient_bootNotification(void)
This API is called in place of Sciclient_loadFirmware for the Combined ROM boot image,...
int32_t Sciclient_pmicShutdown(void)
Sciclient PMIC shutdown function.
int32_t Sciclient_abiCheck(void)
int32_t Sciclient_configPrmsInit(Sciclient_ConfigPrms_t *pCfgPrms)
Sciclient_ConfigPrms_t structure init function.
int32_t Sciclient_prepareSleep(void)
Sciclient Prepare Sleep Function.
uint8_t domgrp_t
Defines the sysfw DOMGRP type. This is meant to be used in code or data structures that require disti...
Definition: sciclient.h:235
int32_t Sciclient_service(const Sciclient_ReqPrm_t *pReqPrm, Sciclient_RespPrm_t *pRespPrm)
This API allows communicating with the System firmware which can be called to perform various functio...
void Sciclient_TisciMsgSetAckResp(struct tisci_header *hdr)
Send the Response in Ack. Used only with Sciserver or Sciclient Direct.
int32_t Sciclient_boardCfgParseHeader(uint8_t *pCommonHeader, Sciclient_BoardCfgPrms_t *pInPmPrms, Sciclient_BoardCfgPrms_t *pInRmPrms)
Parse the header left behind by the SBL in the SCISERVER. This is used in the SCISERVER App to read t...
void Sciclient_TisciMsgSetNakResp(struct tisci_header *hdr)
Send the Response in NAK. Used only with Sciserver or Sciclient Direct.
int32_t Sciclient_enterSleep(uint32_t *msg_recv)
Sciclient Enter Sleep Function.
int32_t Sciclient_loadFirmware(const uint32_t *pSciclient_firmware)
Loads the DMSC firmware. This is typically called by SBL. Load firmware does not require calling the ...
int32_t Sciclient_boardCfgPrepHeader(uint8_t *pCommonHeader, uint8_t *pBoardCfgHeader, const Sciclient_BoardCfgPrms_t *pInPmPrms, const Sciclient_BoardCfgPrms_t *pInRmPrms)
Prepare the header for the board configuration. This API is typically only used by SBL where it will ...
int32_t Sciclient_getDefaultBoardCfgInfo(Sciclient_DefaultBoardCfgInfo_t *pBoardCfgInfo)
API to get the default board config info.
uint32_t flags
Definition: sciclient.h:478
uint32_t respPayloadSize
Definition: sciclient.h:508
uint32_t c66xRatRegion
Definition: sciclient.h:460
Sciclient_BoardCfgPrms_t * pBoardCfgPrms
Definition: sciclient.h:452
uint8_t skipLocalBoardCfgProcess
Definition: sciclient.h:462
uint32_t boardCfgLowRmSize
Definition: sciclient.h:527
const uint8_t * pReqPayload
Definition: sciclient.h:482
uint32_t opModeFlag
Definition: sciclient.h:448
Sciclient_BoardCfgPrms_t inPmPrms
Definition: sciclient.h:465
uint16_t messageType
Definition: sciclient.h:476
uint8_t forwardStatus
Definition: sciclient.h:489
uint32_t boardCfgLowSecSize
Definition: sciclient.h:529
uint32_t boardCfgLowSize
Definition: sciclient.h:525
const uint32_t * boardCfgLowSec
Definition: sciclient.h:521
uint32_t reqPayloadSize
Definition: sciclient.h:484
uint32_t boardCfgLowPmSize
Definition: sciclient.h:531
uint32_t timeout
Definition: sciclient.h:486
Sciclient_BoardCfgPrms_t inRmPrms
Definition: sciclient.h:467
uint8_t * pRespPayload
Definition: sciclient.h:502
const uint32_t * boardCfgLowPm
Definition: sciclient.h:523
const uint32_t * boardCfgLowRm
Definition: sciclient.h:519
uint32_t flags
Definition: sciclient.h:500
const uint32_t * boardCfgLow
Definition: sciclient.h:517
uint32_t isSecureMode
Definition: sciclient.h:456
This file contains the definition of all the message IDs, message formats to be able to interact with...
This file contains the definition of all the message IDs, message formats to be able to interact with...
This file contains the definition of all the shim layer functions which request DMSC for generic serv...
This file contains the definition of all the message IDs, message formats to be able to interact with...
This file contains the definition of all the message IDs, message formats to be able to interact with...
This file contains the definition of all the message IDs, message formats to be able to interact with...
This file contains the definition of all the message IDs, message formats to be able to interact with...
Initialization parameters for sciclient. Pointer to this is passed to Sciclient_init.
Definition: sciclient.h:447
Input parameters for Sciclient_service function.
Definition: sciclient.h:516
Input parameters for Sciclient_service function.
Definition: sciclient.h:475
Output parameters for Sciclient_service function.
Definition: sciclient.h:499