diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h index 1642f4108297..0610cc4a9788 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h | |||
@@ -28,6 +28,7 @@ | |||
28 | #include "amdgpu_ih.h" | 28 | #include "amdgpu_ih.h" |
29 | 29 | ||
30 | #define AMDGPU_MAX_IRQ_SRC_ID 0x100 | 30 | #define AMDGPU_MAX_IRQ_SRC_ID 0x100 |
31 | #define AMDGPU_MAX_IRQ_CLIENT_ID 0x100 | ||
31 | 32 | ||
32 | struct amdgpu_device; | 33 | struct amdgpu_device; |
33 | struct amdgpu_iv_entry; | 34 | struct amdgpu_iv_entry; |
@@ -44,6 +45,10 @@ struct amdgpu_irq_src { | |||
44 | void *data; | 45 | void *data; |
45 | }; | 46 | }; |
46 | 47 | ||
48 | struct amdgpu_irq_client { | ||
49 | struct amdgpu_irq_src **sources; | ||
50 | }; | ||
51 | |||
47 | /* provided by interrupt generating IP blocks */ | 52 | /* provided by interrupt generating IP blocks */ |
48 | struct amdgpu_irq_src_funcs { | 53 | struct amdgpu_irq_src_funcs { |
49 | int (*set)(struct amdgpu_device *adev, struct amdgpu_irq_src *source, | 54 | int (*set)(struct amdgpu_device *adev, struct amdgpu_irq_src *source, |
@@ -58,7 +63,7 @@ struct amdgpu_irq { | |||
58 | bool installed; | 63 | bool installed; |
59 | spinlock_t lock; | 64 | spinlock_t lock; |
60 | /* interrupt sources */ | 65 | /* interrupt sources */ |
61 | struct amdgpu_irq_src *sources[AMDGPU_MAX_IRQ_SRC_ID]; | 66 | struct amdgpu_irq_client client[AMDGPU_IH_CLIENTID_MAX]; |
62 | 67 | ||
63 | /* status, etc. */ | 68 | /* status, etc. */ |
64 | bool msi_enabled; /* msi enabled */ | 69 | bool msi_enabled; /* msi enabled */ |
@@ -80,7 +85,8 @@ irqreturn_t amdgpu_irq_handler(int irq, void *arg); | |||
80 | 85 | ||
81 | int amdgpu_irq_init(struct amdgpu_device *adev); | 86 | int amdgpu_irq_init(struct amdgpu_device *adev); |
82 | void amdgpu_irq_fini(struct amdgpu_device *adev); | 87 | void amdgpu_irq_fini(struct amdgpu_device *adev); |
83 | int amdgpu_irq_add_id(struct amdgpu_device *adev, unsigned src_id, | 88 | int amdgpu_irq_add_id(struct amdgpu_device *adev, |
89 | unsigned client_id, unsigned src_id, | ||
84 | struct amdgpu_irq_src *source); | 90 | struct amdgpu_irq_src *source); |
85 | void amdgpu_irq_dispatch(struct amdgpu_device *adev, | 91 | void amdgpu_irq_dispatch(struct amdgpu_device *adev, |
86 | struct amdgpu_iv_entry *entry); | 92 | struct amdgpu_iv_entry *entry); |