Deleted Added
sdiff udiff text old ( 65374 ) new ( 65692 )
full compact
1/* $FreeBSD: head/sys/dev/bktr/bktr_core.c 65374 2000-09-02 19:17:34Z phk $ */
2
3/*
4 * This is part of the Driver for Video Capture Cards (Frame grabbers)
5 * and TV Tuner cards using the Brooktree Bt848, Bt848A, Bt849A, Bt878, Bt879
6 * chipset.
7 * Copyright Roger Hardiman and Amancio Hasty.
8 *
9 * bktr_core : This deals with the Bt848/849/878/879 PCI Frame Grabber,

--- 130 unchanged lines hidden (view full) ---

140#include <machine/ioctl_meteor.h>
141#include <machine/ioctl_bt848.h> /* extensions to ioctl_meteor.h */
142#include <dev/bktr/bktr_reg.h>
143#include <dev/bktr/bktr_tuner.h>
144#include <dev/bktr/bktr_card.h>
145#include <dev/bktr/bktr_audio.h>
146#include <dev/bktr/bktr_os.h>
147#include <dev/bktr/bktr_core.h>
148
149#if (NSMBUS > 0)
150#include <dev/bktr/bktr_i2c.h>
151#include <dev/smbus/smbconf.h>
152#include <dev/iicbus/iiconf.h>
153#include "smbus_if.h"
154#include "iicbus_if.h"
155#endif
156
157const char *

--- 279 unchanged lines hidden (view full) ---

437
438
439/*
440 * ioctls common to both video & tuner.
441 */
442static int common_ioctl( bktr_ptr_t bktr, ioctl_cmd_t cmd, caddr_t arg );
443
444
445#if ((!defined(__FreeBSD__)) || (NSMBUS == 0) )
446/*
447 * i2c primitives for low level control of i2c bus. Added for MSP34xx control
448 */
449static void i2c_start( bktr_ptr_t bktr);
450static void i2c_stop( bktr_ptr_t bktr);
451static int i2c_write_byte( bktr_ptr_t bktr, unsigned char data);
452static int i2c_read_byte( bktr_ptr_t bktr, unsigned char *data, int last );
453#endif
454
455
456
457/*
458 * the common attach code, used by all OS versions.
459 */
460void
461common_bktr_attach( bktr_ptr_t bktr, int unit, u_long pci_id, u_int rev )
462{
463 vm_offset_t buf;
464
465/***************************************/
466/* *** OS Specific memory routines *** */
467/***************************************/
468#if defined(__NetBSD__) || defined(__OpenBSD__)
469 /* allocate space for dma program */
470 bktr->dma_prog = get_bktr_mem(bktr, &bktr->dm_prog,
471 DMA_PROG_ALLOC);

--- 9 unchanged lines hidden (view full) ---

481 /* allocate space for pixel buffer */
482 if ( BROOKTREE_ALLOC )
483 buf = get_bktr_mem(bktr, &bktr->dm_mem, BROOKTREE_ALLOC);
484 else
485 buf = 0;
486#endif
487
488#if defined(__FreeBSD__) || defined(__bsdi__)
489 /* allocate space for dma program */
490 bktr->dma_prog = get_bktr_mem(unit, DMA_PROG_ALLOC);
491 bktr->odd_dma_prog = get_bktr_mem(unit, DMA_PROG_ALLOC);
492
493 /* allocte space for the VBI buffer */
494 bktr->vbidata = get_bktr_mem(unit, VBI_DATA_SIZE);
495 bktr->vbibuffer = get_bktr_mem(unit, VBI_BUFFER_SIZE);
496
497 /* allocate space for pixel buffer */
498 if ( BROOKTREE_ALLOC )
499 buf = get_bktr_mem(unit, BROOKTREE_ALLOC);
500 else
501 buf = 0;
502#endif
503
504 if ( bootverbose ) {
505 printf("%s: buffer size %d, addr 0x%x\n",
506 bktr_name(bktr), BROOKTREE_ALLOC, vtophys(buf));
507 }
508
509 if ( buf != 0 ) {
510 bktr->bigbuf = buf;
511 bktr->alloc_pages = BROOKTREE_ALLOC_PAGES;

--- 3191 unchanged lines hidden (view full) ---

3703 BT848_DATA_CTL_I2CSCL | \
3704 BT848_DATA_CTL_I2CSDA)
3705
3706#define I2C_COMMAND_878 (I2CBITTIME_878 | \
3707 BT848_DATA_CTL_I2CSCL | \
3708 BT848_DATA_CTL_I2CSDA)
3709
3710/* Select between old i2c code and new iicbus / smbus code */
3711#if (defined(__FreeBSD__) && (NSMBUS > 0))
3712
3713/*
3714 * The hardware interface is actually SMB commands
3715 */
3716int
3717i2cWrite( bktr_ptr_t bktr, int addr, int byte1, int byte2 )
3718{
3719 char cmd;

--- 129 unchanged lines hidden (view full) ---

3849 /* XXX errors ignored */
3850 iicbus_start(IICBUS(bktr), bktr->remote_control_addr, 0 /* no timeout? */);
3851 iicbus_read(IICBUS(bktr), remote->data, 3, &read, IIC_LAST_READ, 0);
3852 iicbus_stop(IICBUS(bktr));
3853
3854 return;
3855}
3856
3857#else /* defined(__FreeBSD__) && (NSMBUS > 0) */
3858
3859/*
3860 * Program the i2c bus directly
3861 */
3862int
3863i2cWrite( bktr_ptr_t bktr, int addr, int byte1, int byte2 )
3864{
3865 u_long x;

--- 239 unchanged lines hidden (view full) ---

4105 i2c_read_byte(bktr,&(remote->data[0]), 0);
4106 i2c_read_byte(bktr,&(remote->data[1]), 0);
4107 i2c_read_byte(bktr,&(remote->data[2]), 0);
4108 i2c_stop(bktr);
4109
4110 return;
4111}
4112
4113#endif /* defined(__FreeBSD__) && (NSMBUS > 0) */
4114
4115
4116#if defined( I2C_SOFTWARE_PROBE )
4117
4118/*
4119 * we are keeping this around for any parts that we need to probe
4120 * but that CANNOT be probed via an i2c read.
4121 * this is necessary because the hardware i2c mechanism

--- 67 unchanged lines hidden ---