Beispiel #1
0
int r128_enable_vblank(struct drm_device *dev, int crtc)
{
    drm_r128_private_t *dev_priv = dev->dev_private;

    if (crtc != 0) {
        DRM_ERROR("%s:  bad crtc %d\n", __FUNCTION__, crtc);
        return -EINVAL;
    }

    R128_WRITE(R128_GEN_INT_CNTL, R128_CRTC_VBLANK_INT_EN);
    return 0;
}
Beispiel #2
0
void r128_dma_service( DRM_IRQ_ARGS )
{
	drm_device_t *dev = (drm_device_t *) arg;
	drm_r128_private_t *dev_priv = 
	   (drm_r128_private_t *)dev->dev_private;
	int status;

	status = R128_READ( R128_GEN_INT_STATUS );
	
	/* VBLANK interrupt */
	if ( status & R128_CRTC_VBLANK_INT ) {
		R128_WRITE( R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK );
		atomic_inc(&dev->vbl_received);
		DRM_WAKEUP(&dev->vbl_queue);
		DRM(vbl_send_signals)( dev );
	}
}
Beispiel #3
0
irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS)
{
	struct drm_device *dev = (struct drm_device *) arg;
	drm_r128_private_t *dev_priv = (drm_r128_private_t *) dev->dev_private;
	int status;

	status = R128_READ(R128_GEN_INT_STATUS);

	/* VBLANK interrupt */
	if (status & R128_CRTC_VBLANK_INT) {
		R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK);
		atomic_inc(&dev_priv->vbl_received);
		drm_handle_vblank(dev, 0);
		return IRQ_HANDLED;
	}
	return IRQ_NONE;
}
Beispiel #4
0
irqreturn_t r128_driver_irq_handler( DRM_IRQ_ARGS )
{
	drm_device_t *dev = (drm_device_t *) arg;
	drm_r128_private_t *dev_priv = 
	   (drm_r128_private_t *)dev->dev_private;
	int status;

	status = R128_READ( R128_GEN_INT_STATUS );
	
	/* VBLANK interrupt */
	if ( status & R128_CRTC_VBLANK_INT ) {
		R128_WRITE( R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK );
		atomic_inc(&dev->vbl_received);
		DRM_WAKEUP(&dev->vbl_queue);
		DRM(vbl_send_signals)( dev );
		return IRQ_HANDLED;
	}
	return IRQ_NONE;
}