mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 19:34:14 +07:00
f3ba91228e
This adds the initial driver for panfrost which supports Arm Mali Midgard and Bifrost family of GPUs. Currently, only the T860 and T760 Midgard GPUs have been tested. v2: - Add GPU reset on job hangs (Tomeu) - Add RuntimePM and devfreq support (Tomeu) - Fix T760 support (Tomeu) - Add a TODO file (Rob, Tomeu) - Support multiple in fences (Tomeu) - Drop support for shared fences (Tomeu) - Fill in MMU de-init (Rob) - Move register definitions back to single header (Rob) - Clean-up hardcoded job submit todos (Rob) - Implement feature setup based on features/issues (Rob) - Add remaining Midgard DT compatible strings (Rob) v3: - Add support for reset lines (Neil) - Add a MAINTAINERS entry (Rob) - Call dma_set_mask_and_coherent (Rob) - Do MMU invalidate on map and unmap. Restructure to do a single operation per map/unmap call. (Rob) - Add a missing explicit padding to struct drm_panfrost_create_bo (Rob) - Fix 0-day error: "panfrost_devfreq.c:151:9-16: ERROR: PTR_ERR applied after initialization to constant on line 150" - Drop HW_FEATURE_AARCH64_MMU conditional (Rob) - s/DRM_PANFROST_PARAM_GPU_ID/DRM_PANFROST_PARAM_GPU_PROD_ID/ (Rob) - Check drm_gem_shmem_prime_import_sg_table() error code (Rob) - Re-order power on sequence (Rob) - Move panfrost_acquire_object_fences() before scheduling job (Rob) - Add NULL checks on array pointers in job clean-up (Rob) - Rework devfreq (Tomeu) - Fix devfreq init with no regulator (Rob) - Various WS and comments clean-up (Rob) Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Lyude Paul <lyude@redhat.com> Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Steven Price <steven.price@arm.com> Signed-off-by: Marty E. Plummer <hanetzer@startmail.com> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Signed-off-by: Rob Herring <robh@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20190409205427.6943-4-robh@kernel.org
52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright 2019 Collabora ltd. */
|
|
|
|
#ifndef __PANFROST_JOB_H__
|
|
#define __PANFROST_JOB_H__
|
|
|
|
#include <uapi/drm/panfrost_drm.h>
|
|
#include <drm/gpu_scheduler.h>
|
|
|
|
struct panfrost_device;
|
|
struct panfrost_gem_object;
|
|
struct panfrost_file_priv;
|
|
|
|
struct panfrost_job {
|
|
struct drm_sched_job base;
|
|
|
|
struct kref refcount;
|
|
|
|
struct panfrost_device *pfdev;
|
|
struct panfrost_file_priv *file_priv;
|
|
|
|
/* Optional fences userspace can pass in for the job to depend on. */
|
|
struct dma_fence **in_fences;
|
|
u32 in_fence_count;
|
|
|
|
/* Fence to be signaled by IRQ handler when the job is complete. */
|
|
struct dma_fence *done_fence;
|
|
|
|
__u64 jc;
|
|
__u32 requirements;
|
|
__u32 flush_id;
|
|
|
|
/* Exclusive fences we have taken from the BOs to wait for */
|
|
struct dma_fence **implicit_fences;
|
|
struct drm_gem_object **bos;
|
|
u32 bo_count;
|
|
|
|
/* Fence to be signaled by drm-sched once its done with the job */
|
|
struct dma_fence *render_done_fence;
|
|
};
|
|
|
|
int panfrost_job_init(struct panfrost_device *pfdev);
|
|
void panfrost_job_fini(struct panfrost_device *pfdev);
|
|
int panfrost_job_open(struct panfrost_file_priv *panfrost_priv);
|
|
void panfrost_job_close(struct panfrost_file_priv *panfrost_priv);
|
|
int panfrost_job_push(struct panfrost_job *job);
|
|
void panfrost_job_put(struct panfrost_job *job);
|
|
void panfrost_job_enable_interrupts(struct panfrost_device *pfdev);
|
|
int panfrost_job_is_idle(struct panfrost_device *pfdev);
|
|
|
|
#endif
|