]> Pileus Git - ~andy/linux/commit
PM / AVS: SmartReflex: disable errgen before vpbound disable
authorNishanth Menon <nm@ti.com>
Thu, 30 May 2013 10:08:34 +0000 (13:08 +0300)
committerKevin Hilman <khilman@linaro.org>
Mon, 10 Jun 2013 17:35:17 +0000 (10:35 -0700)
commitefe4e06de34953888504f4ea1d36c86db2267ea9
treefb46c8250dba0d8a8f88571b3ef04f102ca370aa
parent317ddd256b9c24b0d78fa8018f80f1e495481a10
PM / AVS: SmartReflex: disable errgen before vpbound disable

vpboundsintr_en is available inside the IP block as an re-sycned
version and one which is not. Due to this, there is an 1 sysclk
cycle window where the SR_SInterruptz signal could be asserted low.
IF, intr_en is cleared on the exact same cycle as the irqclr, an
additional pulse is generated which indicates for VP that
an additional adjustment of voltage is required.

This results in VP doing two voltage adjustments for the SRERR
(based on configuration, upto 4 steps), instead of the needed
1 step.
Due to the unexpected pulse from AVS which breaks the AVS-VP
communication protocol, VP also ends up in a stuck condition by
entering a state where VP module remains non-responsive
to any futher AVS adjustment events. This creates the symptom
called "TRANXDONE Timeout" scenario.

By disabling errgen prior to disable of intr_en, this situation
can be avoided.

Signed-off-by: Vincent Bour <v-bour@ti.com>
Signed-off-by: Leonardo Affortunati <l-affortunati@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Andrii.Tseglytskyi <andrii.tseglytskyi@ti.com>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
drivers/power/avs/smartreflex.c