Re: [PATCH v14 03/28] drm/tests: connector: Add tests for drmm_connector_hdmi_init

2024-05-22 Thread Dmitry Baryshkov
On Tue, May 21, 2024 at 12:13:36PM +0200, Maxime Ripard wrote:
> We just introduced a new initialization function for our connectors, so
> let's build a kunit test suite for it as well.
> 
> Reviewed-by: Dave Stevenson 
> Signed-off-by: Maxime Ripard 
> ---
>  drivers/gpu/drm/tests/drm_connector_test.c | 123 
> +
>  1 file changed, 123 insertions(+)
> 

Reviewed-by: Dmitry Baryshkov 

-- 
With best wishes
Dmitry


[PATCH v14 03/28] drm/tests: connector: Add tests for drmm_connector_hdmi_init

2024-05-21 Thread Maxime Ripard
We just introduced a new initialization function for our connectors, so
let's build a kunit test suite for it as well.

Reviewed-by: Dave Stevenson 
Signed-off-by: Maxime Ripard 
---
 drivers/gpu/drm/tests/drm_connector_test.c | 123 +
 1 file changed, 123 insertions(+)

diff --git a/drivers/gpu/drm/tests/drm_connector_test.c 
b/drivers/gpu/drm/tests/drm_connector_test.c
index 44f82ed2a958..261d4109946d 100644
--- a/drivers/gpu/drm/tests/drm_connector_test.c
+++ b/drivers/gpu/drm/tests/drm_connector_test.c
@@ -170,10 +170,132 @@ static struct kunit_suite drmm_connector_init_test_suite 
= {
.name = "drmm_connector_init",
.init = drm_test_connector_init,
.test_cases = drmm_connector_init_tests,
 };
 
+/*
+ * Test that the registration of a bog standard connector works as
+ * expected and doesn't report any error.
+ */
+static void drm_test_connector_hdmi_init_valid(struct kunit *test)
+{
+   struct drm_connector_init_priv *priv = test->priv;
+   int ret;
+
+   ret = drmm_connector_hdmi_init(>drm, >connector,
+  _funcs,
+  DRM_MODE_CONNECTOR_HDMIA,
+  >ddc);
+   KUNIT_EXPECT_EQ(test, ret, 0);
+}
+
+/*
+ * Test that the registration of a connector without a DDC adapter
+ * doesn't report any error.
+ */
+static void drm_test_connector_hdmi_init_null_ddc(struct kunit *test)
+{
+   struct drm_connector_init_priv *priv = test->priv;
+   int ret;
+
+   ret = drmm_connector_hdmi_init(>drm, >connector,
+  _funcs,
+  DRM_MODE_CONNECTOR_HDMIA,
+  NULL);
+   KUNIT_EXPECT_EQ(test, ret, 0);
+}
+
+/*
+ * Test that the registration of an HDMI connector with an HDMI
+ * connector type succeeds.
+ */
+static void drm_test_connector_hdmi_init_type_valid(struct kunit *test)
+{
+   struct drm_connector_init_priv *priv = test->priv;
+   unsigned int connector_type = *(unsigned int *)test->param_value;
+   int ret;
+
+   ret = drmm_connector_hdmi_init(>drm, >connector,
+  _funcs,
+  connector_type,
+  >ddc);
+   KUNIT_EXPECT_EQ(test, ret, 0);
+}
+
+static const unsigned int drm_connector_hdmi_init_type_valid_tests[] = {
+   DRM_MODE_CONNECTOR_HDMIA,
+   DRM_MODE_CONNECTOR_HDMIB,
+};
+
+static void drm_connector_hdmi_init_type_desc(const unsigned int *type, char 
*desc)
+{
+   sprintf(desc, "%s", drm_get_connector_type_name(*type));
+}
+
+KUNIT_ARRAY_PARAM(drm_connector_hdmi_init_type_valid,
+ drm_connector_hdmi_init_type_valid_tests,
+ drm_connector_hdmi_init_type_desc);
+
+/*
+ * Test that the registration of an HDMI connector with an !HDMI
+ * connector type fails.
+ */
+static void drm_test_connector_hdmi_init_type_invalid(struct kunit *test)
+{
+   struct drm_connector_init_priv *priv = test->priv;
+   unsigned int connector_type = *(unsigned int *)test->param_value;
+   int ret;
+
+   ret = drmm_connector_hdmi_init(>drm, >connector,
+  _funcs,
+  connector_type,
+  >ddc);
+   KUNIT_EXPECT_LT(test, ret, 0);
+}
+
+static const unsigned int drm_connector_hdmi_init_type_invalid_tests[] = {
+   DRM_MODE_CONNECTOR_Unknown,
+   DRM_MODE_CONNECTOR_VGA,
+   DRM_MODE_CONNECTOR_DVII,
+   DRM_MODE_CONNECTOR_DVID,
+   DRM_MODE_CONNECTOR_DVIA,
+   DRM_MODE_CONNECTOR_Composite,
+   DRM_MODE_CONNECTOR_SVIDEO,
+   DRM_MODE_CONNECTOR_LVDS,
+   DRM_MODE_CONNECTOR_Component,
+   DRM_MODE_CONNECTOR_9PinDIN,
+   DRM_MODE_CONNECTOR_DisplayPort,
+   DRM_MODE_CONNECTOR_TV,
+   DRM_MODE_CONNECTOR_eDP,
+   DRM_MODE_CONNECTOR_VIRTUAL,
+   DRM_MODE_CONNECTOR_DSI,
+   DRM_MODE_CONNECTOR_DPI,
+   DRM_MODE_CONNECTOR_WRITEBACK,
+   DRM_MODE_CONNECTOR_SPI,
+   DRM_MODE_CONNECTOR_USB,
+};
+
+KUNIT_ARRAY_PARAM(drm_connector_hdmi_init_type_invalid,
+ drm_connector_hdmi_init_type_invalid_tests,
+ drm_connector_hdmi_init_type_desc);
+
+static struct kunit_case drmm_connector_hdmi_init_tests[] = {
+   KUNIT_CASE(drm_test_connector_hdmi_init_valid),
+   KUNIT_CASE(drm_test_connector_hdmi_init_null_ddc),
+   KUNIT_CASE_PARAM(drm_test_connector_hdmi_init_type_valid,
+drm_connector_hdmi_init_type_valid_gen_params),
+   KUNIT_CASE_PARAM(drm_test_connector_hdmi_init_type_invalid,
+drm_connector_hdmi_init_type_invalid_gen_params),
+   { }
+};
+
+static struct kunit_suite drmm_connector_hdmi_init_test_suite = {
+   .name = "drmm_connector_hdmi_init",
+   .init = drm_test_connector_init,
+