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>
This commit is contained in:
parent
c2d789fb50
commit
f35a2a9910
|
@ -72,7 +72,7 @@ int drm_encoder_register_all(struct drm_device *dev)
|
|||
int ret = 0;
|
||||
|
||||
drm_for_each_encoder(encoder, dev) {
|
||||
if (encoder->funcs->late_register)
|
||||
if (encoder->funcs && encoder->funcs->late_register)
|
||||
ret = encoder->funcs->late_register(encoder);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -86,7 +86,7 @@ void drm_encoder_unregister_all(struct drm_device *dev)
|
|||
struct drm_encoder *encoder;
|
||||
|
||||
drm_for_each_encoder(encoder, dev) {
|
||||
if (encoder->funcs->early_unregister)
|
||||
if (encoder->funcs && encoder->funcs->early_unregister)
|
||||
encoder->funcs->early_unregister(encoder);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -195,7 +195,7 @@ void drm_mode_config_reset(struct drm_device *dev)
|
|||
crtc->funcs->reset(crtc);
|
||||
|
||||
drm_for_each_encoder(encoder, dev)
|
||||
if (encoder->funcs->reset)
|
||||
if (encoder->funcs && encoder->funcs->reset)
|
||||
encoder->funcs->reset(encoder);
|
||||
|
||||
drm_connector_list_iter_begin(dev, &conn_iter);
|
||||
|
|
|
@ -89,7 +89,7 @@ struct drm_encoder_funcs {
|
|||
* @head: list management
|
||||
* @base: base KMS object
|
||||
* @name: human readable name, can be overwritten by the driver
|
||||
* @funcs: control functions
|
||||
* @funcs: control functions, can be NULL for simple managed encoders
|
||||
* @helper_private: mid-layer private data
|
||||
*
|
||||
* CRTCs drive pixels to encoders, which convert them into signals
|
||||
|
|
Loading…
Reference in New Issue