1#ifndef ARMADA_PLANE_H 2#define ARMADA_PLANE_H 3 4struct 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 22void armada_drm_plane_calc(struct drm_plane_state *state, u32 addrs[2][3], 23 u16 pitches[3], bool interlaced); 24int armada_drm_plane_prepare_fb(struct drm_plane *plane, 25 struct drm_plane_state *state); 26void armada_drm_plane_cleanup_fb(struct drm_plane *plane, 27 struct drm_plane_state *old_state); 28int armada_drm_plane_atomic_check(struct drm_plane *plane, 29 struct drm_plane_state *state); 30void armada_plane_reset(struct drm_plane *plane); 31struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane); 32void armada_plane_destroy_state(struct drm_plane *plane, 33 struct drm_plane_state *state); 34 35int armada_drm_primary_plane_init(struct drm_device *drm, 36 struct drm_plane *primary); 37 38#endif 39