Merge 2.17 changes to trunk.
This commit is contained in:
parent
9732164f76
commit
134608261c
@ -1,6 +1,6 @@
|
||||
/* $NetBSD: bktr_audio.c,v 1.6 2000/07/01 01:39:00 wiz Exp $ */
|
||||
/* $NetBSD: bktr_audio.c,v 1.7 2000/10/28 14:31:57 wiz Exp $ */
|
||||
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_audio.c,v 1.5 2000/06/26 09:41:31 roger Exp */
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_audio.c,v 1.6 2000/10/15 14:18:06 phk Exp */
|
||||
/*
|
||||
* This is part of the Driver for Video Capture Cards (Frame grabbers)
|
||||
* and TV Tuner cards using the Brooktree Bt848, Bt848A, Bt849A, Bt878, Bt879
|
||||
@ -54,7 +54,11 @@
|
||||
#include <sys/vnode.h>
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
|
||||
#if (__FreeBSD_version < 500000)
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#endif
|
||||
|
||||
#include <pci/pcivar.h>
|
||||
|
||||
#if (__FreeBSD_version >=300000)
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* $NetBSD: bktr_card.c,v 1.7 2000/09/03 02:01:32 wiz Exp $ */
|
||||
/* $NetBSD: bktr_card.c,v 1.8 2000/10/28 14:31:58 wiz Exp $ */
|
||||
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_card.c,v 1.12 2000/06/28 15:09:12 roger Exp */
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_card.c,v 1.14 2000/10/15 14:18:06 phk Exp */
|
||||
|
||||
/*
|
||||
* This is part of the Driver for Video Capture Cards (Frame grabbers)
|
||||
@ -56,7 +56,11 @@
|
||||
#include <sys/vnode.h>
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
|
||||
#if (__FreeBSD_version < 500000)
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#endif
|
||||
|
||||
#include <pci/pcivar.h>
|
||||
|
||||
#if (__FreeBSD_version >=300000)
|
||||
@ -83,6 +87,12 @@
|
||||
#include <dev/bktr/bktr_audio.h>
|
||||
#endif
|
||||
|
||||
/* Include the PCI Vendor definitions */
|
||||
#ifdef __NetBSD__
|
||||
#include <dev/pci/pcidevs.h>
|
||||
#include <dev/pci/pcireg.h>
|
||||
#endif
|
||||
|
||||
/* Various defines */
|
||||
#define HAUP_REMOTE_INT_WADDR 0x30
|
||||
#define HAUP_REMOTE_INT_RADDR 0x31
|
||||
@ -530,6 +540,7 @@ static int locate_eeprom_address( bktr_ptr_t bktr) {
|
||||
so not added to NetBSD's pcidevs */
|
||||
#define PCI_VENDOR_LEADTEK_ALT 0x6606
|
||||
#define PCI_VENDOR_FLYVIDEO 0x1851
|
||||
#define PCI_VENDOR_FLYVIDEO_2 0x1852
|
||||
#define PCI_VENDOR_PINNACLE_ALT 0xBD11
|
||||
|
||||
void
|
||||
@ -629,7 +640,8 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
||||
goto checkTuner;
|
||||
}
|
||||
|
||||
if (subsystem_vendor_id == PCI_VENDOR_FLYVIDEO) {
|
||||
if ((subsystem_vendor_id == PCI_VENDOR_FLYVIDEO)
|
||||
|| (subsystem_vendor_id == PCI_VENDOR_FLYVIDEO_2) ) {
|
||||
bktr->card = cards[ (card = CARD_FLYVIDEO) ];
|
||||
bktr->card.eepromAddr = eeprom_i2c_address;
|
||||
bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
|
||||
@ -662,7 +674,7 @@ probeCard( bktr_ptr_t bktr, int verbose, int unit )
|
||||
bktr->card.eepromAddr = eeprom_i2c_address;
|
||||
bktr->card.eepromSize = (u_char)(256 / EEPROMBLOCKSIZE);
|
||||
goto checkTuner;
|
||||
}
|
||||
}
|
||||
|
||||
/* Vendor is unknown. We will use the standard probe code */
|
||||
/* which may not give best results */
|
||||
@ -885,7 +897,7 @@ checkTuner:
|
||||
0x29 Temic 4006FN5 BG/I/DK
|
||||
0x2a Temic 4009FR5 BG FM
|
||||
0x2b Temic 4046FM5 B/G, I, D/K, L/L'
|
||||
0x2c Temic 4009FN5 B/G, I, D/K, FM (no demod)
|
||||
0x2c Temic 4009FN5 B/G, I, D/K, FM (no demod) PHILIPS_PALI
|
||||
0x2d Philips TD1536D_FH_44 MN/ATSCDigital DUAL INPUT
|
||||
*/
|
||||
|
||||
@ -939,6 +951,7 @@ checkTuner:
|
||||
case 0xb:
|
||||
case 0x1d:
|
||||
case 0x23:
|
||||
case 0x2c:
|
||||
select_tuner( bktr, PHILIPS_PALI );
|
||||
goto checkDBX;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* $NetBSD: bktr_core.c,v 1.11 2000/09/06 19:01:45 thorpej Exp $ */
|
||||
/* $NetBSD: bktr_core.c,v 1.12 2000/10/28 14:31:58 wiz Exp $ */
|
||||
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_core.c,v 1.109 2000/06/28 15:09:12 roger Exp */
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_core.c,v 1.112 2000/10/15 14:18:06 phk Exp */
|
||||
|
||||
/*
|
||||
* This is part of the Driver for Video Capture Cards (Frame grabbers)
|
||||
@ -100,7 +100,6 @@
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include "bktr.h"
|
||||
#include "opt_devfs.h"
|
||||
#endif /* __FreeBSD__ */
|
||||
|
||||
#if ( \
|
||||
@ -131,7 +130,10 @@
|
||||
#include <sys/bus.h> /* used by smbus and newbus */
|
||||
#endif
|
||||
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#if (__FreeBSD_version < 500000)
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#endif
|
||||
|
||||
#include <pci/pcivar.h>
|
||||
|
||||
#if (__FreeBSD_version >=300000)
|
||||
@ -148,8 +150,11 @@
|
||||
#include <dev/bktr/bktr_audio.h>
|
||||
#include <dev/bktr/bktr_os.h>
|
||||
#include <dev/bktr/bktr_core.h>
|
||||
#if defined(BKTR_FREEBSD_MODULE)
|
||||
#include <dev/bktr/bktr_mem.h>
|
||||
#endif
|
||||
|
||||
#if (NSMBUS > 0)
|
||||
#if defined(BKTR_USE_FREEBSD_SMBUS)
|
||||
#include <dev/bktr/bktr_i2c.h>
|
||||
#include <dev/smbus/smbconf.h>
|
||||
#include <dev/iicbus/iiconf.h>
|
||||
@ -445,7 +450,7 @@ static void remote_read(bktr_ptr_t bktr, struct bktr_remote *remote);
|
||||
static int common_ioctl( bktr_ptr_t bktr, ioctl_cmd_t cmd, caddr_t arg );
|
||||
|
||||
|
||||
#if ((!defined(__FreeBSD__)) || (NSMBUS == 0) )
|
||||
#if !defined(BKTR_USE_FREEBSD_SMBUS)
|
||||
/*
|
||||
* i2c primitives for low level control of i2c bus. Added for MSP34xx control
|
||||
*/
|
||||
@ -463,7 +468,8 @@ static int i2c_read_byte( bktr_ptr_t bktr, unsigned char *data, int last );
|
||||
void
|
||||
common_bktr_attach( bktr_ptr_t bktr, int unit, u_long pci_id, u_int rev )
|
||||
{
|
||||
vm_offset_t buf;
|
||||
vm_offset_t buf = 0;
|
||||
int need_to_allocate_memory = 1;
|
||||
|
||||
/***************************************/
|
||||
/* *** OS Specific memory routines *** */
|
||||
@ -489,21 +495,48 @@ common_bktr_attach( bktr_ptr_t bktr, int unit, u_long pci_id, u_int rev )
|
||||
#endif
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__bsdi__)
|
||||
/* allocate space for dma program */
|
||||
bktr->dma_prog = get_bktr_mem(unit, DMA_PROG_ALLOC);
|
||||
bktr->odd_dma_prog = get_bktr_mem(unit, DMA_PROG_ALLOC);
|
||||
|
||||
/* allocte space for the VBI buffer */
|
||||
bktr->vbidata = get_bktr_mem(unit, VBI_DATA_SIZE);
|
||||
bktr->vbibuffer = get_bktr_mem(unit, VBI_BUFFER_SIZE);
|
||||
|
||||
/* allocate space for pixel buffer */
|
||||
if ( BROOKTREE_ALLOC )
|
||||
buf = get_bktr_mem(unit, BROOKTREE_ALLOC);
|
||||
else
|
||||
buf = 0;
|
||||
/* If this is a module, check if there is any currently saved contiguous memory */
|
||||
#if defined(BKTR_FREEBSD_MODULE)
|
||||
if (bktr_has_stored_addresses(unit) == 1) {
|
||||
/* recover the addresses */
|
||||
bktr->dma_prog = bktr_retrieve_address(unit, BKTR_MEM_DMA_PROG);
|
||||
bktr->odd_dma_prog = bktr_retrieve_address(unit, BKTR_MEM_ODD_DMA_PROG);
|
||||
bktr->vbidata = bktr_retrieve_address(unit, BKTR_MEM_VBIDATA);
|
||||
bktr->vbibuffer = bktr_retrieve_address(unit, BKTR_MEM_VBIBUFFER);
|
||||
buf = bktr_retrieve_address(unit, BKTR_MEM_BUF);
|
||||
need_to_allocate_memory = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (need_to_allocate_memory == 1) {
|
||||
/* allocate space for dma program */
|
||||
bktr->dma_prog = get_bktr_mem(unit, DMA_PROG_ALLOC);
|
||||
bktr->odd_dma_prog = get_bktr_mem(unit, DMA_PROG_ALLOC);
|
||||
|
||||
/* allocte space for the VBI buffer */
|
||||
bktr->vbidata = get_bktr_mem(unit, VBI_DATA_SIZE);
|
||||
bktr->vbibuffer = get_bktr_mem(unit, VBI_BUFFER_SIZE);
|
||||
|
||||
/* allocate space for pixel buffer */
|
||||
if ( BROOKTREE_ALLOC )
|
||||
buf = get_bktr_mem(unit, BROOKTREE_ALLOC);
|
||||
else
|
||||
buf = 0;
|
||||
}
|
||||
#endif /* FreeBSD or BSDi */
|
||||
|
||||
|
||||
/* If this is a module, save the current contiguous memory */
|
||||
#if defined(BKTR_FREEBSD_MODULE)
|
||||
bktr_store_address(unit, BKTR_MEM_DMA_PROG, bktr->dma_prog);
|
||||
bktr_store_address(unit, BKTR_MEM_ODD_DMA_PROG, bktr->odd_dma_prog);
|
||||
bktr_store_address(unit, BKTR_MEM_VBIDATA, bktr->vbidata);
|
||||
bktr_store_address(unit, BKTR_MEM_VBIBUFFER, bktr->vbibuffer);
|
||||
bktr_store_address(unit, BKTR_MEM_BUF, buf);
|
||||
#endif
|
||||
|
||||
|
||||
if ( bootverbose ) {
|
||||
printf("%s: buffer size %d, addr 0x%lx\n",
|
||||
bktr_name(bktr), BROOKTREE_ALLOC,
|
||||
@ -3717,7 +3750,7 @@ static int oformat_meteor_to_bt( u_long format )
|
||||
BT848_DATA_CTL_I2CSDA)
|
||||
|
||||
/* Select between old i2c code and new iicbus / smbus code */
|
||||
#if (defined(__FreeBSD__) && (NSMBUS > 0))
|
||||
#if defined(BKTR_USE_FREEBSD_SMBUS)
|
||||
|
||||
/*
|
||||
* The hardware interface is actually SMB commands
|
||||
@ -3863,7 +3896,7 @@ static void remote_read(bktr_ptr_t bktr, struct bktr_remote *remote) {
|
||||
return;
|
||||
}
|
||||
|
||||
#else /* defined(__FreeBSD__) && (NSMBUS > 0) */
|
||||
#else /* defined(BKTR_USE_FREEBSD_SMBUS) */
|
||||
|
||||
/*
|
||||
* Program the i2c bus directly
|
||||
@ -4119,7 +4152,7 @@ static void remote_read(bktr_ptr_t bktr, struct bktr_remote *remote) {
|
||||
return;
|
||||
}
|
||||
|
||||
#endif /* defined(__FreeBSD__) && (NSMBUS > 0) */
|
||||
#endif /* defined(BKTR_USE_FREEBSD_SMBUS) */
|
||||
|
||||
|
||||
#if defined( I2C_SOFTWARE_PROBE )
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* $NetBSD: bktr_os.c,v 1.12 2000/09/03 02:01:32 wiz Exp $ */
|
||||
/* $NetBSD: bktr_os.c,v 1.13 2000/10/28 14:31:58 wiz Exp $ */
|
||||
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_os.c,v 1.10 2000/06/28 15:09:12 roger Exp */
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_os.c,v 1.18 2000/10/15 14:18:06 phk Exp */
|
||||
|
||||
/*
|
||||
* This is part of the Driver for Video Capture Cards (Frame grabbers)
|
||||
@ -52,7 +52,6 @@
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include "bktr.h"
|
||||
#include "opt_devfs.h"
|
||||
#endif /* __FreeBSD__ */
|
||||
|
||||
#include "opt_bktr.h" /* include any kernel config options */
|
||||
@ -82,12 +81,6 @@
|
||||
#include <vm/pmap.h>
|
||||
#include <vm/vm_extern.h>
|
||||
|
||||
#if (__FreeBSD_version < 400000)
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /* DEVFS */
|
||||
#endif
|
||||
|
||||
#if (__FreeBSD_version >=400000) || (NSMBUS > 0)
|
||||
#include <sys/bus.h> /* used by smbus and newbus */
|
||||
#endif
|
||||
@ -103,15 +96,13 @@
|
||||
#include <machine/resource.h> /* used by newbus */
|
||||
#endif
|
||||
|
||||
#if (__FreeBSD_version < 500000)
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#endif
|
||||
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#include <pci/pcivar.h>
|
||||
#include <pci/pcireg.h>
|
||||
|
||||
#if (NSMBUS > 0)
|
||||
#include <dev/bktr/bktr_i2c.h>
|
||||
#endif
|
||||
|
||||
#include <sys/sysctl.h>
|
||||
int bt848_card = -1;
|
||||
int bt848_tuner = -1;
|
||||
@ -196,6 +187,9 @@ int bktr_debug = 0;
|
||||
#include <dev/bktr/bktr_audio.h>
|
||||
#include <dev/bktr/bktr_core.h>
|
||||
#include <dev/bktr/bktr_os.h>
|
||||
#if defined(BKTR_USE_FREEBSD_SMBUS)
|
||||
#include <dev/bktr/bktr_i2c.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@ -256,6 +250,10 @@ static struct cdevsw bktr_cdevsw = {
|
||||
};
|
||||
|
||||
DRIVER_MODULE(bktr, pci, bktr_driver, bktr_devclass, 0, 0);
|
||||
#if (__FreeBSD_version > 410000)
|
||||
MODULE_DEPEND(bktr, bktr_mem, 1,1,1);
|
||||
MODULE_VERSION(bktr, 1);
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
@ -285,7 +283,7 @@ bktr_probe( device_t dev )
|
||||
case PCI_PRODUCT_BROOKTREE_BT879:
|
||||
device_set_desc(dev, "BrookTree 879");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return ENXIO;
|
||||
@ -304,7 +302,6 @@ bktr_attach( device_t dev )
|
||||
unsigned int rev;
|
||||
unsigned int unit;
|
||||
int error = 0;
|
||||
int rid;
|
||||
#ifdef BROOKTREE_IRQ
|
||||
u_long old_irq, new_irq;
|
||||
#endif
|
||||
@ -326,9 +323,10 @@ bktr_attach( device_t dev )
|
||||
/*
|
||||
* Map control/status registers.
|
||||
*/
|
||||
rid = PCIR_MAPS;
|
||||
bktr->res_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid,
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
bktr->mem_rid = PCIR_MAPS;
|
||||
bktr->res_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &bktr->mem_rid,
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
|
||||
|
||||
if (!bktr->res_mem) {
|
||||
device_printf(dev, "could not map memory\n");
|
||||
@ -357,9 +355,9 @@ bktr_attach( device_t dev )
|
||||
/*
|
||||
* Allocate our interrupt.
|
||||
*/
|
||||
rid = 0;
|
||||
bktr->res_irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0, ~0, 1,
|
||||
RF_SHAREABLE | RF_ACTIVE);
|
||||
bktr->irq_rid = 0;
|
||||
bktr->res_irq = bus_alloc_resource(dev, SYS_RES_IRQ, &bktr->irq_rid,
|
||||
0, ~0, 1, RF_SHAREABLE | RF_ACTIVE);
|
||||
if (bktr->res_irq == NULL) {
|
||||
device_printf(dev, "could not map interrupt\n");
|
||||
error = ENXIO;
|
||||
@ -394,7 +392,7 @@ bktr_attach( device_t dev )
|
||||
|
||||
|
||||
/* XXX call bt848_i2c dependent attach() routine */
|
||||
#if (NSMBUS > 0)
|
||||
#if defined(BKTR_USE_FREEBSD_SMBUS)
|
||||
if (bt848_i2c_attach(unit, bktr, &bktr->i2c_sc))
|
||||
printf("bktr%d: i2c_attach: can't attach\n", unit);
|
||||
#endif
|
||||
@ -431,13 +429,32 @@ bktr_attach( device_t dev )
|
||||
/* call the common attach code */
|
||||
common_bktr_attach( bktr, unit, fun, rev );
|
||||
|
||||
make_dev(&bktr_cdevsw, unit, 0, 0, 0444, "bktr%d", unit);
|
||||
make_dev(&bktr_cdevsw, unit+16, 0, 0, 0444, "tuner%d", unit);
|
||||
make_dev(&bktr_cdevsw, unit+32, 0, 0, 0444, "vbi%d", unit);
|
||||
/* make the device entries */
|
||||
bktr->bktrdev = make_dev(&bktr_cdevsw, unit,
|
||||
0, 0, 0444, "bktr%d", unit);
|
||||
bktr->tunerdev= make_dev(&bktr_cdevsw, unit+16,
|
||||
0, 0, 0444, "tuner%d", unit);
|
||||
bktr->vbidev = make_dev(&bktr_cdevsw, unit+32,
|
||||
0, 0, 0444, "vbi%d" , unit);
|
||||
|
||||
|
||||
/* if this is unit 0 (/dev/bktr0, /dev/tuner0, /dev/vbi0) then make */
|
||||
/* alias entries to /dev/bktr /dev/tuner and /dev/vbi */
|
||||
#if (__FreeBSD_version >=500000)
|
||||
if (unit == 0) {
|
||||
bktr->bktrdev_alias = make_dev_alias(bktr->bktrdev, "bktr");
|
||||
bktr->tunerdev_alias= make_dev_alias(bktr->tunerdev, "tuner");
|
||||
bktr->vbidev_alias = make_dev_alias(bktr->vbidev, "vbi");
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
if (bktr->res_irq)
|
||||
bus_release_resource(dev, SYS_RES_IRQ, bktr->irq_rid, bktr->res_irq);
|
||||
if (bktr->res_mem)
|
||||
bus_release_resource(dev, SYS_RES_IRQ, bktr->mem_rid, bktr->res_mem);
|
||||
return error;
|
||||
|
||||
}
|
||||
@ -448,21 +465,41 @@ fail:
|
||||
static int
|
||||
bktr_detach( device_t dev )
|
||||
{
|
||||
unsigned int unit;
|
||||
|
||||
struct bktr_softc *bktr = device_get_softc(dev);
|
||||
|
||||
unit = device_get_unit(dev);
|
||||
|
||||
/* Disable the brooktree device */
|
||||
OUTL(bktr, BKTR_INT_MASK, ALL_INTS_DISABLED);
|
||||
OUTW(bktr, BKTR_GPIO_DMA_CTL, FIFO_RISC_DISABLED);
|
||||
|
||||
/* FIXME - Free memory for RISC programs, grab buffer, vbi buffers */
|
||||
/* Note: We do not free memory for RISC programs, grab buffer, vbi buffers */
|
||||
/* The memory is retained by the bktr_mem module so we can unload and */
|
||||
/* then reload the main bktr driver module */
|
||||
|
||||
/* Unregister the /dev/bktrN, tunerN and vbiN devices */
|
||||
destroy_dev(bktr->vbidev);
|
||||
destroy_dev(bktr->tunerdev);
|
||||
destroy_dev(bktr->bktrdev);
|
||||
|
||||
/* If this is unit 0, then destroy the alias entries too */
|
||||
#if (__FreeBSD_version >=500000)
|
||||
if (unit == 0) {
|
||||
destroy_dev(bktr->vbidev_alias);
|
||||
destroy_dev(bktr->tunerdev_alias);
|
||||
destroy_dev(bktr->bktrdev_alias);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Deallocate resources.
|
||||
*/
|
||||
bus_teardown_intr(dev, bktr->res_irq, bktr->res_ih);
|
||||
bus_release_resource(dev, SYS_RES_IRQ, 0, bktr->res_irq);
|
||||
bus_release_resource(dev, SYS_RES_MEMORY, PCIR_MAPS, bktr->res_mem);
|
||||
|
||||
bus_release_resource(dev, SYS_RES_IRQ, bktr->irq_rid, bktr->res_irq);
|
||||
bus_release_resource(dev, SYS_RES_MEMORY, bktr->mem_rid, bktr->res_mem);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -838,7 +875,7 @@ static const char*
|
||||
bktr_probe( pcici_t tag, pcidi_t type )
|
||||
{
|
||||
unsigned int rev = pci_conf_read( tag, PCIR_REVID) & 0x000000ff;
|
||||
|
||||
|
||||
if (PCI_VENDOR(type) == PCI_VENDOR_BROOKTREE)
|
||||
{
|
||||
switch (PCI_PRODUCT(type)) {
|
||||
@ -944,7 +981,7 @@ bktr_attach( pcici_t tag, int unit )
|
||||
|
||||
|
||||
/* XXX call bt848_i2c dependent attach() routine */
|
||||
#if (NSMBUS > 0)
|
||||
#if defined(BKTR_USE_FREEBSD_SMBUS)
|
||||
if (bt848_i2c_attach(unit, bktr, &bktr->i2c_sc))
|
||||
printf("bktr%d: i2c_attach: can't attach\n", unit);
|
||||
#endif
|
||||
@ -981,14 +1018,6 @@ bktr_attach( pcici_t tag, int unit )
|
||||
|
||||
/* call the common attach code */
|
||||
common_bktr_attach( bktr, unit, fun, rev );
|
||||
|
||||
#ifdef DEVFS
|
||||
/* XXX This just throw away the token, which should probably be fixed when
|
||||
DEVFS is finally made really operational. */
|
||||
devfs_add_devswf(&bktr_cdevsw, unit, DV_CHR, 0, 0, 0444, "bktr%d", unit);
|
||||
devfs_add_devswf(&bktr_cdevsw, unit+16, DV_CHR, 0, 0, 0444, "tuner%d", unit);
|
||||
devfs_add_devswf(&bktr_cdevsw, unit+32, DV_CHR, 0, 0, 0444, "vbi%d", unit);
|
||||
#endif /* DEVFS */
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* $NetBSD: bktr_reg.h,v 1.7 2000/09/24 12:37:04 jdolecek Exp $ */
|
||||
/* $NetBSD: bktr_reg.h,v 1.8 2000/10/28 14:31:58 wiz Exp $ */
|
||||
|
||||
/*
|
||||
* FreeBSD: src/sys/dev/bktr/bktr_reg.h,v 1.38 2000/06/26 09:41:32 roger Exp
|
||||
* FreeBSD: src/sys/dev/bktr/bktr_reg.h,v 1.40 2000/09/10 14:34:08 roger Exp
|
||||
*
|
||||
* Copyright (c) 1999 Roger Hardiman
|
||||
* Copyright (c) 1998 Amancio Hasty
|
||||
@ -38,13 +38,13 @@
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
# if (__FreeBSD_version >= 310000)
|
||||
# include <sys/bus.h>
|
||||
# include "smbus.h"
|
||||
# else
|
||||
# define NSMBUS 0 /* FreeBSD before 3.1 does not have SMBUS */
|
||||
# endif
|
||||
#else
|
||||
# define NSMBUS 0 /* Non FreeBSD systems do not have SMBUS */
|
||||
# if (NSMBUS > 0)
|
||||
# define BKTR_USE_FREEBSD_SMBUS
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __NetBSD__
|
||||
@ -60,6 +60,10 @@
|
||||
*
|
||||
*/
|
||||
#if defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||
#if defined(BROOKTREE_ALLOC_PAGES)
|
||||
#define BKTR_ALLOC_PAGES BROOKTREE_ALLOC_PAGES
|
||||
#endif
|
||||
|
||||
#if defined(BROOKTREE_SYSTEM_DEFAULT)
|
||||
#define BKTR_SYSTEM_DEFAULT BROOKTREE_SYSTEM_DEFAULT
|
||||
#endif
|
||||
@ -90,10 +94,7 @@
|
||||
/*
|
||||
* Definitions for the Brooktree 848/878 video capture to pci interface.
|
||||
*/
|
||||
#ifdef __NetBSD__
|
||||
#include <dev/pci/pcidevs.h>
|
||||
#include <dev/pci/pcireg.h>
|
||||
#else
|
||||
#ifndef __NetBSD__
|
||||
#define PCI_VENDOR_SHIFT 0
|
||||
#define PCI_VENDOR_MASK 0xffff
|
||||
#define PCI_VENDOR(id) \
|
||||
@ -104,16 +105,13 @@
|
||||
#define PCI_PRODUCT(id) \
|
||||
(((id) >> PCI_PRODUCT_SHIFT) & PCI_PRODUCT_MASK)
|
||||
|
||||
#define PCI_VENDOR_BROOKTREE 0x109e /* Brooktree */
|
||||
/* PCI vendor ID */
|
||||
#define PCI_VENDOR_BROOKTREE 0x109e /* Brooktree */
|
||||
/* Brooktree products */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT848 0x0350 /* Bt848 Video
|
||||
Capture */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT849 0x0351 /* Bt849 Video
|
||||
Capture */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT878 0x036e /* Bt878 Video
|
||||
Capture */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT879 0x036f /* Bt879 Video
|
||||
Capture */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT848 0x0350 /* Bt848 Video Capture */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT849 0x0351 /* Bt849 Video Capture */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT878 0x036e /* Bt878 Video Capture */
|
||||
#define PCI_PRODUCT_BROOKTREE_BT879 0x036f /* Bt879 Video Capture */
|
||||
#endif
|
||||
|
||||
#define BROOKTREE_848 1
|
||||
@ -455,7 +453,7 @@ struct format_params {
|
||||
int vbi_num_lines, vbi_num_samples;
|
||||
};
|
||||
|
||||
#if ((defined(__FreeBSD__)) && (NSMBUS > 0))
|
||||
#if defined(BKTR_USE_FREEBSD_SMBUS)
|
||||
struct bktr_i2c_softc {
|
||||
device_t iicbus;
|
||||
device_t smbus;
|
||||
@ -489,13 +487,6 @@ struct bktr_i2c_softc {
|
||||
|
||||
typedef struct bktr_clip bktr_clip_t;
|
||||
|
||||
/*
|
||||
* NetBSD >= 1.3H uses vaddr_t instead of vm_offset_t
|
||||
*/
|
||||
#if defined(__NetBSD__) && __NetBSD_Version__ >= 103080000
|
||||
typedef void * vm_offset_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* BrookTree 848 info structure, one per bt848 card installed.
|
||||
*/
|
||||
@ -546,9 +537,17 @@ struct bktr_softc {
|
||||
pcici_t tag; /* 2.x PCI tag, for doing PCI commands */
|
||||
#endif
|
||||
#if (__FreeBSD_version >= 400000)
|
||||
int mem_rid; /* 4.x resource id */
|
||||
struct resource *res_mem; /* 4.x resource descriptor for registers */
|
||||
int irq_rid; /* 4.x resource id */
|
||||
struct resource *res_irq; /* 4.x resource descriptor for interrupt */
|
||||
void *res_ih; /* 4.x newbus interrupt handler cookie */
|
||||
dev_t bktrdev; /* 4.x device entry for /dev/bktrN */
|
||||
dev_t tunerdev; /* 4.x device entry for /dev/tunerN */
|
||||
dev_t vbidev; /* 4.x device entry for /dev/vbiN */
|
||||
dev_t bktrdev_alias; /* alias /dev/bktr to /dev/bktr0 */
|
||||
dev_t tunerdev_alias; /* alias /dev/tuner to /dev/tuner0 */
|
||||
dev_t vbidev_alias; /* alias /dev/vbi to /dev/vbi0 */
|
||||
#endif
|
||||
#if (__FreeBSD_version >= 310000)
|
||||
bus_space_tag_t memt; /* Bus space register access functions */
|
||||
@ -561,12 +560,25 @@ struct bktr_softc {
|
||||
char bktr_xname[7]; /* device name and unit number */
|
||||
#endif
|
||||
|
||||
/* the following definitions are common over all platforms */
|
||||
vm_offset_t bigbuf; /* buffer that holds the captured image */
|
||||
int alloc_pages; /* number of pages in bigbuf */
|
||||
|
||||
vm_offset_t vbidata; /* RISC program puts VBI data from the current frame here */
|
||||
vm_offset_t vbibuffer; /* Circular buffer holding VBI data for the user */
|
||||
/* The following definitions are for the contiguous memory */
|
||||
#ifdef __NetBSD__
|
||||
vaddr_t bigbuf; /* buffer that holds the captured image */
|
||||
vaddr_t vbidata; /* RISC program puts VBI data from the current frame here */
|
||||
vaddr_t vbibuffer; /* Circular buffer holding VBI data for the user */
|
||||
vaddr_t dma_prog; /* RISC prog for single and/or even field capture*/
|
||||
vaddr_t odd_dma_prog; /* RISC program for Odd field capture */
|
||||
#else
|
||||
vm_offset_t bigbuf; /* buffer that holds the captured image */
|
||||
vm_offset_t vbidata; /* RISC program puts VBI data from the current frame here */
|
||||
vm_offset_t vbibuffer; /* Circular buffer holding VBI data for the user */
|
||||
vm_offset_t dma_prog; /* RISC prog for single and/or even field capture*/
|
||||
vm_offset_t odd_dma_prog;/* RISC program for Odd field capture */
|
||||
#endif
|
||||
|
||||
|
||||
/* the following definitions are common over all platforms */
|
||||
int alloc_pages; /* number of pages in bigbuf */
|
||||
int vbiinsert; /* Position for next write into circular buffer */
|
||||
int vbistart; /* Position of last read from circular buffer */
|
||||
int vbisize; /* Number of bytes in the circular buffer */
|
||||
@ -581,8 +593,6 @@ struct bktr_softc {
|
||||
#define METEOR_SIG_MODE_MASK 0xffff0000
|
||||
#define METEOR_SIG_FIELD_MODE 0x00010000
|
||||
#define METEOR_SIG_FRAME_MODE 0x00000000
|
||||
vm_offset_t dma_prog;
|
||||
vm_offset_t odd_dma_prog;
|
||||
char dma_prog_loaded;
|
||||
struct meteor_mem *mem; /* used to control sync. multi-frame output */
|
||||
u_long synch_wait; /* wait for free buffer before continuing */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* $NetBSD: bktr_tuner.c,v 1.5 2000/07/01 01:39:02 wiz Exp $ */
|
||||
/* $NetBSD: bktr_tuner.c,v 1.6 2000/10/28 14:31:58 wiz Exp $ */
|
||||
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_tuner.c,v 1.7 2000/06/26 09:41:32 roger Exp */
|
||||
/* FreeBSD: src/sys/dev/bktr/bktr_tuner.c,v 1.8 2000/10/15 14:18:06 phk Exp */
|
||||
|
||||
/*
|
||||
* This is part of the Driver for Video Capture Cards (Frame grabbers)
|
||||
@ -56,9 +56,12 @@
|
||||
#endif
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#include <pci/pcivar.h>
|
||||
|
||||
#if (__FreeBSD_version < 500000)
|
||||
#include <machine/clock.h> /* for DELAY */
|
||||
#endif
|
||||
|
||||
#if (__FreeBSD_version >=300000)
|
||||
#include <machine/bus_memio.h> /* for bus space */
|
||||
#include <machine/bus.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user