summaryrefslogtreecommitdiff
path: root/sys/dev/drm
diff options
context:
space:
mode:
authorbjs <bjs@NetBSD.org>2007-11-21 19:22:12 +0000
committerbjs <bjs@NetBSD.org>2007-11-21 19:22:12 +0000
commit27bbf3c56563b13656d63721da8fedf5d096eb8c (patch)
tree9e00210951631f3be35c2ad1ffde7b4b9a0cb17a /sys/dev/drm
parent45f44fab6d7c3b7e9d6696113129031ac67358c9 (diff)
Remove #ifdef __OpSys__ sections to make this readable. Add RCS tags.
Nothing done in header files, nor in dev/pci/drm (we might not want to touch this for the sake of merging) yet. Compile tested; please let me know if this broke anything.
Diffstat (limited to 'sys/dev/drm')
-rw-r--r--sys/dev/drm/drm.h2
-rw-r--r--sys/dev/drm/drmP.h2
-rw-r--r--sys/dev/drm/drm_agpsupport.c47
-rw-r--r--sys/dev/drm/drm_atomic.h2
-rw-r--r--sys/dev/drm/drm_auth.c6
-rw-r--r--sys/dev/drm/drm_bufs.c76
-rw-r--r--sys/dev/drm/drm_context.c2
-rw-r--r--sys/dev/drm/drm_dma.c2
-rw-r--r--sys/dev/drm/drm_drawable.c2
-rw-r--r--sys/dev/drm/drm_drv.c277
-rw-r--r--sys/dev/drm/drm_fops.c25
-rw-r--r--sys/dev/drm/drm_ioctl.c8
-rw-r--r--sys/dev/drm/drm_irq.c60
-rw-r--r--sys/dev/drm/drm_linux_list.h2
-rw-r--r--sys/dev/drm/drm_lock.c7
-rw-r--r--sys/dev/drm/drm_memory.c42
-rw-r--r--sys/dev/drm/drm_pci.c84
-rw-r--r--sys/dev/drm/drm_sarea.h2
-rw-r--r--sys/dev/drm/drm_scatter.c2
-rw-r--r--sys/dev/drm/drm_sysctl.c88
-rw-r--r--sys/dev/drm/drm_vm.c30
21 files changed, 71 insertions, 697 deletions
diff --git a/sys/dev/drm/drm.h b/sys/dev/drm/drm.h
index 5f26668891f..a950319c828 100644
--- a/sys/dev/drm/drm.h
+++ b/sys/dev/drm/drm.h
@@ -1,3 +1,5 @@
+/* $NetBSD: drm.h,v 1.2 2007/11/21 19:22:12 bjs Exp $ */
+
/**
* \file drm.h
* Header for the Direct Rendering Manager
diff --git a/sys/dev/drm/drmP.h b/sys/dev/drm/drmP.h
index f5cc4262339..224c99938b7 100644
--- a/sys/dev/drm/drmP.h
+++ b/sys/dev/drm/drmP.h
@@ -1,3 +1,5 @@
+/* $NetBSD: drmP.h,v 1.10 2007/11/21 19:22:12 bjs Exp $ */
+
/* drmP.h -- Private header for Direct Rendering Manager -*- linux-c -*-
* Created: Mon Jan 4 10:05:05 1999 by faith@precisioninsight.com
*/
diff --git a/sys/dev/drm/drm_agpsupport.c b/sys/dev/drm/drm_agpsupport.c
index 48b400de257..acde33bfe34 100644
--- a/sys/dev/drm/drm_agpsupport.c
+++ b/sys/dev/drm/drm_agpsupport.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_agpsupport.c,v 1.3 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_agpsupport.h -- DRM support for AGP/GART backend -*- linux-c -*-
* Created: Mon Dec 13 09:56:45 1999 by faith@precisioninsight.com
*/
@@ -38,57 +40,12 @@ __FBSDID("$FreeBSD: src/sys/dev/drm/drm_agpsupport.c,v 1.5 2006/04/09 20:45:44 a
#include "drmP.h"
-#ifdef __FreeBSD__
-#include <pci/agpreg.h>
-#include <dev/pci/pcireg.h>
-#endif
-
/* Returns 1 if AGP or 0 if not. */
static int
drm_device_find_capability(drm_device_t *dev, int cap)
{
-#ifdef __FreeBSD__
-#if __FreeBSD_version >= 700010
-
- return (pci_find_extcap(dev->device, cap, NULL) == 0);
-#else
- /* Code taken from agp.c. IWBNI that was a public interface. */
- u_int32_t status;
- u_int8_t ptr, next;
-
- /*
- * Check the CAP_LIST bit of the PCI status register first.
- */
- status = pci_read_config(dev->device, PCIR_STATUS, 2);
- if (!(status & 0x10))
- return 0;
-
- /*
- * Traverse the capabilities list.
- */
- for (ptr = pci_read_config(dev->device, AGP_CAPPTR, 1);
- ptr != 0;
- ptr = next) {
- u_int32_t capid = pci_read_config(dev->device, ptr, 4);
- next = AGP_CAPID_GET_NEXT_PTR(capid);
-
- /*
- * If this capability entry ID is cap, then we are done.
- */
- if (AGP_CAPID_GET_CAP_ID(capid) == cap)
- return 1;
- }
-
- return 0;
-#endif
-#else
-#ifdef __NetBSD__
return pci_get_capability(dev->pa.pa_pc, dev->pa.pa_tag, cap,
NULL, NULL);
-#endif
- /* XXX: fill me in for non-FreeBSD */
- return 1;
-#endif
}
int drm_device_is_agp(drm_device_t *dev)
diff --git a/sys/dev/drm/drm_atomic.h b/sys/dev/drm/drm_atomic.h
index 19d0fdd1fa2..753c368056b 100644
--- a/sys/dev/drm/drm_atomic.h
+++ b/sys/dev/drm/drm_atomic.h
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_atomic.h,v 1.2 2007/11/21 19:22:12 bjs Exp $ */
+
/**
* \file drm_atomic.h
* Atomic operations used in the DRM which may or may not be provided by the OS.
diff --git a/sys/dev/drm/drm_auth.c b/sys/dev/drm/drm_auth.c
index f5f7ae49e45..252ad38e2f7 100644
--- a/sys/dev/drm/drm_auth.c
+++ b/sys/dev/drm/drm_auth.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_auth.c,v 1.3 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_auth.h -- IOCTLs for authentication -*- linux-c -*-
* Created: Tue Feb 2 08:37:54 1999 by faith@valinux.com
*/
@@ -129,11 +131,7 @@ int drm_getmagic(DRM_IOCTL_ARGS)
drm_file_t *priv;
DRM_LOCK();
-#ifdef __FreeBSD__
- priv = drm_find_file_by_proc(dev, p);
-#elif defined(__NetBSD__)
priv = drm_find_file_by_proc(dev, p->l_proc);
-#endif
DRM_UNLOCK();
if (priv == NULL) {
DRM_ERROR("can't find authenticator\n");
diff --git a/sys/dev/drm/drm_bufs.c b/sys/dev/drm/drm_bufs.c
index 8d6940a0e97..07f22d402d1 100644
--- a/sys/dev/drm/drm_bufs.c
+++ b/sys/dev/drm/drm_bufs.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_bufs.c,v 1.5 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_bufs.h -- Generic buffer template -*- linux-c -*-
* Created: Thu Nov 23 03:10:50 2000 by gareth@valinux.com
*/
@@ -62,28 +64,9 @@ int drm_order(unsigned long size)
*/
static int drm_alloc_resource(drm_device_t *dev, int resource)
{
-#ifdef __FreeBSD__
- if (resource >= DRM_MAX_PCI_RESOURCE) {
- DRM_ERROR("Resource %d too large\n", resource);
- return 1;
- }
-
- DRM_UNLOCK();
- if (dev->pcir[resource] != NULL) {
- DRM_LOCK();
- return 0;
- }
- dev->pcirid[resource] = PCIR_BAR(resource);
- dev->pcir[resource] = bus_alloc_resource_any(dev->device,
- SYS_RES_MEMORY, &dev->pcirid[resource], RF_SHAREABLE);
- DRM_LOCK();
+ /* XXX This space _not_ intentionally left blank! */
- if (dev->pcir[resource] == NULL) {
- DRM_ERROR("Couldn't find resource 0x%x\n", resource);
- return 1;
- }
-#endif
return 0;
}
@@ -92,11 +75,8 @@ unsigned long drm_get_resource_start(drm_device_t *dev, unsigned int resource)
if (drm_alloc_resource(dev, resource) != 0)
return 0;
-#ifdef __FreeBSD__
- return rman_get_start(dev->pcir[resource]);
-#elif defined(__NetBSD__)
+
return dev->pci_map_data[resource].base;
-#endif
}
unsigned long drm_get_resource_len(drm_device_t *dev, unsigned int resource)
@@ -104,11 +84,7 @@ unsigned long drm_get_resource_len(drm_device_t *dev, unsigned int resource)
if (drm_alloc_resource(dev, resource) != 0)
return 0;
-#ifdef __FreeBSD__
- return rman_get_size(dev->pcir[resource]);
-#elif defined(__NetBSD__)
return dev->pci_map_data[resource].size;
-#endif
}
int drm_addmap(drm_device_t * dev, unsigned long offset, unsigned long size,
@@ -169,10 +145,8 @@ int drm_addmap(drm_device_t * dev, unsigned long offset, unsigned long size,
map->size = size;
map->type = type;
map->flags = flags;
-#ifdef __NetBSD__
- map->cnt = NULL;
+ map->cnt = NULL; /* cnt, mapsize added for NetBSD port */
map->mapsize = 0;
-#endif
switch ( map->type ) {
case _DRM_REGISTERS:
@@ -282,11 +256,7 @@ int drm_addmap_ioctl(DRM_IOCTL_ARGS)
DRM_COPY_FROM_USER_IOCTL(request, (drm_map_t *)data, sizeof(drm_map_t));
-#ifdef __FreeBSD__
- if (!DRM_SUSER(p) && request.type != _DRM_AGP)
-#elif defined(__NetBSD__)
if (!DRM_SUSER(p->l_proc) && request.type != _DRM_AGP)
-#endif
return DRM_ERR(EACCES);
DRM_LOCK();
@@ -317,9 +287,6 @@ void drm_rmmap(drm_device_t *dev, drm_local_map_t *map)
switch (map->type) {
case _DRM_REGISTERS:
-#ifdef __FreeBSD__
- if (map->bsr == NULL)
-#endif
drm_ioremapfree(map);
/* FALLTHROUGH */
case _DRM_FRAME_BUFFER:
@@ -344,13 +311,6 @@ void drm_rmmap(drm_device_t *dev, drm_local_map_t *map)
break;
}
-#ifdef __FreeBSD__
- if (map->bsr != NULL) {
- bus_release_resource(dev->device, SYS_RES_MEMORY, map->rid,
- map->bsr);
- }
-#endif
-
TAILQ_REMOVE(&dev->maplist, map, link);
free(map, M_DRM);
}
@@ -1059,32 +1019,20 @@ int drm_mapbufs(DRM_IOCTL_ARGS)
const int zero = 0;
vm_offset_t address;
struct vmspace *vms;
-#ifdef __FreeBSD__
- vm_ooffset_t foff;
- vm_size_t size;
- vm_offset_t vaddr;
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
struct vnode *vn;
voff_t foff;
vsize_t size, rsize;
vaddr_t vaddr;
-#endif /* __NetBSD__ || __OpenBSD__ */
drm_buf_map_t request;
int i;
DRM_COPY_FROM_USER_IOCTL( request, (drm_buf_map_t *)data, sizeof(request) );
-#if defined(__NetBSD__) || defined(__OpenBSD__)
if (!vfinddev(kdev, VCHR, &vn))
return 0; /* FIXME: Shouldn't this be EINVAL or something? */
-#endif /* __NetBSD__ || __OpenBSD */
-
-#if defined(__FreeBSD__) && __FreeBSD_version >= 500000
- vms = p->td_proc->p_vmspace;
-#else
vms = p->l_proc->p_vmspace;
-#endif
+
DRM_SPINLOCK(&dev->dma_lock);
dev->buf_use++; /* Can't allocate more after this call */
@@ -1108,16 +1056,6 @@ int drm_mapbufs(DRM_IOCTL_ARGS)
foff = 0;
}
-#ifdef __FreeBSD__
- vaddr = round_page((vm_offset_t)vms->vm_daddr + MAXDSIZ);
-#if __FreeBSD_version >= 600023
- retcode = vm_mmap(&vms->vm_map, &vaddr, size, PROT_READ | PROT_WRITE,
- VM_PROT_ALL, MAP_SHARED, OBJT_DEVICE, kdev, foff );
-#else
- retcode = vm_mmap(&vms->vm_map, &vaddr, size, PROT_READ | PROT_WRITE,
- VM_PROT_ALL, MAP_SHARED, SLIST_FIRST(&kdev->si_hlist), foff );
-#endif
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
vaddr = p->l_proc->p_emul->e_vm_default_addr(p->l_proc,
(vaddr_t)vms->vm_daddr, size);
rsize = round_page(size);
@@ -1125,7 +1063,7 @@ int drm_mapbufs(DRM_IOCTL_ARGS)
retcode = uvm_mmap(&vms->vm_map, &vaddr, rsize,
UVM_PROT_READ | UVM_PROT_WRITE, UVM_PROT_ALL, MAP_SHARED,
&vn->v_uobj, foff, p->l_proc->p_rlimit[RLIMIT_MEMLOCK].rlim_cur);
-#endif /* __NetBSD__ || __OpenBSD */
+
if (retcode)
goto done;
diff --git a/sys/dev/drm/drm_context.c b/sys/dev/drm/drm_context.c
index 3f98fdb3fb0..48ce4c19af5 100644
--- a/sys/dev/drm/drm_context.c
+++ b/sys/dev/drm/drm_context.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_context.c,v 1.2 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_context.h -- IOCTLs for generic contexts -*- linux-c -*-
* Created: Fri Nov 24 18:31:37 2000 by gareth@valinux.com
*/
diff --git a/sys/dev/drm/drm_dma.c b/sys/dev/drm/drm_dma.c
index 4415f61f3e2..41d429ea221 100644
--- a/sys/dev/drm/drm_dma.c
+++ b/sys/dev/drm/drm_dma.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_dma.c,v 1.4 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_dma.c -- DMA IOCTL and function support -*- linux-c -*-
* Created: Fri Mar 19 14:30:16 1999 by faith@valinux.com
*/
diff --git a/sys/dev/drm/drm_drawable.c b/sys/dev/drm/drm_drawable.c
index 3c320ca9e3c..c65723c2e46 100644
--- a/sys/dev/drm/drm_drawable.c
+++ b/sys/dev/drm/drm_drawable.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_drawable.c,v 1.2 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_drawable.h -- IOCTLs for drawables -*- linux-c -*-
* Created: Tue Feb 2 08:37:54 1999 by faith@valinux.com
*/
diff --git a/sys/dev/drm/drm_drv.c b/sys/dev/drm/drm_drv.c
index 959d39801ad..265078e40d6 100644
--- a/sys/dev/drm/drm_drv.c
+++ b/sys/dev/drm/drm_drv.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_drv.c,v 1.7 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_drv.h -- Generic driver template -*- linux-c -*-
* Created: Thu Nov 23 03:10:50 2000 by gareth@valinux.com
*/
@@ -51,22 +53,9 @@ static void drm_unload(drm_device_t *dev);
static drm_pci_id_list_t *drm_find_description(int vendor, int device,
drm_pci_id_list_t *idlist);
-#ifdef __FreeBSD__
-#define DRIVER_SOFTC(unit) \
- ((drm_device_t *)devclass_get_softc(drm_devclass, unit))
-
-MODULE_VERSION(drm, 1);
-MODULE_DEPEND(drm, agp, 1, 1, 1);
-MODULE_DEPEND(drm, pci, 1, 1, 1);
-#if __FreeBSD_version > 502127
-MODULE_DEPEND(drm, mem, 1, 1, 1);
-#endif
-#endif /* __FreeBSD__ */
-#if defined(__NetBSD__) || defined(__OpenBSD__)
#define DRIVER_SOFTC(unit) \
(((unit)<DRM_MAXUNITS) ? drm_units[(unit)] : NULL)
-#endif /* __NetBSD__ || __OpenBSD__ */
static drm_ioctl_desc_t drm_ioctls[256] = {
[DRM_IOCTL_NR(DRM_IOCTL_VERSION)] = { drm_version, 0 },
@@ -128,104 +117,6 @@ static drm_ioctl_desc_t drm_ioctls[256] = {
[DRM_IOCTL_NR(DRM_IOCTL_WAIT_VBLANK)] = { drm_wait_vblank, 0 },
};
-#ifdef __FreeBSD__
-static struct cdevsw drm_cdevsw = {
-#if __FreeBSD_version >= 502103
- .d_version = D_VERSION,
-#endif
- .d_open = drm_open,
- .d_close = drm_close,
- .d_read = drm_read,
- .d_ioctl = drm_ioctl,
- .d_poll = drm_poll,
- .d_mmap = drm_mmap,
- .d_name = "drm",
-#if __FreeBSD_version >= 502103
- .d_flags = D_TRACKCLOSE | D_NEEDGIANT,
-#else
- .d_maj = 145,
- .d_flags = D_TRACKCLOSE,
-#endif
-#if __FreeBSD_version < 500000
- .d_bmaj = -1
-#endif
-};
-
-int drm_probe(device_t dev, drm_pci_id_list_t *idlist)
-{
- drm_pci_id_list_t *id_entry;
- int vendor, device;
-#if __FreeBSD_version < 700010
- device_t realdev;
-
- if (!strcmp(device_get_name(dev), "drmsub"))
- realdev = device_get_parent(dev);
- else
- realdev = dev;
- vendor = pci_get_vendor(realdev);
- device = pci_get_device(realdev);
-#else
- vendor = pci_get_vendor(dev);
- device = pci_get_device(dev);
-#endif
-
- id_entry = drm_find_description(vendor, device, idlist);
- if (id_entry != NULL) {
- device_set_desc(dev, id_entry->name);
- return 0;
- }
-
- return ENXIO;
-}
-
-int drm_attach(device_t nbdev, drm_pci_id_list_t *idlist)
-{
- drm_device_t *dev;
- drm_pci_id_list_t *id_entry;
- int unit;
-
- unit = device_get_unit(nbdev);
- dev = device_get_softc(nbdev);
-
-#if __FreeBSD_version < 700010
- if (!strcmp(device_get_name(nbdev), "drmsub"))
- dev->device = device_get_parent(nbdev);
- else
- dev->device = nbdev;
-#else
- dev->device = nbdev;
-#endif
- dev->devnode = make_dev(&drm_cdevsw,
- unit,
- DRM_DEV_UID,
- DRM_DEV_GID,
- DRM_DEV_MODE,
- "dri/card%d", unit);
-#if __FreeBSD_version >= 500000
- mtx_init(&dev->dev_lock, "drm device", NULL, MTX_DEF);
-#endif
-
- id_entry = drm_find_description(pci_get_vendor(dev->device),
- pci_get_device(dev->device), idlist);
- dev->id_entry = id_entry;
-
- return drm_load(dev);
-}
-
-int drm_detach(device_t dev)
-{
- drm_unload(device_get_softc(dev));
- return 0;
-}
-
-#ifndef DRM_DEV_NAME
-#define DRM_DEV_NAME "drm"
-#endif
-
-devclass_t drm_devclass;
-
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
-
const struct cdevsw drm_cdevsw = {
drm_open,
drm_close,
@@ -379,8 +270,6 @@ int drm_activate(struct device *self, enum devact act)
return (0);
}
-#endif /* __NetBSD__ || __OpenBSD__ */
-
drm_pci_id_list_t *drm_find_description(int vendor, int device,
drm_pci_id_list_t *idlist)
{
@@ -440,12 +329,7 @@ static int drm_firstopen(drm_device_t *dev)
dev->context_flag = 0;
dev->last_context = 0;
dev->if_version = 0;
-
-#ifdef __FreeBSD__
- dev->buf_sigio = NULL;
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
dev->buf_pgid = 0;
-#endif
DRM_DEBUG( "\n" );
@@ -456,12 +340,7 @@ static int drm_lastclose(drm_device_t *dev)
{
drm_magic_entry_t *pt, *next;
drm_local_map_t *map;
-#ifdef __FreeBSD__
- drm_local_map_t *mapsave;
-#endif
-#ifdef __NetBSD__
struct drm_file *filep;
-#endif
int i;
DRM_SPINLOCK_ASSERT(&dev->dev_lock);
@@ -516,11 +395,6 @@ static int drm_lastclose(drm_device_t *dev)
dev->sg = NULL;
}
-#ifdef __FreeBSD__
- TAILQ_FOREACH_SAFE(map, &dev->maplist, link, mapsave) {
- drm_rmmap(dev, map);
- }
-#elif defined(__NetBSD__)
while ((map = TAILQ_FIRST(&dev->maplist)) != NULL) {
drm_rmmap(dev, map);
}
@@ -534,7 +408,6 @@ static int drm_lastclose(drm_device_t *dev)
DRM_DEBUG("WARNING: had to unmap resource %d\n", i);
}
}
-#endif
drm_dma_takedown(dev);
DRM_DEBUG( "\n" );
@@ -544,14 +417,12 @@ static int drm_lastclose(drm_device_t *dev)
DRM_WAKEUP_INT((void *)&dev->lock.lock_queue);
}
-#ifdef __NetBSD__
while ((filep = TAILQ_FIRST(&dev->files)) != NULL) {
DRM_INFO("had to remove pid %d still in file list\n",
(int) filep->pid);
TAILQ_REMOVE(&dev->files, filep, link);
free(filep, M_DRM);
}
-#endif
return 0;
}
@@ -562,17 +433,6 @@ static int drm_load(drm_device_t *dev)
DRM_DEBUG( "\n" );
-#ifdef __FreeBSD__
- dev->irq = pci_get_irq(dev->device);
- /* XXX Fix domain number (alpha hoses) */
- dev->pci_domain = 0;
- dev->pci_bus = pci_get_bus(dev->device);
- dev->pci_slot = pci_get_slot(dev->device);
- dev->pci_func = pci_get_function(dev->device);
-
- dev->pci_vendor = pci_get_vendor(dev->device);
- dev->pci_device = pci_get_device(dev->device);
-#elif defined(__NetBSD__)
dev->irq = dev->pa.pa_intrline;
dev->pci_domain = 0;
dev->pci_bus = dev->pa.pa_bus;
@@ -581,7 +441,6 @@ static int drm_load(drm_device_t *dev)
dev->pci_vendor = PCI_VENDOR(dev->pa.pa_id);
dev->pci_device = PCI_PRODUCT(dev->pa.pa_id);
-#endif
TAILQ_INIT(&dev->maplist);
@@ -635,15 +494,7 @@ error:
DRM_LOCK();
drm_lastclose(dev);
DRM_UNLOCK();
-#ifdef __FreeBSD__
- destroy_dev(dev->devnode);
-#if __FreeBSD_version >= 500000
- mtx_destroy(&dev->dev_lock);
-#endif
-#endif
-#ifdef __NetBSD__
DRM_SPINUNINIT(&dev->dev_lock);
-#endif
return retcode;
}
@@ -654,10 +505,6 @@ static void drm_unload(drm_device_t *dev)
DRM_DEBUG( "\n" );
drm_sysctl_cleanup(dev);
-#ifdef __FreeBSD__
- destroy_dev(dev->devnode);
-#endif
-
drm_ctxbitmap_cleanup(dev);
#if !defined(DRM_NO_MTRR) && !defined(DRM_NO_AGP)
@@ -679,15 +526,6 @@ static void drm_unload(drm_device_t *dev)
* lastclose and firstopen or unload) because these aren't actually
* taking up KVA, just keeping the PCI resource allocated.
*/
-#ifdef __FreeBSD__
- for (i = 0; i < DRM_MAX_PCI_RESOURCE; i++) {
- if (dev->pcir[i] == NULL)
- continue;
- bus_release_resource(dev->device, SYS_RES_MEMORY,
- dev->pcirid[i], dev->pcir[i]);
- dev->pcir[i] = NULL;
- }
-#elif defined(__NetBSD__)
i = 0;
for (i = 0; i < DRM_MAX_PCI_RESOURCE; i++)
@@ -698,7 +536,6 @@ static void drm_unload(drm_device_t *dev)
dev->pci_map_data[i].size);
dev->pci_map_data[i].mapped = 0;
}
-#endif
if ( dev->agp ) {
free(dev->agp, M_DRM);
@@ -709,12 +546,7 @@ static void drm_unload(drm_device_t *dev)
dev->driver.unload(dev);
drm_mem_uninit();
-#if defined(__FreeBSD__) && __FreeBSD_version >= 500000
- mtx_destroy(&dev->dev_lock);
-#endif
-#ifdef __NetBSD__
DRM_SPINUNINIT(&dev->dev_lock);
-#endif
}
@@ -757,18 +589,11 @@ int drm_open(DRM_CDEV kdev, int flags, int fmt, DRM_STRUCTCDEVPROC *p)
DRM_DEBUG( "open_count = %d\n", dev->open_count );
-#ifdef __FreeBSD__
- retcode = drm_open_helper(kdev, flags, fmt, p, dev);
-#elif defined(__NetBSD__)
retcode = drm_open_helper(kdev, flags, fmt, p->l_proc, dev);
-#endif
if ( !retcode ) {
atomic_inc( &dev->counts[_DRM_STAT_OPENS] );
DRM_LOCK();
-#ifdef __FreeBSD__
- device_busy(dev->device);
-#endif
if ( !dev->open_count++ )
retcode = drm_firstopen(dev);
DRM_UNLOCK();
@@ -789,13 +614,8 @@ int drm_close_pid(drm_device_t *dev, drm_file_t *priv, pid_t pid)
* Begin inline drm_release
*/
-#ifdef __FreeBSD__
- DRM_DEBUG( "pid = %d, device = 0x%lx, open_count = %d\n",
- DRM_CURRENTPID, (long)dev->device, dev->open_count );
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
DRM_DEBUG( "pid = %d, device = 0x%lx, open_count = %d\n",
DRM_CURRENTPID, (long)&dev->device, dev->open_count);
-#endif
if (dev->lock.hw_lock && _DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)
&& dev->lock.filp == filp) {
@@ -829,13 +649,8 @@ int drm_close_pid(drm_device_t *dev, drm_file_t *priv, pid_t pid)
break; /* Got lock */
}
/* Contention */
-#if defined(__FreeBSD__) && __FreeBSD_version > 500000
- retcode = msleep((void *)&dev->lock.lock_queue,
- &dev->dev_lock, PZERO | PCATCH, "drmlk2", 0);
-#else
retcode = mtsleep((void *)&dev->lock.lock_queue,
PZERO | PCATCH, "drmlk2", 0, &dev->dev_lock);
-#endif
if (retcode)
break;
}
@@ -869,39 +684,26 @@ int drm_close(DRM_CDEV kdev, int flags, int fmt, DRM_STRUCTCDEVPROC *p)
DRM_LOCK();
-#ifdef __FreeBSD__
- priv = drm_find_file_by_proc(dev, p);
-#elif defined(__NetBSD__)
priv = drm_find_file_by_proc(dev, p->l_proc);
-#endif
+
if (!priv) {
DRM_UNLOCK();
DRM_ERROR("can't find authenticator\n");
return EINVAL;
}
-#ifdef __NetBSD__
- /* On NetBSD, close will only be called once */
+ /* On NetBSD, close will only be called once (?) */
DRM_DEBUG("setting priv->refs %d to 1\n", (int)priv->refs);
priv->refs = 1;
DRM_DEBUG("setting open_count %d to 1\n", (int)dev->open_count);
dev->open_count = 1;
-#endif
retcode = drm_close_pid(dev, priv, DRM_CURRENTPID);
-#if defined (__FreeBSD__) && (__FreeBSD_version >= 500000)
- funsetown(&dev->buf_sigio);
-#elif defined(__FreeBSD__)
- funsetown(dev->buf_sigio);
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
dev->buf_pgid = 0;
-#endif /* __NetBSD__ || __OpenBSD__ */
atomic_inc( &dev->counts[_DRM_STAT_CLOSES] );
-#ifdef __FreeBSD__
- device_unbusy(dev->device);
-#endif
+
if (--dev->open_count == 0) {
retcode = drm_lastclose(dev);
}
@@ -926,12 +728,9 @@ int drm_ioctl(DRM_CDEV kdev, u_long cmd, void *data, int flags,
DRMFILE filp = (DRMFILE)(uintptr_t)DRM_CURRENTPID;
DRM_LOCK();
-#ifdef __FreeBSD__
- priv = drm_find_file_by_proc(dev, p);
-#elif defined(__NetBSD__)
priv = drm_find_file_by_proc(dev, p->l_proc);
-#endif
DRM_UNLOCK();
+
if (priv == NULL) {
DRM_ERROR("can't find authenticator\n");
return EINVAL;
@@ -940,32 +739,14 @@ int drm_ioctl(DRM_CDEV kdev, u_long cmd, void *data, int flags,
atomic_inc( &dev->counts[_DRM_STAT_IOCTLS] );
++priv->ioctl_count;
-#ifdef __FreeBSD__
- DRM_DEBUG( "pid=%d, cmd=0x%02lx, nr=0x%02x, dev 0x%lx, auth=%d\n",
- DRM_CURRENTPID, cmd, nr, (long)dev->device, priv->authenticated );
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
DRM_DEBUG( "pid=%d, cmd=0x%02lx, nr=0x%02x, dev 0x%lx, auth=%d\n",
DRM_CURRENTPID, cmd, nr, (long)&dev->device, priv->authenticated );
-#endif
switch (cmd) {
case FIONBIO:
case FIOASYNC:
return 0;
-#ifdef __FreeBSD__
- case FIOSETOWN:
- return fsetown(*(int *)data, &dev->buf_sigio);
-
- case FIOGETOWN:
-#if (__FreeBSD_version >= 500000)
- *(int *) data = fgetown(&dev->buf_sigio);
-#else
- *(int *) data = fgetown(dev->buf_sigio);
-#endif
- return 0;
-#endif /* __FreeBSD__ */
-#if defined(__NetBSD__) || defined(__OpenBSD__)
case SIOCSPGRP:
case TIOCSPGRP:
case FIOSETOWN:
@@ -975,7 +756,6 @@ int drm_ioctl(DRM_CDEV kdev, u_long cmd, void *data, int flags,
case TIOCGPGRP:
case FIOGETOWN:
return fgetown(p->l_proc, dev->buf_pgid, cmd, data);
-#endif /* __NetBSD__ */
}
if (IOCGROUP(cmd) != DRM_IOCTL_BASE) {
@@ -1005,11 +785,7 @@ int drm_ioctl(DRM_CDEV kdev, u_long cmd, void *data, int flags,
/* ioctl->master check should be against something in the filp set up
* for the first opener, but it doesn't matter yet.
*/
-#ifdef __FreeBSD__
- if (((ioctl->flags & DRM_ROOT_ONLY) && !DRM_SUSER(p)) ||
-#elif defined(__NetBSD__)
if (((ioctl->flags & DRM_ROOT_ONLY) && !DRM_SUSER(p->l_proc)) ||
-#endif
((ioctl->flags & DRM_AUTH) && !priv->authenticated) ||
((ioctl->flags & DRM_MASTER) && !priv->master))
return EACCES;
@@ -1025,44 +801,3 @@ int drm_ioctl(DRM_CDEV kdev, u_long cmd, void *data, int flags,
return DRM_ERR(retcode);
}
-
-
-#if DRM_LINUX
-
-#include <sys/sysproto.h>
-
-MODULE_DEPEND(DRIVER_NAME, linux, 1, 1, 1);
-
-#define LINUX_IOCTL_DRM_MIN 0x6400
-#define LINUX_IOCTL_DRM_MAX 0x64ff
-
-static linux_ioctl_function_t drm_linux_ioctl;
-static struct linux_ioctl_handler drm_handler = {drm_linux_ioctl,
- LINUX_IOCTL_DRM_MIN, LINUX_IOCTL_DRM_MAX};
-
-SYSINIT(drm_register, SI_SUB_KLD, SI_ORDER_MIDDLE,
- linux_ioctl_register_handler, &drm_handler);
-SYSUNINIT(drm_unregister, SI_SUB_KLD, SI_ORDER_MIDDLE,
- linux_ioctl_unregister_handler, &drm_handler);
-
-/* The bits for in/out are switched on Linux */
-#define LINUX_IOC_IN IOC_OUT
-#define LINUX_IOC_OUT IOC_IN
-
-static int
-drm_linux_ioctl(DRM_STRUCTPROC *p, struct linux_ioctl_args* args)
-{
- int error;
- int cmd = args->cmd;
-
- args->cmd &= ~(LINUX_IOC_IN | LINUX_IOC_OUT);
- if (cmd & LINUX_IOC_IN)
- args->cmd |= IOC_IN;
- if (cmd & LINUX_IOC_OUT)
- args->cmd |= IOC_OUT;
-
- error = ioctl(p, (struct ioctl_args *)args);
-
- return error;
-}
-#endif /* DRM_LINUX */
diff --git a/sys/dev/drm/drm_fops.c b/sys/dev/drm/drm_fops.c
index 66098496ed8..638e6728e88 100644
--- a/sys/dev/drm/drm_fops.c
+++ b/sys/dev/drm/drm_fops.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_fops.c,v 1.3 2007/11/21 19:22:12 bjs Exp $ */
+
/* drm_fops.h -- File operations for DRM -*- linux-c -*-
* Created: Mon Jan 4 08:58:31 1999 by faith@valinux.com
*/
@@ -42,16 +44,8 @@ __FBSDID("$FreeBSD: src/sys/dev/drm/drm_fops.c,v 1.2 2005/11/28 23:13:52 anholt
drm_file_t *drm_find_file_by_proc(drm_device_t *dev, DRM_STRUCTPROC *p)
{
int restart = 1;
-#if __FreeBSD_version >= 500021
- uid_t uid = p->td_ucred->cr_svuid;
- pid_t pid = p->td_proc->p_pid;
-#elif defined(__NetBSD__)
uid_t uid = kauth_cred_getsvuid(p->p_cred);
pid_t pid = p->p_pid;
-#else
- uid_t uid = p->p_cred->p_svuid;
- pid_t pid = p->p_pid;
-#endif
drm_file_t *priv;
DRM_SPINLOCK_ASSERT(&dev->dev_lock);
@@ -59,7 +53,7 @@ drm_file_t *drm_find_file_by_proc(drm_device_t *dev, DRM_STRUCTPROC *p)
while (restart) {
restart = 0;
TAILQ_FOREACH(priv, &dev->files, link) {
-#ifdef __NetBSD__
+
/* if the process disappeared, free the resources
* NetBSD only calls drm_close once, so this frees
* resources earlier.
@@ -70,7 +64,6 @@ drm_file_t *drm_find_file_by_proc(drm_device_t *dev, DRM_STRUCTPROC *p)
break;
}
else
-#endif
if (priv->pid == pid && priv->uid == uid)
return priv;
}
@@ -102,17 +95,8 @@ int drm_open_helper(DRM_CDEV kdev, int flags, int fmt, DRM_STRUCTPROC *p,
DRM_UNLOCK();
return DRM_ERR(ENOMEM);
}
-#if __FreeBSD_version >= 500000
- priv->uid = p->td_ucred->cr_svuid;
- priv->pid = p->td_proc->p_pid;
-#elif defined(__NetBSD__)
priv->uid = kauth_cred_getsvuid(p->p_cred);
priv->pid = p->p_pid;
-#else
- priv->uid = p->p_cred->p_svuid;
- priv->pid = p->p_pid;
-#endif
-
priv->refs = 1;
priv->minor = m;
priv->ioctl_count = 0;
@@ -135,9 +119,6 @@ int drm_open_helper(DRM_CDEV kdev, int flags, int fmt, DRM_STRUCTPROC *p,
TAILQ_INSERT_TAIL(&dev->files, priv, link);
}
DRM_UNLOCK();
-#ifdef __FreeBSD__
- kdev->si_drv1 = dev;
-#endif
return 0;
}
diff --git a/sys/dev/drm/drm_ioctl.c b/sys/dev/drm/drm_ioctl.c
index 77fc1b9c335..cb96d587a09 100644
--- a/sys/dev/drm/drm_ioctl.c
+++ b/sys/dev/drm/drm_ioctl.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_ioctl.c,v 1.2 2007/11/21 19:22:13 bjs Exp $ */
+
/* drm_ioctl.h -- IOCTL processing for DRM -*- linux-c -*-
* Created: Fri Jan 8 09:01:26 1999 by faith@valinux.com
*/
@@ -71,9 +73,7 @@ int drm_setunique(DRM_IOCTL_ARGS)
drm_unique_t u;
int domain = 0, bus = 0, slot = 0, func = 0, ret = 0;
char *busid;
-#ifdef __NetBSD__
return EOPNOTSUPP;
-#endif
DRM_COPY_FROM_USER_IOCTL( u, (drm_unique_t *)data, sizeof(u) );
@@ -94,9 +94,7 @@ int drm_setunique(DRM_IOCTL_ARGS)
/* Return error if the busid submitted doesn't match the device's actual
* busid.
*/
-#ifdef __FreeBSD__
- ret = sscanf(busid, "PCI:%d:%d:%d", &bus, &slot, &func);
-#endif
+
if (ret != 3) {
free(busid, M_DRM);
return DRM_ERR(EINVAL);
diff --git a/sys/dev/drm/drm_irq.c b/sys/dev/drm/drm_irq.c
index d57a986413e..739eab7ed1f 100644
--- a/sys/dev/drm/drm_irq.c
+++ b/sys/dev/drm/drm_irq.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_irq.c,v 1.5 2007/11/21 19:22:13 bjs Exp $ */
+
/* drm_irq.c -- IRQ IOCTL and function support
* Created: Fri Oct 18 2003 by anholt@FreeBSD.org
*/
@@ -59,19 +61,6 @@ int drm_irq_by_busid(DRM_IOCTL_ARGS)
return 0;
}
-#if defined(__FreeBSD__) && __FreeBSD_version >= 500000
-static irqreturn_t
-drm_irq_handler_wrap(DRM_IRQ_ARGS)
-{
- drm_device_t *dev = (drm_device_t *)arg;
-
- DRM_SPINLOCK(&dev->irq_lock);
- dev->driver.irq_handler(arg);
- DRM_SPINUNLOCK(&dev->irq_lock);
-}
-#endif
-
-#ifdef __NetBSD__
static irqreturn_t
drm_irq_handler_wrap(DRM_IRQ_ARGS)
{
@@ -83,15 +72,12 @@ drm_irq_handler_wrap(DRM_IRQ_ARGS)
DRM_SPINUNLOCK(&dev->irq_lock);
return ret;
}
-#endif
int drm_irq_install(drm_device_t *dev)
{
int retcode;
-#ifdef __NetBSD__
pci_intr_handle_t ih;
const char *istr;
-#endif
if (dev->irq == 0 || dev->dev_private == NULL)
return DRM_ERR(EINVAL);
@@ -110,28 +96,11 @@ int drm_irq_install(drm_device_t *dev)
DRM_SPININIT(&dev->irq_lock, "DRM IRQ lock");
/* Before installing handler */
+
dev->driver.irq_preinstall(dev);
DRM_UNLOCK();
/* Install handler */
-#ifdef __FreeBSD__
- dev->irqrid = 0;
- dev->irqr = bus_alloc_resource_any(dev->device, SYS_RES_IRQ,
- &dev->irqrid, RF_SHAREABLE);
- if (!dev->irqr) {
- retcode = ENOENT;
- goto err;
- }
-#if __FreeBSD_version < 500000
- retcode = bus_setup_intr(dev->device, dev->irqr, INTR_TYPE_TTY,
- dev->irq_handler, dev, &dev->irqh);
-#else
- retcode = bus_setup_intr(dev->device, dev->irqr, INTR_TYPE_TTY | INTR_MPSAFE,
- drm_irq_handler_wrap, dev, &dev->irqh);
-#endif
- if (retcode != 0)
- goto err;
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
if (pci_intr_map(&dev->pa, &ih) != 0) {
retcode = ENOENT;
goto err;
@@ -144,7 +113,6 @@ int drm_irq_install(drm_device_t *dev)
goto err;
}
aprint_normal("%s: interrupting at %s\n", dev->device.dv_xname, istr);
-#endif
/* After installing handler */
DRM_LOCK();
@@ -155,13 +123,6 @@ int drm_irq_install(drm_device_t *dev)
err:
DRM_LOCK();
dev->irq_enabled = 0;
-#ifdef ___FreeBSD__
- if (dev->irqrid != 0) {
- bus_release_resource(dev->device, SYS_RES_IRQ, dev->irqrid,
- dev->irqr);
- dev->irqrid = 0;
- }
-#endif
DRM_SPINUNINIT(&dev->irq_lock);
DRM_UNLOCK();
return retcode;
@@ -169,31 +130,16 @@ err:
int drm_irq_uninstall(drm_device_t *dev)
{
-#ifdef __FreeBSD__
- int irqrid;
-#endif
-
if (!dev->irq_enabled)
return DRM_ERR(EINVAL);
dev->irq_enabled = 0;
-#ifdef __FreeBSD__
- irqrid = dev->irqrid;
- dev->irqrid = 0;
-#endif
DRM_DEBUG( "%s: irq=%d\n", __FUNCTION__, dev->irq );
dev->driver.irq_uninstall(dev);
-#ifdef __FreeBSD__
- DRM_UNLOCK();
- bus_teardown_intr(dev->device, dev->irqr, dev->irqh);
- bus_release_resource(dev->device, SYS_RES_IRQ, irqrid, dev->irqr);
- DRM_LOCK();
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
pci_intr_disestablish(dev->pa.pa_pc, dev->irqh);
-#endif
DRM_SPINUNINIT(&dev->irq_lock);
return 0;
diff --git a/sys/dev/drm/drm_linux_list.h b/sys/dev/drm/drm_linux_list.h
index e0aef54276f..1fc5b138905 100644
--- a/sys/dev/drm/drm_linux_list.h
+++ b/sys/dev/drm/drm_linux_list.h
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_linux_list.h,v 1.2 2007/11/21 19:22:13 bjs Exp $ */
+
/* drm_linux_list.h -- linux list functions for the BSDs.
* Created: Mon Apr 7 14:30:16 1999 by anholt@FreeBSD.org
*/
diff --git a/sys/dev/drm/drm_lock.c b/sys/dev/drm/drm_lock.c
index 873107b4fba..f827eb305f3 100644
--- a/sys/dev/drm/drm_lock.c
+++ b/sys/dev/drm/drm_lock.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_lock.c,v 1.3 2007/11/21 19:22:13 bjs Exp $ */
+
/* lock.c -- IOCTLs for locking -*- linux-c -*-
* Created: Tue Feb 2 08:37:54 1999 by faith@valinux.com
*/
@@ -130,13 +132,8 @@ int drm_lock(DRM_IOCTL_ARGS)
}
/* Contention */
-#if defined(__FreeBSD__) && __FreeBSD_version > 500000
- ret = msleep((void *)&dev->lock.lock_queue, &dev->dev_lock,
- PZERO | PCATCH, "drmlk2", 0);
-#else
ret = mtsleep((void *)&dev->lock.lock_queue, PZERO | PCATCH,
"drmlk2", 0, &dev->dev_lock);
-#endif
if (ret != 0)
break;
}
diff --git a/sys/dev/drm/drm_memory.c b/sys/dev/drm/drm_memory.c
index e2a602993d6..b8c89ed8baa 100644
--- a/sys/dev/drm/drm_memory.c
+++ b/sys/dev/drm/drm_memory.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_memory.c,v 1.4 2007/11/21 19:22:13 bjs Exp $ */
+
/* drm_memory.h -- Memory management wrappers for DRM -*- linux-c -*-
* Created: Thu Feb 4 14:00:34 1999 by faith@valinux.com
*/
@@ -42,11 +44,9 @@ MALLOC_DEFINE(M_DRM, "drm", "DRM Data Structures");
void drm_mem_init(void)
{
-#if defined(__NetBSD__) || defined(__OpenBSD__)
/*
malloc_type_attach(M_DRM);
*/
-#endif
}
void drm_mem_uninit(void)
@@ -84,9 +84,6 @@ void drm_free(void *pt, size_t size, int area)
void *drm_ioremap(drm_device_t *dev, drm_local_map_t *map)
{
-#ifdef __FreeBSD__
- return pmap_mapdev(map->offset, map->size);
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
int i, reg, reason;
for(i = 0; i<DRM_MAX_PCI_RESOURCE; i++) {
reg = PCI_MAPREG_START + i*4;
@@ -164,14 +161,10 @@ void *drm_ioremap(drm_device_t *dev, drm_local_map_t *map)
DRM_DEBUG("drm_ioremap failed: offset=%lx size=%lu\n",
map->offset, map->size);
return NULL;
-#endif
}
void drm_ioremapfree(drm_local_map_t *map)
{
-#ifdef __FreeBSD__
- pmap_unmapdev((vm_offset_t) map->handle, map->size);
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
if (map->cnt == NULL) {
DRM_INFO("drm_ioremapfree called for unknown map\n");
return;
@@ -181,39 +174,9 @@ void drm_ioremapfree(drm_local_map_t *map)
if(*(map->cnt) == 0)
bus_space_unmap(map->bst, map->bsh, map->mapsize);
}
-#endif
-}
-
-#ifdef __FreeBSD__
-int
-drm_mtrr_add(unsigned long offset, size_t size, int flags)
-{
- int act;
- struct mem_range_desc mrdesc;
-
- mrdesc.mr_base = offset;
- mrdesc.mr_len = size;
- mrdesc.mr_flags = flags;
- act = MEMRANGE_SET_UPDATE;
- strlcpy(mrdesc.mr_owner, "drm", sizeof(mrdesc.mr_owner));
- return mem_range_attr_set(&mrdesc, &act);
}
int
-drm_mtrr_del(int __unused handle, unsigned long offset, size_t size, int flags)
-{
- int act;
- struct mem_range_desc mrdesc;
-
- mrdesc.mr_base = offset;
- mrdesc.mr_len = size;
- mrdesc.mr_flags = flags;
- act = MEMRANGE_SET_REMOVE;
- strlcpy(mrdesc.mr_owner, "drm", sizeof(mrdesc.mr_owner));
- return mem_range_attr_set(&mrdesc, &act);
-}
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
-int
drm_mtrr_add(unsigned long offset, size_t size, int flags)
{
#ifndef DRM_NO_MTRR
@@ -248,4 +211,3 @@ drm_mtrr_del(int __unused handle, unsigned long offset, size_t size, int flags)
return 0;
#endif
}
-#endif
diff --git a/sys/dev/drm/drm_pci.c b/sys/dev/drm/drm_pci.c
index 41c6f7a8a16..35616a09400 100644
--- a/sys/dev/drm/drm_pci.c
+++ b/sys/dev/drm/drm_pci.c
@@ -1,11 +1,6 @@
-/**
- * \file drm_pci.h
- * \brief PCI consistent, DMA-accessible memory functions.
- *
- * \author Eric Anholt <anholt@FreeBSD.org>
- */
+/* $NetBSD: drm_pci.c,v 1.5 2007/11/21 19:22:13 bjs Exp $ */
-/*-
+/*
* Copyright 2003 Eric Anholt.
* All Rights Reserved.
*
@@ -35,36 +30,25 @@ __FBSDID("$FreeBSD: src/sys/dev/drm/drm_pci.c,v 1.2 2005/11/28 23:13:52 anholt E
#include "drmP.h"
-/**********************************************************************/
-/** \name PCI memory */
-/*@{*/
-
-#if defined(__FreeBSD__)
-static void
-drm_pci_busdma_callback(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
-{
- drm_dma_handle_t *dmah = arg;
-
- if (error != 0)
- return;
-
- KASSERT(nsegs == 1, ("drm_pci_busdma_callback: bad dma segment count"));
- dmah->busaddr = segs[0].ds_addr;
-}
-#endif
-
-/**
- * \brief Allocate a physically contiguous DMA-accessible consistent
+/* What might happen in age of Aquarius:
+ *
+ *
+ * Allocate a physically contiguous DMA-accessible consistent
* memory block.
*/
+
+/* NetBSD reality:
+ *
+ * XXX We must fix this mess! This is a horrible misuse of bus_dma(9),
+ * and I am surprised it works at all.
+ */
+
drm_dma_handle_t *
drm_pci_alloc(drm_device_t *dev, size_t size, size_t align, dma_addr_t maxaddr)
{
drm_dma_handle_t *dmah;
int ret;
-#ifdef __NetBSD__
int nsegs;
-#endif
/* Need power-of-two alignment, so fail the allocation if it isn't. */
if ((align & (align - 1)) != 0) {
@@ -77,35 +61,6 @@ drm_pci_alloc(drm_device_t *dev, size_t size, size_t align, dma_addr_t maxaddr)
if (dmah == NULL)
return NULL;
-#ifdef __FreeBSD__
- ret = bus_dma_tag_create(NULL, align, 0, /* tag, align, boundary */
- maxaddr, BUS_SPACE_MAXADDR, /* lowaddr, highaddr */
- NULL, NULL, /* filtfunc, filtfuncargs */
- size, 1, size, /* maxsize, nsegs, maxsegsize */
- BUS_DMA_ALLOCNOW, NULL, NULL, /* flags, lockfunc, lockfuncargs */
- &dmah->tag);
- if (ret != 0) {
- free(dmah, M_DRM);
- return NULL;
- }
-
- ret = bus_dmamem_alloc(dmah->tag, &dmah->vaddr, BUS_DMA_NOWAIT,
- &dmah->map);
- if (ret != 0) {
- bus_dma_tag_destroy(dmah->tag);
- free(dmah, M_DRM);
- return NULL;
- }
-
- ret = bus_dmamap_load(dmah->tag, dmah->map, dmah->vaddr, size,
- drm_pci_busdma_callback, dmah, 0);
- if (ret != 0) {
- bus_dmamem_free(dmah->tag, dmah->vaddr, dmah->map);
- bus_dma_tag_destroy(dmah->tag);
- free(dmah, M_DRM);
- return NULL;
- }
-#elif defined(__NetBSD__)
ret = bus_dmamem_alloc(dev->pa.pa_dmat, size, align, 0,
&dmah->seg, 1, &nsegs, BUS_DMA_NOWAIT);
if (ret != 0) {
@@ -134,28 +89,21 @@ drm_pci_alloc(drm_device_t *dev, size_t size, size_t align, dma_addr_t maxaddr)
dmah->busaddr = dmah->seg.ds_addr;
dmah->vaddr = dmah->addr;
-#endif
return dmah;
}
-/**
- * \brief Free a DMA-accessible consistent memory block.
+/*
+ * Free a DMA-accessible consistent memory block.
*/
+
void
drm_pci_free(drm_device_t *dev, drm_dma_handle_t *dmah)
{
if (dmah == NULL)
return;
-#if defined(__FreeBSD__)
- bus_dmamem_free(dmah->tag, dmah->vaddr, dmah->map);
- bus_dma_tag_destroy(dmah->tag);
-#elif defined(__NetBSD__)
bus_dmamem_free(dev->pa.pa_dmat, &dmah->seg, 1);
-#endif
free(dmah, M_DRM);
}
-
-/*@}*/
diff --git a/sys/dev/drm/drm_sarea.h b/sys/dev/drm/drm_sarea.h
index a11ec0196b7..a75de083301 100644
--- a/sys/dev/drm/drm_sarea.h
+++ b/sys/dev/drm/drm_sarea.h
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_sarea.h,v 1.2 2007/11/21 19:22:13 bjs Exp $ */
+
/**
* \file drm_sarea.h
* \brief SAREA definitions
diff --git a/sys/dev/drm/drm_scatter.c b/sys/dev/drm/drm_scatter.c
index 80343b11f1e..8af1793545d 100644
--- a/sys/dev/drm/drm_scatter.c
+++ b/sys/dev/drm/drm_scatter.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_scatter.c,v 1.2 2007/11/21 19:22:13 bjs Exp $ */
+
/* drm_scatter.h -- IOCTLs to manage scatter/gather memory -*- linux-c -*-
* Created: Mon Dec 18 23:20:54 2000 by gareth@valinux.com */
/*-
diff --git a/sys/dev/drm/drm_sysctl.c b/sys/dev/drm/drm_sysctl.c
index 67089a14d74..69aad638311 100644
--- a/sys/dev/drm/drm_sysctl.c
+++ b/sys/dev/drm/drm_sysctl.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_sysctl.c,v 1.2 2007/11/21 19:22:13 bjs Exp $ */
+
/*-
* Copyright 2003 Eric Anholt
* All Rights Reserved.
@@ -48,69 +50,22 @@ struct drm_sysctl_list {
#define DRM_SYSCTL_ENTRIES (sizeof(drm_sysctl_list)/sizeof(drm_sysctl_list[0]))
struct drm_sysctl_info {
-#ifdef __FreeBSD__
- struct sysctl_ctx_list ctx;
-#elif defined __NetBSD__
const struct sysctlnode *dri, *dri_card, *dri_debug;
const struct sysctlnode *dri_rest[DRM_SYSCTL_ENTRIES];
-#endif
char name[7];
};
int drm_sysctl_init(drm_device_t *dev)
{
struct drm_sysctl_info *info;
-#ifdef __FreeBSD__
- struct sysctl_oid *oid;
- struct sysctl_oid *top, *drioid;
-#endif
int i;
info = malloc(sizeof *info, M_DRM, M_WAITOK | M_ZERO);
if ( !info )
return 1;
- dev->sysctl = info;
-#ifdef __FreeBSD__
- /* Add the sysctl node for DRI if it doesn't already exist */
- drioid = SYSCTL_ADD_NODE( &info->ctx, &sysctl__hw_children, OID_AUTO, "dri", CTLFLAG_RW, NULL, "DRI Graphics");
- if (!drioid)
- return 1;
+ dev->sysctl = info;
- /* Find the next free slot under hw.dri */
- i = 0;
- SLIST_FOREACH(oid, SYSCTL_CHILDREN(drioid), oid_link) {
- if (i <= oid->oid_arg2)
- i = oid->oid_arg2 + 1;
- }
- if (i>9)
- return 1;
-
- /* Add the hw.dri.x for our device */
- info->name[0] = '0' + i;
- info->name[1] = 0;
- top = SYSCTL_ADD_NODE( &info->ctx, SYSCTL_CHILDREN(drioid), OID_AUTO, info->name, CTLFLAG_RW, NULL, NULL);
- if (!top)
- return 1;
-
- for (i = 0; i < DRM_SYSCTL_ENTRIES; i++) {
- oid = SYSCTL_ADD_OID(&info->ctx,
- SYSCTL_CHILDREN(top),
- OID_AUTO,
- drm_sysctl_list[i].name,
- CTLTYPE_INT | CTLFLAG_RD,
- dev,
- 0,
- drm_sysctl_list[i].f,
- "A",
- NULL);
- if (!oid)
- return 1;
- }
- SYSCTL_ADD_INT(&info->ctx, SYSCTL_CHILDREN(top), OID_AUTO, "debug",
- CTLFLAG_RW, &drm_debug_flag, sizeof(drm_debug_flag),
- "Enable debugging output");
-#elif defined(__NetBSD__)
sysctl_createv(NULL, 0, NULL, &info->dri,
CTLFLAG_READWRITE, CTLTYPE_NODE,
"dri", SYSCTL_DESCR("DRI Graphics"), NULL, 0, NULL, 0,
@@ -135,17 +90,11 @@ int drm_sysctl_init(drm_device_t *dev)
NULL, 0,
&drm_debug_flag, sizeof(drm_debug_flag),
CTL_HW, info->dri->sysctl_num, CTL_CREATE);
-#endif
-
return 0;
}
int drm_sysctl_cleanup(drm_device_t *dev)
{
-#ifdef __FreeBSD__
- int error;
- error = sysctl_ctx_free( &dev->sysctl->ctx );
-#elif defined(__NetBSD__)
int i, error = 0;
sysctl_destroyv(NULL, CTL_HW, dev->sysctl->dri->sysctl_num,
@@ -160,7 +109,6 @@ int drm_sysctl_cleanup(drm_device_t *dev)
dev->sysctl->dri_card->sysctl_num,
CTL_DESTROY);
sysctl_destroyv(NULL, CTL_HW, dev->sysctl->dri->sysctl_num, CTL_DESTROY);
-#endif
free(dev->sysctl, M_DRM);
dev->sysctl = NULL;
@@ -168,10 +116,8 @@ int drm_sysctl_cleanup(drm_device_t *dev)
return error;
}
-#ifdef __NetBSD__
#define SYSCTL_OUT(x, y, z) \
(len+=z,(len<*oldlenp)?(strcat((char*)oldp, y),0):EOVERFLOW)
-#endif
#define DRM_SYSCTL_PRINT(fmt, arg...) \
do { \
@@ -183,26 +129,16 @@ do { \
static int drm_name_info DRM_SYSCTL_HANDLER_ARGS
{
-#ifdef __FreeBSD__
- drm_device_t *dev = arg1;
-#elif defined(__NetBSD__)
int len = 0;
drm_device_t *dev = rnode->sysctl_data;
-#endif
char buf[128];
int retcode;
int hasunique = 0;
-#ifdef __NetBSD__
if(oldp == NULL) return EINVAL;
*((char*)oldp) = '\0';
-#endif
-#ifdef __FreeBSD__
- DRM_SYSCTL_PRINT("%s 0x%x", dev->driver.name, dev2udev(dev->devnode));
-#elif defined(__NetBSD__)
DRM_SYSCTL_PRINT("%s", dev->driver.name);
-#endif
DRM_LOCK();
if (dev->unique) {
@@ -222,12 +158,8 @@ done:
static int drm_vm_info DRM_SYSCTL_HANDLER_ARGS
{
-#ifdef __FreeBSD__
- drm_device_t *dev = arg1;
-#elif defined(__NetBSD__)
int len = 0;
drm_device_t *dev = rnode->sysctl_data;
-#endif
drm_local_map_t *map, *tempmaps;
const char *types[] = { "FB", "REG", "SHM", "AGP", "SG" };
const char *type, *yesno;
@@ -235,10 +167,8 @@ static int drm_vm_info DRM_SYSCTL_HANDLER_ARGS
char buf[128];
int retcode;
-#ifdef __NetBSD__
if(oldp == NULL) return EINVAL;
*((char*)oldp) = '\0';
-#endif
/* We can't hold the lock while doing SYSCTL_OUTs, so allocate a
* temporary copy of all the map entries and then SYSCTL_OUT that.
@@ -291,12 +221,8 @@ done:
static int drm_bufs_info DRM_SYSCTL_HANDLER_ARGS
{
-#ifdef __FreeBSD__
- drm_device_t *dev = arg1;
-#elif defined(__NetBSD__)
int len = 0;
drm_device_t *dev = rnode->sysctl_data;
-#endif
drm_device_dma_t *dma = dev->dma;
drm_device_dma_t tempdma;
int *templists;
@@ -304,10 +230,8 @@ static int drm_bufs_info DRM_SYSCTL_HANDLER_ARGS
char buf[128];
int retcode;
-#ifdef __NetBSD__
if(oldp == NULL) return EINVAL;
*((char*)oldp) = '\0';
-#endif
/* We can't hold the locks around DRM_SYSCTL_PRINT, so make a temporary
* copy of the whole structure and the relevant data from buflist.
@@ -357,21 +281,15 @@ done:
static int drm_clients_info DRM_SYSCTL_HANDLER_ARGS
{
-#ifdef __FreeBSD__
- drm_device_t *dev = arg1;
-#elif defined(__NetBSD__)
int len = 0;
drm_device_t *dev = rnode->sysctl_data;
-#endif
drm_file_t *priv, *tempprivs;
char buf[128];
int retcode;
int privcount, i;
-#ifdef __NetBSD__
if(oldp == NULL) return EINVAL;
*((char*)oldp) = '\0';
-#endif
DRM_LOCK();
diff --git a/sys/dev/drm/drm_vm.c b/sys/dev/drm/drm_vm.c
index ab1b61a1761..f8169c541af 100644
--- a/sys/dev/drm/drm_vm.c
+++ b/sys/dev/drm/drm_vm.c
@@ -1,3 +1,5 @@
+/* $NetBSD: drm_vm.c,v 1.5 2007/11/21 19:22:13 bjs Exp $ */
+
/*-
* Copyright 2003 Eric Anholt
* All Rights Reserved.
@@ -29,24 +31,15 @@ __FBSDID("$FreeBSD: src/sys/dev/drm/drm_vm.c,v 1.2 2005/11/28 23:13:53 anholt Ex
#include "drmP.h"
#include "drm.h"
-#if defined(__FreeBSD__) && __FreeBSD_version >= 500102
-int drm_mmap(struct cdev *kdev, vm_offset_t offset, vm_paddr_t *paddr,
- int prot)
-#elif defined(__FreeBSD__)
-int drm_mmap(dev_t kdev, vm_offset_t offset, int prot)
-#elif defined(__NetBSD__) || defined(__OpenBSD__)
+/* WARNING: pure, unadulterated EVIL ahead! */
+
paddr_t drm_mmap(dev_t kdev, off_t offset, int prot)
-#endif
{
DRM_DEVICE;
drm_local_map_t *map;
drm_file_t *priv;
drm_map_type_t type;
-#ifdef __FreeBSD__
- vm_paddr_t phys;
-#else
paddr_t phys;
-#endif
DRM_LOCK();
priv = drm_find_file_by_proc(dev, DRM_CURPROC);
@@ -68,17 +61,11 @@ paddr_t drm_mmap(dev_t kdev, off_t offset, int prot)
unsigned long page = offset >> PAGE_SHIFT;
unsigned long pphys = dma->pagelist[page];
-#if defined(__FreeBSD__) && __FreeBSD_version >= 500102
- *paddr = phys;
- DRM_SPINUNLOCK(&dev->dma_lock);
- return 0;
-#else
#ifdef macppc
return pphys;
#else
return atop(pphys);
#endif
-#endif
} else {
DRM_SPINUNLOCK(&dev->dma_lock);
return -1;
@@ -119,11 +106,7 @@ paddr_t drm_mmap(dev_t kdev, off_t offset, int prot)
phys = offset;
break;
case _DRM_CONSISTENT:
-#ifdef __FreeBSD__
- phys = vtophys((char *)map->handle + (offset - map->offset));
-#else
phys = vtophys((paddr_t)map->handle + (offset - map->offset));
-#endif
break;
case _DRM_SCATTER_GATHER:
case _DRM_SHM:
@@ -134,15 +117,10 @@ paddr_t drm_mmap(dev_t kdev, off_t offset, int prot)
return -1; /* This should never happen. */
}
-#if defined(__FreeBSD__) && __FreeBSD_version >= 500102
- *paddr = phys;
- return 0;
-#else
#ifdef macppc
return phys;
#else
return atop(phys);
#endif
-#endif
}