Removed detection for Voodoo Banshee and Voodoo3 cards. I forsee certain

possible complications with the forthcoming DRI code, and feel that DRI
should handle the device-level interaction. Read
http://people.FreeBSD.org/~cokane/3dfx.html
to find out more. Basically want to move toward using OpenGL and DRI for
everything on these cards. Added a few defines and spacing style fixes in
tdfx_vars.h
This commit is contained in:
Coleman Kane 2000-08-28 04:28:53 +00:00
parent fdb9f54dde
commit a436a79744
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=65146
2 changed files with 43 additions and 16 deletions

View File

@ -142,12 +142,12 @@ tdfx_probe(device_t dev)
case PCI_DEVICE_3DFX_VOODOO2:
device_set_desc(dev, "3DFX Voodoo II 3D Accelerator");
return 0;
case PCI_DEVICE_3DFX_BANSHEE:
/*case PCI_DEVICE_3DFX_BANSHEE:
device_set_desc(dev, "3DFX Voodoo Banshee 2D/3D Graphics Accelerator");
return 0;
case PCI_DEVICE_3DFX_VOODOO3:
device_set_desc(dev, "3DFX Voodoo3 2D/3D Graphics Accelerator");
return 0;
return 0;*/
case PCI_DEVICE_3DFX_VOODOO1:
device_set_desc(dev, "3DFX Voodoo Graphics 3D Accelerator");
return 0;;
@ -238,7 +238,9 @@ tdfx_attach(device_t dev) {
tdfx_info->memrid2 = rid;
}
/* Now to map the PIO stuff */
/* rid = 0;
rid = PCIR_IOBASE0_2;
tdfx_info->pio0 = pci_read_config(dev, 0x2c, 2);
tdfx_info->pio0max = pci_read_config(dev, 0x30, 2) + tdfx_info->pio0;
tdfx_info->piorange = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
0, ~0, 1, RF_ACTIVE | RF_SHAREABLE);
if(tdfx_info->piorange == NULL) {
@ -249,7 +251,7 @@ tdfx_attach(device_t dev) {
}
else {
tdfx_info->piorid = rid;
}*/
}
} else {
tdfx_info->addr1 = 0;
tdfx_info->memrange2 = NULL;
@ -544,6 +546,19 @@ tdfx_query_fetch(u_int cmd, struct tdfx_pio_data *piod)
if(piod->size != 4) return -EINVAL;
copyout(&tdfx_info->addr0, piod->value, piod->size);
return 0;
case PCI_BASE_ADDRESS_1_FREEBSD:
if(piod->size != 4) return -EINVAL;
copyout(&tdfx_info->addr1, piod->value, piod->size);
return 0;
case PCI_PRIBUS_FREEBSD:
if(piod->size != 1) return -EINVAL;
break;
case PCI_IOBASE_0_FREEBSD:
if(piod->size != 2) return -EINVAL;
break;
case PCI_IOLIMIT_0_FREEBSD:
if(piod->size != 2) return -EINVAL;
break;
case SST1_PCI_SPECIAL1_FREEBSD:
if(piod->size != 4) return -EINVAL;
break;
@ -672,9 +687,13 @@ tdfx_do_pio_rd(struct tdfx_pio_data *piod)
/* Return val */
u_int8_t ret_byte;
u_int workport;
struct tdfx_softc *tdfx_info =
(struct tdfx_softc*)devclass_get_softc(tdfx_devclass, piod->device);
/* Restricts the access of ports other than those we use */
if((piod->port != VGA_INPUT_STATUS_1C) || (piod->port != SC_INDEX) ||
(piod->port != SC_DATA) || (piod->port != VGA_MISC_OUTPUT_READ))
if(((piod->port != VGA_INPUT_STATUS_1C) || (piod->port != SC_INDEX) ||
(piod->port != SC_DATA) || (piod->port != VGA_MISC_OUTPUT_READ)) &&
(piod->port < tdfx_info->pio0) && (piod->port > tdfx_info->pio0max))
return -EPERM;
/* All VGA STATUS REGS are byte registers, size should never be > 1 */
@ -695,10 +714,13 @@ tdfx_do_pio_wt(struct tdfx_pio_data *piod)
/* return val */
u_int8_t ret_byte;
u_int workport;
struct tdfx_softc *tdfx_info = (struct
tdfx_softc*)devclass_get_softc(tdfx_devclass, piod->device);
/* Replace old switch w/ massive if(...) */
/* Restricts the access of ports other than those we use */
if((piod->port != SC_INDEX) && (piod->port != SC_DATA) &&
(piod->port != VGA_MISC_OUTPUT_READ)) /* Can't write VGA_ST_1C */
if(((piod->port != SC_INDEX) && (piod->port != SC_DATA) &&
(piod->port != VGA_MISC_OUTPUT_READ)) /* Can't write VGA_ST_1C */ &&
(piod->port < tdfx_info->pio0) && (piod->port > tdfx_info->pio0max))
return -EPERM;
/* All VGA STATUS REGS are byte registers, size should never be > 1 */

View File

@ -50,15 +50,19 @@
#define PCI_DEVICE_3DFX_BANSHEE 0x0003121a
#define PCI_DEVICE_3DFX_VOODOO3 0x0005121a
#define PCI_VENDOR_ID_FREEBSD 0x0
#define PCI_DEVICE_ID_FREEBSD 0x2
#define PCI_COMMAND_FREEBSD 0x4
#define PCI_REVISION_ID_FREEBSD 0x8
#define PCI_VENDOR_ID_FREEBSD 0x0
#define PCI_DEVICE_ID_FREEBSD 0x2
#define PCI_COMMAND_FREEBSD 0x4
#define PCI_REVISION_ID_FREEBSD 0x8
#define PCI_BASE_ADDRESS_0_FREEBSD 0x10
#define SST1_PCI_SPECIAL1_FREEBSD 0x40
#define SST1_PCI_SPECIAL2_FREEBSD 0x44
#define SST1_PCI_SPECIAL3_FREEBSD 0x48
#define SST1_PCI_SPECIAL4_FREEBSD 0x54
#define PCI_BASE_ADDRESS_1_FREEBSD 0x14
#define PCI_PRIBUS_FREEBSD 0x18
#define PCI_IOBASE_0_FREEBSD 0x2c
#define PCI_IOLIMIT_0_FREEBSD 0x30
#define SST1_PCI_SPECIAL1_FREEBSD 0x40
#define SST1_PCI_SPECIAL2_FREEBSD 0x44
#define SST1_PCI_SPECIAL3_FREEBSD 0x48
#define SST1_PCI_SPECIAL4_FREEBSD 0x54
#define VGA_INPUT_STATUS_1C 0x3DA
#define VGA_MISC_OUTPUT_READ 0x3cc
@ -85,6 +89,7 @@ struct tdfx_softc {
int vendor;
int type;
int addr0, addr1;
short pio0, pio0max;
unsigned char bus;
unsigned char dv;
struct file *curFile;