diff options
author | Robby Cai <R63905@freescale.com> | 2011-04-20 13:48:47 +0800 |
---|---|---|
committer | Robby Cai <R63905@freescale.com> | 2011-05-09 11:16:18 +0800 |
commit | bf6f055cbb3801b5b1de8dba1eb3363c46f7973c (patch) | |
tree | 131936a349dcb5848f79c0abe7c71c05504fec14 /arch | |
parent | fe0aa649afba2d9986364c50a1ebc2390f667554 (diff) |
ENGR00142097 MX50 RD3: Fix: Enable HDMI will cause reboot failure
On PoR(Power-On-Reset), the issue does not exist; only on WDog Reset
(for example, issue "reboot" command in Linux) this issue happens,
and kernel stops at HDMI reset.
Note that PoR will reset IOMUX setting, but WDog Reset will
not reset IOMUX. However, WDog Reset will reset GPIO setting(as INPUT).
With this fact in mind, we can explain the reason much more easily.
It seems that SI2312BDS supposes EIM_RW to be always high to work well.
On WDog reset, the EIM_RW is set as GPIO INPUT which causes 1V2_HDMI to
output 0.0V. Even HDMI driver sets EIM_RW as GPIO OUTPUT High which causes
1V2_HDMI to output 1.2V, HDMI reset does not work well.
This reality shows that a LOW-HIGH timing causes SI2312BDS not work well.
Instead a HIGH-LOW-HIGH timing appears to be needed to get a stable output.
Actually, on PoR, the EIM_RW (GPIO to control HDMI power) is set as
default MUX_MODE 0, which causes 1V2_HDMI outputs 1.2V. In this case,
the timing meets HIGH-LOW-HIGH, HDMI reset works well.
So similarly, we need pull EIM_RW high to 1V2_HDMI output high firstly
in driver to achieve HIGH-LOW-HIGH timing.
Signed-off-by: Robby Cai <R63905@freescale.com>
(cherry picked from commit 6cb3285542eb67c00b9ef5248e34db82257da3d4)
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-mx5/mx50_rdp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/mach-mx5/mx50_rdp.c b/arch/arm/mach-mx5/mx50_rdp.c index c1ba0ca67b11..9286748f0030 100644 --- a/arch/arm/mach-mx5/mx50_rdp.c +++ b/arch/arm/mach-mx5/mx50_rdp.c @@ -1861,7 +1861,8 @@ static void __init mx50_rdp_io_init(void) gpio_request(HDMI_RESET, "hdmi-reset"); gpio_direction_output(HDMI_RESET, 1); gpio_request(HDMI_PWR_ENABLE, "hdmi-pwr-enable"); - gpio_direction_output(HDMI_PWR_ENABLE, 0); + gpio_direction_output(HDMI_PWR_ENABLE, 1); + gpio_set_value(HDMI_PWR_ENABLE, 0); gpio_request(HDMI_DETECT, "hdmi-detect"); gpio_direction_input(HDMI_DETECT); |