summaryrefslogtreecommitdiff
path: root/linux-core/i830_dma.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2005-02-01 10:33:51 +0000
committerDave Airlie <airlied@linux.ie>2005-02-01 10:33:51 +0000
commit62e0a58ecf03fe85de6e671fe2fc7f613ba39b37 (patch)
treef91f014377c83b1ccb25db8c21c5b27c77e5c074 /linux-core/i830_dma.c
parent8d4c731aa1e0936d8187ad77b5c779a79e22566d (diff)
update i830 similiar to the kernel, add statics
Diffstat (limited to 'linux-core/i830_dma.c')
-rw-r--r--linux-core/i830_dma.c98
1 files changed, 55 insertions, 43 deletions
diff --git a/linux-core/i830_dma.c b/linux-core/i830_dma.c
index 454d82a3..90ce43ea 100644
--- a/linux-core/i830_dma.c
+++ b/linux-core/i830_dma.c
@@ -54,23 +54,6 @@
#define I830_BUF_UNMAPPED 0
#define I830_BUF_MAPPED 1
-static inline void i830_print_status_page(drm_device_t * dev)
-{
- drm_device_dma_t *dma = dev->dma;
- drm_i830_private_t *dev_priv = dev->dev_private;
- u32 *temp = dev_priv->hw_status_page;
- int i;
-
- DRM_DEBUG("hw_status: Interrupt Status : %x\n", temp[0]);
- DRM_DEBUG("hw_status: LpRing Head ptr : %x\n", temp[1]);
- DRM_DEBUG("hw_status: IRing Head ptr : %x\n", temp[2]);
- DRM_DEBUG("hw_status: Reserved : %x\n", temp[3]);
- DRM_DEBUG("hw_status: Driver Counter : %d\n", temp[5]);
- for (i = 9; i < dma->buf_count + 9; i++) {
- DRM_DEBUG("buffer status idx : %d used: %d\n", i - 9, temp[i]);
- }
-}
-
static drm_buf_t *i830_freelist_get(drm_device_t * dev)
{
drm_device_dma_t *dma = dev->dma;
@@ -232,7 +215,7 @@ static int i830_dma_get_buffer(drm_device_t * dev, drm_i830_dma_t * d,
return retcode;
}
-int i830_dma_cleanup(drm_device_t * dev)
+static int i830_dma_cleanup(drm_device_t * dev)
{
drm_device_dma_t *dma = dev->dma;
@@ -467,8 +450,8 @@ static int i830_dma_initialize(drm_device_t * dev,
return 0;
}
-int i830_dma_init(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+static int i830_dma_init(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1214,7 +1197,7 @@ static void i830_dma_dispatch_vertex(drm_device_t * dev,
}
}
-void i830_dma_quiescent(drm_device_t * dev)
+static void i830_dma_quiescent(drm_device_t * dev)
{
drm_i830_private_t *dev_priv = dev->dev_private;
RING_LOCALS;
@@ -1294,8 +1277,8 @@ void i830_reclaim_buffers(drm_device_t *dev, struct file *filp)
}
}
-int i830_flush_ioctl(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+static int i830_flush_ioctl(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1306,8 +1289,8 @@ int i830_flush_ioctl(struct inode *inode, struct file *filp,
return 0;
}
-int i830_dma_vertex(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+static int i830_dma_vertex(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1340,8 +1323,8 @@ int i830_dma_vertex(struct inode *inode, struct file *filp,
return 0;
}
-int i830_clear_bufs(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+static int i830_clear_bufs(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1364,8 +1347,8 @@ int i830_clear_bufs(struct inode *inode, struct file *filp,
return 0;
}
-int i830_swap_bufs(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+static int i830_swap_bufs(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1390,7 +1373,7 @@ static void i830_do_init_pageflip(drm_device_t * dev)
dev_priv->sarea_priv->pf_current_page = dev_priv->current_page;
}
-int i830_do_cleanup_pageflip(drm_device_t * dev)
+static int i830_do_cleanup_pageflip(drm_device_t * dev)
{
drm_i830_private_t *dev_priv = dev->dev_private;
@@ -1402,8 +1385,8 @@ int i830_do_cleanup_pageflip(drm_device_t * dev)
return 0;
}
-int i830_flip_bufs(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+static int i830_flip_bufs(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1420,8 +1403,8 @@ int i830_flip_bufs(struct inode *inode, struct file *filp,
return 0;
}
-int i830_getage(struct inode *inode, struct file *filp, unsigned int cmd,
- unsigned long arg)
+static int i830_getage(struct inode *inode, struct file *filp, unsigned int cmd,
+ unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1434,8 +1417,8 @@ int i830_getage(struct inode *inode, struct file *filp, unsigned int cmd,
return 0;
}
-int i830_getbuf(struct inode *inode, struct file *filp, unsigned int cmd,
- unsigned long arg)
+static int i830_getbuf(struct inode *inode, struct file *filp, unsigned int cmd,
+ unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1466,21 +1449,21 @@ int i830_getbuf(struct inode *inode, struct file *filp, unsigned int cmd,
return retcode;
}
-int i830_copybuf(struct inode *inode,
- struct file *filp, unsigned int cmd, unsigned long arg)
+static int i830_copybuf(struct inode *inode,
+ struct file *filp, unsigned int cmd, unsigned long arg)
{
/* Never copy - 2.4.x doesn't need it */
return 0;
}
-int i830_docopy(struct inode *inode, struct file *filp, unsigned int cmd,
+static int i830_docopy(struct inode *inode, struct file *filp, unsigned int cmd,
unsigned long arg)
{
return 0;
}
-int i830_getparam(struct inode *inode, struct file *filp, unsigned int cmd,
- unsigned long arg)
+static int i830_getparam(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1513,8 +1496,8 @@ int i830_getparam(struct inode *inode, struct file *filp, unsigned int cmd,
return 0;
}
-int i830_setparam(struct inode *inode, struct file *filp, unsigned int cmd,
- unsigned long arg)
+static int i830_setparam(struct inode *inode, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->head->dev;
@@ -1546,6 +1529,16 @@ void i830_driver_pretakedown(drm_device_t * dev)
i830_dma_cleanup(dev);
}
+void i830_driver_prerelease(drm_device_t * dev, DRMFILE filp)
+{
+ if (dev->dev_private) {
+ drm_i830_private_t *dev_priv = dev->dev_private;
+ if (dev_priv->page_flipping) {
+ i830_do_cleanup_pageflip(dev);
+ }
+ }
+}
+
void i830_driver_release(drm_device_t * dev, struct file *filp)
{
i830_reclaim_buffers(dev, filp);
@@ -1556,3 +1549,22 @@ int i830_driver_dma_quiescent(drm_device_t * dev)
i830_dma_quiescent(dev);
return 0;
}
+
+drm_ioctl_desc_t i830_ioctls[] = {
+ [DRM_IOCTL_NR(DRM_I830_INIT)] = {i830_dma_init, 1, 1},
+ [DRM_IOCTL_NR(DRM_I830_VERTEX)] = {i830_dma_vertex, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_CLEAR)] = {i830_clear_bufs, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_FLUSH)] = {i830_flush_ioctl, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_GETAGE)] = {i830_getage, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_GETBUF)] = {i830_getbuf, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_SWAP)] = {i830_swap_bufs, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_COPY)] = {i830_copybuf, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_DOCOPY)] = {i830_docopy, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_FLIP)] = {i830_flip_bufs, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_IRQ_EMIT)] = {i830_irq_emit, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_IRQ_WAIT)] = {i830_irq_wait, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_GETPARAM)] = {i830_getparam, 1, 0},
+ [DRM_IOCTL_NR(DRM_I830_SETPARAM)] = {i830_setparam, 1, 0}
+};
+
+int i830_max_ioctl = DRM_ARRAY_SIZE(i830_ioctls);