#include <drm/drm_crtc.h>
#include <drm/drm_vblank.h>
#include "amdgpu.h"
#include "amdgpu_dm.h"
#include "dc.h"
#include "amdgpu_securedisplay.h"
static const char *const pipe_crc_sources[] = …;
static enum amdgpu_dm_pipe_crc_source dm_parse_crc_source(const char *source)
{ … }
static bool dm_is_crc_source_crtc(enum amdgpu_dm_pipe_crc_source src)
{ … }
static bool dm_is_crc_source_dprx(enum amdgpu_dm_pipe_crc_source src)
{ … }
static bool dm_need_crc_dither(enum amdgpu_dm_pipe_crc_source src)
{ … }
const char *const *amdgpu_dm_crtc_get_crc_sources(struct drm_crtc *crtc,
size_t *count)
{ … }
#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
static void amdgpu_dm_set_crc_window_default(struct drm_crtc *crtc, struct dc_stream_state *stream)
{ … }
static void amdgpu_dm_crtc_notify_ta_to_read(struct work_struct *work)
{ … }
static void
amdgpu_dm_forward_crc_window(struct work_struct *work)
{ … }
bool amdgpu_dm_crc_window_is_activated(struct drm_crtc *crtc)
{ … }
#endif
int
amdgpu_dm_crtc_verify_crc_source(struct drm_crtc *crtc, const char *src_name,
size_t *values_cnt)
{ … }
int amdgpu_dm_crtc_configure_crc_source(struct drm_crtc *crtc,
struct dm_crtc_state *dm_crtc_state,
enum amdgpu_dm_pipe_crc_source source)
{ … }
int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name)
{ … }
void amdgpu_dm_crtc_handle_crc_irq(struct drm_crtc *crtc)
{ … }
#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
void amdgpu_dm_crtc_handle_crc_window_irq(struct drm_crtc *crtc)
{ … }
struct secure_display_context *
amdgpu_dm_crtc_secure_display_create_contexts(struct amdgpu_device *adev)
{ … }
#endif