[PATCH 12/49] drm/amd/display: move scaling helper to connector

Fangzhi Zuo <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx
Message-ID <[email protected]>
From: Alex Hung <[email protected]>

[WHAT]
amdgpu_dm_update_stream_scaling_settings() computes the stream src/dst
rectangles for a connector's scaling mode. It is already declared in
amdgpu_dm_connector.h and consumed by create_stream_for_sink(), so move
its definition out of the oversized amdgpu_dm.c into
amdgpu_dm_connector.c where it belongs.

Relocate its KUnit tests from the amdgpu_dm suite to the
amdgpu_dm_connector suite accordingly. No functional change.

Reviewed-by: Bhawanpreet Lakha <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
Signed-off-by: Fangzhi Zuo <[email protected]>
Tested-by: Dan Wheeler <[email protected]>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  57 -----
 .../display/amdgpu_dm/amdgpu_dm_connector.c   |  57 +++++
 .../tests/amdgpu_dm_connector_test.c          | 209 ++++++++++++++++++
 .../display/amdgpu_dm/tests/amdgpu_dm_test.c  | 208 -----------------
 4 files changed, 266 insertions(+), 265 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 111cdd66fe93..e6452237ba70 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -3405,63 +3405,6 @@ static void fill_dc_dirty_rects(struct drm_plane *plane,
 			   &flip_addrs->dirty_rect_count, true);
 }
 
-void amdgpu_dm_update_stream_scaling_settings(struct drm_device *dev,
-					   const struct drm_display_mode *mode,
-					   const struct dm_connector_state *dm_state,
-					   struct dc_stream_state *stream)
-{
-	enum amdgpu_rmx_type rmx_type;
-
-	struct rect src = { 0 }; /* viewport in composition space*/
-	struct rect dst = { 0 }; /* stream addressable area */
-
-	/* no mode. nothing to be done */
-	if (!mode)
-		return;
-
-	/* Full screen scaling by default */
-	src.width = mode->hdisplay;
-	src.height = mode->vdisplay;
-	dst.width = stream->timing.h_addressable;
-	dst.height = stream->timing.v_addressable;
-
-	if (dm_state) {
-		rmx_type = dm_state->scaling;
-		if (rmx_type == RMX_ASPECT || rmx_type == RMX_OFF) {
-			if (src.width * dst.height <
-					src.height * dst.width) {
-				/* height needs less upscaling/more downscaling */
-				dst.width = src.width *
-						dst.height / src.height;
-			} else {
-				/* width needs less upscaling/more downscaling */
-				dst.height = src.height *
-						dst.width / src.width;
-			}
-		} else if (rmx_type == RMX_CENTER) {
-			dst = src;
-		}
-
-		dst.x = (stream->timing.h_addressable - dst.width) / 2;
-		dst.y = (stream->timing.v_addressable - dst.height) / 2;
-
-		if (dm_state->underscan_enable) {
-			dst.x += dm_state->underscan_hborder / 2;
-			dst.y += dm_state->underscan_vborder / 2;
-			dst.width -= dm_state->underscan_hborder;
-			dst.height -= dm_state->underscan_vborder;
-		}
-	}
-
-	stream->src = src;
-	stream->dst = dst;
-
-	drm_dbg_kms(dev, "Destination Rectangle x:%d  y:%d  width:%d  height:%d\n",
-		    dst.x, dst.y, dst.width, dst.height);
-
-}
-EXPORT_IF_KUNIT(amdgpu_dm_update_stream_scaling_settings);
-
 static int dm_update_mst_vcpi_slots_for_dsc(struct drm_atomic_commit *state,
 					    struct dc_state *dc_state,
 					    struct dsc_mst_fairness_vars *vars)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
index 931f653ebdec..135107c73971 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
@@ -1371,6 +1371,63 @@ static void apply_dsc_policy_for_stream(struct amdgpu_dm_connector *aconnector,
 }
 #endif
 
+void amdgpu_dm_update_stream_scaling_settings(struct drm_device *dev,
+					   const struct drm_display_mode *mode,
+					   const struct dm_connector_state *dm_state,
+					   struct dc_stream_state *stream)
+{
+	enum amdgpu_rmx_type rmx_type;
+
+	struct rect src = { 0 }; /* viewport in composition space*/
+	struct rect dst = { 0 }; /* stream addressable area */
+
+	/* no mode. nothing to be done */
+	if (!mode)
+		return;
+
+	/* Full screen scaling by default */
+	src.width = mode->hdisplay;
+	src.height = mode->vdisplay;
+	dst.width = stream->timing.h_addressable;
+	dst.height = stream->timing.v_addressable;
+
+	if (dm_state) {
+		rmx_type = dm_state->scaling;
+		if (rmx_type == RMX_ASPECT || rmx_type == RMX_OFF) {
+			if (src.width * dst.height <
+					src.height * dst.width) {
+				/* height needs less upscaling/more downscaling */
+				dst.width = src.width *
+						dst.height / src.height;
+			} else {
+				/* width needs less upscaling/more downscaling */
+				dst.height = src.height *
+						dst.width / src.width;
+			}
+		} else if (rmx_type == RMX_CENTER) {
+			dst = src;
+		}
+
+		dst.x = (stream->timing.h_addressable - dst.width) / 2;
+		dst.y = (stream->timing.v_addressable - dst.height) / 2;
+
+		if (dm_state->underscan_enable) {
+			dst.x += dm_state->underscan_hborder / 2;
+			dst.y += dm_state->underscan_vborder / 2;
+			dst.width -= dm_state->underscan_hborder;
+			dst.height -= dm_state->underscan_vborder;
+		}
+	}
+
+	stream->src = src;
+	stream->dst = dst;
+
+	drm_dbg_kms(dev, "Destination Rectangle x:%d  y:%d  width:%d  height:%d\n",
+		    dst.x, dst.y, dst.width, dst.height);
+
+}
+EXPORT_IF_KUNIT(amdgpu_dm_update_stream_scaling_settings);
+
 STATIC_IFN_KUNIT struct dc_stream_state *
 create_stream_for_sink(struct drm_connector *connector,
 		       const struct drm_display_mode *drm_mode,
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
index 75f6be829f24..0e6fbc4b70f4 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
@@ -27,6 +27,7 @@
 #include "amdgpu_dm_connector.h"
 #include "amdgpu_dm_backlight.h"
 #include "include/grph_object_id.h"
+#include "amdgpu_dm_kunit_test_helpers.h"
 
 /* Tests for get_subconnector_type() */
 
@@ -5060,6 +5061,206 @@ static void dm_test_update_after_detect_sink_unchanged(struct kunit *test)
 	KUNIT_EXPECT_NULL(test, aconnector->dc_sink);
 }
 
+/* Tests for amdgpu_dm_update_stream_scaling_settings() */
+
+/**
+ * dm_test_update_scaling_null_mode - Test NULL mode leaves the stream rects untouched
+ * @test: The KUnit test context
+ */
+static void dm_test_update_scaling_null_mode(struct kunit *test)
+{
+	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
+	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
+
+	stream->timing.h_addressable = 1920;
+	stream->timing.v_addressable = 1080;
+
+	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, NULL, NULL, stream);
+
+	/* NULL mode: early return before touching src/dst */
+	KUNIT_EXPECT_EQ(test, stream->src.width, 0);
+	KUNIT_EXPECT_EQ(test, stream->dst.width, 0);
+}
+
+/**
+ * dm_test_update_scaling_fullscreen_default - Test full-screen default with no dm_state
+ * @test: The KUnit test context
+ */
+static void dm_test_update_scaling_fullscreen_default(struct kunit *test)
+{
+	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
+	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
+	struct drm_display_mode mode = { 0 };
+
+	mode.hdisplay = 1920;
+	mode.vdisplay = 1080;
+	stream->timing.h_addressable = 2560;
+	stream->timing.v_addressable = 1440;
+
+	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, NULL, stream);
+
+	/* src = mode, dst = timing addressable, no centering without dm_state */
+	KUNIT_EXPECT_EQ(test, stream->src.width, 1920);
+	KUNIT_EXPECT_EQ(test, stream->src.height, 1080);
+	KUNIT_EXPECT_EQ(test, stream->dst.width, 2560);
+	KUNIT_EXPECT_EQ(test, stream->dst.height, 1440);
+	KUNIT_EXPECT_EQ(test, stream->dst.x, 0);
+	KUNIT_EXPECT_EQ(test, stream->dst.y, 0);
+}
+
+/**
+ * dm_test_update_scaling_rmx_full - Test RMX_FULL keeps a full-size, centered dst
+ * @test: The KUnit test context
+ */
+static void dm_test_update_scaling_rmx_full(struct kunit *test)
+{
+	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
+	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
+	struct dm_connector_state *dm_state;
+	struct drm_display_mode mode = { 0 };
+
+	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
+	KUNIT_ASSERT_NOT_NULL(test, dm_state);
+
+	mode.hdisplay = 1280;
+	mode.vdisplay = 720;
+	stream->timing.h_addressable = 1920;
+	stream->timing.v_addressable = 1080;
+	dm_state->scaling = RMX_FULL;
+
+	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
+
+	/* RMX_FULL: dst stays full addressable, offset 0 */
+	KUNIT_EXPECT_EQ(test, stream->dst.width, 1920);
+	KUNIT_EXPECT_EQ(test, stream->dst.height, 1080);
+	KUNIT_EXPECT_EQ(test, stream->dst.x, 0);
+	KUNIT_EXPECT_EQ(test, stream->dst.y, 0);
+}
+
+/**
+ * dm_test_update_scaling_rmx_aspect_pillarbox - Test RMX_ASPECT preserves aspect ratio
+ * @test: The KUnit test context
+ */
+static void dm_test_update_scaling_rmx_aspect_pillarbox(struct kunit *test)
+{
+	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
+	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
+	struct dm_connector_state *dm_state;
+	struct drm_display_mode mode = { 0 };
+
+	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
+	KUNIT_ASSERT_NOT_NULL(test, dm_state);
+
+	/* 4:3 source on a 16:9 panel -> pillarboxed */
+	mode.hdisplay = 1024;
+	mode.vdisplay = 768;
+	stream->timing.h_addressable = 1920;
+	stream->timing.v_addressable = 1080;
+	dm_state->scaling = RMX_ASPECT;
+
+	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
+
+	/*
+	 * src.width*dst.height (1024*1080) < src.height*dst.width (768*1920):
+	 * width scaled to src.width*dst.height/src.height = 1440, height stays
+	 * 1080, centered horizontally at (1920-1440)/2 = 240.
+	 */
+	KUNIT_EXPECT_EQ(test, stream->dst.width, 1440);
+	KUNIT_EXPECT_EQ(test, stream->dst.height, 1080);
+	KUNIT_EXPECT_EQ(test, stream->dst.x, 240);
+	KUNIT_EXPECT_EQ(test, stream->dst.y, 0);
+}
+
+/**
+ * dm_test_update_scaling_rmx_aspect_letterbox - Test RMX_ASPECT letterboxes wide sources
+ * @test: The KUnit test context
+ */
+static void dm_test_update_scaling_rmx_aspect_letterbox(struct kunit *test)
+{
+	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
+	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
+	struct dm_connector_state *dm_state;
+	struct drm_display_mode mode = { 0 };
+
+	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
+	KUNIT_ASSERT_NOT_NULL(test, dm_state);
+
+	/* 16:9 source on a 4:3 panel -> letterboxed */
+	mode.hdisplay = 1920;
+	mode.vdisplay = 1080;
+	stream->timing.h_addressable = 1024;
+	stream->timing.v_addressable = 768;
+	dm_state->scaling = RMX_ASPECT;
+
+	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
+
+	KUNIT_EXPECT_EQ(test, stream->dst.width, 1024);
+	KUNIT_EXPECT_EQ(test, stream->dst.height, 576);
+	KUNIT_EXPECT_EQ(test, stream->dst.x, 0);
+	KUNIT_EXPECT_EQ(test, stream->dst.y, 96);
+}
+
+/**
+ * dm_test_update_scaling_rmx_center - Test RMX_CENTER centers a 1:1 dst
+ * @test: The KUnit test context
+ */
+static void dm_test_update_scaling_rmx_center(struct kunit *test)
+{
+	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
+	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
+	struct dm_connector_state *dm_state;
+	struct drm_display_mode mode = { 0 };
+
+	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
+	KUNIT_ASSERT_NOT_NULL(test, dm_state);
+
+	mode.hdisplay = 1280;
+	mode.vdisplay = 720;
+	stream->timing.h_addressable = 1920;
+	stream->timing.v_addressable = 1080;
+	dm_state->scaling = RMX_CENTER;
+
+	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
+
+	/* RMX_CENTER: dst = src, centered on the addressable area */
+	KUNIT_EXPECT_EQ(test, stream->dst.width, 1280);
+	KUNIT_EXPECT_EQ(test, stream->dst.height, 720);
+	KUNIT_EXPECT_EQ(test, stream->dst.x, 320);
+	KUNIT_EXPECT_EQ(test, stream->dst.y, 180);
+}
+
+/**
+ * dm_test_update_scaling_underscan - Test underscan borders shrink and offset dst
+ * @test: The KUnit test context
+ */
+static void dm_test_update_scaling_underscan(struct kunit *test)
+{
+	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
+	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
+	struct dm_connector_state *dm_state;
+	struct drm_display_mode mode = { 0 };
+
+	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
+	KUNIT_ASSERT_NOT_NULL(test, dm_state);
+
+	mode.hdisplay = 1920;
+	mode.vdisplay = 1080;
+	stream->timing.h_addressable = 1920;
+	stream->timing.v_addressable = 1080;
+	dm_state->scaling = RMX_FULL;
+	dm_state->underscan_enable = true;
+	dm_state->underscan_hborder = 64;
+	dm_state->underscan_vborder = 32;
+
+	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
+
+	/* Full dst, then underscan: x/y += border/2, width/height -= border */
+	KUNIT_EXPECT_EQ(test, stream->dst.x, 32);
+	KUNIT_EXPECT_EQ(test, stream->dst.y, 16);
+	KUNIT_EXPECT_EQ(test, stream->dst.width, 1856);
+	KUNIT_EXPECT_EQ(test, stream->dst.height, 1048);
+}
+
 static struct kunit_case amdgpu_dm_connector_tests[] = {
 	/* get_subconnector_type */
 	KUNIT_CASE(dm_test_subconnector_type_none),
@@ -5339,6 +5540,14 @@ static struct kunit_case amdgpu_dm_connector_tests[] = {
 	/* amdgpu_dm_update_connector_after_detect */
 	KUNIT_CASE(dm_test_update_after_detect_mst_noop),
 	KUNIT_CASE(dm_test_update_after_detect_sink_unchanged),
+	/* amdgpu_dm_update_stream_scaling_settings */
+	KUNIT_CASE(dm_test_update_scaling_null_mode),
+	KUNIT_CASE(dm_test_update_scaling_fullscreen_default),
+	KUNIT_CASE(dm_test_update_scaling_rmx_full),
+	KUNIT_CASE(dm_test_update_scaling_rmx_aspect_pillarbox),
+	KUNIT_CASE(dm_test_update_scaling_rmx_aspect_letterbox),
+	KUNIT_CASE(dm_test_update_scaling_rmx_center),
+	KUNIT_CASE(dm_test_update_scaling_underscan),
 	{}
 };
 
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c
index f967eced6dbb..88ac5e4f6c04 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_test.c
@@ -1225,206 +1225,6 @@ static void dm_test_master_stream_defaults_to_first(struct kunit *test)
 			    stream0);
 }
 
-/* Tests for amdgpu_dm_update_stream_scaling_settings() */
-
-/**
- * dm_test_update_scaling_null_mode - Test NULL mode leaves the stream rects untouched
- * @test: The KUnit test context
- */
-static void dm_test_update_scaling_null_mode(struct kunit *test)
-{
-	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
-	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
-
-	stream->timing.h_addressable = 1920;
-	stream->timing.v_addressable = 1080;
-
-	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, NULL, NULL, stream);
-
-	/* NULL mode: early return before touching src/dst */
-	KUNIT_EXPECT_EQ(test, stream->src.width, 0);
-	KUNIT_EXPECT_EQ(test, stream->dst.width, 0);
-}
-
-/**
- * dm_test_update_scaling_fullscreen_default - Test full-screen default with no dm_state
- * @test: The KUnit test context
- */
-static void dm_test_update_scaling_fullscreen_default(struct kunit *test)
-{
-	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
-	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
-	struct drm_display_mode mode = { 0 };
-
-	mode.hdisplay = 1920;
-	mode.vdisplay = 1080;
-	stream->timing.h_addressable = 2560;
-	stream->timing.v_addressable = 1440;
-
-	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, NULL, stream);
-
-	/* src = mode, dst = timing addressable, no centering without dm_state */
-	KUNIT_EXPECT_EQ(test, stream->src.width, 1920);
-	KUNIT_EXPECT_EQ(test, stream->src.height, 1080);
-	KUNIT_EXPECT_EQ(test, stream->dst.width, 2560);
-	KUNIT_EXPECT_EQ(test, stream->dst.height, 1440);
-	KUNIT_EXPECT_EQ(test, stream->dst.x, 0);
-	KUNIT_EXPECT_EQ(test, stream->dst.y, 0);
-}
-
-/**
- * dm_test_update_scaling_rmx_full - Test RMX_FULL keeps a full-size, centered dst
- * @test: The KUnit test context
- */
-static void dm_test_update_scaling_rmx_full(struct kunit *test)
-{
-	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
-	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
-	struct dm_connector_state *dm_state;
-	struct drm_display_mode mode = { 0 };
-
-	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
-	KUNIT_ASSERT_NOT_NULL(test, dm_state);
-
-	mode.hdisplay = 1280;
-	mode.vdisplay = 720;
-	stream->timing.h_addressable = 1920;
-	stream->timing.v_addressable = 1080;
-	dm_state->scaling = RMX_FULL;
-
-	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
-
-	/* RMX_FULL: dst stays full addressable, offset 0 */
-	KUNIT_EXPECT_EQ(test, stream->dst.width, 1920);
-	KUNIT_EXPECT_EQ(test, stream->dst.height, 1080);
-	KUNIT_EXPECT_EQ(test, stream->dst.x, 0);
-	KUNIT_EXPECT_EQ(test, stream->dst.y, 0);
-}
-
-/**
- * dm_test_update_scaling_rmx_aspect_pillarbox - Test RMX_ASPECT preserves aspect ratio
- * @test: The KUnit test context
- */
-static void dm_test_update_scaling_rmx_aspect_pillarbox(struct kunit *test)
-{
-	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
-	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
-	struct dm_connector_state *dm_state;
-	struct drm_display_mode mode = { 0 };
-
-	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
-	KUNIT_ASSERT_NOT_NULL(test, dm_state);
-
-	/* 4:3 source on a 16:9 panel -> pillarboxed */
-	mode.hdisplay = 1024;
-	mode.vdisplay = 768;
-	stream->timing.h_addressable = 1920;
-	stream->timing.v_addressable = 1080;
-	dm_state->scaling = RMX_ASPECT;
-
-	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
-
-	/*
-	 * src.width*dst.height (1024*1080) < src.height*dst.width (768*1920):
-	 * width scaled to src.width*dst.height/src.height = 1440, height stays
-	 * 1080, centered horizontally at (1920-1440)/2 = 240.
-	 */
-	KUNIT_EXPECT_EQ(test, stream->dst.width, 1440);
-	KUNIT_EXPECT_EQ(test, stream->dst.height, 1080);
-	KUNIT_EXPECT_EQ(test, stream->dst.x, 240);
-	KUNIT_EXPECT_EQ(test, stream->dst.y, 0);
-}
-
-/**
- * dm_test_update_scaling_rmx_aspect_letterbox - Test RMX_ASPECT letterboxes wide sources
- * @test: The KUnit test context
- */
-static void dm_test_update_scaling_rmx_aspect_letterbox(struct kunit *test)
-{
-	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
-	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
-	struct dm_connector_state *dm_state;
-	struct drm_display_mode mode = { 0 };
-
-	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
-	KUNIT_ASSERT_NOT_NULL(test, dm_state);
-
-	/* 16:9 source on a 4:3 panel -> letterboxed */
-	mode.hdisplay = 1920;
-	mode.vdisplay = 1080;
-	stream->timing.h_addressable = 1024;
-	stream->timing.v_addressable = 768;
-	dm_state->scaling = RMX_ASPECT;
-
-	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
-
-	KUNIT_EXPECT_EQ(test, stream->dst.width, 1024);
-	KUNIT_EXPECT_EQ(test, stream->dst.height, 576);
-	KUNIT_EXPECT_EQ(test, stream->dst.x, 0);
-	KUNIT_EXPECT_EQ(test, stream->dst.y, 96);
-}
-
-/**
- * dm_test_update_scaling_rmx_center - Test RMX_CENTER centers a 1:1 dst
- * @test: The KUnit test context
- */
-static void dm_test_update_scaling_rmx_center(struct kunit *test)
-{
-	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
-	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
-	struct dm_connector_state *dm_state;
-	struct drm_display_mode mode = { 0 };
-
-	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
-	KUNIT_ASSERT_NOT_NULL(test, dm_state);
-
-	mode.hdisplay = 1280;
-	mode.vdisplay = 720;
-	stream->timing.h_addressable = 1920;
-	stream->timing.v_addressable = 1080;
-	dm_state->scaling = RMX_CENTER;
-
-	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
-
-	/* RMX_CENTER: dst = src, centered on the addressable area */
-	KUNIT_EXPECT_EQ(test, stream->dst.width, 1280);
-	KUNIT_EXPECT_EQ(test, stream->dst.height, 720);
-	KUNIT_EXPECT_EQ(test, stream->dst.x, 320);
-	KUNIT_EXPECT_EQ(test, stream->dst.y, 180);
-}
-
-/**
- * dm_test_update_scaling_underscan - Test underscan borders shrink and offset dst
- * @test: The KUnit test context
- */
-static void dm_test_update_scaling_underscan(struct kunit *test)
-{
-	struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
-	struct dc_stream_state *stream = dm_kunit_alloc_stream(test, NULL);
-	struct dm_connector_state *dm_state;
-	struct drm_display_mode mode = { 0 };
-
-	dm_state = kunit_kzalloc(test, sizeof(*dm_state), GFP_KERNEL);
-	KUNIT_ASSERT_NOT_NULL(test, dm_state);
-
-	mode.hdisplay = 1920;
-	mode.vdisplay = 1080;
-	stream->timing.h_addressable = 1920;
-	stream->timing.v_addressable = 1080;
-	dm_state->scaling = RMX_FULL;
-	dm_state->underscan_enable = true;
-	dm_state->underscan_hborder = 64;
-	dm_state->underscan_vborder = 32;
-
-	amdgpu_dm_update_stream_scaling_settings(&adev->ddev, &mode, dm_state, stream);
-
-	/* Full dst, then underscan: x/y += border/2, width/height -= border */
-	KUNIT_EXPECT_EQ(test, stream->dst.x, 32);
-	KUNIT_EXPECT_EQ(test, stream->dst.y, 16);
-	KUNIT_EXPECT_EQ(test, stream->dst.width, 1856);
-	KUNIT_EXPECT_EQ(test, stream->dst.height, 1048);
-}
-
 /* Tests for is_content_protection_different() */
 
 struct dm_test_cp_ctx {
@@ -2113,14 +1913,6 @@ static struct kunit_case amdgpu_dm_tests[] = {
 	/* set_master_stream */
 	KUNIT_CASE(dm_test_master_stream_highest_refresh),
 	KUNIT_CASE(dm_test_master_stream_defaults_to_first),
-	/* amdgpu_dm_update_stream_scaling_settings */
-	KUNIT_CASE(dm_test_update_scaling_null_mode),
-	KUNIT_CASE(dm_test_update_scaling_fullscreen_default),
-	KUNIT_CASE(dm_test_update_scaling_rmx_full),
-	KUNIT_CASE(dm_test_update_scaling_rmx_aspect_pillarbox),
-	KUNIT_CASE(dm_test_update_scaling_rmx_aspect_letterbox),
-	KUNIT_CASE(dm_test_update_scaling_rmx_center),
-	KUNIT_CASE(dm_test_update_scaling_underscan),
 	/* is_content_protection_different */
 	KUNIT_CASE(dm_test_cp_diff_hdcp_type_change),
 	KUNIT_CASE(dm_test_cp_diff_reenable_mode_changed),
-- 
2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.