]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpu/drm/msm/adreno/adreno_gpu.c
drm/msm/adreno: split out helper to load fw
[linux.git] / drivers / gpu / drm / msm / adreno / adreno_gpu.c
index 8caa7f1f012d3c32304786b8c51defa534bcc266..54f77045ff607438222b706fbf3a596192424913 100644 (file)
@@ -64,29 +64,41 @@ int adreno_get_param(struct msm_gpu *gpu, uint32_t param, uint64_t *value)
        }
 }
 
-static int adreno_load_fw(struct adreno_gpu *adreno_gpu)
+const struct firmware *
+adreno_request_fw(struct adreno_gpu *adreno_gpu, const char *fwname)
 {
        struct drm_device *drm = adreno_gpu->base.dev;
+       const struct firmware *fw = NULL;
        int ret;
 
+       ret = request_firmware(&fw, fwname, drm->dev);
+       if (ret) {
+               dev_err(drm->dev, "failed to load %s: %d\n", fwname, ret);
+               return ERR_PTR(ret);
+       }
+
+       return fw;
+}
+
+static int adreno_load_fw(struct adreno_gpu *adreno_gpu)
+{
+       const struct firmware *fw;
+
        if (adreno_gpu->pm4)
                return 0;
 
-       ret = request_firmware(&adreno_gpu->pm4, adreno_gpu->info->pm4fw, drm->dev);
-       if (ret) {
-               dev_err(drm->dev, "failed to load %s PM4 firmware: %d\n",
-                               adreno_gpu->info->pm4fw, ret);
-               return ret;
-       }
+       fw = adreno_request_fw(adreno_gpu, adreno_gpu->info->pm4fw);
+       if (IS_ERR(fw))
+               return PTR_ERR(fw);
+       adreno_gpu->pm4 = fw;
 
-       ret = request_firmware(&adreno_gpu->pfp, adreno_gpu->info->pfpfw, drm->dev);
-       if (ret) {
-               dev_err(drm->dev, "failed to load %s PFP firmware: %d\n",
-                               adreno_gpu->info->pfpfw, ret);
+       fw = adreno_request_fw(adreno_gpu, adreno_gpu->info->pfpfw);
+       if (IS_ERR(fw)) {
                release_firmware(adreno_gpu->pm4);
                adreno_gpu->pm4 = NULL;
-               return ret;
+               return PTR_ERR(fw);
        }
+       adreno_gpu->pfp = fw;
 
        return 0;
 }