Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'drm-fixes-3.17' of git://people.freedesktop.org/~agd5f/linux into drm-fixes

Just a few fixes for radeon for 3.17.

* 'drm-fixes-3.17' of git://people.freedesktop.org/~agd5f/linux:
drm/radeon/dpm: set the thermal type properly for special configs
drm/radeon: reduce memory footprint for debugging
drm/radeon: add connector quirk for fujitsu board
drm/radeon: fix semaphore value init
drm/radeon: only use me/pfp sync on evergreen+

+31 -15
+2 -5
drivers/gpu/drm/radeon/atombios_dp.c
··· 405 405 u8 msg[DP_DPCD_SIZE]; 406 406 int ret; 407 407 408 - char dpcd_hex_dump[DP_DPCD_SIZE * 3]; 409 - 410 408 ret = drm_dp_dpcd_read(&radeon_connector->ddc_bus->aux, DP_DPCD_REV, msg, 411 409 DP_DPCD_SIZE); 412 410 if (ret > 0) { 413 411 memcpy(dig_connector->dpcd, msg, DP_DPCD_SIZE); 414 412 415 - hex_dump_to_buffer(dig_connector->dpcd, sizeof(dig_connector->dpcd), 416 - 32, 1, dpcd_hex_dump, sizeof(dpcd_hex_dump), false); 417 - DRM_DEBUG_KMS("DPCD: %s\n", dpcd_hex_dump); 413 + DRM_DEBUG_KMS("DPCD: %*ph\n", (int)sizeof(dig_connector->dpcd), 414 + dig_connector->dpcd); 418 415 419 416 radeon_dp_probe_oui(radeon_connector); 420 417
+2 -2
drivers/gpu/drm/radeon/r600.c
··· 2769 2769 radeon_ring_write(ring, lower_32_bits(addr)); 2770 2770 radeon_ring_write(ring, (upper_32_bits(addr) & 0xff) | sel); 2771 2771 2772 - /* PFP_SYNC_ME packet only exists on 7xx+ */ 2773 - if (emit_wait && (rdev->family >= CHIP_RV770)) { 2772 + /* PFP_SYNC_ME packet only exists on 7xx+, only enable it on eg+ */ 2773 + if (emit_wait && (rdev->family >= CHIP_CEDAR)) { 2774 2774 /* Prevent the PFP from running ahead of the semaphore wait */ 2775 2775 radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0)); 2776 2776 radeon_ring_write(ring, 0x0);
+26 -7
drivers/gpu/drm/radeon/radeon_atombios.c
··· 447 447 } 448 448 } 449 449 450 + /* Fujitsu D3003-S2 board lists DVI-I as DVI-I and VGA */ 451 + if ((dev->pdev->device == 0x9805) && 452 + (dev->pdev->subsystem_vendor == 0x1734) && 453 + (dev->pdev->subsystem_device == 0x11bd)) { 454 + if (*connector_type == DRM_MODE_CONNECTOR_VGA) 455 + return false; 456 + } 450 457 451 458 return true; 452 459 } ··· 2288 2281 (controller->ucFanParameters & 2289 2282 ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); 2290 2283 rdev->pm.int_thermal_type = THERMAL_TYPE_KV; 2291 - } else if ((controller->ucType == 2292 - ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO) || 2293 - (controller->ucType == 2294 - ATOM_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL) || 2295 - (controller->ucType == 2296 - ATOM_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL)) { 2297 - DRM_INFO("Special thermal controller config\n"); 2284 + } else if (controller->ucType == 2285 + ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO) { 2286 + DRM_INFO("External GPIO thermal controller %s fan control\n", 2287 + (controller->ucFanParameters & 2288 + ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); 2289 + rdev->pm.int_thermal_type = THERMAL_TYPE_EXTERNAL_GPIO; 2290 + } else if (controller->ucType == 2291 + ATOM_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL) { 2292 + DRM_INFO("ADT7473 with internal thermal controller %s fan control\n", 2293 + (controller->ucFanParameters & 2294 + ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); 2295 + rdev->pm.int_thermal_type = THERMAL_TYPE_ADT7473_WITH_INTERNAL; 2296 + } else if (controller->ucType == 2297 + ATOM_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL) { 2298 + DRM_INFO("EMC2103 with internal thermal controller %s fan control\n", 2299 + (controller->ucFanParameters & 2300 + ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); 2301 + rdev->pm.int_thermal_type = THERMAL_TYPE_EMC2103_WITH_INTERNAL; 2298 2302 } else if (controller->ucType < ARRAY_SIZE(pp_lib_thermal_controller_names)) { 2299 2303 DRM_INFO("Possible %s thermal controller at 0x%02x %s fan control\n", 2300 2304 pp_lib_thermal_controller_names[controller->ucType], 2301 2305 controller->ucI2cAddress >> 1, 2302 2306 (controller->ucFanParameters & 2303 2307 ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); 2308 + rdev->pm.int_thermal_type = THERMAL_TYPE_EXTERNAL; 2304 2309 i2c_bus = radeon_lookup_i2c_gpio(rdev, controller->ucI2cLine); 2305 2310 rdev->pm.i2c_bus = radeon_i2c_lookup(rdev, &i2c_bus); 2306 2311 if (rdev->pm.i2c_bus) {
+1 -1
drivers/gpu/drm/radeon/radeon_semaphore.c
··· 34 34 int radeon_semaphore_create(struct radeon_device *rdev, 35 35 struct radeon_semaphore **semaphore) 36 36 { 37 - uint32_t *cpu_addr; 37 + uint64_t *cpu_addr; 38 38 int i, r; 39 39 40 40 *semaphore = kmalloc(sizeof(struct radeon_semaphore), GFP_KERNEL);