mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 13:25:12 +07:00
7d62237da6
Move the plane address and pitch calculations to atomic_check rather than the update function, so we don't have to probe the interlace setting for the CRTC while updating the plane. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
#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
|