/******************************************************************************/
/* Component Name   ICU-M Interface Library (ICUMIF)                          */
/******************************************************************************/
/* Product      : ICU-M Firmware                                              */
/******************************************************************************/
/*******************************************************************************
* Copyright(C) 2021-2023 Renesas Electronics Corporation.                       
*                                                                               
*          RENESAS ELECTRONICS CONFIDENTIAL AND PROPRIETARY                     
*                                                                               
* These instructions, statements, and programs are the confidential information 
* of Renesas Electronics Corporation. They must be used and modified solely for 
* the purpose for which it was furnished by Renesas Electronics Corporation.    
* All part of them must not be reproduced nor disclosed to others in any form,  
* without the prior written permission of Renesas Electronics Corporation.      
*******************************************************************************/

#if !defined(R_ICUMIF_API_MEM_CLUSTER_DEF_H)
#define R_ICUMIF_API_MEM_CLUSTER_DEF_H

/**********************************************************************************/
/* Type definition                                                                */
/**********************************************************************************/

typedef enum
{
    INSTALL_METHOD_0,
    INSTALL_METHOD_1,

    LAST_ITEM_INSTALL_METHOD = 0x01000000
} r_install_method_t;

typedef enum
{
    VERIF_ON_DEMAND,
    VERIF_FIRST_STAGE_BOOT,
    VERIF_SECOND_STAGE_BOOT,
    VERIF_BACK_GROUND,

    LAST_ITEM_VERIF_TYPE = 0x01000000
} r_verif_method_t;

typedef enum
{
    BOOTMODE_NORMAL,
    BOOTMODE_USER,
    BOOTMODE_BOTH,

    LAST_ITEM_BOOTMODE = 0x01000000
} r_boot_mode_t;

/**********************************************************************************/
/* Service parameters                                                             */
/**********************************************************************************/

typedef struct ISD_MEM_CLUSTER_DEF
{
    union
    {
        const uint32_t *p_data;
        uint64_t        padding_sys64;
    } ptr;
    uint32_t            data_size_in_bytes;
    r_mem_cluster_id_t  cluster_id;
    r_install_method_t  install_method;
    r_key_group_t       install_key_group;
    r_key_index_t       install_key_id;
    r_key_group_t       verif_key_group;
    r_key_index_t       verif_key_id;
    r_verif_method_t    verif_method;
    r_boot_mode_t       boot_mode;
    r_job_slice_t       job_slice_cmac_install;
} ISD_MEM_CLUSTER_DEF_t;

#endif /* R_ICUMIF_API_MEM_CLUSTER_DEF_H */
