commit kernel changes for agp (needs agpgart.diff - also added) update

gamma driver for changes.
This commit is contained in:
Alan Hourihane 2001-03-15 21:48:51 +00:00
parent e4a4359e93
commit 2bea25890b
13 changed files with 431 additions and 75 deletions

View file

@ -882,11 +882,16 @@ int drmAgpRelease(int fd)
return 0;
}
int drmAgpEnable(int fd, unsigned long mode)
int drmAgpEnable(int fd, unsigned int mode, unsigned int bus, unsigned int slot,
unsigned int func)
{
drm_agp_mode_t m;
drm_agp_setup_t m;
m.agp_mode = mode;
m.bus = bus;
m.slot = slot;
m.func = func;
m.mode = mode;
if (ioctl(fd, DRM_IOCTL_AGP_ENABLE, &m)) return -errno;
return 0;
}

View file

@ -897,6 +897,8 @@ extern int DRM(agp_acquire)(struct inode *inode, struct file *filp,
extern void DRM(agp_do_release)(void);
extern int DRM(agp_release)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
extern int DRM(agp_enable_old)(struct inode *inode,struct file *filp,
unsigned int cmd, unsigned long arg);
extern int DRM(agp_enable)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
extern int DRM(agp_info)(struct inode *inode, struct file *filp,

View file

@ -101,20 +101,28 @@ void DRM(agp_do_release)(void)
if (drm_agp->release) drm_agp->release();
}
int DRM(agp_enable_old)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
DRM_ERROR("Called deprecated agp_enable ioctl, not enabling AGP.\n");
return -ENOSYS;
}
int DRM(agp_enable)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->dev;
drm_agp_mode_t mode;
agp_setup setup;
if (!dev->agp->acquired || !drm_agp->enable) return -EINVAL;
if (copy_from_user(&mode, (drm_agp_mode_t *)arg, sizeof(mode)))
if (copy_from_user(&setup, (drm_agp_setup_t *)arg, sizeof(setup)))
return -EFAULT;
dev->agp->mode = mode.mode;
drm_agp->enable(mode.mode);
dev->agp->mode = setup.agp_mode;
drm_agp->enable(&setup);
dev->agp->base = dev->agp->agp_info.aper_base;
dev->agp->enabled = 1;
return 0;

View file

@ -166,12 +166,13 @@ static drm_ioctl_desc_t DRM(ioctls)[] = {
#if __REALLY_HAVE_AGP
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ACQUIRE)] = { DRM(agp_acquire), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_RELEASE)] = { DRM(agp_release), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE)] = { DRM(agp_enable), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE_OLD)] = { DRM(agp_enable_old),1,1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_INFO)] = { DRM(agp_info), 1, 0 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ALLOC)] = { DRM(agp_alloc), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_FREE)] = { DRM(agp_free), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_BIND)] = { DRM(agp_bind), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_UNBIND)] = { DRM(agp_unbind), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE)] = { DRM(agp_enable), 1, 1 },
#endif
DRIVER_IOCTLS

319
linux/agpgart.diff Normal file
View file

@ -0,0 +1,319 @@
diff -u linux/drivers/char/agp/agp.h linux-agp/drivers/char/agp/agp.h
--- linux/drivers/char/agp/agp.h Thu Mar 15 19:08:11 2001
+++ linux-agp/drivers/char/agp/agp.h Thu Mar 15 17:42:26 2001
@@ -106,7 +106,7 @@
int (*fetch_size) (void);
int (*configure) (void);
- void (*agp_enable) (u32);
+ void (*agp_enable) (agp_setup *);
void (*cleanup) (void);
void (*tlb_flush) (agp_memory *);
unsigned long (*mask_memory) (unsigned long, int);
diff -u linux/drivers/char/agp/agpgart_be.c linux-agp/drivers/char/agp/agpgart_be.c
--- linux/drivers/char/agp/agpgart_be.c Thu Mar 15 19:08:11 2001
+++ linux-agp/drivers/char/agp/agpgart_be.c Thu Mar 15 19:00:44 2001
@@ -383,10 +383,14 @@
/* Generic Agp routines - Start */
-static void agp_generic_agp_enable(u32 mode)
+static void agp_generic_agp_enable(agp_setup *modesetup)
{
struct pci_dev *device = NULL;
u32 command, scratch, cap_id;
+ u32 mode = modesetup->agp_mode;
+ u32 bus = modesetup->bus;
+ u32 slot = modesetup->slot;
+ u32 func = modesetup->func;
u8 cap_ptr;
pci_read_config_dword(agp_bridge.dev,
@@ -394,72 +398,81 @@
&command);
/*
- * PASS1: go throu all devices that claim to be
- * AGP devices and collect their data.
+ * PASS1: Find AGP device, by BusID
*/
- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
- device)) != NULL) {
- pci_read_config_dword(device, 0x04, &scratch);
-
- if (!(scratch & 0x00100000))
- continue;
-
- pci_read_config_byte(device, 0x34, &cap_ptr);
-
- if (cap_ptr != 0x00) {
- do {
- pci_read_config_dword(device,
- cap_ptr, &cap_id);
+ device = pci_find_slot(bus, PCI_DEVFN(slot, func));
- if ((cap_id & 0xff) != 0x02)
- cap_ptr = (cap_id >> 8) & 0xff;
- }
- while (((cap_id & 0xff) != 0x02) && (cap_ptr != 0x00));
- }
- if (cap_ptr != 0x00) {
- /*
- * Ok, here we have a AGP device. Disable impossible
- * settings, and adjust the readqueue to the minimum.
- */
-
- pci_read_config_dword(device, cap_ptr + 4, &scratch);
-
- /* adjust RQ depth */
- command =
- ((command & ~0xff000000) |
- min((mode & 0xff000000),
- min((command & 0xff000000),
- (scratch & 0xff000000))));
-
- /* disable SBA if it's not supported */
- if (!((command & 0x00000200) &&
- (scratch & 0x00000200) &&
- (mode & 0x00000200)))
- command &= ~0x00000200;
-
- /* disable FW if it's not supported */
- if (!((command & 0x00000010) &&
- (scratch & 0x00000010) &&
- (mode & 0x00000010)))
- command &= ~0x00000010;
-
- if (!((command & 4) &&
- (scratch & 4) &&
- (mode & 4)))
- command &= ~0x00000004;
-
- if (!((command & 2) &&
- (scratch & 2) &&
- (mode & 2)))
- command &= ~0x00000002;
-
- if (!((command & 1) &&
- (scratch & 1) &&
- (mode & 1)))
- command &= ~0x00000001;
+ /* We should return failure,
+ but it's the upper level drivers fault really */
+ if (!device) {
+ printk("Failed to initialize AGP device %d:%d:%d\n",
+ bus, slot, func);
+ return;
+ }
+
+#if 0 /* Jeff - what's this ? I can't find it in the AGP spec */
+ pci_read_config_dword(device, 0x04, &scratch);
+
+ if (!(scratch & 0x00100000))
+ continue;
+#endif
+
+ pci_read_config_byte(device, 0x34, &cap_ptr);
+
+ if (cap_ptr != 0x00) {
+ do {
+ pci_read_config_dword(device,
+ cap_ptr, &cap_id);
+
+ if ((cap_id & 0xff) != 0x02)
+ cap_ptr = (cap_id >> 8) & 0xff;
}
+ while (((cap_id & 0xff) != 0x02) && (cap_ptr != 0x00));
+ }
+ if (cap_ptr != 0x00) {
+ /*
+ * Ok, here we have a AGP device. Disable impossible
+ * settings, and adjust the readqueue to the minimum.
+ */
+
+ pci_read_config_dword(device, cap_ptr + 4, &scratch);
+
+ /* adjust RQ depth */
+ command =
+ ((command & ~0xff000000) |
+ min((mode & 0xff000000),
+ min((command & 0xff000000),
+ (scratch & 0xff000000))));
+
+ /* disable SBA if it's not supported */
+ if (!((command & 0x00000200) &&
+ (scratch & 0x00000200) &&
+ (mode & 0x00000200)))
+ command &= ~0x00000200;
+
+ /* disable FW if it's not supported */
+ if (!((command & 0x00000010) &&
+ (scratch & 0x00000010) &&
+ (mode & 0x00000010)))
+ command &= ~0x00000010;
+
+ if (!((command & 4) &&
+ (scratch & 4) &&
+ (mode & 4)))
+ command &= ~0x00000004;
+
+ if (!((command & 2) &&
+ (scratch & 2) &&
+ (mode & 2)))
+ command &= ~0x00000002;
+
+ if (!((command & 1) &&
+ (scratch & 1) &&
+ (mode & 1)))
+ command &= ~0x00000001;
}
+
/*
* PASS2: Figure out the 4X/2X/1X setting and enable the
* target (our motherboard chipset).
@@ -481,32 +494,31 @@
command);
/*
- * PASS3: Go throu all AGP devices and update the
- * command registers.
+ * PASS3:
+ * update command registers.
*/
- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
- device)) != NULL) {
- pci_read_config_dword(device, 0x04, &scratch);
-
- if (!(scratch & 0x00100000))
- continue;
-
- pci_read_config_byte(device, 0x34, &cap_ptr);
-
- if (cap_ptr != 0x00) {
- do {
- pci_read_config_dword(device,
- cap_ptr, &cap_id);
+#if 0 /* Jeff - what's this ? I can't find it in the AGP spec */
+ pci_read_config_dword(device, 0x04, &scratch);
- if ((cap_id & 0xff) != 0x02)
- cap_ptr = (cap_id >> 8) & 0xff;
- }
- while (((cap_id & 0xff) != 0x02) && (cap_ptr != 0x00));
+ if (!(scratch & 0x00100000))
+ continue;
+#endif
+
+ pci_read_config_byte(device, 0x34, &cap_ptr);
+
+ if (cap_ptr != 0x00) {
+ do {
+ pci_read_config_dword(device,
+ cap_ptr, &cap_id);
+
+ if ((cap_id & 0xff) != 0x02)
+ cap_ptr = (cap_id >> 8) & 0xff;
}
- if (cap_ptr != 0x00)
- pci_write_config_dword(device, cap_ptr + 8, command);
+ while (((cap_id & 0xff) != 0x02) && (cap_ptr != 0x00));
}
+ if (cap_ptr != 0x00)
+ pci_write_config_dword(device, cap_ptr + 8, command);
}
static int agp_generic_create_gatt_table(void)
@@ -803,7 +815,7 @@
/* End Basic Page Allocation Routines */
-void agp_enable(u32 mode)
+void agp_enable(agp_setup *mode)
{
if (agp_bridge.type == NOT_SUPPORTED) return;
agp_bridge.agp_enable(mode);
@@ -909,7 +921,7 @@
return;
}
-static void intel_i810_agp_enable(u32 mode)
+static void intel_i810_agp_enable(agp_setup *mode)
{
return;
}
diff -u linux/drivers/char/agp/agpgart_fe.c linux-agp/drivers/char/agp/agpgart_fe.c
--- linux/drivers/char/agp/agpgart_fe.c Thu Mar 15 19:08:11 2001
+++ linux-agp/drivers/char/agp/agpgart_fe.c Thu Mar 15 17:37:06 2001
@@ -838,7 +838,7 @@
if (copy_from_user(&mode, (void *) arg, sizeof(agp_setup))) {
return -EFAULT;
}
- agp_enable(mode.agp_mode);
+ agp_enable(&mode);
return 0;
}
diff -u linux/include/linux/agp_backend.h linux-agp/include/linux/agp_backend.h
--- linux/include/linux/agp_backend.h Thu Mar 15 19:08:15 2001
+++ linux-agp/include/linux/agp_backend.h Thu Mar 15 17:48:13 2001
@@ -84,6 +84,13 @@
int current_memory;
} agp_kern_info;
+typedef struct _agp_setup {
+ u32 agp_mode;
+ u32 bus;
+ u32 slot;
+ u32 func;
+} agp_setup;
+
/*
* The agp_memory structure has information
* about the block of agp memory allocated.
@@ -195,7 +202,7 @@
*
*/
-extern void agp_enable(u32);
+extern void agp_enable(agp_setup *);
/*
* agp_enable :
@@ -239,7 +246,7 @@
agp_memory *(*allocate_memory)(size_t, u32);
int (*bind_memory)(agp_memory *, off_t);
int (*unbind_memory)(agp_memory *);
- void (*enable)(u32);
+ void (*enable)(agp_setup *);
int (*acquire)(void);
void (*release)(void);
void (*copy_info)(agp_kern_info *);
diff -u linux/include/linux/agpgart.h linux-agp/include/linux/agpgart.h
--- linux/include/linux/agpgart.h Mon Dec 11 20:51:40 2000
+++ linux-agp/include/linux/agpgart.h Thu Mar 15 17:39:09 2001
@@ -69,9 +69,11 @@
size_t pg_used; /* current pages used */
} agp_info;
+#if 0
typedef struct _agp_setup {
__u32 agp_mode; /* mode info of bridge */
} agp_setup;
+#endif
/*
* The "prot" down below needs still a "sleep" flag somehow ...
@@ -135,9 +137,11 @@
size_t pg_used; /* current pages used */
} agp_info;
+#if 0
typedef struct _agp_setup {
u32 agp_mode; /* mode info of bridge */
} agp_setup;
+#endif
/*
* The "prot" down below needs still a "sleep" flag somehow ...

View file

@ -34,7 +34,7 @@ typedef struct {
agp_memory *(*allocate_memory)(size_t, u32);
int (*bind_memory)(agp_memory *, off_t);
int (*unbind_memory)(agp_memory *);
void (*enable)(u32);
void (*enable)(agp_setup *);
int (*acquire)(void);
void (*release)(void);
void (*copy_info)(agp_kern_info *);
@ -52,7 +52,7 @@ typedef union {
agp_memory *(*allocate_memory)(size_t, u32);
int (*bind_memory)(agp_memory *, off_t);
int (*unbind_memory)(agp_memory *);
void (*enable)(u32);
void (*enable)(agp_setup *);
int (*acquire)(void);
void (*release)(void);
void (*copy_info)(agp_kern_info *);

View file

@ -307,10 +307,18 @@ typedef struct drm_irq_busid {
int funcnum;
} drm_irq_busid_t;
/* This one here for backwards compatibility, use drm_agp_setup instead */
typedef struct drm_agp_mode {
unsigned long mode;
unsigned int agp_mode;
} drm_agp_mode_t;
typedef struct drm_agp_setup {
unsigned int agp_mode;
unsigned int bus;
unsigned int slot;
unsigned int func;
} drm_agp_setup_t;
/* For drm_agp_alloc -- allocated a buffer */
typedef struct drm_agp_buffer {
unsigned long size; /* In bytes -- will round to page boundary */
@ -382,12 +390,13 @@ typedef struct drm_agp_info {
#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
#define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31)
#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, drm_agp_mode_t)
#define DRM_IOCTL_AGP_ENABLE_OLD DRM_IOW( 0x32, drm_agp_mode_t)
#define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, drm_agp_info_t)
#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t)
#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, drm_agp_buffer_t)
#define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, drm_agp_binding_t)
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binding_t)
#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x38, drm_agp_setup_t)
/* MGA specific ioctls */
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)

View file

@ -897,6 +897,8 @@ extern int DRM(agp_acquire)(struct inode *inode, struct file *filp,
extern void DRM(agp_do_release)(void);
extern int DRM(agp_release)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
extern int DRM(agp_enable_old)(struct inode *inode,struct file *filp,
unsigned int cmd, unsigned long arg);
extern int DRM(agp_enable)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
extern int DRM(agp_info)(struct inode *inode, struct file *filp,

View file

@ -101,20 +101,28 @@ void DRM(agp_do_release)(void)
if (drm_agp->release) drm_agp->release();
}
int DRM(agp_enable_old)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
DRM_ERROR("Called deprecated agp_enable ioctl, not enabling AGP.\n");
return -ENOSYS;
}
int DRM(agp_enable)(struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg)
{
drm_file_t *priv = filp->private_data;
drm_device_t *dev = priv->dev;
drm_agp_mode_t mode;
agp_setup setup;
if (!dev->agp->acquired || !drm_agp->enable) return -EINVAL;
if (copy_from_user(&mode, (drm_agp_mode_t *)arg, sizeof(mode)))
if (copy_from_user(&setup, (drm_agp_setup_t *)arg, sizeof(setup)))
return -EFAULT;
dev->agp->mode = mode.mode;
drm_agp->enable(mode.mode);
dev->agp->mode = setup.agp_mode;
drm_agp->enable(&setup);
dev->agp->base = dev->agp->agp_info.aper_base;
dev->agp->enabled = 1;
return 0;

View file

@ -166,12 +166,13 @@ static drm_ioctl_desc_t DRM(ioctls)[] = {
#if __REALLY_HAVE_AGP
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ACQUIRE)] = { DRM(agp_acquire), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_RELEASE)] = { DRM(agp_release), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE)] = { DRM(agp_enable), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE_OLD)] = { DRM(agp_enable_old),1,1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_INFO)] = { DRM(agp_info), 1, 0 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ALLOC)] = { DRM(agp_alloc), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_FREE)] = { DRM(agp_free), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_BIND)] = { DRM(agp_bind), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_UNBIND)] = { DRM(agp_unbind), 1, 1 },
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE)] = { DRM(agp_enable), 1, 1 },
#endif
DRIVER_IOCTLS

View file

@ -639,72 +639,55 @@ static int gamma_do_init_dma( drm_device_t *dev, drm_gamma_init_t *init )
DRM_DEBUG( "%s\n", __FUNCTION__ );
if (init->pcimode) {
printk("INITING PCI DMA MODE\n");
for (i = 0; i < 21; i++) {
buf = dma->buflist[i];
printk("0x%x 0x%x\n",buf->address,virt_to_phys((void*)buf->address));
}
if (init->pcimode) {
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
pgt = buf->address;
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
pgt = buf->address;
printk("pgt = 0x%x\n",pgt);
for (i = 0; i < GLINT_DRI_BUF_COUNT; i++) {
buf = dma->buflist[i];
*pgt = virt_to_phys((void*)buf->address) | 0x07;
pgt++;
}
printk("0x%x\n",virt_to_phys((void*)buf->address) >> 12);
for (i = 0; i < GLINT_DRI_BUF_COUNT; i++) {
buf = dma->buflist[i];
*pgt = virt_to_phys((void*)buf->address) | 0x07;
printk("0x%x ",*pgt);
pgt++;
}
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
} else {
/* some of this currently isn't used */
dev_priv = DRM(alloc)( sizeof(drm_gamma_private_t),
DRM_MEM_DRIVER );
if ( !dev_priv )
return -ENOMEM;
dev->dev_private = (void *)dev_priv;
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
GAMMA_WRITE( GAMMA_PAGETABLEADDR, virt_to_phys((void*)buf->address) );
GAMMA_WRITE( GAMMA_PAGETABLELENGTH, 2 );
} else {
printk("INITING AGP DMA MODE\n");
dev_priv = DRM(alloc)( sizeof(drm_gamma_private_t), DRM_MEM_DRIVER );
if ( !dev_priv )
return -ENOMEM;
dev->dev_private = (void *)dev_priv;
memset( dev_priv, 0, sizeof(drm_gamma_private_t) );
memset( dev_priv, 0, sizeof(drm_gamma_private_t) );
dev_priv->sarea = dev->maplist[0];
dev_priv->sarea = dev->maplist[0];
DRM_FIND_MAP( dev_priv->buffers, init->buffers_offset );
DRM_FIND_MAP( dev_priv->buffers, init->buffers_offset );
dev_priv->sarea_priv =
(drm_gamma_sarea_t *)((u8 *)dev_priv->sarea->handle +
dev_priv->sarea_priv =
(drm_gamma_sarea_t *)((u8 *)dev_priv->sarea->handle +
init->sarea_priv_offset);
DRM_IOREMAP( dev_priv->buffers );
DRM_IOREMAP( dev_priv->buffers );
printk("0x%x 0x%x 0x%x\n",dev_priv->buffers->handle,dev_priv->buffers->size,dev_priv->buffers->offset);
for (i = 0; i < 21; i++) {
buf = dma->buflist[i];
printk("0x%x\n",buf->address);
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
pgt = buf->address;
for (i = 0; i < GLINT_DRI_BUF_COUNT; i++) {
buf = dma->buflist[i];
*pgt = (unsigned int)buf->address + 0x07;
pgt++;
}
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
while (GAMMA_READ(GAMMA_INFIFOSPACE) < 1);
GAMMA_WRITE( GAMMA_GDMACONTROL, 0xe);
}
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
pgt = buf->address;
printk("pgt = 0x%x\n",pgt);
printk("0x%x\n",virt_to_phys((void*)buf->address) >> 12);
for (i = 0; i < GLINT_DRI_BUF_COUNT; i++) {
buf = dma->buflist[i];
*pgt = (unsigned int)buf->address + 0x07;
printk("0x%x ",*pgt);
pgt++;
}
buf = dma->buflist[GLINT_DRI_BUF_COUNT];
while (GAMMA_READ(GAMMA_INFIFOSPACE) < 3);
GAMMA_WRITE( GAMMA_GDMACONTROL, 0x6e);
while (GAMMA_READ(GAMMA_INFIFOSPACE) < 2);
GAMMA_WRITE( GAMMA_PAGETABLEADDR, virt_to_phys((void*)buf->address) );
GAMMA_WRITE( GAMMA_PAGETABLELENGTH, 2 );
}
return 0;
}

View file

@ -307,10 +307,18 @@ typedef struct drm_irq_busid {
int funcnum;
} drm_irq_busid_t;
/* This one here for backwards compatibility, use drm_agp_setup instead */
typedef struct drm_agp_mode {
unsigned long mode;
unsigned int agp_mode;
} drm_agp_mode_t;
typedef struct drm_agp_setup {
unsigned int agp_mode;
unsigned int bus;
unsigned int slot;
unsigned int func;
} drm_agp_setup_t;
/* For drm_agp_alloc -- allocated a buffer */
typedef struct drm_agp_buffer {
unsigned long size; /* In bytes -- will round to page boundary */
@ -382,12 +390,13 @@ typedef struct drm_agp_info {
#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
#define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31)
#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, drm_agp_mode_t)
#define DRM_IOCTL_AGP_ENABLE_OLD DRM_IOW( 0x32, drm_agp_mode_t)
#define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, drm_agp_info_t)
#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t)
#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, drm_agp_buffer_t)
#define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, drm_agp_binding_t)
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binding_t)
#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x38, drm_agp_setup_t)
/* MGA specific ioctls */
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)

View file

@ -307,10 +307,18 @@ typedef struct drm_irq_busid {
int funcnum;
} drm_irq_busid_t;
/* This one here for backwards compatibility, use drm_agp_setup instead */
typedef struct drm_agp_mode {
unsigned long mode;
unsigned int agp_mode;
} drm_agp_mode_t;
typedef struct drm_agp_setup {
unsigned int agp_mode;
unsigned int bus;
unsigned int slot;
unsigned int func;
} drm_agp_setup_t;
/* For drm_agp_alloc -- allocated a buffer */
typedef struct drm_agp_buffer {
unsigned long size; /* In bytes -- will round to page boundary */
@ -382,12 +390,13 @@ typedef struct drm_agp_info {
#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
#define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31)
#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, drm_agp_mode_t)
#define DRM_IOCTL_AGP_ENABLE_OLD DRM_IOW( 0x32, drm_agp_mode_t)
#define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, drm_agp_info_t)
#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t)
#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, drm_agp_buffer_t)
#define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, drm_agp_binding_t)
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binding_t)
#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x38, drm_agp_setup_t)
/* MGA specific ioctls */
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)