1 #ifndef ARMADA_PLANE_H 2 #define ARMADA_PLANE_H 3 4 struct armada_plane_state { 5 struct drm_plane_state base; 6 u32 src_hw; 7 u32 dst_yx; 8 u32 dst_hw; 9 u32 addrs[2][3]; 10 u16 pitches[3]; 11 bool interlace; 12 }; 13 14 #define to_armada_plane_state(st) \ 15 container_of(st, struct armada_plane_state, base) 16 #define armada_src_hw(state) to_armada_plane_state(state)->src_hw 17 #define armada_dst_yx(state) to_armada_plane_state(state)->dst_yx 18 #define armada_dst_hw(state) to_armada_plane_state(state)->dst_hw 19 #define armada_addr(state, f, p) to_armada_plane_state(state)->addrs[f][p] 20 #define armada_pitch(state, n) to_armada_plane_state(state)->pitches[n] 21 22 void armada_drm_plane_calc(struct drm_plane_state *state, u32 addrs[2][3], 23 u16 pitches[3], bool interlaced); 24 int armada_drm_plane_prepare_fb(struct drm_plane *plane, 25 struct drm_plane_state *state); 26 void armada_drm_plane_cleanup_fb(struct drm_plane *plane, 27 struct drm_plane_state *old_state); 28 int armada_drm_plane_atomic_check(struct drm_plane *plane, 29 struct drm_atomic_state *state); 30 void armada_plane_reset(struct drm_plane *plane); 31 struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane); 32 void armada_plane_destroy_state(struct drm_plane *plane, 33 struct drm_plane_state *state); 34 35 int armada_drm_primary_plane_init(struct drm_device *drm, 36 struct drm_plane *primary); 37 38 #endif 39