Commit c79a191b authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/xtensa: convert user classes to new-style nvkm_object



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 9d498e0f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@
#define GM107_DISP                                                   0x00009470
#define GM204_DISP                                                   0x00009570

#define NV74_VP2                                                     0x00007476

#define NV50_DISP_CURSOR                                             0x0000507a
#define G82_DISP_CURSOR                                              0x0000827a
#define GT214_DISP_CURSOR                                            0x0000857a
@@ -94,6 +96,8 @@
#define MAXWELL_A                                                    0x0000b097
#define MAXWELL_B                                                    0x0000b197

#define NV74_BSP                                                     0x000074b0

#define GT212_MSVLD                                                  0x000085b1
#define IGT21A_MSVLD                                                 0x000086b1
#define G98_MSVLD                                                    0x000088b1
+1 −1
Original line number Diff line number Diff line
#ifndef __NVKM_BSP_H__
#define __NVKM_BSP_H__
#include <core/engine.h>
#include <engine/xtensa.h>
extern struct nvkm_oclass g84_bsp_oclass;
#endif
+1 −1
Original line number Diff line number Diff line
#ifndef __NVKM_VP_H__
#define __NVKM_VP_H__
#include <core/engine.h>
#include <engine/xtensa.h>
extern struct nvkm_oclass g84_vp_oclass;
#endif
+7 −6
Original line number Diff line number Diff line
#ifndef __NVKM_XTENSA_H__
#define __NVKM_XTENSA_H__
#define nvkm_xtensa(p) container_of((p), struct nvkm_xtensa, engine)
#include <core/engine.h>

struct nvkm_xtensa {
	struct nvkm_engine engine;
	const struct nvkm_xtensa_func *func;

	u32 addr;
	struct nvkm_memory *gpu_fw;
@@ -11,16 +13,15 @@ struct nvkm_xtensa {
	u32 unkd28;
};

struct nvkm_xtensa_func {
	void (*init)(struct nvkm_xtensa *);
	struct nvkm_sclass sclass[];
};

#define nvkm_xtensa_create(p,e,c,b,d,i,f,r)				\
	nvkm_xtensa_create_((p), (e), (c), (b), (d), (i), (f),	\
			       sizeof(**r),(void **)r)

int _nvkm_xtensa_engctx_ctor(struct nvkm_object *,
				struct nvkm_object *,
				struct nvkm_oclass *, void *, u32,
				struct nvkm_object **);

void _nvkm_xtensa_intr(struct nvkm_subdev *);
int nvkm_xtensa_create_(struct nvkm_object *,
			   struct nvkm_object *,
			   struct nvkm_oclass *, u32, bool,
+8 −33
Original line number Diff line number Diff line
@@ -22,41 +22,17 @@
 * Authors: Ben Skeggs, Ilia Mirkin
 */
#include <engine/bsp.h>
#include <engine/xtensa.h>

#include <core/engctx.h>
#include <nvif/class.h>

/*******************************************************************************
 * BSP object classes
 ******************************************************************************/

static struct nvkm_oclass
g84_bsp_sclass[] = {
	{ 0x74b0, &nvkm_object_ofuncs },
	{},
};

/*******************************************************************************
 * BSP context
 ******************************************************************************/

static struct nvkm_oclass
g84_bsp_cclass = {
	.handle = NV_ENGCTX(BSP, 0x84),
	.ofuncs = &(struct nvkm_ofuncs) {
		.ctor = _nvkm_xtensa_engctx_ctor,
		.dtor = _nvkm_engctx_dtor,
		.init = _nvkm_engctx_init,
		.fini = _nvkm_engctx_fini,
		.rd32 = _nvkm_engctx_rd32,
		.wr32 = _nvkm_engctx_wr32,
	},
static const struct nvkm_xtensa_func
g84_bsp_func = {
	.sclass = {
		{ -1, -1, NV74_BSP },
		{}
	}
};

/*******************************************************************************
 * BSP engine/subdev functions
 ******************************************************************************/

static int
g84_bsp_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	     struct nvkm_oclass *oclass, void *data, u32 size,
@@ -71,9 +47,8 @@ g84_bsp_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	if (ret)
		return ret;

	bsp->func = &g84_bsp_func;
	nv_subdev(bsp)->unit = 0x04008000;
	nv_engine(bsp)->cclass = &g84_bsp_cclass;
	nv_engine(bsp)->sclass = g84_bsp_sclass;
	bsp->fifo_val = 0x1111;
	bsp->unkd28 = 0x90044;
	return 0;
Loading