After building LTIB with DMA support (Selected only "Freescale Elo and Eloplus DMA suport" (* or M) option in "DMA Engine support" menu), Kernel crashes at boot (Oops: Machine check, sig: 7 [#1])
Following description for the DMA had been included in mpc8306som.dts file:
dma2: dma@82a8 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
reg = <0x82a8 4>;
ranges = <0 0x8100 0x1a8>;
interrupt-parent = <&ipic>;
interrupts = <71 8>;
cell-index = <0>;
dma-channel@0 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
reg = <0 0x80>;
cell-index = <0>;
interrupt-parent = <&ipic>;
interrupts = <71 8>;
};
dma-channel@80 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
reg = <0x80 0x80>;
cell-index = <1>;
interrupt-parent = <&ipic>;
interrupts = <71 8>;
};
dma-channel@100 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
reg = <0x100 0x80>;
cell-index = <2>;
interrupt-parent = <&ipic>;
interrupts = <71 8>;
};
dma-channel@180 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
reg = <0x180 0x28>;
cell-index = <3>;
interrupt-parent = <&ipic>;
interrupts = <71 8>;
};
};
Being dma@82a8 a child node of immr@e0000000
What should I do to build LTIB with DMA support and, additionally, to use the DMA Test client?
Please check Kernel configuration file and make sure the followings are configured.
CONFIG_FSL_DMA=y
CONFIG_DMA_ENGINE=y
And DMA test client is defined as CONFIG_DMATEST in Kernel source.
Have a great day,
Yiping Wang
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Thank you for your answer but I affraid the problem is not the LTIB GUI
Building the DMA as a loadable kernel module, when the module inits, the clock of DMA Engine 2 is disabled. I suspect that after power up / reset the MPC8306, that clock is disabled (SCCR) and the BSP does not enable it. If that clock is enabled (modifying fsl_dma.c. for instance), dmatest seems to work properly.
Related to this, it seems that there is a contradiction in the MPC8306 Reference Manual: In section "4.5.2.3 System Clock Control Register" says that after reset DMA Engine 2 clock is enabled but in section "A.11 Clock Configuration" says that it is disabled.
Regards
Leopoldo