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 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.
Yes. You have the namestr stuff duplicated in all functions, and with a #define that goes away.
But maybe that can be simply be dropped? The drivers with a simple encoder seem to not care much about the name and just pass NULL ...
cheers, Gerd