PPU Slave (SL) v1 Functions

group group_prot_functions_ppu_sl

Functions

cy_en_prot_status_t Cy_Prot_ConfigPpuFixedSlMasterStruct(PERI_GR_PPU_SL_Type *base, const cy_stc_ppu_sl_cfg_t *config)

Configures a Fixed Peripheral Slave Protection Unit (PPU SL) master protection struct with its protection attributes.

This function configures the master struct governing the corresponding slave struct pair. It is a mechanism to protect the slave PPU SL struct. Since the memory location of the slave struct is known, the address, regionSize and subregions of the configuration struct are not applicable.

Note that only the user/privileged write permissions are configurable. The read and execute permissions are read-only and cannot be configured.

note

This function is applicable for CPUSS ver_1 only.

Status

Description

CY_PROT_SUCCESS

PPU SL master struct was successfully configured.

CY_PROT_FAILURE

The resource is locked.

CY_PROT_BAD_PARAM

An incorrect/invalid parameter was passed.

CY_PROT_INVALID_STATE

The function was called on the device with an unsupported PERI HW version.

Return

Status of the function call.

Function Usage


    /* Scenario: A bus master must not be able to access the PERI_GR_PPU_SL_CRYPTO
                 master and slave structs unless operating with PC=0, "secure" and
                 "privileged" access settings. The PERI_GR_PPU_SL_CRYPTO slave struct
                 is  already configured and enabled. */
    
    cy_stc_ppu_sl_cfg_t slPpuCfg_m = {
        /*.userPermission =*/ CY_PROT_PERM_R,       /* Read access always available for Master */
        /*.privPermission =*/ CY_PROT_PERM_RW,      /*  Allow read and write privileged mode accesses */
        /*.secure =*/ true,                         /* Only allow "secure" bus masters */
        /*.pcMatch =*/ false,                       /* Perform access evaluation */
        /*.pcMask =*/ (uint16_t)0UL                 /* Only allow PC=0 bus masters */
    };
    
    /* Configure the master struct of PPU Slave (SL) governing the Crypto registers */
    if(CY_PROT_SUCCESS != Cy_Prot_ConfigPpuFixedSlMasterStruct(PERI_GR_PPU_SL_CRYPTO, &slPpuCfg_m))
    {
        /* Insert error handling */
    }
    else
    {
        /* Enable the master struct of PPU Slave (SL) governing the Crypto registers */
        if(CY_PROT_SUCCESS != Cy_Prot_EnablePpuFixedSlMasterStruct(PERI_GR_PPU_SL_CRYPTO))
        {
            /* Insert error handling */
        }
    }

Parameters
  • base: The register base address of the protection struct being configured.

  • config: Initialization structure with all the protection attributes.

cy_en_prot_status_t Cy_Prot_ConfigPpuFixedSlSlaveStruct(PERI_GR_PPU_SL_Type *base, const cy_stc_ppu_sl_cfg_t *config)

Configures a Fixed Peripheral Slave Protection Unit (PPU SL) slave protection struct with its protection attributes.

This function configures the slave struct of a PPU SL pair, which can protect an entire peripheral slave instance from invalid bus master accesses. For example, TCPWM0, TCPWM1, SCB0 and SCB1 etc.

Each fixed PPU SL is devoted to a defined peripheral slave. Hence the address, regionSize and subregions of the configuration struct are not applicable.

Note that the user/privileged execute accesses are read-only and are always enabled.

note

This function is applicable for CPUSS ver_1 only.

Status

Description

CY_PROT_SUCCESS

PPU SL slave struct was successfully configured.

CY_PROT_FAILURE

The resource is locked.

CY_PROT_BAD_PARAM

An incorrect/invalid parameter was passed.

CY_PROT_INVALID_STATE

The function was called on the device with an unsupported PERI HW version.

Return

Status of the function call.

Function Usage


    /* Scenario: A bus master must not be able to access the Crypto registers 
                (governed by a dedicated slave PPU) unless it has the "secure"
                 attribute and is operating in "privileged" mode at PC=0 or PC=2. */
    
    cy_stc_ppu_sl_cfg_t slPpuCfg_s = {
        /*.userPermission =*/ CY_PROT_PERM_DISABLED,/* Disallow all user mode accesses */
        /*.privPermission =*/ CY_PROT_PERM_RW,      /* Allow Read and Write privileged mode accesses */
        /*.secure =*/ true,                         /* Only allow "secure" bus masters */
        /*.pcMatch =*/ false,                       /* Perform access evaluation */
        /*.pcMask =*/ (uint16_t)CY_PROT_PCMASK2     /* Allow PC=0 and PC=2 accesses */
    };
    
    /* Configure the slave struct of PPU Slave (SL) governing the Crypto registers */
    if(CY_PROT_SUCCESS != Cy_Prot_ConfigPpuFixedSlSlaveStruct(PERI_GR_PPU_SL_CRYPTO, &slPpuCfg_s))
    {
        /* Insert error handling */
    }
    else
    {
        /* Enable the slave struct of PPU Slave (SL) governing the Crypto registers  */
        if(CY_PROT_SUCCESS != Cy_Prot_EnablePpuFixedSlSlaveStruct(PERI_GR_PPU_SL_CRYPTO))
        {
            /* Insert error handling */
        }
    }

Parameters
  • base: The register base address of the protection structure being configured.

  • config: Initialization structure with all the protection attributes.

cy_en_prot_status_t Cy_Prot_EnablePpuFixedSlMasterStruct(PERI_GR_PPU_SL_Type *base)

Enables the Master PPU SL structure.

This is a PPU SL master struct enable function. The PPU SL protection settings will take effect after successful completion of this function call.

note

This function is applicable for CPUSS ver_1 only.

Status

Description

CY_PROT_SUCCESS

The Master PU struct was enabled.

CY_PROT_FAILURE

The Master PU struct is disabled and possibly locked.

CY_PROT_INVALID_STATE

The function was called on the device with an unsupported PERI HW version.

Return

Status of the function call.

Function Usage


    /* Scenario: The master struct of PERI_GR_PPU_SL_CRYPTO is configured to 
                 protect its slave struct and needs to be enabled. */
    
    if(CY_PROT_SUCCESS != Cy_Prot_EnablePpuFixedSlMasterStruct(PERI_GR_PPU_SL_CRYPTO))
    {
        /* Insert error handling */
    }
    

Parameters
  • base: The base address for the protection unit structure being configured.

cy_en_prot_status_t Cy_Prot_DisablePpuFixedSlMasterStruct(PERI_GR_PPU_SL_Type *base)

Disables the Master PPU SL structure.

This is a PPU SL master struct disable function. The PPU SL protection settings will seize to take effect after successful completion of this function call.

note

This function is applicable for CPUSS ver_1 only.

Status

Description

CY_PROT_SUCCESS

The Master PU struct was disabled.

CY_PROT_FAILURE

The Master PU struct is enabled and possibly locked.

CY_PROT_INVALID_STATE

The function was called on the device with an unsupported PERI HW version.

Return

Status of the function call.

Function Usage

    
    /* Scenario: The master struct of PERI_GR_PPU_SL_CRYPTO needs to be disabled.
                 Or it needs to be reconfigured and hence must first be disabled. */
    
    if(CY_PROT_SUCCESS != Cy_Prot_DisablePpuFixedSlMasterStruct(PERI_GR_PPU_SL_CRYPTO))
    {
        /* Insert error handling */
    }

Parameters
  • base: The base address for the protection unit structure being configured.

cy_en_prot_status_t Cy_Prot_EnablePpuFixedSlSlaveStruct(PERI_GR_PPU_SL_Type *base)

Enables the Slave PPU SL structure.

This is a PPU SL slave struct enable function. The PPU SL protection settings will take effect after successful completion of this function call.

note

This function is applicable for CPUSS ver_1 only.

Status

Description

CY_PROT_SUCCESS

The Slave PU struct was enabled.

CY_PROT_FAILURE

The Slave PU struct is disabled and possibly locked.

CY_PROT_INVALID_STATE

The function was called on the device with an unsupported PERI HW version.

Return

Status of the function call.

Function Usage


    /* Scenario: The slave struct of PERI_GR_PPU_SL_CRYPTO is configured to 
                 protect the Crypto registers and needs to be enabled. */
    
    if(CY_PROT_SUCCESS != Cy_Prot_EnablePpuFixedSlSlaveStruct(PERI_GR_PPU_SL_CRYPTO))
    {
        /* Insert error handling */
    }

Parameters
  • base: The base address for the protection unit structure being configured.

cy_en_prot_status_t Cy_Prot_DisablePpuFixedSlSlaveStruct(PERI_GR_PPU_SL_Type *base)

Disables the Slave PPU SL structure.

This is a PPU SL slave struct disable function. The PPU SL protection settings will seize to take effect after successful completion of this function call.

note

This function is applicable for CPUSS ver_1 only.

Status

Description

CY_PROT_SUCCESS

The Slave PU struct was enabled.

CY_PROT_FAILURE

The Slave PU struct is disabled and possibly locked.

CY_PROT_INVALID_STATE

The function was called on the device with an unsupported PERI HW version.

Return

Status of the function call.

Function Usage

    
    /* Scenario: The slave struct of PERI_GR_PPU_SL_CRYPTO needs to be disabled.
                 Or it needs to be reconfigured and hence must first be disabled. */
    
    if(CY_PROT_SUCCESS != Cy_Prot_DisablePpuFixedSlSlaveStruct(PERI_GR_PPU_SL_CRYPTO))
    {
        /* Insert error handling */
    }

Parameters
  • base: The base address for the protection unit structure being configured.