We have an iMX7D rev1.3 (part number MCIMX7D5EVM10SD) with DDR3L, PMIC is a PF3000 (MC34PF3000A1). U-Boot version is v2016.05. We are experiencing a very inconsistent reset behavior, different from device to device. Test case is "reset" from the u-boot prompt.
There is an errata (e10574) with three alternative options to reset the SoC.
#define SRC_A7RCR0 0x004 #define CORE_POR_RESET0 (1 << 0) printf("errata option 2\n"); setbits_le32((SRC_BASE_ADDR + SRC_A7RCR0), CORE_POR_RESET0);
This option fails on all devices, system hangs after "resetting ..."
#define SNVS_LPCR 0x38 #define LPCR_DUMP_EN (1 << 5) #define LPCR_TOP (1 << 6) printf("errata option 3\n"); setbits_le32((SNVS_BASE_ADDR + SNVS_LPCR), LPCR_DUMP_EN); setbits_le32((SNVS_BASE_ADDR + SNVS_LPCR), LPCR_TOP);This does not reset the chip.
Any help to get a consistent SoC reset is very much appreciated. Why don't the reset options work as described in the errata?
Update: Does SNVS_PMIC_ON_REQ have to be connected to the PMIC PWRON pin for Option 3 to work correctly? This is not the case in our layout.
Thank you!
Hi Raimar
yes, PMIC_ON_REQ have to be connected to the PMIC PWRON as it is done on i.MX7D Sabre SD board
Schematics (2)
Design files for i.MX 7Dual (REV D)
Design files, including hardware schematics, Gerbers, and OrCAD files for i.MX 7Dual (REV D)
http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-process...
Also seems Option 3 implements patch described on
Q&A: How is mx6 PMIC_ON_REQ under SW control?
Reason is that soft reset (WARM, like wdog_rst_b) does not reset chip test logic
(sjc, iomuxc, dap) and just puts sdram in self_refresh.
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
thanks for the reply. We have the PMIC PWRON hard-wired to VSNVS by a 100k pull-up. We need a software solution until a hardware redesign (which takes considerable time) can fix this situation.
So it seems option 1 and option 3 are not available to us due to our current board layout. A few questions remain:
Hi Raimar
for option2 you can debug, for example check if reset is present on ddr3.
However performing only processor internal por (with A7_CORE_POR_RESET0) may be insufficient, as for
example on i.MX7D Sabre SD schematic external POR resets not only processor
but also external power supply 3V3 PERI, so resetting whole board: processor + all peripheral chips.
I am afraid there is no way for I2C interface of the PMIC to trigger a reset.
Best regards
igor
It sounds like you have run into the same problem we saw (although we were using the PF3001).
Basically, we discovered that external circuitry is needed with the iMX7 to ensure reliable reset/watchdog. They pointed us at the same errata, but after we had developed a external work-around, so we never tried the options listed in the errata.