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

Commit 7974dd1b authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/device: separate construction of pci/tegra devices



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 168c2e21
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@

#include <asm/unaligned.h>

#include <soc/tegra/fuse.h>

#ifndef ioread32_native
#ifdef __BIG_ENDIAN
#define ioread16_native ioread16be
@@ -40,5 +42,4 @@
#define iowrite32_native iowrite32
#endif /* def __BIG_ENDIAN else */
#endif /* !ioread32_native */

#endif
+3 −1
Original line number Diff line number Diff line
@@ -28,7 +28,9 @@ nvkm_client(void *obj)
	struct nvkm_object *client = nv_object(obj);
	while (client && client->parent)
		client = client->parent;
	if (client && nv_iclass(client, NV_CLIENT_CLASS))
		return (void *)client;
	return NULL;
}

int  nvkm_client_new(const char *name, u64 device, const char *cfg,
+19 −11
Original line number Diff line number Diff line
@@ -65,22 +65,25 @@ enum nvkm_devidx {
struct nvkm_device {
	struct nvkm_engine engine;

	const struct nvkm_device_func *func;
	const struct nvkm_device_quirk *quirk;
	struct device *dev;
	u64 handle;
	const char *name;
	const char *cfgopt;
	const char *dbgopt;

	struct list_head head;
	struct mutex mutex;
	int refcount;

	struct pci_dev *pdev;
	struct platform_device *platformdev;
	struct device *dev;
	u64 handle;

	void __iomem *pri;

	struct nvkm_event event;

	const char *cfgopt;
	const char *dbgopt;
	const char *name;
	const char *cname;
	u64 disable_mask;

@@ -150,6 +153,17 @@ struct nvkm_device {
	struct nouveau_platform_gpu *gpu;
};

struct nvkm_device_func {
	struct nvkm_device_pci *(*pci)(struct nvkm_device *);
	struct nvkm_device_tegra *(*tegra)(struct nvkm_device *);
	void *(*dtor)(struct nvkm_device *);
	int (*preinit)(struct nvkm_device *);
	void (*fini)(struct nvkm_device *, bool suspend);
};

struct nvkm_device_quirk {
};

struct nvkm_device *nvkm_device_find(u64 name);
int nvkm_device_list(u64 *name, int size);

@@ -214,13 +228,7 @@ enum nv_bus_type {

extern struct nvkm_ofuncs nvkm_udevice_ofuncs;

int  nvkm_device_new(void *, enum nv_bus_type type, u64 name,
		     const char *sname, const char *cfg, const char *dbg,
		     bool detect, bool mmio, u64 subdev_mask,
		     struct nvkm_device **);
void nvkm_device_del(struct nvkm_device **);
int  nvkm_device_init(struct nvkm_device *);
int  nvkm_device_fini(struct nvkm_device *, bool suspend);

/* device logging */
#define nvdev_printk_(d,l,p,f,a...) do {                                       \
+14 −0
Original line number Diff line number Diff line
#ifndef __NVKM_DEVICE_PCI_H__
#define __NVKM_DEVICE_PCI_H__
#include <core/device.h>

struct nvkm_device_pci {
	struct nvkm_device device;
	struct pci_dev *pdev;
	bool suspend;
};

int nvkm_device_pci_new(struct pci_dev *, const char *cfg, const char *dbg,
			bool detect, bool mmio, u64 subdev_mask,
			struct nvkm_device **);
#endif
+14 −0
Original line number Diff line number Diff line
#ifndef __NVKM_DEVICE_TEGRA_H__
#define __NVKM_DEVICE_TEGRA_H__
#include <core/device.h>

struct nvkm_device_tegra {
	struct nvkm_device device;
	struct platform_device *pdev;
};

int nvkm_device_tegra_new(struct platform_device *,
			  const char *cfg, const char *dbg,
			  bool detect, bool mmio, u64 subdev_mask,
			  struct nvkm_device **);
#endif
Loading