Commit 8854eed1 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/core: pass subdev into nvkm_firmware_get, rather than device



It'd be nice to have FW loading debug messages to appear for the relevant
subsystem, when enabled.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent c4a52d66
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __NVKM_FIRMWARE_H__
#define __NVKM_FIRMWARE_H__
#include <core/subdev.h>

#include <core/device.h>

int nvkm_firmware_get(struct nvkm_device *device, const char *fwname,
int nvkm_firmware_get(const struct nvkm_subdev *, const char *fwname,
		      const struct firmware **fw);

void nvkm_firmware_put(const struct firmware *fw);

#endif
+3 −2
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@

/**
 * nvkm_firmware_get - load firmware from the official nvidia/chip/ directory
 * @device	device that will use that firmware
 * @subdev	subdevice that will use that firmware
 * @fwname	name of firmware file to load
 * @fw		firmware structure to load to
 *
@@ -32,9 +32,10 @@
 * Firmware files released by NVIDIA will always follow this format.
 */
int
nvkm_firmware_get(struct nvkm_device *device, const char *fwname,
nvkm_firmware_get(const struct nvkm_subdev *subdev, const char *fwname,
		  const struct firmware **fw)
{
	struct nvkm_device *device = subdev->device;
	char f[64];
	char cname[16];
	int i;
+1 −3
Original line number Diff line number Diff line
@@ -2115,12 +2115,10 @@ int
gf100_gr_ctor_fw(struct gf100_gr *gr, const char *fwname,
		 struct gf100_gr_fuc *fuc)
{
	struct nvkm_subdev *subdev = &gr->base.engine.subdev;
	struct nvkm_device *device = subdev->device;
	const struct firmware *fw;
	int ret;

	ret = nvkm_firmware_get(device, fwname, &fw);
	ret = nvkm_firmware_get(&gr->base.engine.subdev, fwname, &fw);
	if (ret) {
		ret = gf100_gr_ctor_fw_legacy(gr, fwname, fuc, ret);
		if (ret)
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ nvkm_acr_load_firmware(const struct nvkm_subdev *subdev, const char *name,
	void *blob;
	int ret;

	ret = nvkm_firmware_get(subdev->device, name, &fw);
	ret = nvkm_firmware_get(subdev, name, &fw);
	if (ret)
		return ERR_PTR(ret);
	if (fw->size < min_size) {
+4 −4
Original line number Diff line number Diff line
@@ -98,22 +98,22 @@ ls_ucode_img_load_gr(const struct nvkm_subdev *subdev, struct ls_ucode_img *img,
	int ret;

	snprintf(f, sizeof(f), "gr/%s_bl", falcon_name);
	ret = nvkm_firmware_get(subdev->device, f, &bl);
	ret = nvkm_firmware_get(subdev, f, &bl);
	if (ret)
		goto error;

	snprintf(f, sizeof(f), "gr/%s_inst", falcon_name);
	ret = nvkm_firmware_get(subdev->device, f, &code);
	ret = nvkm_firmware_get(subdev, f, &code);
	if (ret)
		goto free_bl;

	snprintf(f, sizeof(f), "gr/%s_data", falcon_name);
	ret = nvkm_firmware_get(subdev->device, f, &data);
	ret = nvkm_firmware_get(subdev, f, &data);
	if (ret)
		goto free_inst;

	snprintf(f, sizeof(f), "gr/%s_sig", falcon_name);
	ret = nvkm_firmware_get(subdev->device, f, &sig);
	ret = nvkm_firmware_get(subdev, f, &sig);
	if (ret)
		goto free_data;

Loading