Add minimum driver for XC6200 based cards. Currently it knows about
the HOT1 from www.vcc.com.
This commit is contained in:
parent
5b32180784
commit
5db3b83128
@ -2,7 +2,7 @@
|
||||
# LINT -- config file for checking all the sources, tries to pull in
|
||||
# as much of the source tree as it can.
|
||||
#
|
||||
# $Id: LINT,v 1.433 1998/05/19 23:23:09 julian Exp $
|
||||
# $Id: LINT,v 1.434 1998/05/21 03:22:20 wpaul Exp $
|
||||
#
|
||||
# NB: You probably don't want to try running a kernel built from this
|
||||
# file. Instead, you should start from GENERIC, and add options from
|
||||
@ -1252,7 +1252,10 @@ device asc0 at isa? port IO_ASC1 tty drq 3 irq 10 vector ascintr
|
||||
device bqu0 at isa? port 0x150
|
||||
device stl0 at isa? port 0x2a0 tty irq 10 vector stlintr
|
||||
device stli0 at isa? port 0x2a0 tty iomem 0xcc000 flags 23 iosiz 0x1000
|
||||
# You are unlikely to have the hardware for loran0 <phk@FreeBSD.org>
|
||||
device loran0 at isa? port ? tty irq 5 vector loranintr
|
||||
# HOT1 Xilinx 6200 card (www.vcc.com)
|
||||
device xrpu0
|
||||
|
||||
#
|
||||
# EISA devices:
|
||||
|
@ -403,6 +403,7 @@ pci/pci_compat.c optional pci
|
||||
pci/pcisupport.c optional pci
|
||||
pci/tek390.c optional amd device-driver
|
||||
pci/wdc_p.c optional wdc device-driver
|
||||
pci/xrpu.c optional xrpu device-driver
|
||||
posix4/posix4_mib.c standard
|
||||
posix4/p1003_1b.c standard
|
||||
posix4/ksched.c optional _kposix_priority_scheduling
|
||||
|
@ -2,7 +2,7 @@
|
||||
# LINT -- config file for checking all the sources, tries to pull in
|
||||
# as much of the source tree as it can.
|
||||
#
|
||||
# $Id: LINT,v 1.433 1998/05/19 23:23:09 julian Exp $
|
||||
# $Id: LINT,v 1.434 1998/05/21 03:22:20 wpaul Exp $
|
||||
#
|
||||
# NB: You probably don't want to try running a kernel built from this
|
||||
# file. Instead, you should start from GENERIC, and add options from
|
||||
@ -1252,7 +1252,10 @@ device asc0 at isa? port IO_ASC1 tty drq 3 irq 10 vector ascintr
|
||||
device bqu0 at isa? port 0x150
|
||||
device stl0 at isa? port 0x2a0 tty irq 10 vector stlintr
|
||||
device stli0 at isa? port 0x2a0 tty iomem 0xcc000 flags 23 iosiz 0x1000
|
||||
# You are unlikely to have the hardware for loran0 <phk@FreeBSD.org>
|
||||
device loran0 at isa? port ? tty irq 5 vector loranintr
|
||||
# HOT1 Xilinx 6200 card (www.vcc.com)
|
||||
device xrpu0
|
||||
|
||||
#
|
||||
# EISA devices:
|
||||
|
@ -2,7 +2,7 @@
|
||||
# LINT -- config file for checking all the sources, tries to pull in
|
||||
# as much of the source tree as it can.
|
||||
#
|
||||
# $Id: LINT,v 1.433 1998/05/19 23:23:09 julian Exp $
|
||||
# $Id: LINT,v 1.434 1998/05/21 03:22:20 wpaul Exp $
|
||||
#
|
||||
# NB: You probably don't want to try running a kernel built from this
|
||||
# file. Instead, you should start from GENERIC, and add options from
|
||||
@ -1252,7 +1252,10 @@ device asc0 at isa? port IO_ASC1 tty drq 3 irq 10 vector ascintr
|
||||
device bqu0 at isa? port 0x150
|
||||
device stl0 at isa? port 0x2a0 tty irq 10 vector stlintr
|
||||
device stli0 at isa? port 0x2a0 tty iomem 0xcc000 flags 23 iosiz 0x1000
|
||||
# You are unlikely to have the hardware for loran0 <phk@FreeBSD.org>
|
||||
device loran0 at isa? port ? tty irq 5 vector loranintr
|
||||
# HOT1 Xilinx 6200 card (www.vcc.com)
|
||||
device xrpu0
|
||||
|
||||
#
|
||||
# EISA devices:
|
||||
|
110
sys/pci/xrpu.c
Normal file
110
sys/pci/xrpu.c
Normal file
@ -0,0 +1,110 @@
|
||||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
* "THE BEER-WARE LICENSE" (Revision 42):
|
||||
* <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
|
||||
* can do whatever you want with this stuff. If we meet some day, and you think
|
||||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* A very simple device driver for PCI cards based on Xilinx 6200 series
|
||||
* FPGA/RPU devices. Current Functionality is to allow you to open and
|
||||
* mmap the entire thing into your program.
|
||||
*
|
||||
* Hardware currently supported:
|
||||
* www.vcc.com HotWorks 1 6216 based card.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DEVFS
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/conf.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/devfsext.h>
|
||||
#include <pci/pcireg.h>
|
||||
#include <pci/pcivar.h>
|
||||
|
||||
static char* xrpu_probe (pcici_t tag, pcidi_t type);
|
||||
static void xrpu_attach (pcici_t tag, int unit);
|
||||
static u_long xrpu_count;
|
||||
|
||||
static vm_offset_t virbase, physbase;
|
||||
|
||||
static int
|
||||
xrpuopen(dev_t dev, int flag, int mode, struct proc *p)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
xrpuclose(dev_t dev, int flag, int mode, struct proc *p)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
xrpummap(dev_t dev, int offset, int nprot)
|
||||
{
|
||||
if (offset >= 0x1000000)
|
||||
return (-1);
|
||||
return (i386_btop(physbase + offset));
|
||||
}
|
||||
|
||||
/*
|
||||
* Device driver initialization stuff
|
||||
*/
|
||||
|
||||
#define CDEV_MAJOR 100
|
||||
static struct cdevsw xrpudevsw = {
|
||||
xrpuopen, xrpuclose, noread, nowrite,
|
||||
noioctl, nullstop, noreset, nodevtotty,
|
||||
seltrue, xrpummap, nostrategy, "xrpu",
|
||||
NULL, -1
|
||||
};
|
||||
|
||||
/*
|
||||
* PCI initialization stuff
|
||||
*/
|
||||
|
||||
static struct pci_device xrpu_device = {
|
||||
"xrpu",
|
||||
xrpu_probe,
|
||||
xrpu_attach,
|
||||
&xrpu_count,
|
||||
NULL
|
||||
};
|
||||
|
||||
DATA_SET (pcidevice_set, xrpu_device);
|
||||
|
||||
static char*
|
||||
xrpu_probe (pcici_t tag, pcidi_t typea)
|
||||
{
|
||||
int data = pci_conf_read(tag, PCI_CLASS_REG);
|
||||
u_int id = pci_conf_read(tag, PCI_ID_REG);
|
||||
const char *vendor, *chip, *type;
|
||||
|
||||
vendor = chip = type = 0;
|
||||
|
||||
if (id == 0x6216133e) {
|
||||
return "VCC Hotworks-I xc6216";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
xrpu_attach (pcici_t tag, int unit)
|
||||
{
|
||||
dev_t cdev = makedev(CDEV_MAJOR, 0);
|
||||
|
||||
pci_map_mem(tag, PCI_MAP_REG_START, &virbase, &physbase);
|
||||
|
||||
printf("Mapped physbase %p to virbase %p\n", physbase, virbase);
|
||||
|
||||
cdevsw_add(&cdev, &xrpudevsw, NULL);
|
||||
|
||||
devfs_add_devswf(&xrpudevsw, 0, DV_CHR, UID_ROOT, GID_WHEEL, 0600,
|
||||
"xrpu0", 0);
|
||||
}
|
||||
#endif /* DEVFS */
|
Loading…
x
Reference in New Issue
Block a user