
Current configuration results in the following voltage waveform (example 4460 Panda ES): |---------------| (SET1 default 1.4V) | --------(programmed voltage) | <- (This switch happens on mux7,pullup) vdd_mpu(TPS) -----/ (OPP boot voltage) --------- (programmed voltage) vdd_IVA(TWL6030) -------------------------/ (OPP boot voltage) --------- (programmed voltage) vdd_core(TWL6030) -----------------------/ (OPP boot voltage) Problem 1) |<----- Tx ------>| timing violation for a duration Tx close to few milliseconds. Problem 2) voltage of MPU goes beyond spec for even the highest of MPU OPP. Problem 3) All SoCs are doing MPU, CORE, IVA - which is a timing violation Oscilloscope picture: http://goo.gl/SykHb
By using GPIO as recommended as standard procedure by TI and fixing the sequence in this series changes this to: --------- (programmed voltage) vdd_IVA(TWL6030) ------------------/ (OPP boot voltage) -------- (programmed voltage) vdd_mpu(TPS) ----------------/ (Opp boot voltage) --------- (programmed voltage) vdd_core(TWL6030) -------------/ (OPP boot voltage) Oscilloscope Picture: http://goo.gl/PgyKt
Why is this critical: without the voltage sequence fixes, certain intermediate circuitry inside OMAP behaves in often unpredictable manner as they are operating out of spec. This in production line(extreme example of OMAP4460) translates close to ~5% devices failing to boot up and shows all kind of random untraceable crashes in production kernel.
NOTE: 1. Clock sequences need to be fixed as well 2. kernel.org support for PandaBoard ES(OMAP4460) depends on the current wrong setup of u-boot to allow kernel boot to take place. This can and must be fixed. Merging this series breaks k.org, as a temporary WA: run: mw.w 0x4A31E05A 0x1f on u-boot prompt prior to booting the kernel to replicate old broken logic.
Tested on: Pandaboard vanilla - OMAP4430 Pandaboard ES - OMAP4460 OMAP5 EVM
Nishanth Menon (4): OMAP3+: Introduce generic logic for OMAP voltage controller OMAP4460: TPS Ensure SET1 is selected after voltage configuration OMAP4: scale voltage of core before MPU scales OMAP5: scale voltage of core before MPU scales
arch/arm/cpu/armv7/omap-common/Makefile | 1 + arch/arm/cpu/armv7/omap-common/clocks-common.c | 67 ++++-------- arch/arm/cpu/armv7/omap-common/vc.c | 138 ++++++++++++++++++++++++ arch/arm/cpu/armv7/omap4/clocks.c | 64 ++++++----- arch/arm/cpu/armv7/omap5/clocks.c | 10 +- arch/arm/include/asm/arch-omap4/clocks.h | 17 +--- arch/arm/include/asm/arch-omap4/sys_proto.h | 2 + arch/arm/include/asm/arch-omap5/clocks.h | 17 +--- arch/arm/include/asm/arch-omap5/sys_proto.h | 2 + board/ti/panda/panda_mux_data.h | 2 +- board/ti/sdp4430/sdp4430_mux_data.h | 2 +- 11 files changed, 211 insertions(+), 111 deletions(-) create mode 100644 arch/arm/cpu/armv7/omap-common/vc.c
Regards, Nishanth Menon