pfdev 16 drivers/gpu/drm/panfrost/panfrost_devfreq.c static void panfrost_devfreq_update_utilization(struct panfrost_device *pfdev, int slot); pfdev 21 drivers/gpu/drm/panfrost/panfrost_devfreq.c struct panfrost_device *pfdev = platform_get_drvdata(to_platform_device(dev)); pfdev 23 drivers/gpu/drm/panfrost/panfrost_devfreq.c unsigned long old_clk_rate = pfdev->devfreq.cur_freq; pfdev 43 drivers/gpu/drm/panfrost/panfrost_devfreq.c err = regulator_set_voltage(pfdev->regulator, target_volt, pfdev 52 drivers/gpu/drm/panfrost/panfrost_devfreq.c err = clk_set_rate(pfdev->clock, target_rate); pfdev 56 drivers/gpu/drm/panfrost/panfrost_devfreq.c if (pfdev->regulator) pfdev 57 drivers/gpu/drm/panfrost/panfrost_devfreq.c regulator_set_voltage(pfdev->regulator, pfdev 58 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.cur_volt, pfdev 59 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.cur_volt); pfdev 64 drivers/gpu/drm/panfrost/panfrost_devfreq.c err = regulator_set_voltage(pfdev->regulator, target_volt, pfdev 70 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.cur_freq = target_rate; pfdev 71 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.cur_volt = target_volt; pfdev 76 drivers/gpu/drm/panfrost/panfrost_devfreq.c static void panfrost_devfreq_reset(struct panfrost_device *pfdev) pfdev 82 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[i].busy_time = 0; pfdev 83 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[i].idle_time = 0; pfdev 84 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[i].time_last_update = now; pfdev 91 drivers/gpu/drm/panfrost/panfrost_devfreq.c struct panfrost_device *pfdev = platform_get_drvdata(to_platform_device(dev)); pfdev 95 drivers/gpu/drm/panfrost/panfrost_devfreq.c panfrost_devfreq_update_utilization(pfdev, i); pfdev 98 drivers/gpu/drm/panfrost/panfrost_devfreq.c status->current_frequency = clk_get_rate(pfdev->clock); pfdev 99 drivers/gpu/drm/panfrost/panfrost_devfreq.c status->total_time = ktime_to_ns(ktime_add(pfdev->devfreq.slot[0].busy_time, pfdev 100 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[0].idle_time)); pfdev 104 drivers/gpu/drm/panfrost/panfrost_devfreq.c status->busy_time += ktime_to_ns(pfdev->devfreq.slot[i].busy_time); pfdev 110 drivers/gpu/drm/panfrost/panfrost_devfreq.c panfrost_devfreq_reset(pfdev); pfdev 112 drivers/gpu/drm/panfrost/panfrost_devfreq.c dev_dbg(pfdev->dev, "busy %lu total %lu %lu %% freq %lu MHz\n", status->busy_time, pfdev 122 drivers/gpu/drm/panfrost/panfrost_devfreq.c struct panfrost_device *pfdev = platform_get_drvdata(to_platform_device(dev)); pfdev 124 drivers/gpu/drm/panfrost/panfrost_devfreq.c *freq = pfdev->devfreq.cur_freq; pfdev 136 drivers/gpu/drm/panfrost/panfrost_devfreq.c int panfrost_devfreq_init(struct panfrost_device *pfdev) pfdev 141 drivers/gpu/drm/panfrost/panfrost_devfreq.c ret = dev_pm_opp_of_add_table(&pfdev->pdev->dev); pfdev 147 drivers/gpu/drm/panfrost/panfrost_devfreq.c panfrost_devfreq_reset(pfdev); pfdev 149 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.cur_freq = clk_get_rate(pfdev->clock); pfdev 151 drivers/gpu/drm/panfrost/panfrost_devfreq.c opp = devfreq_recommended_opp(&pfdev->pdev->dev, &pfdev->devfreq.cur_freq, 0); pfdev 155 drivers/gpu/drm/panfrost/panfrost_devfreq.c panfrost_devfreq_profile.initial_freq = pfdev->devfreq.cur_freq; pfdev 158 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.devfreq = devm_devfreq_add_device(&pfdev->pdev->dev, pfdev 161 drivers/gpu/drm/panfrost/panfrost_devfreq.c if (IS_ERR(pfdev->devfreq.devfreq)) { pfdev 162 drivers/gpu/drm/panfrost/panfrost_devfreq.c DRM_DEV_ERROR(&pfdev->pdev->dev, "Couldn't initialize GPU devfreq\n"); pfdev 163 drivers/gpu/drm/panfrost/panfrost_devfreq.c ret = PTR_ERR(pfdev->devfreq.devfreq); pfdev 164 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.devfreq = NULL; pfdev 165 drivers/gpu/drm/panfrost/panfrost_devfreq.c dev_pm_opp_of_remove_table(&pfdev->pdev->dev); pfdev 172 drivers/gpu/drm/panfrost/panfrost_devfreq.c void panfrost_devfreq_fini(struct panfrost_device *pfdev) pfdev 174 drivers/gpu/drm/panfrost/panfrost_devfreq.c dev_pm_opp_of_remove_table(&pfdev->pdev->dev); pfdev 177 drivers/gpu/drm/panfrost/panfrost_devfreq.c void panfrost_devfreq_resume(struct panfrost_device *pfdev) pfdev 181 drivers/gpu/drm/panfrost/panfrost_devfreq.c if (!pfdev->devfreq.devfreq) pfdev 184 drivers/gpu/drm/panfrost/panfrost_devfreq.c panfrost_devfreq_reset(pfdev); pfdev 186 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[i].busy = false; pfdev 188 drivers/gpu/drm/panfrost/panfrost_devfreq.c devfreq_resume_device(pfdev->devfreq.devfreq); pfdev 191 drivers/gpu/drm/panfrost/panfrost_devfreq.c void panfrost_devfreq_suspend(struct panfrost_device *pfdev) pfdev 193 drivers/gpu/drm/panfrost/panfrost_devfreq.c if (!pfdev->devfreq.devfreq) pfdev 196 drivers/gpu/drm/panfrost/panfrost_devfreq.c devfreq_suspend_device(pfdev->devfreq.devfreq); pfdev 199 drivers/gpu/drm/panfrost/panfrost_devfreq.c static void panfrost_devfreq_update_utilization(struct panfrost_device *pfdev, int slot) pfdev 201 drivers/gpu/drm/panfrost/panfrost_devfreq.c struct panfrost_devfreq_slot *devfreq_slot = &pfdev->devfreq.slot[slot]; pfdev 205 drivers/gpu/drm/panfrost/panfrost_devfreq.c if (!pfdev->devfreq.devfreq) pfdev 209 drivers/gpu/drm/panfrost/panfrost_devfreq.c last = pfdev->devfreq.slot[slot].time_last_update; pfdev 213 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[slot].busy_time += ktime_sub(now, last); pfdev 215 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[slot].idle_time += ktime_sub(now, last); pfdev 217 drivers/gpu/drm/panfrost/panfrost_devfreq.c pfdev->devfreq.slot[slot].time_last_update = now; pfdev 221 drivers/gpu/drm/panfrost/panfrost_devfreq.c void panfrost_devfreq_record_transition(struct panfrost_device *pfdev, int slot) pfdev 223 drivers/gpu/drm/panfrost/panfrost_devfreq.c struct panfrost_devfreq_slot *devfreq_slot = &pfdev->devfreq.slot[slot]; pfdev 225 drivers/gpu/drm/panfrost/panfrost_devfreq.c panfrost_devfreq_update_utilization(pfdev, slot); pfdev 7 drivers/gpu/drm/panfrost/panfrost_devfreq.h int panfrost_devfreq_init(struct panfrost_device *pfdev); pfdev 8 drivers/gpu/drm/panfrost/panfrost_devfreq.h void panfrost_devfreq_fini(struct panfrost_device *pfdev); pfdev 10 drivers/gpu/drm/panfrost/panfrost_devfreq.h void panfrost_devfreq_resume(struct panfrost_device *pfdev); pfdev 11 drivers/gpu/drm/panfrost/panfrost_devfreq.h void panfrost_devfreq_suspend(struct panfrost_device *pfdev); pfdev 13 drivers/gpu/drm/panfrost/panfrost_devfreq.h void panfrost_devfreq_record_transition(struct panfrost_device *pfdev, int slot); pfdev 18 drivers/gpu/drm/panfrost/panfrost_device.c static int panfrost_reset_init(struct panfrost_device *pfdev) pfdev 22 drivers/gpu/drm/panfrost/panfrost_device.c pfdev->rstc = devm_reset_control_array_get(pfdev->dev, false, true); pfdev 23 drivers/gpu/drm/panfrost/panfrost_device.c if (IS_ERR(pfdev->rstc)) { pfdev 24 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "get reset failed %ld\n", PTR_ERR(pfdev->rstc)); pfdev 25 drivers/gpu/drm/panfrost/panfrost_device.c return PTR_ERR(pfdev->rstc); pfdev 28 drivers/gpu/drm/panfrost/panfrost_device.c err = reset_control_deassert(pfdev->rstc); pfdev 35 drivers/gpu/drm/panfrost/panfrost_device.c static void panfrost_reset_fini(struct panfrost_device *pfdev) pfdev 37 drivers/gpu/drm/panfrost/panfrost_device.c reset_control_assert(pfdev->rstc); pfdev 40 drivers/gpu/drm/panfrost/panfrost_device.c static int panfrost_clk_init(struct panfrost_device *pfdev) pfdev 45 drivers/gpu/drm/panfrost/panfrost_device.c pfdev->clock = devm_clk_get(pfdev->dev, NULL); pfdev 46 drivers/gpu/drm/panfrost/panfrost_device.c if (IS_ERR(pfdev->clock)) { pfdev 47 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "get clock failed %ld\n", PTR_ERR(pfdev->clock)); pfdev 48 drivers/gpu/drm/panfrost/panfrost_device.c return PTR_ERR(pfdev->clock); pfdev 51 drivers/gpu/drm/panfrost/panfrost_device.c rate = clk_get_rate(pfdev->clock); pfdev 52 drivers/gpu/drm/panfrost/panfrost_device.c dev_info(pfdev->dev, "clock rate = %lu\n", rate); pfdev 54 drivers/gpu/drm/panfrost/panfrost_device.c err = clk_prepare_enable(pfdev->clock); pfdev 58 drivers/gpu/drm/panfrost/panfrost_device.c pfdev->bus_clock = devm_clk_get_optional(pfdev->dev, "bus"); pfdev 59 drivers/gpu/drm/panfrost/panfrost_device.c if (IS_ERR(pfdev->bus_clock)) { pfdev 60 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "get bus_clock failed %ld\n", pfdev 61 drivers/gpu/drm/panfrost/panfrost_device.c PTR_ERR(pfdev->bus_clock)); pfdev 62 drivers/gpu/drm/panfrost/panfrost_device.c return PTR_ERR(pfdev->bus_clock); pfdev 65 drivers/gpu/drm/panfrost/panfrost_device.c if (pfdev->bus_clock) { pfdev 66 drivers/gpu/drm/panfrost/panfrost_device.c rate = clk_get_rate(pfdev->bus_clock); pfdev 67 drivers/gpu/drm/panfrost/panfrost_device.c dev_info(pfdev->dev, "bus_clock rate = %lu\n", rate); pfdev 69 drivers/gpu/drm/panfrost/panfrost_device.c err = clk_prepare_enable(pfdev->bus_clock); pfdev 77 drivers/gpu/drm/panfrost/panfrost_device.c clk_disable_unprepare(pfdev->clock); pfdev 82 drivers/gpu/drm/panfrost/panfrost_device.c static void panfrost_clk_fini(struct panfrost_device *pfdev) pfdev 84 drivers/gpu/drm/panfrost/panfrost_device.c clk_disable_unprepare(pfdev->bus_clock); pfdev 85 drivers/gpu/drm/panfrost/panfrost_device.c clk_disable_unprepare(pfdev->clock); pfdev 88 drivers/gpu/drm/panfrost/panfrost_device.c static int panfrost_regulator_init(struct panfrost_device *pfdev) pfdev 92 drivers/gpu/drm/panfrost/panfrost_device.c pfdev->regulator = devm_regulator_get(pfdev->dev, "mali"); pfdev 93 drivers/gpu/drm/panfrost/panfrost_device.c if (IS_ERR(pfdev->regulator)) { pfdev 94 drivers/gpu/drm/panfrost/panfrost_device.c ret = PTR_ERR(pfdev->regulator); pfdev 95 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "failed to get regulator: %d\n", ret); pfdev 99 drivers/gpu/drm/panfrost/panfrost_device.c ret = regulator_enable(pfdev->regulator); pfdev 101 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "failed to enable regulator: %d\n", ret); pfdev 108 drivers/gpu/drm/panfrost/panfrost_device.c static void panfrost_regulator_fini(struct panfrost_device *pfdev) pfdev 110 drivers/gpu/drm/panfrost/panfrost_device.c regulator_disable(pfdev->regulator); pfdev 113 drivers/gpu/drm/panfrost/panfrost_device.c int panfrost_device_init(struct panfrost_device *pfdev) pfdev 118 drivers/gpu/drm/panfrost/panfrost_device.c mutex_init(&pfdev->sched_lock); pfdev 119 drivers/gpu/drm/panfrost/panfrost_device.c mutex_init(&pfdev->reset_lock); pfdev 120 drivers/gpu/drm/panfrost/panfrost_device.c INIT_LIST_HEAD(&pfdev->scheduled_jobs); pfdev 121 drivers/gpu/drm/panfrost/panfrost_device.c INIT_LIST_HEAD(&pfdev->as_lru_list); pfdev 123 drivers/gpu/drm/panfrost/panfrost_device.c spin_lock_init(&pfdev->as_lock); pfdev 125 drivers/gpu/drm/panfrost/panfrost_device.c err = panfrost_clk_init(pfdev); pfdev 127 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "clk init failed %d\n", err); pfdev 131 drivers/gpu/drm/panfrost/panfrost_device.c err = panfrost_regulator_init(pfdev); pfdev 133 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "regulator init failed %d\n", err); pfdev 137 drivers/gpu/drm/panfrost/panfrost_device.c err = panfrost_reset_init(pfdev); pfdev 139 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "reset init failed %d\n", err); pfdev 143 drivers/gpu/drm/panfrost/panfrost_device.c res = platform_get_resource(pfdev->pdev, IORESOURCE_MEM, 0); pfdev 144 drivers/gpu/drm/panfrost/panfrost_device.c pfdev->iomem = devm_ioremap_resource(pfdev->dev, res); pfdev 145 drivers/gpu/drm/panfrost/panfrost_device.c if (IS_ERR(pfdev->iomem)) { pfdev 146 drivers/gpu/drm/panfrost/panfrost_device.c dev_err(pfdev->dev, "failed to ioremap iomem\n"); pfdev 147 drivers/gpu/drm/panfrost/panfrost_device.c err = PTR_ERR(pfdev->iomem); pfdev 151 drivers/gpu/drm/panfrost/panfrost_device.c err = panfrost_gpu_init(pfdev); pfdev 155 drivers/gpu/drm/panfrost/panfrost_device.c err = panfrost_mmu_init(pfdev); pfdev 159 drivers/gpu/drm/panfrost/panfrost_device.c err = panfrost_job_init(pfdev); pfdev 163 drivers/gpu/drm/panfrost/panfrost_device.c err = panfrost_perfcnt_init(pfdev); pfdev 169 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_job_fini(pfdev); pfdev 171 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_mmu_fini(pfdev); pfdev 173 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_gpu_fini(pfdev); pfdev 175 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_reset_fini(pfdev); pfdev 177 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_regulator_fini(pfdev); pfdev 179 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_clk_fini(pfdev); pfdev 183 drivers/gpu/drm/panfrost/panfrost_device.c void panfrost_device_fini(struct panfrost_device *pfdev) pfdev 185 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_perfcnt_fini(pfdev); pfdev 186 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_job_fini(pfdev); pfdev 187 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_mmu_fini(pfdev); pfdev 188 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_gpu_fini(pfdev); pfdev 189 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_reset_fini(pfdev); pfdev 190 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_regulator_fini(pfdev); pfdev 191 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_clk_fini(pfdev); pfdev 194 drivers/gpu/drm/panfrost/panfrost_device.c const char *panfrost_exception_name(struct panfrost_device *pfdev, u32 exception_code) pfdev 245 drivers/gpu/drm/panfrost/panfrost_device.c void panfrost_device_reset(struct panfrost_device *pfdev) pfdev 247 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_gpu_soft_reset(pfdev); pfdev 249 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_gpu_power_on(pfdev); pfdev 250 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_mmu_reset(pfdev); pfdev 251 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_job_enable_interrupts(pfdev); pfdev 258 drivers/gpu/drm/panfrost/panfrost_device.c struct panfrost_device *pfdev = platform_get_drvdata(pdev); pfdev 260 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_device_reset(pfdev); pfdev 261 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_devfreq_resume(pfdev); pfdev 269 drivers/gpu/drm/panfrost/panfrost_device.c struct panfrost_device *pfdev = platform_get_drvdata(pdev); pfdev 271 drivers/gpu/drm/panfrost/panfrost_device.c if (!panfrost_job_is_idle(pfdev)) pfdev 274 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_devfreq_suspend(pfdev); pfdev 275 drivers/gpu/drm/panfrost/panfrost_device.c panfrost_gpu_power_off(pfdev); pfdev 111 drivers/gpu/drm/panfrost/panfrost_device.h struct panfrost_device *pfdev; pfdev 125 drivers/gpu/drm/panfrost/panfrost_device.h static inline int panfrost_model_cmp(struct panfrost_device *pfdev, s32 id) pfdev 127 drivers/gpu/drm/panfrost/panfrost_device.h s32 match_id = pfdev->features.id; pfdev 134 drivers/gpu/drm/panfrost/panfrost_device.h static inline bool panfrost_model_is_bifrost(struct panfrost_device *pfdev) pfdev 136 drivers/gpu/drm/panfrost/panfrost_device.h return panfrost_model_cmp(pfdev, 0x1000) >= 0; pfdev 139 drivers/gpu/drm/panfrost/panfrost_device.h static inline bool panfrost_model_eq(struct panfrost_device *pfdev, s32 id) pfdev 141 drivers/gpu/drm/panfrost/panfrost_device.h return !panfrost_model_cmp(pfdev, id); pfdev 146 drivers/gpu/drm/panfrost/panfrost_device.h int panfrost_device_init(struct panfrost_device *pfdev); pfdev 147 drivers/gpu/drm/panfrost/panfrost_device.h void panfrost_device_fini(struct panfrost_device *pfdev); pfdev 148 drivers/gpu/drm/panfrost/panfrost_device.h void panfrost_device_reset(struct panfrost_device *pfdev); pfdev 153 drivers/gpu/drm/panfrost/panfrost_device.h const char *panfrost_exception_name(struct panfrost_device *pfdev, u32 exception_code); pfdev 30 drivers/gpu/drm/panfrost/panfrost_drv.c struct panfrost_device *pfdev = ddev->dev_private; pfdev 37 drivers/gpu/drm/panfrost/panfrost_drv.c param->value = pfdev->features.member; \ pfdev 42 drivers/gpu/drm/panfrost/panfrost_drv.c param->value = pfdev->features.member[param->param - \ pfdev 242 drivers/gpu/drm/panfrost/panfrost_drv.c struct panfrost_device *pfdev = dev->dev_private; pfdev 268 drivers/gpu/drm/panfrost/panfrost_drv.c job->pfdev = pfdev; pfdev 271 drivers/gpu/drm/panfrost/panfrost_drv.c job->flush_id = panfrost_gpu_get_latest_flush_id(pfdev); pfdev 390 drivers/gpu/drm/panfrost/panfrost_drv.c struct panfrost_device *pfdev = dev->dev_private; pfdev 403 drivers/gpu/drm/panfrost/panfrost_drv.c mutex_lock(&pfdev->shrinker_lock); pfdev 432 drivers/gpu/drm/panfrost/panfrost_drv.c &pfdev->shrinker_list); pfdev 439 drivers/gpu/drm/panfrost/panfrost_drv.c mutex_unlock(&pfdev->shrinker_lock); pfdev 483 drivers/gpu/drm/panfrost/panfrost_drv.c struct panfrost_device *pfdev = dev->dev_private; pfdev 490 drivers/gpu/drm/panfrost/panfrost_drv.c panfrost_priv->pfdev = pfdev; pfdev 578 drivers/gpu/drm/panfrost/panfrost_drv.c struct panfrost_device *pfdev; pfdev 582 drivers/gpu/drm/panfrost/panfrost_drv.c pfdev = devm_kzalloc(&pdev->dev, sizeof(*pfdev), GFP_KERNEL); pfdev 583 drivers/gpu/drm/panfrost/panfrost_drv.c if (!pfdev) pfdev 586 drivers/gpu/drm/panfrost/panfrost_drv.c pfdev->pdev = pdev; pfdev 587 drivers/gpu/drm/panfrost/panfrost_drv.c pfdev->dev = &pdev->dev; pfdev 589 drivers/gpu/drm/panfrost/panfrost_drv.c platform_set_drvdata(pdev, pfdev); pfdev 596 drivers/gpu/drm/panfrost/panfrost_drv.c ddev->dev_private = pfdev; pfdev 597 drivers/gpu/drm/panfrost/panfrost_drv.c pfdev->ddev = ddev; pfdev 599 drivers/gpu/drm/panfrost/panfrost_drv.c mutex_init(&pfdev->shrinker_lock); pfdev 600 drivers/gpu/drm/panfrost/panfrost_drv.c INIT_LIST_HEAD(&pfdev->shrinker_list); pfdev 602 drivers/gpu/drm/panfrost/panfrost_drv.c err = panfrost_device_init(pfdev); pfdev 609 drivers/gpu/drm/panfrost/panfrost_drv.c err = panfrost_devfreq_init(pfdev); pfdev 616 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_set_active(pfdev->dev); pfdev 617 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_mark_last_busy(pfdev->dev); pfdev 618 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_enable(pfdev->dev); pfdev 619 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_set_autosuspend_delay(pfdev->dev, 50); /* ~3 frames */ pfdev 620 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_use_autosuspend(pfdev->dev); pfdev 635 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_disable(pfdev->dev); pfdev 636 drivers/gpu/drm/panfrost/panfrost_drv.c panfrost_devfreq_fini(pfdev); pfdev 638 drivers/gpu/drm/panfrost/panfrost_drv.c panfrost_device_fini(pfdev); pfdev 646 drivers/gpu/drm/panfrost/panfrost_drv.c struct panfrost_device *pfdev = platform_get_drvdata(pdev); pfdev 647 drivers/gpu/drm/panfrost/panfrost_drv.c struct drm_device *ddev = pfdev->ddev; pfdev 652 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_get_sync(pfdev->dev); pfdev 653 drivers/gpu/drm/panfrost/panfrost_drv.c panfrost_devfreq_fini(pfdev); pfdev 654 drivers/gpu/drm/panfrost/panfrost_drv.c panfrost_device_fini(pfdev); pfdev 655 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_put_sync_suspend(pfdev->dev); pfdev 656 drivers/gpu/drm/panfrost/panfrost_drv.c pm_runtime_disable(pfdev->dev); pfdev 303 drivers/gpu/drm/panfrost/panfrost_features.h static inline bool panfrost_has_hw_feature(struct panfrost_device *pfdev, pfdev 306 drivers/gpu/drm/panfrost/panfrost_features.h return test_bit(feat, pfdev->features.hw_features); pfdev 20 drivers/gpu/drm/panfrost/panfrost_gem.c struct panfrost_device *pfdev = obj->dev->dev_private; pfdev 28 drivers/gpu/drm/panfrost/panfrost_gem.c mutex_lock(&pfdev->shrinker_lock); pfdev 30 drivers/gpu/drm/panfrost/panfrost_gem.c mutex_unlock(&pfdev->shrinker_lock); pfdev 44 drivers/gpu/drm/panfrost/panfrost_gem.c dma_unmap_sg(pfdev->dev, bo->sgts[i].sgl, pfdev 21 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c struct panfrost_device *pfdev = pfdev 26 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c if (!mutex_trylock(&pfdev->shrinker_lock)) pfdev 29 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c list_for_each_entry(shmem, &pfdev->shrinker_list, madv_list) { pfdev 34 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c mutex_unlock(&pfdev->shrinker_lock); pfdev 60 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c struct panfrost_device *pfdev = pfdev 65 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c if (!mutex_trylock(&pfdev->shrinker_lock)) pfdev 68 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c list_for_each_entry_safe(shmem, tmp, &pfdev->shrinker_list, madv_list) { pfdev 78 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c mutex_unlock(&pfdev->shrinker_lock); pfdev 94 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c struct panfrost_device *pfdev = dev->dev_private; pfdev 95 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c pfdev->shrinker.count_objects = panfrost_gem_shrinker_count; pfdev 96 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c pfdev->shrinker.scan_objects = panfrost_gem_shrinker_scan; pfdev 97 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c pfdev->shrinker.seeks = DEFAULT_SEEKS; pfdev 98 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c WARN_ON(register_shrinker(&pfdev->shrinker)); pfdev 109 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c struct panfrost_device *pfdev = dev->dev_private; pfdev 111 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c if (pfdev->shrinker.nr_deferred) { pfdev 112 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c unregister_shrinker(&pfdev->shrinker); pfdev 23 drivers/gpu/drm/panfrost/panfrost_gpu.c struct panfrost_device *pfdev = data; pfdev 24 drivers/gpu/drm/panfrost/panfrost_gpu.c u32 state = gpu_read(pfdev, GPU_INT_STAT); pfdev 25 drivers/gpu/drm/panfrost/panfrost_gpu.c u32 fault_status = gpu_read(pfdev, GPU_FAULT_STATUS); pfdev 31 drivers/gpu/drm/panfrost/panfrost_gpu.c u64 address = (u64) gpu_read(pfdev, GPU_FAULT_ADDRESS_HI) << 32; pfdev 32 drivers/gpu/drm/panfrost/panfrost_gpu.c address |= gpu_read(pfdev, GPU_FAULT_ADDRESS_LO); pfdev 34 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_warn(pfdev->dev, "GPU Fault 0x%08x (%s) at 0x%016llx\n", pfdev 35 drivers/gpu/drm/panfrost/panfrost_gpu.c fault_status & 0xFF, panfrost_exception_name(pfdev, fault_status), pfdev 39 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_warn(pfdev->dev, "There were multiple GPU faults - some have not been reported\n"); pfdev 41 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_INT_MASK, 0); pfdev 45 drivers/gpu/drm/panfrost/panfrost_gpu.c panfrost_perfcnt_sample_done(pfdev); pfdev 48 drivers/gpu/drm/panfrost/panfrost_gpu.c panfrost_perfcnt_clean_cache_done(pfdev); pfdev 50 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_INT_CLEAR, state); pfdev 55 drivers/gpu/drm/panfrost/panfrost_gpu.c int panfrost_gpu_soft_reset(struct panfrost_device *pfdev) pfdev 60 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_INT_MASK, 0); pfdev 61 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_INT_CLEAR, GPU_IRQ_RESET_COMPLETED); pfdev 62 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_CMD, GPU_CMD_SOFT_RESET); pfdev 64 drivers/gpu/drm/panfrost/panfrost_gpu.c ret = readl_relaxed_poll_timeout(pfdev->iomem + GPU_INT_RAWSTAT, pfdev 68 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_err(pfdev->dev, "gpu soft reset timed out\n"); pfdev 72 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_INT_CLEAR, GPU_IRQ_MASK_ALL); pfdev 73 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_INT_MASK, GPU_IRQ_MASK_ALL); pfdev 78 drivers/gpu/drm/panfrost/panfrost_gpu.c static void panfrost_gpu_init_quirks(struct panfrost_device *pfdev) pfdev 82 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_has_hw_issue(pfdev, HW_ISSUE_8443) || pfdev 83 drivers/gpu/drm/panfrost/panfrost_gpu.c panfrost_has_hw_issue(pfdev, HW_ISSUE_11035)) pfdev 86 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_has_hw_issue(pfdev, HW_ISSUE_10327)) pfdev 89 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_has_hw_issue(pfdev, HW_ISSUE_10797)) pfdev 92 drivers/gpu/drm/panfrost/panfrost_gpu.c if (!panfrost_has_hw_issue(pfdev, GPUCORE_1619)) { pfdev 93 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_model_cmp(pfdev, 0x750) < 0) /* T60x, T62x, T72x */ pfdev 95 drivers/gpu/drm/panfrost/panfrost_gpu.c else if (panfrost_model_cmp(pfdev, 0x880) <= 0) /* T76x, T8xx */ pfdev 99 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_has_hw_feature(pfdev, HW_FEATURE_TLS_HASHING)) pfdev 103 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_SHADER_CONFIG, quirks); pfdev 106 drivers/gpu/drm/panfrost/panfrost_gpu.c quirks = gpu_read(pfdev, GPU_TILER_CONFIG); pfdev 109 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_has_hw_issue(pfdev, HW_ISSUE_T76X_3953)) pfdev 112 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_TILER_CONFIG, quirks); pfdev 115 drivers/gpu/drm/panfrost/panfrost_gpu.c quirks = gpu_read(pfdev, GPU_L2_MMU_CONFIG); pfdev 118 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_has_hw_feature(pfdev, HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG)) pfdev 125 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_L2_MMU_CONFIG, quirks); pfdev 128 drivers/gpu/drm/panfrost/panfrost_gpu.c if ((panfrost_model_eq(pfdev, 0x860) || panfrost_model_eq(pfdev, 0x880)) && pfdev 129 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.revision >= 0x2000) pfdev 131 drivers/gpu/drm/panfrost/panfrost_gpu.c else if (panfrost_model_eq(pfdev, 0x6000) && pfdev 132 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.coherency_features == COHERENCY_ACE) pfdev 137 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, GPU_JM_CONFIG, quirks); pfdev 196 drivers/gpu/drm/panfrost/panfrost_gpu.c static void panfrost_gpu_init_features(struct panfrost_device *pfdev) pfdev 205 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.l2_features = gpu_read(pfdev, GPU_L2_FEATURES); pfdev 206 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.core_features = gpu_read(pfdev, GPU_CORE_FEATURES); pfdev 207 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.tiler_features = gpu_read(pfdev, GPU_TILER_FEATURES); pfdev 208 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.mem_features = gpu_read(pfdev, GPU_MEM_FEATURES); pfdev 209 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.mmu_features = gpu_read(pfdev, GPU_MMU_FEATURES); pfdev 210 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.thread_features = gpu_read(pfdev, GPU_THREAD_FEATURES); pfdev 211 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.max_threads = gpu_read(pfdev, GPU_THREAD_MAX_THREADS); pfdev 212 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.thread_max_workgroup_sz = gpu_read(pfdev, GPU_THREAD_MAX_WORKGROUP_SIZE); pfdev 213 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.thread_max_barrier_sz = gpu_read(pfdev, GPU_THREAD_MAX_BARRIER_SIZE); pfdev 214 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.coherency_features = gpu_read(pfdev, GPU_COHERENCY_FEATURES); pfdev 216 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.texture_features[i] = gpu_read(pfdev, GPU_TEXTURE_FEATURES(i)); pfdev 218 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.as_present = gpu_read(pfdev, GPU_AS_PRESENT); pfdev 220 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.js_present = gpu_read(pfdev, GPU_JS_PRESENT); pfdev 221 drivers/gpu/drm/panfrost/panfrost_gpu.c num_js = hweight32(pfdev->features.js_present); pfdev 223 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.js_features[i] = gpu_read(pfdev, GPU_JS_FEATURES(i)); pfdev 225 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.shader_present = gpu_read(pfdev, GPU_SHADER_PRESENT_LO); pfdev 226 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.shader_present |= (u64)gpu_read(pfdev, GPU_SHADER_PRESENT_HI) << 32; pfdev 228 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.tiler_present = gpu_read(pfdev, GPU_TILER_PRESENT_LO); pfdev 229 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.tiler_present |= (u64)gpu_read(pfdev, GPU_TILER_PRESENT_HI) << 32; pfdev 231 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.l2_present = gpu_read(pfdev, GPU_L2_PRESENT_LO); pfdev 232 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.l2_present |= (u64)gpu_read(pfdev, GPU_L2_PRESENT_HI) << 32; pfdev 233 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.nr_core_groups = hweight64(pfdev->features.l2_present); pfdev 235 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.stack_present = gpu_read(pfdev, GPU_STACK_PRESENT_LO); pfdev 236 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.stack_present |= (u64)gpu_read(pfdev, GPU_STACK_PRESENT_HI) << 32; pfdev 238 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.thread_tls_alloc = gpu_read(pfdev, GPU_THREAD_TLS_ALLOC); pfdev 240 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_id = gpu_read(pfdev, GPU_ID); pfdev 241 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.revision = gpu_id & 0xffff; pfdev 242 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.id = gpu_id >> 16; pfdev 247 drivers/gpu/drm/panfrost/panfrost_gpu.c if (pfdev->features.id == 0x6956) pfdev 248 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.id = 0x0600; pfdev 250 drivers/gpu/drm/panfrost/panfrost_gpu.c major = (pfdev->features.revision >> 12) & 0xf; pfdev 251 drivers/gpu/drm/panfrost/panfrost_gpu.c minor = (pfdev->features.revision >> 4) & 0xff; pfdev 252 drivers/gpu/drm/panfrost/panfrost_gpu.c status = pfdev->features.revision & 0xf; pfdev 253 drivers/gpu/drm/panfrost/panfrost_gpu.c rev = pfdev->features.revision; pfdev 255 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_id = pfdev->features.id; pfdev 260 drivers/gpu/drm/panfrost/panfrost_gpu.c if (!panfrost_model_eq(pfdev, model->id)) pfdev 280 drivers/gpu/drm/panfrost/panfrost_gpu.c bitmap_from_u64(pfdev->features.hw_features, hw_feat); pfdev 281 drivers/gpu/drm/panfrost/panfrost_gpu.c bitmap_from_u64(pfdev->features.hw_issues, hw_issues); pfdev 283 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_info(pfdev->dev, "mali-%s id 0x%x major 0x%x minor 0x%x status 0x%x", pfdev 285 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_info(pfdev->dev, "features: %64pb, issues: %64pb", pfdev 286 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.hw_features, pfdev 287 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.hw_issues); pfdev 289 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_info(pfdev->dev, "Features: L2:0x%08x Shader:0x%08x Tiler:0x%08x Mem:0x%0x MMU:0x%08x AS:0x%x JS:0x%x", pfdev 290 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.l2_features, pfdev 291 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.core_features, pfdev 292 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.tiler_features, pfdev 293 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.mem_features, pfdev 294 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.mmu_features, pfdev 295 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.as_present, pfdev 296 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.js_present); pfdev 298 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_info(pfdev->dev, "shader_present=0x%0llx l2_present=0x%0llx", pfdev 299 drivers/gpu/drm/panfrost/panfrost_gpu.c pfdev->features.shader_present, pfdev->features.l2_present); pfdev 302 drivers/gpu/drm/panfrost/panfrost_gpu.c void panfrost_gpu_power_on(struct panfrost_device *pfdev) pfdev 308 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, L2_PWRON_LO, pfdev->features.l2_present); pfdev 309 drivers/gpu/drm/panfrost/panfrost_gpu.c ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO, pfdev 310 drivers/gpu/drm/panfrost/panfrost_gpu.c val, val == pfdev->features.l2_present, 100, 1000); pfdev 312 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, STACK_PWRON_LO, pfdev->features.stack_present); pfdev 313 drivers/gpu/drm/panfrost/panfrost_gpu.c ret |= readl_relaxed_poll_timeout(pfdev->iomem + STACK_READY_LO, pfdev 314 drivers/gpu/drm/panfrost/panfrost_gpu.c val, val == pfdev->features.stack_present, 100, 1000); pfdev 316 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, SHADER_PWRON_LO, pfdev->features.shader_present); pfdev 317 drivers/gpu/drm/panfrost/panfrost_gpu.c ret |= readl_relaxed_poll_timeout(pfdev->iomem + SHADER_READY_LO, pfdev 318 drivers/gpu/drm/panfrost/panfrost_gpu.c val, val == pfdev->features.shader_present, 100, 1000); pfdev 320 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, TILER_PWRON_LO, pfdev->features.tiler_present); pfdev 321 drivers/gpu/drm/panfrost/panfrost_gpu.c ret |= readl_relaxed_poll_timeout(pfdev->iomem + TILER_READY_LO, pfdev 322 drivers/gpu/drm/panfrost/panfrost_gpu.c val, val == pfdev->features.tiler_present, 100, 1000); pfdev 325 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_err(pfdev->dev, "error powering up gpu"); pfdev 328 drivers/gpu/drm/panfrost/panfrost_gpu.c void panfrost_gpu_power_off(struct panfrost_device *pfdev) pfdev 330 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, TILER_PWROFF_LO, 0); pfdev 331 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, SHADER_PWROFF_LO, 0); pfdev 332 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, STACK_PWROFF_LO, 0); pfdev 333 drivers/gpu/drm/panfrost/panfrost_gpu.c gpu_write(pfdev, L2_PWROFF_LO, 0); pfdev 336 drivers/gpu/drm/panfrost/panfrost_gpu.c int panfrost_gpu_init(struct panfrost_device *pfdev) pfdev 340 drivers/gpu/drm/panfrost/panfrost_gpu.c err = panfrost_gpu_soft_reset(pfdev); pfdev 344 drivers/gpu/drm/panfrost/panfrost_gpu.c panfrost_gpu_init_features(pfdev); pfdev 346 drivers/gpu/drm/panfrost/panfrost_gpu.c dma_set_mask_and_coherent(pfdev->dev, pfdev 347 drivers/gpu/drm/panfrost/panfrost_gpu.c DMA_BIT_MASK(FIELD_GET(0xff00, pfdev->features.mmu_features))); pfdev 349 drivers/gpu/drm/panfrost/panfrost_gpu.c irq = platform_get_irq_byname(to_platform_device(pfdev->dev), "gpu"); pfdev 353 drivers/gpu/drm/panfrost/panfrost_gpu.c err = devm_request_irq(pfdev->dev, irq, panfrost_gpu_irq_handler, pfdev 354 drivers/gpu/drm/panfrost/panfrost_gpu.c IRQF_SHARED, "gpu", pfdev); pfdev 356 drivers/gpu/drm/panfrost/panfrost_gpu.c dev_err(pfdev->dev, "failed to request gpu irq"); pfdev 360 drivers/gpu/drm/panfrost/panfrost_gpu.c panfrost_gpu_init_quirks(pfdev); pfdev 361 drivers/gpu/drm/panfrost/panfrost_gpu.c panfrost_gpu_power_on(pfdev); pfdev 366 drivers/gpu/drm/panfrost/panfrost_gpu.c void panfrost_gpu_fini(struct panfrost_device *pfdev) pfdev 368 drivers/gpu/drm/panfrost/panfrost_gpu.c panfrost_gpu_power_off(pfdev); pfdev 371 drivers/gpu/drm/panfrost/panfrost_gpu.c u32 panfrost_gpu_get_latest_flush_id(struct panfrost_device *pfdev) pfdev 373 drivers/gpu/drm/panfrost/panfrost_gpu.c if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION)) pfdev 374 drivers/gpu/drm/panfrost/panfrost_gpu.c return gpu_read(pfdev, GPU_LATEST_FLUSH_ID); pfdev 10 drivers/gpu/drm/panfrost/panfrost_gpu.h int panfrost_gpu_init(struct panfrost_device *pfdev); pfdev 11 drivers/gpu/drm/panfrost/panfrost_gpu.h void panfrost_gpu_fini(struct panfrost_device *pfdev); pfdev 13 drivers/gpu/drm/panfrost/panfrost_gpu.h u32 panfrost_gpu_get_latest_flush_id(struct panfrost_device *pfdev); pfdev 15 drivers/gpu/drm/panfrost/panfrost_gpu.h int panfrost_gpu_soft_reset(struct panfrost_device *pfdev); pfdev 16 drivers/gpu/drm/panfrost/panfrost_gpu.h void panfrost_gpu_power_on(struct panfrost_device *pfdev); pfdev 17 drivers/gpu/drm/panfrost/panfrost_gpu.h void panfrost_gpu_power_off(struct panfrost_device *pfdev); pfdev 170 drivers/gpu/drm/panfrost/panfrost_issues.h static inline bool panfrost_has_hw_issue(struct panfrost_device *pfdev, pfdev 173 drivers/gpu/drm/panfrost/panfrost_issues.h return test_bit(issue, pfdev->features.hw_issues); pfdev 84 drivers/gpu/drm/panfrost/panfrost_job.c static struct dma_fence *panfrost_fence_create(struct panfrost_device *pfdev, int js_num) pfdev 87 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_job_slot *js = pfdev->js; pfdev 93 drivers/gpu/drm/panfrost/panfrost_job.c fence->dev = pfdev->ddev; pfdev 115 drivers/gpu/drm/panfrost/panfrost_job.c (job->pfdev->features.nr_core_groups == 2)) pfdev 117 drivers/gpu/drm/panfrost/panfrost_job.c if (panfrost_has_hw_issue(job->pfdev, HW_ISSUE_8987)) pfdev 124 drivers/gpu/drm/panfrost/panfrost_job.c static void panfrost_job_write_affinity(struct panfrost_device *pfdev, pfdev 135 drivers/gpu/drm/panfrost/panfrost_job.c affinity = pfdev->features.shader_present; pfdev 137 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_AFFINITY_NEXT_LO(js), affinity & 0xFFFFFFFF); pfdev 138 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_AFFINITY_NEXT_HI(js), affinity >> 32); pfdev 143 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_device *pfdev = job->pfdev; pfdev 148 drivers/gpu/drm/panfrost/panfrost_job.c ret = pm_runtime_get_sync(pfdev->dev); pfdev 152 drivers/gpu/drm/panfrost/panfrost_job.c if (WARN_ON(job_read(pfdev, JS_COMMAND_NEXT(js)))) { pfdev 153 drivers/gpu/drm/panfrost/panfrost_job.c pm_runtime_put_sync_autosuspend(pfdev->dev); pfdev 157 drivers/gpu/drm/panfrost/panfrost_job.c cfg = panfrost_mmu_as_get(pfdev, &job->file_priv->mmu); pfdev 159 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_devfreq_record_transition(pfdev, js); pfdev 161 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_HEAD_NEXT_LO(js), jc_head & 0xFFFFFFFF); pfdev 162 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_HEAD_NEXT_HI(js), jc_head >> 32); pfdev 164 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_job_write_affinity(pfdev, job->requirements, js); pfdev 172 drivers/gpu/drm/panfrost/panfrost_job.c if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION)) pfdev 175 drivers/gpu/drm/panfrost/panfrost_job.c if (panfrost_has_hw_issue(pfdev, HW_ISSUE_10649)) pfdev 178 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_CONFIG_NEXT(js), cfg); pfdev 180 drivers/gpu/drm/panfrost/panfrost_job.c if (panfrost_has_hw_feature(pfdev, HW_FEATURE_FLUSH_REDUCTION)) pfdev 181 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_FLUSH_ID_NEXT(js), job->flush_id); pfdev 184 drivers/gpu/drm/panfrost/panfrost_job.c dev_dbg(pfdev->dev, "JS: Submitting atom %p to js[%d] with head=0x%llx", pfdev 187 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_COMMAND_NEXT(js), JS_COMMAND_START); pfdev 212 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_device *pfdev = job->pfdev; pfdev 218 drivers/gpu/drm/panfrost/panfrost_job.c mutex_lock(&pfdev->sched_lock); pfdev 223 drivers/gpu/drm/panfrost/panfrost_job.c mutex_unlock(&pfdev->sched_lock); pfdev 229 drivers/gpu/drm/panfrost/panfrost_job.c mutex_unlock(&pfdev->sched_lock); pfdev 242 drivers/gpu/drm/panfrost/panfrost_job.c mutex_unlock(&pfdev->sched_lock); pfdev 342 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_device *pfdev = job->pfdev; pfdev 349 drivers/gpu/drm/panfrost/panfrost_job.c pfdev->jobs[slot] = job; pfdev 351 drivers/gpu/drm/panfrost/panfrost_job.c fence = panfrost_fence_create(pfdev, slot); pfdev 364 drivers/gpu/drm/panfrost/panfrost_job.c void panfrost_job_enable_interrupts(struct panfrost_device *pfdev) pfdev 373 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JOB_INT_CLEAR, irq_mask); pfdev 374 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JOB_INT_MASK, irq_mask); pfdev 380 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_device *pfdev = job->pfdev; pfdev 392 drivers/gpu/drm/panfrost/panfrost_job.c dev_err(pfdev->dev, "gpu sched timeout, js=%d, config=0x%x, status=0x%x, head=0x%x, tail=0x%x, sched_job=%p", pfdev 394 drivers/gpu/drm/panfrost/panfrost_job.c job_read(pfdev, JS_CONFIG(js)), pfdev 395 drivers/gpu/drm/panfrost/panfrost_job.c job_read(pfdev, JS_STATUS(js)), pfdev 396 drivers/gpu/drm/panfrost/panfrost_job.c job_read(pfdev, JS_HEAD_LO(js)), pfdev 397 drivers/gpu/drm/panfrost/panfrost_job.c job_read(pfdev, JS_TAIL_LO(js)), pfdev 400 drivers/gpu/drm/panfrost/panfrost_job.c if (!mutex_trylock(&pfdev->reset_lock)) pfdev 404 drivers/gpu/drm/panfrost/panfrost_job.c struct drm_gpu_scheduler *sched = &pfdev->js->queue[i].sched; pfdev 414 drivers/gpu/drm/panfrost/panfrost_job.c spin_lock_irqsave(&pfdev->js->job_lock, flags); pfdev 416 drivers/gpu/drm/panfrost/panfrost_job.c if (pfdev->jobs[i]) { pfdev 417 drivers/gpu/drm/panfrost/panfrost_job.c pm_runtime_put_noidle(pfdev->dev); pfdev 418 drivers/gpu/drm/panfrost/panfrost_job.c pfdev->jobs[i] = NULL; pfdev 421 drivers/gpu/drm/panfrost/panfrost_job.c spin_unlock_irqrestore(&pfdev->js->job_lock, flags); pfdev 425 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_devfreq_record_transition(pfdev, js); pfdev 426 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_device_reset(pfdev); pfdev 429 drivers/gpu/drm/panfrost/panfrost_job.c drm_sched_resubmit_jobs(&pfdev->js->queue[i].sched); pfdev 433 drivers/gpu/drm/panfrost/panfrost_job.c drm_sched_start(&pfdev->js->queue[i].sched, true); pfdev 435 drivers/gpu/drm/panfrost/panfrost_job.c mutex_unlock(&pfdev->reset_lock); pfdev 447 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_device *pfdev = data; pfdev 448 drivers/gpu/drm/panfrost/panfrost_job.c u32 status = job_read(pfdev, JOB_INT_STAT); pfdev 451 drivers/gpu/drm/panfrost/panfrost_job.c dev_dbg(pfdev->dev, "jobslot irq status=%x\n", status); pfdev 456 drivers/gpu/drm/panfrost/panfrost_job.c pm_runtime_mark_last_busy(pfdev->dev); pfdev 464 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JOB_INT_CLEAR, mask); pfdev 467 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JS_COMMAND_NEXT(j), JS_COMMAND_NOP); pfdev 469 drivers/gpu/drm/panfrost/panfrost_job.c dev_err(pfdev->dev, "js fault, js=%d, status=%s, head=0x%x, tail=0x%x", pfdev 471 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_exception_name(pfdev, job_read(pfdev, JS_STATUS(j))), pfdev 472 drivers/gpu/drm/panfrost/panfrost_job.c job_read(pfdev, JS_HEAD_LO(j)), pfdev 473 drivers/gpu/drm/panfrost/panfrost_job.c job_read(pfdev, JS_TAIL_LO(j))); pfdev 475 drivers/gpu/drm/panfrost/panfrost_job.c drm_sched_fault(&pfdev->js->queue[j].sched); pfdev 481 drivers/gpu/drm/panfrost/panfrost_job.c spin_lock(&pfdev->js->job_lock); pfdev 482 drivers/gpu/drm/panfrost/panfrost_job.c job = pfdev->jobs[j]; pfdev 485 drivers/gpu/drm/panfrost/panfrost_job.c pfdev->jobs[j] = NULL; pfdev 487 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_mmu_as_put(pfdev, &job->file_priv->mmu); pfdev 488 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_devfreq_record_transition(pfdev, j); pfdev 491 drivers/gpu/drm/panfrost/panfrost_job.c pm_runtime_put_autosuspend(pfdev->dev); pfdev 493 drivers/gpu/drm/panfrost/panfrost_job.c spin_unlock(&pfdev->js->job_lock); pfdev 502 drivers/gpu/drm/panfrost/panfrost_job.c int panfrost_job_init(struct panfrost_device *pfdev) pfdev 507 drivers/gpu/drm/panfrost/panfrost_job.c pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL); pfdev 513 drivers/gpu/drm/panfrost/panfrost_job.c irq = platform_get_irq_byname(to_platform_device(pfdev->dev), "job"); pfdev 517 drivers/gpu/drm/panfrost/panfrost_job.c ret = devm_request_irq(pfdev->dev, irq, panfrost_job_irq_handler, pfdev 518 drivers/gpu/drm/panfrost/panfrost_job.c IRQF_SHARED, "job", pfdev); pfdev 520 drivers/gpu/drm/panfrost/panfrost_job.c dev_err(pfdev->dev, "failed to request job irq"); pfdev 532 drivers/gpu/drm/panfrost/panfrost_job.c dev_err(pfdev->dev, "Failed to create scheduler: %d.", ret); pfdev 537 drivers/gpu/drm/panfrost/panfrost_job.c panfrost_job_enable_interrupts(pfdev); pfdev 548 drivers/gpu/drm/panfrost/panfrost_job.c void panfrost_job_fini(struct panfrost_device *pfdev) pfdev 550 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_job_slot *js = pfdev->js; pfdev 553 drivers/gpu/drm/panfrost/panfrost_job.c job_write(pfdev, JOB_INT_MASK, 0); pfdev 562 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_device *pfdev = panfrost_priv->pfdev; pfdev 563 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_job_slot *js = pfdev->js; pfdev 584 drivers/gpu/drm/panfrost/panfrost_job.c int panfrost_job_is_idle(struct panfrost_device *pfdev) pfdev 586 drivers/gpu/drm/panfrost/panfrost_job.c struct panfrost_job_slot *js = pfdev->js; pfdev 595 drivers/gpu/drm/panfrost/panfrost_job.c if (pfdev->devfreq.slot[i].busy) pfdev 19 drivers/gpu/drm/panfrost/panfrost_job.h struct panfrost_device *pfdev; pfdev 43 drivers/gpu/drm/panfrost/panfrost_job.h int panfrost_job_init(struct panfrost_device *pfdev); pfdev 44 drivers/gpu/drm/panfrost/panfrost_job.h void panfrost_job_fini(struct panfrost_device *pfdev); pfdev 49 drivers/gpu/drm/panfrost/panfrost_job.h void panfrost_job_enable_interrupts(struct panfrost_device *pfdev); pfdev 50 drivers/gpu/drm/panfrost/panfrost_job.h int panfrost_job_is_idle(struct panfrost_device *pfdev); pfdev 26 drivers/gpu/drm/panfrost/panfrost_mmu.c static int wait_ready(struct panfrost_device *pfdev, u32 as_nr) pfdev 33 drivers/gpu/drm/panfrost/panfrost_mmu.c ret = readl_relaxed_poll_timeout_atomic(pfdev->iomem + AS_STATUS(as_nr), pfdev 37 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_err(pfdev->dev, "AS_ACTIVE bit stuck\n"); pfdev 42 drivers/gpu/drm/panfrost/panfrost_mmu.c static int write_cmd(struct panfrost_device *pfdev, u32 as_nr, u32 cmd) pfdev 47 drivers/gpu/drm/panfrost/panfrost_mmu.c status = wait_ready(pfdev, as_nr); pfdev 49 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_COMMAND(as_nr), cmd); pfdev 54 drivers/gpu/drm/panfrost/panfrost_mmu.c static void lock_region(struct panfrost_device *pfdev, u32 as_nr, pfdev 77 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_LOCKADDR_LO(as_nr), region & 0xFFFFFFFFUL); pfdev 78 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_LOCKADDR_HI(as_nr), (region >> 32) & 0xFFFFFFFFUL); pfdev 79 drivers/gpu/drm/panfrost/panfrost_mmu.c write_cmd(pfdev, as_nr, AS_COMMAND_LOCK); pfdev 83 drivers/gpu/drm/panfrost/panfrost_mmu.c static int mmu_hw_do_operation_locked(struct panfrost_device *pfdev, int as_nr, pfdev 90 drivers/gpu/drm/panfrost/panfrost_mmu.c lock_region(pfdev, as_nr, iova, size); pfdev 93 drivers/gpu/drm/panfrost/panfrost_mmu.c write_cmd(pfdev, as_nr, op); pfdev 96 drivers/gpu/drm/panfrost/panfrost_mmu.c return wait_ready(pfdev, as_nr); pfdev 99 drivers/gpu/drm/panfrost/panfrost_mmu.c static int mmu_hw_do_operation(struct panfrost_device *pfdev, pfdev 105 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_lock(&pfdev->as_lock); pfdev 106 drivers/gpu/drm/panfrost/panfrost_mmu.c ret = mmu_hw_do_operation_locked(pfdev, mmu->as, iova, size, op); pfdev 107 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_unlock(&pfdev->as_lock); pfdev 111 drivers/gpu/drm/panfrost/panfrost_mmu.c static void panfrost_mmu_enable(struct panfrost_device *pfdev, struct panfrost_mmu *mmu) pfdev 118 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_hw_do_operation_locked(pfdev, as_nr, 0, ~0UL, AS_COMMAND_FLUSH_MEM); pfdev 120 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_TRANSTAB_LO(as_nr), transtab & 0xffffffffUL); pfdev 121 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_TRANSTAB_HI(as_nr), transtab >> 32); pfdev 126 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_MEMATTR_LO(as_nr), memattr & 0xffffffffUL); pfdev 127 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_MEMATTR_HI(as_nr), memattr >> 32); pfdev 129 drivers/gpu/drm/panfrost/panfrost_mmu.c write_cmd(pfdev, as_nr, AS_COMMAND_UPDATE); pfdev 132 drivers/gpu/drm/panfrost/panfrost_mmu.c static void panfrost_mmu_disable(struct panfrost_device *pfdev, u32 as_nr) pfdev 134 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_hw_do_operation_locked(pfdev, as_nr, 0, ~0UL, AS_COMMAND_FLUSH_MEM); pfdev 136 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_TRANSTAB_LO(as_nr), 0); pfdev 137 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_TRANSTAB_HI(as_nr), 0); pfdev 139 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_MEMATTR_LO(as_nr), 0); pfdev 140 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, AS_MEMATTR_HI(as_nr), 0); pfdev 142 drivers/gpu/drm/panfrost/panfrost_mmu.c write_cmd(pfdev, as_nr, AS_COMMAND_UPDATE); pfdev 145 drivers/gpu/drm/panfrost/panfrost_mmu.c u32 panfrost_mmu_as_get(struct panfrost_device *pfdev, struct panfrost_mmu *mmu) pfdev 149 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_lock(&pfdev->as_lock); pfdev 161 drivers/gpu/drm/panfrost/panfrost_mmu.c list_move(&mmu->list, &pfdev->as_lru_list); pfdev 166 drivers/gpu/drm/panfrost/panfrost_mmu.c as = ffz(pfdev->as_alloc_mask); pfdev 167 drivers/gpu/drm/panfrost/panfrost_mmu.c if (!(BIT(as) & pfdev->features.as_present)) { pfdev 170 drivers/gpu/drm/panfrost/panfrost_mmu.c list_for_each_entry_reverse(lru_mmu, &pfdev->as_lru_list, list) { pfdev 174 drivers/gpu/drm/panfrost/panfrost_mmu.c WARN_ON(&lru_mmu->list == &pfdev->as_lru_list); pfdev 185 drivers/gpu/drm/panfrost/panfrost_mmu.c set_bit(as, &pfdev->as_alloc_mask); pfdev 187 drivers/gpu/drm/panfrost/panfrost_mmu.c list_add(&mmu->list, &pfdev->as_lru_list); pfdev 189 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_dbg(pfdev->dev, "Assigned AS%d to mmu %p, alloc_mask=%lx", as, mmu, pfdev->as_alloc_mask); pfdev 191 drivers/gpu/drm/panfrost/panfrost_mmu.c panfrost_mmu_enable(pfdev, mmu); pfdev 194 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_unlock(&pfdev->as_lock); pfdev 198 drivers/gpu/drm/panfrost/panfrost_mmu.c void panfrost_mmu_as_put(struct panfrost_device *pfdev, struct panfrost_mmu *mmu) pfdev 204 drivers/gpu/drm/panfrost/panfrost_mmu.c void panfrost_mmu_reset(struct panfrost_device *pfdev) pfdev 208 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_lock(&pfdev->as_lock); pfdev 210 drivers/gpu/drm/panfrost/panfrost_mmu.c pfdev->as_alloc_mask = 0; pfdev 212 drivers/gpu/drm/panfrost/panfrost_mmu.c list_for_each_entry_safe(mmu, mmu_tmp, &pfdev->as_lru_list, list) { pfdev 218 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_unlock(&pfdev->as_lock); pfdev 220 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, MMU_INT_CLEAR, ~0); pfdev 221 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, MMU_INT_MASK, ~0); pfdev 232 drivers/gpu/drm/panfrost/panfrost_mmu.c static void panfrost_mmu_flush_range(struct panfrost_device *pfdev, pfdev 239 drivers/gpu/drm/panfrost/panfrost_mmu.c pm_runtime_get_noresume(pfdev->dev); pfdev 242 drivers/gpu/drm/panfrost/panfrost_mmu.c if (pm_runtime_active(pfdev->dev)) pfdev 243 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_hw_do_operation(pfdev, mmu, iova, size, AS_COMMAND_FLUSH_PT); pfdev 245 drivers/gpu/drm/panfrost/panfrost_mmu.c pm_runtime_put_sync_autosuspend(pfdev->dev); pfdev 248 drivers/gpu/drm/panfrost/panfrost_mmu.c static int mmu_map_sg(struct panfrost_device *pfdev, struct panfrost_mmu *mmu, pfdev 260 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_dbg(pfdev->dev, "map: as=%d, iova=%llx, paddr=%lx, len=%zx", mmu->as, iova, paddr, len); pfdev 272 drivers/gpu/drm/panfrost/panfrost_mmu.c panfrost_mmu_flush_range(pfdev, mmu, start_iova, iova - start_iova); pfdev 281 drivers/gpu/drm/panfrost/panfrost_mmu.c struct panfrost_device *pfdev = to_panfrost_device(obj->dev); pfdev 295 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_map_sg(pfdev, mapping->mmu, mapping->mmnode.start << PAGE_SHIFT, pfdev 306 drivers/gpu/drm/panfrost/panfrost_mmu.c struct panfrost_device *pfdev = to_panfrost_device(obj->dev); pfdev 315 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_dbg(pfdev->dev, "unmap: as=%d, iova=%llx, len=%zx", pfdev 330 drivers/gpu/drm/panfrost/panfrost_mmu.c panfrost_mmu_flush_range(pfdev, mapping->mmu, pfdev 365 drivers/gpu/drm/panfrost/panfrost_mmu.c struct panfrost_device *pfdev = priv->pfdev; pfdev 372 drivers/gpu/drm/panfrost/panfrost_mmu.c .ias = FIELD_GET(0xff, pfdev->features.mmu_features), pfdev 373 drivers/gpu/drm/panfrost/panfrost_mmu.c .oas = FIELD_GET(0xff00, pfdev->features.mmu_features), pfdev 375 drivers/gpu/drm/panfrost/panfrost_mmu.c .iommu_dev = pfdev->dev, pfdev 388 drivers/gpu/drm/panfrost/panfrost_mmu.c struct panfrost_device *pfdev = priv->pfdev; pfdev 391 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_lock(&pfdev->as_lock); pfdev 393 drivers/gpu/drm/panfrost/panfrost_mmu.c pm_runtime_get_noresume(pfdev->dev); pfdev 394 drivers/gpu/drm/panfrost/panfrost_mmu.c if (pm_runtime_active(pfdev->dev)) pfdev 395 drivers/gpu/drm/panfrost/panfrost_mmu.c panfrost_mmu_disable(pfdev, mmu->as); pfdev 396 drivers/gpu/drm/panfrost/panfrost_mmu.c pm_runtime_put_autosuspend(pfdev->dev); pfdev 398 drivers/gpu/drm/panfrost/panfrost_mmu.c clear_bit(mmu->as, &pfdev->as_alloc_mask); pfdev 399 drivers/gpu/drm/panfrost/panfrost_mmu.c clear_bit(mmu->as, &pfdev->as_in_use_mask); pfdev 402 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_unlock(&pfdev->as_lock); pfdev 408 drivers/gpu/drm/panfrost/panfrost_mmu.c addr_to_mapping(struct panfrost_device *pfdev, int as, u64 addr) pfdev 416 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_lock(&pfdev->as_lock); pfdev 417 drivers/gpu/drm/panfrost/panfrost_mmu.c list_for_each_entry(mmu, &pfdev->as_lru_list, list) { pfdev 440 drivers/gpu/drm/panfrost/panfrost_mmu.c spin_unlock(&pfdev->as_lock); pfdev 446 drivers/gpu/drm/panfrost/panfrost_mmu.c static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as, pfdev 457 drivers/gpu/drm/panfrost/panfrost_mmu.c bomapping = addr_to_mapping(pfdev, as, addr); pfdev 463 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_WARN(pfdev->dev, "matching BO is not heap type (GPU VA = %llx)", pfdev 520 drivers/gpu/drm/panfrost/panfrost_mmu.c if (!dma_map_sg(pfdev->dev, sgt->sgl, sgt->nents, DMA_BIDIRECTIONAL)) { pfdev 525 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_map_sg(pfdev, bomapping->mmu, addr, pfdev 530 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_dbg(pfdev->dev, "mapped page fault @ AS%d %llx", as, addr); pfdev 545 drivers/gpu/drm/panfrost/panfrost_mmu.c static const char *access_type_name(struct panfrost_device *pfdev, pfdev 550 drivers/gpu/drm/panfrost/panfrost_mmu.c if (panfrost_has_hw_feature(pfdev, HW_FEATURE_AARCH64_MMU)) pfdev 568 drivers/gpu/drm/panfrost/panfrost_mmu.c struct panfrost_device *pfdev = data; pfdev 570 drivers/gpu/drm/panfrost/panfrost_mmu.c if (!mmu_read(pfdev, MMU_INT_STAT)) pfdev 573 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, MMU_INT_MASK, 0); pfdev 579 drivers/gpu/drm/panfrost/panfrost_mmu.c struct panfrost_device *pfdev = data; pfdev 580 drivers/gpu/drm/panfrost/panfrost_mmu.c u32 status = mmu_read(pfdev, MMU_INT_RAWSTAT); pfdev 594 drivers/gpu/drm/panfrost/panfrost_mmu.c fault_status = mmu_read(pfdev, AS_FAULTSTATUS(i)); pfdev 595 drivers/gpu/drm/panfrost/panfrost_mmu.c addr = mmu_read(pfdev, AS_FAULTADDRESS_LO(i)); pfdev 596 drivers/gpu/drm/panfrost/panfrost_mmu.c addr |= (u64)mmu_read(pfdev, AS_FAULTADDRESS_HI(i)) << 32; pfdev 606 drivers/gpu/drm/panfrost/panfrost_mmu.c ret = panfrost_mmu_map_fault_addr(pfdev, i, addr); pfdev 610 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_err(pfdev->dev, pfdev 622 drivers/gpu/drm/panfrost/panfrost_mmu.c exception_type, panfrost_exception_name(pfdev, exception_type), pfdev 623 drivers/gpu/drm/panfrost/panfrost_mmu.c access_type, access_type_name(pfdev, fault_status), pfdev 626 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, MMU_INT_CLEAR, mask); pfdev 631 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, MMU_INT_MASK, ~0); pfdev 635 drivers/gpu/drm/panfrost/panfrost_mmu.c int panfrost_mmu_init(struct panfrost_device *pfdev) pfdev 639 drivers/gpu/drm/panfrost/panfrost_mmu.c irq = platform_get_irq_byname(to_platform_device(pfdev->dev), "mmu"); pfdev 643 drivers/gpu/drm/panfrost/panfrost_mmu.c err = devm_request_threaded_irq(pfdev->dev, irq, panfrost_mmu_irq_handler, pfdev 645 drivers/gpu/drm/panfrost/panfrost_mmu.c IRQF_SHARED, "mmu", pfdev); pfdev 648 drivers/gpu/drm/panfrost/panfrost_mmu.c dev_err(pfdev->dev, "failed to request mmu irq"); pfdev 655 drivers/gpu/drm/panfrost/panfrost_mmu.c void panfrost_mmu_fini(struct panfrost_device *pfdev) pfdev 657 drivers/gpu/drm/panfrost/panfrost_mmu.c mmu_write(pfdev, MMU_INT_MASK, 0); pfdev 14 drivers/gpu/drm/panfrost/panfrost_mmu.h int panfrost_mmu_init(struct panfrost_device *pfdev); pfdev 15 drivers/gpu/drm/panfrost/panfrost_mmu.h void panfrost_mmu_fini(struct panfrost_device *pfdev); pfdev 16 drivers/gpu/drm/panfrost/panfrost_mmu.h void panfrost_mmu_reset(struct panfrost_device *pfdev); pfdev 18 drivers/gpu/drm/panfrost/panfrost_mmu.h u32 panfrost_mmu_as_get(struct panfrost_device *pfdev, struct panfrost_mmu *mmu); pfdev 19 drivers/gpu/drm/panfrost/panfrost_mmu.h void panfrost_mmu_as_put(struct panfrost_device *pfdev, struct panfrost_mmu *mmu); pfdev 36 drivers/gpu/drm/panfrost/panfrost_perfcnt.c void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev) pfdev 38 drivers/gpu/drm/panfrost/panfrost_perfcnt.c complete(&pfdev->perfcnt->dump_comp); pfdev 41 drivers/gpu/drm/panfrost/panfrost_perfcnt.c void panfrost_perfcnt_sample_done(struct panfrost_device *pfdev) pfdev 43 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_CMD, GPU_CMD_CLEAN_CACHES); pfdev 46 drivers/gpu/drm/panfrost/panfrost_perfcnt.c static int panfrost_perfcnt_dump_locked(struct panfrost_device *pfdev) pfdev 51 drivers/gpu/drm/panfrost/panfrost_perfcnt.c reinit_completion(&pfdev->perfcnt->dump_comp); pfdev 52 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpuva = pfdev->perfcnt->mapping->mmnode.start << PAGE_SHIFT; pfdev 53 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PERFCNT_BASE_LO, gpuva); pfdev 54 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PERFCNT_BASE_HI, gpuva >> 32); pfdev 55 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_INT_CLEAR, pfdev 58 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_CMD, GPU_CMD_PERFCNT_SAMPLE); pfdev 59 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ret = wait_for_completion_interruptible_timeout(&pfdev->perfcnt->dump_comp, pfdev 69 drivers/gpu/drm/panfrost/panfrost_perfcnt.c static int panfrost_perfcnt_enable_locked(struct panfrost_device *pfdev, pfdev 74 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; pfdev 84 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ret = pm_runtime_get_sync(pfdev->dev); pfdev 88 drivers/gpu/drm/panfrost/panfrost_perfcnt.c bo = drm_gem_shmem_create(pfdev->ddev, perfcnt->bosize); pfdev 114 drivers/gpu/drm/panfrost/panfrost_perfcnt.c reinit_completion(&pfdev->perfcnt->dump_comp); pfdev 115 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_INT_CLEAR, pfdev 118 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_CMD, GPU_CMD_PERFCNT_CLEAR); pfdev 119 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_CMD, GPU_CMD_CLEAN_INV_CACHES); pfdev 120 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ret = wait_for_completion_timeout(&pfdev->perfcnt->dump_comp, pfdev 129 drivers/gpu/drm/panfrost/panfrost_perfcnt.c as = panfrost_mmu_as_get(pfdev, perfcnt->mapping->mmu); pfdev 137 drivers/gpu/drm/panfrost/panfrost_perfcnt.c if (panfrost_model_is_bifrost(pfdev)) pfdev 140 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0xffffffff); pfdev 141 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0xffffffff); pfdev 142 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0xffffffff); pfdev 148 drivers/gpu/drm/panfrost/panfrost_perfcnt.c if (panfrost_has_hw_issue(pfdev, HW_ISSUE_8186)) pfdev 149 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); pfdev 151 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0xffffffff); pfdev 153 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PERFCNT_CFG, cfg); pfdev 155 drivers/gpu/drm/panfrost/panfrost_perfcnt.c if (panfrost_has_hw_issue(pfdev, HW_ISSUE_8186)) pfdev 156 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0xffffffff); pfdev 174 drivers/gpu/drm/panfrost/panfrost_perfcnt.c static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev, pfdev 178 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; pfdev 183 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0x0); pfdev 184 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0x0); pfdev 185 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0x0); pfdev 186 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); pfdev 187 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PERFCNT_CFG, pfdev 194 drivers/gpu/drm/panfrost/panfrost_perfcnt.c panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu); pfdev 197 drivers/gpu/drm/panfrost/panfrost_perfcnt.c pm_runtime_mark_last_busy(pfdev->dev); pfdev 198 drivers/gpu/drm/panfrost/panfrost_perfcnt.c pm_runtime_put_autosuspend(pfdev->dev); pfdev 206 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_device *pfdev = dev->dev_private; pfdev 207 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; pfdev 216 drivers/gpu/drm/panfrost/panfrost_perfcnt.c if (req->counterset > (panfrost_model_is_bifrost(pfdev) ? 1 : 0)) pfdev 221 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ret = panfrost_perfcnt_enable_locked(pfdev, file_priv, pfdev 224 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ret = panfrost_perfcnt_disable_locked(pfdev, file_priv); pfdev 233 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_device *pfdev = dev->dev_private; pfdev 234 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; pfdev 249 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ret = panfrost_perfcnt_dump_locked(pfdev); pfdev 265 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_device *pfdev = pfile->pfdev; pfdev 266 drivers/gpu/drm/panfrost/panfrost_perfcnt.c struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; pfdev 268 drivers/gpu/drm/panfrost/panfrost_perfcnt.c pm_runtime_get_sync(pfdev->dev); pfdev 271 drivers/gpu/drm/panfrost/panfrost_perfcnt.c panfrost_perfcnt_disable_locked(pfdev, file_priv); pfdev 273 drivers/gpu/drm/panfrost/panfrost_perfcnt.c pm_runtime_mark_last_busy(pfdev->dev); pfdev 274 drivers/gpu/drm/panfrost/panfrost_perfcnt.c pm_runtime_put_autosuspend(pfdev->dev); pfdev 277 drivers/gpu/drm/panfrost/panfrost_perfcnt.c int panfrost_perfcnt_init(struct panfrost_device *pfdev) pfdev 282 drivers/gpu/drm/panfrost/panfrost_perfcnt.c if (panfrost_has_hw_feature(pfdev, HW_FEATURE_V4)) { pfdev 285 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ncoregroups = hweight64(pfdev->features.l2_present); pfdev 295 drivers/gpu/drm/panfrost/panfrost_perfcnt.c nl2c = ((pfdev->features.mem_features >> 8) & GENMASK(3, 0)) + 1; pfdev 302 drivers/gpu/drm/panfrost/panfrost_perfcnt.c ncores = fls64(pfdev->features.shader_present); pfdev 312 drivers/gpu/drm/panfrost/panfrost_perfcnt.c perfcnt = devm_kzalloc(pfdev->dev, sizeof(*perfcnt), GFP_KERNEL); pfdev 319 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PERFCNT_CFG, pfdev 321 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0); pfdev 322 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0); pfdev 323 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0); pfdev 324 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); pfdev 328 drivers/gpu/drm/panfrost/panfrost_perfcnt.c pfdev->perfcnt = perfcnt; pfdev 333 drivers/gpu/drm/panfrost/panfrost_perfcnt.c void panfrost_perfcnt_fini(struct panfrost_device *pfdev) pfdev 336 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PERFCNT_CFG, pfdev 338 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0); pfdev 339 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0); pfdev 340 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0); pfdev 341 drivers/gpu/drm/panfrost/panfrost_perfcnt.c gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); pfdev 8 drivers/gpu/drm/panfrost/panfrost_perfcnt.h void panfrost_perfcnt_sample_done(struct panfrost_device *pfdev); pfdev 9 drivers/gpu/drm/panfrost/panfrost_perfcnt.h void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev); pfdev 10 drivers/gpu/drm/panfrost/panfrost_perfcnt.h int panfrost_perfcnt_init(struct panfrost_device *pfdev); pfdev 11 drivers/gpu/drm/panfrost/panfrost_perfcnt.h void panfrost_perfcnt_fini(struct panfrost_device *pfdev); pfdev 321 drivers/media/pci/ddbridge/ddbridge.h struct platform_device *pfdev; pfdev 352 sound/drivers/ml403-ac97cr.c struct platform_device *pfdev; pfdev 773 sound/drivers/ml403-ac97cr.c struct platform_device *pfdev; pfdev 780 sound/drivers/ml403-ac97cr.c pfdev = ml403_ac97cr->pfdev; pfdev 783 sound/drivers/ml403-ac97cr.c cmp_irq = platform_get_irq(pfdev, 0); pfdev 795 sound/drivers/ml403-ac97cr.c cmp_irq = platform_get_irq(pfdev, 1); pfdev 1097 sound/drivers/ml403-ac97cr.c snd_ml403_ac97cr_create(struct snd_card *card, struct platform_device *pfdev, pfdev 1115 sound/drivers/ml403-ac97cr.c ml403_ac97cr->pfdev = pfdev; pfdev 1124 sound/drivers/ml403-ac97cr.c resource = platform_get_resource(pfdev, IORESOURCE_MEM, 0); pfdev 1140 sound/drivers/ml403-ac97cr.c irq = platform_get_irq(pfdev, 0); pfdev 1142 sound/drivers/ml403-ac97cr.c dev_name(&pfdev->dev), (void *)ml403_ac97cr)) { pfdev 1153 sound/drivers/ml403-ac97cr.c irq = platform_get_irq(pfdev, 1); pfdev 1155 sound/drivers/ml403-ac97cr.c dev_name(&pfdev->dev), (void *)ml403_ac97cr)) { pfdev 1251 sound/drivers/ml403-ac97cr.c static int snd_ml403_ac97cr_probe(struct platform_device *pfdev) pfdev 1256 sound/drivers/ml403-ac97cr.c int dev = pfdev->id; pfdev 1263 sound/drivers/ml403-ac97cr.c err = snd_card_new(&pfdev->dev, index[dev], id[dev], THIS_MODULE, pfdev 1267 sound/drivers/ml403-ac97cr.c err = snd_ml403_ac97cr_create(card, pfdev, &ml403_ac97cr); pfdev 1299 sound/drivers/ml403-ac97cr.c platform_set_drvdata(pfdev, card); pfdev 1304 sound/drivers/ml403-ac97cr.c static int snd_ml403_ac97cr_remove(struct platform_device *pfdev) pfdev 1306 sound/drivers/ml403-ac97cr.c snd_card_free(platform_get_drvdata(pfdev));