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

drm/doc: Improve docs around connector (un)registration

Current code is quite a mess unfortunately, so also add a todo.rst
entry to maybe fix it up eventually.

Cc: Michel Dänzer <michel@daenzer.net>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190917120936.7501-2-daniel.vetter@ffwll.ch

+28 -2
+12
Documentation/gpu/todo.rst
··· 284 284 removed: drm_fb_helper_single_add_all_connectors(), 285 285 drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector(). 286 286 287 + connector register/unregister fixes 288 + ----------------------------------- 289 + 290 + - For most connectors it's a no-op to call drm_connector_register/unregister 291 + directly from driver code, drm_dev_register/unregister take care of this 292 + already. We can remove all of them. 293 + 294 + - For dp drivers it's a bit more a mess, since we need the connector to be 295 + registered when calling drm_dp_aux_register. Fix this by instead calling 296 + drm_dp_aux_init, and moving the actual registering into a late_register 297 + callback as recommended in the kerneldoc. 298 + 287 299 Core refactorings 288 300 ================= 289 301
+8 -2
drivers/gpu/drm/drm_connector.c
··· 467 467 * drm_connector_register - register a connector 468 468 * @connector: the connector to register 469 469 * 470 - * Register userspace interfaces for a connector 470 + * Register userspace interfaces for a connector. Only call this for connectors 471 + * which can be hotplugged after drm_dev_register() has been called already, 472 + * e.g. DP MST connectors. All other connectors will be registered automatically 473 + * when calling drm_dev_register(). 471 474 * 472 475 * Returns: 473 476 * Zero on success, error code on failure. ··· 516 513 * drm_connector_unregister - unregister a connector 517 514 * @connector: the connector to unregister 518 515 * 519 - * Unregister userspace interfaces for a connector 516 + * Unregister userspace interfaces for a connector. Only call this for 517 + * connectors which have registered explicitly by calling drm_dev_register(), 518 + * since connectors are unregistered automatically when drm_dev_unregister() is 519 + * called. 520 520 */ 521 521 void drm_connector_unregister(struct drm_connector *connector) 522 522 {
+8
drivers/gpu/drm/drm_dp_helper.c
··· 1109 1109 * @aux: DisplayPort AUX channel 1110 1110 * 1111 1111 * Automatically calls drm_dp_aux_init() if this hasn't been done yet. 1112 + * This should only be called when the underlying &struct drm_connector is 1113 + * initialiazed already. Therefore the best place to call this is from 1114 + * &drm_connector_funcs.late_register. Not that drivers which don't follow this 1115 + * will Oops when CONFIG_DRM_DP_AUX_CHARDEV is enabled. 1116 + * 1117 + * Drivers which need to use the aux channel before that point (e.g. at driver 1118 + * load time, before drm_dev_register() has been called) need to call 1119 + * drm_dp_aux_init(). 1112 1120 * 1113 1121 * Returns 0 on success or a negative error code on failure. 1114 1122 */