====== display_tz_enable ====== This function is responsible for effectively setting up the IPU. This is done by configuring the display channel path in ipu_setup and then enabling the display in ipu_panel_enable. void display_tz_enable(void) { dispDev.type = ipu_display_panel; dispDev.width = XGA_FW; dispDev.height = XGA_FH; ipu_setup(); ipu_panel_enable(dispDev.type); } ===== ipu_setup ===== This function sets the ipu display channel path, including IDMAC->DMFC->DP->DC->DI->LCD. The following image available at the official [[http://people.freebsd.org/~gonzo/arm/iMX6-IPU.pdf|IPU doc]], shows the channel path:{{ :ipu-specifics:ipu.png?nolink&700 |}} In our code, for VGA, only the idmac, dc and di need to be configured: void ipu_setup(void) { ipu_sw_reset(1000); // reset ipu by SRC(system reset controller) idmac_config(); // Image DMA Controler dc_config(); // Display Controller di_config(); // Display Interface ipu_enable_display(); // enable both di0 and di1 } ===== ipu_panel_enable ===== This function enables the display panel by resetting it and providing the backlight. void ipu_panel_enable(int panel_type_sel) { if (dispDev.init_status & (1 << panel_type_sel)) { cprintf("the panel has been initialized!!\n"); return; } else { dispDev.init_status |= (1 << panel_type_sel); } vga_tve_iomux_config(); // VGA iomux vga_tve_clk_setting(); // VGA clock setting vga_tve_config(); // VGA config }