Firewall TISCI Description

This chapter provides information on Firewall API’s provided by system firmware. There are three firewall API as listed below.

TISCI Message ID Message Name Available in GP Avialable in HS-FS
0x9000 TISCI_MSG_SET_FWL_REGION. Yes Yes
0x9001 TISCI_MSG_GET_FWL_REGION. Yes Yes
0x9002 TISCI_MSG_CHANGE_FWL_OWNER. Yes Yes

Background Information

Each firewall in the system is assigned an owner. Ownership is assigned using Host ID. Only a owner of a firewall can

  • Configure the firewall permissions
  • Query the firewall permissions
  • Transfer the firewall ownership to another owner(host)

Note

For additional firewall information, checkout the Firewall FAQ.

Initial Configuration

System firmware configures the firewalls in the following manner on startup.

  1. DMSC/TIFS internal memories are firewalled. Firewall ownership is assigned to DMSC/TIFS.
  2. Secure proxy and associated resources required for DMSC/TIFS operation are firewalled. Firewall ownership is assigned to DMSC/TIFS.
  3. Navss/DMSS resources not used by DMSC/TIFS are firewalled and ownership of the firewalls is assigned to Resource Manager(RM). The intent is that RM programs the firewalls for Navss/DMSS resources based on resource assignment in board configuration.

API Description

TISCI_MSG_SET_FWL_REGION - Set Firewall region

Usage:

Message Type Normal
Secure Queue Only? No

TISCI Message ID

TISCI_MSG_SET_FWL_REGION          (0x9000U)

Message to set a firewall region configuration

struct tisci_msg_fwl_set_firewall_region_req

Request for configuring the firewall permissions.

Parameter Type Description
hdr struct tisci_header Common TI-SCI header
fwl_id u16 firewall ID in question. fwl_id is defined in the TRM.
region u16 Region or channel number to set config info This field is unused in case of a simple firewall and must be initialized to zero. In case of a region based firewall, this field indicates the region in question. (index starting from 0) In case of a channel based firewall, this field indicates the channel in question (index starting from 0)
n_permission_regs u32 Number of permission registers to set
control u32 Contents of the firewall CONTROL register to set
permissions u32 Contents of the firewall PERMISSION register to set
start_address soc_phys_addr_t Contents of the firewall START_ADDRESS register to set. The address is restricted to 44-bit; otherwise, it returns failure.
end_address soc_phys_addr_t Contents of the firewall END_ADDRESS register to set. The address is restricted to 44-bit; otherwise, it returns failure.

struct tisci_msg_fwl_set_firewall_region_resp

Response for configuring the firewall permissions.

Parameter Type Description
hdr struct tisci_header Generic TISCI message header. ACK response indicates that firewall configuration is succesful. NACK response indicates that the configuration was not performed.

TISCI_MSG_GET_FWL_REGION - Get Firewall region

Usage:

Message Type Normal
Secure Queue Only? No

TISCI Message ID

TISCI_MSG_GET_FWL_REGION          (0x9001U)

Message to get a firewall region configuration

struct tisci_msg_fwl_get_firewall_region_req

Request for retrieving the firewall permissions.

Parameter Type Description
hdr struct tisci_header Generic TISCI message header.
fwl_id u16 firewall ID in question. fwl_id is defined in the TRM.
region u16 Region or channel number to set config info
n_permission_regs u32 Number of permission registers to retrieve

This field is unused in case of a simple firewall and must be initialized to zero. In case of a region based firewall, this field indicates the region in question (index starting from 0). In case of a channel based firewall, this field indicates the channel in question (index starting from 0).

struct tisci_msg_fwl_get_firewall_region_resp

Response for retrieving the firewall permissions.

Parameter Type Description
hdr struct tisci_header Generic TISCI message header. A ACK response in the hdr indicates that the message was processed. successfully. A NACK response indicates failure to retrieve firewall permissions.
fwl_id u16 firewall ID in question. fwl_id is defined in the TRM.
region u16 Region or channel number to set config info This field is unused in case of a simple firewall and must be initialized to zero. In case of a region based firewall, this field indicates the region in question. (index starting from 0) In case of a channel based firewall, this field indicates the channel in question (index starting from 0)
n_permission_regs u32 Number of permission registers retrieved
control u32 Contents of the firewall CONTROL register
permissions u32 Contents of the firewall PERMISSION registers
start_address soc_phys_addr_t Contents of the firewall START_ADDRESS register This is not applicable for channelized firewalls. The returned address is restricted to 44-bit.
end_address soc_phys_addr_t Contents of the firewall END_ADDRESS register This is not applicable for channelized firewalls. The returned address is restricted to 44-bit.

TISCI_MSG_CHANGE_FWL_OWNER - Change Firewall Owner

Usage:

Message Type Normal
Secure Queue Only? No

TISCI Message ID

TISCI_MSG_CHANGE_FWL_OWNER          (0x9002U)

Message to change firewall region owner

struct tisci_msg_fwl_change_owner_info_req

Request for a change owner operation

Parameter Type Description
hdr struct tisci_header Common TI-SCI header
fwl_id u16 firewall ID in question
region u16 Region or channel number if applicable
owner_index u8 New owner index to transfer ownership to

struct tisci_msg_fwl_change_owner_info_resp

Response for a change owner operation

Parameter Type Description
hdr struct tisci_header Common TI-SCI header ACK response indicates that change owner operation is succesful. NACK response indicates that change owner operation failed.
fwl_id u16 firewall ID specified in request
region u16 Region or channel number specified in request
owner_index u8 owner index specified in request
owner_privid u8 new owner priv-ID returned by DMSC. This field is currently initialized to zero by DMSC.
owner_permission_bits u16 new owner permission bits returned by DMSC. This field is currently initialized to zero by DMSC.