diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c index 9ca764488e9d..7fa134310f7d 100644 --- a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c @@ -729,15 +729,6 @@ int kbase_devfreq_init(struct kbase_device *kbdev) kbdev->gpu_props.props.core_props.gpu_freq_khz_max = dp->freq_table[0] / 1000; }; - -#if IS_ENABLED(CONFIG_DEVFREQ_THERMAL) - err = kbase_ipa_init(kbdev); - if (err) { - dev_err(kbdev->dev, "IPA initialization failed"); - goto ipa_init_failed; - } -#endif - err = kbase_devfreq_init_core_mask_table(kbdev); if (err) goto init_core_mask_table_failed; @@ -824,6 +815,12 @@ int kbase_devfreq_init(struct kbase_device *kbdev) goto ipa_init_failed; } } else { + err = kbase_ipa_init(kbdev); + if (err) { + dev_err(kbdev->dev, "IPA initialization failed\n"); + goto ipa_init_failed; + } + kbdev->devfreq_cooling = of_devfreq_cooling_register_power( kbdev->dev->of_node, kbdev->devfreq, @@ -842,6 +839,8 @@ int kbase_devfreq_init(struct kbase_device *kbdev) #if IS_ENABLED(CONFIG_DEVFREQ_THERMAL) cooling_reg_failed: + kbase_ipa_term(kbdev); +ipa_init_failed: devfreq_unregister_opp_notifier(kbdev->dev, kbdev->devfreq); #endif /* CONFIG_DEVFREQ_THERMAL */ @@ -858,10 +857,6 @@ devfreq_add_dev_failed: kbase_devfreq_term_core_mask_table(kbdev); init_core_mask_table_failed: -#if IS_ENABLED(CONFIG_DEVFREQ_THERMAL) - kbase_ipa_term(kbdev); -ipa_init_failed: -#endif if (free_devfreq_freq_table) kbase_devfreq_term_freq_table(kbdev);