Linux Audio

Check our new training course

Loading...
  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 nouveau_crtc base;
 17	struct nv50_crc crc;
 18	struct nv50_lut olut;
 19	struct nv50_msto *msto;
 20};
 21
 22struct nv50_head *nv50_head_create(struct drm_device *, int index);
 23void nv50_head_flush_set(struct nv50_head *head, struct nv50_head_atom *asyh);
 24void nv50_head_flush_set_wndw(struct nv50_head *head, struct nv50_head_atom *asyh);
 25void nv50_head_flush_clr(struct nv50_head *head,
 26			 struct nv50_head_atom *asyh, bool flush);
 27
 28struct nv50_head_func {
 29	int (*view)(struct nv50_head *, struct nv50_head_atom *);
 30	int (*mode)(struct nv50_head *, struct nv50_head_atom *);
 31	bool (*olut)(struct nv50_head *, struct nv50_head_atom *, int);
 32	bool (*ilut_check)(int size);
 33	bool olut_identity;
 34	int  olut_size;
 35	int (*olut_set)(struct nv50_head *, struct nv50_head_atom *);
 36	int (*olut_clr)(struct nv50_head *);
 37	void (*core_calc)(struct nv50_head *, struct nv50_head_atom *);
 38	int (*core_set)(struct nv50_head *, struct nv50_head_atom *);
 39	int (*core_clr)(struct nv50_head *);
 40	int (*curs_layout)(struct nv50_head *, struct nv50_wndw_atom *,
 41			   struct nv50_head_atom *);
 42	int (*curs_format)(struct nv50_head *, struct nv50_wndw_atom *,
 43			   struct nv50_head_atom *);
 44	int (*curs_set)(struct nv50_head *, struct nv50_head_atom *);
 45	int (*curs_clr)(struct nv50_head *);
 46	int (*base)(struct nv50_head *, struct nv50_head_atom *);
 47	int (*ovly)(struct nv50_head *, struct nv50_head_atom *);
 48	int (*dither)(struct nv50_head *, struct nv50_head_atom *);
 49	int (*procamp)(struct nv50_head *, struct nv50_head_atom *);
 50	int (*or)(struct nv50_head *, struct nv50_head_atom *);
 51	void (*static_wndw_map)(struct nv50_head *, struct nv50_head_atom *);
 52	int (*display_id)(struct nv50_head *, u32 display_id);
 53};
 54
 55extern const struct nv50_head_func head507d;
 56int head507d_view(struct nv50_head *, struct nv50_head_atom *);
 57int head507d_mode(struct nv50_head *, struct nv50_head_atom *);
 58bool head507d_olut(struct nv50_head *, struct nv50_head_atom *, int);
 59void head507d_core_calc(struct nv50_head *, struct nv50_head_atom *);
 60int head507d_core_clr(struct nv50_head *);
 61int head507d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *,
 62			 struct nv50_head_atom *);
 63int head507d_curs_format(struct nv50_head *, struct nv50_wndw_atom *,
 64			 struct nv50_head_atom *);
 65int head507d_base(struct nv50_head *, struct nv50_head_atom *);
 66int head507d_ovly(struct nv50_head *, struct nv50_head_atom *);
 67int head507d_dither(struct nv50_head *, struct nv50_head_atom *);
 68int head507d_procamp(struct nv50_head *, struct nv50_head_atom *);
 69
 70extern const struct nv50_head_func head827d;
 71
 72extern const struct nv50_head_func head907d;
 73int head907d_view(struct nv50_head *, struct nv50_head_atom *);
 74int head907d_mode(struct nv50_head *, struct nv50_head_atom *);
 75bool head907d_olut(struct nv50_head *, struct nv50_head_atom *, int);
 76bool head907d_ilut_check(int size);
 77int head907d_olut_set(struct nv50_head *, struct nv50_head_atom *);
 78int head907d_olut_clr(struct nv50_head *);
 79int head907d_core_set(struct nv50_head *, struct nv50_head_atom *);
 80int head907d_core_clr(struct nv50_head *);
 81int head907d_curs_set(struct nv50_head *, struct nv50_head_atom *);
 82int head907d_curs_clr(struct nv50_head *);
 83int head907d_ovly(struct nv50_head *, struct nv50_head_atom *);
 84int head907d_procamp(struct nv50_head *, struct nv50_head_atom *);
 85int head907d_or(struct nv50_head *, struct nv50_head_atom *);
 86
 87extern const struct nv50_head_func head917d;
 88int head917d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *,
 89			 struct nv50_head_atom *);
 90
 91extern const struct nv50_head_func headc37d;
 92int headc37d_view(struct nv50_head *, struct nv50_head_atom *);
 93int headc37d_curs_format(struct nv50_head *, struct nv50_wndw_atom *,
 94			 struct nv50_head_atom *);
 95int headc37d_curs_set(struct nv50_head *, struct nv50_head_atom *);
 96int headc37d_curs_clr(struct nv50_head *);
 97int headc37d_dither(struct nv50_head *, struct nv50_head_atom *);
 98void headc37d_static_wndw_map(struct nv50_head *, struct nv50_head_atom *);
 99
100extern const struct nv50_head_func headc57d;
101#endif