drm fixes for 6.14-rc3
amdgpu: - Fix shutdown regression on old APUs - Fix compute queue hang on gfx9 APUs - Fix possible invalid access in PSP failure path - Avoid possible buffer overflow in pptable override amdkfd: - Properly free gang bo in failure path - GFX12 trap handler fix i915: - selftest fix: avoid using uninitialized context xe: - Remove bo->clients out of bos_lock area - Carve out wopcm portion from the stolen memory tests: - fix lockdep with hdmi infrastructure tests host1x: - fix uninitialised mutex usage panthor: - fix uninit variable hibmc: - fix missing Kconfig select -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEEKbZHaGwW9KfbeusDHTzWXnEhr4FAmeuuOsACgkQDHTzWXnE hr6FpQ//U31/Gvz+T5l5+5mRy0QTsc8bJ0VECVIaFvhWvwsQP5ZAi4P/mPhsDbIP p/s5UQKRSFPpQDKXe862XBMec7ZY5pUQZVEx++BxrVOhCFmIqdghjdg+gGYs3M+S FN77HY+VFL7m3BrvOHXSfrFPmBtl4QZzqu0hKKgKvPt3mK0AzYjT6NFKpGudPxiW eD679F4L8zJDLfMNldFSdElft8Xe+VwYtoOJwPysM61e/f340k+byti4/sdtcQHX a90EBOzdEYaPhTFta5MWZmxyHdbiWNYwuG1j3K+PBY54HHmvqczoY6HCEwINYkDu 4IbNJI/LwGXXwjTJcVBfribnqj3rSzOIxVvjnDI8XfJ4MoQL4W/Ci1Mvui2SmSsn Px/f4E9BVBOQJo7X6vfK8ZzAHov70kTjcOtrdX3/Ve4TSuOzGzizHwb3/GpClNDK uvKr16kppfDTEfV74TaVS+Mkl4MBFFfY+lwaqg9KZa8b6/PfcvqX0o9W+75q0wAC U0vPmHwPWLfEFv/naOer3cUUY3p/3FujKyx8YlHuXNCi4DwvgCkxH3ouoKIAzMLo S6qw7ux/CbbCmZ1TvKtjU9egH5FYPskj5Rz5uSGMhvZBqgDFjsHZpmwX68sVUID7 LerfTfJxtIAHvh4HCoZmPu/KH/yLlOF5EyPBg+pyGtz8Dzh6lag= =p2pF -----END PGP SIGNATURE----- Merge tag 'drm-fixes-2025-02-14' of https://gitlab.freedesktop.org/drm/kernel Pull drm fixes from Dave Airlie: "Weekly drm fixes pull request, nothing too unusual, the hdmi tests needs a bit of refactoring after lockdep shouted at them, otherwise amdgpu and xe lead and a few misc otherwise. amdgpu: - Fix shutdown regression on old APUs - Fix compute queue hang on gfx9 APUs - Fix possible invalid access in PSP failure path - Avoid possible buffer overflow in pptable override amdkfd: - Properly free gang bo in failure path - GFX12 trap handler fix i915: - selftest fix: avoid using uninitialized context xe: - Remove bo->clients out of bos_lock area - Carve out wopcm portion from the stolen memory tests: - fix lockdep with hdmi infrastructure tests host1x: - fix uninitialised mutex usage panthor: - fix uninit variable hibmc: - fix missing Kconfig select" * tag 'drm-fixes-2025-02-14' of https://gitlab.freedesktop.org/drm/kernel: drm: Fix DSC BPP increment decoding drm/amdgpu: avoid buffer overflow attach in smu_sys_set_pp_table() drm/amdkfd: Ensure consistent barrier state saved in gfx12 trap handler drm/amdgpu: bail out when failed to load fw in psp_init_cap_microcode() amdkfd: properly free gang_ctx_bo when failed to init user queue drm/amdgpu: bump version for RV/PCO compute fix drm/amdgpu/gfx9: manually control gfxoff for CS on RV drm/amdgpu/pm: fix UVD handing in amdgpu_dpm_set_powergating_by_smu() drm/xe: Carve out wopcm portion from the stolen memory drm/i915/selftests: avoid using uninitialized context drm/xe/client: bo->client does not need bos_lock drm/hisilicon/hibmc: select CONFIG_DRM_DISPLAY_DP_HELPER drm/panthor: avoid garbage value in panthor_ioctl_dev_query() gpu: host1x: Fix a use of uninitialized mutex drm/tests: hdmi: Fix recursive locking drm/tests: hdmi: Reorder DRM entities variables assignment drm/tests: hdmi: Remove redundant assignments drm/tests: hdmi: Fix WW_MUTEX_SLOWPATH failures
This commit is contained in:
commit
128c8f96eb
18 changed files with 200 additions and 144 deletions
drivers/gpu
drm
amd
amdgpu
amdkfd
pm
display
hisilicon/hibmc
i915/selftests
panthor
tests
xe
host1x
include/drm/display
|
@ -120,9 +120,10 @@
|
||||||
* - 3.58.0 - Add GFX12 DCC support
|
* - 3.58.0 - Add GFX12 DCC support
|
||||||
* - 3.59.0 - Cleared VRAM
|
* - 3.59.0 - Cleared VRAM
|
||||||
* - 3.60.0 - Add AMDGPU_TILING_GFX12_DCC_WRITE_COMPRESS_DISABLE (Vulkan requirement)
|
* - 3.60.0 - Add AMDGPU_TILING_GFX12_DCC_WRITE_COMPRESS_DISABLE (Vulkan requirement)
|
||||||
|
* - 3.61.0 - Contains fix for RV/PCO compute queues
|
||||||
*/
|
*/
|
||||||
#define KMS_DRIVER_MAJOR 3
|
#define KMS_DRIVER_MAJOR 3
|
||||||
#define KMS_DRIVER_MINOR 60
|
#define KMS_DRIVER_MINOR 61
|
||||||
#define KMS_DRIVER_PATCHLEVEL 0
|
#define KMS_DRIVER_PATCHLEVEL 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -3815,9 +3815,10 @@ int psp_init_cap_microcode(struct psp_context *psp, const char *chip_name)
|
||||||
if (err == -ENODEV) {
|
if (err == -ENODEV) {
|
||||||
dev_warn(adev->dev, "cap microcode does not exist, skip\n");
|
dev_warn(adev->dev, "cap microcode does not exist, skip\n");
|
||||||
err = 0;
|
err = 0;
|
||||||
goto out;
|
} else {
|
||||||
|
dev_err(adev->dev, "fail to initialize cap microcode\n");
|
||||||
}
|
}
|
||||||
dev_err(adev->dev, "fail to initialize cap microcode\n");
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CAP];
|
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CAP];
|
||||||
|
|
|
@ -7437,6 +7437,38 @@ static void gfx_v9_0_ring_emit_cleaner_shader(struct amdgpu_ring *ring)
|
||||||
amdgpu_ring_write(ring, 0); /* RESERVED field, programmed to zero */
|
amdgpu_ring_write(ring, 0); /* RESERVED field, programmed to zero */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gfx_v9_0_ring_begin_use_compute(struct amdgpu_ring *ring)
|
||||||
|
{
|
||||||
|
struct amdgpu_device *adev = ring->adev;
|
||||||
|
struct amdgpu_ip_block *gfx_block =
|
||||||
|
amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_GFX);
|
||||||
|
|
||||||
|
amdgpu_gfx_enforce_isolation_ring_begin_use(ring);
|
||||||
|
|
||||||
|
/* Raven and PCO APUs seem to have stability issues
|
||||||
|
* with compute and gfxoff and gfx pg. Disable gfx pg during
|
||||||
|
* submission and allow again afterwards.
|
||||||
|
*/
|
||||||
|
if (gfx_block && amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 1, 0))
|
||||||
|
gfx_v9_0_set_powergating_state(gfx_block, AMD_PG_STATE_UNGATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void gfx_v9_0_ring_end_use_compute(struct amdgpu_ring *ring)
|
||||||
|
{
|
||||||
|
struct amdgpu_device *adev = ring->adev;
|
||||||
|
struct amdgpu_ip_block *gfx_block =
|
||||||
|
amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_GFX);
|
||||||
|
|
||||||
|
/* Raven and PCO APUs seem to have stability issues
|
||||||
|
* with compute and gfxoff and gfx pg. Disable gfx pg during
|
||||||
|
* submission and allow again afterwards.
|
||||||
|
*/
|
||||||
|
if (gfx_block && amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 1, 0))
|
||||||
|
gfx_v9_0_set_powergating_state(gfx_block, AMD_PG_STATE_GATE);
|
||||||
|
|
||||||
|
amdgpu_gfx_enforce_isolation_ring_end_use(ring);
|
||||||
|
}
|
||||||
|
|
||||||
static const struct amd_ip_funcs gfx_v9_0_ip_funcs = {
|
static const struct amd_ip_funcs gfx_v9_0_ip_funcs = {
|
||||||
.name = "gfx_v9_0",
|
.name = "gfx_v9_0",
|
||||||
.early_init = gfx_v9_0_early_init,
|
.early_init = gfx_v9_0_early_init,
|
||||||
|
@ -7613,8 +7645,8 @@ static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_compute = {
|
||||||
.emit_wave_limit = gfx_v9_0_emit_wave_limit,
|
.emit_wave_limit = gfx_v9_0_emit_wave_limit,
|
||||||
.reset = gfx_v9_0_reset_kcq,
|
.reset = gfx_v9_0_reset_kcq,
|
||||||
.emit_cleaner_shader = gfx_v9_0_ring_emit_cleaner_shader,
|
.emit_cleaner_shader = gfx_v9_0_ring_emit_cleaner_shader,
|
||||||
.begin_use = amdgpu_gfx_enforce_isolation_ring_begin_use,
|
.begin_use = gfx_v9_0_ring_begin_use_compute,
|
||||||
.end_use = amdgpu_gfx_enforce_isolation_ring_end_use,
|
.end_use = gfx_v9_0_ring_end_use_compute,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_kiq = {
|
static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_kiq = {
|
||||||
|
|
|
@ -4121,7 +4121,8 @@ static const uint32_t cwsr_trap_gfx12_hex[] = {
|
||||||
0x0000ffff, 0x8bfe7e7e,
|
0x0000ffff, 0x8bfe7e7e,
|
||||||
0x8bea6a6a, 0xb97af804,
|
0x8bea6a6a, 0xb97af804,
|
||||||
0xbe804ec2, 0xbf94fffe,
|
0xbe804ec2, 0xbf94fffe,
|
||||||
0xbe804a6c, 0xbfb10000,
|
0xbe804a6c, 0xbe804ec2,
|
||||||
|
0xbf94fffe, 0xbfb10000,
|
||||||
0xbf9f0000, 0xbf9f0000,
|
0xbf9f0000, 0xbf9f0000,
|
||||||
0xbf9f0000, 0xbf9f0000,
|
0xbf9f0000, 0xbf9f0000,
|
||||||
0xbf9f0000, 0x00000000,
|
0xbf9f0000, 0x00000000,
|
||||||
|
|
|
@ -1049,6 +1049,10 @@ L_SKIP_BARRIER_RESTORE:
|
||||||
s_rfe_b64 s_restore_pc_lo //Return to the main shader program and resume execution
|
s_rfe_b64 s_restore_pc_lo //Return to the main shader program and resume execution
|
||||||
|
|
||||||
L_END_PGM:
|
L_END_PGM:
|
||||||
|
// Make sure that no wave of the workgroup can exit the trap handler
|
||||||
|
// before the workgroup barrier state is saved.
|
||||||
|
s_barrier_signal -2
|
||||||
|
s_barrier_wait -2
|
||||||
s_endpgm_saved
|
s_endpgm_saved
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -300,7 +300,7 @@ static int init_user_queue(struct process_queue_manager *pqm,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
free_gang_ctx_bo:
|
free_gang_ctx_bo:
|
||||||
amdgpu_amdkfd_free_gtt_mem(dev->adev, (*q)->gang_ctx_bo);
|
amdgpu_amdkfd_free_gtt_mem(dev->adev, &(*q)->gang_ctx_bo);
|
||||||
cleanup:
|
cleanup:
|
||||||
uninit_queue(*q);
|
uninit_queue(*q);
|
||||||
*q = NULL;
|
*q = NULL;
|
||||||
|
|
|
@ -78,7 +78,7 @@ int amdgpu_dpm_set_powergating_by_smu(struct amdgpu_device *adev,
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
|
const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
|
||||||
enum ip_power_state pwr_state = gate ? POWER_STATE_OFF : POWER_STATE_ON;
|
enum ip_power_state pwr_state = gate ? POWER_STATE_OFF : POWER_STATE_ON;
|
||||||
bool is_vcn = (block_type == AMD_IP_BLOCK_TYPE_UVD || block_type == AMD_IP_BLOCK_TYPE_VCN);
|
bool is_vcn = block_type == AMD_IP_BLOCK_TYPE_VCN;
|
||||||
|
|
||||||
if (atomic_read(&adev->pm.pwr_state[block_type]) == pwr_state &&
|
if (atomic_read(&adev->pm.pwr_state[block_type]) == pwr_state &&
|
||||||
(!is_vcn || adev->vcn.num_vcn_inst == 1)) {
|
(!is_vcn || adev->vcn.num_vcn_inst == 1)) {
|
||||||
|
|
|
@ -612,7 +612,8 @@ static int smu_sys_set_pp_table(void *handle,
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!smu_table->hardcode_pptable) {
|
if (!smu_table->hardcode_pptable || smu_table->power_play_table_size < size) {
|
||||||
|
kfree(smu_table->hardcode_pptable);
|
||||||
smu_table->hardcode_pptable = kzalloc(size, GFP_KERNEL);
|
smu_table->hardcode_pptable = kzalloc(size, GFP_KERNEL);
|
||||||
if (!smu_table->hardcode_pptable)
|
if (!smu_table->hardcode_pptable)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
|
@ -2544,7 +2544,7 @@ u8 drm_dp_dsc_sink_bpp_incr(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])
|
||||||
{
|
{
|
||||||
u8 bpp_increment_dpcd = dsc_dpcd[DP_DSC_BITS_PER_PIXEL_INC - DP_DSC_SUPPORT];
|
u8 bpp_increment_dpcd = dsc_dpcd[DP_DSC_BITS_PER_PIXEL_INC - DP_DSC_SUPPORT];
|
||||||
|
|
||||||
switch (bpp_increment_dpcd) {
|
switch (bpp_increment_dpcd & DP_DSC_BITS_PER_PIXEL_MASK) {
|
||||||
case DP_DSC_BITS_PER_PIXEL_1_16:
|
case DP_DSC_BITS_PER_PIXEL_1_16:
|
||||||
return 16;
|
return 16;
|
||||||
case DP_DSC_BITS_PER_PIXEL_1_8:
|
case DP_DSC_BITS_PER_PIXEL_1_8:
|
||||||
|
|
|
@ -4,6 +4,8 @@ config DRM_HISI_HIBMC
|
||||||
depends on DRM && PCI
|
depends on DRM && PCI
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select DRM_CLIENT_SELECTION
|
select DRM_CLIENT_SELECTION
|
||||||
|
select DRM_DISPLAY_HELPER
|
||||||
|
select DRM_DISPLAY_DP_HELPER
|
||||||
select DRM_KMS_HELPER
|
select DRM_KMS_HELPER
|
||||||
select DRM_VRAM_HELPER
|
select DRM_VRAM_HELPER
|
||||||
select DRM_TTM
|
select DRM_TTM
|
||||||
|
|
|
@ -168,7 +168,7 @@ static int igt_ppgtt_alloc(void *arg)
|
||||||
return PTR_ERR(ppgtt);
|
return PTR_ERR(ppgtt);
|
||||||
|
|
||||||
if (!ppgtt->vm.allocate_va_range)
|
if (!ppgtt->vm.allocate_va_range)
|
||||||
goto err_ppgtt_cleanup;
|
goto ppgtt_vm_put;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* While we only allocate the page tables here and so we could
|
* While we only allocate the page tables here and so we could
|
||||||
|
@ -236,7 +236,7 @@ err_ppgtt_cleanup:
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
i915_gem_ww_ctx_fini(&ww);
|
i915_gem_ww_ctx_fini(&ww);
|
||||||
|
ppgtt_vm_put:
|
||||||
i915_vm_put(&ppgtt->vm);
|
i915_vm_put(&ppgtt->vm);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -802,6 +802,7 @@ static void panthor_query_group_priorities_info(struct drm_file *file,
|
||||||
{
|
{
|
||||||
int prio;
|
int prio;
|
||||||
|
|
||||||
|
memset(arg, 0, sizeof(*arg));
|
||||||
for (prio = PANTHOR_GROUP_PRIORITY_REALTIME; prio >= 0; prio--) {
|
for (prio = PANTHOR_GROUP_PRIORITY_REALTIME; prio >= 0; prio--) {
|
||||||
if (!group_priority_permit(file, prio))
|
if (!group_priority_permit(file, prio))
|
||||||
arg->allowed_mask |= BIT(prio);
|
arg->allowed_mask |= BIT(prio);
|
||||||
|
|
|
@ -70,10 +70,17 @@ static int light_up_connector(struct kunit *test,
|
||||||
state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
|
state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
|
||||||
|
|
||||||
|
retry:
|
||||||
conn_state = drm_atomic_get_connector_state(state, connector);
|
conn_state = drm_atomic_get_connector_state(state, connector);
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
|
||||||
|
|
||||||
ret = drm_atomic_set_crtc_for_connector(conn_state, crtc);
|
ret = drm_atomic_set_crtc_for_connector(conn_state, crtc);
|
||||||
|
if (ret == -EDEADLK) {
|
||||||
|
drm_atomic_state_clear(state);
|
||||||
|
ret = drm_modeset_backoff(ctx);
|
||||||
|
if (!ret)
|
||||||
|
goto retry;
|
||||||
|
}
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
|
||||||
crtc_state = drm_atomic_get_crtc_state(state, crtc);
|
crtc_state = drm_atomic_get_crtc_state(state, crtc);
|
||||||
|
@ -282,15 +289,16 @@ static void drm_test_check_broadcast_rgb_crtc_mode_changed(struct kunit *test)
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
drm = &priv->drm;
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
crtc = priv->crtc;
|
||||||
|
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -345,15 +353,16 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_changed(struct kunit *tes
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
drm = &priv->drm;
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
crtc = priv->crtc;
|
||||||
|
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -408,18 +417,18 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(struct kunit *test)
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
|
KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
|
KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -474,7 +483,6 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test)
|
||||||
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, mode);
|
KUNIT_ASSERT_NOT_NULL(test, mode);
|
||||||
|
|
||||||
drm = &priv->drm;
|
|
||||||
crtc = priv->crtc;
|
crtc = priv->crtc;
|
||||||
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
@ -520,18 +528,18 @@ static void drm_test_check_broadcast_rgb_full_cea_mode(struct kunit *test)
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
|
KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
|
KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -588,7 +596,6 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test)
|
||||||
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, mode);
|
KUNIT_ASSERT_NOT_NULL(test, mode);
|
||||||
|
|
||||||
drm = &priv->drm;
|
|
||||||
crtc = priv->crtc;
|
crtc = priv->crtc;
|
||||||
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
@ -636,18 +643,18 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode(struct kunit *test)
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
|
KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
|
KUNIT_ASSERT_NE(test, drm_match_cea_mode(preferred), 1);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -704,7 +711,6 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *te
|
||||||
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, mode);
|
KUNIT_ASSERT_NOT_NULL(test, mode);
|
||||||
|
|
||||||
drm = &priv->drm;
|
|
||||||
crtc = priv->crtc;
|
crtc = priv->crtc;
|
||||||
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
@ -754,20 +760,20 @@ static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test)
|
||||||
10);
|
10);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
||||||
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz));
|
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz));
|
||||||
KUNIT_ASSERT_GT(test, ret, 0);
|
KUNIT_ASSERT_GT(test, ret, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -828,20 +834,20 @@ static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test)
|
||||||
10);
|
10);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
||||||
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz));
|
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz));
|
||||||
KUNIT_ASSERT_GT(test, ret, 0);
|
KUNIT_ASSERT_GT(test, ret, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -899,6 +905,8 @@ static void drm_test_check_output_bpc_dvi(struct kunit *test)
|
||||||
12);
|
12);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_dvi_1080p,
|
test_edid_dvi_1080p,
|
||||||
|
@ -908,14 +916,12 @@ static void drm_test_check_output_bpc_dvi(struct kunit *test)
|
||||||
info = &conn->display_info;
|
info = &conn->display_info;
|
||||||
KUNIT_ASSERT_FALSE(test, info->is_hdmi);
|
KUNIT_ASSERT_FALSE(test, info->is_hdmi);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -946,21 +952,21 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(struct kunit *test)
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_max_200mhz,
|
test_edid_hdmi_1080p_rgb_max_200mhz,
|
||||||
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_200mhz));
|
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_200mhz));
|
||||||
KUNIT_ASSERT_GT(test, ret, 0);
|
KUNIT_ASSERT_GT(test, ret, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -993,21 +999,21 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc(struct kunit *test)
|
||||||
10);
|
10);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz,
|
||||||
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz));
|
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz));
|
||||||
KUNIT_ASSERT_GT(test, ret, 0);
|
KUNIT_ASSERT_GT(test, ret, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1040,21 +1046,21 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc(struct kunit *test)
|
||||||
12);
|
12);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz,
|
||||||
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz));
|
ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz));
|
||||||
KUNIT_ASSERT_GT(test, ret, 0);
|
KUNIT_ASSERT_GT(test, ret, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1091,15 +1097,16 @@ static void drm_test_check_hdmi_funcs_reject_rate(struct kunit *test)
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
drm = &priv->drm;
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
crtc = priv->crtc;
|
||||||
|
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1147,6 +1154,8 @@ static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test)
|
||||||
12);
|
12);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
||||||
|
@ -1157,9 +1166,6 @@ static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test)
|
||||||
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
||||||
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
||||||
|
@ -1170,8 +1176,9 @@ static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test)
|
||||||
rate = drm_hdmi_compute_mode_clock(preferred, 10, HDMI_COLORSPACE_RGB);
|
rate = drm_hdmi_compute_mode_clock(preferred, 10, HDMI_COLORSPACE_RGB);
|
||||||
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1216,6 +1223,8 @@ static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *test)
|
||||||
12);
|
12);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
||||||
|
@ -1226,9 +1235,6 @@ static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *test)
|
||||||
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
||||||
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK);
|
||||||
|
@ -1242,8 +1248,9 @@ static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *test)
|
||||||
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
|
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
|
||||||
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1290,9 +1297,6 @@ static void drm_test_check_output_bpc_format_vic_1(struct kunit *test)
|
||||||
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
||||||
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, mode);
|
KUNIT_ASSERT_NOT_NULL(test, mode);
|
||||||
|
|
||||||
|
@ -1306,7 +1310,9 @@ static void drm_test_check_output_bpc_format_vic_1(struct kunit *test)
|
||||||
rate = mode->clock * 1500;
|
rate = mode->clock * 1500;
|
||||||
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
crtc = priv->crtc;
|
crtc = priv->crtc;
|
||||||
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, mode, ctx);
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
@ -1340,6 +1346,8 @@ static void drm_test_check_output_bpc_format_driver_rgb_only(struct kunit *test)
|
||||||
12);
|
12);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz,
|
||||||
|
@ -1350,9 +1358,6 @@ static void drm_test_check_output_bpc_format_driver_rgb_only(struct kunit *test)
|
||||||
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
||||||
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
|
@ -1371,8 +1376,9 @@ static void drm_test_check_output_bpc_format_driver_rgb_only(struct kunit *test)
|
||||||
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
|
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
|
||||||
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1407,6 +1413,8 @@ static void drm_test_check_output_bpc_format_display_rgb_only(struct kunit *test
|
||||||
12);
|
12);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_max_200mhz,
|
test_edid_hdmi_1080p_rgb_max_200mhz,
|
||||||
|
@ -1417,9 +1425,6 @@ static void drm_test_check_output_bpc_format_display_rgb_only(struct kunit *test
|
||||||
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
||||||
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
|
@ -1438,8 +1443,9 @@ static void drm_test_check_output_bpc_format_display_rgb_only(struct kunit *test
|
||||||
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
|
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV422);
|
||||||
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1473,6 +1479,8 @@ static void drm_test_check_output_bpc_format_driver_8bpc_only(struct kunit *test
|
||||||
8);
|
8);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz,
|
test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz,
|
||||||
|
@ -1483,9 +1491,6 @@ static void drm_test_check_output_bpc_format_driver_8bpc_only(struct kunit *test
|
||||||
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
||||||
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
|
@ -1496,8 +1501,9 @@ static void drm_test_check_output_bpc_format_driver_8bpc_only(struct kunit *test
|
||||||
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB);
|
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB);
|
||||||
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
@ -1533,6 +1539,8 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
|
||||||
12);
|
12);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||||
|
|
||||||
|
drm = &priv->drm;
|
||||||
|
crtc = priv->crtc;
|
||||||
conn = &priv->connector;
|
conn = &priv->connector;
|
||||||
ret = set_connector_edid(test, conn,
|
ret = set_connector_edid(test, conn,
|
||||||
test_edid_hdmi_1080p_rgb_max_340mhz,
|
test_edid_hdmi_1080p_rgb_max_340mhz,
|
||||||
|
@ -1543,9 +1551,6 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
|
||||||
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
KUNIT_ASSERT_TRUE(test, info->is_hdmi);
|
||||||
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0);
|
||||||
|
|
||||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
|
||||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
|
||||||
|
|
||||||
preferred = find_preferred_mode(conn);
|
preferred = find_preferred_mode(conn);
|
||||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||||
|
|
||||||
|
@ -1556,8 +1561,9 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
|
||||||
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB);
|
rate = drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_RGB);
|
||||||
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000);
|
||||||
|
|
||||||
drm = &priv->drm;
|
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||||
crtc = priv->crtc;
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||||
|
|
||||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||||
|
|
||||||
|
|
|
@ -135,8 +135,8 @@ void xe_drm_client_add_bo(struct xe_drm_client *client,
|
||||||
XE_WARN_ON(bo->client);
|
XE_WARN_ON(bo->client);
|
||||||
XE_WARN_ON(!list_empty(&bo->client_link));
|
XE_WARN_ON(!list_empty(&bo->client_link));
|
||||||
|
|
||||||
spin_lock(&client->bos_lock);
|
|
||||||
bo->client = xe_drm_client_get(client);
|
bo->client = xe_drm_client_get(client);
|
||||||
|
spin_lock(&client->bos_lock);
|
||||||
list_add_tail(&bo->client_link, &client->bos_list);
|
list_add_tail(&bo->client_link, &client->bos_list);
|
||||||
spin_unlock(&client->bos_lock);
|
spin_unlock(&client->bos_lock);
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,38 +57,6 @@ bool xe_ttm_stolen_cpu_access_needs_ggtt(struct xe_device *xe)
|
||||||
return GRAPHICS_VERx100(xe) < 1270 && !IS_DGFX(xe);
|
return GRAPHICS_VERx100(xe) < 1270 && !IS_DGFX(xe);
|
||||||
}
|
}
|
||||||
|
|
||||||
static s64 detect_bar2_dgfx(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
|
|
||||||
{
|
|
||||||
struct xe_tile *tile = xe_device_get_root_tile(xe);
|
|
||||||
struct xe_mmio *mmio = xe_root_tile_mmio(xe);
|
|
||||||
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
|
|
||||||
u64 stolen_size;
|
|
||||||
u64 tile_offset;
|
|
||||||
u64 tile_size;
|
|
||||||
|
|
||||||
tile_offset = tile->mem.vram.io_start - xe->mem.vram.io_start;
|
|
||||||
tile_size = tile->mem.vram.actual_physical_size;
|
|
||||||
|
|
||||||
/* Use DSM base address instead for stolen memory */
|
|
||||||
mgr->stolen_base = (xe_mmio_read64_2x32(mmio, DSMBASE) & BDSM_MASK) - tile_offset;
|
|
||||||
if (drm_WARN_ON(&xe->drm, tile_size < mgr->stolen_base))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
stolen_size = tile_size - mgr->stolen_base;
|
|
||||||
|
|
||||||
/* Verify usage fits in the actual resource available */
|
|
||||||
if (mgr->stolen_base + stolen_size <= pci_resource_len(pdev, LMEM_BAR))
|
|
||||||
mgr->io_base = tile->mem.vram.io_start + mgr->stolen_base;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* There may be few KB of platform dependent reserved memory at the end
|
|
||||||
* of vram which is not part of the DSM. Such reserved memory portion is
|
|
||||||
* always less then DSM granularity so align down the stolen_size to DSM
|
|
||||||
* granularity to accommodate such reserve vram portion.
|
|
||||||
*/
|
|
||||||
return ALIGN_DOWN(stolen_size, SZ_1M);
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32 get_wopcm_size(struct xe_device *xe)
|
static u32 get_wopcm_size(struct xe_device *xe)
|
||||||
{
|
{
|
||||||
u32 wopcm_size;
|
u32 wopcm_size;
|
||||||
|
@ -112,6 +80,44 @@ static u32 get_wopcm_size(struct xe_device *xe)
|
||||||
return wopcm_size;
|
return wopcm_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s64 detect_bar2_dgfx(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
|
||||||
|
{
|
||||||
|
struct xe_tile *tile = xe_device_get_root_tile(xe);
|
||||||
|
struct xe_mmio *mmio = xe_root_tile_mmio(xe);
|
||||||
|
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
|
||||||
|
u64 stolen_size, wopcm_size;
|
||||||
|
u64 tile_offset;
|
||||||
|
u64 tile_size;
|
||||||
|
|
||||||
|
tile_offset = tile->mem.vram.io_start - xe->mem.vram.io_start;
|
||||||
|
tile_size = tile->mem.vram.actual_physical_size;
|
||||||
|
|
||||||
|
/* Use DSM base address instead for stolen memory */
|
||||||
|
mgr->stolen_base = (xe_mmio_read64_2x32(mmio, DSMBASE) & BDSM_MASK) - tile_offset;
|
||||||
|
if (drm_WARN_ON(&xe->drm, tile_size < mgr->stolen_base))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* Carve out the top of DSM as it contains the reserved WOPCM region */
|
||||||
|
wopcm_size = get_wopcm_size(xe);
|
||||||
|
if (drm_WARN_ON(&xe->drm, !wopcm_size))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
stolen_size = tile_size - mgr->stolen_base;
|
||||||
|
stolen_size -= wopcm_size;
|
||||||
|
|
||||||
|
/* Verify usage fits in the actual resource available */
|
||||||
|
if (mgr->stolen_base + stolen_size <= pci_resource_len(pdev, LMEM_BAR))
|
||||||
|
mgr->io_base = tile->mem.vram.io_start + mgr->stolen_base;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* There may be few KB of platform dependent reserved memory at the end
|
||||||
|
* of vram which is not part of the DSM. Such reserved memory portion is
|
||||||
|
* always less then DSM granularity so align down the stolen_size to DSM
|
||||||
|
* granularity to accommodate such reserve vram portion.
|
||||||
|
*/
|
||||||
|
return ALIGN_DOWN(stolen_size, SZ_1M);
|
||||||
|
}
|
||||||
|
|
||||||
static u32 detect_bar2_integrated(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
|
static u32 detect_bar2_integrated(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
|
||||||
{
|
{
|
||||||
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
|
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
|
||||||
|
|
|
@ -619,6 +619,8 @@ static int host1x_probe(struct platform_device *pdev)
|
||||||
goto free_contexts;
|
goto free_contexts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutex_init(&host->intr_mutex);
|
||||||
|
|
||||||
pm_runtime_enable(&pdev->dev);
|
pm_runtime_enable(&pdev->dev);
|
||||||
|
|
||||||
err = devm_tegra_core_dev_init_opp_table_common(&pdev->dev);
|
err = devm_tegra_core_dev_init_opp_table_common(&pdev->dev);
|
||||||
|
|
|
@ -104,8 +104,6 @@ int host1x_intr_init(struct host1x *host)
|
||||||
unsigned int id;
|
unsigned int id;
|
||||||
int i, err;
|
int i, err;
|
||||||
|
|
||||||
mutex_init(&host->intr_mutex);
|
|
||||||
|
|
||||||
for (id = 0; id < host1x_syncpt_nb_pts(host); ++id) {
|
for (id = 0; id < host1x_syncpt_nb_pts(host); ++id) {
|
||||||
struct host1x_syncpt *syncpt = &host->syncpt[id];
|
struct host1x_syncpt *syncpt = &host->syncpt[id];
|
||||||
|
|
||||||
|
|
|
@ -359,6 +359,7 @@
|
||||||
# define DP_DSC_BITS_PER_PIXEL_1_4 0x2
|
# define DP_DSC_BITS_PER_PIXEL_1_4 0x2
|
||||||
# define DP_DSC_BITS_PER_PIXEL_1_2 0x3
|
# define DP_DSC_BITS_PER_PIXEL_1_2 0x3
|
||||||
# define DP_DSC_BITS_PER_PIXEL_1_1 0x4
|
# define DP_DSC_BITS_PER_PIXEL_1_1 0x4
|
||||||
|
# define DP_DSC_BITS_PER_PIXEL_MASK 0x7
|
||||||
|
|
||||||
#define DP_PSR_SUPPORT 0x070 /* XXX 1.2? */
|
#define DP_PSR_SUPPORT 0x070 /* XXX 1.2? */
|
||||||
# define DP_PSR_IS_SUPPORTED 1
|
# define DP_PSR_IS_SUPPORTED 1
|
||||||
|
|
Loading…
Add table
Reference in a new issue