Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Jyri Sarha <jsarha@ti.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
Acked-by: Vincent Abriou <vincent.abriou@st.com>
Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
[seanpaul fixed small conflict in rcar-du/rcar_du_lvdscon.c]
Signed-off-by: Sean Paul <seanpaul@chromium.org>

authored by

Laurent Pinchart and committed by
Sean Paul
949f0886 87291e5d

+14 -193
-7
drivers/gpu/drm/amd/amdgpu/dce_virtual.c
··· 429 429 return 0; 430 430 } 431 431 432 - static enum drm_connector_status 433 - dce_virtual_detect(struct drm_connector *connector, bool force) 434 - { 435 - return connector_status_connected; 436 - } 437 - 438 432 static int 439 433 dce_virtual_set_property(struct drm_connector *connector, 440 434 struct drm_property *property, ··· 457 463 458 464 static const struct drm_connector_funcs dce_virtual_connector_funcs = { 459 465 .dpms = dce_virtual_dpms, 460 - .detect = dce_virtual_detect, 461 466 .fill_modes = drm_helper_probe_single_connector_modes, 462 467 .set_property = dce_virtual_set_property, 463 468 .destroy = dce_virtual_destroy,
-7
drivers/gpu/drm/arc/arcpgu_sim.c
··· 41 41 return count; 42 42 } 43 43 44 - static enum drm_connector_status 45 - arcpgu_drm_connector_detect(struct drm_connector *connector, bool force) 46 - { 47 - return connector_status_connected; 48 - } 49 - 50 44 static void arcpgu_drm_connector_destroy(struct drm_connector *connector) 51 45 { 52 46 drm_connector_unregister(connector); ··· 55 61 static const struct drm_connector_funcs arcpgu_drm_connector_funcs = { 56 62 .dpms = drm_helper_connector_dpms, 57 63 .reset = drm_atomic_helper_connector_reset, 58 - .detect = arcpgu_drm_connector_detect, 59 64 .fill_modes = drm_helper_probe_single_connector_modes, 60 65 .destroy = arcpgu_drm_connector_destroy, 61 66 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/ast/ast_mode.c
··· 839 839 kfree(connector); 840 840 } 841 841 842 - static enum drm_connector_status 843 - ast_connector_detect(struct drm_connector *connector, bool force) 844 - { 845 - return connector_status_connected; 846 - } 847 - 848 842 static const struct drm_connector_helper_funcs ast_connector_helper_funcs = { 849 843 .mode_valid = ast_mode_valid, 850 844 .get_modes = ast_get_modes, ··· 847 853 848 854 static const struct drm_connector_funcs ast_connector_funcs = { 849 855 .dpms = drm_helper_connector_dpms, 850 - .detect = ast_connector_detect, 851 856 .fill_modes = drm_helper_probe_single_connector_modes, 852 857 .destroy = ast_connector_destroy, 853 858 };
-7
drivers/gpu/drm/bochs/bochs_kms.c
··· 216 216 return NULL; 217 217 } 218 218 219 - static enum drm_connector_status bochs_connector_detect(struct drm_connector 220 - *connector, bool force) 221 - { 222 - return connector_status_connected; 223 - } 224 - 225 219 static const struct drm_connector_helper_funcs bochs_connector_connector_helper_funcs = { 226 220 .get_modes = bochs_connector_get_modes, 227 221 .mode_valid = bochs_connector_mode_valid, ··· 224 230 225 231 static const struct drm_connector_funcs bochs_connector_connector_funcs = { 226 232 .dpms = drm_helper_connector_dpms, 227 - .detect = bochs_connector_detect, 228 233 .fill_modes = drm_helper_probe_single_connector_modes, 229 234 .destroy = drm_connector_cleanup, 230 235 };
-7
drivers/gpu/drm/bridge/nxp-ptn3460.c
··· 239 239 .get_modes = ptn3460_get_modes, 240 240 }; 241 241 242 - static enum drm_connector_status ptn3460_detect(struct drm_connector *connector, 243 - bool force) 244 - { 245 - return connector_status_connected; 246 - } 247 - 248 242 static const struct drm_connector_funcs ptn3460_connector_funcs = { 249 243 .dpms = drm_atomic_helper_connector_dpms, 250 244 .fill_modes = drm_helper_probe_single_connector_modes, 251 - .detect = ptn3460_detect, 252 245 .destroy = drm_connector_cleanup, 253 246 .reset = drm_atomic_helper_connector_reset, 254 247 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/bridge/parade-ps8622.c
··· 477 477 .get_modes = ps8622_get_modes, 478 478 }; 479 479 480 - static enum drm_connector_status ps8622_detect(struct drm_connector *connector, 481 - bool force) 482 - { 483 - return connector_status_connected; 484 - } 485 - 486 480 static const struct drm_connector_funcs ps8622_connector_funcs = { 487 481 .dpms = drm_atomic_helper_connector_dpms, 488 482 .fill_modes = drm_helper_probe_single_connector_modes, 489 - .detect = ps8622_detect, 490 483 .destroy = drm_connector_cleanup, 491 484 .reset = drm_atomic_helper_connector_reset, 492 485 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/bridge/tc358767.c
··· 1038 1038 return ret; 1039 1039 } 1040 1040 1041 - static enum drm_connector_status 1042 - tc_connector_detect(struct drm_connector *connector, bool force) 1043 - { 1044 - return connector_status_connected; 1045 - } 1046 - 1047 1041 static void tc_bridge_pre_enable(struct drm_bridge *bridge) 1048 1042 { 1049 1043 struct tc_data *tc = bridge_to_tc(bridge); ··· 1162 1168 static const struct drm_connector_funcs tc_connector_funcs = { 1163 1169 .dpms = drm_atomic_helper_connector_dpms, 1164 1170 .fill_modes = drm_helper_probe_single_connector_modes, 1165 - .detect = tc_connector_detect, 1166 1171 .destroy = drm_connector_cleanup, 1167 1172 .reset = drm_atomic_helper_connector_reset, 1168 1173 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/cirrus/cirrus_mode.c
··· 498 498 return NULL; 499 499 } 500 500 501 - static enum drm_connector_status cirrus_vga_detect(struct drm_connector 502 - *connector, bool force) 503 - { 504 - return connector_status_connected; 505 - } 506 - 507 501 static void cirrus_connector_destroy(struct drm_connector *connector) 508 502 { 509 503 drm_connector_cleanup(connector); ··· 511 517 512 518 static const struct drm_connector_funcs cirrus_vga_connector_funcs = { 513 519 .dpms = drm_helper_connector_dpms, 514 - .detect = cirrus_vga_detect, 515 520 .fill_modes = drm_helper_probe_single_connector_modes, 516 521 .destroy = cirrus_connector_destroy, 517 522 };
+11 -3
drivers/gpu/drm/drm_probe_helper.c
··· 152 152 } 153 153 EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked); 154 154 155 + static enum drm_connector_status 156 + drm_connector_detect(struct drm_connector *connector, bool force) 157 + { 158 + return connector->funcs->detect ? 159 + connector->funcs->detect(connector, force) : 160 + connector_status_connected; 161 + } 162 + 155 163 /** 156 164 * drm_helper_probe_single_connector_modes - get complete set of display modes 157 165 * @connector: connector to probe ··· 247 239 if (connector->funcs->force) 248 240 connector->funcs->force(connector); 249 241 } else { 250 - connector->status = connector->funcs->detect(connector, true); 242 + connector->status = drm_connector_detect(connector, true); 251 243 } 252 244 253 245 /* ··· 413 405 414 406 repoll = true; 415 407 416 - connector->status = connector->funcs->detect(connector, false); 408 + connector->status = drm_connector_detect(connector, false); 417 409 if (old_status != connector->status) { 418 410 const char *old, *new; 419 411 ··· 573 565 574 566 old_status = connector->status; 575 567 576 - connector->status = connector->funcs->detect(connector, false); 568 + connector->status = drm_connector_detect(connector, false); 577 569 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s\n", 578 570 connector->base.id, 579 571 connector->name,
-7
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c
··· 58 58 drm_connector_cleanup(connector); 59 59 } 60 60 61 - static enum drm_connector_status 62 - fsl_dcu_drm_connector_detect(struct drm_connector *connector, bool force) 63 - { 64 - return connector_status_connected; 65 - } 66 - 67 61 static const struct drm_connector_funcs fsl_dcu_drm_connector_funcs = { 68 62 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, 69 63 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, 70 64 .destroy = fsl_dcu_drm_connector_destroy, 71 - .detect = fsl_dcu_drm_connector_detect, 72 65 .dpms = drm_atomic_helper_connector_dpms, 73 66 .fill_modes = drm_helper_probe_single_connector_modes, 74 67 .reset = drm_atomic_helper_connector_reset,
-14
drivers/gpu/drm/gma500/cdv_intel_lvds.c
··· 387 387 } 388 388 389 389 /** 390 - * Detect the LVDS connection. 391 - * 392 - * This always returns CONNECTOR_STATUS_CONNECTED. 393 - * This connector should only have 394 - * been set up if the LVDS was actually connected anyway. 395 - */ 396 - static enum drm_connector_status cdv_intel_lvds_detect( 397 - struct drm_connector *connector, bool force) 398 - { 399 - return connector_status_connected; 400 - } 401 - 402 - /** 403 390 * Return the list of DDC modes if available, or the BIOS fixed mode otherwise. 404 391 */ 405 392 static int cdv_intel_lvds_get_modes(struct drm_connector *connector) ··· 508 521 509 522 static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = { 510 523 .dpms = drm_helper_connector_dpms, 511 - .detect = cdv_intel_lvds_detect, 512 524 .fill_modes = drm_helper_probe_single_connector_modes, 513 525 .set_property = cdv_intel_lvds_set_property, 514 526 .destroy = cdv_intel_lvds_destroy,
-14
drivers/gpu/drm/gma500/psb_intel_lvds.c
··· 500 500 } 501 501 502 502 /* 503 - * Detect the LVDS connection. 504 - * 505 - * This always returns CONNECTOR_STATUS_CONNECTED. 506 - * This connector should only have 507 - * been set up if the LVDS was actually connected anyway. 508 - */ 509 - static enum drm_connector_status psb_intel_lvds_detect(struct drm_connector 510 - *connector, bool force) 511 - { 512 - return connector_status_connected; 513 - } 514 - 515 - /* 516 503 * Return the list of DDC modes if available, or the BIOS fixed mode otherwise. 517 504 */ 518 505 static int psb_intel_lvds_get_modes(struct drm_connector *connector) ··· 630 643 631 644 const struct drm_connector_funcs psb_intel_lvds_connector_funcs = { 632 645 .dpms = drm_helper_connector_dpms, 633 - .detect = psb_intel_lvds_detect, 634 646 .fill_modes = drm_helper_probe_single_connector_modes, 635 647 .set_property = psb_intel_lvds_set_property, 636 648 .destroy = psb_intel_lvds_destroy,
-7
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_vdac.c
··· 39 39 return drm_encoder_find(connector->dev, connector->encoder_ids[0]); 40 40 } 41 41 42 - static enum drm_connector_status hibmc_connector_detect(struct drm_connector 43 - *connector, bool force) 44 - { 45 - return connector_status_connected; 46 - } 47 - 48 42 static const struct drm_connector_helper_funcs 49 43 hibmc_connector_helper_funcs = { 50 44 .get_modes = hibmc_connector_get_modes, ··· 48 54 49 55 static const struct drm_connector_funcs hibmc_connector_funcs = { 50 56 .dpms = drm_atomic_helper_connector_dpms, 51 - .detect = hibmc_connector_detect, 52 57 .fill_modes = drm_helper_probe_single_connector_modes, 53 58 .destroy = drm_connector_cleanup, 54 59 .reset = drm_atomic_helper_connector_reset,
-7
drivers/gpu/drm/i915/intel_dsi.c
··· 1298 1298 } 1299 1299 } 1300 1300 1301 - static enum drm_connector_status 1302 - intel_dsi_detect(struct drm_connector *connector, bool force) 1303 - { 1304 - return connector_status_connected; 1305 - } 1306 - 1307 1301 static int intel_dsi_get_modes(struct drm_connector *connector) 1308 1302 { 1309 1303 struct intel_connector *intel_connector = to_intel_connector(connector); ··· 1401 1407 1402 1408 static const struct drm_connector_funcs intel_dsi_connector_funcs = { 1403 1409 .dpms = drm_atomic_helper_connector_dpms, 1404 - .detect = intel_dsi_detect, 1405 1410 .late_register = intel_connector_register, 1406 1411 .early_unregister = intel_connector_unregister, 1407 1412 .destroy = intel_dsi_connector_destroy,
-7
drivers/gpu/drm/imx/imx-ldb.c
··· 101 101 const struct bus_mux *lvds_mux; 102 102 }; 103 103 104 - static enum drm_connector_status imx_ldb_connector_detect( 105 - struct drm_connector *connector, bool force) 106 - { 107 - return connector_status_connected; 108 - } 109 - 110 104 static void imx_ldb_ch_set_bus_format(struct imx_ldb_channel *imx_ldb_ch, 111 105 u32 bus_format) 112 106 { ··· 391 397 static const struct drm_connector_funcs imx_ldb_connector_funcs = { 392 398 .dpms = drm_atomic_helper_connector_dpms, 393 399 .fill_modes = drm_helper_probe_single_connector_modes, 394 - .detect = imx_ldb_connector_detect, 395 400 .destroy = imx_drm_connector_destroy, 396 401 .reset = drm_atomic_helper_connector_reset, 397 402 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/imx/imx-tve.c
··· 227 227 TVE_TVDAC_TEST_MODE_MASK, 1); 228 228 } 229 229 230 - static enum drm_connector_status imx_tve_connector_detect( 231 - struct drm_connector *connector, bool force) 232 - { 233 - return connector_status_connected; 234 - } 235 - 236 230 static int imx_tve_connector_get_modes(struct drm_connector *connector) 237 231 { 238 232 struct imx_tve *tve = con_to_tve(connector); ··· 346 352 static const struct drm_connector_funcs imx_tve_connector_funcs = { 347 353 .dpms = drm_atomic_helper_connector_dpms, 348 354 .fill_modes = drm_helper_probe_single_connector_modes, 349 - .detect = imx_tve_connector_detect, 350 355 .destroy = imx_drm_connector_destroy, 351 356 .reset = drm_atomic_helper_connector_reset, 352 357 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/imx/parallel-display.c
··· 49 49 return container_of(e, struct imx_parallel_display, encoder); 50 50 } 51 51 52 - static enum drm_connector_status imx_pd_connector_detect( 53 - struct drm_connector *connector, bool force) 54 - { 55 - return connector_status_connected; 56 - } 57 - 58 52 static int imx_pd_connector_get_modes(struct drm_connector *connector) 59 53 { 60 54 struct imx_parallel_display *imxpd = con_to_imxpd(connector); ··· 137 143 static const struct drm_connector_funcs imx_pd_connector_funcs = { 138 144 .dpms = drm_atomic_helper_connector_dpms, 139 145 .fill_modes = drm_helper_probe_single_connector_modes, 140 - .detect = imx_pd_connector_detect, 141 146 .destroy = imx_drm_connector_destroy, 142 147 .reset = drm_atomic_helper_connector_reset, 143 148 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/mediatek/mtk_dsi.c
··· 562 562 mtk_output_dsi_enable(dsi); 563 563 } 564 564 565 - static enum drm_connector_status mtk_dsi_connector_detect( 566 - struct drm_connector *connector, bool force) 567 - { 568 - return connector_status_connected; 569 - } 570 - 571 565 static int mtk_dsi_connector_get_modes(struct drm_connector *connector) 572 566 { 573 567 struct mtk_dsi *dsi = connector_to_dsi(connector); ··· 578 584 579 585 static const struct drm_connector_funcs mtk_dsi_connector_funcs = { 580 586 .dpms = drm_atomic_helper_connector_dpms, 581 - .detect = mtk_dsi_connector_detect, 582 587 .fill_modes = drm_helper_probe_single_connector_modes, 583 588 .destroy = drm_connector_cleanup, 584 589 .reset = drm_atomic_helper_connector_reset,
-7
drivers/gpu/drm/mgag200/mgag200_mode.c
··· 1658 1658 return NULL; 1659 1659 } 1660 1660 1661 - static enum drm_connector_status mga_vga_detect(struct drm_connector 1662 - *connector, bool force) 1663 - { 1664 - return connector_status_connected; 1665 - } 1666 - 1667 1661 static void mga_connector_destroy(struct drm_connector *connector) 1668 1662 { 1669 1663 struct mga_connector *mga_connector = to_mga_connector(connector); ··· 1674 1680 1675 1681 static const struct drm_connector_funcs mga_vga_connector_funcs = { 1676 1682 .dpms = drm_helper_connector_dpms, 1677 - .detect = mga_vga_detect, 1678 1683 .fill_modes = drm_helper_probe_single_connector_modes, 1679 1684 .destroy = mga_connector_destroy, 1680 1685 };
-7
drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
··· 61 61 .get_modes = rcar_du_lvds_connector_get_modes, 62 62 }; 63 63 64 - static enum drm_connector_status 65 - rcar_du_lvds_connector_detect(struct drm_connector *connector, bool force) 66 - { 67 - return connector_status_connected; 68 - } 69 - 70 64 static const struct drm_connector_funcs connector_funcs = { 71 65 .dpms = drm_atomic_helper_connector_dpms, 72 66 .reset = drm_atomic_helper_connector_reset, 73 - .detect = rcar_du_lvds_connector_detect, 74 67 .fill_modes = drm_helper_probe_single_connector_modes, 75 68 .destroy = drm_connector_cleanup, 76 69 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/rockchip/dw-mipi-dsi.c
··· 969 969 .mode_valid = dw_mipi_dsi_mode_valid, 970 970 }; 971 971 972 - static enum drm_connector_status 973 - dw_mipi_dsi_detect(struct drm_connector *connector, bool force) 974 - { 975 - return connector_status_connected; 976 - } 977 - 978 972 static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector) 979 973 { 980 974 drm_connector_unregister(connector); ··· 978 984 static struct drm_connector_funcs dw_mipi_dsi_atomic_connector_funcs = { 979 985 .dpms = drm_atomic_helper_connector_dpms, 980 986 .fill_modes = drm_helper_probe_single_connector_modes, 981 - .detect = dw_mipi_dsi_detect, 982 987 .destroy = dw_mipi_dsi_drm_connector_destroy, 983 988 .reset = drm_atomic_helper_connector_reset, 984 989 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/shmobile/shmob_drm_crtc.c
··· 669 669 drm_connector_cleanup(connector); 670 670 } 671 671 672 - static enum drm_connector_status 673 - shmob_drm_connector_detect(struct drm_connector *connector, bool force) 674 - { 675 - return connector_status_connected; 676 - } 677 - 678 672 static const struct drm_connector_funcs connector_funcs = { 679 673 .dpms = drm_helper_connector_dpms, 680 - .detect = shmob_drm_connector_detect, 681 674 .fill_modes = drm_helper_probe_single_connector_modes, 682 675 .destroy = shmob_drm_connector_destroy, 683 676 };
-7
drivers/gpu/drm/sti/sti_hda.c
··· 642 642 .mode_valid = sti_hda_connector_mode_valid, 643 643 }; 644 644 645 - static enum drm_connector_status 646 - sti_hda_connector_detect(struct drm_connector *connector, bool force) 647 - { 648 - return connector_status_connected; 649 - } 650 - 651 645 static int sti_hda_late_register(struct drm_connector *connector) 652 646 { 653 647 struct sti_hda_connector *hda_connector ··· 659 665 static const struct drm_connector_funcs sti_hda_connector_funcs = { 660 666 .dpms = drm_atomic_helper_connector_dpms, 661 667 .fill_modes = drm_helper_probe_single_connector_modes, 662 - .detect = sti_hda_connector_detect, 663 668 .destroy = drm_connector_cleanup, 664 669 .reset = drm_atomic_helper_connector_reset, 665 670 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-7
drivers/gpu/drm/sun4i/sun4i_rgb.c
··· 110 110 .mode_valid = sun4i_rgb_mode_valid, 111 111 }; 112 112 113 - static enum drm_connector_status 114 - sun4i_rgb_connector_detect(struct drm_connector *connector, bool force) 115 - { 116 - return connector_status_connected; 117 - } 118 - 119 113 static void 120 114 sun4i_rgb_connector_destroy(struct drm_connector *connector) 121 115 { ··· 123 129 124 130 static struct drm_connector_funcs sun4i_rgb_con_funcs = { 125 131 .dpms = drm_atomic_helper_connector_dpms, 126 - .detect = sun4i_rgb_connector_detect, 127 132 .fill_modes = drm_helper_probe_single_connector_modes, 128 133 .destroy = sun4i_rgb_connector_destroy, 129 134 .reset = drm_atomic_helper_connector_reset,
-7
drivers/gpu/drm/sun4i/sun4i_tv.c
··· 537 537 .mode_valid = sun4i_tv_comp_mode_valid, 538 538 }; 539 539 540 - static enum drm_connector_status 541 - sun4i_tv_comp_connector_detect(struct drm_connector *connector, bool force) 542 - { 543 - return connector_status_connected; 544 - } 545 - 546 540 static void 547 541 sun4i_tv_comp_connector_destroy(struct drm_connector *connector) 548 542 { ··· 545 551 546 552 static struct drm_connector_funcs sun4i_tv_comp_connector_funcs = { 547 553 .dpms = drm_atomic_helper_connector_dpms, 548 - .detect = sun4i_tv_comp_connector_detect, 549 554 .fill_modes = drm_helper_probe_single_connector_modes, 550 555 .destroy = sun4i_tv_comp_connector_destroy, 551 556 .reset = drm_atomic_helper_connector_reset,
-8
drivers/gpu/drm/tilcdc/tilcdc_panel.c
··· 144 144 drm_connector_cleanup(connector); 145 145 } 146 146 147 - static enum drm_connector_status panel_connector_detect( 148 - struct drm_connector *connector, 149 - bool force) 150 - { 151 - return connector_status_connected; 152 - } 153 - 154 147 static int panel_connector_get_modes(struct drm_connector *connector) 155 148 { 156 149 struct drm_device *dev = connector->dev; ··· 190 197 static const struct drm_connector_funcs panel_connector_funcs = { 191 198 .destroy = panel_connector_destroy, 192 199 .dpms = drm_atomic_helper_connector_dpms, 193 - .detect = panel_connector_detect, 194 200 .fill_modes = drm_helper_probe_single_connector_modes, 195 201 .reset = drm_atomic_helper_connector_reset, 196 202 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
+3
include/drm/drm_connector.h
··· 262 262 * connector due to a user request. force can be used by the driver to 263 263 * avoid expensive, destructive operations during automated probing. 264 264 * 265 + * This callback is optional, if not implemented the connector will be 266 + * considered as always being attached. 267 + * 265 268 * FIXME: 266 269 * 267 270 * Note that this hook is only called by the probe helper. It's not in