forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/drivers/gpu/drm/via/via_irq.c
....@@ -35,8 +35,10 @@
3535 * The refresh rate is also calculated for video playback sync purposes.
3636 */
3737
38
-#include <drm/drmP.h>
38
+#include <drm/drm_device.h>
39
+#include <drm/drm_vblank.h>
3940 #include <drm/via_drm.h>
41
+
4042 #include "via_drv.h"
4143
4244 #define VIA_REG_INTERRUPT 0x200
....@@ -108,7 +110,7 @@
108110 drm_via_irq_t *cur_irq = dev_priv->via_irqs;
109111 int i;
110112
111
- status = VIA_READ(VIA_REG_INTERRUPT);
113
+ status = via_read(dev_priv, VIA_REG_INTERRUPT);
112114 if (status & VIA_IRQ_VBLANK_PENDING) {
113115 atomic_inc(&dev_priv->vbl_received);
114116 if (!(atomic_read(&dev_priv->vbl_received) & 0x0F)) {
....@@ -143,7 +145,7 @@
143145 }
144146
145147 /* Acknowledge interrupts */
146
- VIA_WRITE(VIA_REG_INTERRUPT, status);
148
+ via_write(dev_priv, VIA_REG_INTERRUPT, status);
147149
148150
149151 if (handled)
....@@ -158,8 +160,8 @@
158160
159161 if (dev_priv) {
160162 /* Acknowledge interrupts */
161
- status = VIA_READ(VIA_REG_INTERRUPT);
162
- VIA_WRITE(VIA_REG_INTERRUPT, status |
163
+ status = via_read(dev_priv, VIA_REG_INTERRUPT);
164
+ via_write(dev_priv, VIA_REG_INTERRUPT, status |
163165 dev_priv->irq_pending_mask);
164166 }
165167 }
....@@ -174,11 +176,11 @@
174176 return -EINVAL;
175177 }
176178
177
- status = VIA_READ(VIA_REG_INTERRUPT);
178
- VIA_WRITE(VIA_REG_INTERRUPT, status | VIA_IRQ_VBLANK_ENABLE);
179
+ status = via_read(dev_priv, VIA_REG_INTERRUPT);
180
+ via_write(dev_priv, VIA_REG_INTERRUPT, status | VIA_IRQ_VBLANK_ENABLE);
179181
180
- VIA_WRITE8(0x83d4, 0x11);
181
- VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30);
182
+ via_write8(dev_priv, 0x83d4, 0x11);
183
+ via_write8_mask(dev_priv, 0x83d5, 0x30, 0x30);
182184
183185 return 0;
184186 }
....@@ -188,11 +190,11 @@
188190 drm_via_private_t *dev_priv = dev->dev_private;
189191 u32 status;
190192
191
- status = VIA_READ(VIA_REG_INTERRUPT);
192
- VIA_WRITE(VIA_REG_INTERRUPT, status & ~VIA_IRQ_VBLANK_ENABLE);
193
+ status = via_read(dev_priv, VIA_REG_INTERRUPT);
194
+ via_write(dev_priv, VIA_REG_INTERRUPT, status & ~VIA_IRQ_VBLANK_ENABLE);
193195
194
- VIA_WRITE8(0x83d4, 0x11);
195
- VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) & ~0x30);
196
+ via_write8(dev_priv, 0x83d4, 0x11);
197
+ via_write8_mask(dev_priv, 0x83d5, 0x30, 0);
196198
197199 if (pipe != 0)
198200 DRM_ERROR("%s: bad crtc %u\n", __func__, pipe);
....@@ -233,12 +235,12 @@
233235 cur_irq = dev_priv->via_irqs + real_irq;
234236
235237 if (masks[real_irq][2] && !force_sequence) {
236
- DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
237
- ((VIA_READ(masks[irq][2]) & masks[irq][3]) ==
238
+ VIA_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
239
+ ((via_read(dev_priv, masks[irq][2]) & masks[irq][3]) ==
238240 masks[irq][4]));
239241 cur_irq_sequence = atomic_read(&cur_irq->irq_received);
240242 } else {
241
- DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
243
+ VIA_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ,
242244 (((cur_irq_sequence =
243245 atomic_read(&cur_irq->irq_received)) -
244246 *sequence) <= (1 << 23)));
....@@ -292,8 +294,8 @@
292294 dev_priv->last_vblank_valid = 0;
293295
294296 /* Clear VSync interrupt regs */
295
- status = VIA_READ(VIA_REG_INTERRUPT);
296
- VIA_WRITE(VIA_REG_INTERRUPT, status &
297
+ status = via_read(dev_priv, VIA_REG_INTERRUPT);
298
+ via_write(dev_priv, VIA_REG_INTERRUPT, status &
297299 ~(dev_priv->irq_enable_mask));
298300
299301 /* Clear bits if they're already high */
....@@ -310,13 +312,13 @@
310312 if (!dev_priv)
311313 return -EINVAL;
312314
313
- status = VIA_READ(VIA_REG_INTERRUPT);
314
- VIA_WRITE(VIA_REG_INTERRUPT, status | VIA_IRQ_GLOBAL
315
+ status = via_read(dev_priv, VIA_REG_INTERRUPT);
316
+ via_write(dev_priv, VIA_REG_INTERRUPT, status | VIA_IRQ_GLOBAL
315317 | dev_priv->irq_enable_mask);
316318
317319 /* Some magic, oh for some data sheets ! */
318
- VIA_WRITE8(0x83d4, 0x11);
319
- VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30);
320
+ via_write8(dev_priv, 0x83d4, 0x11);
321
+ via_write8_mask(dev_priv, 0x83d5, 0x30, 0x30);
320322
321323 return 0;
322324 }
....@@ -331,11 +333,11 @@
331333
332334 /* Some more magic, oh for some data sheets ! */
333335
334
- VIA_WRITE8(0x83d4, 0x11);
335
- VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) & ~0x30);
336
+ via_write8(dev_priv, 0x83d4, 0x11);
337
+ via_write8_mask(dev_priv, 0x83d5, 0x30, 0);
336338
337
- status = VIA_READ(VIA_REG_INTERRUPT);
338
- VIA_WRITE(VIA_REG_INTERRUPT, status &
339
+ status = via_read(dev_priv, VIA_REG_INTERRUPT);
340
+ via_write(dev_priv, VIA_REG_INTERRUPT, status &
339341 ~(VIA_IRQ_VBLANK_ENABLE | dev_priv->irq_enable_mask));
340342 }
341343 }