Inter-Processor Communication
Introduction
There are multiple processors integrated into the chip. The Inter-Processor Communication (IPC) hardware establishes dedicated communication channels between every two processors.
The IPC provides a set of registers for each processor and realizes inter-processor communication via interrupts. Additionally, interrupts can be independently masked by each processor to support polled-mode operation.
The IPC communication data must be located in a common memory, which is not part of the IPC block.
Features
{{IC_PARAM_IPC_CH}}TRx channels between every two processors
{{IC_PARAM_IPC_CH}}TRx channels between every two processors
{{IC_PARAM_IPC_CH}}TRx channels between every two processors
{{IC_PARAM_IPC_CH}}TRx channels between every two processors
{{IC_PARAM_IPC_CH}}TRx channels between every two processors
{{IC_PARAM_IPC_CH}}TRx channels between every two processors
{{IC_PARAM_IPC_CH}}TRx channels between every two processors
Independent trx channels
Channel-independent interrupt control
Support Rx channel full interrupt
Support Tx channel empty interrupt
Shared memory
Block Diagram
The IPC provides simple communication between every two processors. It can use shared SRAM to transmit information to other CPU(s). The system block diagram of IPC is shown in the following figure.
The IPC submodule structure of each processor is the same. The following figure summarizes the submodule’s structure of IPC_CPUm.
Between every two processors, one processor has 2 sets of communication channels, 1 set for transmitting data (Tx) to the other processor by writing Tx Data Register, and the other set for receiving data (Rx) from the other processor by checking Rx Data Register.
In addition to data registers, there are also interrupt-related registers:
Interrupt Status Register (ISR) is used to present current channel Tx empty or Rx full status change.
Interrupt Mask Register (IMR) is used to enable interrupts for Tx empty or Rx full.
Interrupt Clear Register (ICR) is used to clear the corresponding interrupt status.
The following figure demonstrates message transmission from CPUn to CPUm.
Functional Description
Message Transmit
Between every two processors, one processor has 2 sets of channels to communicate with the other processor. Channel index of Tx channels and the corresponding Rx channels are one-to-one mapping.
IPC message transmitting mapping shows the IPC transmit mapping from CPUn to CPUm, and IPC message receiving mapping shows the IPC mapping from CPUm to CPUn after receiving data.
IPC message transmitting mapping
IPC message receiving mapping
REG_TX_DATA of CPUn is used by CPUn to transmit data to CPUm, once
1is written to the channel x (x could be 0 ~ M, where M means max channel index), the corresponding bit in REG_RX_DATA of CPUm will be set. The Rx full bit of channel x in REG_ISR of CPUm will be set at the same time.Writing
1to channel x in REG_ISR of CPUm clears the Rx full interrupt of channel x, the corresponding channel x Tx empty interrupt bit in REG_ISR of CPUn will be set automatically.
IPC without Handshake
As there are Rx full and Tx empty interrupts for each processor, these functions can be used to realize message transmission and handshake.
IPC message transmission flow without handshake shows the interrupt messaging protocol of IPC without waiting for a handshake from receiver, and steps are summarized in IPC message transmission steps without handshake. It takes the message transmission from CPUn to CPUm for example.
IPC message transmission flow without handshake
Step |
Description |
|---|---|
1 |
Check the Tx data status of the channel 0 in CPUn IPC Tx Data Register |
2 |
CPUn writes data to the Common Memory |
3 |
Write |
4 |
The CPUn IPC Tx Data Register write operation
|
5 |
If the Rx full interrupt mask is enabled in CPUm Interrupt Mask Register, a Rx full interrupt request will be generated to CPUm. |
6 |
After checking Rx full channel, CPUm performs a data read from the corresponding Common Memory |
7 |
After finishing the interrupt handler, CPUm writes |
8 |
The CPUm Interrupt Status Register write operation
|
9 |
Clear the channel 0 bit in CPUm IPC Rx Data Register and CPUn IPC Tx Data Register automatically |
IPC with Handshake
IPC message transmission flow with handshake shows the interrupt messaging protocol of IPC with waiting for a handshake from receiver, and steps are summarized in IPC message transmission steps with handshake. It takes the message transmission from CPUn to CPUm for example.
IPC message transmission flow with handshake
Step |
Description |
|---|---|
1 |
Check the Tx data status of the channel 0 in CPUn IPC Tx Data Register |
2 |
CPUn writes data to the Common Memory |
3 |
Write |
4 |
The CPUn IPC Tx Data Register write operation
|
5 |
If the Rx full interrupt mask is enabled in CPUm Interrupt Mask Register, a Rx full interrupt request will be generated to CPUm. |
6 |
After checking Rx full channel, CPUm performs a data read from the corresponding Common Memory |
7 |
After finishing the interrupt handler, CPUm write |
8 |
The IPC Interrupt Status Register write operation
|
9 |
Clear the channel 0 bit in CPUm IPC Rx Data Register and CPUn IPC Tx Data Register automatically |
10 |
If Tx empty mask is enabled in CPUn Interrupt Mask Register, the setting of the Tx empty bit in the CPUn Status Register generates a Tx Empty interrupt to CPUn |
11 |
CPUn writes |
Hardware Semaphore
Overview
The hardware semaphore is used for a mutual exclusion mechanism. It can be accessed by the cores in an atomic operation.
Traditionally, the software takes three steps to use the semaphore: read -> write -> read.
The first read operation of the CPU is to poll the current semaphore to check whether it is occupied or not.
If this semaphore is free, the CPU will compete it by writing.
The last read operation is to check whether the CPU has already occupied this semaphore because maybe several CPUs or threads write to compete the same semaphore.
The above flow executed by software is offloaded to hardware. The following figure illustrates the hardware semaphore mechanism.
The address mapping is responsible for mapping the
Nbit semaphore status toNx 4 address space, whereNrepresents the total number of hardware semaphore.The read set logic is responsible for determining the status of the semaphore to be read after receiving the read request. If the corresponding semaphore register is 0, the read set logic will set the semaphore register first, then return 0 to the read request.
The write clear logic is responsible for clearing the status of the semaphore to 0 after receiving write request.
The semaphore register has
Nbits, and each bit in the register represents a semaphore. This register can be read directly, or read/written through the address mapped register.If the semaphore register is read through the address mapped register, the status of only one bit can be read at a time, and this bit will be set synchronously when it is 0.
If the semaphore register is read directly, the read does not change the status of the semaphore, and all the
Nbits can be read at a time.
N equals {{IC_PARAM_IPC_SEMA}}.
N equals {{IC_PARAM_IPC_SEMA}}.
N equals {{IC_PARAM_IPC_SEMA}}.
N equals {{IC_PARAM_IPC_SEMA}}.
N equals {{IC_PARAM_IPC_SEMA}}.
N equals {{IC_PARAM_IPC_SEMA}}.
N equals {{IC_PARAM_IPC_SEMA}}.
Address Mapping
If the bit[0] of the semaphore register can be acquired and released through the base address of address mapping, the bit[1] can be acquired and released through (base address + 4) accordingly. Thus the address of the entire access window ranges from 0 to ( N x 4 - 1), where N is the total number of hardware semaphore.
Acquire Flow
If the software wants to require the semaphore 0, it can directly read the base address of the access window register.
If the bit is 0 when the hardware receives the read request, the hardware will set this bit and return 0 synchronously. At this time, the acquire flow will be regarded as successful by software.
If the bit is 1 when the hardware receives the read request, the hardware will directly return 1. At this time, the acquire flow will be regarded as failed by software.
Release Flow
If the software wants to release the semaphore 0, it can directly write the base address of the access window register. The hardware will clear this bit after receiving the write command.
Inquire Flow
If the software wants to inquire the semaphore status, it can directly read the semaphore registers (without address mapping). This operation only returns the semaphore status, but does not change it.
Registers
Base Address:
IPC0_REG : 0x41014000
IPC1_REG : 0x41014080
Name |
Address offset |
Access |
Description |
|---|---|---|---|
000h |
R/W |
Take NP's IPC as an example to describe the function of IPC's internal registers. The REG_TX_DATA is used to transmit message from NP to AP. (The logic cannot be generated automatically.) |
|
004h |
R/W |
This register is used to record Tx empty. |
|
008h |
R/W |
||
00Ch |
R/W |
This register can ensure that the software can manually clear the Tx register in an emergency. |
|
010h |
R |
||
014h |
R |
||
018h |
R/W |
REG_IPC_DATA
Name: Tx_Rx Register
Size: 32
Address offset: 000h
Read/write access: R/W
Take NP's IPC as an example to describe the function of IPC's internal registers. The REG_TX_DATA is
used to transmit message from NP to AP. (The logic cannot be generated automatically.)
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
TX0_DATA |
R/W |
0x0 |
After preparing descriptor, data and corresponding memory.
If the corresponding Rx full status bit in REG_ISR_CPU0 (e.g. isr_rx0_full_status6) is cleared, the corresponding bit in tx0_data will be cleaned automatically. |
15:0 |
RX0_DATA |
R |
0x0 |
Rx data automatically maps data from tx0_data of CPU0 |
REG_IPC_ISR
Name: Interrupt Empty Full Status Register
Size: 32
Address offset: 004h
Read/write access: R/W
This register is used to record Tx empty.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31 |
ISR_TX0_EMPTY_STATUS15 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
30 |
ISR_TX0_EMPTY_STATUS14 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
29 |
ISR_TX0_EMPTY_STATUS13 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
28 |
ISR_TX0_EMPTY_STATUS12 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
27 |
ISR_TX0_EMPTY_STATUS11 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
26 |
ISR_TX0_EMPTY_STATUS10 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
25 |
ISR_TX0_EMPTY_STATUS9 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
24 |
ISR_TX0_EMPTY_STATUS8 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
23 |
ISR_TX0_EMPTY_STATUS7 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
22 |
ISR_TX0_EMPTY_STATUS6 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
21 |
ISR_TX0_EMPTY_STATUS5 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
20 |
ISR_TX0_EMPTY_STATUS4 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
19 |
ISR_TX0_EMPTY_STATUS3 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
18 |
ISR_TX0_EMPTY_STATUS2 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
17 |
ISR_TX0_EMPTY_STATUS1 |
R/W |
0x0 |
Refer to the description of isr_tx0_empty_status0 |
16 |
ISR_TX0_EMPTY_STATUS0 |
R/W |
0x0 |
Tx channel 0 empty interrupt status of CPU1 transmit to CPU0. If the corresponding Rx full status bit in REG_ISR_CPU0 (e.g. isr_rx0_full_status0) is cleared, the corresponding Tx empty status bit will be set automatically. It will be cleared by software writing 1. |
15 |
ISR_RX0_FULL_STATUS15 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
14 |
ISR_RX0_FULL_STATUS14 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
13 |
ISR_RX0_FULL_STATUS13 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
12 |
ISR_RX0_FULL_STATUS12 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
11 |
ISR_RX0_FULL_STATUS11 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
10 |
ISR_RX0_FULL_STATUS10 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
9 |
ISR_RX0_FULL_STATUS9 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
8 |
ISR_RX0_FULL_STATUS8 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
7 |
ISR_RX0_FULL_STATUS7 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
6 |
ISR_RX0_FULL_STATUS6 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
5 |
ISR_RX0_FULL_STATUS5 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
4 |
ISR_RX0_FULL_STATUS4 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
3 |
ISR_RX0_FULL_STATUS3 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
2 |
ISR_RX0_FULL_STATUS2 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
1 |
ISR_RX0_FULL_STATUS1 |
R/W |
0x0 |
Refer to the description of isr_rx0_full_status0 |
0 |
ISR_RX0_FULL_STATUS0 |
R/W |
0x0 |
Rx channel 0 full interrupt status of CPU1. The corresponding Rx full status bit will be set by CPU0's Tx data register (tx0_data) channel 0. It will be cleared by software writing 1. |
REG_IPC_IMR
Name: Interrupt Empty Full Mask Register
Size: 32
Address offset: 008h
Read/write access: R/W
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
IMR_TX0_EMPTY_MASK |
R/W |
0x0 |
|
15:0 |
IMR_RX0_FULL_MASK |
R/W |
0x0 |
|
REG_IPC_ICR
Name: Clear Tx Register
Size: 32
Address offset: 00Ch
Read/write access: R/W
This register can ensure that the software can manually clear the Tx register in an emergency.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31 |
ICR_TX0_DATA_CLEAR15 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
30 |
ICR_TX0_DATA_CLEAR14 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
29 |
ICR_TX0_DATA_CLEAR13 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
28 |
ICR_TX0_DATA_CLEAR12 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
27 |
ICR_TX0_DATA_CLEAR11 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
26 |
ICR_TX0_DATA_CLEAR10 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
25 |
ICR_TX0_DATA_CLEAR9 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
24 |
ICR_TX0_DATA_CLEAR8 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
23 |
ICR_TX0_DATA_CLEAR7 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
22 |
ICR_TX0_DATA_CLEAR6 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
21 |
ICR_TX0_DATA_CLEAR5 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
20 |
ICR_TX0_DATA_CLEAR4 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
19 |
ICR_TX0_DATA_CLEAR3 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
18 |
ICR_TX0_DATA_CLEAR2 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
17 |
ICR_TX0_DATA_CLEAR1 |
R/W |
0x0 |
Refer to the description of icr_tx0_data_clear0 |
16 |
ICR_TX0_DATA_CLEAR0 |
R/W |
0x0 |
|
15:0 |
RSVD0 |
R/W |
0x0 |
REG_IPC_SEM_0
Size: 32
Address offset: 010h
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_0_DATA |
R |
0x0 |
It is used to indicate whether this semaphore is occupied. 0: Not occupied; 1: Occupied. |
REG_IPC_SEM_1
Size: 32
Address offset: 014h
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_1_DATA |
R |
0x0 |
It is used to indicate whether this semaphore is occupied. 0: Not occupied; 1: Occupied. |
REG_IPC_DUMMY
Name: Dummy Register
Size: 32
Address offset: 018h
Read/write access: R/W
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15:0 |
DUMMY |
R/W |
0x0 |
Dummy register |
Base Address:
IPC0_REG : 0x41020000
IPC1_REG : 0x41020080
IPC2_REG : 0x41020100
Name |
Address offset |
Access |
Description |
|---|---|---|---|
000h |
R/W |
Take LP's IPC as an example to describe the function of IPC's internal registers. The REG_TX_DATA is used to transmit message from LP to NP or AP. (The logic cannot be generated automatically) |
|
004h |
R |
The REG_RX_DATA is used to receive message from NP or AP. |
|
008h |
R/W |
This register is used to record Tx empty and Rx full status. |
|
00Ch |
R/W |
These bits mask their corresponding interrupt status bits. |
|
010h |
R/W |
This register can ensure that the software can manually clear the Tx register in an emergency. |
|
014h |
R/W |
||
018h |
R/W |
||
01Ch |
R/W |
||
020h |
R/W |
||
024h |
R/W |
REG_IPC_TX_DATA
Name: Tx Register
Size: 32
Address offset: 000h
Read/write access: R/W
Take LP's IPC as an example to describe the function of IPC's internal registers. The REG_TX_DATA is
used to transmit message from LP to NP or AP. (The logic cannot be generated automatically)
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15:8 |
TX0_DATA |
R/W |
0x0 |
After preparing descriptor, data and corresponding memory,
If the corresponding Rx full status bit in REG_ISR_CPU0 (eg. ISR_RX0_FULL_STATUS6) is cleared, the corresponding bit in tx0_data will be cleaned automatically. |
7:0 |
TX1_DATA |
R/W |
0x0 |
After preparing descriptor, data and corresponding memory,
If the corresponding Rx full status bit in REG_ISR_CPU1 (eg. ISR_RX1_FULL_STATUS6) is cleared, the corresponding bit in tx_data_ln will be cleaned automatically. |
REG_IPC_RX_DATA
Name: Rx Register
Size: 32
Address offset: 004h
Read/write access: R
The REG_RX_DATA is used to receive message from NP or AP.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15:8 |
RX0_DATA |
R |
0x0 |
Rx data automatically maps data from TX0_DATA of CPU0 |
7:0 |
RX1_DATA |
R |
0x0 |
Rx data automatically maps data from TX1_DATA of CPU1 |
REG_IPC_ISR
Name: Interrupt Status Register
Size: 32
Address offset: 008h
Read/write access: R/W
This register is used to record Tx empty and Rx full status.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31 |
ISR_RX0_FULL_STATUS7 |
R/W |
0x0 |
Rx channel 7 full interrupt status of CPU3. The corresponding Rx full status bit will be set by CPU0's Tx data register (tx0_data) channel 7. It will be cleared by software writing 1. |
30 |
ISR_RX0_FULL_STATUS6 |
R/W |
0x0 |
Refer to the description of the ISR_RX0_FULL_STATUS7. |
29 |
ISR_RX0_FULL_STATUS5 |
R/W |
0x0 |
Refer to the description of the ISR_RX0_FULL_STATUS7. |
28 |
ISR_RX0_FULL_STATUS4 |
R/W |
0x0 |
Refer to the description of the ISR_RX0_FULL_STATUS7. |
27 |
ISR_RX0_FULL_STATUS3 |
R/W |
0x0 |
Refer to the description of the ISR_RX0_FULL_STATUS7. |
26 |
ISR_RX0_FULL_STATUS2 |
R/W |
0x0 |
Refer to the description of the ISR_RX0_FULL_STATUS7. |
25 |
ISR_RX0_FULL_STATUS1 |
R/W |
0x0 |
Refer to the description of the ISR_RX0_FULL_STATUS7. |
24 |
ISR_RX0_FULL_STATUS0 |
R/W |
0x0 |
Refer to the description of the ISR_RX0_FULL_STATUS7. |
23 |
ISR_RX1_FULL_STATUS7 |
R/W |
0x0 |
Rx channel 7 full interrupt status of CPU3. The corresponding Rx full status bit will be set by CPU1's Tx data register (tx1_data) channel 7. It will be cleared by software writing 1. |
22 |
ISR_RX1_FULL_STATUS6 |
R/W |
0x0 |
Refer to the description of the ISR_RX1_FULL_STATUS7. |
21 |
ISR_RX1_FULL_STATUS5 |
R/W |
0x0 |
Refer to the description of the ISR_RX1_FULL_STATUS7. |
20 |
ISR_RX1_FULL_STATUS4 |
R/W |
0x0 |
Refer to the description of the ISR_RX1_FULL_STATUS7. |
19 |
ISR_RX1_FULL_STATUS3 |
R/W |
0x0 |
Refer to the description of the ISR_RX1_FULL_STATUS7. |
18 |
ISR_RX1_FULL_STATUS2 |
R/W |
0x0 |
Refer to the description of the ISR_RX1_FULL_STATUS7. |
17 |
ISR_RX1_FULL_STATUS1 |
R/W |
0x0 |
Refer to the description of the ISR_RX1_FULL_STATUS7. |
16 |
ISR_RX1_FULL_STATUS0 |
R/W |
0x0 |
Refer to the description of the ISR_RX1_FULL_STATUS7. |
15 |
ISR_TX0_EMPTY_STATUS7 |
R/W |
0x0 |
Tx channel 7 empty interrupt status of CPU3 transmit to CPU0. If the corresponding Rx full status bit in REG_ISR_CPU0 (eg. ISR_RX0_FULL_STATUS7) is cleared, the corresponding Tx empty status bit will be set automatically. It will be cleared by software writing 1. |
14 |
ISR_TX0_EMPTY_STATUS6 |
R/W |
0x0 |
Refer to the description of the ISR_TX0_EMPTY_STATUS7. |
13 |
ISR_TX0_EMPTY_STATUS5 |
R/W |
0x0 |
Refer to the description of the ISR_TX0_EMPTY_STATUS7. |
12 |
ISR_TX0_EMPTY_STATUS4 |
R/W |
0x0 |
Refer to the description of the ISR_TX0_EMPTY_STATUS7. |
11 |
ISR_TX0_EMPTY_STATUS3 |
R/W |
0x0 |
Refer to the description of the ISR_TX0_EMPTY_STATUS7. |
10 |
ISR_TX0_EMPTY_STATUS2 |
R/W |
0x0 |
Refer to the description of the ISR_TX0_EMPTY_STATUS7. |
9 |
ISR_TX0_EMPTY_STATUS1 |
R/W |
0x0 |
Refer to the description of the ISR_TX0_EMPTY_STATUS7. |
8 |
ISR_TX0_EMPTY_STATUS0 |
R/W |
0x0 |
Refer to the description of the ISR_TX0_EMPTY_STATUS7. |
7 |
ISR_TX1_EMPTY_STATUS7 |
R/W |
0x0 |
Tx channel 7 empty interrupt status of CPU3 transmit to CPU1. If the corresponding Rx full status bit in REG_ISR_CPU1 (eg. ISR_RX1_FULL_STATUS7) is cleared, the corresponding Tx empty status bit will be set automatically. It will be cleared by software writing 1. |
6 |
ISR_TX1_EMPTY_STATUS6 |
R/W |
0x0 |
Refer to the description of the ISR_TX1_EMPTY_STATUS7. |
5 |
ISR_TX1_EMPTY_STATUS5 |
R/W |
0x0 |
Refer to the description of the ISR_TX1_EMPTY_STATUS7. |
4 |
ISR_TX1_EMPTY_STATUS4 |
R/W |
0x0 |
Refer to the description of the ISR_TX1_EMPTY_STATUS7. |
3 |
ISR_TX1_EMPTY_STATUS3 |
R/W |
0x0 |
Refer to the description of the ISR_TX1_EMPTY_STATUS7. |
2 |
ISR_TX1_EMPTY_STATUS2 |
R/W |
0x0 |
Refer to the description of the ISR_TX1_EMPTY_STATUS7. |
1 |
ISR_TX1_EMPTY_STATUS1 |
R/W |
0x0 |
Refer to the description of the ISR_TX1_EMPTY_STATUS7. |
0 |
ISR_TX1_EMPTY_STATUS0 |
R/W |
0x0 |
Refer to the description of the ISR_TX1_EMPTY_STATUS7. |
REG_IPC_IMR
Name: Interrupt Mask Register
Size: 32
Address offset: 00Ch
Read/write access: R/W
These bits mask their corresponding interrupt status bits.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:24 |
IMR_RX0_FULL_MASK |
R/W |
0x0 |
|
23:16 |
IMR_RX1_FULL_MASK |
R/W |
0x0 |
|
15:8 |
IMR_TX0_EMPTY_MASK |
R/W |
0x0 |
|
7:0 |
IMR_TX1_EMPTY_MASK |
R/W |
0x0 |
|
REG_IPC_ICR
Name: Clear Tx Register
Size: 32
Address offset: 010h
Read/write access: R/W
This register can ensure that the software can manually clear the Tx register in an emergency.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15 |
ICR_TX0_DATA_CLEAR7 |
R/W |
0x0 |
|
14 |
ICR_TX0_DATA_CLEAR6 |
R/W |
0x0 |
Refer to the description of the ICR_TX0_DATA_CLEAR7. |
13 |
ICR_TX0_DATA_CLEAR5 |
R/W |
0x0 |
Refer to the description of the ICR_TX0_DATA_CLEAR7. |
12 |
ICR_TX0_DATA_CLEAR4 |
R/W |
0x0 |
Refer to the description of the ICR_TX0_DATA_CLEAR7. |
11 |
ICR_TX0_DATA_CLEAR3 |
R/W |
0x0 |
Refer to the description of the ICR_TX0_DATA_CLEAR7. |
10 |
ICR_TX0_DATA_CLEAR2 |
R/W |
0x0 |
Refer to the description of the ICR_TX0_DATA_CLEAR7. |
9 |
ICR_TX0_DATA_CLEAR1 |
R/W |
0x0 |
Refer to the description of the ICR_TX0_DATA_CLEAR7. |
8 |
ICR_TX0_DATA_CLEAR0 |
R/W |
0x0 |
Refer to the description of the ICR_TX0_DATA_CLEAR7. |
7 |
ICR_TX1_DATA_CLEAR7 |
R/W |
0x0 |
|
6 |
ICR_TX1_DATA_CLEAR6 |
R/W |
0x0 |
Refer to the description of the ICR_TX1_DATA_CLEAR7. |
5 |
ICR_TX1_DATA_CLEAR5 |
R/W |
0x0 |
Refer to the description of the ICR_TX1_DATA_CLEAR7. |
4 |
ICR_TX1_DATA_CLEAR4 |
R/W |
0x0 |
Refer to the description of the ICR_TX1_DATA_CLEAR7. |
3 |
ICR_TX1_DATA_CLEAR3 |
R/W |
0x0 |
Refer to the description of the ICR_TX1_DATA_CLEAR7. |
2 |
ICR_TX1_DATA_CLEAR2 |
R/W |
0x0 |
Refer to the description of the ICR_TX1_DATA_CLEAR7. |
1 |
ICR_TX1_DATA_CLEAR1 |
R/W |
0x0 |
Refer to the description of the ICR_TX1_DATA_CLEAR7. |
0 |
ICR_TX1_DATA_CLEAR0 |
R/W |
0x0 |
Refer to the description of the ICR_TX1_DATA_CLEAR7. |
REG_IPC_SEM_x
Name: Semaphore x Register
Size: 32
Address offset: 014h + 04h * x (x=0, 1, 2, 3)
Read/write access: R/W
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:12 |
RSVD |
R |
- |
Reserved |
11 |
SEMx_CLR |
R/W |
0x0 |
The bit can clear 'CPUID ' & 'PXID' when owner CPU writes 1. |
10 |
SEMx_SET_CPUID |
R/W |
0x0 |
The bit can set CPUID, It must be written at the same time as SEMx_PXID. |
9:8 |
SEMx_CPUID |
R |
0x0 |
‘CPUID’ bit is a read-only bit.
|
7:0 |
SEMx_PXID |
R/W |
0x0 |
CPUID_PXID, which is used to indicate who owns this semaphore when the CPUID is the same. |
REG_IPC_DUMMY
Name: Dummy Register
Size: 32
Address offset: 024h
Read/write access: R/W
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15:0 |
DUMMY |
R/W |
0x0 |
Dummy register |
REGISTER_CONTENTS=RTL8720E
REGISTER_CONTENTS=RTL8720E
REGISTER_CONTENTS=RTL8720E
Base Address:
IPCAP_REG : 0x41000580
IPCLP_REG : 0x42008600
IPCNP_REG : 0x41000500
Name |
Address offset |
Access |
Description |
|---|---|---|---|
000h |
R/W |
Take LP's IPC as an example to describe the function of IPC's internal registers.The REG_TX_DATA is used to transmit message from LP to NP or AP. |
|
004h |
R |
The REG_RX_DATA is used to receive message from NP or AP. |
|
008h |
R/W |
This register is used to record Tx empty and Rx full status. |
|
00Ch |
R/W |
These bits mask their corresponding interrupt status bits. |
|
010h |
R/W |
This register can ensure that the software can manually clear the Tx register in an emergency. |
REG_IPC_TX_DATA
Name: Tx Register
Size: 32
Address offset: 000h
Read/write access: R/W
Take LP's IPC as an example to describe the function of IPC's internal registers.The REG_TX_DATA is
used to transmit message from LP to NP or AP.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15:8 |
TX0_DATA |
R/W |
0x0 |
After preparing descriptor, data and corresponding memory,
If the corresponding Rx full status bit in REG_ISR_CPU0 (eg.isr_rx0_full_status6) is cleared, the corresponding bit in tx0_data will be cleaned automatically. |
7:0 |
TX1_DATA |
R/W |
0x0 |
After preparing descriptor, data and corresponding memory,
If the corresponding Rx full status bit in REG_ISR_CPU1 (eg.isr_rx1_full_status6) is cleared, the corresponding bit in tx_data_ln will be cleaned automatically. |
REG_IPC_RX_DATA
Name: Rx Register
Size: 32
Address offset: 004h
Read/write access: R
The REG_RX_DATA is used to receive message from NP or AP.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15:8 |
RX0_DATA |
R |
0x0 |
Rx data automatically maps data from tx0_data of CPU0 |
7:0 |
RX1_DATA |
R |
0x0 |
Rx data automatically maps data from tx1_data of CPU1 |
REG_IPC_ISR
Name: Interrupt Status Register
Size: 32
Address offset: 008h
Read/write access: R/W
This register is used to record Tx empty and Rx full status.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31 |
ISR_RX0_FULL_STATUS7 |
R/W |
0x0 |
Rx channel 7 full interrupt status of CPU3. The corresponding Rx full status bit will be set by CPU0's Tx data register (tx0_data) channel 7. It will be cleared by software writing 1. |
30 |
ISR_RX0_FULL_STATUS6 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status7. |
29 |
ISR_RX0_FULL_STATUS5 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status7. |
28 |
ISR_RX0_FULL_STATUS4 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status7. |
27 |
ISR_RX0_FULL_STATUS3 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status7. |
26 |
ISR_RX0_FULL_STATUS2 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status7. |
25 |
ISR_RX0_FULL_STATUS1 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status7. |
24 |
ISR_RX0_FULL_STATUS0 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status7. |
23 |
ISR_RX1_FULL_STATUS7 |
R/W |
0x0 |
Rx channel 7 full interrupt status of CPU3. The corresponding Rx full status bit will be set by CPU1's Tx data register (tx1_data) channel 7. It will be cleared by software writing 1. |
22 |
ISR_RX1_FULL_STATUS6 |
R/W |
0x0 |
Refer to the description of the isr_rx1_full_status7. |
21 |
ISR_RX1_FULL_STATUS5 |
R/W |
0x0 |
Refer to the description of the isr_rx1_full_status7. |
20 |
ISR_RX1_FULL_STATUS4 |
R/W |
0x0 |
Refer to the description of the isr_rx1_full_status7. |
19 |
ISR_RX1_FULL_STATUS3 |
R/W |
0x0 |
Refer to the description of the isr_rx1_full_status7. |
18 |
ISR_RX1_FULL_STATUS2 |
R/W |
0x0 |
Refer to the description of the isr_rx1_full_status7. |
17 |
ISR_RX1_FULL_STATUS1 |
R/W |
0x0 |
Refer to the description of the isr_rx1_full_status7. |
16 |
ISR_RX1_FULL_STATUS0 |
R/W |
0x0 |
Refer to the description of the isr_rx1_full_status7. |
15 |
ISR_TX0_EMPTY_STATUS7 |
R/W |
0x0 |
Tx channel 7 empty interrupt status of CPU3 transmit to CPU0. If the corresponding Rx full status bit in REG_ISR_CPU0 (eg.isr_rx0_full_status7) is cleared, the corresponding Tx empty status bit will be set automatically. It will be cleared by software writing 1. |
14 |
ISR_TX0_EMPTY_STATUS6 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status7. |
13 |
ISR_TX0_EMPTY_STATUS5 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status7. |
12 |
ISR_TX0_EMPTY_STATUS4 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status7. |
11 |
ISR_TX0_EMPTY_STATUS3 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status7. |
10 |
ISR_TX0_EMPTY_STATUS2 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status7. |
9 |
ISR_TX0_EMPTY_STATUS1 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status7. |
8 |
ISR_TX0_EMPTY_STATUS0 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status7. |
7 |
ISR_TX1_EMPTY_STATUS7 |
R/W |
0x0 |
Tx channel 7 empty interrupt status of CPU3 transmit to CPU1. If the corresponding Rx full status bit in REG_ISR_CPU1 (eg.isr_rx1_full_status7) is cleared, the corresponding Tx empty status bit will be set automatically. It will be cleared by software writing 1. |
6 |
ISR_TX1_EMPTY_STATUS6 |
R/W |
0x0 |
Refer to the description of the isr_tx1_empty_status7. |
5 |
ISR_TX1_EMPTY_STATUS5 |
R/W |
0x0 |
Refer to the description of the isr_tx1_empty_status7. |
4 |
ISR_TX1_EMPTY_STATUS4 |
R/W |
0x0 |
Refer to the description of the isr_tx1_empty_status7. |
3 |
ISR_TX1_EMPTY_STATUS3 |
R/W |
0x0 |
Refer to the description of the isr_tx1_empty_status7. |
2 |
ISR_TX1_EMPTY_STATUS2 |
R/W |
0x0 |
Refer to the description of the isr_tx1_empty_status7. |
1 |
ISR_TX1_EMPTY_STATUS1 |
R/W |
0x0 |
Refer to the description of the isr_tx1_empty_status7. |
0 |
ISR_TX1_EMPTY_STATUS0 |
R/W |
0x0 |
Refer to the description of the isr_tx1_empty_status7. |
REG_IPC_IMR
Name: Interrupt Mask Register
Size: 32
Address offset: 00Ch
Read/write access: R/W
These bits mask their corresponding interrupt status bits.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:24 |
IMR_RX0_FULL_MASK |
R/W |
0x0 |
|
23:16 |
IMR_RX1_FULL_MASK |
R/W |
0x0 |
|
15:8 |
IMR_TX0_EMPTY_MASK |
R/W |
0x0 |
|
7:0 |
IMR_TX1_EMPTY_MASK |
R/W |
0x0 |
|
REG_IPC_ICR
Name: Clear Tx Register
Size: 32
Address offset: 010h
Read/write access: R/W
This register can ensure that the software can manually clear the Tx register in an emergency.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15 |
ICR_TX0_DATA_CLEAR7 |
R/W |
0x0 |
|
14 |
ICR_TX0_DATA_CLEAR6 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear7. |
13 |
ICR_TX0_DATA_CLEAR5 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear7. |
12 |
ICR_TX0_DATA_CLEAR4 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear7. |
11 |
ICR_TX0_DATA_CLEAR3 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear7. |
10 |
ICR_TX0_DATA_CLEAR2 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear7. |
9 |
ICR_TX0_DATA_CLEAR1 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear7. |
8 |
ICR_TX0_DATA_CLEAR0 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear7. |
7 |
ICR_TX1_DATA_CLEAR7 |
R/W |
0x0 |
|
6 |
ICR_TX1_DATA_CLEAR6 |
R/W |
0x0 |
Refer to the description of the icr_tx1_data_clear7. |
5 |
ICR_TX1_DATA_CLEAR5 |
R/W |
0x0 |
Refer to the description of the icr_tx1_data_clear7. |
4 |
ICR_TX1_DATA_CLEAR4 |
R/W |
0x0 |
Refer to the description of the icr_tx1_data_clear7. |
3 |
ICR_TX1_DATA_CLEAR3 |
R/W |
0x0 |
Refer to the description of the icr_tx1_data_clear7. |
2 |
ICR_TX1_DATA_CLEAR2 |
R/W |
0x0 |
Refer to the description of the icr_tx1_data_clear7. |
1 |
ICR_TX1_DATA_CLEAR1 |
R/W |
0x0 |
Refer to the description of the icr_tx1_data_clear7. |
0 |
ICR_TX1_DATA_CLEAR0 |
R/W |
0x0 |
Refer to the description of the icr_tx1_data_clear7. |
Base Address:
IPC0_REG : 0x40815000
IPC1_REG : 0x40815080
Name |
Address offset |
Access |
Description |
|---|---|---|---|
000h |
R/W |
Take LP's IPC as an example to describe the function of IPC's internal registers.The REG_TX_DATA is used to transmit message from LP to NP or AP. (The logic cannot be generated automatically) |
|
004h |
R/W |
This register is used to record Tx empty |
|
008h |
R/W |
||
00Ch |
R/W |
This register can ensure that the software can manually clear the Tx register in an emergency. |
|
020h |
R |
||
024h |
R |
||
028h |
R |
||
02Ch |
R |
||
030h |
R |
||
034h |
R |
||
038h |
R/W |
REG_IPC_DATA
Name: Tx_Rx Register
Size: 32
Address offset: 000h
Read/write access: R/W
Take LP's IPC as an example to describe the function of IPC's internal registers.The REG_TX_DATA is
used to transmit message from LP to NP or AP.
(The logic cannot be generated automatically)
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
TX0_DATA |
R/W |
0x0 |
After preparing descriptor, data and corresponding memory,
If the corresponding Rx full status bit in REG_ISR_CPU0 (eg.isr_rx0_full_status6) is cleared, the corresponding bit in tx0_data will be cleaned automatically. |
15:0 |
RX0_DATA |
R |
0x0 |
Rx data automatically maps data from tx0_data of CPU0 |
REG_IPC_ISR
Name: Interrupt Empty Full Status Register
Size: 32
Address offset: 004h
Read/write access: R/W
This register is used to record Tx empty
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31 |
ISR_TX0_EMPTY_STATUS15 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
30 |
ISR_TX0_EMPTY_STATUS14 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
29 |
ISR_TX0_EMPTY_STATUS13 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
28 |
ISR_TX0_EMPTY_STATUS12 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
27 |
ISR_TX0_EMPTY_STATUS11 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
26 |
ISR_TX0_EMPTY_STATUS10 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
25 |
ISR_TX0_EMPTY_STATUS9 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
24 |
ISR_TX0_EMPTY_STATUS8 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
23 |
ISR_TX0_EMPTY_STATUS7 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
22 |
ISR_TX0_EMPTY_STATUS6 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
21 |
ISR_TX0_EMPTY_STATUS5 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
20 |
ISR_TX0_EMPTY_STATUS4 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
19 |
ISR_TX0_EMPTY_STATUS3 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
18 |
ISR_TX0_EMPTY_STATUS2 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
17 |
ISR_TX0_EMPTY_STATUS1 |
R/W |
0x0 |
Refer to the description of the isr_tx0_empty_status0 |
16 |
ISR_TX0_EMPTY_STATUS0 |
R/W |
0x0 |
Tx channel 0 empty interrupt status of CPU1 transmit to CPU0. If the corresponding Rx full status bit in REG_ISR_CPU0 (eg.isr_rx0_full_status0) is cleared, the corresponding Tx empty status bit will be set automatically. It will be cleared by software writing 1. |
15 |
ISR_RX0_FULL_STATUS15 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
14 |
ISR_RX0_FULL_STATUS14 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
13 |
ISR_RX0_FULL_STATUS13 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
12 |
ISR_RX0_FULL_STATUS12 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
11 |
ISR_RX0_FULL_STATUS11 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
10 |
ISR_RX0_FULL_STATUS10 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
9 |
ISR_RX0_FULL_STATUS9 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
8 |
ISR_RX0_FULL_STATUS8 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
7 |
ISR_RX0_FULL_STATUS7 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
6 |
ISR_RX0_FULL_STATUS6 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
5 |
ISR_RX0_FULL_STATUS5 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
4 |
ISR_RX0_FULL_STATUS4 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
3 |
ISR_RX0_FULL_STATUS3 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
2 |
ISR_RX0_FULL_STATUS2 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
1 |
ISR_RX0_FULL_STATUS1 |
R/W |
0x0 |
Refer to the description of the isr_rx0_full_status0. |
0 |
ISR_RX0_FULL_STATUS0 |
R/W |
0x0 |
Rx channel 0 full interrupt status of CPU1. The corresponding Rx full status bit will be set by CPU0's Tx data register (tx0_data) channel 0. It will be cleared by software writing 1. |
REG_IPC_IMR
Name: Interrupt Empty Full Mask Register
Size: 32
Address offset: 008h
Read/write access: R/W
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
IMR_TX0_EMPTY_MASK |
R/W |
0x0 |
|
15:0 |
IMR_RX0_FULL_MASK |
R/W |
0x0 |
|
REG_IPC_ICR
Name: Clear Tx Register
Size: 32
Address offset: 00Ch
Read/write access: R/W
This register can ensure that the software can manually clear the Tx register in an emergency.
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31 |
ICR_TX0_DATA_CLEAR15 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
30 |
ICR_TX0_DATA_CLEAR14 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
29 |
ICR_TX0_DATA_CLEAR13 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
28 |
ICR_TX0_DATA_CLEAR12 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
27 |
ICR_TX0_DATA_CLEAR11 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
26 |
ICR_TX0_DATA_CLEAR10 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
25 |
ICR_TX0_DATA_CLEAR9 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
24 |
ICR_TX0_DATA_CLEAR8 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
23 |
ICR_TX0_DATA_CLEAR7 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
22 |
ICR_TX0_DATA_CLEAR6 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
21 |
ICR_TX0_DATA_CLEAR5 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
20 |
ICR_TX0_DATA_CLEAR4 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
19 |
ICR_TX0_DATA_CLEAR3 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
18 |
ICR_TX0_DATA_CLEAR2 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
17 |
ICR_TX0_DATA_CLEAR1 |
R/W |
0x0 |
Refer to the description of the icr_tx0_data_clear0. |
16 |
ICR_TX0_DATA_CLEAR0 |
R/W |
0x0 |
|
15:0 |
RSVD0 |
R/W |
0x0 |
REG_IPC_SEM_0
Size: 32
Address offset: 020h
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_0_DATA |
R |
0x0 |
It is used to indicate whether this semaphore is occupied. 0: Not occupied; 1: Occupied. |
REG_IPC_SEM_1
Size: 32
Address offset: 024h
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_1_DATA |
R |
0x0 |
It is used to indicate whether this semaphore is occupied. 0: Not occupied; 1: Occupied. |
REG_IPC_SEM_CPUID0
Size: 32
Address offset: 028h
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_CPUID0_DATA |
R |
0x0 |
It is used to indicate cpuid of this semaphore . |
REG_IPC_SEM_CPUID1
Size: 32
Address offset: 02Ch
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_CPUID1_DATA |
R |
0x0 |
It is used to indicate cpuid of this semaphore . |
REG_IPC_SEM_CPUID2
Size: 32
Address offset: 030h
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_CPUID2_DATA |
R |
0x0 |
It is used to indicate cpuid of this semaphore . |
REG_IPC_SEM_CPUID3
Size: 32
Address offset: 034h
Read/write access: R
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:0 |
SEM_CPUID3_DATA |
R |
0x0 |
It is used to indicate cpuid of this semaphore . |
REG_IPC_DUMMY
Size: 32
Address offset: 038h
Read/write access: R/W
Bit |
Symbol |
Access |
INI |
Description |
|---|---|---|---|---|
31:16 |
RSVD |
R |
- |
Reserved |
15:0 |
DUMMY |
R/W |
0x0 |
Dummy reg |