linux/arch/arm/mach-omap2
Mike Turquette a7e069fc5a OMAP3630: Clock: Workaround for DPLL HS divider limitation
This patch implements a workaround for the DPLL HS divider limitation
in OMAP3630 as given by Errata ID: i556.

Errata:
When PWRDN bit is set, it resets the internal HSDIVIDER divide-by value (Mx).
The reset value gets loaded instead of the previous value.
The following HSDIVIDERs exhibit above behavior:
. DPLL4 : M6 / M5 / M4 / M3 / M2 (CM_CLKEN_PLL[31:26] register bits)
. DPLL3 : M3 (CM_CLKEN_PLL[12] register bit).

Work Around:
It is mandatory to apply the following sequence to ensure the write
value will
be loaded in DPLL HSDIVIDER FSM:
The global sequence when using PWRDN bit is the following:
. Disable Mx HSDIVIDER clock output related functional clock enable bits
        (in CM_FCLKEN_xxx / CM_ICLKEN_xxx)
. Enable PWRDN bit of HSDIVIDER
. Disable PWRDN bit of HSDIVIDER
. Read current HSDIVIDER register value
. Write different value in HSDIVIDER register
. Write expected value in HSDIVIDER register
. Enable Mx HSDIVIDER clock output related functional clocks
        (CM_FCLKEN_xxx / CM_ICLKEN_xxx)

Signed-off-by: Mike Turquette <mturquette@ti.com>
Signed-off-by: Vishwanath BS <vishwanath.bs@ti.com>
Signed-off-by: Vijaykumar GN <vijaykumar.gn@ti.com>
[paul@pwsan.com: updated patch to apply; made workaround function static;
 marked as being 36xx-specific]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
2010-02-24 12:06:00 -07:00
..
include/mach AM35xx: Introduce am35xx.h file 2010-02-15 10:03:35 -08:00
board-2430sdp.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-3430sdp.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-3630sdp.c omap2/3/4: Fix omap2_map_common_io for multi-omap 2010-02-15 09:26:58 -08:00
board-4430sdp.c arm: omap: kill compile warning on board-4430-sdp.c 2010-02-15 10:03:35 -08:00
board-am3517evm.c AM35xx: Introduce am35xx.h file 2010-02-15 10:03:35 -08:00
board-apollon.c omap2/3/4: Fix omap2_map_common_io for multi-omap 2010-02-15 09:26:58 -08:00
board-cm-t35.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-generic.c omap2/3/4: Fix omap2_map_common_io for multi-omap 2010-02-15 09:26:58 -08:00
board-h4.c omap: convert boards to use physmap-flash 2010-02-15 10:03:32 -08:00
board-igep0020.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-ldp.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-n8x0.c omap2/3/4: Fix omap2_map_common_io for multi-omap 2010-02-15 09:26:58 -08:00
board-omap3beagle.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-omap3evm.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-omap3pandora.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-omap3touchbook.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-overo.c omap: Rename hsmmc symbols to reflect independence from twl4030 2010-02-15 10:03:34 -08:00
board-rx51-peripherals.c omap: RX51: Remux to pull eMMC lines down when powering off 2010-02-15 10:03:34 -08:00
board-rx51-sdram.c omap3: rx51: Add SDRAM init 2009-11-22 10:24:33 -08:00
board-rx51.c omap2/3/4: Fix omap2_map_common_io for multi-omap 2010-02-15 09:26:58 -08:00
board-sdp-flash.c omap3: SDP: Introducing 'board-sdp-flash.c' for flash init 2010-02-15 10:03:33 -08:00
board-zoom2.c omap2/3/4: Fix omap2_map_common_io for multi-omap 2010-02-15 09:26:58 -08:00
board-zoom3.c omap2/3/4: Fix omap2_map_common_io for multi-omap 2010-02-15 09:26:58 -08:00
board-zoom-debugboard.c omap3: zoom: rename zoom2 name to generic zoom 2009-11-22 10:24:33 -08:00
board-zoom-peripherals.c omap3: pm: Add T2 Keypad as a wakeup source 2010-02-15 10:03:35 -08:00
clkt2xxx_apll.c OMAP2/3 clock: Extend find_idlest() to pass back idle state value 2010-02-24 12:05:54 -07:00
clkt2xxx_dpllcore.c OMAP2xxx clock: move the DPLL+CORE composite clock code into mach-omap2/clkt2xxx_dpllcore.c 2010-01-26 20:13:06 -07:00
clkt2xxx_osc.c OMAP2xxx clock: move osc_clk code into mach-omap2/clkt2xxx_osc.c 2010-01-28 18:13:49 -07:00
clkt2xxx_sys.c OMAP2xxx clock: move sys_clk code into mach-omap2/clkt2xxx_sys.c 2010-01-28 18:13:49 -07:00
clkt2xxx_virt_prcm_set.c OMAP2xxx clock: move the DVFS virtual clock code into mach-omap2/clkt2xxx_virt_prcm_set.c 2010-01-26 20:13:06 -07:00
clkt34xx_dpll3m2.c OMAP3 clock: split out DPLL3 M2 divider functions into mach-omap2/clkt34xx_dpll3m2.c 2010-01-28 18:13:50 -07:00
clkt_clksel.c OMAP2/3/4 clock: move clksel clock functions into mach-omap2/clkt_clksel.c 2010-01-26 20:13:04 -07:00
clkt_dpll.c OMAP2/3/4 clock: move DPLL clock functions into mach-omap2/clkt_dpll.c 2010-01-26 20:13:03 -07:00
clock2xxx_data.c OMAP2/3/4 clock: rename and clean the omap2_clk_init() functions 2010-01-29 10:14:22 -07:00
clock2xxx.c OMAP2/3 clock: Extend find_idlest() to pass back idle state value 2010-02-24 12:05:54 -07:00
clock2xxx.h OMAP2/3/4 clock: rename and clean the omap2_clk_init() functions 2010-01-29 10:14:22 -07:00
clock34xx_data.c OMAP3630: Clock: Workaround for DPLL HS divider limitation 2010-02-24 12:06:00 -07:00
clock34xx.c OMAP3630: Clock: Workaround for DPLL HS divider limitation 2010-02-24 12:06:00 -07:00
clock34xx.h OMAP3630: Clock: Workaround for DPLL HS divider limitation 2010-02-24 12:06:00 -07:00
clock44xx_data.c omap3/4: Fix compile for multi-omap for clkops_noncore_dpll_ops 2010-02-15 09:27:25 -08:00
clock44xx.c omap3/4: Fix compile for multi-omap for clkops_noncore_dpll_ops 2010-02-15 09:27:25 -08:00
clock44xx.h omap3/4: Fix compile for multi-omap for clkops_noncore_dpll_ops 2010-02-15 09:27:25 -08:00
clock_common_data.c OMAP3 clock: convert clock34xx.h to clock34xx_data.c 2009-12-11 16:12:15 -07:00
clock.c OMAP2/3 clock: Extend find_idlest() to pass back idle state value 2010-02-24 12:05:54 -07:00
clock.h OMAP2/3 clock: Extend find_idlest() to pass back idle state value 2010-02-24 12:05:54 -07:00
clockdomain.c OMAP clockdomain/powerdomain: improve documentation 2010-01-26 20:13:02 -07:00
clockdomains44xx.h ARM: OMAP4 clock domains : Add the missing Clock Domain Structure 2010-01-26 20:12:58 -07:00
clockdomains.h omap2: Convert ARCH_OMAP24XX to ARCH_OMAP2 2010-02-15 09:27:01 -08:00
cm4xxx.c omap: Fix 44xx compile 2009-09-24 16:23:07 -07:00
cm44xx.h ARM: OMAP4: PM: Adds CM1/2 register defs for OMAP4 2009-12-11 17:00:45 -07:00
cm-regbits-24xx.h [ARM] OMAP2 PRCM: clean up CM_IDLEST bits 2009-02-08 17:50:37 +00:00
cm-regbits-34xx.h AM35xx: Add clock support for new modules on AM35xx 2010-02-24 12:05:55 -07:00
cm-regbits-44xx.h OMAP4: PRCM: Define shift macros as n instead of 1 << n 2010-01-29 10:14:22 -07:00
cm.c OMAP clock/hwmod: fix off-by-one errors 2009-12-11 17:00:43 -07:00
cm.h OMAP2/3 clock: Extend find_idlest() to pass back idle state value 2010-02-24 12:05:54 -07:00
control.c OMAP3: PM: Program SDRC to send self refresh on timeout of AUTO_CNT 2009-11-11 14:42:28 -08:00
cpuidle34xx.c OMAP3: CPUidle: Fixed timer resolution 2010-01-20 18:16:02 -08:00
devices.c omap2/3: Fix initcalls for multi-omap 2010-02-15 09:27:05 -08:00
dpll3xxx.c OMAP3 clock: Remove FreqSel for 3630 2010-02-24 12:05:57 -07:00
emu.c omap2/3: Fix initcalls for multi-omap 2010-02-15 09:27:05 -08:00
gpmc-nand.c omap2/3/4: Introducing 'gpmc-nand.c' for GPMC specific NAND init 2010-02-15 10:03:33 -08:00
gpmc-onenand.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
gpmc-smc91x.c omap: use smc91x_platdata to setup smc91x 2009-12-11 16:16:33 -08:00
gpmc.c omap2/3/4: gpmc: kill compile warning 2010-02-15 10:03:33 -08:00
hsmmc.c omap_hsmmc: Allow for a shared VccQ 2010-02-15 10:03:34 -08:00
hsmmc.h omap_hsmmc: Allow for a shared VccQ 2010-02-15 10:03:34 -08:00
i2c.c omap: Split i2c platform init for mach-omap1 and mach-omap2 2009-12-11 16:16:32 -08:00
id.c ARM: OMAP4: PM: OMAP4 essential basic initialisations. 2010-01-26 20:12:51 -07:00
io.c omap3: Replace ARCH_OMAP34XX with ARCH_OMAP3 2010-02-15 09:27:02 -08:00
iommu2.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
irq.c OMAP2/3: IRQ: ensure valid base address 2010-02-03 08:48:06 -08:00
Kconfig omap2/3/4: Replace orred CONFIG_ARCH_OMAP2/3/4 with CONFIG_ARCH_OMAP2PLUS 2010-02-15 09:27:04 -08:00
mailbox.c omap2/3/4: mailbox: kill compile warning in mailbox.c 2010-02-15 10:03:33 -08:00
Makefile OMAP3: hwmod: support to specify the offset position of various SYSCONFIG register bits. 2010-02-24 12:05:58 -07:00
Makefile.boot
mcbsp.c omap: McBSP: Introduce caching in register write operations 2010-02-15 10:03:33 -08:00
mux34xx.c omap: Fix 3630 mux errors 2010-02-03 08:48:06 -08:00
mux34xx.h omap: mux: Add 36xx CBP package support 2009-12-11 16:16:33 -08:00
mux.c Merge branch 'omap-fixes-for-linus' into omap-for-linus 2010-02-17 14:08:58 -08:00
mux.h omap3: Replace ARCH_OMAP34XX with ARCH_OMAP3 2010-02-15 09:27:02 -08:00
omap3-iommu.c omap: iommu: reorganize 2009-11-22 10:24:32 -08:00
omap_hwmod_34xx.h omap3: Replace ARCH_OMAP34XX with ARCH_OMAP3 2010-02-15 09:27:02 -08:00
omap_hwmod_2420.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
omap_hwmod_2430.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
omap_hwmod_common_data.c OMAP3: hwmod: support to specify the offset position of various SYSCONFIG register bits. 2010-02-24 12:05:58 -07:00
omap_hwmod.c OMAP3: hwmod: support to specify the offset position of various SYSCONFIG register bits. 2010-02-24 12:05:58 -07:00
omap-headsmp.S OMAP4: AuxCoreBoot registers only accessible in secure mode 2009-12-11 16:16:35 -08:00
omap-smp.c OMAP4: Remove the secondary wait loop 2009-12-11 16:16:35 -08:00
opp2xxx.h omap2/3: Multiboot compile fixes to compile in omap2 and omap3 2010-02-15 09:26:55 -08:00
opp2420_data.c OMAP2xxx OPP: clean up comments in OPP data 2010-01-08 15:23:15 -07:00
opp2430_data.c OMAP2xxx OPP: clean up comments in OPP data 2010-01-08 15:23:15 -07:00
pm24xx.c OMAP clockdomains: add usecounting for wakeup and sleep dependencies 2010-01-26 20:13:01 -07:00
pm34xx.c OMAP3: clock: use std _MASK suffix for CM_FCLKEN_IVA2 defines 2010-02-24 12:05:48 -07:00
pm-debug.c OMAP3 PM: Adding counters for power domain logic off and mem off during retention. 2010-02-24 12:05:50 -07:00
pm.h OMAP3: PM debug: fix build error when !CONFIG_DEBUG_FS 2010-01-20 18:16:05 -08:00
powerdomain.c OMAP3 PM: Adding counters for power domain logic off and mem off during retention. 2010-02-24 12:05:50 -07:00
powerdomains24xx.h omap2: Convert ARCH_OMAP24XX to ARCH_OMAP2 2010-02-15 09:27:01 -08:00
powerdomains34xx.h OMAP3 PM: Defining .pwrsts_logic_ret field for core power domain structure 2010-02-24 12:05:50 -07:00
powerdomains44xx.h ARM: OMAP4: PM: Add the Autogenerated OMAP4 specific power domain framework. 2010-01-26 20:12:52 -07:00
powerdomains.h OMAP2+ powerdomains/clockdomains: prepare for multi-OMAP configs 2010-01-29 10:14:23 -07:00
prcm-common.h ARM: OMAP4: PM: OMAP4 Power Domain Porting Related Clean-up. 2010-01-26 20:12:51 -07:00
prcm.c OMAP2/3: PRCM: fix misc. compiler warnings 2010-02-24 12:05:56 -07:00
prm44xx.h OMAP4: PRCM: Fix the base address for CHIRONSS reg defines 2010-01-20 13:35:27 -07:00
prm-regbits-24xx.h ARM: OMAP2: Powerdomain: Add OMAP2 powerdomains 2008-08-19 11:08:42 +03:00
prm-regbits-34xx.h OMAP3: PM: Enable IO-CHAIN wakeup 2009-11-11 14:42:28 -08:00
prm-regbits-44xx.h OMAP4: PRCM: Define shift macros as n instead of 1 << n 2010-01-29 10:14:22 -07:00
prm.h ARM: OMAP4: PM: OMAP4 Power Domain Porting Related Clean-up. 2010-01-26 20:12:51 -07:00
sdram-hynix-h8mbx00u0mer-0em.h omap3: zoom: Introduce zoom3 board support 2009-11-22 10:24:33 -08:00
sdram-micron-mt46h32m32lf-6.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdram-qimonda-hyb18m512160af-6.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdrc2xxx.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdrc.c OMAP2: Add funcs for writing SMS_ROT_* registers 2009-12-09 11:44:32 +02:00
sdrc.h OMAP2 clock: convert clock24xx.h to clock2xxx_data.c, opp2xxx* 2009-12-11 16:16:00 -07:00
serial.c omap2/3/4: serial: fix coding style indentaion 2010-02-15 10:03:33 -08:00
sleep24xx.S omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sleep34xx.S ARM: OMAP4: PM: OMAP4 Power Domain Porting Related Clean-up. 2010-01-26 20:12:51 -07:00
sram34xx.S OMAP3: SDRC: Place SDRC AC timing and MR changes in CORE DVFS SRAM code behind Kconfig 2009-12-11 17:00:42 -07:00
sram242x.S omap: Split OMAP2_IO_ADDRESS to L3 and L4 2009-10-19 15:25:31 -07:00
sram243x.S omap: Split OMAP2_IO_ADDRESS to L3 and L4 2009-10-19 15:25:31 -07:00
timer-gp.c PM debug: allow configurable wakeup from suspend on OMAP GPtimer 2009-11-11 14:42:28 -08:00
timer-mpu.c ARM: OMAP4: SMP: Add mpu timer support for OMAP4430 2009-06-09 13:03:59 +05:30
usb-ehci.c omap: mux: Replace omap_cfg_reg() with new style signal or gpio functions 2009-12-11 16:16:32 -08:00
usb-musb.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
usb-tusb6010.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00