Hi Gerd
Am 07.02.20 um 11:33 schrieb Gerd Hoffmann:
+static const struct drm_encoder_funcs drm_simple_encoder_funcs_cleanup = {
- .destroy = drm_encoder_cleanup,
+};
+/**
- drm_simple_encoder_init - Init a preallocated encoder
- @dev: drm device
- @funcs: callbacks for this encoder
- @encoder_type: user visible type of the encoder
- @name: printf style format string for the encoder name, or NULL
for default name
- Initialises a preallocated encoder that has no further functionality. The
- encoder will be released automatically.
- Returns:
- Zero on success, error code on failure.
- */
+int drm_simple_encoder_init(struct drm_device *dev,
struct drm_encoder *encoder,
int encoder_type, const char *name, ...)
How about using
#define drm_simple_encoder_init(dev, type, name, ...) \ drm_encoder_init(dev, drm_simple_encoder_funcs_cleanup, type, name, __VA_ARGS__)
instead ?
I'd prefer a function call for aesthetic reasons and for not having to export the drm_simple_encoder_funcs_cleanup. drm_simple_encoder_create() is also a function and probably cannot be turned into a macro. So having a function for drm_simple_encoder_init seems consequent.
I guess you want to save a few lines in the implementation of drm_simple_encoder_init() (?) If so, I'd rather try to share more internal code among the various init and create functions.
Best regards Thomas
cheers, Gerd