summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/msm/adreno/adreno_gpu.c
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2017-10-16 10:13:15 -0400
committerRob Clark <robdclark@gmail.com>2017-10-28 11:01:31 -0400
commite8f3de96a9d36813beba892fec18b05a1e39a122 (patch)
treecddef42d85396f70db6d39a6a4cd46bcee5b19e6 /drivers/gpu/drm/msm/adreno/adreno_gpu.c
parenteec874ce5ff1fe1742317513904a2292af749c7d (diff)
drm/msm/adreno: split out helper to load fw
Prep work for the next patch. Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/msm/adreno/adreno_gpu.c')
-rw-r--r--drivers/gpu/drm/msm/adreno/adreno_gpu.c36
1 files changed, 24 insertions, 12 deletions
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index 8caa7f1f012d..54f77045ff60 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -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;
}