drm/dp_mst: Move test_calc_pbn_mode() into an actual selftest
Yes, apparently we've been testing this for every single driver load for quite a long time now. At least that means our PBN calculation is solid! Anyway, introduce self tests for MST and move this into there. Cc: Juston Li <juston.li@intel.com> Cc: Imre Deak <imre.deak@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Harry Wentland <hwentlan@amd.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Lyude Paul <lyude@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190903204645.25487-5-lyude@redhat.com
This commit is contained in:
parent
3ba64aa36c
commit
7cbce45d62
|
@ -47,7 +47,6 @@
|
|||
*/
|
||||
static bool dump_dp_payload_table(struct drm_dp_mst_topology_mgr *mgr,
|
||||
char *buf);
|
||||
static int test_calc_pbn_mode(void);
|
||||
|
||||
static void drm_dp_mst_topology_put_port(struct drm_dp_mst_port *port);
|
||||
|
||||
|
@ -3578,30 +3577,6 @@ int drm_dp_calc_pbn_mode(int clock, int bpp)
|
|||
}
|
||||
EXPORT_SYMBOL(drm_dp_calc_pbn_mode);
|
||||
|
||||
static int test_calc_pbn_mode(void)
|
||||
{
|
||||
int ret;
|
||||
ret = drm_dp_calc_pbn_mode(154000, 30);
|
||||
if (ret != 689) {
|
||||
DRM_ERROR("PBN calculation test failed - clock %d, bpp %d, expected PBN %d, actual PBN %d.\n",
|
||||
154000, 30, 689, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
ret = drm_dp_calc_pbn_mode(234000, 30);
|
||||
if (ret != 1047) {
|
||||
DRM_ERROR("PBN calculation test failed - clock %d, bpp %d, expected PBN %d, actual PBN %d.\n",
|
||||
234000, 30, 1047, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
ret = drm_dp_calc_pbn_mode(297000, 24);
|
||||
if (ret != 1063) {
|
||||
DRM_ERROR("PBN calculation test failed - clock %d, bpp %d, expected PBN %d, actual PBN %d.\n",
|
||||
297000, 24, 1063, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* we want to kick the TX after we've ack the up/down IRQs. */
|
||||
static void drm_dp_mst_kick_tx(struct drm_dp_mst_topology_mgr *mgr)
|
||||
{
|
||||
|
@ -3979,8 +3954,6 @@ int drm_dp_mst_topology_mgr_init(struct drm_dp_mst_topology_mgr *mgr,
|
|||
if (!mgr->proposed_vcpis)
|
||||
return -ENOMEM;
|
||||
set_bit(0, &mgr->payload_mask);
|
||||
if (test_calc_pbn_mode() < 0)
|
||||
DRM_ERROR("MST PBN self-test failed\n");
|
||||
|
||||
mst_state = kzalloc(sizeof(*mst_state), GFP_KERNEL);
|
||||
if (mst_state == NULL)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
test-drm_modeset-y := test-drm_modeset_common.o test-drm_plane_helper.o \
|
||||
test-drm_format.o test-drm_framebuffer.o \
|
||||
test-drm_damage_helper.o
|
||||
test-drm_damage_helper.o test-drm_dp_mst_helper.o
|
||||
|
||||
obj-$(CONFIG_DRM_DEBUG_SELFTEST) += test-drm_mm.o test-drm_modeset.o test-drm_cmdline_parser.o
|
||||
|
|
|
@ -32,3 +32,4 @@ selftest(damage_iter_damage_one_intersect, igt_damage_iter_damage_one_intersect)
|
|||
selftest(damage_iter_damage_one_outside, igt_damage_iter_damage_one_outside)
|
||||
selftest(damage_iter_damage_src_moved, igt_damage_iter_damage_src_moved)
|
||||
selftest(damage_iter_damage_not_visible, igt_damage_iter_damage_not_visible)
|
||||
selftest(dp_mst_calc_pbn_mode, igt_dp_mst_calc_pbn_mode)
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Test cases for for the DRM DP MST helpers
|
||||
*/
|
||||
|
||||
#include <drm/drm_dp_mst_helper.h>
|
||||
#include <drm/drm_print.h>
|
||||
|
||||
#include "test-drm_modeset_common.h"
|
||||
|
||||
int igt_dp_mst_calc_pbn_mode(void *ignored)
|
||||
{
|
||||
int pbn, i;
|
||||
const struct {
|
||||
int rate;
|
||||
int bpp;
|
||||
int expected;
|
||||
} test_params[] = {
|
||||
{ 154000, 30, 689 },
|
||||
{ 234000, 30, 1047 },
|
||||
{ 297000, 24, 1063 },
|
||||
};
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(test_params); i++) {
|
||||
pbn = drm_dp_calc_pbn_mode(test_params[i].rate,
|
||||
test_params[i].bpp);
|
||||
FAIL(pbn != test_params[i].expected,
|
||||
"Expected PBN %d for clock %d bpp %d, got %d\n",
|
||||
test_params[i].expected, test_params[i].rate,
|
||||
test_params[i].bpp, pbn);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -39,5 +39,6 @@ int igt_damage_iter_damage_one_intersect(void *ignored);
|
|||
int igt_damage_iter_damage_one_outside(void *ignored);
|
||||
int igt_damage_iter_damage_src_moved(void *ignored);
|
||||
int igt_damage_iter_damage_not_visible(void *ignored);
|
||||
int igt_dp_mst_calc_pbn_mode(void *ignored);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue