drm/atomic: Make private objs proper objects

Make the atomic private object stuff less special by introducing proper
base classes for the object and its state. Drivers can embed these in
their own appropriate objects, after which these things will work
exactly like the plane/crtc/connector states during atomic operations.

v2: Reorder to not depend on drm_dynarray (Daniel)

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> #v1
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170712155102.26276-3-ville.syrjala@linux.intel.com
This commit is contained in:
Ville Syrjälä
2017-07-12 18:51:02 +03:00
parent 178e32c224
commit a4370c7774
6 changed files with 203 additions and 102 deletions

View File

@ -404,12 +404,17 @@ struct drm_dp_payload {
int vcpi;
};
#define to_dp_mst_topology_state(x) container_of(x, struct drm_dp_mst_topology_state, base)
struct drm_dp_mst_topology_state {
struct drm_private_state base;
int avail_slots;
struct drm_atomic_state *state;
struct drm_dp_mst_topology_mgr *mgr;
};
#define to_dp_mst_topology_mgr(x) container_of(x, struct drm_dp_mst_topology_mgr, base)
/**
* struct drm_dp_mst_topology_mgr - DisplayPort MST manager
*
@ -418,6 +423,11 @@ struct drm_dp_mst_topology_state {
* on the GPU.
*/
struct drm_dp_mst_topology_mgr {
/**
* @base: Base private object for atomic
*/
struct drm_private_obj base;
/**
* @dev: device pointer for adding i2c devices etc.
*/