drm/amd/display: fix eDP fast bootup for pre-raven asic
authorhersen wu <hersenxs.wu@amd.com>
Fri, 11 Jan 2019 15:39:30 +0000 (10:39 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 25 Jan 2019 21:15:36 +0000 (16:15 -0500)
[Why]
For fastboot, Bios will light up eDP before SW driver is loaded. SW
driver will check if eDP is lit by bios through reading the
BIOS_SCRATCH_3 register. If lit, SW driver will not power down eDP
power and phy to save time.

Definition of BIOS_SCRATCH_3 are missing for pre-raven asic. This
causes eDP fast boot to not work property. For some eDP panels, even
if dp tx sends NoVideoStream_flag =1 and dpcd 0x600=2, eDP rx may not
handle properly. This may cause a short flash on screen.

[How] Add definition of BIOS_SCRATCH_3 for all asic

Signed-off-by: hersen wu <hersenxs.wu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
Acked-by: Leo Li <sunpeng.li@amd.com>
Acked-by: Yongqiang Sun <yongqiang.sun@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/bios/bios_parser_helper.c
drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c

index fdda8aa8e3031f7f667da7e931d34de8f849f847..d8275ceb20c1a886909f3388d0c5be5f9529c94d 100644 (file)
@@ -83,8 +83,7 @@ uint32_t bios_get_vga_enabled_displays(
 {
        uint32_t active_disp = 1;
 
-       if (bios->regs->BIOS_SCRATCH_3) /*follow up with other asic, todo*/
-               active_disp = REG_READ(BIOS_SCRATCH_3) & 0XFFFF;
+       active_disp = REG_READ(BIOS_SCRATCH_3) & 0XFFFF;
        return active_disp;
 }
 
index c3f616a739d78e877971da678dc108b364e78185..23044e6723e88311c8059d2d18dc19c58821b834 100644 (file)
@@ -76,6 +76,7 @@
 
 #ifndef mmBIOS_SCRATCH_2
        #define mmBIOS_SCRATCH_2 0x05CB
+       #define mmBIOS_SCRATCH_3 0x05CC
        #define mmBIOS_SCRATCH_6 0x05CF
 #endif
 
@@ -365,6 +366,7 @@ static const struct dce_abm_mask abm_mask = {
 #define DCFE_MEM_PWR_CTRL_REG_BASE 0x1b03
 
 static const struct bios_registers bios_regs = {
+       .BIOS_SCRATCH_3 = mmBIOS_SCRATCH_3,
        .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
 };
 
index 7d46eb7a2ace5ab5cd8a43856ba423329d4b1c9a..7549adaa1542beb28ce8087ed3dd73ff6ab6a33f 100644 (file)
@@ -84,6 +84,7 @@
 
 #ifndef mmBIOS_SCRATCH_2
        #define mmBIOS_SCRATCH_2 0x05CB
+       #define mmBIOS_SCRATCH_3 0x05CC
        #define mmBIOS_SCRATCH_6 0x05CF
 #endif
 
@@ -369,6 +370,7 @@ static const struct dce110_clk_src_mask cs_mask = {
 };
 
 static const struct bios_registers bios_regs = {
+       .BIOS_SCRATCH_3 = mmBIOS_SCRATCH_3,
        .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
 };
 
index d930e09ccfb42ce4282dcea15aa52de5a3636881..ea3065d633722bf6b1f2199e5b44eba055646460 100644 (file)
@@ -76,6 +76,7 @@
 
 #ifndef mmBIOS_SCRATCH_2
        #define mmBIOS_SCRATCH_2 0x05CB
+       #define mmBIOS_SCRATCH_3 0x05CC
        #define mmBIOS_SCRATCH_6 0x05CF
 #endif
 
@@ -376,6 +377,7 @@ static const struct dce110_clk_src_mask cs_mask = {
 };
 
 static const struct bios_registers bios_regs = {
+       .BIOS_SCRATCH_3 = mmBIOS_SCRATCH_3,
        .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
 };
 
index 23d7d4d8520702620220abe42d5e16595d35c941..312a0aebf91fab31d8d4a6f6e076b5ed3aaf3c9a 100644 (file)
@@ -442,6 +442,7 @@ struct dce_i2c_hw *dce120_i2c_hw_create(
        return dce_i2c_hw;
 }
 static const struct bios_registers bios_regs = {
+       .BIOS_SCRATCH_3 = mmBIOS_SCRATCH_3 + NBIO_BASE(mmBIOS_SCRATCH_3_BASE_IDX),
        .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6 + NBIO_BASE(mmBIOS_SCRATCH_6_BASE_IDX)
 };
 
index e0bba0bc996b90f42bf9f8bc3b52c4b89f9638b4..2eca81b5cf2f770cc08bba6eecb27d9d2afdff90 100644 (file)
@@ -77,6 +77,7 @@
 
 #ifndef mmBIOS_SCRATCH_2
        #define mmBIOS_SCRATCH_2 0x05CB
+       #define mmBIOS_SCRATCH_3 0x05CC
        #define mmBIOS_SCRATCH_6 0x05CF
 #endif
 
@@ -358,6 +359,7 @@ static const struct dce110_clk_src_mask cs_mask = {
 };
 
 static const struct bios_registers bios_regs = {
+       .BIOS_SCRATCH_3 = mmBIOS_SCRATCH_3,
        .BIOS_SCRATCH_6 = mmBIOS_SCRATCH_6
 };