Loading drivers/gpu/drm/msm/adreno/a5xx_gpu.c +6 −5 Original line number Diff line number Diff line Loading @@ -26,8 +26,9 @@ static void a5xx_dump(struct msm_gpu *gpu); #define GPU_PAS_ID 13 static int zap_shader_load_mdt(struct device *dev, const char *fwname) static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname) { struct device *dev = &gpu->pdev->dev; const struct firmware *fw; struct device_node *np; struct resource r; Loading Loading @@ -55,10 +56,10 @@ static int zap_shader_load_mdt(struct device *dev, const char *fwname) mem_size = resource_size(&r); /* Request the MDT file for the firmware */ ret = request_firmware(&fw, fwname, dev); if (ret) { fw = adreno_request_fw(to_adreno_gpu(gpu), fwname); if (IS_ERR(fw)) { DRM_DEV_ERROR(dev, "Unable to load %s\n", fwname); return ret; return PTR_ERR(fw); } /* Figure out how much memory we need */ Loading Loading @@ -381,7 +382,7 @@ static int a5xx_zap_shader_init(struct msm_gpu *gpu) return -ENODEV; } ret = zap_shader_load_mdt(&pdev->dev, adreno_gpu->info->zapfw); ret = zap_shader_load_mdt(gpu, adreno_gpu->info->zapfw); loaded = !ret; Loading drivers/gpu/drm/msm/adreno/a5xx_power.c +2 −1 Original line number Diff line number Diff line Loading @@ -264,7 +264,8 @@ void a5xx_gpmu_ucode_init(struct msm_gpu *gpu) return; /* Get the firmware */ if (request_firmware(&fw, adreno_gpu->info->gpmufw, drm->dev)) { fw = adreno_request_fw(adreno_gpu, adreno_gpu->info->gpmufw); if (IS_ERR(fw)) { DRM_ERROR("%s: Could not get GPMU firmware. GPMU will not be active\n", gpu->name); return; Loading drivers/gpu/drm/msm/adreno/adreno_gpu.c +24 −12 Original line number Diff line number Diff line Loading @@ -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; } Loading drivers/gpu/drm/msm/adreno/adreno_gpu.h +2 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,8 @@ static inline int adreno_is_a530(struct adreno_gpu *gpu) } int adreno_get_param(struct msm_gpu *gpu, uint32_t param, uint64_t *value); const struct firmware *adreno_request_fw(struct adreno_gpu *adreno_gpu, const char *fwname); int adreno_hw_init(struct msm_gpu *gpu); uint32_t adreno_last_fence(struct msm_gpu *gpu); void adreno_recover(struct msm_gpu *gpu); Loading Loading
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +6 −5 Original line number Diff line number Diff line Loading @@ -26,8 +26,9 @@ static void a5xx_dump(struct msm_gpu *gpu); #define GPU_PAS_ID 13 static int zap_shader_load_mdt(struct device *dev, const char *fwname) static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname) { struct device *dev = &gpu->pdev->dev; const struct firmware *fw; struct device_node *np; struct resource r; Loading Loading @@ -55,10 +56,10 @@ static int zap_shader_load_mdt(struct device *dev, const char *fwname) mem_size = resource_size(&r); /* Request the MDT file for the firmware */ ret = request_firmware(&fw, fwname, dev); if (ret) { fw = adreno_request_fw(to_adreno_gpu(gpu), fwname); if (IS_ERR(fw)) { DRM_DEV_ERROR(dev, "Unable to load %s\n", fwname); return ret; return PTR_ERR(fw); } /* Figure out how much memory we need */ Loading Loading @@ -381,7 +382,7 @@ static int a5xx_zap_shader_init(struct msm_gpu *gpu) return -ENODEV; } ret = zap_shader_load_mdt(&pdev->dev, adreno_gpu->info->zapfw); ret = zap_shader_load_mdt(gpu, adreno_gpu->info->zapfw); loaded = !ret; Loading
drivers/gpu/drm/msm/adreno/a5xx_power.c +2 −1 Original line number Diff line number Diff line Loading @@ -264,7 +264,8 @@ void a5xx_gpmu_ucode_init(struct msm_gpu *gpu) return; /* Get the firmware */ if (request_firmware(&fw, adreno_gpu->info->gpmufw, drm->dev)) { fw = adreno_request_fw(adreno_gpu, adreno_gpu->info->gpmufw); if (IS_ERR(fw)) { DRM_ERROR("%s: Could not get GPMU firmware. GPMU will not be active\n", gpu->name); return; Loading
drivers/gpu/drm/msm/adreno/adreno_gpu.c +24 −12 Original line number Diff line number Diff line Loading @@ -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; } Loading
drivers/gpu/drm/msm/adreno/adreno_gpu.h +2 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,8 @@ static inline int adreno_is_a530(struct adreno_gpu *gpu) } int adreno_get_param(struct msm_gpu *gpu, uint32_t param, uint64_t *value); const struct firmware *adreno_request_fw(struct adreno_gpu *adreno_gpu, const char *fwname); int adreno_hw_init(struct msm_gpu *gpu); uint32_t adreno_last_fence(struct msm_gpu *gpu); void adreno_recover(struct msm_gpu *gpu); Loading