drm: Make helper vtable pointers type-safe

Originally the idea behind void* was to allow different sets of
helpers. But now we have that (with probe, plane, crtc and atomic
helpers) and we still just use the same set of vtables. That's the
only way to make the individual helpers modular and allow drivers to
pick&choose and transition between them. So this flexibility isn't
really needed. Also we have lots of non-vtable data meanwhile in core
structures too, this is not the first one at all.

Given that the void * is only trouble since gcc can't warn you if you
mix them up. Let's fix that and make them typesafe.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1449218769-16577-5-git-send-email-daniel.vetter@ffwll.ch
Reviewed-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
Daniel Vetter 2015-12-04 09:45:45 +01:00
Родитель 092d01dae0
Коммит 4490d4c711
1 изменённых файлов: 9 добавлений и 4 удалений

Просмотреть файл

@ -254,6 +254,11 @@ struct drm_plane;
struct drm_bridge;
struct drm_atomic_state;
struct drm_crtc_helper_funcs;
struct drm_encoder_helper_funcs;
struct drm_connector_helper_funcs;
struct drm_plane_helper_funcs;
/**
* struct drm_crtc_state - mutable CRTC state
* @crtc: backpointer to the CRTC
@ -467,7 +472,7 @@ struct drm_crtc {
uint16_t *gamma_store;
/* if you are using the helper */
const void *helper_private;
const struct drm_crtc_helper_funcs *helper_private;
struct drm_object_properties properties;
@ -597,7 +602,7 @@ struct drm_encoder {
struct drm_crtc *crtc;
struct drm_bridge *bridge;
const struct drm_encoder_funcs *funcs;
const void *helper_private;
const struct drm_encoder_helper_funcs *helper_private;
};
/* should we poll this connector for connects and disconnects */
@ -702,7 +707,7 @@ struct drm_connector {
/* requested DPMS state */
int dpms;
const void *helper_private;
const struct drm_connector_helper_funcs *helper_private;
/* forced on connector */
struct drm_cmdline_mode cmdline_mode;
@ -870,7 +875,7 @@ struct drm_plane {
enum drm_plane_type type;
const void *helper_private;
const struct drm_plane_helper_funcs *helper_private;
struct drm_plane_state *state;
};