diff options
| author | Dave Airlie <airlied@redhat.com> | 2026-01-15 14:49:33 +1000 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2026-01-15 14:49:33 +1000 |
| commit | 83dc0ba2755296b5e5882e044c80973b7c3fce9e (patch) | |
| tree | 53774323449c41eb1b17e101be83197c6b5cbb82 /drivers/gpu/drm/radeon | |
| parent | a87fef0880c4f52769b5a3c2fc1b2d73aaa04eb3 (diff) | |
| parent | 38a0f4cf8c6147fd10baa206ab349f8ff724e391 (diff) | |
| download | linux-next-83dc0ba2755296b5e5882e044c80973b7c3fce9e.tar.gz linux-next-83dc0ba2755296b5e5882e044c80973b7c3fce9e.zip | |
Merge tag 'amd-drm-next-6.20-2026-01-09' of https://gitlab.freedesktop.org/agd5f/linux into drm-next
amd-drm-next-6.20-2026-01-09:
amdgpu:
- GPUVM updates
- Initial support for larger GPU address spaces
- Initial SMUIO 15.x support
- Documentation updates
- Initial PSP 15.x support
- Initial IH 7.1 support
- Initial IH 6.1.1 support
- SMU 13.0.12 updates
- RAS updates
- Initial MMHUB 3.4 support
- Initial MMHUB 4.2 support
- Initial GC 12.1 support
- Initial GC 11.5.4 support
- HDMI fixes
- Panel replay improvements
- DML updates
- DC FP fixes
- Initial SDMA 6.1.4 support
- Initial SDMA 7.1 support
- Userq updates
- DC HPD refactor
- SwSMU cleanups and refactoring
- TTM memory ops parallelization
- DCN 3.5 fixes
- DP audio fixes
- Clang fixes
- Misc spelling fixes and cleanups
- Initial SDMA 7.11.4 support
- Convert legacy DRM logging helpers to new drm logging helpers
- Initial JPEG 5.3 support
- Add support for changing UMA size via the driver
- DC analog fixes
- GC 9 gfx queue reset support
- Initial SMU 15.x support
amdkfd:
- Reserved SDMA rework
- Refactor SPM
- Initial GC 12.1 support
- Initial GC 11.5.4 support
- Initial SDMA 7.1 support
- Initial SDMA 6.1.4 support
- Increase the kfd process hash table
- Per context support
- Topology fixes
radeon:
- Convert legacy DRM logging helpers to new drm logging helpers
- Use devm for i2c adapters
- Variable sized array fix
- Misc cleanups
UAPI:
- KFD context support. Proposed userspace:
https://github.com/ROCm/rocm-systems/pull/1705
https://github.com/ROCm/rocm-systems/pull/1701
- Add userq metadata queries for more queue types. Proposed userspace:
https://gitlab.freedesktop.org/yogeshmohan/mesa/-/commits/userq_query
From: Alex Deucher <alexander.deucher@amd.com>
Link: https://patch.msgid.link/20260109154713.3242957-1-alexander.deucher@amd.com
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon')
| -rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 112 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/pptable.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_display.c | 66 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_gem.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_i2c.c | 15 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/uvd_v1_0.c | 26 |
6 files changed, 120 insertions, 107 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index bc4ab71613a5..3cbc6eedbf66 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c @@ -1630,6 +1630,7 @@ void evergreen_pm_misc(struct radeon_device *rdev) int req_cm_idx = rdev->pm.requested_clock_mode_index; struct radeon_power_state *ps = &rdev->pm.power_state[req_ps_idx]; struct radeon_voltage *voltage = &ps->clock_info[req_cm_idx].voltage; + struct drm_device *ddev = rdev_to_drm(rdev); if (voltage->type == VOLTAGE_SW) { /* 0xff0x are flags rather then an actual voltage */ @@ -1638,7 +1639,7 @@ void evergreen_pm_misc(struct radeon_device *rdev) if (voltage->voltage && (voltage->voltage != rdev->pm.current_vddc)) { radeon_atom_set_voltage(rdev, voltage->voltage, SET_VOLTAGE_TYPE_ASIC_VDDC); rdev->pm.current_vddc = voltage->voltage; - DRM_DEBUG("Setting: vddc: %d\n", voltage->voltage); + drm_dbg(ddev, "Setting: vddc: %d\n", voltage->voltage); } /* starting with BTC, there is one state that is used for both @@ -1659,7 +1660,7 @@ void evergreen_pm_misc(struct radeon_device *rdev) if (voltage->vddci && (voltage->vddci != rdev->pm.current_vddci)) { radeon_atom_set_voltage(rdev, voltage->vddci, SET_VOLTAGE_TYPE_ASIC_VDDCI); rdev->pm.current_vddci = voltage->vddci; - DRM_DEBUG("Setting: vddci: %d\n", voltage->vddci); + drm_dbg(ddev, "Setting: vddci: %d\n", voltage->vddci); } } } @@ -2168,6 +2169,7 @@ static void evergreen_program_watermarks(struct radeon_device *rdev, u32 pipe_offset = radeon_crtc->crtc_id * 16; u32 tmp, arb_control3; fixed20_12 a, b, c; + struct drm_device *ddev = rdev_to_drm(rdev); if (radeon_crtc->base.enabled && num_heads && mode) { active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000, @@ -2244,14 +2246,14 @@ static void evergreen_program_watermarks(struct radeon_device *rdev, !evergreen_average_bandwidth_vs_available_bandwidth(&wm_high) || !evergreen_check_latency_hiding(&wm_high) || (rdev->disp_priority == 2)) { - DRM_DEBUG_KMS("force priority a to high\n"); + drm_dbg_kms(ddev, "force priority a to high\n"); priority_a_cnt |= PRIORITY_ALWAYS_ON; } if (!evergreen_average_bandwidth_vs_dram_bandwidth_for_display(&wm_low) || !evergreen_average_bandwidth_vs_available_bandwidth(&wm_low) || !evergreen_check_latency_hiding(&wm_low) || (rdev->disp_priority == 2)) { - DRM_DEBUG_KMS("force priority b to high\n"); + drm_dbg_kms(ddev, "force priority b to high\n"); priority_b_cnt |= PRIORITY_ALWAYS_ON; } @@ -2401,6 +2403,7 @@ static int evergreen_pcie_gart_enable(struct radeon_device *rdev) { u32 tmp; int r; + struct drm_device *ddev = rdev_to_drm(rdev); if (rdev->gart.robj == NULL) { dev_err(rdev->dev, "No VRAM object for PCIE GART.\n"); @@ -2448,7 +2451,7 @@ static int evergreen_pcie_gart_enable(struct radeon_device *rdev) WREG32(VM_CONTEXT1_CNTL, 0); evergreen_pcie_gart_tlb_flush(rdev); - DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n", + drm_info(ddev, "PCIE GART of %uM enabled (table at 0x%016llX).\n", (unsigned)(rdev->mc.gtt_size >> 20), (unsigned long long)rdev->gart.table_addr); rdev->gart.ready = true; @@ -2626,16 +2629,17 @@ static void evergreen_blank_dp_output(struct radeon_device *rdev, unsigned stream_ctrl; unsigned fifo_ctrl; unsigned counter = 0; + struct drm_device *ddev = rdev_to_drm(rdev); if (dig_fe >= ARRAY_SIZE(evergreen_dp_offsets)) { - DRM_ERROR("invalid dig_fe %d\n", dig_fe); + drm_err(ddev, "invalid dig_fe %d\n", dig_fe); return; } stream_ctrl = RREG32(EVERGREEN_DP_VID_STREAM_CNTL + evergreen_dp_offsets[dig_fe]); if (!(stream_ctrl & EVERGREEN_DP_VID_STREAM_CNTL_ENABLE)) { - DRM_ERROR("dig %d , should be enable\n", dig_fe); + drm_err(ddev, "dig %d , should be enable\n", dig_fe); return; } @@ -2652,7 +2656,7 @@ static void evergreen_blank_dp_output(struct radeon_device *rdev, evergreen_dp_offsets[dig_fe]); } if (counter >= 32) - DRM_ERROR("counter exceeds %d\n", counter); + drm_err(ddev, "counter exceeds %d\n", counter); fifo_ctrl = RREG32(EVERGREEN_DP_STEER_FIFO + evergreen_dp_offsets[dig_fe]); fifo_ctrl |= EVERGREEN_DP_STEER_FIFO_RESET; @@ -2998,10 +3002,11 @@ static int evergreen_cp_start(struct radeon_device *rdev) struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; int r, i; uint32_t cp_me; + struct drm_device *ddev = rdev_to_drm(rdev); r = radeon_ring_lock(rdev, ring, 7); if (r) { - DRM_ERROR("radeon: cp failed to lock ring (%d).\n", r); + drm_err(ddev, "radeon: cp failed to lock ring (%d).\n", r); return r; } radeon_ring_write(ring, PACKET3(PACKET3_ME_INITIALIZE, 5)); @@ -3018,7 +3023,7 @@ static int evergreen_cp_start(struct radeon_device *rdev) r = radeon_ring_lock(rdev, ring, evergreen_default_size + 19); if (r) { - DRM_ERROR("radeon: cp failed to lock ring (%d).\n", r); + drm_err(ddev, "radeon: cp failed to lock ring (%d).\n", r); return r; } @@ -3826,6 +3831,7 @@ u32 evergreen_gpu_check_soft_reset(struct radeon_device *rdev) { u32 reset_mask = 0; u32 tmp; + struct drm_device *ddev = rdev_to_drm(rdev); /* GRBM_STATUS */ tmp = RREG32(GRBM_STATUS); @@ -3884,7 +3890,7 @@ u32 evergreen_gpu_check_soft_reset(struct radeon_device *rdev) /* Skip MC reset as it's mostly likely not hung, just busy */ if (reset_mask & RADEON_RESET_MC) { - DRM_DEBUG("MC busy: 0x%08X, clearing.\n", reset_mask); + drm_dbg(ddev, "MC busy: 0x%08X, clearing.\n", reset_mask); reset_mask &= ~RADEON_RESET_MC; } @@ -4495,6 +4501,7 @@ int evergreen_irq_set(struct radeon_device *rdev) u32 grbm_int_cntl = 0; u32 dma_cntl, dma_cntl1 = 0; u32 thermal_int = 0; + struct drm_device *ddev = rdev_to_drm(rdev); if (!rdev->irq.installed) { WARN(1, "Can't enable IRQ/MSI because no handler is installed\n"); @@ -4520,40 +4527,40 @@ int evergreen_irq_set(struct radeon_device *rdev) if (rdev->family >= CHIP_CAYMAN) { /* enable CP interrupts on all rings */ if (atomic_read(&rdev->irq.ring_int[RADEON_RING_TYPE_GFX_INDEX])) { - DRM_DEBUG("evergreen_irq_set: sw int gfx\n"); + drm_dbg(ddev, "%s : sw int gfx\n", __func__); cp_int_cntl |= TIME_STAMP_INT_ENABLE; } if (atomic_read(&rdev->irq.ring_int[CAYMAN_RING_TYPE_CP1_INDEX])) { - DRM_DEBUG("evergreen_irq_set: sw int cp1\n"); + drm_dbg(ddev, "%s : sw int cp1\n", __func__); cp_int_cntl1 |= TIME_STAMP_INT_ENABLE; } if (atomic_read(&rdev->irq.ring_int[CAYMAN_RING_TYPE_CP2_INDEX])) { - DRM_DEBUG("evergreen_irq_set: sw int cp2\n"); + drm_dbg(ddev, "%s : sw int cp2\n", __func__); cp_int_cntl2 |= TIME_STAMP_INT_ENABLE; } } else { if (atomic_read(&rdev->irq.ring_int[RADEON_RING_TYPE_GFX_INDEX])) { - DRM_DEBUG("evergreen_irq_set: sw int gfx\n"); + drm_dbg(ddev, "%s : sw int gfx\n", __func__); cp_int_cntl |= RB_INT_ENABLE; cp_int_cntl |= TIME_STAMP_INT_ENABLE; } } if (atomic_read(&rdev->irq.ring_int[R600_RING_TYPE_DMA_INDEX])) { - DRM_DEBUG("r600_irq_set: sw int dma\n"); + drm_dbg(ddev, "r600_irq_set: sw int dma\n"); dma_cntl |= TRAP_ENABLE; } if (rdev->family >= CHIP_CAYMAN) { dma_cntl1 = RREG32(CAYMAN_DMA1_CNTL) & ~TRAP_ENABLE; if (atomic_read(&rdev->irq.ring_int[CAYMAN_RING_TYPE_DMA1_INDEX])) { - DRM_DEBUG("r600_irq_set: sw int dma1\n"); + drm_dbg(ddev, "r600_irq_set: sw int dma1\n"); dma_cntl1 |= TRAP_ENABLE; } } if (rdev->irq.dpm_thermal) { - DRM_DEBUG("dpm thermal\n"); + drm_dbg(ddev, "dpm thermal\n"); thermal_int |= THERM_INT_MASK_HIGH | THERM_INT_MASK_LOW; } @@ -4713,6 +4720,7 @@ int evergreen_irq_process(struct radeon_device *rdev) bool queue_thermal = false; u32 status, addr; const char *event_name; + struct drm_device *ddev = rdev_to_drm(rdev); if (!rdev->ih.enabled || rdev->shutdown) return IRQ_NONE; @@ -4725,7 +4733,7 @@ restart_ih: return IRQ_NONE; rptr = rdev->ih.rptr; - DRM_DEBUG("evergreen_irq_process start: rptr %d, wptr %d\n", rptr, wptr); + drm_dbg(ddev, "%s start: rptr %d, wptr %d\n", __func__, rptr, wptr); /* Order reading of wptr vs. reading of IH ring data */ rmb(); @@ -4766,18 +4774,18 @@ restart_ih: mask = LB_D1_VLINE_INTERRUPT; event_name = "vline"; } else { - DRM_DEBUG("Unhandled interrupt: %d %d\n", + drm_dbg(ddev, "Unhandled interrupt: %d %d\n", src_id, src_data); break; } if (!(disp_int[crtc_idx] & mask)) { - DRM_DEBUG("IH: D%d %s - IH event w/o asserted irq bit?\n", + drm_dbg(ddev, "IH: D%d %s - IH event w/o asserted irq bit?\n", crtc_idx + 1, event_name); } disp_int[crtc_idx] &= ~mask; - DRM_DEBUG("IH: D%d %s\n", crtc_idx + 1, event_name); + drm_dbg(ddev, "IH: D%d %s\n", crtc_idx + 1, event_name); break; case 8: /* D1 page flip */ @@ -4786,7 +4794,7 @@ restart_ih: case 14: /* D4 page flip */ case 16: /* D5 page flip */ case 18: /* D6 page flip */ - DRM_DEBUG("IH: D%d flip\n", ((src_id - 8) >> 1) + 1); + drm_dbg(ddev, "IH: D%d flip\n", ((src_id - 8) >> 1) + 1); if (radeon_use_pflipirq > 0) radeon_crtc_handle_flip(rdev, (src_id - 8) >> 1); break; @@ -4804,39 +4812,39 @@ restart_ih: event_name = "HPD_RX"; } else { - DRM_DEBUG("Unhandled interrupt: %d %d\n", + drm_dbg(ddev, "Unhandled interrupt: %d %d\n", src_id, src_data); break; } if (!(disp_int[hpd_idx] & mask)) - DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); + drm_dbg(ddev, "IH: IH event w/o asserted irq bit?\n"); disp_int[hpd_idx] &= ~mask; - DRM_DEBUG("IH: %s%d\n", event_name, hpd_idx + 1); + drm_dbg(ddev, "IH: %s%d\n", event_name, hpd_idx + 1); break; case 44: /* hdmi */ afmt_idx = src_data; if (afmt_idx > 5) { - DRM_ERROR("Unhandled interrupt: %d %d\n", + drm_err(ddev, "Unhandled interrupt: %d %d\n", src_id, src_data); break; } if (!(afmt_status[afmt_idx] & AFMT_AZ_FORMAT_WTRIG)) - DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); + drm_dbg(ddev, "IH: IH event w/o asserted irq bit?\n"); afmt_status[afmt_idx] &= ~AFMT_AZ_FORMAT_WTRIG; queue_hdmi = true; - DRM_DEBUG("IH: HDMI%d\n", afmt_idx + 1); + drm_dbg(ddev, "IH: HDMI%d\n", afmt_idx + 1); break; case 96: - DRM_ERROR("SRBM_READ_ERROR: 0x%x\n", RREG32(SRBM_READ_ERROR)); + drm_err(ddev, "SRBM_READ_ERROR: 0x%x\n", RREG32(SRBM_READ_ERROR)); WREG32(SRBM_INT_ACK, 0x1); break; case 124: /* UVD */ - DRM_DEBUG("IH: UVD int: 0x%08x\n", src_data); + drm_dbg(ddev, "IH: UVD int: 0x%08x\n", src_data); radeon_fence_process(rdev, R600_RING_TYPE_UVD_INDEX); break; case 146: @@ -4857,11 +4865,11 @@ restart_ih: case 176: /* CP_INT in ring buffer */ case 177: /* CP_INT in IB1 */ case 178: /* CP_INT in IB2 */ - DRM_DEBUG("IH: CP int: 0x%08x\n", src_data); + drm_dbg(ddev, "IH: CP int: 0x%08x\n", src_data); radeon_fence_process(rdev, RADEON_RING_TYPE_GFX_INDEX); break; case 181: /* CP EOP event */ - DRM_DEBUG("IH: CP EOP\n"); + drm_dbg(ddev, "IH: CP EOP\n"); if (rdev->family >= CHIP_CAYMAN) { switch (src_data) { case 0: @@ -4878,30 +4886,30 @@ restart_ih: radeon_fence_process(rdev, RADEON_RING_TYPE_GFX_INDEX); break; case 224: /* DMA trap event */ - DRM_DEBUG("IH: DMA trap\n"); + drm_dbg(ddev, "IH: DMA trap\n"); radeon_fence_process(rdev, R600_RING_TYPE_DMA_INDEX); break; case 230: /* thermal low to high */ - DRM_DEBUG("IH: thermal low to high\n"); + drm_dbg(ddev, "IH: thermal low to high\n"); rdev->pm.dpm.thermal.high_to_low = false; queue_thermal = true; break; case 231: /* thermal high to low */ - DRM_DEBUG("IH: thermal high to low\n"); + drm_dbg(ddev, "IH: thermal high to low\n"); rdev->pm.dpm.thermal.high_to_low = true; queue_thermal = true; break; case 233: /* GUI IDLE */ - DRM_DEBUG("IH: GUI idle\n"); + drm_dbg(ddev, "IH: GUI idle\n"); break; case 244: /* DMA trap event */ if (rdev->family >= CHIP_CAYMAN) { - DRM_DEBUG("IH: DMA1 trap\n"); + drm_dbg(ddev, "IH: DMA1 trap\n"); radeon_fence_process(rdev, CAYMAN_RING_TYPE_DMA1_INDEX); } break; default: - DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data); + drm_dbg(ddev, "Unhandled interrupt: %d %d\n", src_id, src_data); break; } @@ -5000,6 +5008,7 @@ static int evergreen_startup(struct radeon_device *rdev) { struct radeon_ring *ring; int r; + struct drm_device *ddev = rdev_to_drm(rdev); /* enable pcie gen2 link */ evergreen_pcie_gen2_enable(rdev); @@ -5016,7 +5025,7 @@ static int evergreen_startup(struct radeon_device *rdev) if (ASIC_IS_DCE5(rdev) && !rdev->pm.dpm_enabled) { r = ni_mc_load_microcode(rdev); if (r) { - DRM_ERROR("Failed to load MC firmware!\n"); + drm_err(ddev, "Failed to load MC firmware!\n"); return r; } } @@ -5038,7 +5047,7 @@ static int evergreen_startup(struct radeon_device *rdev) rdev->rlc.cs_data = evergreen_cs_data; r = sumo_rlc_init(rdev); if (r) { - DRM_ERROR("Failed to init rlc BOs!\n"); + drm_err(ddev, "Failed to init rlc BOs!\n"); return r; } } @@ -5071,7 +5080,7 @@ static int evergreen_startup(struct radeon_device *rdev) r = r600_irq_init(rdev); if (r) { - DRM_ERROR("radeon: IH init failed (%d).\n", r); + drm_err(ddev, "radeon: IH init failed (%d).\n", r); radeon_irq_kms_fini(rdev); return r; } @@ -5109,7 +5118,7 @@ static int evergreen_startup(struct radeon_device *rdev) r = radeon_audio_init(rdev); if (r) { - DRM_ERROR("radeon: audio init failed\n"); + drm_err(ddev, "radeon: audio init failed\n"); return r; } @@ -5119,6 +5128,7 @@ static int evergreen_startup(struct radeon_device *rdev) int evergreen_resume(struct radeon_device *rdev) { int r; + struct drm_device *ddev = rdev_to_drm(rdev); /* reset the asic, the gfx blocks are often in a bad state * after the driver is unloaded or after a resume @@ -5141,7 +5151,7 @@ int evergreen_resume(struct radeon_device *rdev) rdev->accel_working = true; r = evergreen_startup(rdev); if (r) { - DRM_ERROR("evergreen startup failed on resume\n"); + drm_err(ddev, "evergreen startup failed on resume\n"); rdev->accel_working = false; return r; } @@ -5176,6 +5186,7 @@ int evergreen_suspend(struct radeon_device *rdev) int evergreen_init(struct radeon_device *rdev) { int r; + struct drm_device *ddev = rdev_to_drm(rdev); /* Read BIOS */ if (!radeon_get_bios(rdev)) { @@ -5201,7 +5212,7 @@ int evergreen_init(struct radeon_device *rdev) dev_err(rdev->dev, "Card not posted and no BIOS - ignoring\n"); return -EINVAL; } - DRM_INFO("GPU not posted. posting now...\n"); + drm_info(ddev, "GPU not posted. posting now...\n"); atom_asic_init(rdev->mode_info.atom_context); } /* init golden registers */ @@ -5233,7 +5244,7 @@ int evergreen_init(struct radeon_device *rdev) if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) { r = ni_init_microcode(rdev); if (r) { - DRM_ERROR("Failed to load firmware!\n"); + drm_err(ddev, "Failed to load firmware!\n"); return r; } } @@ -5241,7 +5252,7 @@ int evergreen_init(struct radeon_device *rdev) if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { r = r600_init_microcode(rdev); if (r) { - DRM_ERROR("Failed to load firmware!\n"); + drm_err(ddev, "Failed to load firmware!\n"); return r; } } @@ -5287,7 +5298,7 @@ int evergreen_init(struct radeon_device *rdev) */ if (ASIC_IS_DCE5(rdev)) { if (!rdev->mc_fw && !(rdev->flags & RADEON_IS_IGP)) { - DRM_ERROR("radeon: MC ucode required for NI+.\n"); + drm_err(ddev, "radeon: MC ucode required for NI+.\n"); return -EINVAL; } } @@ -5323,6 +5334,7 @@ void evergreen_fini(struct radeon_device *rdev) void evergreen_pcie_gen2_enable(struct radeon_device *rdev) { u32 link_width_cntl, speed_cntl; + struct drm_device *ddev = rdev_to_drm(rdev); if (radeon_pcie_gen2 == 0) return; @@ -5343,11 +5355,11 @@ void evergreen_pcie_gen2_enable(struct radeon_device *rdev) speed_cntl = RREG32_PCIE_PORT(PCIE_LC_SPEED_CNTL); if (speed_cntl & LC_CURRENT_DATA_RATE) { - DRM_INFO("PCIE gen 2 link speeds already enabled\n"); + drm_info(ddev, "PCIE gen 2 link speeds already enabled\n"); return; } - DRM_INFO("enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0\n"); + drm_info(ddev, "enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0\n"); if ((speed_cntl & LC_OTHER_SIDE_EVER_SENT_GEN2) || (speed_cntl & LC_OTHER_SIDE_SUPPORTS_GEN2)) { diff --git a/drivers/gpu/drm/radeon/pptable.h b/drivers/gpu/drm/radeon/pptable.h index 969a8fb0ee9e..f4e71046dc91 100644 --- a/drivers/gpu/drm/radeon/pptable.h +++ b/drivers/gpu/drm/radeon/pptable.h @@ -450,7 +450,7 @@ typedef struct _ClockInfoArray{ //sizeof(ATOM_PPLIB_CLOCK_INFO) UCHAR ucEntrySize; - UCHAR clockInfo[] __counted_by(ucNumEntries); + UCHAR clockInfo[] /*__counted_by(ucNumEntries)*/; }ClockInfoArray; typedef struct _NonClockInfoArray{ diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c index 35fb99bcd9a7..bc28117e01b4 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c @@ -41,6 +41,7 @@ #include <drm/drm_probe_helper.h> #include <drm/drm_vblank.h> #include <drm/radeon_drm.h> +#include <drm/drm_print.h> #include "atom.h" #include "radeon.h" @@ -273,7 +274,7 @@ static void radeon_unpin_work_func(struct work_struct *__work) radeon_bo_unpin(work->old_rbo); radeon_bo_unreserve(work->old_rbo); } else - DRM_ERROR("failed to reserve buffer after flip\n"); + drm_err(&work->rdev->ddev, "failed to reserve buffer after flip\n"); drm_gem_object_put(&work->old_rbo->tbo.base); kfree(work); @@ -434,7 +435,7 @@ static void radeon_flip_work_func(struct work_struct *__work) r = dma_fence_wait(work->fence, false); if (r) - DRM_ERROR("failed to wait on page flip fence (%d)!\n", r); + drm_err(dev, "failed to wait on page flip fence (%d)!\n", r); /* We continue with the page flip even if we failed to wait on * the fence, otherwise the DRM core and userspace will be @@ -521,7 +522,7 @@ static int radeon_crtc_page_flip_target(struct drm_crtc *crtc, r = radeon_bo_reserve(new_rbo, false); if (unlikely(r != 0)) { - DRM_ERROR("failed to reserve new rbo buffer before flip\n"); + drm_err(dev, "failed to reserve new rbo buffer before flip\n"); goto cleanup; } /* Only 27 bit offset for legacy CRTC */ @@ -530,14 +531,14 @@ static int radeon_crtc_page_flip_target(struct drm_crtc *crtc, if (unlikely(r != 0)) { radeon_bo_unreserve(new_rbo); r = -EINVAL; - DRM_ERROR("failed to pin new rbo buffer before flip\n"); + drm_err(dev, "failed to pin new rbo buffer before flip\n"); goto cleanup; } r = dma_resv_get_singleton(new_rbo->tbo.base.resv, DMA_RESV_USAGE_WRITE, &work->fence); if (r) { radeon_bo_unreserve(new_rbo); - DRM_ERROR("failed to get new rbo buffer fences\n"); + drm_err(dev, "failed to get new rbo buffer fences\n"); goto cleanup; } radeon_bo_get_tiling_flags(new_rbo, &tiling_flags, NULL); @@ -604,7 +605,7 @@ static int radeon_crtc_page_flip_target(struct drm_crtc *crtc, pflip_cleanup: if (unlikely(radeon_bo_reserve(new_rbo, false) != 0)) { - DRM_ERROR("failed to reserve new rbo in error path\n"); + drm_err(dev, "failed to reserve new rbo in error path\n"); goto cleanup; } radeon_bo_unpin(new_rbo); @@ -772,15 +773,15 @@ static void radeon_print_display_setup(struct drm_device *dev) uint32_t devices; int i = 0; - DRM_INFO("Radeon Display Connectors\n"); + drm_info(dev, "Radeon Display Connectors\n"); list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_connector = to_radeon_connector(connector); - DRM_INFO("Connector %d:\n", i); - DRM_INFO(" %s\n", connector->name); + drm_info(dev, "Connector %d:\n", i); + drm_info(dev, " %s\n", connector->name); if (radeon_connector->hpd.hpd != RADEON_HPD_NONE) - DRM_INFO(" %s\n", hpd_names[radeon_connector->hpd.hpd]); + drm_info(dev, " %s\n", hpd_names[radeon_connector->hpd.hpd]); if (radeon_connector->ddc_bus) { - DRM_INFO(" DDC: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", + drm_info(dev, " DDC: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", radeon_connector->ddc_bus->rec.mask_clk_reg, radeon_connector->ddc_bus->rec.mask_data_reg, radeon_connector->ddc_bus->rec.a_clk_reg, @@ -790,11 +791,11 @@ static void radeon_print_display_setup(struct drm_device *dev) radeon_connector->ddc_bus->rec.y_clk_reg, radeon_connector->ddc_bus->rec.y_data_reg); if (radeon_connector->router.ddc_valid) - DRM_INFO(" DDC Router 0x%x/0x%x\n", + drm_info(dev, " DDC Router 0x%x/0x%x\n", radeon_connector->router.ddc_mux_control_pin, radeon_connector->router.ddc_mux_state); if (radeon_connector->router.cd_valid) - DRM_INFO(" Clock/Data Router 0x%x/0x%x\n", + drm_info(dev, " Clock/Data Router 0x%x/0x%x\n", radeon_connector->router.cd_mux_control_pin, radeon_connector->router.cd_mux_state); } else { @@ -804,35 +805,46 @@ static void radeon_print_display_setup(struct drm_device *dev) connector->connector_type == DRM_MODE_CONNECTOR_DVIA || connector->connector_type == DRM_MODE_CONNECTOR_HDMIA || connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) - DRM_INFO(" DDC: no ddc bus - possible BIOS bug - please report to xorg-driver-ati@lists.x.org\n"); + drm_info(dev, " DDC: no ddc bus - possible BIOS bug - please report to xorg-driver-ati@lists.x.org\n"); } - DRM_INFO(" Encoders:\n"); + drm_info(dev, " Encoders:\n"); list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { radeon_encoder = to_radeon_encoder(encoder); devices = radeon_encoder->devices & radeon_connector->devices; if (devices) { if (devices & ATOM_DEVICE_CRT1_SUPPORT) - DRM_INFO(" CRT1: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " CRT1: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_CRT2_SUPPORT) - DRM_INFO(" CRT2: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " CRT2: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_LCD1_SUPPORT) - DRM_INFO(" LCD1: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " LCD1: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_DFP1_SUPPORT) - DRM_INFO(" DFP1: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " DFP1: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_DFP2_SUPPORT) - DRM_INFO(" DFP2: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " DFP2: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_DFP3_SUPPORT) - DRM_INFO(" DFP3: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " DFP3: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_DFP4_SUPPORT) - DRM_INFO(" DFP4: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " DFP4: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_DFP5_SUPPORT) - DRM_INFO(" DFP5: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " DFP5: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_DFP6_SUPPORT) - DRM_INFO(" DFP6: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " DFP6: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_TV1_SUPPORT) - DRM_INFO(" TV1: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " TV1: %s\n", + encoder_names[radeon_encoder->encoder_id]); if (devices & ATOM_DEVICE_CV_SUPPORT) - DRM_INFO(" CV: %s\n", encoder_names[radeon_encoder->encoder_id]); + drm_info(dev, " CV: %s\n", + encoder_names[radeon_encoder->encoder_id]); } } i++; @@ -1747,7 +1759,7 @@ bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc, * (ie all encoder can work with the same * scaling). */ - DRM_ERROR("Scaling not consistent across encoder.\n"); + drm_err(dev, "Scaling not consistent across encoder.\n"); return false; } } diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c index 18ca1bcfd2f9..20fc87409f2e 100644 --- a/drivers/gpu/drm/radeon/radeon_gem.c +++ b/drivers/gpu/drm/radeon/radeon_gem.c @@ -110,7 +110,7 @@ int radeon_gem_object_create(struct radeon_device *rdev, unsigned long size, */ max_size = rdev->mc.gtt_size - rdev->gart_pin_size; if (size > max_size) { - DRM_DEBUG("Allocation size %ldMb bigger than %ldMb limit\n", + DRM_DEBUG("Allocation size %luMb bigger than %luMb limit\n", size >> 20, max_size >> 20); return -ENOMEM; } @@ -560,7 +560,7 @@ int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data, struct radeon_bo *robj; int r = 0; - DRM_DEBUG("%d \n", args->handle); + DRM_DEBUG("%u \n", args->handle); gobj = drm_gem_object_lookup(filp, args->handle); if (gobj == NULL) return -ENOENT; @@ -886,7 +886,7 @@ static int radeon_debugfs_gem_info_show(struct seq_file *m, void *unused) placement = " CPU"; break; } - seq_printf(m, "bo[0x%08x] %8ldkB %8ldMB %s pid %8ld\n", + seq_printf(m, "bo[0x%08x] %8lukB %8luMB %s pid %8lu\n", i, radeon_bo_size(rbo) >> 10, radeon_bo_size(rbo) >> 20, placement, (unsigned long)rbo->pid); i++; diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c index 1f16619ed06e..f3ba4187092c 100644 --- a/drivers/gpu/drm/radeon/radeon_i2c.c +++ b/drivers/gpu/drm/radeon/radeon_i2c.c @@ -931,7 +931,7 @@ struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev, snprintf(i2c->adapter.name, sizeof(i2c->adapter.name), "Radeon i2c hw bus %s", name); i2c->adapter.algo = &radeon_i2c_algo; - ret = i2c_add_adapter(&i2c->adapter); + ret = devm_i2c_add_adapter(dev->dev, &i2c->adapter); if (ret) goto out_free; } else if (rec->hw_capable && @@ -972,15 +972,6 @@ out_free: } -void radeon_i2c_destroy(struct radeon_i2c_chan *i2c) -{ - if (!i2c) - return; - WARN_ON(i2c->has_aux); - i2c_del_adapter(&i2c->adapter); - kfree(i2c); -} - /* Add the default buses */ void radeon_i2c_init(struct radeon_device *rdev) { @@ -999,10 +990,8 @@ void radeon_i2c_fini(struct radeon_device *rdev) int i; for (i = 0; i < RADEON_MAX_I2C_BUS; i++) { - if (rdev->i2c_bus[i]) { - radeon_i2c_destroy(rdev->i2c_bus[i]); + if (rdev->i2c_bus[i]) rdev->i2c_bus[i] = NULL; - } } } diff --git a/drivers/gpu/drm/radeon/uvd_v1_0.c b/drivers/gpu/drm/radeon/uvd_v1_0.c index 5684639d20a6..5e6607e16244 100644 --- a/drivers/gpu/drm/radeon/uvd_v1_0.c +++ b/drivers/gpu/drm/radeon/uvd_v1_0.c @@ -179,7 +179,7 @@ int uvd_v1_0_init(struct radeon_device *rdev) r = radeon_ring_lock(rdev, ring, 10); if (r) { - DRM_ERROR("radeon: ring failed to lock UVD ring (%d).\n", r); + drm_err(&rdev->ddev, "radeon: ring failed to lock UVD ring (%d).\n", r); goto done; } @@ -232,7 +232,7 @@ done: break; } - DRM_INFO("UVD initialized successfully.\n"); + drm_info(&rdev->ddev, "UVD initialized successfully.\n"); } return r; @@ -338,7 +338,7 @@ int uvd_v1_0_start(struct radeon_device *rdev) if (status & 2) break; - DRM_ERROR("UVD not responding, trying to reset the VCPU!!!\n"); + drm_err(&rdev->ddev, "UVD not responding, trying to reset the VCPU!!!\n"); WREG32_P(UVD_SOFT_RESET, VCPU_SOFT_RESET, ~VCPU_SOFT_RESET); mdelay(10); WREG32_P(UVD_SOFT_RESET, 0, ~VCPU_SOFT_RESET); @@ -347,7 +347,7 @@ int uvd_v1_0_start(struct radeon_device *rdev) } if (r) { - DRM_ERROR("UVD not responding, giving up!!!\n"); + drm_err(&rdev->ddev, "UVD not responding, giving up!!!\n"); return r; } @@ -427,7 +427,7 @@ int uvd_v1_0_ring_test(struct radeon_device *rdev, struct radeon_ring *ring) WREG32(UVD_CONTEXT_ID, 0xCAFEDEAD); r = radeon_ring_lock(rdev, ring, 3); if (r) { - DRM_ERROR("radeon: cp failed to lock ring %d (%d).\n", + drm_err(&rdev->ddev, "radeon: cp failed to lock ring %d (%d).\n", ring->idx, r); return r; } @@ -442,10 +442,10 @@ int uvd_v1_0_ring_test(struct radeon_device *rdev, struct radeon_ring *ring) } if (i < rdev->usec_timeout) { - DRM_INFO("ring test on %d succeeded in %d usecs\n", + drm_info(&rdev->ddev, "ring test on %d succeeded in %d usecs\n", ring->idx, i); } else { - DRM_ERROR("radeon: ring %d test failed (0x%08X)\n", + drm_err(&rdev->ddev, "radeon: ring %d test failed (0x%08X)\n", ring->idx, tmp); r = -EINVAL; } @@ -507,34 +507,34 @@ int uvd_v1_0_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) else r = radeon_set_uvd_clocks(rdev, 53300, 40000); if (r) { - DRM_ERROR("radeon: failed to raise UVD clocks (%d).\n", r); + drm_err(&rdev->ddev, "radeon: failed to raise UVD clocks (%d).\n", r); return r; } r = radeon_uvd_get_create_msg(rdev, ring->idx, 1, NULL); if (r) { - DRM_ERROR("radeon: failed to get create msg (%d).\n", r); + drm_err(&rdev->ddev, "radeon: failed to get create msg (%d).\n", r); goto error; } r = radeon_uvd_get_destroy_msg(rdev, ring->idx, 1, &fence); if (r) { - DRM_ERROR("radeon: failed to get destroy ib (%d).\n", r); + drm_err(&rdev->ddev, "radeon: failed to get destroy ib (%d).\n", r); goto error; } r = radeon_fence_wait_timeout(fence, false, usecs_to_jiffies( RADEON_USEC_IB_TEST_TIMEOUT)); if (r < 0) { - DRM_ERROR("radeon: fence wait failed (%d).\n", r); + drm_err(&rdev->ddev, "radeon: fence wait failed (%d).\n", r); goto error; } else if (r == 0) { - DRM_ERROR("radeon: fence wait timed out.\n"); + drm_err(&rdev->ddev, "radeon: fence wait timed out.\n"); r = -ETIMEDOUT; goto error; } r = 0; - DRM_INFO("ib test on ring %d succeeded\n", ring->idx); + drm_info(&rdev->ddev, "ib test on ring %d succeeded\n", ring->idx); error: radeon_fence_unref(&fence); radeon_set_uvd_clocks(rdev, 0, 0); |
