Recently we discovered a strange issue with our own i.MX6 quad board which is similar to sabresd. The OS we ported is Linux 3.14.28 and everything looks fine except we could not successfully reboot the board when we issued the reboot command on console. In our design, we skip WDOG_B circuitry and let it float on GPIO_1 (WDOG_B). However, we have to define
/* use ldo-bypass, u-boot will check it and configure */
// fsl,ldo-bypass = <1>;
// fsl,wdog-reset = <2>;
fsl,wdog-reset = <1>;
status = "okay";
// status = "disabled";
in our device tree to make this board successfully booted.
If we issue "reboot" on console, then the board would be started and hangs at starting kernel. Also, the board is restarted after running up to the following section in mxc_restart in system.c without going through the whole part.
|pr_err("mxc_restart step 3\n");|
|* Due to imx6q errata ERR004346 (WDOG: WDOG SRS bit requires to be|
|* written twice), we add another two writes to ensure there must be at|
|* least two writes happen in the same one 32kHz clock period. We save|
|* the target check here, since the writes shouldn't be a huge burden|
|* for other platforms.|
DO you have any suggestion we could eliminate this soft reboot issue?