* [PATCH] drm: Make the connector .detect() callback optional
@ 2016-11-29 20:56 Laurent Pinchart
2016-11-29 21:02 ` Maxime Ripard
` (7 more replies)
0 siblings, 8 replies; 11+ messages in thread
From: Laurent Pinchart @ 2016-11-29 20:56 UTC (permalink / raw)
To: dri-devel
Cc: Alison Wang, Alexey Brodkin, Xinliang Liu, Rongrong Zou,
Alex Deucher, Daniel Vetter, Maxime Ripard, Jyri Sarha,
Vincent Abriou, Christian König
Many drivers (21 to be exact) create connectors that are always
connected (for instance to an LVDS or DSI panel). Instead of forcing
them to implement a dummy .detect() handler, make the callback optional
and consider the connector as always connected in that case.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
drivers/gpu/drm/ast/ast_mode.c | 7 -------
drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
drivers/gpu/drm/bridge/tc358767.c | 7 -------
drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
drivers/gpu/drm/i915/intel_dsi.c | 7 -------
drivers/gpu/drm/imx/imx-ldb.c | 7 -------
drivers/gpu/drm/imx/imx-tve.c | 7 -------
drivers/gpu/drm/imx/parallel-display.c | 7 -------
drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
drivers/gpu/drm/sti/sti_hda.c | 7 -------
drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
include/drm/drm_connector.h | 3 +++
27 files changed, 14 insertions(+), 193 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
index 81cbf0b05dff..1d93e123532d 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
@@ -429,12 +429,6 @@ dce_virtual_dpms(struct drm_connector *connector, int mode)
return 0;
}
-static enum drm_connector_status
-dce_virtual_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static int
dce_virtual_set_property(struct drm_connector *connector,
struct drm_property *property,
@@ -463,7 +457,6 @@ static const struct drm_connector_helper_funcs dce_virtual_connector_helper_func
static const struct drm_connector_funcs dce_virtual_connector_funcs = {
.dpms = dce_virtual_dpms,
- .detect = dce_virtual_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.set_property = dce_virtual_set_property,
.destroy = dce_virtual_destroy,
diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
index 2bf06d71556a..bca3a678c955 100644
--- a/drivers/gpu/drm/arc/arcpgu_sim.c
+++ b/drivers/gpu/drm/arc/arcpgu_sim.c
@@ -41,12 +41,6 @@ static int arcpgu_drm_connector_get_modes(struct drm_connector *connector)
return count;
}
-static enum drm_connector_status
-arcpgu_drm_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void arcpgu_drm_connector_destroy(struct drm_connector *connector)
{
drm_connector_unregister(connector);
@@ -61,7 +55,6 @@ arcpgu_drm_connector_helper_funcs = {
static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
.dpms = drm_helper_connector_dpms,
.reset = drm_atomic_helper_connector_reset,
- .detect = arcpgu_drm_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = arcpgu_drm_connector_destroy,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index 5957c3e659fe..e26c98f51eb4 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -839,12 +839,6 @@ static void ast_connector_destroy(struct drm_connector *connector)
kfree(connector);
}
-static enum drm_connector_status
-ast_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
.mode_valid = ast_mode_valid,
.get_modes = ast_get_modes,
@@ -853,7 +847,6 @@ static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
static const struct drm_connector_funcs ast_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .detect = ast_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = ast_connector_destroy,
};
diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
index 0b4e5d117043..d5e63eff357b 100644
--- a/drivers/gpu/drm/bochs/bochs_kms.c
+++ b/drivers/gpu/drm/bochs/bochs_kms.c
@@ -216,12 +216,6 @@ bochs_connector_best_encoder(struct drm_connector *connector)
return NULL;
}
-static enum drm_connector_status bochs_connector_detect(struct drm_connector
- *connector, bool force)
-{
- return connector_status_connected;
-}
-
static const struct drm_connector_helper_funcs bochs_connector_connector_helper_funcs = {
.get_modes = bochs_connector_get_modes,
.mode_valid = bochs_connector_mode_valid,
@@ -230,7 +224,6 @@ static const struct drm_connector_helper_funcs bochs_connector_connector_helper_
static const struct drm_connector_funcs bochs_connector_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .detect = bochs_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
};
diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index f1a99938e924..27f98c518dde 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -239,16 +239,9 @@ static const struct drm_connector_helper_funcs ptn3460_connector_helper_funcs =
.get_modes = ptn3460_get_modes,
};
-static enum drm_connector_status ptn3460_detect(struct drm_connector *connector,
- bool force)
-{
- return connector_status_connected;
-}
-
static const struct drm_connector_funcs ptn3460_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = ptn3460_detect,
.destroy = drm_connector_cleanup,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
index 6f7c2f9860d2..ac8cc5b50d9f 100644
--- a/drivers/gpu/drm/bridge/parade-ps8622.c
+++ b/drivers/gpu/drm/bridge/parade-ps8622.c
@@ -477,16 +477,9 @@ static const struct drm_connector_helper_funcs ps8622_connector_helper_funcs = {
.get_modes = ps8622_get_modes,
};
-static enum drm_connector_status ps8622_detect(struct drm_connector *connector,
- bool force)
-{
- return connector_status_connected;
-}
-
static const struct drm_connector_funcs ps8622_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = ps8622_detect,
.destroy = drm_connector_cleanup,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 44d476ea6d2e..018be8911f71 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1038,12 +1038,6 @@ static int tc_main_link_stream(struct tc_data *tc, int state)
return ret;
}
-static enum drm_connector_status
-tc_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void tc_bridge_pre_enable(struct drm_bridge *bridge)
{
struct tc_data *tc = bridge_to_tc(bridge);
@@ -1168,7 +1162,6 @@ static const struct drm_connector_helper_funcs tc_connector_helper_funcs = {
static const struct drm_connector_funcs tc_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = tc_connector_detect,
.destroy = drm_connector_cleanup,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c
index 17c915d9a03e..9a4a27c1afd2 100644
--- a/drivers/gpu/drm/cirrus/cirrus_mode.c
+++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
@@ -498,12 +498,6 @@ static struct drm_encoder *cirrus_connector_best_encoder(struct drm_connector
return NULL;
}
-static enum drm_connector_status cirrus_vga_detect(struct drm_connector
- *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void cirrus_connector_destroy(struct drm_connector *connector)
{
drm_connector_cleanup(connector);
@@ -517,7 +511,6 @@ static const struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs
static const struct drm_connector_funcs cirrus_vga_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .detect = cirrus_vga_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = cirrus_connector_destroy,
};
diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index f6b64d7d3528..078d9703a4fe 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -152,6 +152,14 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev)
}
EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked);
+static enum drm_connector_status
+drm_connector_detect(struct drm_connector *connector, bool force)
+{
+ return connector->funcs->detect ?
+ connector->funcs->detect(connector, force) :
+ connector_status_connected;
+}
+
/**
* drm_helper_probe_single_connector_modes - get complete set of display modes
* @connector: connector to probe
@@ -239,7 +247,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
if (connector->funcs->force)
connector->funcs->force(connector);
} else {
- connector->status = connector->funcs->detect(connector, true);
+ connector->status = drm_connector_detect(connector, true);
}
/*
@@ -405,7 +413,7 @@ static void output_poll_execute(struct work_struct *work)
repoll = true;
- connector->status = connector->funcs->detect(connector, false);
+ connector->status = drm_connector_detect(connector, false);
if (old_status != connector->status) {
const char *old, *new;
@@ -565,7 +573,7 @@ bool drm_helper_hpd_irq_event(struct drm_device *dev)
old_status = connector->status;
- connector->status = connector->funcs->detect(connector, false);
+ connector->status = drm_connector_detect(connector, false);
DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s\n",
connector->base.id,
connector->name,
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
index e1dd75b18118..05a8ee106879 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
@@ -58,17 +58,10 @@ static void fsl_dcu_drm_connector_destroy(struct drm_connector *connector)
drm_connector_cleanup(connector);
}
-static enum drm_connector_status
-fsl_dcu_drm_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static const struct drm_connector_funcs fsl_dcu_drm_connector_funcs = {
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.destroy = fsl_dcu_drm_connector_destroy,
- .detect = fsl_dcu_drm_connector_detect,
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
.reset = drm_atomic_helper_connector_reset,
diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
index ea733ab5b1e0..5efdb7fbb7ee 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
@@ -387,19 +387,6 @@ static void cdv_intel_lvds_mode_set(struct drm_encoder *encoder,
}
/**
- * Detect the LVDS connection.
- *
- * This always returns CONNECTOR_STATUS_CONNECTED.
- * This connector should only have
- * been set up if the LVDS was actually connected anyway.
- */
-static enum drm_connector_status cdv_intel_lvds_detect(
- struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
-/**
* Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
*/
static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
@@ -521,7 +508,6 @@ static const struct drm_connector_helper_funcs
static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .detect = cdv_intel_lvds_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.set_property = cdv_intel_lvds_set_property,
.destroy = cdv_intel_lvds_destroy,
diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
index fd7c91254841..483fdce74e39 100644
--- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
@@ -500,19 +500,6 @@ static void psb_intel_lvds_mode_set(struct drm_encoder *encoder,
}
/*
- * Detect the LVDS connection.
- *
- * This always returns CONNECTOR_STATUS_CONNECTED.
- * This connector should only have
- * been set up if the LVDS was actually connected anyway.
- */
-static enum drm_connector_status psb_intel_lvds_detect(struct drm_connector
- *connector, bool force)
-{
- return connector_status_connected;
-}
-
-/*
* Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
*/
static int psb_intel_lvds_get_modes(struct drm_connector *connector)
@@ -643,7 +630,6 @@ const struct drm_connector_helper_funcs
const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .detect = psb_intel_lvds_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.set_property = psb_intel_lvds_set_property,
.destroy = psb_intel_lvds_destroy,
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
index d1f67a9d4d86..12a18557c5fd 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
@@ -39,12 +39,6 @@ hibmc_connector_best_encoder(struct drm_connector *connector)
return drm_encoder_find(connector->dev, connector->encoder_ids[0]);
}
-static enum drm_connector_status hibmc_connector_detect(struct drm_connector
- *connector, bool force)
-{
- return connector_status_connected;
-}
-
static const struct drm_connector_helper_funcs
hibmc_connector_helper_funcs = {
.get_modes = hibmc_connector_get_modes,
@@ -54,7 +48,6 @@ static const struct drm_connector_helper_funcs
static const struct drm_connector_funcs hibmc_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
- .detect = hibmc_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
.reset = drm_atomic_helper_connector_reset,
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 4e0d025490a3..5b72c50d6f76 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1298,12 +1298,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder,
}
}
-static enum drm_connector_status
-intel_dsi_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static int intel_dsi_get_modes(struct drm_connector *connector)
{
struct intel_connector *intel_connector = to_intel_connector(connector);
@@ -1407,7 +1401,6 @@ static const struct drm_connector_helper_funcs intel_dsi_connector_helper_funcs
static const struct drm_connector_funcs intel_dsi_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
- .detect = intel_dsi_detect,
.late_register = intel_connector_register,
.early_unregister = intel_connector_unregister,
.destroy = intel_dsi_connector_destroy,
diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
index b300998dce7d..516d06490465 100644
--- a/drivers/gpu/drm/imx/imx-ldb.c
+++ b/drivers/gpu/drm/imx/imx-ldb.c
@@ -101,12 +101,6 @@ struct imx_ldb {
const struct bus_mux *lvds_mux;
};
-static enum drm_connector_status imx_ldb_connector_detect(
- struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void imx_ldb_ch_set_bus_format(struct imx_ldb_channel *imx_ldb_ch,
u32 bus_format)
{
@@ -397,7 +391,6 @@ static int imx_ldb_encoder_atomic_check(struct drm_encoder *encoder,
static const struct drm_connector_funcs imx_ldb_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = imx_ldb_connector_detect,
.destroy = imx_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
index 8fc088843e55..3b602ee33c44 100644
--- a/drivers/gpu/drm/imx/imx-tve.c
+++ b/drivers/gpu/drm/imx/imx-tve.c
@@ -227,12 +227,6 @@ static int tve_setup_vga(struct imx_tve *tve)
TVE_TVDAC_TEST_MODE_MASK, 1);
}
-static enum drm_connector_status imx_tve_connector_detect(
- struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static int imx_tve_connector_get_modes(struct drm_connector *connector)
{
struct imx_tve *tve = con_to_tve(connector);
@@ -352,7 +346,6 @@ static int imx_tve_atomic_check(struct drm_encoder *encoder,
static const struct drm_connector_funcs imx_tve_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = imx_tve_connector_detect,
.destroy = imx_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
index d796ada2a47a..8582a83c0d9b 100644
--- a/drivers/gpu/drm/imx/parallel-display.c
+++ b/drivers/gpu/drm/imx/parallel-display.c
@@ -49,12 +49,6 @@ static inline struct imx_parallel_display *enc_to_imxpd(struct drm_encoder *e)
return container_of(e, struct imx_parallel_display, encoder);
}
-static enum drm_connector_status imx_pd_connector_detect(
- struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static int imx_pd_connector_get_modes(struct drm_connector *connector)
{
struct imx_parallel_display *imxpd = con_to_imxpd(connector);
@@ -143,7 +137,6 @@ static int imx_pd_encoder_atomic_check(struct drm_encoder *encoder,
static const struct drm_connector_funcs imx_pd_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = imx_pd_connector_detect,
.destroy = imx_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 28b2044ed9f2..30027b26a59f 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -562,12 +562,6 @@ static void mtk_dsi_encoder_enable(struct drm_encoder *encoder)
mtk_output_dsi_enable(dsi);
}
-static enum drm_connector_status mtk_dsi_connector_detect(
- struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static int mtk_dsi_connector_get_modes(struct drm_connector *connector)
{
struct mtk_dsi *dsi = connector_to_dsi(connector);
@@ -584,7 +578,6 @@ static const struct drm_encoder_helper_funcs mtk_dsi_encoder_helper_funcs = {
static const struct drm_connector_funcs mtk_dsi_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
- .detect = mtk_dsi_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
.reset = drm_atomic_helper_connector_reset,
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
index 6b21cb27e1cc..3a03ac4045d8 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -1658,12 +1658,6 @@ static struct drm_encoder *mga_connector_best_encoder(struct drm_connector
return NULL;
}
-static enum drm_connector_status mga_vga_detect(struct drm_connector
- *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void mga_connector_destroy(struct drm_connector *connector)
{
struct mga_connector *mga_connector = to_mga_connector(connector);
@@ -1680,7 +1674,6 @@ static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs =
static const struct drm_connector_funcs mga_vga_connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .detect = mga_vga_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = mga_connector_destroy,
};
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
index ee87494f9218..ee91481131ad 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
@@ -37,12 +37,6 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
.get_modes = rcar_du_lvds_connector_get_modes,
};
-static enum drm_connector_status
-rcar_du_lvds_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
{
struct rcar_du_connector *rcon = to_rcar_connector(connector);
@@ -54,7 +48,6 @@ static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
static const struct drm_connector_funcs connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.reset = drm_atomic_helper_connector_reset,
- .detect = rcar_du_lvds_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = rcar_du_lvds_connector_destroy,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
index ca22e5ee89ca..d9aa382bb629 100644
--- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
+++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
@@ -969,12 +969,6 @@ static struct drm_connector_helper_funcs dw_mipi_dsi_connector_helper_funcs = {
.mode_valid = dw_mipi_dsi_mode_valid,
};
-static enum drm_connector_status
-dw_mipi_dsi_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
{
drm_connector_unregister(connector);
@@ -984,7 +978,6 @@ static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
static struct drm_connector_funcs dw_mipi_dsi_atomic_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = dw_mipi_dsi_detect,
.destroy = dw_mipi_dsi_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
index 6547b1db460a..dddbdd62bed0 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
@@ -669,15 +669,8 @@ static void shmob_drm_connector_destroy(struct drm_connector *connector)
drm_connector_cleanup(connector);
}
-static enum drm_connector_status
-shmob_drm_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static const struct drm_connector_funcs connector_funcs = {
.dpms = drm_helper_connector_dpms,
- .detect = shmob_drm_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = shmob_drm_connector_destroy,
};
diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
index e7c243f70870..96f336dd0e29 100644
--- a/drivers/gpu/drm/sti/sti_hda.c
+++ b/drivers/gpu/drm/sti/sti_hda.c
@@ -642,12 +642,6 @@ struct drm_connector_helper_funcs sti_hda_connector_helper_funcs = {
.mode_valid = sti_hda_connector_mode_valid,
};
-static enum drm_connector_status
-sti_hda_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static int sti_hda_late_register(struct drm_connector *connector)
{
struct sti_hda_connector *hda_connector
@@ -665,7 +659,6 @@ static int sti_hda_late_register(struct drm_connector *connector)
static const struct drm_connector_funcs sti_hda_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
.fill_modes = drm_helper_probe_single_connector_modes,
- .detect = sti_hda_connector_detect,
.destroy = drm_connector_cleanup,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c
index c3ff10f559cc..5380085b3c06 100644
--- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
+++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
@@ -110,12 +110,6 @@ static struct drm_connector_helper_funcs sun4i_rgb_con_helper_funcs = {
.mode_valid = sun4i_rgb_mode_valid,
};
-static enum drm_connector_status
-sun4i_rgb_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void
sun4i_rgb_connector_destroy(struct drm_connector *connector)
{
@@ -129,7 +123,6 @@ sun4i_rgb_connector_destroy(struct drm_connector *connector)
static struct drm_connector_funcs sun4i_rgb_con_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
- .detect = sun4i_rgb_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = sun4i_rgb_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
index d430b331fed5..c6f47222e8fc 100644
--- a/drivers/gpu/drm/sun4i/sun4i_tv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
@@ -537,12 +537,6 @@ static struct drm_connector_helper_funcs sun4i_tv_comp_connector_helper_funcs =
.mode_valid = sun4i_tv_comp_mode_valid,
};
-static enum drm_connector_status
-sun4i_tv_comp_connector_detect(struct drm_connector *connector, bool force)
-{
- return connector_status_connected;
-}
-
static void
sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
{
@@ -551,7 +545,6 @@ sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
static struct drm_connector_funcs sun4i_tv_comp_connector_funcs = {
.dpms = drm_atomic_helper_connector_dpms,
- .detect = sun4i_tv_comp_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = sun4i_tv_comp_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
index 2134bb20fbe9..e634201db821 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
@@ -144,13 +144,6 @@ static void panel_connector_destroy(struct drm_connector *connector)
drm_connector_cleanup(connector);
}
-static enum drm_connector_status panel_connector_detect(
- struct drm_connector *connector,
- bool force)
-{
- return connector_status_connected;
-}
-
static int panel_connector_get_modes(struct drm_connector *connector)
{
struct drm_device *dev = connector->dev;
@@ -197,7 +190,6 @@ static struct drm_encoder *panel_connector_best_encoder(
static const struct drm_connector_funcs panel_connector_funcs = {
.destroy = panel_connector_destroy,
.dpms = drm_atomic_helper_connector_dpms,
- .detect = panel_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index e9390b1bd3a4..43b37906e20b 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -264,6 +264,9 @@ struct drm_connector_funcs {
* connector due to a user request. force can be used by the driver to
* avoid expensive, destructive operations during automated probing.
*
+ * This callback is optional, if not implemented the connector will be
+ * considered as always being attached.
+ *
* FIXME:
*
* Note that this hook is only called by the probe helper. It's not in
--
Regards,
Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
@ 2016-11-29 21:02 ` Maxime Ripard
2016-11-29 21:07 ` Sean Paul
` (6 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Maxime Ripard @ 2016-11-29 21:02 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Alison Wang, Alexey Brodkin, Xinliang Liu, Rongrong Zou,
dri-devel, Alex Deucher, Daniel Vetter, Jyri Sarha,
Vincent Abriou, Christian König
[-- Attachment #1.1: Type: text/plain, Size: 2489 bytes --]
On Tue, Nov 29, 2016 at 10:56:30PM +0200, Laurent Pinchart wrote:
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
> drivers/gpu/drm/ast/ast_mode.c | 7 -------
> drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
> drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
> drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
> drivers/gpu/drm/bridge/tc358767.c | 7 -------
> drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
> drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
> drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
> drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
> drivers/gpu/drm/i915/intel_dsi.c | 7 -------
> drivers/gpu/drm/imx/imx-ldb.c | 7 -------
> drivers/gpu/drm/imx/imx-tve.c | 7 -------
> drivers/gpu/drm/imx/parallel-display.c | 7 -------
> drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
> drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
> drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
> drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
> drivers/gpu/drm/sti/sti_hda.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
> drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
> include/drm/drm_connector.h | 3 +++
> 27 files changed, 14 insertions(+), 193 deletions(-)
For the sunxi part,
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
2016-11-29 21:02 ` Maxime Ripard
@ 2016-11-29 21:07 ` Sean Paul
2016-11-29 21:09 ` Laurent Pinchart
2016-11-29 21:23 ` Deucher, Alexander
` (5 subsequent siblings)
7 siblings, 1 reply; 11+ messages in thread
From: Sean Paul @ 2016-11-29 21:07 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Alison Wang, Alexey Brodkin, dri-devel, Xinliang Liu,
Alex Deucher, Jyri Sarha, Rongrong Zou, Daniel Vetter,
Maxime Ripard, Vincent Abriou, Christian König
On Tue, Nov 29, 2016 at 3:56 PM, Laurent Pinchart
<laurent.pinchart+renesas@ideasonboard.com> wrote:
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
I wonder if we should be a little bit smarter about this and default
connected only for built-in types (LVDS, edp, DSI), and return unknown
for others?
Sean
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
> drivers/gpu/drm/ast/ast_mode.c | 7 -------
> drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
> drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
> drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
> drivers/gpu/drm/bridge/tc358767.c | 7 -------
> drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
> drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
> drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
> drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
> drivers/gpu/drm/i915/intel_dsi.c | 7 -------
> drivers/gpu/drm/imx/imx-ldb.c | 7 -------
> drivers/gpu/drm/imx/imx-tve.c | 7 -------
> drivers/gpu/drm/imx/parallel-display.c | 7 -------
> drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
> drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
> drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
> drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
> drivers/gpu/drm/sti/sti_hda.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
> drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
> include/drm/drm_connector.h | 3 +++
> 27 files changed, 14 insertions(+), 193 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> index 81cbf0b05dff..1d93e123532d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> @@ -429,12 +429,6 @@ dce_virtual_dpms(struct drm_connector *connector, int mode)
> return 0;
> }
>
> -static enum drm_connector_status
> -dce_virtual_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int
> dce_virtual_set_property(struct drm_connector *connector,
> struct drm_property *property,
> @@ -463,7 +457,6 @@ static const struct drm_connector_helper_funcs dce_virtual_connector_helper_func
>
> static const struct drm_connector_funcs dce_virtual_connector_funcs = {
> .dpms = dce_virtual_dpms,
> - .detect = dce_virtual_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = dce_virtual_set_property,
> .destroy = dce_virtual_destroy,
> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
> index 2bf06d71556a..bca3a678c955 100644
> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> @@ -41,12 +41,6 @@ static int arcpgu_drm_connector_get_modes(struct drm_connector *connector)
> return count;
> }
>
> -static enum drm_connector_status
> -arcpgu_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void arcpgu_drm_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_unregister(connector);
> @@ -61,7 +55,6 @@ arcpgu_drm_connector_helper_funcs = {
> static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = arcpgu_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = arcpgu_drm_connector_destroy,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index 5957c3e659fe..e26c98f51eb4 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -839,12 +839,6 @@ static void ast_connector_destroy(struct drm_connector *connector)
> kfree(connector);
> }
>
> -static enum drm_connector_status
> -ast_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
> .mode_valid = ast_mode_valid,
> .get_modes = ast_get_modes,
> @@ -853,7 +847,6 @@ static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
>
> static const struct drm_connector_funcs ast_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = ast_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = ast_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
> index 0b4e5d117043..d5e63eff357b 100644
> --- a/drivers/gpu/drm/bochs/bochs_kms.c
> +++ b/drivers/gpu/drm/bochs/bochs_kms.c
> @@ -216,12 +216,6 @@ bochs_connector_best_encoder(struct drm_connector *connector)
> return NULL;
> }
>
> -static enum drm_connector_status bochs_connector_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs bochs_connector_connector_helper_funcs = {
> .get_modes = bochs_connector_get_modes,
> .mode_valid = bochs_connector_mode_valid,
> @@ -230,7 +224,6 @@ static const struct drm_connector_helper_funcs bochs_connector_connector_helper_
>
> static const struct drm_connector_funcs bochs_connector_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = bochs_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> };
> diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> index f1a99938e924..27f98c518dde 100644
> --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
> +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> @@ -239,16 +239,9 @@ static const struct drm_connector_helper_funcs ptn3460_connector_helper_funcs =
> .get_modes = ptn3460_get_modes,
> };
>
> -static enum drm_connector_status ptn3460_detect(struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ptn3460_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ptn3460_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
> index 6f7c2f9860d2..ac8cc5b50d9f 100644
> --- a/drivers/gpu/drm/bridge/parade-ps8622.c
> +++ b/drivers/gpu/drm/bridge/parade-ps8622.c
> @@ -477,16 +477,9 @@ static const struct drm_connector_helper_funcs ps8622_connector_helper_funcs = {
> .get_modes = ps8622_get_modes,
> };
>
> -static enum drm_connector_status ps8622_detect(struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ps8622_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ps8622_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index 44d476ea6d2e..018be8911f71 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -1038,12 +1038,6 @@ static int tc_main_link_stream(struct tc_data *tc, int state)
> return ret;
> }
>
> -static enum drm_connector_status
> -tc_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void tc_bridge_pre_enable(struct drm_bridge *bridge)
> {
> struct tc_data *tc = bridge_to_tc(bridge);
> @@ -1168,7 +1162,6 @@ static const struct drm_connector_helper_funcs tc_connector_helper_funcs = {
> static const struct drm_connector_funcs tc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = tc_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c
> index 17c915d9a03e..9a4a27c1afd2 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_mode.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
> @@ -498,12 +498,6 @@ static struct drm_encoder *cirrus_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status cirrus_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void cirrus_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_cleanup(connector);
> @@ -517,7 +511,6 @@ static const struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs
>
> static const struct drm_connector_funcs cirrus_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cirrus_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = cirrus_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> index f6b64d7d3528..078d9703a4fe 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -152,6 +152,14 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev)
> }
> EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked);
>
> +static enum drm_connector_status
> +drm_connector_detect(struct drm_connector *connector, bool force)
> +{
> + return connector->funcs->detect ?
> + connector->funcs->detect(connector, force) :
> + connector_status_connected;
> +}
> +
> /**
> * drm_helper_probe_single_connector_modes - get complete set of display modes
> * @connector: connector to probe
> @@ -239,7 +247,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
> if (connector->funcs->force)
> connector->funcs->force(connector);
> } else {
> - connector->status = connector->funcs->detect(connector, true);
> + connector->status = drm_connector_detect(connector, true);
> }
>
> /*
> @@ -405,7 +413,7 @@ static void output_poll_execute(struct work_struct *work)
>
> repoll = true;
>
> - connector->status = connector->funcs->detect(connector, false);
> + connector->status = drm_connector_detect(connector, false);
> if (old_status != connector->status) {
> const char *old, *new;
>
> @@ -565,7 +573,7 @@ bool drm_helper_hpd_irq_event(struct drm_device *dev)
>
> old_status = connector->status;
>
> - connector->status = connector->funcs->detect(connector, false);
> + connector->status = drm_connector_detect(connector, false);
> DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s\n",
> connector->base.id,
> connector->name,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> index e1dd75b18118..05a8ee106879 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> @@ -58,17 +58,10 @@ static void fsl_dcu_drm_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -fsl_dcu_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs fsl_dcu_drm_connector_funcs = {
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> .destroy = fsl_dcu_drm_connector_destroy,
> - .detect = fsl_dcu_drm_connector_detect,
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> index ea733ab5b1e0..5efdb7fbb7ee 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> @@ -387,19 +387,6 @@ static void cdv_intel_lvds_mode_set(struct drm_encoder *encoder,
> }
>
> /**
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status cdv_intel_lvds_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> -/**
> * Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
> */
> static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -521,7 +508,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cdv_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = cdv_intel_lvds_set_property,
> .destroy = cdv_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> index fd7c91254841..483fdce74e39 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> @@ -500,19 +500,6 @@ static void psb_intel_lvds_mode_set(struct drm_encoder *encoder,
> }
>
> /*
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status psb_intel_lvds_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> -/*
> * Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
> */
> static int psb_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -643,7 +630,6 @@ const struct drm_connector_helper_funcs
>
> const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = psb_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = psb_intel_lvds_set_property,
> .destroy = psb_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> index d1f67a9d4d86..12a18557c5fd 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> @@ -39,12 +39,6 @@ hibmc_connector_best_encoder(struct drm_connector *connector)
> return drm_encoder_find(connector->dev, connector->encoder_ids[0]);
> }
>
> -static enum drm_connector_status hibmc_connector_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs
> hibmc_connector_helper_funcs = {
> .get_modes = hibmc_connector_get_modes,
> @@ -54,7 +48,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs hibmc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = hibmc_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 4e0d025490a3..5b72c50d6f76 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -1298,12 +1298,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder,
> }
> }
>
> -static enum drm_connector_status
> -intel_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int intel_dsi_get_modes(struct drm_connector *connector)
> {
> struct intel_connector *intel_connector = to_intel_connector(connector);
> @@ -1407,7 +1401,6 @@ static const struct drm_connector_helper_funcs intel_dsi_connector_helper_funcs
>
> static const struct drm_connector_funcs intel_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = intel_dsi_detect,
> .late_register = intel_connector_register,
> .early_unregister = intel_connector_unregister,
> .destroy = intel_dsi_connector_destroy,
> diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
> index b300998dce7d..516d06490465 100644
> --- a/drivers/gpu/drm/imx/imx-ldb.c
> +++ b/drivers/gpu/drm/imx/imx-ldb.c
> @@ -101,12 +101,6 @@ struct imx_ldb {
> const struct bus_mux *lvds_mux;
> };
>
> -static enum drm_connector_status imx_ldb_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void imx_ldb_ch_set_bus_format(struct imx_ldb_channel *imx_ldb_ch,
> u32 bus_format)
> {
> @@ -397,7 +391,6 @@ static int imx_ldb_encoder_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_ldb_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_ldb_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
> index 8fc088843e55..3b602ee33c44 100644
> --- a/drivers/gpu/drm/imx/imx-tve.c
> +++ b/drivers/gpu/drm/imx/imx-tve.c
> @@ -227,12 +227,6 @@ static int tve_setup_vga(struct imx_tve *tve)
> TVE_TVDAC_TEST_MODE_MASK, 1);
> }
>
> -static enum drm_connector_status imx_tve_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_tve_connector_get_modes(struct drm_connector *connector)
> {
> struct imx_tve *tve = con_to_tve(connector);
> @@ -352,7 +346,6 @@ static int imx_tve_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_tve_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_tve_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
> index d796ada2a47a..8582a83c0d9b 100644
> --- a/drivers/gpu/drm/imx/parallel-display.c
> +++ b/drivers/gpu/drm/imx/parallel-display.c
> @@ -49,12 +49,6 @@ static inline struct imx_parallel_display *enc_to_imxpd(struct drm_encoder *e)
> return container_of(e, struct imx_parallel_display, encoder);
> }
>
> -static enum drm_connector_status imx_pd_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_pd_connector_get_modes(struct drm_connector *connector)
> {
> struct imx_parallel_display *imxpd = con_to_imxpd(connector);
> @@ -143,7 +137,6 @@ static int imx_pd_encoder_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_pd_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_pd_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 28b2044ed9f2..30027b26a59f 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -562,12 +562,6 @@ static void mtk_dsi_encoder_enable(struct drm_encoder *encoder)
> mtk_output_dsi_enable(dsi);
> }
>
> -static enum drm_connector_status mtk_dsi_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int mtk_dsi_connector_get_modes(struct drm_connector *connector)
> {
> struct mtk_dsi *dsi = connector_to_dsi(connector);
> @@ -584,7 +578,6 @@ static const struct drm_encoder_helper_funcs mtk_dsi_encoder_helper_funcs = {
>
> static const struct drm_connector_funcs mtk_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = mtk_dsi_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index 6b21cb27e1cc..3a03ac4045d8 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1658,12 +1658,6 @@ static struct drm_encoder *mga_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status mga_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void mga_connector_destroy(struct drm_connector *connector)
> {
> struct mga_connector *mga_connector = to_mga_connector(connector);
> @@ -1680,7 +1674,6 @@ static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs =
>
> static const struct drm_connector_funcs mga_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = mga_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = mga_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> index ee87494f9218..ee91481131ad 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> @@ -37,12 +37,6 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
> .get_modes = rcar_du_lvds_connector_get_modes,
> };
>
> -static enum drm_connector_status
> -rcar_du_lvds_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
> {
> struct rcar_du_connector *rcon = to_rcar_connector(connector);
> @@ -54,7 +48,6 @@ static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = rcar_du_lvds_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = rcar_du_lvds_connector_destroy,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> index ca22e5ee89ca..d9aa382bb629 100644
> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> @@ -969,12 +969,6 @@ static struct drm_connector_helper_funcs dw_mipi_dsi_connector_helper_funcs = {
> .mode_valid = dw_mipi_dsi_mode_valid,
> };
>
> -static enum drm_connector_status
> -dw_mipi_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_unregister(connector);
> @@ -984,7 +978,6 @@ static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
> static struct drm_connector_funcs dw_mipi_dsi_atomic_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = dw_mipi_dsi_detect,
> .destroy = dw_mipi_dsi_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> index 6547b1db460a..dddbdd62bed0 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> @@ -669,15 +669,8 @@ static void shmob_drm_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -shmob_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = shmob_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = shmob_drm_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
> index e7c243f70870..96f336dd0e29 100644
> --- a/drivers/gpu/drm/sti/sti_hda.c
> +++ b/drivers/gpu/drm/sti/sti_hda.c
> @@ -642,12 +642,6 @@ struct drm_connector_helper_funcs sti_hda_connector_helper_funcs = {
> .mode_valid = sti_hda_connector_mode_valid,
> };
>
> -static enum drm_connector_status
> -sti_hda_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int sti_hda_late_register(struct drm_connector *connector)
> {
> struct sti_hda_connector *hda_connector
> @@ -665,7 +659,6 @@ static int sti_hda_late_register(struct drm_connector *connector)
> static const struct drm_connector_funcs sti_hda_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = sti_hda_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> index c3ff10f559cc..5380085b3c06 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> @@ -110,12 +110,6 @@ static struct drm_connector_helper_funcs sun4i_rgb_con_helper_funcs = {
> .mode_valid = sun4i_rgb_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_rgb_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_rgb_connector_destroy(struct drm_connector *connector)
> {
> @@ -129,7 +123,6 @@ sun4i_rgb_connector_destroy(struct drm_connector *connector)
>
> static struct drm_connector_funcs sun4i_rgb_con_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_rgb_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = sun4i_rgb_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
> index d430b331fed5..c6f47222e8fc 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
> @@ -537,12 +537,6 @@ static struct drm_connector_helper_funcs sun4i_tv_comp_connector_helper_funcs =
> .mode_valid = sun4i_tv_comp_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_tv_comp_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
> {
> @@ -551,7 +545,6 @@ sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
>
> static struct drm_connector_funcs sun4i_tv_comp_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_tv_comp_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = sun4i_tv_comp_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> index 2134bb20fbe9..e634201db821 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> @@ -144,13 +144,6 @@ static void panel_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status panel_connector_detect(
> - struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int panel_connector_get_modes(struct drm_connector *connector)
> {
> struct drm_device *dev = connector->dev;
> @@ -197,7 +190,6 @@ static struct drm_encoder *panel_connector_best_encoder(
> static const struct drm_connector_funcs panel_connector_funcs = {
> .destroy = panel_connector_destroy,
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = panel_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index e9390b1bd3a4..43b37906e20b 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -264,6 +264,9 @@ struct drm_connector_funcs {
> * connector due to a user request. force can be used by the driver to
> * avoid expensive, destructive operations during automated probing.
> *
> + * This callback is optional, if not implemented the connector will be
> + * considered as always being attached.
> + *
> * FIXME:
> *
> * Note that this hook is only called by the probe helper. It's not in
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 21:07 ` Sean Paul
@ 2016-11-29 21:09 ` Laurent Pinchart
2016-12-01 18:15 ` Sean Paul
0 siblings, 1 reply; 11+ messages in thread
From: Laurent Pinchart @ 2016-11-29 21:09 UTC (permalink / raw)
To: Sean Paul
Cc: Laurent Pinchart, Alison Wang, Alexey Brodkin, dri-devel,
Xinliang Liu, Alex Deucher, Jyri Sarha, Rongrong Zou,
Daniel Vetter, Maxime Ripard, Vincent Abriou,
Christian König
Hi Sean,
On Tuesday 29 Nov 2016 16:07:02 Sean Paul wrote:
> On Tue, Nov 29, 2016 at 3:56 PM, Laurent Pinchart wrote:
> > Many drivers (21 to be exact) create connectors that are always
> > connected (for instance to an LVDS or DSI panel). Instead of forcing
> > them to implement a dummy .detect() handler, make the callback optional
> > and consider the connector as always connected in that case.
>
> I wonder if we should be a little bit smarter about this and default
> connected only for built-in types (LVDS, edp, DSI), and return unknown
> for others?
I've deliberately decided not to change the behaviour of any driver in this
patch to ease review and merge. We can change (a.k.a. improve :-)) the logic
on top of this. Patches are welcome ;-)
> > Signed-off-by: Laurent Pinchart
> > <laurent.pinchart+renesas@ideasonboard.com>
> > ---
> >
> > drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> > drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
> > drivers/gpu/drm/ast/ast_mode.c | 7 -------
> > drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
> > drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
> > drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
> > drivers/gpu/drm/bridge/tc358767.c | 7 -------
> > drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
> > drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
> > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
> > drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
> > drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
> > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
> > drivers/gpu/drm/i915/intel_dsi.c | 7 -------
> > drivers/gpu/drm/imx/imx-ldb.c | 7 -------
> > drivers/gpu/drm/imx/imx-tve.c | 7 -------
> > drivers/gpu/drm/imx/parallel-display.c | 7 -------
> > drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
> > drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
> > drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
> > drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
> > drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
> > drivers/gpu/drm/sti/sti_hda.c | 7 -------
> > drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
> > drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
> > drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
> > include/drm/drm_connector.h | 3 +++
> > 27 files changed, 14 insertions(+), 193 deletions(-)
--
Regards,
Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
2016-11-29 21:02 ` Maxime Ripard
2016-11-29 21:07 ` Sean Paul
@ 2016-11-29 21:23 ` Deucher, Alexander
2016-11-29 21:24 ` Jyri Sarha
` (4 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Deucher, Alexander @ 2016-11-29 21:23 UTC (permalink / raw)
To: 'Laurent Pinchart', dri-devel@lists.freedesktop.org
Cc: Alison Wang, Alexey Brodkin, Xinliang Liu, Rongrong Zou,
Daniel Vetter, Maxime Ripard, Jyri Sarha, Vincent Abriou,
Koenig, Christian
> -----Original Message-----
> From: Laurent Pinchart
> [mailto:laurent.pinchart+renesas@ideasonboard.com]
> Sent: Tuesday, November 29, 2016 3:57 PM
> To: dri-devel@lists.freedesktop.org
> Cc: Deucher, Alexander; Koenig, Christian; Alexey Brodkin; Stefan Agner;
> Alison Wang; Patrik Jakobsson; Xinliang Liu; Rongrong Zou; Daniel Vetter;
> Philipp Zabel; CK Hu; Mark Yao; Benjamin Gaignard; Vincent Abriou; Maxime
> Ripard; Jyri Sarha
> Subject: [PATCH] drm: Make the connector .detect() callback optional
>
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
> Signed-off-by: Laurent Pinchart
> <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
> drivers/gpu/drm/ast/ast_mode.c | 7 -------
> drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
> drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
> drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
> drivers/gpu/drm/bridge/tc358767.c | 7 -------
> drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
> drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
> drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
> drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
> drivers/gpu/drm/i915/intel_dsi.c | 7 -------
> drivers/gpu/drm/imx/imx-ldb.c | 7 -------
> drivers/gpu/drm/imx/imx-tve.c | 7 -------
> drivers/gpu/drm/imx/parallel-display.c | 7 -------
> drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
> drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
> drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
> drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
> drivers/gpu/drm/sti/sti_hda.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
> drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
> include/drm/drm_connector.h | 3 +++
> 27 files changed, 14 insertions(+), 193 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> index 81cbf0b05dff..1d93e123532d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> @@ -429,12 +429,6 @@ dce_virtual_dpms(struct drm_connector
> *connector, int mode)
> return 0;
> }
>
> -static enum drm_connector_status
> -dce_virtual_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int
> dce_virtual_set_property(struct drm_connector *connector,
> struct drm_property *property,
> @@ -463,7 +457,6 @@ static const struct drm_connector_helper_funcs
> dce_virtual_connector_helper_func
>
> static const struct drm_connector_funcs dce_virtual_connector_funcs = {
> .dpms = dce_virtual_dpms,
> - .detect = dce_virtual_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = dce_virtual_set_property,
> .destroy = dce_virtual_destroy,
> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c
> b/drivers/gpu/drm/arc/arcpgu_sim.c
> index 2bf06d71556a..bca3a678c955 100644
> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> @@ -41,12 +41,6 @@ static int arcpgu_drm_connector_get_modes(struct
> drm_connector *connector)
> return count;
> }
>
> -static enum drm_connector_status
> -arcpgu_drm_connector_detect(struct drm_connector *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> static void arcpgu_drm_connector_destroy(struct drm_connector
> *connector)
> {
> drm_connector_unregister(connector);
> @@ -61,7 +55,6 @@ arcpgu_drm_connector_helper_funcs = {
> static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = arcpgu_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = arcpgu_drm_connector_destroy,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/ast/ast_mode.c
> b/drivers/gpu/drm/ast/ast_mode.c
> index 5957c3e659fe..e26c98f51eb4 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -839,12 +839,6 @@ static void ast_connector_destroy(struct
> drm_connector *connector)
> kfree(connector);
> }
>
> -static enum drm_connector_status
> -ast_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs
> ast_connector_helper_funcs = {
> .mode_valid = ast_mode_valid,
> .get_modes = ast_get_modes,
> @@ -853,7 +847,6 @@ static const struct drm_connector_helper_funcs
> ast_connector_helper_funcs = {
>
> static const struct drm_connector_funcs ast_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = ast_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = ast_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/bochs/bochs_kms.c
> b/drivers/gpu/drm/bochs/bochs_kms.c
> index 0b4e5d117043..d5e63eff357b 100644
> --- a/drivers/gpu/drm/bochs/bochs_kms.c
> +++ b/drivers/gpu/drm/bochs/bochs_kms.c
> @@ -216,12 +216,6 @@ bochs_connector_best_encoder(struct
> drm_connector *connector)
> return NULL;
> }
>
> -static enum drm_connector_status bochs_connector_detect(struct
> drm_connector
> - *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs
> bochs_connector_connector_helper_funcs = {
> .get_modes = bochs_connector_get_modes,
> .mode_valid = bochs_connector_mode_valid,
> @@ -230,7 +224,6 @@ static const struct drm_connector_helper_funcs
> bochs_connector_connector_helper_
>
> static const struct drm_connector_funcs bochs_connector_connector_funcs
> = {
> .dpms = drm_helper_connector_dpms,
> - .detect = bochs_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> };
> diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c
> b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> index f1a99938e924..27f98c518dde 100644
> --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
> +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> @@ -239,16 +239,9 @@ static const struct drm_connector_helper_funcs
> ptn3460_connector_helper_funcs =
> .get_modes = ptn3460_get_modes,
> };
>
> -static enum drm_connector_status ptn3460_detect(struct drm_connector
> *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ptn3460_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ptn3460_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c
> b/drivers/gpu/drm/bridge/parade-ps8622.c
> index 6f7c2f9860d2..ac8cc5b50d9f 100644
> --- a/drivers/gpu/drm/bridge/parade-ps8622.c
> +++ b/drivers/gpu/drm/bridge/parade-ps8622.c
> @@ -477,16 +477,9 @@ static const struct drm_connector_helper_funcs
> ps8622_connector_helper_funcs = {
> .get_modes = ps8622_get_modes,
> };
>
> -static enum drm_connector_status ps8622_detect(struct drm_connector
> *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ps8622_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ps8622_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/tc358767.c
> b/drivers/gpu/drm/bridge/tc358767.c
> index 44d476ea6d2e..018be8911f71 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -1038,12 +1038,6 @@ static int tc_main_link_stream(struct tc_data *tc,
> int state)
> return ret;
> }
>
> -static enum drm_connector_status
> -tc_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void tc_bridge_pre_enable(struct drm_bridge *bridge)
> {
> struct tc_data *tc = bridge_to_tc(bridge);
> @@ -1168,7 +1162,6 @@ static const struct drm_connector_helper_funcs
> tc_connector_helper_funcs = {
> static const struct drm_connector_funcs tc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = tc_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c
> b/drivers/gpu/drm/cirrus/cirrus_mode.c
> index 17c915d9a03e..9a4a27c1afd2 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_mode.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
> @@ -498,12 +498,6 @@ static struct drm_encoder
> *cirrus_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status cirrus_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void cirrus_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_cleanup(connector);
> @@ -517,7 +511,6 @@ static const struct drm_connector_helper_funcs
> cirrus_vga_connector_helper_funcs
>
> static const struct drm_connector_funcs cirrus_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cirrus_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = cirrus_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/drm_probe_helper.c
> b/drivers/gpu/drm/drm_probe_helper.c
> index f6b64d7d3528..078d9703a4fe 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -152,6 +152,14 @@ void drm_kms_helper_poll_enable_locked(struct
> drm_device *dev)
> }
> EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked);
>
> +static enum drm_connector_status
> +drm_connector_detect(struct drm_connector *connector, bool force)
> +{
> + return connector->funcs->detect ?
> + connector->funcs->detect(connector, force) :
> + connector_status_connected;
> +}
> +
> /**
> * drm_helper_probe_single_connector_modes - get complete set of
> display modes
> * @connector: connector to probe
> @@ -239,7 +247,7 @@ int
> drm_helper_probe_single_connector_modes(struct drm_connector
> *connector,
> if (connector->funcs->force)
> connector->funcs->force(connector);
> } else {
> - connector->status = connector->funcs->detect(connector,
> true);
> + connector->status = drm_connector_detect(connector,
> true);
> }
>
> /*
> @@ -405,7 +413,7 @@ static void output_poll_execute(struct work_struct
> *work)
>
> repoll = true;
>
> - connector->status = connector->funcs->detect(connector,
> false);
> + connector->status = drm_connector_detect(connector,
> false);
> if (old_status != connector->status) {
> const char *old, *new;
>
> @@ -565,7 +573,7 @@ bool drm_helper_hpd_irq_event(struct drm_device
> *dev)
>
> old_status = connector->status;
>
> - connector->status = connector->funcs->detect(connector,
> false);
> + connector->status = drm_connector_detect(connector,
> false);
> DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated
> from %s to %s\n",
> connector->base.id,
> connector->name,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> index e1dd75b18118..05a8ee106879 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> @@ -58,17 +58,10 @@ static void fsl_dcu_drm_connector_destroy(struct
> drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -fsl_dcu_drm_connector_detect(struct drm_connector *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs fsl_dcu_drm_connector_funcs = {
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> .atomic_destroy_state =
> drm_atomic_helper_connector_destroy_state,
> .destroy = fsl_dcu_drm_connector_destroy,
> - .detect = fsl_dcu_drm_connector_detect,
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> index ea733ab5b1e0..5efdb7fbb7ee 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> @@ -387,19 +387,6 @@ static void cdv_intel_lvds_mode_set(struct
> drm_encoder *encoder,
> }
>
> /**
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status cdv_intel_lvds_detect(
> - struct drm_connector *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> -/**
> * Return the list of DDC modes if available, or the BIOS fixed mode
> otherwise.
> */
> static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -521,7 +508,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cdv_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = cdv_intel_lvds_set_property,
> .destroy = cdv_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c
> b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> index fd7c91254841..483fdce74e39 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> @@ -500,19 +500,6 @@ static void psb_intel_lvds_mode_set(struct
> drm_encoder *encoder,
> }
>
> /*
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status psb_intel_lvds_detect(struct
> drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> -/*
> * Return the list of DDC modes if available, or the BIOS fixed mode
> otherwise.
> */
> static int psb_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -643,7 +630,6 @@ const struct drm_connector_helper_funcs
>
> const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = psb_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = psb_intel_lvds_set_property,
> .destroy = psb_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> index d1f67a9d4d86..12a18557c5fd 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> @@ -39,12 +39,6 @@ hibmc_connector_best_encoder(struct
> drm_connector *connector)
> return drm_encoder_find(connector->dev, connector-
> >encoder_ids[0]);
> }
>
> -static enum drm_connector_status hibmc_connector_detect(struct
> drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs
> hibmc_connector_helper_funcs = {
> .get_modes = hibmc_connector_get_modes,
> @@ -54,7 +48,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs hibmc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = hibmc_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c
> b/drivers/gpu/drm/i915/intel_dsi.c
> index 4e0d025490a3..5b72c50d6f76 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -1298,12 +1298,6 @@ static void intel_dsi_prepare(struct intel_encoder
> *intel_encoder,
> }
> }
>
> -static enum drm_connector_status
> -intel_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int intel_dsi_get_modes(struct drm_connector *connector)
> {
> struct intel_connector *intel_connector =
> to_intel_connector(connector);
> @@ -1407,7 +1401,6 @@ static const struct drm_connector_helper_funcs
> intel_dsi_connector_helper_funcs
>
> static const struct drm_connector_funcs intel_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = intel_dsi_detect,
> .late_register = intel_connector_register,
> .early_unregister = intel_connector_unregister,
> .destroy = intel_dsi_connector_destroy,
> diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
> index b300998dce7d..516d06490465 100644
> --- a/drivers/gpu/drm/imx/imx-ldb.c
> +++ b/drivers/gpu/drm/imx/imx-ldb.c
> @@ -101,12 +101,6 @@ struct imx_ldb {
> const struct bus_mux *lvds_mux;
> };
>
> -static enum drm_connector_status imx_ldb_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void imx_ldb_ch_set_bus_format(struct imx_ldb_channel
> *imx_ldb_ch,
> u32 bus_format)
> {
> @@ -397,7 +391,6 @@ static int imx_ldb_encoder_atomic_check(struct
> drm_encoder *encoder,
> static const struct drm_connector_funcs imx_ldb_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_ldb_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
> index 8fc088843e55..3b602ee33c44 100644
> --- a/drivers/gpu/drm/imx/imx-tve.c
> +++ b/drivers/gpu/drm/imx/imx-tve.c
> @@ -227,12 +227,6 @@ static int tve_setup_vga(struct imx_tve *tve)
> TVE_TVDAC_TEST_MODE_MASK, 1);
> }
>
> -static enum drm_connector_status imx_tve_connector_detect(
> - struct drm_connector *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_tve_connector_get_modes(struct drm_connector
> *connector)
> {
> struct imx_tve *tve = con_to_tve(connector);
> @@ -352,7 +346,6 @@ static int imx_tve_atomic_check(struct drm_encoder
> *encoder,
> static const struct drm_connector_funcs imx_tve_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_tve_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/parallel-display.c
> b/drivers/gpu/drm/imx/parallel-display.c
> index d796ada2a47a..8582a83c0d9b 100644
> --- a/drivers/gpu/drm/imx/parallel-display.c
> +++ b/drivers/gpu/drm/imx/parallel-display.c
> @@ -49,12 +49,6 @@ static inline struct imx_parallel_display
> *enc_to_imxpd(struct drm_encoder *e)
> return container_of(e, struct imx_parallel_display, encoder);
> }
>
> -static enum drm_connector_status imx_pd_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_pd_connector_get_modes(struct drm_connector *connector)
> {
> struct imx_parallel_display *imxpd = con_to_imxpd(connector);
> @@ -143,7 +137,6 @@ static int imx_pd_encoder_atomic_check(struct
> drm_encoder *encoder,
> static const struct drm_connector_funcs imx_pd_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_pd_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c
> b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 28b2044ed9f2..30027b26a59f 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -562,12 +562,6 @@ static void mtk_dsi_encoder_enable(struct
> drm_encoder *encoder)
> mtk_output_dsi_enable(dsi);
> }
>
> -static enum drm_connector_status mtk_dsi_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int mtk_dsi_connector_get_modes(struct drm_connector *connector)
> {
> struct mtk_dsi *dsi = connector_to_dsi(connector);
> @@ -584,7 +578,6 @@ static const struct drm_encoder_helper_funcs
> mtk_dsi_encoder_helper_funcs = {
>
> static const struct drm_connector_funcs mtk_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = mtk_dsi_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c
> b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index 6b21cb27e1cc..3a03ac4045d8 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1658,12 +1658,6 @@ static struct drm_encoder
> *mga_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status mga_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void mga_connector_destroy(struct drm_connector *connector)
> {
> struct mga_connector *mga_connector =
> to_mga_connector(connector);
> @@ -1680,7 +1674,6 @@ static const struct drm_connector_helper_funcs
> mga_vga_connector_helper_funcs =
>
> static const struct drm_connector_funcs mga_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = mga_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = mga_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> index ee87494f9218..ee91481131ad 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> @@ -37,12 +37,6 @@ static const struct drm_connector_helper_funcs
> connector_helper_funcs = {
> .get_modes = rcar_du_lvds_connector_get_modes,
> };
>
> -static enum drm_connector_status
> -rcar_du_lvds_connector_detect(struct drm_connector *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> static void rcar_du_lvds_connector_destroy(struct drm_connector
> *connector)
> {
> struct rcar_du_connector *rcon = to_rcar_connector(connector);
> @@ -54,7 +48,6 @@ static void rcar_du_lvds_connector_destroy(struct
> drm_connector *connector)
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = rcar_du_lvds_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = rcar_du_lvds_connector_destroy,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> index ca22e5ee89ca..d9aa382bb629 100644
> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> @@ -969,12 +969,6 @@ static struct drm_connector_helper_funcs
> dw_mipi_dsi_connector_helper_funcs = {
> .mode_valid = dw_mipi_dsi_mode_valid,
> };
>
> -static enum drm_connector_status
> -dw_mipi_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector
> *connector)
> {
> drm_connector_unregister(connector);
> @@ -984,7 +978,6 @@ static void
> dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
> static struct drm_connector_funcs dw_mipi_dsi_atomic_connector_funcs =
> {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = dw_mipi_dsi_detect,
> .destroy = dw_mipi_dsi_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> index 6547b1db460a..dddbdd62bed0 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> @@ -669,15 +669,8 @@ static void shmob_drm_connector_destroy(struct
> drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -shmob_drm_connector_detect(struct drm_connector *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = shmob_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = shmob_drm_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
> index e7c243f70870..96f336dd0e29 100644
> --- a/drivers/gpu/drm/sti/sti_hda.c
> +++ b/drivers/gpu/drm/sti/sti_hda.c
> @@ -642,12 +642,6 @@ struct drm_connector_helper_funcs
> sti_hda_connector_helper_funcs = {
> .mode_valid = sti_hda_connector_mode_valid,
> };
>
> -static enum drm_connector_status
> -sti_hda_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int sti_hda_late_register(struct drm_connector *connector)
> {
> struct sti_hda_connector *hda_connector
> @@ -665,7 +659,6 @@ static int sti_hda_late_register(struct drm_connector
> *connector)
> static const struct drm_connector_funcs sti_hda_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = sti_hda_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c
> b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> index c3ff10f559cc..5380085b3c06 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> @@ -110,12 +110,6 @@ static struct drm_connector_helper_funcs
> sun4i_rgb_con_helper_funcs = {
> .mode_valid = sun4i_rgb_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_rgb_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_rgb_connector_destroy(struct drm_connector *connector)
> {
> @@ -129,7 +123,6 @@ sun4i_rgb_connector_destroy(struct drm_connector
> *connector)
>
> static struct drm_connector_funcs sun4i_rgb_con_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_rgb_connector_detect,
> .fill_modes =
> drm_helper_probe_single_connector_modes,
> .destroy = sun4i_rgb_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c
> b/drivers/gpu/drm/sun4i/sun4i_tv.c
> index d430b331fed5..c6f47222e8fc 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
> @@ -537,12 +537,6 @@ static struct drm_connector_helper_funcs
> sun4i_tv_comp_connector_helper_funcs =
> .mode_valid = sun4i_tv_comp_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_tv_comp_connector_detect(struct drm_connector *connector, bool
> force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
> {
> @@ -551,7 +545,6 @@ sun4i_tv_comp_connector_destroy(struct
> drm_connector *connector)
>
> static struct drm_connector_funcs sun4i_tv_comp_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_tv_comp_connector_detect,
> .fill_modes =
> drm_helper_probe_single_connector_modes,
> .destroy = sun4i_tv_comp_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> index 2134bb20fbe9..e634201db821 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> @@ -144,13 +144,6 @@ static void panel_connector_destroy(struct
> drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status panel_connector_detect(
> - struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int panel_connector_get_modes(struct drm_connector *connector)
> {
> struct drm_device *dev = connector->dev;
> @@ -197,7 +190,6 @@ static struct drm_encoder
> *panel_connector_best_encoder(
> static const struct drm_connector_funcs panel_connector_funcs = {
> .destroy = panel_connector_destroy,
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = panel_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state =
> drm_atomic_helper_connector_duplicate_state,
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index e9390b1bd3a4..43b37906e20b 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -264,6 +264,9 @@ struct drm_connector_funcs {
> * connector due to a user request. force can be used by the driver to
> * avoid expensive, destructive operations during automated
> probing.
> *
> + * This callback is optional, if not implemented the connector will be
> + * considered as always being attached.
> + *
> * FIXME:
> *
> * Note that this hook is only called by the probe helper. It's not in
> --
> Regards,
>
> Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
` (2 preceding siblings ...)
2016-11-29 21:23 ` Deucher, Alexander
@ 2016-11-29 21:24 ` Jyri Sarha
2016-11-30 8:26 ` Jani Nikula
` (3 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Jyri Sarha @ 2016-11-29 21:24 UTC (permalink / raw)
To: Laurent Pinchart, dri-devel
Cc: Alison Wang, Alexey Brodkin, Xinliang Liu, Rongrong Zou,
Alex Deucher, Daniel Vetter, Maxime Ripard, Vincent Abriou,
Christian König
On 11/29/16 22:56, Laurent Pinchart wrote:
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
> drivers/gpu/drm/ast/ast_mode.c | 7 -------
> drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
> drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
> drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
> drivers/gpu/drm/bridge/tc358767.c | 7 -------
> drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
> drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
> drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
> drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
> drivers/gpu/drm/i915/intel_dsi.c | 7 -------
> drivers/gpu/drm/imx/imx-ldb.c | 7 -------
> drivers/gpu/drm/imx/imx-tve.c | 7 -------
> drivers/gpu/drm/imx/parallel-display.c | 7 -------
> drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
> drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
> drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
> drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
> drivers/gpu/drm/sti/sti_hda.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
> drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
> include/drm/drm_connector.h | 3 +++
> 27 files changed, 14 insertions(+), 193 deletions(-)
Acked-by: Jyri Sarha <jsarha@ti.com>
... for tilcdc part.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
` (3 preceding siblings ...)
2016-11-29 21:24 ` Jyri Sarha
@ 2016-11-30 8:26 ` Jani Nikula
2016-11-30 9:37 ` Alexey Brodkin
` (2 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Jani Nikula @ 2016-11-30 8:26 UTC (permalink / raw)
To: Laurent Pinchart, dri-devel
Cc: Alison Wang, Alexey Brodkin, Jyri Sarha, Xinliang Liu,
Alex Deucher, Rongrong Zou, Daniel Vetter, Maxime Ripard,
Vincent Abriou, Christian König
On Tue, 29 Nov 2016, Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> wrote:
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
` (4 preceding siblings ...)
2016-11-30 8:26 ` Jani Nikula
@ 2016-11-30 9:37 ` Alexey Brodkin
2016-11-30 9:51 ` Philipp Zabel
2016-11-30 15:27 ` Vincent ABRIOU
7 siblings, 0 replies; 11+ messages in thread
From: Alexey Brodkin @ 2016-11-30 9:37 UTC (permalink / raw)
To: laurent.pinchart+renesas@ideasonboard.com
Cc: alison.wang@freescale.com, dri-devel@lists.freedesktop.org,
jsarha@ti.com, z.liuxinliang@hisilicon.com,
alexander.deucher@amd.com, zourongrong@gmail.com,
daniel.vetter@intel.com, maxime.ripard@free-electrons.com,
vincent.abriou@st.com, christian.koenig@amd.com
Hi Laurent,
On Tue, 2016-11-29 at 22:56 +0200, Laurent Pinchart wrote:
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
For ARC PGU
Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
-Alexey
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
` (5 preceding siblings ...)
2016-11-30 9:37 ` Alexey Brodkin
@ 2016-11-30 9:51 ` Philipp Zabel
2016-11-30 15:27 ` Vincent ABRIOU
7 siblings, 0 replies; 11+ messages in thread
From: Philipp Zabel @ 2016-11-30 9:51 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Alison Wang, Alexey Brodkin, Xinliang Liu, Rongrong Zou,
dri-devel, Alex Deucher, Daniel Vetter, Maxime Ripard, Jyri Sarha,
Vincent Abriou, Christian König
Am Dienstag, den 29.11.2016, 22:56 +0200 schrieb Laurent Pinchart:
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
> drivers/gpu/drm/ast/ast_mode.c | 7 -------
> drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
> drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
> drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
> drivers/gpu/drm/bridge/tc358767.c | 7 -------
> drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
> drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
> drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
> drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
> drivers/gpu/drm/i915/intel_dsi.c | 7 -------
> drivers/gpu/drm/imx/imx-ldb.c | 7 -------
> drivers/gpu/drm/imx/imx-tve.c | 7 -------
> drivers/gpu/drm/imx/parallel-display.c | 7 -------
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
regards
Philipp
> drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
> drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
> drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
> drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
> drivers/gpu/drm/sti/sti_hda.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
> drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
> include/drm/drm_connector.h | 3 +++
> 27 files changed, 14 insertions(+), 193 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> index 81cbf0b05dff..1d93e123532d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> @@ -429,12 +429,6 @@ dce_virtual_dpms(struct drm_connector *connector, int mode)
> return 0;
> }
>
> -static enum drm_connector_status
> -dce_virtual_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int
> dce_virtual_set_property(struct drm_connector *connector,
> struct drm_property *property,
> @@ -463,7 +457,6 @@ static const struct drm_connector_helper_funcs dce_virtual_connector_helper_func
>
> static const struct drm_connector_funcs dce_virtual_connector_funcs = {
> .dpms = dce_virtual_dpms,
> - .detect = dce_virtual_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = dce_virtual_set_property,
> .destroy = dce_virtual_destroy,
> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
> index 2bf06d71556a..bca3a678c955 100644
> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> @@ -41,12 +41,6 @@ static int arcpgu_drm_connector_get_modes(struct drm_connector *connector)
> return count;
> }
>
> -static enum drm_connector_status
> -arcpgu_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void arcpgu_drm_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_unregister(connector);
> @@ -61,7 +55,6 @@ arcpgu_drm_connector_helper_funcs = {
> static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = arcpgu_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = arcpgu_drm_connector_destroy,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index 5957c3e659fe..e26c98f51eb4 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -839,12 +839,6 @@ static void ast_connector_destroy(struct drm_connector *connector)
> kfree(connector);
> }
>
> -static enum drm_connector_status
> -ast_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
> .mode_valid = ast_mode_valid,
> .get_modes = ast_get_modes,
> @@ -853,7 +847,6 @@ static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
>
> static const struct drm_connector_funcs ast_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = ast_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = ast_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
> index 0b4e5d117043..d5e63eff357b 100644
> --- a/drivers/gpu/drm/bochs/bochs_kms.c
> +++ b/drivers/gpu/drm/bochs/bochs_kms.c
> @@ -216,12 +216,6 @@ bochs_connector_best_encoder(struct drm_connector *connector)
> return NULL;
> }
>
> -static enum drm_connector_status bochs_connector_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs bochs_connector_connector_helper_funcs = {
> .get_modes = bochs_connector_get_modes,
> .mode_valid = bochs_connector_mode_valid,
> @@ -230,7 +224,6 @@ static const struct drm_connector_helper_funcs bochs_connector_connector_helper_
>
> static const struct drm_connector_funcs bochs_connector_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = bochs_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> };
> diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> index f1a99938e924..27f98c518dde 100644
> --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
> +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> @@ -239,16 +239,9 @@ static const struct drm_connector_helper_funcs ptn3460_connector_helper_funcs =
> .get_modes = ptn3460_get_modes,
> };
>
> -static enum drm_connector_status ptn3460_detect(struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ptn3460_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ptn3460_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
> index 6f7c2f9860d2..ac8cc5b50d9f 100644
> --- a/drivers/gpu/drm/bridge/parade-ps8622.c
> +++ b/drivers/gpu/drm/bridge/parade-ps8622.c
> @@ -477,16 +477,9 @@ static const struct drm_connector_helper_funcs ps8622_connector_helper_funcs = {
> .get_modes = ps8622_get_modes,
> };
>
> -static enum drm_connector_status ps8622_detect(struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ps8622_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ps8622_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index 44d476ea6d2e..018be8911f71 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -1038,12 +1038,6 @@ static int tc_main_link_stream(struct tc_data *tc, int state)
> return ret;
> }
>
> -static enum drm_connector_status
> -tc_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void tc_bridge_pre_enable(struct drm_bridge *bridge)
> {
> struct tc_data *tc = bridge_to_tc(bridge);
> @@ -1168,7 +1162,6 @@ static const struct drm_connector_helper_funcs tc_connector_helper_funcs = {
> static const struct drm_connector_funcs tc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = tc_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c
> index 17c915d9a03e..9a4a27c1afd2 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_mode.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
> @@ -498,12 +498,6 @@ static struct drm_encoder *cirrus_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status cirrus_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void cirrus_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_cleanup(connector);
> @@ -517,7 +511,6 @@ static const struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs
>
> static const struct drm_connector_funcs cirrus_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cirrus_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = cirrus_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> index f6b64d7d3528..078d9703a4fe 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -152,6 +152,14 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev)
> }
> EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked);
>
> +static enum drm_connector_status
> +drm_connector_detect(struct drm_connector *connector, bool force)
> +{
> + return connector->funcs->detect ?
> + connector->funcs->detect(connector, force) :
> + connector_status_connected;
> +}
> +
> /**
> * drm_helper_probe_single_connector_modes - get complete set of display modes
> * @connector: connector to probe
> @@ -239,7 +247,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
> if (connector->funcs->force)
> connector->funcs->force(connector);
> } else {
> - connector->status = connector->funcs->detect(connector, true);
> + connector->status = drm_connector_detect(connector, true);
> }
>
> /*
> @@ -405,7 +413,7 @@ static void output_poll_execute(struct work_struct *work)
>
> repoll = true;
>
> - connector->status = connector->funcs->detect(connector, false);
> + connector->status = drm_connector_detect(connector, false);
> if (old_status != connector->status) {
> const char *old, *new;
>
> @@ -565,7 +573,7 @@ bool drm_helper_hpd_irq_event(struct drm_device *dev)
>
> old_status = connector->status;
>
> - connector->status = connector->funcs->detect(connector, false);
> + connector->status = drm_connector_detect(connector, false);
> DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s\n",
> connector->base.id,
> connector->name,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> index e1dd75b18118..05a8ee106879 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> @@ -58,17 +58,10 @@ static void fsl_dcu_drm_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -fsl_dcu_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs fsl_dcu_drm_connector_funcs = {
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> .destroy = fsl_dcu_drm_connector_destroy,
> - .detect = fsl_dcu_drm_connector_detect,
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> index ea733ab5b1e0..5efdb7fbb7ee 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> @@ -387,19 +387,6 @@ static void cdv_intel_lvds_mode_set(struct drm_encoder *encoder,
> }
>
> /**
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status cdv_intel_lvds_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> -/**
> * Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
> */
> static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -521,7 +508,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cdv_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = cdv_intel_lvds_set_property,
> .destroy = cdv_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> index fd7c91254841..483fdce74e39 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> @@ -500,19 +500,6 @@ static void psb_intel_lvds_mode_set(struct drm_encoder *encoder,
> }
>
> /*
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status psb_intel_lvds_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> -/*
> * Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
> */
> static int psb_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -643,7 +630,6 @@ const struct drm_connector_helper_funcs
>
> const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = psb_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = psb_intel_lvds_set_property,
> .destroy = psb_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> index d1f67a9d4d86..12a18557c5fd 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> @@ -39,12 +39,6 @@ hibmc_connector_best_encoder(struct drm_connector *connector)
> return drm_encoder_find(connector->dev, connector->encoder_ids[0]);
> }
>
> -static enum drm_connector_status hibmc_connector_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs
> hibmc_connector_helper_funcs = {
> .get_modes = hibmc_connector_get_modes,
> @@ -54,7 +48,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs hibmc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = hibmc_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 4e0d025490a3..5b72c50d6f76 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -1298,12 +1298,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder,
> }
> }
>
> -static enum drm_connector_status
> -intel_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int intel_dsi_get_modes(struct drm_connector *connector)
> {
> struct intel_connector *intel_connector = to_intel_connector(connector);
> @@ -1407,7 +1401,6 @@ static const struct drm_connector_helper_funcs intel_dsi_connector_helper_funcs
>
> static const struct drm_connector_funcs intel_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = intel_dsi_detect,
> .late_register = intel_connector_register,
> .early_unregister = intel_connector_unregister,
> .destroy = intel_dsi_connector_destroy,
> diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
> index b300998dce7d..516d06490465 100644
> --- a/drivers/gpu/drm/imx/imx-ldb.c
> +++ b/drivers/gpu/drm/imx/imx-ldb.c
> @@ -101,12 +101,6 @@ struct imx_ldb {
> const struct bus_mux *lvds_mux;
> };
>
> -static enum drm_connector_status imx_ldb_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void imx_ldb_ch_set_bus_format(struct imx_ldb_channel *imx_ldb_ch,
> u32 bus_format)
> {
> @@ -397,7 +391,6 @@ static int imx_ldb_encoder_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_ldb_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_ldb_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
> index 8fc088843e55..3b602ee33c44 100644
> --- a/drivers/gpu/drm/imx/imx-tve.c
> +++ b/drivers/gpu/drm/imx/imx-tve.c
> @@ -227,12 +227,6 @@ static int tve_setup_vga(struct imx_tve *tve)
> TVE_TVDAC_TEST_MODE_MASK, 1);
> }
>
> -static enum drm_connector_status imx_tve_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_tve_connector_get_modes(struct drm_connector *connector)
> {
> struct imx_tve *tve = con_to_tve(connector);
> @@ -352,7 +346,6 @@ static int imx_tve_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_tve_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_tve_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
> index d796ada2a47a..8582a83c0d9b 100644
> --- a/drivers/gpu/drm/imx/parallel-display.c
> +++ b/drivers/gpu/drm/imx/parallel-display.c
> @@ -49,12 +49,6 @@ static inline struct imx_parallel_display *enc_to_imxpd(struct drm_encoder *e)
> return container_of(e, struct imx_parallel_display, encoder);
> }
>
> -static enum drm_connector_status imx_pd_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_pd_connector_get_modes(struct drm_connector *connector)
> {
> struct imx_parallel_display *imxpd = con_to_imxpd(connector);
> @@ -143,7 +137,6 @@ static int imx_pd_encoder_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_pd_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_pd_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 28b2044ed9f2..30027b26a59f 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -562,12 +562,6 @@ static void mtk_dsi_encoder_enable(struct drm_encoder *encoder)
> mtk_output_dsi_enable(dsi);
> }
>
> -static enum drm_connector_status mtk_dsi_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int mtk_dsi_connector_get_modes(struct drm_connector *connector)
> {
> struct mtk_dsi *dsi = connector_to_dsi(connector);
> @@ -584,7 +578,6 @@ static const struct drm_encoder_helper_funcs mtk_dsi_encoder_helper_funcs = {
>
> static const struct drm_connector_funcs mtk_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = mtk_dsi_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index 6b21cb27e1cc..3a03ac4045d8 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1658,12 +1658,6 @@ static struct drm_encoder *mga_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status mga_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void mga_connector_destroy(struct drm_connector *connector)
> {
> struct mga_connector *mga_connector = to_mga_connector(connector);
> @@ -1680,7 +1674,6 @@ static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs =
>
> static const struct drm_connector_funcs mga_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = mga_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = mga_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> index ee87494f9218..ee91481131ad 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> @@ -37,12 +37,6 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
> .get_modes = rcar_du_lvds_connector_get_modes,
> };
>
> -static enum drm_connector_status
> -rcar_du_lvds_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
> {
> struct rcar_du_connector *rcon = to_rcar_connector(connector);
> @@ -54,7 +48,6 @@ static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = rcar_du_lvds_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = rcar_du_lvds_connector_destroy,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> index ca22e5ee89ca..d9aa382bb629 100644
> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> @@ -969,12 +969,6 @@ static struct drm_connector_helper_funcs dw_mipi_dsi_connector_helper_funcs = {
> .mode_valid = dw_mipi_dsi_mode_valid,
> };
>
> -static enum drm_connector_status
> -dw_mipi_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_unregister(connector);
> @@ -984,7 +978,6 @@ static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
> static struct drm_connector_funcs dw_mipi_dsi_atomic_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = dw_mipi_dsi_detect,
> .destroy = dw_mipi_dsi_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> index 6547b1db460a..dddbdd62bed0 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> @@ -669,15 +669,8 @@ static void shmob_drm_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -shmob_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = shmob_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = shmob_drm_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
> index e7c243f70870..96f336dd0e29 100644
> --- a/drivers/gpu/drm/sti/sti_hda.c
> +++ b/drivers/gpu/drm/sti/sti_hda.c
> @@ -642,12 +642,6 @@ struct drm_connector_helper_funcs sti_hda_connector_helper_funcs = {
> .mode_valid = sti_hda_connector_mode_valid,
> };
>
> -static enum drm_connector_status
> -sti_hda_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int sti_hda_late_register(struct drm_connector *connector)
> {
> struct sti_hda_connector *hda_connector
> @@ -665,7 +659,6 @@ static int sti_hda_late_register(struct drm_connector *connector)
> static const struct drm_connector_funcs sti_hda_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = sti_hda_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> index c3ff10f559cc..5380085b3c06 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> @@ -110,12 +110,6 @@ static struct drm_connector_helper_funcs sun4i_rgb_con_helper_funcs = {
> .mode_valid = sun4i_rgb_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_rgb_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_rgb_connector_destroy(struct drm_connector *connector)
> {
> @@ -129,7 +123,6 @@ sun4i_rgb_connector_destroy(struct drm_connector *connector)
>
> static struct drm_connector_funcs sun4i_rgb_con_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_rgb_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = sun4i_rgb_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
> index d430b331fed5..c6f47222e8fc 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
> @@ -537,12 +537,6 @@ static struct drm_connector_helper_funcs sun4i_tv_comp_connector_helper_funcs =
> .mode_valid = sun4i_tv_comp_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_tv_comp_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
> {
> @@ -551,7 +545,6 @@ sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
>
> static struct drm_connector_funcs sun4i_tv_comp_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_tv_comp_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = sun4i_tv_comp_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> index 2134bb20fbe9..e634201db821 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> @@ -144,13 +144,6 @@ static void panel_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status panel_connector_detect(
> - struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int panel_connector_get_modes(struct drm_connector *connector)
> {
> struct drm_device *dev = connector->dev;
> @@ -197,7 +190,6 @@ static struct drm_encoder *panel_connector_best_encoder(
> static const struct drm_connector_funcs panel_connector_funcs = {
> .destroy = panel_connector_destroy,
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = panel_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index e9390b1bd3a4..43b37906e20b 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -264,6 +264,9 @@ struct drm_connector_funcs {
> * connector due to a user request. force can be used by the driver to
> * avoid expensive, destructive operations during automated probing.
> *
> + * This callback is optional, if not implemented the connector will be
> + * considered as always being attached.
> + *
> * FIXME:
> *
> * Note that this hook is only called by the probe helper. It's not in
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
` (6 preceding siblings ...)
2016-11-30 9:51 ` Philipp Zabel
@ 2016-11-30 15:27 ` Vincent ABRIOU
7 siblings, 0 replies; 11+ messages in thread
From: Vincent ABRIOU @ 2016-11-30 15:27 UTC (permalink / raw)
To: Laurent Pinchart, dri-devel@lists.freedesktop.org
Cc: Alison Wang, Alexey Brodkin, Xinliang Liu, Rongrong Zou,
Alex Deucher, Daniel Vetter, Maxime Ripard, Jyri Sarha,
Christian König
Hi Laurent,
For the sti driver:
Acked-by: Vincent Abriou <vincent.abriou@st.com>
Vincent
On 11/29/2016 09:56 PM, Laurent Pinchart wrote:
> Many drivers (21 to be exact) create connectors that are always
> connected (for instance to an LVDS or DSI panel). Instead of forcing
> them to implement a dummy .detect() handler, make the callback optional
> and consider the connector as always connected in that case.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
> drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
> drivers/gpu/drm/ast/ast_mode.c | 7 -------
> drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
> drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
> drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
> drivers/gpu/drm/bridge/tc358767.c | 7 -------
> drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
> drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
> drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
> drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
> drivers/gpu/drm/i915/intel_dsi.c | 7 -------
> drivers/gpu/drm/imx/imx-ldb.c | 7 -------
> drivers/gpu/drm/imx/imx-tve.c | 7 -------
> drivers/gpu/drm/imx/parallel-display.c | 7 -------
> drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
> drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
> drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
> drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
> drivers/gpu/drm/sti/sti_hda.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
> drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
> drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
> include/drm/drm_connector.h | 3 +++
> 27 files changed, 14 insertions(+), 193 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> index 81cbf0b05dff..1d93e123532d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> @@ -429,12 +429,6 @@ dce_virtual_dpms(struct drm_connector *connector, int mode)
> return 0;
> }
>
> -static enum drm_connector_status
> -dce_virtual_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int
> dce_virtual_set_property(struct drm_connector *connector,
> struct drm_property *property,
> @@ -463,7 +457,6 @@ static const struct drm_connector_helper_funcs dce_virtual_connector_helper_func
>
> static const struct drm_connector_funcs dce_virtual_connector_funcs = {
> .dpms = dce_virtual_dpms,
> - .detect = dce_virtual_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = dce_virtual_set_property,
> .destroy = dce_virtual_destroy,
> diff --git a/drivers/gpu/drm/arc/arcpgu_sim.c b/drivers/gpu/drm/arc/arcpgu_sim.c
> index 2bf06d71556a..bca3a678c955 100644
> --- a/drivers/gpu/drm/arc/arcpgu_sim.c
> +++ b/drivers/gpu/drm/arc/arcpgu_sim.c
> @@ -41,12 +41,6 @@ static int arcpgu_drm_connector_get_modes(struct drm_connector *connector)
> return count;
> }
>
> -static enum drm_connector_status
> -arcpgu_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void arcpgu_drm_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_unregister(connector);
> @@ -61,7 +55,6 @@ arcpgu_drm_connector_helper_funcs = {
> static const struct drm_connector_funcs arcpgu_drm_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = arcpgu_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = arcpgu_drm_connector_destroy,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index 5957c3e659fe..e26c98f51eb4 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -839,12 +839,6 @@ static void ast_connector_destroy(struct drm_connector *connector)
> kfree(connector);
> }
>
> -static enum drm_connector_status
> -ast_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
> .mode_valid = ast_mode_valid,
> .get_modes = ast_get_modes,
> @@ -853,7 +847,6 @@ static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
>
> static const struct drm_connector_funcs ast_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = ast_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = ast_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
> index 0b4e5d117043..d5e63eff357b 100644
> --- a/drivers/gpu/drm/bochs/bochs_kms.c
> +++ b/drivers/gpu/drm/bochs/bochs_kms.c
> @@ -216,12 +216,6 @@ bochs_connector_best_encoder(struct drm_connector *connector)
> return NULL;
> }
>
> -static enum drm_connector_status bochs_connector_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs bochs_connector_connector_helper_funcs = {
> .get_modes = bochs_connector_get_modes,
> .mode_valid = bochs_connector_mode_valid,
> @@ -230,7 +224,6 @@ static const struct drm_connector_helper_funcs bochs_connector_connector_helper_
>
> static const struct drm_connector_funcs bochs_connector_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = bochs_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> };
> diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> index f1a99938e924..27f98c518dde 100644
> --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
> +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
> @@ -239,16 +239,9 @@ static const struct drm_connector_helper_funcs ptn3460_connector_helper_funcs =
> .get_modes = ptn3460_get_modes,
> };
>
> -static enum drm_connector_status ptn3460_detect(struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ptn3460_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ptn3460_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridge/parade-ps8622.c
> index 6f7c2f9860d2..ac8cc5b50d9f 100644
> --- a/drivers/gpu/drm/bridge/parade-ps8622.c
> +++ b/drivers/gpu/drm/bridge/parade-ps8622.c
> @@ -477,16 +477,9 @@ static const struct drm_connector_helper_funcs ps8622_connector_helper_funcs = {
> .get_modes = ps8622_get_modes,
> };
>
> -static enum drm_connector_status ps8622_detect(struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs ps8622_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = ps8622_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index 44d476ea6d2e..018be8911f71 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -1038,12 +1038,6 @@ static int tc_main_link_stream(struct tc_data *tc, int state)
> return ret;
> }
>
> -static enum drm_connector_status
> -tc_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void tc_bridge_pre_enable(struct drm_bridge *bridge)
> {
> struct tc_data *tc = bridge_to_tc(bridge);
> @@ -1168,7 +1162,6 @@ static const struct drm_connector_helper_funcs tc_connector_helper_funcs = {
> static const struct drm_connector_funcs tc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = tc_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c
> index 17c915d9a03e..9a4a27c1afd2 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_mode.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
> @@ -498,12 +498,6 @@ static struct drm_encoder *cirrus_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status cirrus_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void cirrus_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_cleanup(connector);
> @@ -517,7 +511,6 @@ static const struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs
>
> static const struct drm_connector_funcs cirrus_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cirrus_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = cirrus_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> index f6b64d7d3528..078d9703a4fe 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -152,6 +152,14 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev)
> }
> EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked);
>
> +static enum drm_connector_status
> +drm_connector_detect(struct drm_connector *connector, bool force)
> +{
> + return connector->funcs->detect ?
> + connector->funcs->detect(connector, force) :
> + connector_status_connected;
> +}
> +
> /**
> * drm_helper_probe_single_connector_modes - get complete set of display modes
> * @connector: connector to probe
> @@ -239,7 +247,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
> if (connector->funcs->force)
> connector->funcs->force(connector);
> } else {
> - connector->status = connector->funcs->detect(connector, true);
> + connector->status = drm_connector_detect(connector, true);
> }
>
> /*
> @@ -405,7 +413,7 @@ static void output_poll_execute(struct work_struct *work)
>
> repoll = true;
>
> - connector->status = connector->funcs->detect(connector, false);
> + connector->status = drm_connector_detect(connector, false);
> if (old_status != connector->status) {
> const char *old, *new;
>
> @@ -565,7 +573,7 @@ bool drm_helper_hpd_irq_event(struct drm_device *dev)
>
> old_status = connector->status;
>
> - connector->status = connector->funcs->detect(connector, false);
> + connector->status = drm_connector_detect(connector, false);
> DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s\n",
> connector->base.id,
> connector->name,
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> index e1dd75b18118..05a8ee106879 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
> @@ -58,17 +58,10 @@ static void fsl_dcu_drm_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -fsl_dcu_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs fsl_dcu_drm_connector_funcs = {
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> .destroy = fsl_dcu_drm_connector_destroy,
> - .detect = fsl_dcu_drm_connector_detect,
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> index ea733ab5b1e0..5efdb7fbb7ee 100644
> --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
> @@ -387,19 +387,6 @@ static void cdv_intel_lvds_mode_set(struct drm_encoder *encoder,
> }
>
> /**
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status cdv_intel_lvds_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> -/**
> * Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
> */
> static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -521,7 +508,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = cdv_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = cdv_intel_lvds_set_property,
> .destroy = cdv_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> index fd7c91254841..483fdce74e39 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
> @@ -500,19 +500,6 @@ static void psb_intel_lvds_mode_set(struct drm_encoder *encoder,
> }
>
> /*
> - * Detect the LVDS connection.
> - *
> - * This always returns CONNECTOR_STATUS_CONNECTED.
> - * This connector should only have
> - * been set up if the LVDS was actually connected anyway.
> - */
> -static enum drm_connector_status psb_intel_lvds_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> -/*
> * Return the list of DDC modes if available, or the BIOS fixed mode otherwise.
> */
> static int psb_intel_lvds_get_modes(struct drm_connector *connector)
> @@ -643,7 +630,6 @@ const struct drm_connector_helper_funcs
>
> const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = psb_intel_lvds_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .set_property = psb_intel_lvds_set_property,
> .destroy = psb_intel_lvds_destroy,
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> index d1f67a9d4d86..12a18557c5fd 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
> @@ -39,12 +39,6 @@ hibmc_connector_best_encoder(struct drm_connector *connector)
> return drm_encoder_find(connector->dev, connector->encoder_ids[0]);
> }
>
> -static enum drm_connector_status hibmc_connector_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_helper_funcs
> hibmc_connector_helper_funcs = {
> .get_modes = hibmc_connector_get_modes,
> @@ -54,7 +48,6 @@ static const struct drm_connector_helper_funcs
>
> static const struct drm_connector_funcs hibmc_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = hibmc_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 4e0d025490a3..5b72c50d6f76 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -1298,12 +1298,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder,
> }
> }
>
> -static enum drm_connector_status
> -intel_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int intel_dsi_get_modes(struct drm_connector *connector)
> {
> struct intel_connector *intel_connector = to_intel_connector(connector);
> @@ -1407,7 +1401,6 @@ static const struct drm_connector_helper_funcs intel_dsi_connector_helper_funcs
>
> static const struct drm_connector_funcs intel_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = intel_dsi_detect,
> .late_register = intel_connector_register,
> .early_unregister = intel_connector_unregister,
> .destroy = intel_dsi_connector_destroy,
> diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
> index b300998dce7d..516d06490465 100644
> --- a/drivers/gpu/drm/imx/imx-ldb.c
> +++ b/drivers/gpu/drm/imx/imx-ldb.c
> @@ -101,12 +101,6 @@ struct imx_ldb {
> const struct bus_mux *lvds_mux;
> };
>
> -static enum drm_connector_status imx_ldb_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void imx_ldb_ch_set_bus_format(struct imx_ldb_channel *imx_ldb_ch,
> u32 bus_format)
> {
> @@ -397,7 +391,6 @@ static int imx_ldb_encoder_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_ldb_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_ldb_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
> index 8fc088843e55..3b602ee33c44 100644
> --- a/drivers/gpu/drm/imx/imx-tve.c
> +++ b/drivers/gpu/drm/imx/imx-tve.c
> @@ -227,12 +227,6 @@ static int tve_setup_vga(struct imx_tve *tve)
> TVE_TVDAC_TEST_MODE_MASK, 1);
> }
>
> -static enum drm_connector_status imx_tve_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_tve_connector_get_modes(struct drm_connector *connector)
> {
> struct imx_tve *tve = con_to_tve(connector);
> @@ -352,7 +346,6 @@ static int imx_tve_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_tve_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_tve_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
> index d796ada2a47a..8582a83c0d9b 100644
> --- a/drivers/gpu/drm/imx/parallel-display.c
> +++ b/drivers/gpu/drm/imx/parallel-display.c
> @@ -49,12 +49,6 @@ static inline struct imx_parallel_display *enc_to_imxpd(struct drm_encoder *e)
> return container_of(e, struct imx_parallel_display, encoder);
> }
>
> -static enum drm_connector_status imx_pd_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int imx_pd_connector_get_modes(struct drm_connector *connector)
> {
> struct imx_parallel_display *imxpd = con_to_imxpd(connector);
> @@ -143,7 +137,6 @@ static int imx_pd_encoder_atomic_check(struct drm_encoder *encoder,
> static const struct drm_connector_funcs imx_pd_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = imx_pd_connector_detect,
> .destroy = imx_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index 28b2044ed9f2..30027b26a59f 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -562,12 +562,6 @@ static void mtk_dsi_encoder_enable(struct drm_encoder *encoder)
> mtk_output_dsi_enable(dsi);
> }
>
> -static enum drm_connector_status mtk_dsi_connector_detect(
> - struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int mtk_dsi_connector_get_modes(struct drm_connector *connector)
> {
> struct mtk_dsi *dsi = connector_to_dsi(connector);
> @@ -584,7 +578,6 @@ static const struct drm_encoder_helper_funcs mtk_dsi_encoder_helper_funcs = {
>
> static const struct drm_connector_funcs mtk_dsi_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = mtk_dsi_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
> index 6b21cb27e1cc..3a03ac4045d8 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> @@ -1658,12 +1658,6 @@ static struct drm_encoder *mga_connector_best_encoder(struct drm_connector
> return NULL;
> }
>
> -static enum drm_connector_status mga_vga_detect(struct drm_connector
> - *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void mga_connector_destroy(struct drm_connector *connector)
> {
> struct mga_connector *mga_connector = to_mga_connector(connector);
> @@ -1680,7 +1674,6 @@ static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs =
>
> static const struct drm_connector_funcs mga_vga_connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = mga_vga_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = mga_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> index ee87494f9218..ee91481131ad 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
> @@ -37,12 +37,6 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
> .get_modes = rcar_du_lvds_connector_get_modes,
> };
>
> -static enum drm_connector_status
> -rcar_du_lvds_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
> {
> struct rcar_du_connector *rcon = to_rcar_connector(connector);
> @@ -54,7 +48,6 @@ static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .reset = drm_atomic_helper_connector_reset,
> - .detect = rcar_du_lvds_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = rcar_du_lvds_connector_destroy,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> index ca22e5ee89ca..d9aa382bb629 100644
> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c
> @@ -969,12 +969,6 @@ static struct drm_connector_helper_funcs dw_mipi_dsi_connector_helper_funcs = {
> .mode_valid = dw_mipi_dsi_mode_valid,
> };
>
> -static enum drm_connector_status
> -dw_mipi_dsi_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
> {
> drm_connector_unregister(connector);
> @@ -984,7 +978,6 @@ static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector)
> static struct drm_connector_funcs dw_mipi_dsi_atomic_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = dw_mipi_dsi_detect,
> .destroy = dw_mipi_dsi_drm_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> index 6547b1db460a..dddbdd62bed0 100644
> --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
> @@ -669,15 +669,8 @@ static void shmob_drm_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status
> -shmob_drm_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static const struct drm_connector_funcs connector_funcs = {
> .dpms = drm_helper_connector_dpms,
> - .detect = shmob_drm_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = shmob_drm_connector_destroy,
> };
> diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
> index e7c243f70870..96f336dd0e29 100644
> --- a/drivers/gpu/drm/sti/sti_hda.c
> +++ b/drivers/gpu/drm/sti/sti_hda.c
> @@ -642,12 +642,6 @@ struct drm_connector_helper_funcs sti_hda_connector_helper_funcs = {
> .mode_valid = sti_hda_connector_mode_valid,
> };
>
> -static enum drm_connector_status
> -sti_hda_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int sti_hda_late_register(struct drm_connector *connector)
> {
> struct sti_hda_connector *hda_connector
> @@ -665,7 +659,6 @@ static int sti_hda_late_register(struct drm_connector *connector)
> static const struct drm_connector_funcs sti_hda_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> .fill_modes = drm_helper_probe_single_connector_modes,
> - .detect = sti_hda_connector_detect,
> .destroy = drm_connector_cleanup,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> index c3ff10f559cc..5380085b3c06 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c
> @@ -110,12 +110,6 @@ static struct drm_connector_helper_funcs sun4i_rgb_con_helper_funcs = {
> .mode_valid = sun4i_rgb_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_rgb_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_rgb_connector_destroy(struct drm_connector *connector)
> {
> @@ -129,7 +123,6 @@ sun4i_rgb_connector_destroy(struct drm_connector *connector)
>
> static struct drm_connector_funcs sun4i_rgb_con_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_rgb_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = sun4i_rgb_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c
> index d430b331fed5..c6f47222e8fc 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c
> @@ -537,12 +537,6 @@ static struct drm_connector_helper_funcs sun4i_tv_comp_connector_helper_funcs =
> .mode_valid = sun4i_tv_comp_mode_valid,
> };
>
> -static enum drm_connector_status
> -sun4i_tv_comp_connector_detect(struct drm_connector *connector, bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static void
> sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
> {
> @@ -551,7 +545,6 @@ sun4i_tv_comp_connector_destroy(struct drm_connector *connector)
>
> static struct drm_connector_funcs sun4i_tv_comp_connector_funcs = {
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = sun4i_tv_comp_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .destroy = sun4i_tv_comp_connector_destroy,
> .reset = drm_atomic_helper_connector_reset,
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> index 2134bb20fbe9..e634201db821 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
> @@ -144,13 +144,6 @@ static void panel_connector_destroy(struct drm_connector *connector)
> drm_connector_cleanup(connector);
> }
>
> -static enum drm_connector_status panel_connector_detect(
> - struct drm_connector *connector,
> - bool force)
> -{
> - return connector_status_connected;
> -}
> -
> static int panel_connector_get_modes(struct drm_connector *connector)
> {
> struct drm_device *dev = connector->dev;
> @@ -197,7 +190,6 @@ static struct drm_encoder *panel_connector_best_encoder(
> static const struct drm_connector_funcs panel_connector_funcs = {
> .destroy = panel_connector_destroy,
> .dpms = drm_atomic_helper_connector_dpms,
> - .detect = panel_connector_detect,
> .fill_modes = drm_helper_probe_single_connector_modes,
> .reset = drm_atomic_helper_connector_reset,
> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index e9390b1bd3a4..43b37906e20b 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -264,6 +264,9 @@ struct drm_connector_funcs {
> * connector due to a user request. force can be used by the driver to
> * avoid expensive, destructive operations during automated probing.
> *
> + * This callback is optional, if not implemented the connector will be
> + * considered as always being attached.
> + *
> * FIXME:
> *
> * Note that this hook is only called by the probe helper. It's not in
> --
> Regards,
>
> Laurent Pinchart
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] drm: Make the connector .detect() callback optional
2016-11-29 21:09 ` Laurent Pinchart
@ 2016-12-01 18:15 ` Sean Paul
0 siblings, 0 replies; 11+ messages in thread
From: Sean Paul @ 2016-12-01 18:15 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Laurent Pinchart, Alison Wang, Alexey Brodkin, dri-devel,
Xinliang Liu, Alex Deucher, Jyri Sarha, Rongrong Zou,
Daniel Vetter, Maxime Ripard, Vincent Abriou,
Christian König
On Tue, Nov 29, 2016 at 4:09 PM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> Hi Sean,
>
> On Tuesday 29 Nov 2016 16:07:02 Sean Paul wrote:
>> On Tue, Nov 29, 2016 at 3:56 PM, Laurent Pinchart wrote:
>> > Many drivers (21 to be exact) create connectors that are always
>> > connected (for instance to an LVDS or DSI panel). Instead of forcing
>> > them to implement a dummy .detect() handler, make the callback optional
>> > and consider the connector as always connected in that case.
>>
>> I wonder if we should be a little bit smarter about this and default
>> connected only for built-in types (LVDS, edp, DSI), and return unknown
>> for others?
>
> I've deliberately decided not to change the behaviour of any driver in this
> patch to ease review and merge. We can change (a.k.a. improve :-)) the logic
> on top of this. Patches are welcome ;-)
Yeah, that's fair. I took a quick look to verify whether or not all of
the instances were already attached to a built-in, but that turned out
to be trickier than I anticipated.
I've merged it (with the Acks) to misc.
Thanks,
Sean
>
>> > Signed-off-by: Laurent Pinchart
>> > <laurent.pinchart+renesas@ideasonboard.com>
>> > ---
>> >
>> > drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 7 -------
>> > drivers/gpu/drm/arc/arcpgu_sim.c | 7 -------
>> > drivers/gpu/drm/ast/ast_mode.c | 7 -------
>> > drivers/gpu/drm/bochs/bochs_kms.c | 7 -------
>> > drivers/gpu/drm/bridge/nxp-ptn3460.c | 7 -------
>> > drivers/gpu/drm/bridge/parade-ps8622.c | 7 -------
>> > drivers/gpu/drm/bridge/tc358767.c | 7 -------
>> > drivers/gpu/drm/cirrus/cirrus_mode.c | 7 -------
>> > drivers/gpu/drm/drm_probe_helper.c | 14 +++++++++++---
>> > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 7 -------
>> > drivers/gpu/drm/gma500/cdv_intel_lvds.c | 14 --------------
>> > drivers/gpu/drm/gma500/psb_intel_lvds.c | 14 --------------
>> > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c | 7 -------
>> > drivers/gpu/drm/i915/intel_dsi.c | 7 -------
>> > drivers/gpu/drm/imx/imx-ldb.c | 7 -------
>> > drivers/gpu/drm/imx/imx-tve.c | 7 -------
>> > drivers/gpu/drm/imx/parallel-display.c | 7 -------
>> > drivers/gpu/drm/mediatek/mtk_dsi.c | 7 -------
>> > drivers/gpu/drm/mgag200/mgag200_mode.c | 7 -------
>> > drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 7 -------
>> > drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 7 -------
>> > drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 7 -------
>> > drivers/gpu/drm/sti/sti_hda.c | 7 -------
>> > drivers/gpu/drm/sun4i/sun4i_rgb.c | 7 -------
>> > drivers/gpu/drm/sun4i/sun4i_tv.c | 7 -------
>> > drivers/gpu/drm/tilcdc/tilcdc_panel.c | 8 --------
>> > include/drm/drm_connector.h | 3 +++
>> > 27 files changed, 14 insertions(+), 193 deletions(-)
>
> --
> Regards,
>
> Laurent Pinchart
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-12-01 18:15 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-29 20:56 [PATCH] drm: Make the connector .detect() callback optional Laurent Pinchart
2016-11-29 21:02 ` Maxime Ripard
2016-11-29 21:07 ` Sean Paul
2016-11-29 21:09 ` Laurent Pinchart
2016-12-01 18:15 ` Sean Paul
2016-11-29 21:23 ` Deucher, Alexander
2016-11-29 21:24 ` Jyri Sarha
2016-11-30 8:26 ` Jani Nikula
2016-11-30 9:37 ` Alexey Brodkin
2016-11-30 9:51 ` Philipp Zabel
2016-11-30 15:27 ` Vincent ABRIOU
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.