Hi, Shawn Thanks for the detail review, I think it is better to have such info in comments if we already have such hardware errata created, I will sent out V2 soon.
Best Regards. Anson huang 黄勇才 Freescale Semiconductor Shanghai 上海浦东新区亮景路192号A座2楼 201203 Tel:021-28937058 >-----Original Message----- >From: Shawn Guo [mailto:shawn....@linaro.org] >Sent: Tuesday, December 24, 2013 4:14 PM >To: Huang Yongcai-B20788 >Cc: ker...@pengutronix.de; linux-arm-ker...@lists.infradead.org; linux- >ker...@vger.kernel.org >Subject: Re: [PATCH] ARM: imx: improve the comment of CCM lpm SW workaround > >On Tue, Dec 24, 2013 at 01:00:47PM -0500, Anson Huang wrote: >> Improve the comment of SW workaround for CCM lpm issue using hardware >> errata description to avoid confusion. >> >> TKT194736: > >This is not the errata number that will be seen by people publicly. >That's why I did not give it in the original commit d48866f (ARM: imx: >ensure dsm_request signal is not asserted when setting LPM). But if you check >the log of that commit, you will find we already have the information you're >adding here. > >The good thing is we have that errata publicly available now as below. > >ERR007265 CCM: When improper low-power sequence is used, the SoC enters low >power mode before the ARM core executes WFI > >http://cache.freescale.com/files/32bit/doc/errata/IMX6DQCE.pdf?fpsp=1 > >So if you want to make it clear, you should quote the errata info that is >publicly available to people. > >Shawn > >> Chip will enter low power mode before ARM A9 CPU executes WFI when >> improper low power sequence is used. >> >> SW workaround: >> 1) SW will trigger irq #32(IOMUX) to be always pending manually by >> setting IOMUX_GPR1_GINT bit, >> 2) SW should then Unmask it in GPC before setting CCM LPM >> 3) SW should Mask it right after CCM LPM is set (set bit0-1 of >> CCM_CLPCR) >> >> Signed-off-by: Anson Huang <b20...@freescale.com> >> --- >> arch/arm/mach-imx/pm-imx6q.c | 13 +++++++++---- >> 1 file changed, 9 insertions(+), 4 deletions(-) >> >> diff --git a/arch/arm/mach-imx/pm-imx6q.c >> b/arch/arm/mach-imx/pm-imx6q.c index aecd9f8..8da4732 100644 >> --- a/arch/arm/mach-imx/pm-imx6q.c >> +++ b/arch/arm/mach-imx/pm-imx6q.c >> @@ -156,10 +156,13 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) >> } >> >> /* >> - * Unmask the always pending IOMUXC interrupt #32 as wakeup source to >> - * deassert dsm_request signal, so that we can ensure dsm_request >> - * is not asserted when we're going to write CLPCR register to set LPM. >> - * After setting up LPM bits, we need to mask this wakeup source. >> + * TKT194736: >> + * Chip will enter low power mode before ARM A9 CPU executes WFI when >improper low power sequence is used. >> + * >> + * SW workaround: >> + * 1) SW will trigger irq #32(IOMUXC) to be always pending manually by >setting IOMUX_GPR1_GINT bit, >> + * 2) SW should then Unmask it in GPC before setting CCM LPM >> + * 3) SW should Mask it right after CCM LPM is set (set bit0-1 of >> +CCM_CLPCR) >> */ >> iomuxc_irq_desc = irq_to_desc(32); >> imx_gpc_irq_unmask(&iomuxc_irq_desc->irq_data); >> @@ -219,6 +222,8 @@ void __init imx6q_pm_init(void) >> WARN_ON(!ccm_base); >> >> /* >> + * This is for SW workaround step #1 of TKT194736, see comments >> + * in imx6q_set_lpm for details of this errata. >> * Force IOMUXC irq pending, so that the interrupt to GPC can be >> * used to deassert dsm_request signal when the signal gets >> * asserted unexpectedly. >> -- >> 1.7.9.5 >> >> N�����r��y����b�X��ǧv�^�){.n�+����{����zX����ܨ}���Ơz�&j:+v�������zZ+��+zf���h���~����i���z��w���?�����&�)ߢf��^jǫy�m��@A�a��� 0��h���i