brintos

brintos / linux-shallow public Read only

0
0
Text · 4.6 KiB · 0202905 Raw
140 lines · c
1/* SPDX-License-Identifier: MIT */2#ifndef __NVKM_DISP_CHAN_H__3#define __NVKM_DISP_CHAN_H__4#define nvkm_disp_chan(p) container_of((p), struct nvkm_disp_chan, object)5#include <core/object.h>6#include "priv.h"7 8struct nvkm_disp_chan {9	const struct nvkm_disp_chan_func *func;10	const struct nvkm_disp_chan_mthd *mthd;11	struct nvkm_disp *disp;12 13	struct {14		int ctrl;15		int user;16	} chid;17	int head;18 19	struct nvkm_object object;20 21	struct nvkm_memory *memory;22	u64 push;23 24	u32 suspend_put;25 26	struct {27		struct nvkm_gsp_object object;28	} rm;29};30 31int nvkm_disp_core_new(const struct nvkm_oclass *, void *, u32, struct nvkm_object **);32int nvkm_disp_chan_new(const struct nvkm_oclass *, void *, u32, struct nvkm_object **);33int nvkm_disp_wndw_new(const struct nvkm_oclass *, void *, u32, struct nvkm_object **);34 35struct nvkm_disp_chan_func {36	int (*push)(struct nvkm_disp_chan *, u64 object);37	int (*init)(struct nvkm_disp_chan *);38	void (*fini)(struct nvkm_disp_chan *);39	void (*intr)(struct nvkm_disp_chan *, bool en);40	u64 (*user)(struct nvkm_disp_chan *, u64 *size);41	int (*bind)(struct nvkm_disp_chan *, struct nvkm_object *, u32 handle);42};43 44void nv50_disp_chan_intr(struct nvkm_disp_chan *, bool);45u64 nv50_disp_chan_user(struct nvkm_disp_chan *, u64 *);46extern const struct nvkm_disp_chan_func nv50_disp_pioc_func;47extern const struct nvkm_disp_chan_func nv50_disp_dmac_func;48int nv50_disp_dmac_push(struct nvkm_disp_chan *, u64);49int nv50_disp_dmac_bind(struct nvkm_disp_chan *, struct nvkm_object *, u32);50extern const struct nvkm_disp_chan_func nv50_disp_core_func;51 52void gf119_disp_chan_intr(struct nvkm_disp_chan *, bool);53extern const struct nvkm_disp_chan_func gf119_disp_pioc_func;54extern const struct nvkm_disp_chan_func gf119_disp_dmac_func;55void gf119_disp_dmac_fini(struct nvkm_disp_chan *);56int gf119_disp_dmac_bind(struct nvkm_disp_chan *, struct nvkm_object *, u32);57extern const struct nvkm_disp_chan_func gf119_disp_core_func;58void gf119_disp_core_fini(struct nvkm_disp_chan *);59 60extern const struct nvkm_disp_chan_func gp102_disp_dmac_func;61 62u64 gv100_disp_chan_user(struct nvkm_disp_chan *, u64 *);63int gv100_disp_dmac_init(struct nvkm_disp_chan *);64void gv100_disp_dmac_fini(struct nvkm_disp_chan *);65int gv100_disp_dmac_bind(struct nvkm_disp_chan *, struct nvkm_object *, u32);66 67struct nvkm_disp_chan_user {68	const struct nvkm_disp_chan_func *func;69	int ctrl;70	int user;71	const struct nvkm_disp_chan_mthd *mthd;72};73 74extern const struct nvkm_disp_chan_user nv50_disp_oimm;75extern const struct nvkm_disp_chan_user nv50_disp_curs;76 77extern const struct nvkm_disp_chan_user g84_disp_core;78extern const struct nvkm_disp_chan_user g84_disp_base;79extern const struct nvkm_disp_chan_user g84_disp_ovly;80 81extern const struct nvkm_disp_chan_user g94_disp_core;82 83extern const struct nvkm_disp_chan_user gt200_disp_ovly;84 85extern const struct nvkm_disp_chan_user gf119_disp_base;86extern const struct nvkm_disp_chan_user gf119_disp_oimm;87extern const struct nvkm_disp_chan_user gf119_disp_curs;88 89extern const struct nvkm_disp_chan_user gk104_disp_core;90extern const struct nvkm_disp_chan_user gk104_disp_ovly;91 92extern const struct nvkm_disp_chan_user gv100_disp_core;93extern const struct nvkm_disp_chan_user gv100_disp_curs;94extern const struct nvkm_disp_chan_user gv100_disp_wndw;95extern const struct nvkm_disp_chan_user gv100_disp_wimm;96 97struct nvkm_disp_mthd_list {98	u32 mthd;99	u32 addr;100	struct {101		u32 mthd;102		u32 addr;103		const char *name;104	} data[];105};106 107struct nvkm_disp_chan_mthd {108	const char *name;109	u32 addr;110	s32 prev;111	struct {112		const char *name;113		int nr;114		const struct nvkm_disp_mthd_list *mthd;115	} data[];116};117 118void nv50_disp_chan_mthd(struct nvkm_disp_chan *, int debug);119 120extern const struct nvkm_disp_mthd_list nv50_disp_core_mthd_base;121extern const struct nvkm_disp_mthd_list nv50_disp_core_mthd_sor;122extern const struct nvkm_disp_mthd_list nv50_disp_core_mthd_pior;123extern const struct nvkm_disp_mthd_list nv50_disp_base_mthd_image;124 125extern const struct nvkm_disp_chan_mthd g84_disp_core_mthd;126extern const struct nvkm_disp_mthd_list g84_disp_core_mthd_dac;127extern const struct nvkm_disp_mthd_list g84_disp_core_mthd_head;128 129extern const struct nvkm_disp_chan_mthd g94_disp_core_mthd;130 131extern const struct nvkm_disp_mthd_list gf119_disp_core_mthd_base;132extern const struct nvkm_disp_mthd_list gf119_disp_core_mthd_dac;133extern const struct nvkm_disp_mthd_list gf119_disp_core_mthd_sor;134extern const struct nvkm_disp_mthd_list gf119_disp_core_mthd_pior;135extern const struct nvkm_disp_chan_mthd gf119_disp_base_mthd;136 137extern const struct nvkm_disp_chan_mthd gk104_disp_core_mthd;138extern const struct nvkm_disp_chan_mthd gk104_disp_ovly_mthd;139#endif140