.. | .. |
---|
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 | } |
---|