162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#ifndef __CRCC37D_H__ 462306a36Sopenharmony_ci#define __CRCC37D_H__ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <linux/types.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include "crc.h" 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#define CRCC37D_MAX_ENTRIES 2047 1162306a36Sopenharmony_ci#define CRCC37D_FLIP_THRESHOLD (CRCC37D_MAX_ENTRIES - 30) 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cistruct crcc37d_notifier { 1462306a36Sopenharmony_ci u32 status; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci /* reserved */ 1762306a36Sopenharmony_ci u32:32; 1862306a36Sopenharmony_ci u32:32; 1962306a36Sopenharmony_ci u32:32; 2062306a36Sopenharmony_ci u32:32; 2162306a36Sopenharmony_ci u32:32; 2262306a36Sopenharmony_ci u32:32; 2362306a36Sopenharmony_ci u32:32; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci struct crcc37d_entry { 2662306a36Sopenharmony_ci u32 status[2]; 2762306a36Sopenharmony_ci u32:32; /* reserved */ 2862306a36Sopenharmony_ci u32 compositor_crc; 2962306a36Sopenharmony_ci u32 rg_crc; 3062306a36Sopenharmony_ci u32 output_crc[2]; 3162306a36Sopenharmony_ci u32:32; /* reserved */ 3262306a36Sopenharmony_ci } entries[CRCC37D_MAX_ENTRIES]; 3362306a36Sopenharmony_ci} __packed; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciint crcc37d_set_ctx(struct nv50_head *head, struct nv50_crc_notifier_ctx *ctx); 3662306a36Sopenharmony_ciu32 crcc37d_get_entry(struct nv50_head *head, struct nv50_crc_notifier_ctx *ctx, 3762306a36Sopenharmony_ci enum nv50_crc_source source, int idx); 3862306a36Sopenharmony_cibool crcc37d_ctx_finished(struct nv50_head *head, struct nv50_crc_notifier_ctx *ctx); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci#endif /* !__CRCC37D_H__ */ 41