[Bug 63011] radeon: horizontal stripes when updating screen

bugzilla-daemon at bugzilla.kernel.org bugzilla-daemon at bugzilla.kernel.org
Tue Oct 15 18:13:49 CEST 2013


https://bugzilla.kernel.org/show_bug.cgi?id=63011

--- Comment #5 from Mikko Rapeli <mikko.rapeli at iki.fi> ---
This partial revert aka hack seems to fix the issue though I have no idea what
it does :)

--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -686,7 +686,6 @@ int ni_init_microcode(struct radeon_device *rdev)
     const char *chip_name;
     const char *rlc_chip_name;
     size_t pfp_req_size, me_req_size, rlc_req_size, mc_req_size;
-    size_t smc_req_size = 0;
     char fw_name[30];
     int err;

@@ -700,7 +699,6 @@ int ni_init_microcode(struct radeon_device *rdev)
         me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4;
         rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4;
         mc_req_size = BTC_MC_UCODE_SIZE * 4;
-        smc_req_size = ALIGN(BARTS_SMC_UCODE_SIZE, 4);
         break;
     case CHIP_TURKS:
         chip_name = "TURKS";
@@ -709,7 +707,6 @@ int ni_init_microcode(struct radeon_device *rdev)
         me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4;
         rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4;
         mc_req_size = BTC_MC_UCODE_SIZE * 4;
-        smc_req_size = ALIGN(TURKS_SMC_UCODE_SIZE, 4);
         break;
     case CHIP_CAICOS:
         chip_name = "CAICOS";
@@ -718,7 +715,6 @@ int ni_init_microcode(struct radeon_device *rdev)
         me_req_size = EVERGREEN_PM4_UCODE_SIZE * 4;
         rlc_req_size = EVERGREEN_RLC_UCODE_SIZE * 4;
         mc_req_size = BTC_MC_UCODE_SIZE * 4;
-        smc_req_size = ALIGN(CAICOS_SMC_UCODE_SIZE, 4);
         break;
     case CHIP_CAYMAN:
         chip_name = "CAYMAN";
@@ -727,7 +723,6 @@ int ni_init_microcode(struct radeon_device *rdev)
         me_req_size = CAYMAN_PM4_UCODE_SIZE * 4;
         rlc_req_size = CAYMAN_RLC_UCODE_SIZE * 4;
         mc_req_size = CAYMAN_MC_UCODE_SIZE * 4;
-        smc_req_size = ALIGN(CAYMAN_SMC_UCODE_SIZE, 4);
         break;
     case CHIP_ARUBA:
         chip_name = "ARUBA";
@@ -791,23 +786,6 @@ int ni_init_microcode(struct radeon_device *rdev)
         }
     }

-    if ((rdev->family >= CHIP_BARTS) && (rdev->family <= CHIP_CAYMAN)) {
-        snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name);
-        err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev);
-        if (err) {
-            printk(KERN_ERR
-                   "smc: error loading firmware \"%s\"\n",
-                   fw_name);
-            release_firmware(rdev->smc_fw);
-            rdev->smc_fw = NULL;
-        } else if (rdev->smc_fw->size != smc_req_size) {
-            printk(KERN_ERR
-                   "ni_mc: Bogus length %zu in firmware \"%s\"\n",
-                   rdev->mc_fw->size, fw_name);
-            err = -EINVAL;
-        }
-    }
-
 out:
     if (err) {
         if (err != -EINVAL)
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c
b/drivers/gpu/drm/radeon/radeon_asic.c
index 8e5438e..8d81f59 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -1759,23 +1759,6 @@ static struct radeon_asic btc_asic = {
         .set_uvd_clocks = &evergreen_set_uvd_clocks,
         .get_temperature = &evergreen_get_temp,
     },
-    .dpm = {
-        .init = &btc_dpm_init,
-        .setup_asic = &btc_dpm_setup_asic,
-        .enable = &btc_dpm_enable,
-        .disable = &btc_dpm_disable,
-        .pre_set_power_state = &btc_dpm_pre_set_power_state,
-        .set_power_state = &btc_dpm_set_power_state,
-        .post_set_power_state = &btc_dpm_post_set_power_state,
-        .display_configuration_changed =
&cypress_dpm_display_configuration_changed,
-        .fini = &btc_dpm_fini,
-        .get_sclk = &btc_dpm_get_sclk,
-        .get_mclk = &btc_dpm_get_mclk,
-        .print_power_state = &rv770_dpm_print_power_state,
-        .debugfs_print_current_performance_level =
&rv770_dpm_debugfs_print_current_performance_level,
-        .force_performance_level = &rv770_dpm_force_performance_level,
-        .vblank_too_short = &btc_dpm_vblank_too_short,
-    },
     .pflip = {
         .pre_page_flip = &evergreen_pre_page_flip,
         .page_flip = &evergreen_page_flip,
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h
b/drivers/gpu/drm/radeon/radeon_asic.h
index ddbd2b8..6a54491 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -554,17 +554,6 @@ int cypress_dpm_set_power_state(struct radeon_device
*rdev);
 void cypress_dpm_display_configuration_changed(struct radeon_device *rdev);
 void cypress_dpm_fini(struct radeon_device *rdev);
 bool cypress_dpm_vblank_too_short(struct radeon_device *rdev);
-int btc_dpm_init(struct radeon_device *rdev);
-void btc_dpm_setup_asic(struct radeon_device *rdev);
-int btc_dpm_enable(struct radeon_device *rdev);
-void btc_dpm_disable(struct radeon_device *rdev);
-int btc_dpm_pre_set_power_state(struct radeon_device *rdev);
-int btc_dpm_set_power_state(struct radeon_device *rdev);
-void btc_dpm_post_set_power_state(struct radeon_device *rdev);
-void btc_dpm_fini(struct radeon_device *rdev);
-u32 btc_dpm_get_sclk(struct radeon_device *rdev, bool low);
-u32 btc_dpm_get_mclk(struct radeon_device *rdev, bool low);
-bool btc_dpm_vblank_too_short(struct radeon_device *rdev);
 int sumo_dpm_init(struct radeon_device *rdev);
 int sumo_dpm_enable(struct radeon_device *rdev);
 void sumo_dpm_disable(struct radeon_device *rdev);

-- 
You are receiving this mail because:
You are watching the assignee of the bug.


More information about the dri-devel mailing list