tegra124: display clock should be initialized before any access

We initialized the dc before the plld's initialization. So some
of the dc init settings did not took effect. This patch moves
the clock_display() before the dc init call.

BRANCH=None
BUG=chrome-os-partner:28128
TEST=Display works and system boots up on Nyan and Big

Original-Change-Id: If2c40e2526fdf7a6aa33a2684ba324bd0ec40e90
Original-Signed-off-by: Vince Hsu <vinceh@nvidia.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/200413
Original-Reviewed-by: Tom Warren <twarren@nvidia.com>
Original-Reviewed-by: Jimmy Zhang <jimmzhang@nvidia.com>
Original-Reviewed-by: David Hendricks <dhendrix@chromium.org>
Original-Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Original-Commit-Queue: David Hendricks <dhendrix@chromium.org>
Original-Tested-by: David Hendricks <dhendrix@chromium.org>
(cherry picked from commit dc3cc253c319c21772c30962d963ec9dfc4944a7)
Signed-off-by: Marc Jones <marc.jones@se-eng.com>

Change-Id: I021290f4293c740666d460f73fecbe79146896a4
Reviewed-on: http://review.coreboot.org/7950
Tested-by: build bot (Jenkins)
Reviewed-by: David Hendricks <dhendrix@chromium.org>
This commit is contained in:
Vince Hsu 2014-05-16 12:46:02 +08:00 committed by Marc Jones
parent d72d8aa952
commit c09642e315
1 changed files with 10 additions and 1 deletions

View File

@ -135,7 +135,7 @@ static int update_display_mode(struct display_controller *disp_ctrl,
&disp_ctrl->disp.disp_clk_ctrl); &disp_ctrl->disp.disp_clk_ctrl);
printk(BIOS_DEBUG, "%s: PixelClock=%u, ShiftClockDiv=%u\n", printk(BIOS_DEBUG, "%s: PixelClock=%u, ShiftClockDiv=%u\n",
__func__, config->pixel_clock, shift_clock_div); __func__, config->pixel_clock, shift_clock_div);
return clock_display(config->pixel_clock * shift_clock_div * 2); return 0;
} }
static void update_window(struct display_controller *disp_ctrl, static void update_window(struct display_controller *disp_ctrl,
@ -278,6 +278,15 @@ void display_startup(device_t dev)
* light things up here once we're sure it's all working. * light things up here once we're sure it's all working.
*/ */
/* The plld is programmed with the assumption of the SHIFT_CLK_DIVIDER
* and PIXEL_CLK_DIVIDER are zero (divide by 1). See the
* update_display_mode() for detail.
*/
if (clock_display(config->pixel_clock * 2)) {
printk(BIOS_ERR, "dc: clock init failed\n");
return;
};
/* Init dc */ /* Init dc */
if (tegra_dc_init(disp_ctrl)) { if (tegra_dc_init(disp_ctrl)) {
printk(BIOS_ERR, "dc: init failed\n"); printk(BIOS_ERR, "dc: init failed\n");