#ifndef ARMADA_PLANE_H #define ARMADA_PLANE_H struct armada_plane_state { struct drm_plane_state base; u32 src_hw; u32 dst_yx; u32 dst_hw; u32 addrs[2][3]; u16 pitches[3]; bool interlace; }; #define to_armada_plane_state(st) \ container_of(st, struct armada_plane_state, base) #define armada_src_hw(state) to_armada_plane_state(state)->src_hw #define armada_dst_yx(state) to_armada_plane_state(state)->dst_yx #define armada_dst_hw(state) to_armada_plane_state(state)->dst_hw #define armada_addr(state, f, p) to_armada_plane_state(state)->addrs[f][p] #define armada_pitch(state, n) to_armada_plane_state(state)->pitches[n] void armada_drm_plane_calc(struct drm_plane_state *state, u32 addrs[2][3], u16 pitches[3], bool interlaced); int armada_drm_plane_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state); void armada_drm_plane_cleanup_fb(struct drm_plane *plane, struct drm_plane_state *old_state); int armada_drm_plane_atomic_check(struct drm_plane *plane, struct drm_plane_state *state); void armada_plane_reset(struct drm_plane *plane); struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane); void armada_plane_destroy_state(struct drm_plane *plane, struct drm_plane_state *state); int armada_drm_primary_plane_init(struct drm_device *drm, struct drm_plane *primary); #endif