Commit 3ecd329b authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/fb: switch to subdev printk macros



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent aa860e4b
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@
int
nvkm_fb_bios_memtype(struct nvkm_bios *bios)
{
	struct nvkm_device *device = bios->subdev.device;
	struct nvkm_subdev *subdev = &bios->subdev;
	struct nvkm_device *device = subdev->device;
	const u8 ramcfg = (nvkm_rd32(device, 0x101000) & 0x0000003c) >> 2;
	struct nvbios_M0203E M0203E;
	u8 ver, hdr;
@@ -41,12 +42,12 @@ nvkm_fb_bios_memtype(struct nvkm_bios *bios)
		case M0203E_TYPE_GDDR3: return NV_MEM_TYPE_GDDR3;
		case M0203E_TYPE_GDDR5: return NV_MEM_TYPE_GDDR5;
		default:
			nv_warn(bios, "M0203E type %02x\n", M0203E.type);
			nvkm_warn(subdev, "M0203E type %02x\n", M0203E.type);
			return NV_MEM_TYPE_UNKNOWN;
		}
	}

	nv_warn(bios, "M0203E not matched!\n");
	nvkm_warn(subdev, "M0203E not matched!\n");
	return NV_MEM_TYPE_UNKNOWN;
}

@@ -111,7 +112,7 @@ nvkm_fb_create_(struct nvkm_object *parent, struct nvkm_object *engine,
{
	struct nvkm_fb_impl *impl = (void *)oclass;
	static const char *name[] = {
		[NV_MEM_TYPE_UNKNOWN] = "unknown",
		[NV_MEM_TYPE_UNKNOWN] = "of unknown memory type",
		[NV_MEM_TYPE_STOLEN ] = "stolen system memory",
		[NV_MEM_TYPE_SGRAM  ] = "SGRAM",
		[NV_MEM_TYPE_SDRAM  ] = "SDRAM",
@@ -140,7 +141,7 @@ nvkm_fb_create_(struct nvkm_object *parent, struct nvkm_object *engine,

	ret = nvkm_object_ctor(nv_object(fb), NULL, impl->ram, NULL, 0, &ram);
	if (ret) {
		nv_fatal(fb, "error detecting memory configuration!!\n");
		nvkm_error(&fb->subdev, "vram init failed, %d\n", ret);
		return ret;
	}

@@ -157,10 +158,11 @@ nvkm_fb_create_(struct nvkm_object *parent, struct nvkm_object *engine,
				   ++fb->ram->tags : 0, 1);
		if (ret)
			return ret;

		nvkm_debug(&fb->subdev, "%d compression tags\n", fb->ram->tags);
	}

	nv_info(fb, "RAM type: %s\n", name[fb->ram->type]);
	nv_info(fb, "RAM size: %d MiB\n", (int)(fb->ram->size >> 20));
	nv_info(fb, "   ZCOMP: %d tags\n", fb->ram->tags);
	nvkm_info(&fb->subdev, "%d MiB %s\n", (int)(fb->ram->size >> 20),
		  name[fb->ram->type]);
	return 0;
}
+2 −3
Original line number Diff line number Diff line
@@ -36,12 +36,11 @@ static void
gf100_fb_intr(struct nvkm_subdev *subdev)
{
	struct nvkm_device *device = subdev->device;
	struct gf100_fb *fb = (void *)subdev;
	u32 intr = nvkm_rd32(device, 0x000100);
	if (intr & 0x08000000)
		nv_debug(fb, "PFFB intr\n");
		nvkm_debug(subdev, "PFFB intr\n");
	if (intr & 0x00002000)
		nv_debug(fb, "PBFB intr\n");
		nvkm_debug(subdev, "PBFB intr\n");
}

int
+18 −34
Original line number Diff line number Diff line
@@ -144,10 +144,10 @@ static const struct nvkm_enum vm_fault[] = {
static void
nv50_fb_intr(struct nvkm_subdev *subdev)
{
	struct nvkm_device *device = nv_device(subdev);
	struct nvkm_engine *engine;
	struct nv50_fb *fb = (void *)subdev;
	const struct nvkm_enum *en, *cl;
	struct nvkm_device *device = fb->base.subdev.device;
	struct nvkm_engine *engine;
	const struct nvkm_enum *en, *re, *cl, *sc;
	struct nvkm_object *engctx = NULL;
	u32 trap[6], idx, chan;
	u8 st0, st1, st2, st3;
@@ -203,38 +203,22 @@ nv50_fb_intr(struct nvkm_subdev *subdev)
			en = orig_en;
	}

	nv_error(fb, "trapped %s at 0x%02x%04x%04x on channel 0x%08x [%s] ",
	re = nvkm_enum_find(vm_fault , st1);
	cl = nvkm_enum_find(vm_client, st2);
	if      (cl && cl->data) sc = nvkm_enum_find(cl->data, st3);
	else if (en && en->data) sc = nvkm_enum_find(en->data, st3);
	else                     sc = NULL;

	nvkm_error(subdev, "trapped %s at %02x%04x%04x on channel "
			   "%08x [%s] engine %02x [%s] client %02x [%s] "
			   "subclient %02x [%s] reason %08x [%s]\n",
		   (trap[5] & 0x00000100) ? "read" : "write",
		   trap[5] & 0xff, trap[4] & 0xffff, trap[3] & 0xffff, chan,
		 nvkm_client_name(engctx));
		   nvkm_client_name(engctx), st0, en ? en->name : "",
		   st2, cl ? cl->name : "", st3, sc ? sc->name : "",
		   st1, re ? re->name : "");

	nvkm_engctx_put(engctx);

	if (en)
		pr_cont("%s/", en->name);
	else
		pr_cont("%02x/", st0);

	cl = nvkm_enum_find(vm_client, st2);
	if (cl)
		pr_cont("%s/", cl->name);
	else
		pr_cont("%02x/", st2);

	if      (cl && cl->data) cl = nvkm_enum_find(cl->data, st3);
	else if (en && en->data) cl = nvkm_enum_find(en->data, st3);
	else                     cl = NULL;
	if (cl)
		pr_cont("%s", cl->name);
	else
		pr_cont("%02x", st3);

	pr_cont(" reason: ");
	en = nvkm_enum_find(vm_fault, st1);
	if (en)
		pr_cont("%s\n", en->name);
	else
		pr_cont("0x%08x\n", st1);
}

int
@@ -259,7 +243,7 @@ nv50_fb_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
		if (dma_mapping_error(nv_device_base(device), fb->r100c08))
			return -EFAULT;
	} else {
		nv_warn(fb, "failed 0x100c08 page alloc\n");
		nvkm_warn(&fb->base.subdev, "failed 100c08 page alloc\n");
	}

	nv_subdev(fb)->intr = nv50_fb_intr;
+21 −16
Original line number Diff line number Diff line
@@ -126,8 +126,10 @@ gf100_ram_train(struct gf100_ramfuc *fuc, u32 magic)
static int
gf100_ram_calc(struct nvkm_fb *fb, u32 freq)
{
	struct nvkm_clk *clk = nvkm_clk(fb);
	struct nvkm_bios *bios = nvkm_bios(fb);
	struct nvkm_subdev *subdev = &fb->subdev;
	struct nvkm_device *device = subdev->device;
	struct nvkm_clk *clk = device->clk;
	struct nvkm_bios *bios = device->bios;
	struct gf100_ram *ram = (void *)fb->ram;
	struct gf100_ramfuc *fuc = &ram->fuc;
	struct nvbios_ramcfg cfg;
@@ -145,20 +147,20 @@ gf100_ram_calc(struct nvkm_fb *fb, u32 freq)
	rammap.data = nvbios_rammapEm(bios, freq / 1000, &ver, &rammap.size,
				      &cnt, &ramcfg.size, &cfg);
	if (!rammap.data || ver != 0x10 || rammap.size < 0x0e) {
		nv_error(fb, "invalid/missing rammap entry\n");
		nvkm_error(subdev, "invalid/missing rammap entry\n");
		return -EINVAL;
	}

	/* locate specific data set for the attached memory */
	strap = nvbios_ramcfg_index(nv_subdev(fb));
	if (strap >= cnt) {
		nv_error(fb, "invalid ramcfg strap\n");
		nvkm_error(subdev, "invalid ramcfg strap\n");
		return -EINVAL;
	}

	ramcfg.data = rammap.data + rammap.size + (strap * ramcfg.size);
	if (!ramcfg.data || ver != 0x10 || ramcfg.size < 0x0e) {
		nv_error(fb, "invalid/missing ramcfg entry\n");
		nvkm_error(subdev, "invalid/missing ramcfg entry\n");
		return -EINVAL;
	}

@@ -168,7 +170,7 @@ gf100_ram_calc(struct nvkm_fb *fb, u32 freq)
		timing.data = nvbios_timingEe(bios, strap, &ver, &timing.size,
					      &cnt, &len);
		if (!timing.data || ver != 0x10 || timing.size < 0x19) {
			nv_error(fb, "invalid/missing timing entry\n");
			nvkm_error(subdev, "invalid/missing timing entry\n");
			return -EINVAL;
		}
	} else {
@@ -213,7 +215,7 @@ gf100_ram_calc(struct nvkm_fb *fb, u32 freq)
		ret = gt215_pll_calc(nv_subdev(fb), &ram->refpll,
				     ram->mempll.refclk, &N1, NULL, &M1, &P);
		if (ret <= 0) {
			nv_error(fb, "unable to calc refpll\n");
			nvkm_error(subdev, "unable to calc refpll\n");
			return ret ? ret : -ERANGE;
		}

@@ -228,7 +230,7 @@ gf100_ram_calc(struct nvkm_fb *fb, u32 freq)
		ret = gt215_pll_calc(nv_subdev(fb), &ram->mempll, freq,
				     &N1, NULL, &M1, &P);
		if (ret <= 0) {
			nv_error(fb, "unable to calc refpll\n");
			nvkm_error(subdev, "unable to calc refpll\n");
			return ret ? ret : -ERANGE;
		}

@@ -508,7 +510,8 @@ gf100_ram_create_(struct nvkm_object *parent, struct nvkm_object *engine,
		  void **pobject)
{
	struct nvkm_fb *fb = nvkm_fb(parent);
	struct nvkm_device *device = fb->subdev.device;
	struct nvkm_subdev *subdev = &fb->subdev;
	struct nvkm_device *device = subdev->device;
	struct nvkm_bios *bios = device->bios;
	struct nvkm_ram *ram;
	const u32 rsvd_head = ( 256 * 1024) >> 12; /* vga memory */
@@ -525,8 +528,8 @@ gf100_ram_create_(struct nvkm_object *parent, struct nvkm_object *engine,
	if (ret)
		return ret;

	nv_debug(fb, "0x100800: 0x%08x\n", nvkm_rd32(device, 0x100800));
	nv_debug(fb, "parts 0x%08x mask 0x%08x\n", parts, pmask);
	nvkm_debug(subdev, "100800: %08x\n", nvkm_rd32(device, 0x100800));
	nvkm_debug(subdev, "parts %08x mask %08x\n", parts, pmask);

	ram->type = nvkm_fb_bios_memtype(bios);
	ram->ranks = (nvkm_rd32(device, 0x10f200) & 0x00000004) ? 2 : 1;
@@ -541,7 +544,7 @@ gf100_ram_create_(struct nvkm_object *parent, struct nvkm_object *engine,
				uniform = false;
			}

			nv_debug(fb, "%d: mem_amount 0x%08x\n", part, size);
			nvkm_debug(subdev, "%d: size %08x\n", part, size);
			ram->size += (u64)size << 20;
		}
	}
@@ -628,7 +631,9 @@ gf100_ram_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	       struct nvkm_oclass *oclass, void *data, u32 size,
	       struct nvkm_object **pobject)
{
	struct nvkm_bios *bios = nvkm_bios(parent);
	struct nvkm_fb *fb = nvkm_fb(parent);
	struct nvkm_subdev *subdev = &fb->subdev;
	struct nvkm_bios *bios = subdev->device->bios;
	struct gf100_ram *ram;
	int ret;

@@ -639,13 +644,13 @@ gf100_ram_ctor(struct nvkm_object *parent, struct nvkm_object *engine,

	ret = nvbios_pll_parse(bios, 0x0c, &ram->refpll);
	if (ret) {
		nv_error(ram, "mclk refpll data not found\n");
		nvkm_error(subdev, "mclk refpll data not found\n");
		return ret;
	}

	ret = nvbios_pll_parse(bios, 0x04, &ram->mempll);
	if (ret) {
		nv_error(ram, "mclk pll data not found\n");
		nvkm_error(subdev, "mclk pll data not found\n");
		return ret;
	}

@@ -656,7 +661,7 @@ gf100_ram_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
		ram->base.tidy = gf100_ram_tidy;
		break;
	default:
		nv_warn(ram, "reclocking of this ram type unsupported\n");
		nvkm_warn(subdev, "reclocking of this ram type unsupported\n");
		return 0;
	}

+13 −10
Original line number Diff line number Diff line
@@ -941,7 +941,7 @@ gk104_ram_calc_data(struct nvkm_fb *fb, u32 khz, struct nvkm_ram_data *data)
		}
	}

	nv_error(ram, "ramcfg data for %dMHz not found\n", mhz);
	nvkm_error(&fb->subdev, "ramcfg data for %dMHz not found\n", mhz);
	return -EINVAL;
}

@@ -950,6 +950,7 @@ gk104_ram_calc_xits(struct nvkm_fb *fb, struct nvkm_ram_data *next)
{
	struct gk104_ram *ram = (void *)fb->ram;
	struct gk104_ramfuc *fuc = &ram->fuc;
	struct nvkm_subdev *subdev = &fb->subdev;
	int refclk, i;
	int ret;

@@ -977,7 +978,7 @@ gk104_ram_calc_xits(struct nvkm_fb *fb, struct nvkm_ram_data *next)
			     &ram->fN1, &ram->M1, &ram->P1);
	fuc->mempll.refclk = ret;
	if (ret <= 0) {
		nv_error(fb, "unable to calc refpll\n");
		nvkm_error(subdev, "unable to calc refpll\n");
		return -EINVAL;
	}

@@ -993,7 +994,7 @@ gk104_ram_calc_xits(struct nvkm_fb *fb, struct nvkm_ram_data *next)
		ret = gt215_pll_calc(nv_subdev(fb), &fuc->mempll, next->freq,
				     &ram->N2, NULL, &ram->M2, &ram->P2);
		if (ret <= 0) {
			nv_error(fb, "unable to calc mempll\n");
			nvkm_error(subdev, "unable to calc mempll\n");
			return -EINVAL;
		}
	}
@@ -1247,11 +1248,12 @@ gk104_ram_train_type(struct nvkm_fb *fb, int i, u8 ramcfg,
static int
gk104_ram_train_init_0(struct nvkm_fb *fb, struct gk104_ram_train *train)
{
	struct nvkm_device *device = fb->subdev.device;
	struct nvkm_subdev *subdev = &fb->subdev;
	struct nvkm_device *device = subdev->device;
	int i, j;

	if ((train->mask & 0x03d3) != 0x03d3) {
		nv_warn(fb, "missing link training data\n");
		nvkm_warn(subdev, "missing link training data\n");
		return -EINVAL;
	}

@@ -1449,7 +1451,8 @@ gk104_ram_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	       struct nvkm_object **pobject)
{
	struct nvkm_fb *fb = nvkm_fb(parent);
	struct nvkm_device *device = fb->subdev.device;
	struct nvkm_subdev *subdev = &fb->subdev;
	struct nvkm_device *device = subdev->device;
	struct nvkm_bios *bios = device->bios;
	struct nvkm_gpio *gpio = device->gpio;
	struct dcb_gpio_func func;
@@ -1473,7 +1476,7 @@ gk104_ram_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
		ram->base.tidy = gk104_ram_tidy;
		break;
	default:
		nv_warn(fb, "reclocking of this RAM type is unsupported\n");
		nvkm_warn(subdev, "reclocking of this RAM type is unsupported\n");
		break;
	}

@@ -1510,7 +1513,7 @@ gk104_ram_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	for (i = 0; !ret; i++) {
		ret = gk104_ram_ctor_data(ram, ramcfg, i);
		if (ret && ret != -ENOENT) {
			nv_error(fb, "failed to parse ramcfg data\n");
			nvkm_error(subdev, "failed to parse ramcfg data\n");
			return ret;
		}
	}
@@ -1518,13 +1521,13 @@ gk104_ram_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	/* parse bios data for both pll's */
	ret = nvbios_pll_parse(bios, 0x0c, &ram->fuc.refpll);
	if (ret) {
		nv_error(fb, "mclk refpll data not found\n");
		nvkm_error(subdev, "mclk refpll data not found\n");
		return ret;
	}

	ret = nvbios_pll_parse(bios, 0x04, &ram->fuc.mempll);
	if (ret) {
		nv_error(fb, "mclk pll data not found\n");
		nvkm_error(subdev, "mclk pll data not found\n");
		return ret;
	}

Loading