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

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>

+4 -4
+2 -2
drivers/gpu/drm/drm_encoder.c
··· 72 72 int ret = 0; 73 73 74 74 drm_for_each_encoder(encoder, dev) { 75 - if (encoder->funcs->late_register) 75 + if (encoder->funcs && encoder->funcs->late_register) 76 76 ret = encoder->funcs->late_register(encoder); 77 77 if (ret) 78 78 return ret; ··· 86 86 struct drm_encoder *encoder; 87 87 88 88 drm_for_each_encoder(encoder, dev) { 89 - if (encoder->funcs->early_unregister) 89 + if (encoder->funcs && encoder->funcs->early_unregister) 90 90 encoder->funcs->early_unregister(encoder); 91 91 } 92 92 }
+1 -1
drivers/gpu/drm/drm_mode_config.c
··· 195 195 crtc->funcs->reset(crtc); 196 196 197 197 drm_for_each_encoder(encoder, dev) 198 - if (encoder->funcs->reset) 198 + if (encoder->funcs && encoder->funcs->reset) 199 199 encoder->funcs->reset(encoder); 200 200 201 201 drm_connector_list_iter_begin(dev, &conn_iter);
+1 -1
include/drm/drm_encoder.h
··· 89 89 * @head: list management 90 90 * @base: base KMS object 91 91 * @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 93 93 * @helper_private: mid-layer private data 94 94 * 95 95 * CRTCs drive pixels to encoders, which convert them into signals