OSDN Git Service

drm/nouveau/gr/gf100: use the nvkm_firmware functions
authorAlexandre Courbot <acourbot@nvidia.com>
Mon, 18 Jan 2016 06:07:10 +0000 (15:07 +0900)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 14 Mar 2016 00:11:06 +0000 (10:11 +1000)
Use the nvkm_firmware_* functions when loading external firmware to
avoid duplicate code.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c

index 1f81069..f2410af 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <core/client.h>
 #include <core/option.h>
+#include <core/firmware.h>
 #include <subdev/fb.h>
 #include <subdev/mc.h>
 #include <subdev/pmu.h>
@@ -1720,22 +1721,9 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, const char *fwname,
        struct nvkm_subdev *subdev = &gr->base.engine.subdev;
        struct nvkm_device *device = subdev->device;
        const struct firmware *fw;
-       char f[64];
-       char cname[16];
        int ret;
-       int i;
-
-       /* Convert device name to lowercase */
-       strncpy(cname, device->chip->name, sizeof(cname));
-       cname[sizeof(cname) - 1] = '\0';
-       i = strlen(cname);
-       while (i) {
-               --i;
-               cname[i] = tolower(cname[i]);
-       }
 
-       snprintf(f, sizeof(f), "nvidia/%s/%s.bin", cname, fwname);
-       ret = request_firmware(&fw, f, device->dev);
+       ret = nvkm_firmware_get(device, fwname, &fw);
        if (ret) {
                nvkm_error(subdev, "failed to load %s\n", fwname);
                return ret;
@@ -1743,7 +1731,7 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, const char *fwname,
 
        fuc->size = fw->size;
        fuc->data = kmemdup(fw->data, fuc->size, GFP_KERNEL);
-       release_firmware(fw);
+       nvkm_firmware_put(fw);
        return (fuc->data != NULL) ? 0 : -ENOMEM;
 }