On Fri, Feb 13, 2015 at 12:16 AM, Robin Gong <b38...@freescale.com> wrote: > On Wed, Feb 11, 2015 at 07:47:57AM -0800, Tim Harvey wrote: >> On Wed, Feb 11, 2015 at 2:49 AM, Robin Gong <b38...@freescale.com> wrote: >> <snip> >> >> >> >> This is very board dependent. Here you are referring to a board that >> >> has a reset input to the PMIC's from the IMX6's watchdog output. In >> >> this case, this reset routing/pinmux would be needed regardless of >> >> using ldo-bypass mode or not and that should just be a pinmux of the >> >> pin your using for WDOG_B. >> >> >> > There are two types of reboot in our chip by watchdog : SRS/warm reset >> > (Software Reset Signal) and WDOG_B(reset signal output to external pmic >> > to trigger next power cycle). In fact, warm reset can work most cases >> > except >> > ldo-bypass mode and this is why we connect WDOG_B reset and ldo-bypass >> > here: >> > kernel may trigger warm reset at the lowest cpu freq setpoint, for example >> > VDDARM 0.975v@396Mhz ldo-bypass mode. i.mx6q will reboot with ldo-enable >> > mode >> > @792Mhz and the VDDARM_IN 0.975v can't support system boot.Thus, we need >> > use >> > WDOG_B pin to reset external pmic if using ldo-byapss mode. >> >> Hi Robin, >> >> I understand that configuring WDOG_B external reset must be used when >> LDO bypass is used. This should be done in the kernel but you can also >> set this pinmux up in uboot in the board-specific init. >> >> If your kernel is providing the PMIC driver and cpufreq driver that >> alter the cpu core frequencies it must also be configuring pinmux so >> that WDOG_B gets routed to the pin that connects to the PMIC so any >> reset based on that wdog (SRS or timeout) issues a hard reset to the >> PMIC. Failure to do so is a kernel bug. I believe this is done >> properly in the Freescale kernel for the reference boards. >> > pinmux is not enough. WDT bit of WDOGx_WCR need to be taken care of if you > want > to enable WDOG_B pin reset function. But unfortunately the current wdog driver > of kernel not touch this write-once bit. To limit the impact from kernel, set > this bit in u-boot.
Hi Robin, 'To limit the impact from kernel, set this bit in u-boot' indicates that you are trying to create a u-boot and kernel dependence on each other which is a bad idea. The kernel should take care of everything it needs without making assumptions on what the bootloader did. You are correct in that the current imx2_wdt.c does not 'set' the write-once WCR bit to enable the external reset but it does seem funny to me that Freescale decided to patch system.c's mxc_restart (http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/arch/arm/mach-imx/system.c?h=imx_3.10.53_1.1.0_ga&id=ee07b144e1adff13d262e7f353f5804e3c2d3e06) to try to deal with the machine_restart case but did not patch imx2_wdt.c to deal with the watchdog timeout case. Wouldn't these boards also hang when reset from a watchdog timeout when using ldo-enabled and CPU@397Mhz. It seems to me that you should also be patching imx2_wdt.c to set WCR for that case. >> If you are trying to take care of an issue caused by a watchdog reset >> (SRS or timeout) not properly resetting a PMIC (ie perhaps a PCB >> errata where signal doesn't go to the PMIC) then you should probably >> simply set the PMIC rails where they need to be for the 800MHz >> operation in the bootloader and not muck with the CPU frequency. >> Honestly, if your PMIC rails are too low for 800MHz on powerup your >> bootloader may not be stable anyway right? Note that the operating >> setpoints have the same SOC voltage for both 792MHz and 396MHz, its >> only the ARM voltage that is lower for 396 vs 792 and chances are your >> not going to have an issue just in the bootloader at that point. >> > As you saw in another mail, bootloader is too late. It'll hang in ROM code. >> <snip> >> > Can you please share me the patch link? Thanks. The link was further up in the thread in response to Peng: Instead of touching U-Boot, in my 'Freescale' kernel I look for the fsl,ldo-bypass node in the kernel init and enable it just like their bootloader would have: https://github.com/Gateworks/linux-imx6/commit/a1af6ac6f00b4da7c8a5656e8ff093d4ab5cadee It is still not good to rely on the fsl,ldo-bypass property to be set (which will never make it into mainline) because this does not garuntee that ldo-bypass is setup and functioning correctly at all (ie user could have PMIC driver disabled, or not configured in device-tree properly as source for arm/soc rails) but I haven't figured out the best solution upstream yet and haven't had time to get back to it. Its still a much lesser evil than requiring that ldo-bypass be configured in the bootloader. This patch removes the dependence upon the bootloader (I will never use Freescales hacked up U-Boot - I think its still based on a 2009 branch). I have given up on getting patches into Freescale's kernel - perhaps being an employee you will have better luck :) I'm still hoping that someday mainline linux will have all the IPU/VPU/GPU support for IMX6 that is missing (but getting very close!) which is what is forcing me to use Freescale's kernel for some of our BSP's. Tim _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot