diff options
author | Alex Frid <afrid@nvidia.com> | 2013-01-31 23:05:11 -0800 |
---|---|---|
committer | Mandar Padmawar <mpadmawar@nvidia.com> | 2013-02-11 05:01:49 -0800 |
commit | 24e18b0cac6265368612e9fde9ecca29322078da (patch) | |
tree | 840b388580da2a4fd72c9b1e219ca15d348e5245 /arch/arm/mach-tegra/board-dalmore-power.c | |
parent | 73e0c048b6e8ecfe26f1d19fa6accaf10df6542d (diff) |
ARM: tegra11: dvfs: Upgrade CL-DVFS disable output ops
New CL-DVFS h/w (rev A02 of Tegra11 SoC) allows to disable CL-DVFS
output while I2C transaction is in progress without compromising bus
integrity. This commit added to platform data configuration option
<out_quiet_then_disable> that is set only for older versions of the
chip.
In case when <out_quiet_then_disable> option is not set, a procedure
for exiting closed loop mode to open loop mode is modified as follows:
- I2C output is disabled before the switch (while still operating in
closed loop mode) to avoid unnecessary voltage jump to "safe value"
- Possible transaction in progress is flushed after interface is
disabled
- Flush timeout is reported to the caller that initiated closed loop
exit (bus integrity is guaranteed even if timeout happens)
In addition output is now disabled while look-up table is reloaded
in cosed loop mode to avoid race between table write (s/w) and read
(h/w).
Bug 1159200
Change-Id: I9d0f0dfa55664c5792ca81018c127628d461da0b
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/198633
Reviewed-by: Mandar Padmawar <mpadmawar@nvidia.com>
Tested-by: Mandar Padmawar <mpadmawar@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-dalmore-power.c')
-rw-r--r-- | arch/arm/mach-tegra/board-dalmore-power.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-dalmore-power.c b/arch/arm/mach-tegra/board-dalmore-power.c index 2b1b7d026abb..b09368f4207b 100644 --- a/arch/arm/mach-tegra/board-dalmore-power.c +++ b/arch/arm/mach-tegra/board-dalmore-power.c @@ -42,6 +42,7 @@ #include <mach/irqs.h> #include <mach/edp.h> #include <mach/gpio-tegra.h> +#include <mach/hardware.h> #include "cpu-tegra.h" #include "pm.h" @@ -1042,6 +1043,8 @@ static struct tegra_cl_dvfs_platform_data dalmore_cl_dvfs_data = { static int __init dalmore_cl_dvfs_init(void) { fill_reg_map(); + if (tegra_revision < TEGRA_REVISION_A02) + dalmore_cl_dvfs_data.out_quiet_then_disable = true; tegra_cl_dvfs_device.dev.platform_data = &dalmore_cl_dvfs_data; platform_device_register(&tegra_cl_dvfs_device); |