Date: Mon, 3 Nov 1997 06:11:06 +0100 (MET) From: Luigi Rizzo <luigi@labinfo.iet.unipi.it> To: multimedia@freebsd.org Subject: A small addition to the bt848 driver... Message-ID: <199711030511.GAA17013@labinfo.iet.unipi.it>
next in thread | raw e-mail | index | archive | help
Hi, yesterday I added a small piece of code to my version of the bt848 driver. It is an ioctl() which allows you to read/write peripherals hanging off the I2C bus of the Bt84 -- such as the tuner, the EEPROM, and the Teletext decoder. While I wrote this because am working on a teletext decode, i think this ioctl () will be useful to debug boards with new tuners etc. so I suggest it to be added in the standard driver. I have put the code within function tuner_ioctl() static int tuner_ioctl( bktr_ptr_t bktr, int unit, int cmd, caddr_t arg, struct proc* pr ) { ... case BT848_I2CWR: /* XXX */ { u_long par = *(u_long *)arg; u_char write = (par >> 24) & 0xff ; int i2c_addr = (par >> 16) & 0xff ; int i2c_port = (par >> 8) & 0xff ; u_long data = (par) & 0xff ; if (write) { i2cWrite( bktr, i2c_addr, i2c_port, data); } else { data = i2cRead( bktr, i2c_addr); } *(u_long *)arg = (par & 0xffffff00) | ( data & 0xff ); } break; and the definition of BT848_I2CWR is in /sys/i386/include/ioctl_bt848.h /* * b7-b0: data (read/write) * b15-b8: internal peripheral register (write) * b23-b16: i2c addr (write) * b31-b24: 1 = write, 0 = read */ #define BT848_I2CWR _IOWR('x', 57, u_long) /* i2c read-write */ Cheers Luigi -----------------------------+-------------------------------------- Luigi Rizzo | Dip. di Ingegneria dell'Informazione email: luigi@iet.unipi.it | Universita' di Pisa tel: +39-50-568533 | via Diotisalvi 2, 56126 PISA (Italy) fax: +39-50-568522 | http://www.iet.unipi.it/~luigi/ _____________________________|______________________________________
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199711030511.GAA17013>