diff options
-rw-r--r-- | src/mainboard/google/nyan/devicetree.cb | 1 | ||||
-rw-r--r-- | src/mainboard/google/nyan_big/devicetree.cb | 1 | ||||
-rw-r--r-- | src/mainboard/google/nyan_blaze/devicetree.cb | 1 | ||||
-rw-r--r-- | src/soc/nvidia/tegra124/chip.h | 3 | ||||
-rw-r--r-- | src/soc/nvidia/tegra124/display.c | 30 |
5 files changed, 22 insertions, 14 deletions
diff --git a/src/mainboard/google/nyan/devicetree.cb b/src/mainboard/google/nyan/devicetree.cb index 885445022e..e7ae54d52b 100644 --- a/src/mainboard/google/nyan/devicetree.cb +++ b/src/mainboard/google/nyan/devicetree.cb @@ -47,6 +47,7 @@ chip soc/nvidia/tegra124 # various panel delay time register "vdd_delay_ms" = "200" + register "pwm_to_bl_delay_ms" = "10" register "vdd_to_hpd_delay_ms" = "200" register "hpd_unplug_min_us" = "2000" register "hpd_plug_min_us" = "250" diff --git a/src/mainboard/google/nyan_big/devicetree.cb b/src/mainboard/google/nyan_big/devicetree.cb index 885445022e..e7ae54d52b 100644 --- a/src/mainboard/google/nyan_big/devicetree.cb +++ b/src/mainboard/google/nyan_big/devicetree.cb @@ -47,6 +47,7 @@ chip soc/nvidia/tegra124 # various panel delay time register "vdd_delay_ms" = "200" + register "pwm_to_bl_delay_ms" = "10" register "vdd_to_hpd_delay_ms" = "200" register "hpd_unplug_min_us" = "2000" register "hpd_plug_min_us" = "250" diff --git a/src/mainboard/google/nyan_blaze/devicetree.cb b/src/mainboard/google/nyan_blaze/devicetree.cb index 885445022e..e7ae54d52b 100644 --- a/src/mainboard/google/nyan_blaze/devicetree.cb +++ b/src/mainboard/google/nyan_blaze/devicetree.cb @@ -47,6 +47,7 @@ chip soc/nvidia/tegra124 # various panel delay time register "vdd_delay_ms" = "200" + register "pwm_to_bl_delay_ms" = "10" register "vdd_to_hpd_delay_ms" = "200" register "hpd_unplug_min_us" = "2000" register "hpd_plug_min_us" = "250" diff --git a/src/soc/nvidia/tegra124/chip.h b/src/soc/nvidia/tegra124/chip.h index 89a8d977aa..08e96ab809 100644 --- a/src/soc/nvidia/tegra124/chip.h +++ b/src/soc/nvidia/tegra124/chip.h @@ -72,6 +72,9 @@ struct soc_nvidia_tegra124_config { /* 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; diff --git a/src/soc/nvidia/tegra124/display.c b/src/soc/nvidia/tegra124/display.c index 87472efd09..898e9b375b 100644 --- a/src/soc/nvidia/tegra124/display.c +++ b/src/soc/nvidia/tegra124/display.c @@ -252,20 +252,6 @@ void display_startup(device_t dev) printk(BIOS_SPEW,"%s: lvds shutdown setting gpio %08x to %d\n", __func__, config->lvds_shutdown_gpio, 0); } - if (config->backlight_en_gpio){ - gpio_output(config->backlight_en_gpio, 1); - printk(BIOS_SPEW,"%s: backlight enable setting gpio %08x to %d\n", - __func__, config->backlight_en_gpio, 1); - } - - /* Set up Tegra PWM n (where n is specified in config->pwm) to drive the - * panel backlight. - */ - printk(BIOS_SPEW, "%s: enable panel backlight pwm\n", __func__); - WRITEL(((1 << NV_PWM_CSR_ENABLE_SHIFT) | - (220 << NV_PWM_CSR_PULSE_WIDTH_SHIFT) | /* 220/256 */ - 0x02e), /* frequency divider */ - &pwm->pwm[config->pwm].csr); if (framebuffer_size_mb == 0){ framebuffer_size_mb = ALIGN_UP(config->xres * config->yres * @@ -313,6 +299,22 @@ void display_startup(device_t dev) update_window(disp_ctrl, config); + /* Set up Tegra PWM n (where n is specified in config->pwm) to drive the + * panel backlight. + */ + printk(BIOS_SPEW, "%s: enable panel backlight pwm\n", __func__); + WRITEL(((1 << NV_PWM_CSR_ENABLE_SHIFT) | + (220 << NV_PWM_CSR_PULSE_WIDTH_SHIFT) | /* 220/256 */ + 0x02e), /* frequency divider */ + &pwm->pwm[config->pwm].csr); + + udelay(config->pwm_to_bl_delay_ms * 1000); + if (config->backlight_en_gpio){ + gpio_output(config->backlight_en_gpio, 1); + printk(BIOS_SPEW,"%s: backlight enable setting gpio %08x to %d\n", + __func__, config->backlight_en_gpio, 1); + } + printk(BIOS_INFO, "%s: display init done.\n", __func__); /* tell depthcharge ... |