From: Alex Hung <[email protected]>

[WHAT]
dm_should_disable_stutter() and its amdgpu_stutter_quirk PCI match
table are self-contained quirk logic. Move them out of amdgpu_dm.c
into amdgpu_dm_quirks.c alongside the existing DMI quirk handling.

The helper is called from amdgpu_dm_init(), so it becomes a plain
exported function instead of STATIC_IFN_KUNIT, and its declaration
moves from the KUnit-only block to a regular prototype in amdgpu_dm.h.
Relocate its KUnit tests from the amdgpu_dm suite to the
amdgpu_dm_quirks suite. 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 | 33 ----------
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |  4 +-
 .../amd/display/amdgpu_dm/amdgpu_dm_quirks.c  | 32 +++++++++
 .../amdgpu_dm/tests/amdgpu_dm_quirks_test.c   | 65 +++++++++++++++++++
 .../display/amdgpu_dm/tests/amdgpu_dm_test.c  | 64 ------------------
 5 files changed, 99 insertions(+), 99 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 e6452237ba70..c6b9cd1ce489 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -410,39 +410,6 @@ static void mmhub_read_system_context(struct amdgpu_device 
*adev, struct dc_phy_
 
 }
 
-struct amdgpu_stutter_quirk {
-       u16 chip_vendor;
-       u16 chip_device;
-       u16 subsys_vendor;
-       u16 subsys_device;
-       u8 revision;
-};
-
-static const struct amdgpu_stutter_quirk amdgpu_stutter_quirk_list[] = {
-       /* https://bugzilla.kernel.org/show_bug.cgi?id=214417 */
-       { 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc8 },
-       { 0, 0, 0, 0, 0 },
-};
-
-STATIC_IFN_KUNIT bool dm_should_disable_stutter(struct pci_dev *pdev)
-{
-       const struct amdgpu_stutter_quirk *p = amdgpu_stutter_quirk_list;
-
-       while (p && p->chip_device != 0) {
-               if (pdev->vendor == p->chip_vendor &&
-                   pdev->device == p->chip_device &&
-                   pdev->subsystem_vendor == p->subsys_vendor &&
-                   pdev->subsystem_device == p->subsys_device &&
-                   pdev->revision == p->revision) {
-                       return true;
-               }
-               ++p;
-       }
-       return false;
-}
-EXPORT_IF_KUNIT(dm_should_disable_stutter);
-
-
 void*
 dm_allocate_gpu_mem(
                struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
index 03189f44efd4..617328497203 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
@@ -1134,6 +1134,8 @@ bool amdgpu_dm_is_headless(struct amdgpu_device *adev);
 bool amdgpu_dm_crtc_complete_writeback(struct amdgpu_crtc *acrtc);
 
 void retrieve_dmi_info(struct amdgpu_display_manager *dm);
+struct pci_dev;
+bool dm_should_disable_stutter(struct pci_dev *pdev);
 
 void amdgpu_dm_emulated_link_detect(struct dc_link *link);
 void amdgpu_dm_apply_delay_after_dpcd_poweroff(struct amdgpu_device *adev,
@@ -1178,8 +1180,6 @@ bool is_dc_timing_adjust_needed(struct dm_crtc_state 
*old_state,
                                struct dm_crtc_state *new_state);
 void set_multisync_trigger_params(struct dc_stream_state *stream);
 void set_master_stream(struct dc_stream_state *stream_set[], int stream_count);
-struct pci_dev;
-bool dm_should_disable_stutter(struct pci_dev *pdev);
 void reset_freesync_config_for_crtc(struct dm_crtc_state *new_crtc_state);
 void get_freesync_config_for_crtc(struct dm_crtc_state *new_crtc_state,
                                  struct dm_connector_state *new_con_state);
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_quirks.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_quirks.c
index 0a7602ed70b2..259966703cef 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_quirks.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_quirks.c
@@ -178,3 +178,35 @@ void retrieve_dmi_info(struct amdgpu_display_manager *dm)
        }
 }
 EXPORT_IF_KUNIT(retrieve_dmi_info);
+
+struct amdgpu_stutter_quirk {
+       u16 chip_vendor;
+       u16 chip_device;
+       u16 subsys_vendor;
+       u16 subsys_device;
+       u8 revision;
+};
+
+static const struct amdgpu_stutter_quirk amdgpu_stutter_quirk_list[] = {
+       /* https://bugzilla.kernel.org/show_bug.cgi?id=214417 */
+       { 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc8 },
+       { 0, 0, 0, 0, 0 },
+};
+
+bool dm_should_disable_stutter(struct pci_dev *pdev)
+{
+       const struct amdgpu_stutter_quirk *p = amdgpu_stutter_quirk_list;
+
+       while (p && p->chip_device != 0) {
+               if (pdev->vendor == p->chip_vendor &&
+                   pdev->device == p->chip_device &&
+                   pdev->subsystem_vendor == p->subsys_vendor &&
+                   pdev->subsystem_device == p->subsys_device &&
+                   pdev->revision == p->revision) {
+                       return true;
+               }
+               ++p;
+       }
+       return false;
+}
+EXPORT_IF_KUNIT(dm_should_disable_stutter);
diff --git 
a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_quirks_test.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_quirks_test.c
index a09f31ee0a2a..150c53a68bed 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_quirks_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_quirks_test.c
@@ -6,6 +6,7 @@
  */
 
 #include <kunit/test.h>
+#include <linux/pci.h>
 
 #include "dc.h"
 #include "amdgpu_mode.h"
@@ -83,11 +84,75 @@ static void dm_test_quirks_no_dmi_match_both_false(struct 
kunit *test)
        KUNIT_EXPECT_FALSE(test, dm->edp0_on_dp1_quirk);
 }
 
+/* Tests for dm_should_disable_stutter() */
+
+/**
+ * dm_test_should_disable_stutter_match - Test the quirk device matches
+ * @test: The KUnit test context
+ */
+static void dm_test_should_disable_stutter_match(struct kunit *test)
+{
+       struct pci_dev *pdev;
+
+       pdev = kunit_kzalloc(test, sizeof(*pdev), GFP_KERNEL);
+       KUNIT_ASSERT_NOT_NULL(test, pdev);
+
+       pdev->vendor = 0x1002;
+       pdev->device = 0x15dd;
+       pdev->subsystem_vendor = 0x1002;
+       pdev->subsystem_device = 0x15dd;
+       pdev->revision = 0xc8;
+
+       KUNIT_EXPECT_TRUE(test, dm_should_disable_stutter(pdev));
+}
+
+/**
+ * dm_test_should_disable_stutter_no_match - Test a non-quirk device does not 
match
+ * @test: The KUnit test context
+ */
+static void dm_test_should_disable_stutter_no_match(struct kunit *test)
+{
+       struct pci_dev *pdev;
+
+       pdev = kunit_kzalloc(test, sizeof(*pdev), GFP_KERNEL);
+       KUNIT_ASSERT_NOT_NULL(test, pdev);
+
+       pdev->vendor = 0x1002;
+       pdev->device = 0x1234;
+
+       KUNIT_EXPECT_FALSE(test, dm_should_disable_stutter(pdev));
+}
+
+/**
+ * dm_test_should_disable_stutter_revision_differs - Test a partial match 
(revision) fails
+ * @test: The KUnit test context
+ */
+static void dm_test_should_disable_stutter_revision_differs(struct kunit *test)
+{
+       struct pci_dev *pdev;
+
+       pdev = kunit_kzalloc(test, sizeof(*pdev), GFP_KERNEL);
+       KUNIT_ASSERT_NOT_NULL(test, pdev);
+
+       /* Everything matches the quirk except the revision */
+       pdev->vendor = 0x1002;
+       pdev->device = 0x15dd;
+       pdev->subsystem_vendor = 0x1002;
+       pdev->subsystem_device = 0x15dd;
+       pdev->revision = 0x00;
+
+       KUNIT_EXPECT_FALSE(test, dm_should_disable_stutter(pdev));
+}
+
 static struct kunit_case amdgpu_dm_quirks_tests[] = {
        /* retrieve_dmi_info */
        KUNIT_CASE(dm_test_quirks_aux_hpd_discon_reset),
        KUNIT_CASE(dm_test_quirks_edp0_on_dp1_reset),
        KUNIT_CASE(dm_test_quirks_no_dmi_match_both_false),
+       /* dm_should_disable_stutter */
+       KUNIT_CASE(dm_test_should_disable_stutter_match),
+       KUNIT_CASE(dm_test_should_disable_stutter_no_match),
+       KUNIT_CASE(dm_test_should_disable_stutter_revision_differs),
        {}
 };
 
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 88ac5e4f6c04..72d5a4012a3c 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
@@ -1737,66 +1737,6 @@ static void 
dm_test_per_frame_master_sync_skips_null_stream(struct kunit *test)
                            stream);
 }
 
-/* Tests for dm_should_disable_stutter() */
-
-/**
- * dm_test_should_disable_stutter_match - Test the quirk device matches
- * @test: The KUnit test context
- */
-static void dm_test_should_disable_stutter_match(struct kunit *test)
-{
-       struct pci_dev *pdev;
-
-       pdev = kunit_kzalloc(test, sizeof(*pdev), GFP_KERNEL);
-       KUNIT_ASSERT_NOT_NULL(test, pdev);
-
-       pdev->vendor = 0x1002;
-       pdev->device = 0x15dd;
-       pdev->subsystem_vendor = 0x1002;
-       pdev->subsystem_device = 0x15dd;
-       pdev->revision = 0xc8;
-
-       KUNIT_EXPECT_TRUE(test, dm_should_disable_stutter(pdev));
-}
-
-/**
- * dm_test_should_disable_stutter_no_match - Test a non-quirk device does not 
match
- * @test: The KUnit test context
- */
-static void dm_test_should_disable_stutter_no_match(struct kunit *test)
-{
-       struct pci_dev *pdev;
-
-       pdev = kunit_kzalloc(test, sizeof(*pdev), GFP_KERNEL);
-       KUNIT_ASSERT_NOT_NULL(test, pdev);
-
-       pdev->vendor = 0x1002;
-       pdev->device = 0x1234;
-
-       KUNIT_EXPECT_FALSE(test, dm_should_disable_stutter(pdev));
-}
-
-/**
- * dm_test_should_disable_stutter_revision_differs - Test a partial match 
(revision) fails
- * @test: The KUnit test context
- */
-static void dm_test_should_disable_stutter_revision_differs(struct kunit *test)
-{
-       struct pci_dev *pdev;
-
-       pdev = kunit_kzalloc(test, sizeof(*pdev), GFP_KERNEL);
-       KUNIT_ASSERT_NOT_NULL(test, pdev);
-
-       /* Everything matches the quirk except the revision */
-       pdev->vendor = 0x1002;
-       pdev->device = 0x15dd;
-       pdev->subsystem_vendor = 0x1002;
-       pdev->subsystem_device = 0x15dd;
-       pdev->revision = 0x00;
-
-       KUNIT_EXPECT_FALSE(test, dm_should_disable_stutter(pdev));
-}
-
 /* Tests for amdgpu_dm_apply_delay_after_dpcd_poweroff() */
 
 /**
@@ -1938,10 +1878,6 @@ static struct kunit_case amdgpu_dm_tests[] = {
        KUNIT_CASE(dm_test_per_frame_master_sync_single_stream),
        KUNIT_CASE(dm_test_per_frame_master_sync_two_streams),
        KUNIT_CASE(dm_test_per_frame_master_sync_skips_null_stream),
-       /* dm_should_disable_stutter */
-       KUNIT_CASE(dm_test_should_disable_stutter_match),
-       KUNIT_CASE(dm_test_should_disable_stutter_no_match),
-       KUNIT_CASE(dm_test_should_disable_stutter_revision_differs),
        /* amdgpu_dm_apply_delay_after_dpcd_poweroff */
        KUNIT_CASE(dm_test_apply_delay_null_sink),
        KUNIT_CASE(dm_test_apply_delay_zero_wait),
-- 
2.53.0

Reply via email to