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 | void armada_drm_plane_cleanup_fb(struct drm_plane *plane, |
25 | struct drm_plane_state *old_state); |
26 | int armada_drm_plane_atomic_check(struct drm_plane *plane, |
27 | struct drm_atomic_state *state); |
28 | void armada_plane_reset(struct drm_plane *plane); |
29 | struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane); |
30 | void armada_plane_destroy_state(struct drm_plane *plane, |
31 | struct drm_plane_state *state); |
32 | |
33 | int armada_drm_primary_plane_init(struct drm_device *drm, |
34 | struct drm_plane *primary); |
35 | |
36 | #endif |
37 | |