diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 53 |
1 files changed, 3 insertions, 50 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c index 36483e0d3c97..3a5ca462abf0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | |||
@@ -92,7 +92,7 @@ static void amdgpu_irq_reset_work_func(struct work_struct *work) | |||
92 | } | 92 | } |
93 | 93 | ||
94 | /* Disable *all* interrupts */ | 94 | /* Disable *all* interrupts */ |
95 | static void amdgpu_irq_disable_all(struct amdgpu_device *adev) | 95 | void amdgpu_irq_disable_all(struct amdgpu_device *adev) |
96 | { | 96 | { |
97 | unsigned long irqflags; | 97 | unsigned long irqflags; |
98 | unsigned i, j, k; | 98 | unsigned i, j, k; |
@@ -123,55 +123,6 @@ static void amdgpu_irq_disable_all(struct amdgpu_device *adev) | |||
123 | } | 123 | } |
124 | 124 | ||
125 | /** | 125 | /** |
126 | * amdgpu_irq_preinstall - drm irq preinstall callback | ||
127 | * | ||
128 | * @dev: drm dev pointer | ||
129 | * | ||
130 | * Gets the hw ready to enable irqs (all asics). | ||
131 | * This function disables all interrupt sources on the GPU. | ||
132 | */ | ||
133 | void amdgpu_irq_preinstall(struct drm_device *dev) | ||
134 | { | ||
135 | struct amdgpu_device *adev = dev->dev_private; | ||
136 | |||
137 | /* Disable *all* interrupts */ | ||
138 | amdgpu_irq_disable_all(adev); | ||
139 | /* Clear bits */ | ||
140 | amdgpu_ih_process(adev); | ||
141 | } | ||
142 | |||
143 | /** | ||
144 | * amdgpu_irq_postinstall - drm irq preinstall callback | ||
145 | * | ||
146 | * @dev: drm dev pointer | ||
147 | * | ||
148 | * Handles stuff to be done after enabling irqs (all asics). | ||
149 | * Returns 0 on success. | ||
150 | */ | ||
151 | int amdgpu_irq_postinstall(struct drm_device *dev) | ||
152 | { | ||
153 | dev->max_vblank_count = 0x00ffffff; | ||
154 | return 0; | ||
155 | } | ||
156 | |||
157 | /** | ||
158 | * amdgpu_irq_uninstall - drm irq uninstall callback | ||
159 | * | ||
160 | * @dev: drm dev pointer | ||
161 | * | ||
162 | * This function disables all interrupt sources on the GPU (all asics). | ||
163 | */ | ||
164 | void amdgpu_irq_uninstall(struct drm_device *dev) | ||
165 | { | ||
166 | struct amdgpu_device *adev = dev->dev_private; | ||
167 | |||
168 | if (adev == NULL) { | ||
169 | return; | ||
170 | } | ||
171 | amdgpu_irq_disable_all(adev); | ||
172 | } | ||
173 | |||
174 | /** | ||
175 | * amdgpu_irq_handler - irq handler | 126 | * amdgpu_irq_handler - irq handler |
176 | * | 127 | * |
177 | * @int irq, void *arg: args | 128 | * @int irq, void *arg: args |
@@ -262,6 +213,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev) | |||
262 | cancel_work_sync(&adev->reset_work); | 213 | cancel_work_sync(&adev->reset_work); |
263 | return r; | 214 | return r; |
264 | } | 215 | } |
216 | adev->ddev->max_vblank_count = 0x00ffffff; | ||
265 | 217 | ||
266 | DRM_DEBUG("amdgpu: irq initialized.\n"); | 218 | DRM_DEBUG("amdgpu: irq initialized.\n"); |
267 | return 0; | 219 | return 0; |
@@ -307,6 +259,7 @@ void amdgpu_irq_fini(struct amdgpu_device *adev) | |||
307 | } | 259 | } |
308 | } | 260 | } |
309 | kfree(adev->irq.client[i].sources); | 261 | kfree(adev->irq.client[i].sources); |
262 | adev->irq.client[i].sources = NULL; | ||
310 | } | 263 | } |
311 | } | 264 | } |
312 | 265 | ||