Skip to content

Commit f35a2a9

Browse files
committed
drm/encoder: make encoder control functions optional
Simple managed encoders do not require the .destroy callback, make the whole funcs structure optional. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
1 parent c2d789f commit f35a2a9

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

drivers/gpu/drm/drm_encoder.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ int drm_encoder_register_all(struct drm_device *dev)
7272
int ret = 0;
7373

7474
drm_for_each_encoder(encoder, dev) {
75-
if (encoder->funcs->late_register)
75+
if (encoder->funcs && encoder->funcs->late_register)
7676
ret = encoder->funcs->late_register(encoder);
7777
if (ret)
7878
return ret;
@@ -86,7 +86,7 @@ void drm_encoder_unregister_all(struct drm_device *dev)
8686
struct drm_encoder *encoder;
8787

8888
drm_for_each_encoder(encoder, dev) {
89-
if (encoder->funcs->early_unregister)
89+
if (encoder->funcs && encoder->funcs->early_unregister)
9090
encoder->funcs->early_unregister(encoder);
9191
}
9292
}

drivers/gpu/drm/drm_mode_config.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ void drm_mode_config_reset(struct drm_device *dev)
195195
crtc->funcs->reset(crtc);
196196

197197
drm_for_each_encoder(encoder, dev)
198-
if (encoder->funcs->reset)
198+
if (encoder->funcs && encoder->funcs->reset)
199199
encoder->funcs->reset(encoder);
200200

201201
drm_connector_list_iter_begin(dev, &conn_iter);

include/drm/drm_encoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ struct drm_encoder_funcs {
8989
* @head: list management
9090
* @base: base KMS object
9191
* @name: human readable name, can be overwritten by the driver
92-
* @funcs: control functions
92+
* @funcs: control functions, can be NULL for simple managed encoders
9393
* @helper_private: mid-layer private data
9494
*
9595
* CRTCs drive pixels to encoders, which convert them into signals

0 commit comments

Comments
 (0)