| .. | .. |
|---|
| 35 | 35 | * The refresh rate is also calculated for video playback sync purposes. |
|---|
| 36 | 36 | */ |
|---|
| 37 | 37 | |
|---|
| 38 | | -#include <drm/drmP.h> |
|---|
| 38 | +#include <drm/drm_device.h> |
|---|
| 39 | +#include <drm/drm_vblank.h> |
|---|
| 39 | 40 | #include <drm/via_drm.h> |
|---|
| 41 | + |
|---|
| 40 | 42 | #include "via_drv.h" |
|---|
| 41 | 43 | |
|---|
| 42 | 44 | #define VIA_REG_INTERRUPT 0x200 |
|---|
| .. | .. |
|---|
| 108 | 110 | drm_via_irq_t *cur_irq = dev_priv->via_irqs; |
|---|
| 109 | 111 | int i; |
|---|
| 110 | 112 | |
|---|
| 111 | | - status = VIA_READ(VIA_REG_INTERRUPT); |
|---|
| 113 | + status = via_read(dev_priv, VIA_REG_INTERRUPT); |
|---|
| 112 | 114 | if (status & VIA_IRQ_VBLANK_PENDING) { |
|---|
| 113 | 115 | atomic_inc(&dev_priv->vbl_received); |
|---|
| 114 | 116 | if (!(atomic_read(&dev_priv->vbl_received) & 0x0F)) { |
|---|
| .. | .. |
|---|
| 143 | 145 | } |
|---|
| 144 | 146 | |
|---|
| 145 | 147 | /* Acknowledge interrupts */ |
|---|
| 146 | | - VIA_WRITE(VIA_REG_INTERRUPT, status); |
|---|
| 148 | + via_write(dev_priv, VIA_REG_INTERRUPT, status); |
|---|
| 147 | 149 | |
|---|
| 148 | 150 | |
|---|
| 149 | 151 | if (handled) |
|---|
| .. | .. |
|---|
| 158 | 160 | |
|---|
| 159 | 161 | if (dev_priv) { |
|---|
| 160 | 162 | /* 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 | |
|---|
| 163 | 165 | dev_priv->irq_pending_mask); |
|---|
| 164 | 166 | } |
|---|
| 165 | 167 | } |
|---|
| .. | .. |
|---|
| 174 | 176 | return -EINVAL; |
|---|
| 175 | 177 | } |
|---|
| 176 | 178 | |
|---|
| 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); |
|---|
| 179 | 181 | |
|---|
| 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); |
|---|
| 182 | 184 | |
|---|
| 183 | 185 | return 0; |
|---|
| 184 | 186 | } |
|---|
| .. | .. |
|---|
| 188 | 190 | drm_via_private_t *dev_priv = dev->dev_private; |
|---|
| 189 | 191 | u32 status; |
|---|
| 190 | 192 | |
|---|
| 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); |
|---|
| 193 | 195 | |
|---|
| 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); |
|---|
| 196 | 198 | |
|---|
| 197 | 199 | if (pipe != 0) |
|---|
| 198 | 200 | DRM_ERROR("%s: bad crtc %u\n", __func__, pipe); |
|---|
| .. | .. |
|---|
| 233 | 235 | cur_irq = dev_priv->via_irqs + real_irq; |
|---|
| 234 | 236 | |
|---|
| 235 | 237 | 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]) == |
|---|
| 238 | 240 | masks[irq][4])); |
|---|
| 239 | 241 | cur_irq_sequence = atomic_read(&cur_irq->irq_received); |
|---|
| 240 | 242 | } else { |
|---|
| 241 | | - DRM_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ, |
|---|
| 243 | + VIA_WAIT_ON(ret, cur_irq->irq_queue, 3 * HZ, |
|---|
| 242 | 244 | (((cur_irq_sequence = |
|---|
| 243 | 245 | atomic_read(&cur_irq->irq_received)) - |
|---|
| 244 | 246 | *sequence) <= (1 << 23))); |
|---|
| .. | .. |
|---|
| 292 | 294 | dev_priv->last_vblank_valid = 0; |
|---|
| 293 | 295 | |
|---|
| 294 | 296 | /* 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 & |
|---|
| 297 | 299 | ~(dev_priv->irq_enable_mask)); |
|---|
| 298 | 300 | |
|---|
| 299 | 301 | /* Clear bits if they're already high */ |
|---|
| .. | .. |
|---|
| 310 | 312 | if (!dev_priv) |
|---|
| 311 | 313 | return -EINVAL; |
|---|
| 312 | 314 | |
|---|
| 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 |
|---|
| 315 | 317 | | dev_priv->irq_enable_mask); |
|---|
| 316 | 318 | |
|---|
| 317 | 319 | /* 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); |
|---|
| 320 | 322 | |
|---|
| 321 | 323 | return 0; |
|---|
| 322 | 324 | } |
|---|
| .. | .. |
|---|
| 331 | 333 | |
|---|
| 332 | 334 | /* Some more magic, oh for some data sheets ! */ |
|---|
| 333 | 335 | |
|---|
| 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); |
|---|
| 336 | 338 | |
|---|
| 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 & |
|---|
| 339 | 341 | ~(VIA_IRQ_VBLANK_ENABLE | dev_priv->irq_enable_mask)); |
|---|
| 340 | 342 | } |
|---|
| 341 | 343 | } |
|---|