I want to test the mask channel of the IPU of i.MX 6. I have successfully enabled and used the overlay channel, so I know how to use it. But the mask channel does not work. How can I do this? The following mentions my procedure in detail.
I have used the chipset:
i.MX 6Dual/6Quad Applications Processor
I have used the board:
BD-SL-i.MX6 (SABRE Lite)
I have tried the following register operations for IPU masking:
I have checked several registers to enable masking with IPU:
IPUx_CONF
DP_EN: I have set 1.
DC_EN: I have set 1.
DI0_EN: I have set 1.
DI1_EN: I have set 1.
DMFC_EN: I have set 1.
IPUx_IDMAC_CH_EN_2
IDMAC_CH_EN_44: I have set 1.
IDMAC_CH_EN_40: I have set 1.
IPUx_DI0_GENERAL
Di0_mask_sel: I have set 1.
IPUx_DI1_GENERAL
Di1_mask_sel: I have set 1.
IPUx_DC_GEN
IPUx_DC_GEN_MASK_EN: I have set 1.
IPUx_DC_GEN_MASK4CHAN_5: I have set 1.
IPUx_DC_DI0_CONF_1
[31-0]: I have set 0xFFFF.
IPUx_DC_DI1_CONF_1
[31-0]: I have set 0xFFFF.
IPUx_DMFC_GENERAL_1
DMFC_burst_size_9: I have set 0b01.
I have tried the following memory operations for IPU masking:
To enable masking, I have written into Channel Parameter Memory (CPMEM) at channel 44 for the following purposes:
Frame Width: I have set 500.
Frame Height: I have set 500.
Stride Line: I have left it unchanged. So the value is set by the Linux kernel.
Ext Mem Buffer 0 Address: I have set ((CFG_FBMEM_START + 0x600000) / 8).
Ext Mem Buffer 1 Address: I have set ((CFG_FBMEM_START + 0x600000) / 8).
you need to set register according to your connection, since you set IPUx_DC_GEN_MASK4CHAN_5 to 1, so you need MEM->DP, and use channel #23 as input channel, right?and you can refer to the display driver: