File Index
Files and directories
Sign in
FILE

head.h

File preview with syntax highlighting.

linux-6.19.14/drivers/gpu/drm/nouveau/dispnv50/head.h C
  1#ifndef __NV50_KMS_HEAD_H__
  2#define __NV50_KMS_HEAD_H__
  3#define nv50_head(c) container_of((c), struct nv50_head, base.base)
  4#include <linux/workqueue.h>
  5
  6#include "disp.h"
  7#include "atom.h"
  8#include "crc.h"
  9#include "lut.h"
 10
 11#include "nouveau_crtc.h"
 12#include "nouveau_encoder.h"
 13
 14struct nv50_head {
 15	const struct nv50_head_func *func;
 16	struct nv50_disp *disp;
 17
 18	struct nouveau_crtc base;
 19	struct nv50_crc crc;
 20	struct nv50_lut olut;
 21	struct nv50_msto *msto;
 22};
 23
 24struct nv50_head *nv50_head_create(struct drm_device *, int index);
 25void nv50_head_flush_set(struct nv50_head *head, struct nv50_head_atom *asyh);
 26void nv50_head_flush_set_wndw(struct nv50_head *head, struct nv50_head_atom *asyh);
 27void nv50_head_flush_clr(struct nv50_head *head,
 28			 struct nv50_head_atom *asyh, bool flush);
 29
 30struct nv50_head_func {
 31	int (*view)(struct nv50_head *, struct nv50_head_atom *);
 32	int (*mode)(struct nv50_head *, struct nv50_head_atom *);
 33	bool (*olut)(struct nv50_head *, struct nv50_head_atom *, int);
 34	bool (*ilut_check)(int size);
 35	bool olut_identity;
 36	int  olut_size;
 37	int (*olut_set)(struct nv50_head *, struct nv50_head_atom *);
 38	int (*olut_clr)(struct nv50_head *);
 39	void (*core_calc)(struct nv50_head *, struct nv50_head_atom *);
 40	int (*core_set)(struct nv50_head *, struct nv50_head_atom *);
 41	int (*core_clr)(struct nv50_head *);
 42	int (*curs_layout)(struct nv50_head *, struct nv50_wndw_atom *,
 43			   struct nv50_head_atom *);
 44	int (*curs_format)(struct nv50_head *, struct nv50_wndw_atom *,
 45			   struct nv50_head_atom *);
 46	int (*curs_set)(struct nv50_head *, struct nv50_head_atom *);
 47	int (*curs_clr)(struct nv50_head *);
 48	int (*base)(struct nv50_head *, struct nv50_head_atom *);
 49	int (*ovly)(struct nv50_head *, struct nv50_head_atom *);
 50	int (*dither)(struct nv50_head *, struct nv50_head_atom *);
 51	int (*procamp)(struct nv50_head *, struct nv50_head_atom *);
 52	int (*or)(struct nv50_head *, struct nv50_head_atom *);
 53	void (*static_wndw_map)(struct nv50_head *, struct nv50_head_atom *);
 54	int (*display_id)(struct nv50_head *, u32 display_id);
 55};
 56
 57extern const struct nv50_head_func head507d;
 58int head507d_view(struct nv50_head *, struct nv50_head_atom *);
 59int head507d_mode(struct nv50_head *, struct nv50_head_atom *);
 60bool head507d_olut(struct nv50_head *, struct nv50_head_atom *, int);
 61void head507d_core_calc(struct nv50_head *, struct nv50_head_atom *);
 62int head507d_core_clr(struct nv50_head *);
 63int head507d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *,
 64			 struct nv50_head_atom *);
 65int head507d_curs_format(struct nv50_head *, struct nv50_wndw_atom *,
 66			 struct nv50_head_atom *);
 67int head507d_base(struct nv50_head *, struct nv50_head_atom *);
 68int head507d_ovly(struct nv50_head *, struct nv50_head_atom *);
 69int head507d_dither(struct nv50_head *, struct nv50_head_atom *);
 70int head507d_procamp(struct nv50_head *, struct nv50_head_atom *);
 71
 72extern const struct nv50_head_func head827d;
 73
 74extern const struct nv50_head_func head907d;
 75int head907d_view(struct nv50_head *, struct nv50_head_atom *);
 76int head907d_mode(struct nv50_head *, struct nv50_head_atom *);
 77bool head907d_olut(struct nv50_head *, struct nv50_head_atom *, int);
 78bool head907d_ilut_check(int size);
 79int head907d_olut_set(struct nv50_head *, struct nv50_head_atom *);
 80int head907d_olut_clr(struct nv50_head *);
 81int head907d_core_set(struct nv50_head *, struct nv50_head_atom *);
 82int head907d_core_clr(struct nv50_head *);
 83int head907d_curs_set(struct nv50_head *, struct nv50_head_atom *);
 84int head907d_curs_clr(struct nv50_head *);
 85int head907d_ovly(struct nv50_head *, struct nv50_head_atom *);
 86int head907d_procamp(struct nv50_head *, struct nv50_head_atom *);
 87int head907d_or(struct nv50_head *, struct nv50_head_atom *);
 88
 89extern const struct nv50_head_func head917d;
 90int head917d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *,
 91			 struct nv50_head_atom *);
 92
 93extern const struct nv50_head_func headc37d;
 94int headc37d_view(struct nv50_head *, struct nv50_head_atom *);
 95int headc37d_curs_format(struct nv50_head *, struct nv50_wndw_atom *,
 96			 struct nv50_head_atom *);
 97int headc37d_curs_set(struct nv50_head *, struct nv50_head_atom *);
 98int headc37d_curs_clr(struct nv50_head *);
 99int headc37d_dither(struct nv50_head *, struct nv50_head_atom *);
100void headc37d_static_wndw_map(struct nv50_head *, struct nv50_head_atom *);
101
102extern const struct nv50_head_func headc57d;
103bool headc57d_olut(struct nv50_head *, struct nv50_head_atom *, int size);
104
105extern const struct nv50_head_func headca7d;
106#endif
~/ Read-only file preview.