I'm trying to enable the DCIC. I already have the DCIC test application, but when I try to run it, the linux system gets freezed. I have placed some "printk" in the driver and it seems that the problem is when it's trying to write on the DCICC register, in the function "dcic_configure". Below we can see the line where it's getting stuck:
writel(val, &dcic->regs->dcicc);
So I checked the DCIC Memory Map/Register Definition and I tested those addresses with "devmem" and I got the same result, the whole system it's getting freezed. I tried with other registers from different modules and devmem worked correctly. So my assumption is that there is something wrong with the DCIC registers or maybe I'm only missing some pre-configuration in order to start using DCIC.
This is what I have on my device tree:
&dcic1 {
compatible = "fsl,imx6q-dcic";
reg = <0x020e4000 0x4000>;
interrupts = <0 124 0x04>;
/*clocks = <&clks 231>, <&clks 231>;*/
clocks = <&clks 142>, <&clks 173>;
clock-names = "dcic", "disp-axi";
gpr = <&gpr>;
status = "okay";
dcic_id = <0>; /* dcic device index 0-dcic1, i-dcic2 */
dcic_mux = "dcic-lvds0"; /* DCIC input select */
};
&dcic2 {
compatible = "fsl,imx6q-dcic";
reg = <0x020e8000 0x4000>;
interrupts = <0 125 0x04>;
/*clocks = <&clks 232>, <&clks 232>;*/
clocks = <&clks 143>, <&clks 173>;
clock-names = "dcic", "disp-axi";
gpr = <&gpr>;
status = "okay";
dcic_id = <1>; /* dcic device index 0-dcic1, i-dcic2 */
dcic_mux = "dcic-lvds0"; /* DCIC input select */
};
Any advice?