The Flip Immediate mechanism is used to change of the fly the content of the frame buffer which is currently being displayed. The mechanism allows multiple changes (flips) of the base address (BA) during a frame. The mechanism is available for all pipelines (VID1, VID2, VID3, and GFX). Changes to the BA can be applied during the same line, or during different lines.
The following considerations must be considered:
- Data fetching from a new immediate BA is aligned with the data fetch mechanism of the DISPC DMA engine itself, and not with HSYNC or any other DISPC timing signal. After new VSYNC frame pulse, new BA is taken by hardware, as soon as the first set of lines is sent to internal pipeline of the DMA engine.
- If multiple new BAs are written during the same line (before DMA engine acknowledges the first BA change), then programming steps 1 and 2 must be applied for each new BA (see the programming sequence in this section). The DMA takes only the last BA provided within the current line scan.
- If multiple new BAs are written during different lines within the current frame, then programming steps 1 and 2 must be applied for each new BA (see the programming sequence in this section). The DMA takes the new BA each time it is updated.
- Immediate BA change cannot be achieved synchronously for two or more pipelines.
- Immediate BA change is possible only for BA0; it is not possible for BA1. Interlaced mode using BA0 and BA1 is not supported.
- Immediate BA change is supported only in RGB color space.
The Flip Immediate mechanism programming sequence follows:
- Software writes the new immediate BA to the DISPC_GFX_BA_j register (where j=0) for the GFX pipeline, or to the DISPC_VID1_BA_j / DISPC_VID2_BA_j / DISPC_VID3_BA_j register (where j=0) for the required VID pipeline.
- Software sets to 0x1 the corresponding EN bit for the required pipeline in the DISPC_BA0_FLIPIMMEDIATE_EN register.
- The DISPC DMA engine, after completing its current line (or set of lines) fetch, takes the new immediate BA.
- Hardware resets the EN bit in DISPC_BA0_FLIPIMMEDIATE_EN register and asserts a flip immediate IRQ. The IRQ can be enabled through the DISPC_IRQENABLE[31] FLIPIMMEDIATEDONE_EN bit. The status of the event is available in the DISPC_IRQSTATUS[31] FLIPIMMEDIATEDONE_IRQ bit.