*/
typedef struct drm_agp_mem {
unsigned long handle; /**< handle */
- struct agp_memory *memory;
+ DRM_AGP_MEM *memory;
unsigned long bound; /**< address */
int pages;
struct drm_agp_mem *prev; /**< previous entry */
* \sa DRM(agp_init)() and drm_device::agp.
*/
typedef struct drm_agp_head {
- struct agp_kern_info agp_info; /**< AGP device information */
+ DRM_AGP_KERN agp_info; /**< AGP device information */
drm_agp_mem_t *memory; /**< memory entries */
unsigned long mode; /**< AGP mode */
int enabled; /**< whether the AGP bus as been enabled */
extern void DRM(ioremapfree)(void *pt, unsigned long size, drm_device_t *dev);
#if __REALLY_HAVE_AGP
-extern struct agp_memory *DRM(alloc_agp)(int pages, u32 type);
-extern int DRM(free_agp)(struct agp_memory *handle, int pages);
-extern int DRM(bind_agp)(struct agp_memory *handle, unsigned int start);
-extern int DRM(unbind_agp)(struct agp_memory *handle);
+extern DRM_AGP_MEM *DRM(alloc_agp)(int pages, u32 type);
+extern int DRM(free_agp)(DRM_AGP_MEM *handle, int pages);
+extern int DRM(bind_agp)(DRM_AGP_MEM *handle, unsigned int start);
+extern int DRM(unbind_agp)(DRM_AGP_MEM *handle);
#endif
/* Misc. IOCTL support (drm_ioctl.h) */
unsigned int cmd, unsigned long arg );
extern int DRM(irq_install)( drm_device_t *dev, int irq );
extern int DRM(irq_uninstall)( drm_device_t *dev );
-extern irqreturn_t DRM(dma_service)( int irq, void *device,
- struct pt_regs *regs );
+extern irqreturn_t DRM(dma_service)( DRM_IRQ_ARGS );
extern void DRM(driver_irq_preinstall)( drm_device_t *dev );
extern void DRM(driver_irq_postinstall)( drm_device_t *dev );
extern void DRM(driver_irq_uninstall)( drm_device_t *dev );
unsigned int cmd, unsigned long arg);
extern int DRM(agp_bind)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
-extern struct agp_memory *DRM(agp_allocate_memory)(size_t pages, u32 type);
-extern int DRM(agp_free_memory)(struct agp_memory *handle);
-extern int DRM(agp_bind_memory)(struct agp_memory *handle, off_t start);
-extern int DRM(agp_unbind_memory)(struct agp_memory *handle);
+extern DRM_AGP_MEM *DRM(agp_allocate_memory)(size_t pages, u32 type);
+extern int DRM(agp_free_memory)(DRM_AGP_MEM *handle);
+extern int DRM(agp_bind_memory)(DRM_AGP_MEM *handle, off_t start);
+extern int DRM(agp_unbind_memory)(DRM_AGP_MEM *handle);
#endif
/* Stub support (drm_stub.h) */
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->dev;
- struct agp_kern_info *kern;
+ DRM_AGP_KERN *kern;
drm_agp_info_t info;
if (!dev->agp || !dev->agp->acquired || !drm_agp->copy_info)
drm_device_t *dev = priv->dev;
drm_agp_buffer_t request;
drm_agp_mem_t *entry;
- struct agp_memory *memory;
+ DRM_AGP_MEM *memory;
unsigned long pages;
u32 type;
}
/** Calls drm_agp->allocate_memory() */
-struct agp_memory *DRM(agp_allocate_memory)(size_t pages, u32 type)
+DRM_AGP_MEM *DRM(agp_allocate_memory)(size_t pages, u32 type)
{
if (!drm_agp->allocate_memory)
return NULL;
}
/** Calls drm_agp->free_memory() */
-int DRM(agp_free_memory)(struct agp_memory *handle)
+int DRM(agp_free_memory)(DRM_AGP_MEM *handle)
{
if (!handle || !drm_agp->free_memory)
return 0;
}
/** Calls drm_agp->bind_memory() */
-int DRM(agp_bind_memory)(struct agp_memory *handle, off_t start)
+int DRM(agp_bind_memory)(DRM_AGP_MEM *handle, off_t start)
{
if (!handle || !drm_agp->bind_memory)
return -EINVAL;
}
/** Calls drm_agp->unbind_memory() */
-int DRM(agp_unbind_memory)(struct agp_memory *handle)
+int DRM(agp_unbind_memory)(DRM_AGP_MEM *handle)
{
if (!handle || !drm_agp->unbind_memory)
return -EINVAL;
#if __REALLY_HAVE_AGP
/** Wrapper around agp_allocate_memory() */
-struct agp_memory *DRM(alloc_agp)(int pages, u32 type)
+DRM_AGP_MEM *DRM(alloc_agp)(int pages, u32 type)
{
return DRM(agp_allocate_memory)(pages, type);
}
/** Wrapper around agp_free_memory() */
-int DRM(free_agp)(struct agp_memory *handle, int pages)
+int DRM(free_agp)(DRM_AGP_MEM *handle, int pages)
{
return DRM(agp_free_memory)(handle) ? 0 : -EINVAL;
}
/** Wrapper around agp_bind_memory() */
-int DRM(bind_agp)(struct agp_memory *handle, unsigned int start)
+int DRM(bind_agp)(DRM_AGP_MEM *handle, unsigned int start)
{
return DRM(agp_bind_memory)(handle, start);
}
/** Wrapper around agp_unbind_memory() */
-int DRM(unbind_agp)(struct agp_memory *handle)
+int DRM(unbind_agp)(DRM_AGP_MEM *handle)
{
return DRM(agp_unbind_memory)(handle);
}
#if __REALLY_HAVE_AGP
-agp_memory *DRM(alloc_agp)(int pages, u32 type)
+DRM_AGP_MEM *DRM(alloc_agp)(int pages, u32 type)
{
- agp_memory *handle;
+ DRM_AGP_MEM *handle;
if (!pages) {
DRM_MEM_ERROR(DRM_MEM_TOTALAGP, "Allocating 0 pages\n");
return NULL;
}
-int DRM(free_agp)(agp_memory *handle, int pages)
+int DRM(free_agp)(DRM_AGP_MEM *handle, int pages)
{
int alloc_count;
int free_count;
return retval;
}
-int DRM(bind_agp)(agp_memory *handle, unsigned int start)
+int DRM(bind_agp)(DRM_AGP_MEM *handle, unsigned int start)
{
int retcode = -EINVAL;
return retcode;
}
-int DRM(unbind_agp)(agp_memory *handle)
+int DRM(unbind_agp)(DRM_AGP_MEM *handle)
{
int alloc_count;
int free_count;
/** DRM device local declaration */
#define DRM_DEVICE drm_file_t *priv = filp->private_data; \
drm_device_t *dev = priv->dev
-
-/** IRQ handler arguments */
-#define DRM_IRQ_ARGS int irq, void *arg, struct pt_regs *regs
+
+/** IRQ handler arguments and return type and values */
+#define DRM_IRQ_ARGS int irq, void *arg, struct pt_regs *regs
+
+/** AGP types */
+#define DRM_AGP_MEM struct agp_memory
+#define DRM_AGP_KERN struct agp_kern_info
+
/** Task queue handler arguments */
#define DRM_TASKQUEUE_ARGS void *arg
return (!GAMMA_READ(GAMMA_DMACOUNT));
}
-irqreturn_t gamma_dma_service(int irq, void *device, struct pt_regs *regs)
+irqreturn_t gamma_dma_service( DRM_IRQ_ARGS )
{
- drm_device_t *dev = (drm_device_t *)device;
+ drm_device_t *dev = (drm_device_t *)arg;
drm_device_dma_t *dma = dev->dma;
drm_gamma_private_t *dev_priv =
(drm_gamma_private_t *)dev->dev_private;
+ /* FIXME: should check whether we're actually interested in the interrupt? */
atomic_inc(&dev->counts[6]); /* _DRM_STAT_IRQ */
while (GAMMA_READ(GAMMA_INFIFOSPACE) < 3)
}
clear_bit(0, &dev->dma_flag);
- /* Dispatch new buffer */
+ /* Dispatch new buffer */
schedule_work(&dev->work);
}
return IRQ_HANDLED;
#include <linux/delay.h>
-irqreturn_t DRM(dma_service)(int irq, void *device, struct pt_regs *regs)
+irqreturn_t DRM(dma_service)( DRM_IRQ_ARGS )
{
- drm_device_t *dev = (drm_device_t *)device;
+ drm_device_t *dev = (drm_device_t *)arg;
drm_i830_private_t *dev_priv = (drm_i830_private_t *)dev->dev_private;
u16 temp;