Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37e1c45a authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/fifo/gv100: initial support



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent facaed62
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -52,6 +52,8 @@

#define NV04_DISP                                     /* cl0046.h */ 0x00000046

#define VOLTA_USERMODE_A                                             0x0000c361

#define NV03_CHANNEL_DMA                              /* cl506b.h */ 0x0000006b
#define NV10_CHANNEL_DMA                              /* cl506b.h */ 0x0000006e
#define NV17_CHANNEL_DMA                              /* cl506b.h */ 0x0000176e
@@ -66,6 +68,7 @@
#define KEPLER_CHANNEL_GPFIFO_B                       /* cla06f.h */ 0x0000a16f
#define MAXWELL_CHANNEL_GPFIFO_A                      /* cla06f.h */ 0x0000b06f
#define PASCAL_CHANNEL_GPFIFO_A                       /* cla06f.h */ 0x0000c06f
#define VOLTA_CHANNEL_GPFIFO_A                        /* cla06f.h */ 0x0000c36f

#define NV50_DISP                                     /* cl5070.h */ 0x00005070
#define G82_DISP                                      /* cl5070.h */ 0x00008270
+3 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@

#include <nvif/object.h>
#include <nvif/cl0080.h>
#include <nvif/user.h>

struct nvif_device {
	struct nvif_object object;
@@ -13,6 +14,8 @@ struct nvif_device {
		u64 engines;
	} *runlist;
	int runlists;

	struct nvif_user user;
};

int  nvif_device_init(struct nvif_object *, u32 handle, s32 oclass, void *, u32,
+19 −0
Original line number Diff line number Diff line
#ifndef __NVIF_USER_H__
#define __NVIF_USER_H__
#include <nvif/object.h>
struct nvif_device;

struct nvif_user {
	const struct nvif_user_func *func;
	struct nvif_object object;
};

struct nvif_user_func {
	void (*doorbell)(struct nvif_user *, u32 token);
};

int nvif_user_init(struct nvif_device *);
void nvif_user_fini(struct nvif_device *);

extern const struct nvif_user_func nvif_userc361;
#endif
+1 −0
Original line number Diff line number Diff line
@@ -73,4 +73,5 @@ int gm200_fifo_new(struct nvkm_device *, int, struct nvkm_fifo **);
int gm20b_fifo_new(struct nvkm_device *, int, struct nvkm_fifo **);
int gp100_fifo_new(struct nvkm_device *, int, struct nvkm_fifo **);
int gp10b_fifo_new(struct nvkm_device *, int, struct nvkm_fifo **);
int gv100_fifo_new(struct nvkm_device *, int, struct nvkm_fifo **);
#endif
+2 −1
Original line number Diff line number Diff line
@@ -220,7 +220,8 @@ nouveau_channel_ind(struct nouveau_drm *drm, struct nvif_device *device,
		    u64 runlist, struct nouveau_channel **pchan)
{
	struct nouveau_cli *cli = (void *)device->object.client;
	static const u16 oclasses[] = { PASCAL_CHANNEL_GPFIFO_A,
	static const u16 oclasses[] = { VOLTA_CHANNEL_GPFIFO_A,
					PASCAL_CHANNEL_GPFIFO_A,
					MAXWELL_CHANNEL_GPFIFO_A,
					KEPLER_CHANNEL_GPFIFO_B,
					KEPLER_CHANNEL_GPFIFO_A,
Loading