AnsweredAssumed Answered

What is the difference between MXC IPU3 u-Boot and Linux drivers?

Question asked by Robert Spriggs on Nov 23, 2016
Latest reply on Nov 24, 2016 by igorpadykov

Our custom i.MX6DL Sabre-based board is booting with the MXC IPU3 driver, and I can see the correct signals on the DISP pads using a scope until Linux loads. The MXC IPU3 driver is also enabled in Linux, but the DISP pads are inactive for some reason. Just before u-Boot starts the OS, it disables all the IPU signals and I'm wondering why. Those signals don't seem to be renabled when Linux loads the IPU driver... Can anyone please explain to me what they think might be happening, and/or what else I can check for to gain some insight?

 

Also, how do I find where u-boot configuration for the IPU is, and where/how can I configure the IPU driver in Linux to behave the same way?

 

I inserted debug statements in some of the IPU code to see what was happening:

 

serial terminal output:

 

>>>>> ipu_probe <<<<<
>>>>> ipu_reset <<<<<
>>>>> clk_enable <<<<<
>>>>> clk_ipu_enable <<<<<
>>>>> ipu_init_dc_mappings <<<<<
>>>>> ipu_dc_map_config <<<<<
...
>>>>> ipu_dc_map_config <<<<<
>>>>> ipu_dmfc_init <<<<<
>>>>> clk_disable <<<<<
>>>>> clk_ipu_disable <<<<<
>>>>> clk_enable <<<<<
>>>>> clk_ipu_enable <<<<<
>>>>> clk_disable <<<<<
>>>>> clk_ipu_disable <<<<<
>>>>> clk_enable <<<<<
>>>>> clk_ipu_enable <<<<<
>>>>> clk_disable <<<<<
>>>>> clk_ipu_disable <<<<<
>>>>> mxcfb_set_par <<<<<
>>>>> ipu_disable_channel <<<<<
>>>>> ipu_uninit_channel <<<<<
>>>>> init channel = 9 <<<<<
>>>>> clk_enable <<<<<
>>>>> clk_ipu_enable <<<<<
>>>>> ipu_dp_init <<<<<
>>>>> ipu_dc_init <<<<<
>>>>> ipu_init_sync_panel <<<<<
>>>>> adapt_panel_to_ipu_restricitions <<<<<
>>>>> ipu_pixel_clk_set_rate <<<<<
>>>>> ipu_di_data_wave_config <<<<<
>>>>> ipu_di_data_pin_config <<<<<
>>>>> ipu_di_sync_config <<<<<
>>>>> ipu_di_sync_config <<<<<
>>>>> ipu_di_sync_config <<<<<
>>>>> ipu_di_sync_config <<<<<
>>>>> ipu_di_sync_config <<<<<
>>>>> ipu_init_channel_buffer <<<<<
>>>>> ipu_ch_param_init <<<<<
>>>>> ipu_dmfc_init <<<<<
>>>>> ipu_enable_channel <<<<<
>>>>> ipu_dp_dc_enable <<<<<
>>>>> clk_enable <<<<<
>>>>> ipu_pixel_clk_enable <<<<<

...

Kernel image @ 0x12000000 [ 0x000000 - 0x495668 ]
## Flattened Device Tree blob at 18000000
Booting using the fdt blob at 0x18000000
Using Device Tree in place at 18000000, end 1800c002
>>>>> boot_selected_os <<<<<
>>>>> arch_preboot_os <<<<<
>>>>> ipuv3_fb_shutdown <<<<<
>>>>> ipuv3_fb_shutdown <<<<<
>>>>> ipu_disable_channel <<<<<
>>>>> ipu_dp_dc_disable <<<<<
>>>>> clk_disable <<<<<
>>>>> ipu_pixel_clk_disable <<<<<
>>>>> ipu_uninit_channel <<<<<
>>>>> ipu_dp_uninit <<<<<
>>>>> ipu_dc_uninit <<<<<
>>>>> clk_disable <<<<<
>>>>> clk_ipu_disable <<<<<

Starting kernel...

...

>>>>> ipu_gen_init <<<<<
>>>>> ipu_probe <<<<<
>>>>> ipu_mem_reset <<<<<
>>>>> _ipu_init_dc_mappings <<<<<
>>>>> _ipu_dc_map_config <<<<<
...
>>>>> _ipu_dc_map_config <<<<<
>>>>> _ipu_dmfc_init <<<<<
imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
>>>>> ipu_clk_setup_enable <<<<<

Outcomes