5a056d30a1
Panel datasheet defines some delay between PWM signal out and backlight enable. This change fixes the current sequence and makes the delays adjustable by dt setting. BRANCH=none BUG=chrome-os-partner:28008 TEST=Verified on Big DVT and Nyan/Norrin panels. Panel works fine with dev mode, and the measurement of power on sequence meets panel requirements. Original-Change-Id: If6015bbb6015a3b203d425f5e90f676ad786b5e8 Original-Signed-off-by: Ken Chang <kenc@nvidia.com> Original-Reviewed-on: https://chromium-review.googlesource.com/196183 Original-Reviewed-by: Hung-Te Lin <hungte@chromium.org> (cherry picked from commit 2bbcaa7281222ffc0b4026e8b1eb4c210a8e308a) Signed-off-by: Marc Jones <marc.jones@se-eng.com> Change-Id: Id6424f66eb8dc6adeb70eaa33df742f4e57983c3 Reviewed-on: http://review.coreboot.org/7776 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins)
107 lines
3.1 KiB
C
107 lines
3.1 KiB
C
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright 2013 Google Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef __SOC_NVIDIA_TEGRA124_CHIP_H__
|
|
#define __SOC_NVIDIA_TEGRA124_CHIP_H__
|
|
#include <arch/cache.h>
|
|
#include <soc/addressmap.h>
|
|
#include "gpio.h"
|
|
|
|
#define EFAULT 1
|
|
#define EINVAL 2
|
|
|
|
/* this is a misuse of the device tree. We're going to let it go for now but
|
|
* we should at minimum have a struct for the display controller, since
|
|
* the chip supports two.
|
|
*/
|
|
struct soc_nvidia_tegra124_config {
|
|
u32 xres;
|
|
u32 yres;
|
|
u32 framebuffer_bits_per_pixel;
|
|
u32 color_depth;
|
|
u32 panel_bits_per_pixel;
|
|
int cache_policy;
|
|
/* there are two. It's not unimaginable that we might someday
|
|
* have two of these structs in a single mainboard.
|
|
*/
|
|
u32 display_controller;
|
|
u32 framebuffer_base;
|
|
/* Technically, we can compute this. At the same time, some platforms
|
|
* might want to specify a specific size for their own reasons. If it is
|
|
* zero the soc code will compute it as xres*yres*framebuffer_bits_per_pixel/4
|
|
*/
|
|
u32 framebuffer_size;
|
|
/* GPIOs -- all, some, or none are used. Unused ones can be ignored
|
|
* in devicetree.cb since if they are not set there they default to 0,
|
|
* and 0 for a gpio means 'unused GPIO'.
|
|
*/
|
|
gpio_t backlight_en_gpio;
|
|
gpio_t lvds_shutdown_gpio;
|
|
gpio_t backlight_vdd_gpio;
|
|
gpio_t panel_vdd_gpio;
|
|
|
|
/* required info. */
|
|
/* pwm to use to set display contrast */
|
|
int pwm;
|
|
/* timings -- five numbers, all relative to the previous
|
|
* event, not to absolute time. e.g., vdd_data_delay is the
|
|
* delay from vdd on to data, not from power on to data.
|
|
* This is stated to be four timings in the
|
|
* u-boot docs. In any event, in coreboot, we generally
|
|
* only delay long enough to let the panel wake up and then
|
|
* do the control operations -- meaning, for *coreboot*
|
|
* we probably only need the vdd_delay, but payloads may
|
|
* need the other info.
|
|
*/
|
|
/* Delay before from power on asserting vdd */
|
|
int vdd_delay_ms;
|
|
|
|
/* Delay beween pwm and backlight_en_gpio is asserted */
|
|
int pwm_to_bl_delay_ms;
|
|
|
|
/* Delay before HPD high */
|
|
int vdd_to_hpd_delay_ms;
|
|
|
|
int hpd_unplug_min_us;
|
|
int hpd_plug_min_us;
|
|
int hpd_irq_min_us;
|
|
|
|
int href_to_sync;
|
|
int hsync_width;
|
|
int hback_porch;
|
|
int hfront_porch;
|
|
int vref_to_sync;
|
|
int vsync_width;
|
|
int vback_porch;
|
|
int vfront_porch;
|
|
|
|
int pixel_clock;
|
|
|
|
/* The minimum link configuraton settings */
|
|
u32 lane_count;
|
|
u32 enhanced_framing;
|
|
u32 link_bw;
|
|
u32 drive_current;
|
|
u32 preemphasis;
|
|
u32 postcursor;
|
|
|
|
void *dc_data;
|
|
};
|
|
|
|
#endif /* __SOC_NVIDIA_TEGRA124_CHIP_H__ */
|