Commit 28c62976 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/devinit: use new devinit script interpreter entry-point



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 74bcb2e9
Loading
Loading
Loading
Loading
+6 −20
Original line number Diff line number Diff line
@@ -2308,32 +2308,18 @@ nvbios_post(struct nvkm_subdev *subdev, bool execute)
	if (execute)
		nvkm_debug(subdev, "running init tables\n");
	while (!ret && (data = (init_script(bios, ++i)))) {
		struct nvbios_init init = {
			.subdev = subdev,
			.bios = bios,
			.offset = data,
			.outp = NULL,
			.head = -1,
			.execute = execute ? 1 : 0,
		};

		ret = nvbios_exec(&init);
		ret = nvbios_init(subdev, data,
			init.execute = execute ? 1 : 0;
		      );
	}

	/* the vbios parser will run this right after the normal init
	 * tables, whereas the binary driver appears to run it later.
	 */
	if (!ret && (data = init_unknown_script(bios))) {
		struct nvbios_init init = {
			.subdev = subdev,
			.bios = bios,
			.offset = data,
			.outp = NULL,
			.head = -1,
			.execute = execute ? 1 : 0,
		};

		ret = nvbios_exec(&init);
		ret = nvbios_init(subdev, data,
			init.execute = execute ? 1 : 0;
		      );
	}

	return ret;
+5 −10
Original line number Diff line number Diff line
@@ -137,16 +137,11 @@ nv50_devinit_init(struct nvkm_devinit *base)
	while (init->base.post && dcb_outp_parse(bios, i, &ver, &hdr, &outp)) {
		if (nvbios_outp_match(bios, outp.hasht, outp.hashm,
				      &ver, &hdr, &cnt, &len, &info)) {
			struct nvbios_init exec = {
				.subdev = subdev,
				.bios = bios,
				.offset = info.script[0],
				.outp = &outp,
				.crtc = -1,
				.execute = 1,
			};

			nvbios_exec(&exec);
			nvbios_init(subdev, info.script[0],
				init.outp = &outp;
				init.or   = ffs(outp.or) - 1;
				init.link = outp.sorconf.link == 2;
			);
		}
		i++;
	}