I am currently using IMX8qxp with linux kernel 4.14.62-imx-4.14.62 and I am having trouble suspending the board
it causes a kernel panic
Synchronous External Abort: synchronous external abort (0x96000210) at 0xffff00000804500c
The issue is caused by the gpio driver, specifically the suspend function "PC is at mxc_gpio_noirq_suspend+0x94/0x178" digging further into this revealed that this issue occur when trying to read registers values to save them before suspending and that this happen with one gpio only, disabling this node from the tree resolve the problem, but I am looking to find a solution that wouldn't require disabling the node.
Here is the offending node
gpio0_mipi_csi0: gpio@58222000 {
compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
reg = <0x0 0x58222000 0x0 0x1000>;
interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&irqsteer_csi>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
power-domains = <&pd_mipi_csi>;
};
I double checked from the reference manual that the node address is right and that the node is actually a gpio, so I am clueless as to why this issue could be happening.
I am facing same issue on i.MX8DX6 Board.
I was able to find the mxc_gpio_noirq_suspend() causing the issue also the line number was pointing to
port->suspend_saved_reg[0] = readl(port->base + GPIO_ICR1);
How did you manage to find out the exact gpio number.?
Hoping for an answer
Hello Anjalik,
I suppose you are facing a problem with the same GPIO controller as I did which was the CSI subsystem gpio controller as shown in the device tree snippet I posted above, if you disabled that and the issue still persisted you can add some printk() logs and see where the kernel panic happens on the serial console that's what I did, if I remember correctly it was 9th controller that failed and that corresponded to the CSI gpio controller in my device tree.
Thank You for the reply.
After commenting the below node, the suspend is now suspend .
gpio0_mipi_csi0: gpio@58222000 {
compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
reg = <0x0 0x58222000 0x0 0x1000>;
interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&irqsteer_csi>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
power-domains = <&pd_mipi_csi>;
};
Why this node is creating the block issue. Is it due to the fact that gpio0 bank is owned by M4 core in iMX8?
It would be helpful to know the exact reason for future reference.
Thanks & Regards,
Anjali
Hi Ahmed,
The i.MX8QXP series is still on preproduction, so, no additional information/support could be provided yet. In case of having doubts, please refer with your Sales/FAE.
Hope this will be useful for you.
Best regards!
/Carlos
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
-------------------------------------------------------------------------------