[PATCH] xfree86: Remove i2c multimedia modules
Alex Deucher
alexdeucher at gmail.com
Mon Jul 21 07:29:50 PDT 2014
On Mon, Jul 21, 2014 at 10:21 AM, Adam Jackson <ajax at redhat.com> wrote:
> These came in with the GATOS merge I think. The only driver using them
> was radeon, and then only in UMS mode. The radeon driver dropped UMS
> support from the main branch about two years ago, the UMS branch hasn't
> been touched in about fifteen months, and does not build against 1.16 in
> any case, so this is all dead code.
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> hw/xfree86/i2c/Makefile.am | 36 +-
> hw/xfree86/i2c/bt829.c | 822 ----------------------------------------
> hw/xfree86/i2c/bt829.h | 103 -----
> hw/xfree86/i2c/bt829_module.c | 20 -
> hw/xfree86/i2c/fi1236.c | 686 ---------------------------------
> hw/xfree86/i2c/fi1236.h | 113 ------
> hw/xfree86/i2c/fi1236_module.c | 24 --
> hw/xfree86/i2c/msp3430.c | 779 -------------------------------------
> hw/xfree86/i2c/msp3430.h | 116 ------
> hw/xfree86/i2c/msp3430_module.c | 24 --
> hw/xfree86/i2c/tda8425.c | 83 ----
> hw/xfree86/i2c/tda8425.h | 44 ---
> hw/xfree86/i2c/tda8425_module.c | 24 --
> hw/xfree86/i2c/tda9850.c | 136 -------
> hw/xfree86/i2c/tda9850.h | 43 ---
> hw/xfree86/i2c/tda9850_module.c | 24 --
> hw/xfree86/i2c/tda9885.c | 100 -----
> hw/xfree86/i2c/tda9885.h | 63 ---
> hw/xfree86/i2c/tda9885_module.c | 24 --
> hw/xfree86/i2c/uda1380.c | 196 ----------
> hw/xfree86/i2c/uda1380.h | 81 ----
> hw/xfree86/i2c/uda1380_module.c | 24 --
> hw/xfree86/loader/loadmod.c | 1 -
> 23 files changed, 1 insertion(+), 3565 deletions(-)
> delete mode 100644 hw/xfree86/i2c/bt829.c
> delete mode 100644 hw/xfree86/i2c/bt829.h
> delete mode 100644 hw/xfree86/i2c/bt829_module.c
> delete mode 100644 hw/xfree86/i2c/fi1236.c
> delete mode 100644 hw/xfree86/i2c/fi1236.h
> delete mode 100644 hw/xfree86/i2c/fi1236_module.c
> delete mode 100644 hw/xfree86/i2c/msp3430.c
> delete mode 100644 hw/xfree86/i2c/msp3430.h
> delete mode 100644 hw/xfree86/i2c/msp3430_module.c
> delete mode 100644 hw/xfree86/i2c/tda8425.c
> delete mode 100644 hw/xfree86/i2c/tda8425.h
> delete mode 100644 hw/xfree86/i2c/tda8425_module.c
> delete mode 100644 hw/xfree86/i2c/tda9850.c
> delete mode 100644 hw/xfree86/i2c/tda9850.h
> delete mode 100644 hw/xfree86/i2c/tda9850_module.c
> delete mode 100644 hw/xfree86/i2c/tda9885.c
> delete mode 100644 hw/xfree86/i2c/tda9885.h
> delete mode 100644 hw/xfree86/i2c/tda9885_module.c
> delete mode 100644 hw/xfree86/i2c/uda1380.c
> delete mode 100644 hw/xfree86/i2c/uda1380.h
> delete mode 100644 hw/xfree86/i2c/uda1380_module.c
>
> diff --git a/hw/xfree86/i2c/Makefile.am b/hw/xfree86/i2c/Makefile.am
> index c311591..8bf795d 100644
> --- a/hw/xfree86/i2c/Makefile.am
> +++ b/hw/xfree86/i2c/Makefile.am
> @@ -1,43 +1,9 @@
> noinst_LTLIBRARIES = libi2c.la
>
> -multimediadir = $(moduledir)/multimedia
> -multimedia_LTLIBRARIES = \
> - bt829_drv.la \
> - fi1236_drv.la \
> - msp3430_drv.la \
> - tda8425_drv.la \
> - tda9850_drv.la \
> - tda9885_drv.la \
> - uda1380_drv.la
> -
> libi2c_la_SOURCES = xf86i2c.c
>
> AM_CPPFLAGS = $(XORG_INCS)
>
> AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
>
> -sdk_HEADERS = xf86i2c.h bt829.h fi1236.h msp3430.h tda8425.h tda9850.h tda9885.h uda1380.h i2c_def.h
> -
> -#
> -# i2c drivers
> -#
> -bt829_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
> -bt829_drv_la_SOURCES = bt829.c bt829.h bt829_module.c
> -
> -fi1236_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
> -fi1236_drv_la_SOURCES = fi1236.c fi1236.h fi1236_module.c tda9885.c
> -
> -msp3430_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
> -msp3430_drv_la_SOURCES = msp3430.c msp3430.h msp3430_module.c
> -
> -tda8425_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
> -tda8425_drv_la_SOURCES = tda8425.c tda8425.h tda8425_module.c
> -
> -tda9850_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
> -tda9850_drv_la_SOURCES = tda9850.c tda9850.h tda9850_module.c
> -
> -tda9885_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
> -tda9885_drv_la_SOURCES = tda9885.c tda9885.h tda9885_module.c
> -
> -uda1380_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
> -uda1380_drv_la_SOURCES = uda1380.c uda1380.h uda1380_module.c
> +sdk_HEADERS = xf86i2c.h i2c_def.h
> diff --git a/hw/xfree86/i2c/bt829.c b/hw/xfree86/i2c/bt829.c
> deleted file mode 100644
> index 991c26e..0000000
> --- a/hw/xfree86/i2c/bt829.c
> +++ /dev/null
> @@ -1,822 +0,0 @@
> -/* TODO: clean up/fix CC code */
> -
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include <stdlib.h>
> -#include <string.h>
> -#include <stdio.h>
> -
> -#include "xf86.h"
> -#include "xf86i2c.h"
> -#include "bt829.h"
> -#include "i2c_def.h"
> -
> -/* Changing the following settings (especially VCROP) may */
> -/* require modifying code that calls this driver. */
> -#define HCROP 0 /* amount to crop from the left and right edges */
> -#define VCROP 0 /* amount to crop from the top and bottom edges */
> -
> -#define BTVERSION (bt->id>>4)
> -
> -#define H(X) ( ((X)>>8) & 0xFF )
> -#define L(X) ( (X) & 0xFF )
> -
> -#define LIMIT(X,A,B) (((X)<(A)) ? (A) : ((X)>(B)) ? (B) : (X) )
> -
> -/* Bt829 family chip ID's */
> -#define BT815 0x02
> -#define BT817 0x06
> -#define BT819 0x07
> -#define BT827 0x0C
> -#define BT829 0x0E
> -
> -/* Bt829 registers */
> -#define STATUS 0x00 /* Device Status */
> -#define IFORM 0x01 /* Input Format */
> -#define TDEC 0x02 /* Temporal Decimation */
> -#define CROP 0x03 /* MSB Cropping */
> -#define VDELAY_LO 0x04 /* Vertical Delay */
> -#define VACTIVE_LO 0x05 /* Vertical Active */
> -#define HDELAY_LO 0x06 /* Horizontal Delay */
> -#define HACTIVE_LO 0x07 /* Horizontal Active */
> -#define HSCALE_HI 0x08 /* Horizontal Scaling */
> -#define HSCALE_LO 0x09 /* Horizontal Scaling */
> -#define BRIGHT 0x0A /* Brightness Control */
> -#define CONTROL 0x0B /* Miscellaneous Control */
> -#define CONTRAST_LO 0x0C /* Luma Gain (Contrast) */
> -#define SAT_U_LO 0x0D /* Chroma (U) Gain (Saturation) */
> -#define SAT_V_LO 0x0E /* Chroma (V) Gain (Saturation) */
> -#define HUE 0x0F /* Hue Control */
> -#define SCLOOP 0x10 /* SC Loop Control */
> -#define WC_UP 0x11 /* White Crush Up Count */
> -#define OFORM 0x12 /* Output Format */
> -#define VSCALE_HI 0x13 /* Vertical Scaling */
> -#define VSCALE_LO 0x14 /* Vertical Scaling */
> -#define TEST 0x15 /* Test Control */
> -#define VPOLE 0x16 /* Video Timing Polarity */
> -#define IDCODE 0x17 /* ID Code */
> -#define ADELAY 0x18 /* AGC Delay */
> -#define BDELAY 0x19 /* Burst Gate Delay */
> -#define ADC 0x1A /* ADC Interface */
> -#define VTC 0x1B /* Video Timing Control */
> -#define CC_STATUS 0x1C /* Extended Data Services/Closed Capt Status */
> -#define CC_DATA 0x1D /* Extended Data Services/Closed Capt Data */
> -#define WC_DN 0x1E /* White Crush Down Count */
> -#define SRESET 0x1F /* Software Reset */
> -#define P_IO 0x3F /* Programmable I/O */
> -
> -static CARD8
> -btread(BT829Ptr bt, CARD8 reg)
> -{
> - CARD8 v;
> -
> - I2C_WriteRead(&(bt->d), ®, 1, &v, 1);
> -
> - return v;
> -}
> -
> -static void
> -btwrite(BT829Ptr bt, CARD8 reg, CARD8 val)
> -{
> - CARD8 data[2];
> -
> - data[0] = reg;
> - data[1] = val;
> - I2C_WriteRead(&(bt->d), data, 2, NULL, 0);
> -}
> -
> -/*
> - * Register access
> - */
> -static void
> -btwrite_status(BT829Ptr bt)
> -{ /* STATUS */
> - btwrite(bt, STATUS, 0x00); /* clear */
> -}
> -
> -static void
> -btwrite_iform(BT829Ptr bt)
> -{ /* IFORM */
> - int xtsel;
> -
> - switch (bt->format) {
> - case BT829_NTSC:
> - case BT829_NTSC_JAPAN:
> - case BT829_PAL_M:
> - case BT829_PAL_N_COMB: /* gatos says xtsel = 2 */
> - xtsel = 1;
> - break;
> - case BT829_PAL:
> - case BT829_PAL_N:
> - case BT829_SECAM:
> - xtsel = 2;
> - break;
> - default: /* shouldn't get here */
> - xtsel = 3; /* hardware default */
> - break;
> - }
> -
> - btwrite(bt, IFORM, (bt->mux << 5) | (xtsel << 3) | bt->format);
> -}
> -
> -static void
> -btwrite_tdec(BT829Ptr bt)
> -{ /* TDEC */
> - /* use default */
> -}
> -
> -static void
> -btwrite_crop(BT829Ptr bt)
> -{ /* CROP */
> - btwrite(bt, CROP, (H(bt->vdelay) << 6) | (H(bt->vactive) << 4) |
> - (H(bt->hdelay) << 2) | H(bt->width));
> -}
> -
> -static void
> -btwrite_vdelay_lo(BT829Ptr bt)
> -{ /* VDELAY_LO */
> - btwrite(bt, VDELAY_LO, L(bt->vdelay));
> -}
> -
> -static void
> -btwrite_vactive_lo(BT829Ptr bt)
> -{ /* VACTIVE_LO */
> - btwrite(bt, VACTIVE_LO, L(bt->vactive));
> -}
> -
> -static void
> -btwrite_hdelay_lo(BT829Ptr bt)
> -{ /* HDELAY_LO */
> - btwrite(bt, HDELAY_LO, L(bt->hdelay));
> -}
> -
> -static void
> -btwrite_hactive_lo(BT829Ptr bt)
> -{ /* HACTIVE_LO */
> - btwrite(bt, HACTIVE_LO, L(bt->width));
> -}
> -
> -static void
> -btwrite_hscale_hi(BT829Ptr bt)
> -{ /* HSCALE_HI */
> - btwrite(bt, HSCALE_HI, H(bt->hscale));
> -}
> -
> -static void
> -btwrite_hscale_lo(BT829Ptr bt)
> -{ /* HSCALE_LO */
> - btwrite(bt, HSCALE_LO, L(bt->hscale));
> -}
> -
> -static void
> -btwrite_bright(BT829Ptr bt)
> -{ /* BRIGHT */
> - btwrite(bt, BRIGHT, bt->brightness);
> -}
> -
> -static void
> -btwrite_control(BT829Ptr bt)
> -{ /* CONTROL */
> - int ldec;
> -
> - /* The data sheet says ldec should always be 0 for SECAM */
> - /* but the picture quality is better with ldec = 1 */
> - ldec = (bt->width > 360); /* gatos says 384 */
> -
> - btwrite(bt, CONTROL, ((bt->mux == bt->svideo_mux) ? 0xC0 : 0x00) | /* LNOTCH and COMP */
> - (ldec << 5) | (H(bt->contrast) << 2) | (H(bt->sat_u) << 1) | H(bt->
> - sat_v));
> -}
> -
> -static void
> -btwrite_contrast_lo(BT829Ptr bt)
> -{ /* CONTRAST_LO */
> - btwrite(bt, CONTRAST_LO, L(bt->contrast));
> -}
> -
> -static void
> -btwrite_sat_u_lo(BT829Ptr bt)
> -{ /* SAT_U_LO */
> - btwrite(bt, SAT_U_LO, L(bt->sat_u));
> -}
> -
> -static void
> -btwrite_sat_v_lo(BT829Ptr bt)
> -{ /* SAT_V_LO */
> - btwrite(bt, SAT_V_LO, L(bt->sat_v));
> -}
> -
> -static void
> -btwrite_hue(BT829Ptr bt)
> -{ /* HUE */
> - btwrite(bt, HUE, bt->hue);
> -}
> -
> -static void
> -btwrite_scloop(BT829Ptr bt)
> -{ /* SCLOOP */
> - if (BTVERSION >= BT827) {
> - btwrite(bt, SCLOOP, (bt->format == BT829_SECAM) ? 0x10 : 0x00 /* QCIF or AUTO */
> - );
> - }
> -}
> -
> -static void
> -btwrite_wc_up(BT829Ptr bt)
> -{ /* WC_UP */
> - if (BTVERSION >= BT827) {
> - /* use default */
> - }
> -}
> -
> -static void
> -btwrite_oform(BT829Ptr bt)
> -{ /* OFORM */
> - btwrite(bt, OFORM, (bt->code << 3) | (bt->len << 2) | 0x02 /* RANGE = 0, CORE = 0, VBI_FRAME = 0, OES = 2 (default) */
> - );
> -}
> -
> -static void
> -btwrite_vscale_hi(BT829Ptr bt)
> -{ /* VSCALE_HI */
> - btwrite(bt, VSCALE_HI, H(bt->vscale) | 0x60 /* YCOMB = 0, COMB = 1, INT = 1 (default) */
> - );
> -}
> -
> -static void
> -btwrite_vscale_lo(BT829Ptr bt)
> -{ /* VSCALE_LO */
> - btwrite(bt, VSCALE_LO, L(bt->vscale));
> -}
> -
> -/* TEST should not be written to */
> -
> -static void
> -btwrite_vpole(BT829Ptr bt)
> -{ /* VPOLE */
> - btwrite(bt, VPOLE, (bt->out_en << 7));
> -}
> -
> -/* IDCODE is read only */
> -
> -static void
> -btwrite_adelay(BT829Ptr bt)
> -{ /* ADELAY */
> - switch (bt->format) {
> - case BT829_NTSC:
> - case BT829_NTSC_JAPAN:
> - case BT829_PAL_M:
> - btwrite(bt, ADELAY, 104);
> - break;
> - case BT829_PAL:
> - case BT829_PAL_N:
> - case BT829_SECAM:
> - case BT829_PAL_N_COMB:
> - btwrite(bt, ADELAY, 127);
> - break;
> - default: /* shouldn't get here */
> - btwrite(bt, ADELAY, 104); /* hardware default */
> - break;
> - }
> -}
> -
> -static void
> -btwrite_bdelay(BT829Ptr bt)
> -{ /* BDELAY */
> - switch (bt->format) {
> - case BT829_NTSC:
> - case BT829_NTSC_JAPAN:
> - case BT829_PAL_M:
> - btwrite(bt, BDELAY, 93);
> - break;
> - case BT829_PAL:
> - case BT829_PAL_N:
> - case BT829_PAL_N_COMB:
> - btwrite(bt, BDELAY, 114);
> - break;
> - case BT829_SECAM:
> - btwrite(bt, BDELAY, 160);
> - break;
> - default: /* shouldn't get here */
> - btwrite(bt, BDELAY, 93); /* hardware default */
> - break;
> - }
> -}
> -
> -static void
> -btwrite_adc(BT829Ptr bt)
> -{ /* ADC */
> - btwrite(bt, ADC, bt->mux == bt->svideo_mux ? 0x80 : 0x82); /* CSLEEP = 0 or 1 */
> -}
> -
> -static void
> -btwrite_vtc(BT829Ptr bt)
> -{ /* VTC */
> - int vfilt = 0; /* hardware default */
> -
> - if (BTVERSION > BT827) { /* gatos says >= BT827 */
> - switch (bt->format) {
> - case BT829_NTSC:
> - case BT829_NTSC_JAPAN:
> - case BT829_PAL_M:
> - case BT829_PAL_N_COMB: /* gatos groups with BT829_PAL */
> - if (bt->width <= 360)
> - vfilt = 1; /* gatos says <= 240 */
> - if (bt->width <= 180)
> - vfilt = 2; /* gatos says <= 120 */
> - if (bt->width <= 90)
> - vfilt = 3; /* gatos says <= 60 */
> - break;
> - case BT829_PAL:
> - case BT829_PAL_N:
> - case BT829_SECAM:
> - if (bt->width <= 384)
> - vfilt = 1;
> - if (bt->width <= 192)
> - vfilt = 2;
> - if (bt->width <= 96)
> - vfilt = 3;
> - break;
> - default: /* shouldn't get here */
> - break; /* use hardware default */
> - }
> - btwrite(bt, VTC, (bt->vbien << 4) | (bt->vbifmt << 3) | vfilt);
> - }
> -}
> -
> -static void
> -btwrite_cc_status(BT829Ptr bt)
> -{ /* CC_STATUS *//* FIXME: ATI specific */
> - if (BTVERSION >= BT827) {
> - if (bt->ccmode == 0)
> - btwrite(bt, CC_STATUS, 0x00);
> - /* 0x40 is activate to set the CCVALID line. Not required yet */
> - else
> - btwrite(bt, CC_STATUS, (bt->ccmode << 4) | 0x40);
> - }
> -}
> -
> -/* CC_DATA is read only */
> -
> -static void
> -btwrite_wc_dn(BT829Ptr bt)
> -{ /* WC_DN */
> - if (BTVERSION >= BT827) {
> - /* use default */
> - }
> -}
> -
> -static void
> -bt_reset(BT829Ptr bt)
> -{ /* SRESET */
> - btwrite(bt, SRESET, 0x0); /* Reset all registers */
> -}
> -
> -static void
> -btwrite_p_io(BT829Ptr bt)
> -{ /* P_IO */
> - if (BTVERSION >= BT827) {
> - btwrite(bt, P_IO, bt->p_io);
> - }
> -}
> -
> -/*
> - * Deal with dependencies
> - */
> -static void
> -propagate_changes(BT829Ptr bt)
> -{
> - CARD16 hdelay, unscaled_hdelay, vdelay, hscale, vscale;
> - int htotal, vactive;
> -
> - switch (bt->format) {
> - case BT829_NTSC:
> - case BT829_NTSC_JAPAN:
> - case BT829_PAL_M:
> - vdelay = 22;
> - htotal = 754;
> - vactive = 480;
> - unscaled_hdelay = 135;
> - break;
> - case BT829_PAL:
> - case BT829_PAL_N:
> - vdelay = (bt->tunertype == 5) ? 34 : 22;
> - htotal = 922;
> - vactive = 576;
> - unscaled_hdelay = 186;
> - break;
> - case BT829_SECAM:
> - vdelay = 34;
> - htotal = 922;
> - vactive = 576;
> - unscaled_hdelay = 186;
> - break;
> - case BT829_PAL_N_COMB:
> - vdelay = (bt->tunertype == 5) ? 34 : 22; /* windows says 22 */
> - htotal = 754; /* gatos and windows say 922 */
> - vactive = 576;
> - unscaled_hdelay = 135; /* gatos and windows say 186 */
> - break;
> - default: /* shouldn't get here */
> - vdelay = 22; /* hardware default */
> - htotal = 754;
> - vactive = 480; /* hardware default */
> - unscaled_hdelay = 135;
> - break;
> - }
> -
> - bt->htotal = htotal; /* Used for error checking in bt829_SetCaptSize */
> -
> - hscale = 4096 * htotal / (bt->width + 2 * HCROP) - 4096;
> - hdelay =
> - (HCROP + (bt->width + 2 * HCROP) * unscaled_hdelay / htotal) & 0x3FE;
> -
> - vactive = vactive - 2 * VCROP;
> - vdelay = vdelay + VCROP;
> - vscale = (0x10000 - (512 * vactive / bt->height - 512)) & 0x1FFF;
> -
> - if ((hdelay != bt->hdelay) || (vdelay != bt->vdelay) ||
> - (vactive != bt->vactive) || (hscale != bt->hscale) ||
> - (vscale != bt->vscale)) {
> - bt->hdelay = hdelay;
> - bt->vdelay = vdelay;
> - bt->vactive = vactive;
> - bt->hscale = hscale;
> - bt->vscale = vscale;
> - btwrite_crop(bt);
> - btwrite_vdelay_lo(bt);
> - btwrite_vactive_lo(bt);
> - btwrite_hdelay_lo(bt);
> - btwrite_hscale_hi(bt);
> - btwrite_hscale_lo(bt);
> - btwrite_control(bt);
> - btwrite_vscale_hi(bt);
> - btwrite_vscale_lo(bt);
> - }
> -}
> -
> -static void
> -write_all(BT829Ptr bt)
> -{
> - bt_reset(bt);
> - propagate_changes(bt); /* ensure consistency */
> - btwrite_iform(bt);
> - btwrite_tdec(bt);
> - btwrite_crop(bt);
> - btwrite_vdelay_lo(bt);
> - btwrite_vactive_lo(bt);
> - btwrite_hdelay_lo(bt);
> - btwrite_hactive_lo(bt);
> - btwrite_hscale_hi(bt);
> - btwrite_hscale_lo(bt);
> - btwrite_bright(bt);
> - btwrite_control(bt);
> - btwrite_contrast_lo(bt);
> - btwrite_sat_u_lo(bt);
> - btwrite_sat_v_lo(bt);
> - btwrite_hue(bt);
> - btwrite_scloop(bt);
> - btwrite_wc_up(bt);
> - btwrite_oform(bt);
> - btwrite_vscale_hi(bt);
> - btwrite_vscale_lo(bt);
> - btwrite_vpole(bt);
> - btwrite_adelay(bt);
> - btwrite_bdelay(bt);
> - btwrite_adc(bt);
> - btwrite_vtc(bt);
> - /* btwrite_cc_status(bt); *//* FIXME: CC code needs cleaning */
> - btwrite_wc_dn(bt);
> - btwrite_p_io(bt);
> -}
> -
> -/*
> - * Public functions
> - */
> -BT829Ptr
> -bt829_Detect(I2CBusPtr b, I2CSlaveAddr addr)
> -{
> - BT829Ptr bt;
> - I2CByte a;
> - char *devname;
> -
> - bt = calloc(1, sizeof(BT829Rec));
> - if (bt == NULL)
> - return NULL;
> - bt->d.DevName = strdup("BT829 video decoder");
> - bt->d.SlaveAddr = addr;
> - bt->d.pI2CBus = b;
> - bt->d.NextDev = NULL;
> - bt->d.StartTimeout = b->StartTimeout;
> - bt->d.BitTimeout = b->BitTimeout;
> - bt->d.AcknTimeout = b->AcknTimeout;
> - bt->d.ByteTimeout = b->ByteTimeout;
> -
> - if (!I2C_WriteRead(&(bt->d), NULL, 0, &a, 1)) {
> - free(bt);
> - return NULL;
> - }
> -
> - bt->id = btread(bt, IDCODE);
> -
> - free((void *) bt->d.DevName);
> - bt->d.DevName = devname = calloc(200, sizeof(char));
> - switch (BTVERSION) {
> - case BT815:
> - sprintf(devname, "bt815a video decoder, revision %d",
> - bt->id & 0xf);
> - break;
> - case BT817:
> - sprintf(devname, "bt817a video decoder, revision %d",
> - bt->id & 0xf);
> - break;
> - case BT819:
> - sprintf(devname, "bt819a video decoder, revision %d",
> - bt->id & 0xf);
> - break;
> - case BT827:
> - sprintf(devname, "bt827a/b video decoder, revision %d",
> - bt->id & 0xf);
> - break;
> - case BT829:
> - sprintf(devname, "bt829a/b video decoder, revision %d",
> - bt->id & 0xf);
> - break;
> - default:
> - sprintf(devname,
> - "bt8xx/unknown video decoder version %d, revision %d",
> - bt->id >> 4, bt->id & 0xf);
> - break;
> - }
> -
> - /* set default parameters */
> - if (!I2CDevInit(&(bt->d))) {
> - free(bt);
> - return NULL;
> - }
> -
> - bt->tunertype = 1;
> -
> - bt->brightness = 0; /* hardware default */
> - bt->ccmode = 0;
> - bt->code = 0; /* hardware default */
> - bt->contrast = 216; /* hardware default */
> - bt->format = BT829_NTSC;
> - bt->height = 480; /* hardware default for vactive */
> - bt->hue = 0; /* hardware default */
> - bt->len = 1; /* hardware default */
> - bt->mux = BT829_MUX0; /* hardware default */
> - bt->out_en = 0; /* hardware default */
> - bt->p_io = 0; /* hardware default */
> - bt->sat_u = 254; /* hardware default */
> - bt->sat_v = 180; /* hardware default */
> - bt->vbien = 0; /* hardware default */
> - bt->vbifmt = 0; /* hardware default */
> - bt->width = 640; /* hardware default for hactive */
> -
> - bt->hdelay = 120; /* hardware default */
> - bt->hscale = 684; /* hardware default */
> - bt->vactive = 480; /* hardware default */
> - bt->vdelay = 22; /* hardware default */
> - bt->vscale = 0; /* hardware default */
> -
> - bt->htotal = 754; /* NTSC */
> - bt->svideo_mux = 0; /* no s-video */
> -
> - return bt;
> -}
> -
> -int
> -bt829_ATIInit(BT829Ptr bt)
> -{
> - bt->code = 1;
> - bt->len = 0;
> - bt->vbien = 1;
> - bt->vbifmt = 1;
> - bt->svideo_mux = BT829_MUX1;
> -
> - write_all(bt);
> -
> - return 0;
> -}
> -
> -int
> -bt829_SetFormat(BT829Ptr bt, CARD8 format)
> -{
> - if ((format < 1) || (format > 7))
> - return -1;
> - if ((BTVERSION <= BT819) && (format != BT829_NTSC) && (format != BT829_PAL))
> - return -1;
> - if (format == bt->format)
> - return 0;
> - bt->format = format;
> - propagate_changes(bt);
> - btwrite_iform(bt);
> - btwrite_scloop(bt);
> - btwrite_adelay(bt);
> - btwrite_bdelay(bt);
> - btwrite_vtc(bt);
> - return 0;
> -}
> -
> -int
> -bt829_SetMux(BT829Ptr bt, CARD8 mux)
> -{
> - if ((mux < 1) || (mux > 3))
> - return -1;
> - if (mux == bt->mux)
> - return 0;
> - bt->mux = mux;
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_iform(bt);
> - btwrite_control(bt);
> - btwrite_adc(bt);
> - return 0;
> -}
> -
> -void
> -bt829_SetBrightness(BT829Ptr bt, int brightness)
> -{
> - brightness = LIMIT(brightness, -1000, 999); /* ensure -128 <= brightness <= 127 below */
> - brightness = (128 * brightness) / 1000;
> - if (brightness == bt->brightness)
> - return;
> - bt->brightness = brightness;
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_bright(bt);
> -}
> -
> -void
> -bt829_SetContrast(BT829Ptr bt, int contrast)
> -{
> - contrast = LIMIT(contrast, -1000, 1000);
> - contrast = (216 * (contrast + 1000)) / 1000;
> - if (contrast == bt->contrast)
> - return;
> - bt->contrast = contrast;
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_control(bt);
> - btwrite_contrast_lo(bt);
> -}
> -
> -void
> -bt829_SetSaturation(BT829Ptr bt, int saturation)
> -{
> - CARD16 sat_u, sat_v;
> -
> - saturation = LIMIT(saturation, -1000, 1000);
> - sat_u = (254 * (saturation + 1000)) / 1000;
> - sat_v = (180 * (saturation + 1000)) / 1000;
> - if ((sat_u == bt->sat_u) && (sat_v == bt->sat_v))
> - return;
> - bt->sat_u = sat_u;
> - bt->sat_v = sat_v;
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_control(bt);
> - btwrite_sat_u_lo(bt);
> - btwrite_sat_v_lo(bt);
> -}
> -
> -void
> -bt829_SetTint(BT829Ptr bt, int hue)
> -{
> - hue = LIMIT(hue, -1000, 999); /* ensure -128 <= hue <= 127 below */
> - hue = (128 * hue) / 1000;
> - if (hue == bt->hue)
> - return;
> - bt->hue = hue;
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_hue(bt);
> -}
> -
> -int
> -bt829_SetCaptSize(BT829Ptr bt, int width, int height)
> -{
> - if ((width > bt->htotal - 2 * HCROP) ||
> - (16 * width < bt->htotal - 32 * HCROP))
> - return -1;
> - if ((height > bt->vactive) || (16 * height < bt->vactive))
> - return -1;
> - if ((width == bt->width) && (height == bt->height))
> - return 0;
> - bt->width = width;
> - bt->height = height;
> - propagate_changes(bt);
> - btwrite_crop(bt);
> - btwrite_hactive_lo(bt);
> - btwrite_control(bt);
> - btwrite_vtc(bt);
> - return 0;
> -}
> -
> -int
> -bt829_SetCC(BT829Ptr bt)
> -{ /* FIXME: should take ccmode as a parameter */
> - if (BTVERSION < BT827)
> - return -1; /* can't do it */
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_cc_status(bt);
> - /* we write to STATUS to reset the CCVALID flag */
> - if (bt->ccmode != 0)
> - btwrite_status(bt);
> - return 0;
> -}
> -
> -void
> -bt829_SetOUT_EN(BT829Ptr bt, BOOL out_en)
> -{
> - out_en = (out_en != 0);
> - if (out_en == bt->out_en)
> - return;
> - bt->out_en = out_en;
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_vpole(bt);
> -}
> -
> -void
> -bt829_SetP_IO(BT829Ptr bt, CARD8 p_io)
> -{
> - if (p_io == bt->p_io)
> - return;
> - bt->p_io = p_io;
> - /* propagate_changes(bt); *//* no dependencies */
> - btwrite_p_io(bt);
> -}
> -
> -#define BTREAD(R) btread(bt,(R))
> -
> -#if 0
> -
> -void
> -bt829_getCCdata(BT829Ptr bt, struct CCdata *data)
> -{
> - CARD8 status;
> -
> - data->num_valid = 0;
> - /* wait for buffer to be half full (means 8/16 bytes)
> - * either 4 (one of CC/EDS) or 2 (both CC/EDS) frames */
> - if (!(BTREAD(STATUS) & 0x04))
> - return; /* could comment this line */
> - for (; data->num_valid < CC_FIFO_SIZE; data->num_valid++) {
> - status = BTREAD(CC_STATUS);
> - if (!(status & 0x04))
> - break;
> - data->data[data->num_valid] = BTREAD(CC_DATA) & 0x7f;
> - /* stripped high bit (parity) */
> - data->status[data->num_valid] = (CCS_EDS * ((status & 0x02) >> 1)) |
> - (CCS_HIGH * (status & 0x01)) |
> - (CCS_OVER * ((status & 0x08) >> 3)) |
> - (CCS_PAR * ((status & 0x80) >> 7));
> - }
> - btwrite(bt, STATUS, 0x00); /* Reset CCVALID status bit */
> - return;
> -}
> -
> -#endif
> -
> -/* ------------------------------------------------------------------------ */
> -/* Debug and report routines */
> -
> -#define DUMPREG(REG) \
> - xf86DrvMsg(bt->d.pI2CBus->scrnIndex,X_INFO," %-12s (0x%02X) = 0x%02X\n", \
> - #REG,REG,BTREAD(REG))
> -
> -/*static void bt829_dumpregs(BT829Ptr bt)
> -{
> - DUMPREG(STATUS);
> - DUMPREG(IFORM);
> - DUMPREG(TDEC);
> - DUMPREG(CROP);
> - DUMPREG(VDELAY_LO);
> - DUMPREG(VACTIVE_LO);
> - DUMPREG(HDELAY_LO);
> - DUMPREG(HACTIVE_LO);
> - DUMPREG(HSCALE_HI);
> - DUMPREG(HSCALE_LO);
> - DUMPREG(BRIGHT);
> - DUMPREG(CONTROL);
> - DUMPREG(CONTRAST_LO);
> - DUMPREG(SAT_U_LO);
> - DUMPREG(SAT_V_LO);
> - DUMPREG(HUE);
> - if (BTVERSION >= BT827) {
> - DUMPREG(SCLOOP);
> - DUMPREG(WC_UP) ; }
> - DUMPREG(OFORM);
> - DUMPREG(VSCALE_HI);
> - DUMPREG(VSCALE_LO);
> - DUMPREG(TEST);
> - DUMPREG(VPOLE);
> - DUMPREG(IDCODE);
> - DUMPREG(ADELAY);
> - DUMPREG(BDELAY);
> - DUMPREG(ADC);
> - if (BTVERSION >= BT827) {
> - DUMPREG(VTC);
> - DUMPREG(CC_STATUS);
> - DUMPREG(CC_DATA);
> - DUMPREG(WC_DN);
> - DUMPREG(P_IO) ; }
> -}*/
> diff --git a/hw/xfree86/i2c/bt829.h b/hw/xfree86/i2c/bt829.h
> deleted file mode 100644
> index 2709bee..0000000
> --- a/hw/xfree86/i2c/bt829.h
> +++ /dev/null
> @@ -1,103 +0,0 @@
> -#ifndef __BT829_H__
> -#define __BT829_H__
> -
> -#include "xf86i2c.h"
> -
> -typedef struct {
> - int tunertype; /* Must be set before init */
> - /* Private variables */
> - I2CDevRec d;
> -
> - CARD8 brightness;
> - CARD8 ccmode;
> - CARD8 code;
> - CARD16 contrast;
> - CARD8 format;
> - int height;
> - CARD8 hue;
> - CARD8 len;
> - CARD8 mux;
> - CARD8 out_en;
> - CARD8 p_io;
> - CARD16 sat_u;
> - CARD16 sat_v;
> - CARD8 vbien;
> - CARD8 vbifmt;
> - int width;
> -
> - CARD16 hdelay;
> - CARD16 hscale;
> - CARD16 vactive;
> - CARD16 vdelay;
> - CARD16 vscale;
> -
> - CARD16 htotal;
> - CARD8 id;
> - CARD8 svideo_mux;
> -} BT829Rec, *BT829Ptr;
> -
> -#define xf86_bt829_Detect bt829_Detect
> -extern _X_EXPORT BT829Ptr bt829_Detect(I2CBusPtr b, I2CSlaveAddr addr);
> -
> -/* ATI card specific initialization */
> -#define BT829_ATI_ADDR_1 0x8A
> -#define BT829_ATI_ADDR_2 0x88
> -
> -#define xf86_bt829_ATIInit bt829_ATIInit
> -extern _X_EXPORT int bt829_ATIInit(BT829Ptr bt);
> -
> -#define BT829_NTSC 1 /* NTSC-M */
> -#define BT829_NTSC_JAPAN 2 /* NTSC-Japan */
> -#define BT829_PAL 3 /* PAL-B,D,G,H,I */
> -#define BT829_PAL_M 4 /* PAL-M */
> -#define BT829_PAL_N 5 /* PAL-N */
> -#define BT829_SECAM 6 /* SECAM */
> -#define BT829_PAL_N_COMB 7 /* PAL-N combination */
> -
> -#define xf86_bt829_SetFormat bt829_SetFormat
> -extern _X_EXPORT int bt829_SetFormat(BT829Ptr bt, CARD8 format);
> -
> -#define BT829_MUX2 1 /* ATI -> composite video */
> -#define BT829_MUX0 2 /* ATI -> tv tuner */
> -#define BT829_MUX1 3 /* ATI -> s-video */
> -
> -#define xf86_bt829_SetMux bt829_SetMux
> -extern _X_EXPORT int bt829_SetMux(BT829Ptr bt, CARD8 mux);
> -
> -#define xf86_bt829_SetCaptSize bt829_SetCaptSize
> -extern _X_EXPORT int bt829_SetCaptSize(BT829Ptr bt, int width, int height);
> -
> -#define xf86_bt829_SetBrightness bt829_SetBrightness
> -extern _X_EXPORT void bt829_SetBrightness(BT829Ptr bt, int brightness);
> -
> -#define xf86_bt829_SetContrast bt829_SetContrast
> -extern _X_EXPORT void bt829_SetContrast(BT829Ptr bt, int contrast);
> -
> -#define xf86_bt829_SetSaturation bt829_SetSaturation
> -extern _X_EXPORT void bt829_SetSaturation(BT829Ptr bt, int saturation);
> -
> -#define xf86_bt829_SetTint bt829_SetTint
> -extern _X_EXPORT void bt829_SetTint(BT829Ptr bt, int hue); /* Hue */
> -
> -#define xf86_bt829_SetOUT_EN bt829_SetOUT_EN
> -extern _X_EXPORT void bt829_SetOUT_EN(BT829Ptr bt, BOOL out_en); /* VPOLE register */
> -
> -#define xf86_bt829_SetP_IO bt829_SetP_IO
> -extern _X_EXPORT void bt829_SetP_IO(BT829Ptr bt, CARD8 p_io); /* P_IO register */
> -
> -extern _X_EXPORT int bt829_SetCC(BT829Ptr bt);
> -
> -#define BT829SymbolsList \
> - "bt829_Detect", \
> - "bt829_ATIInit", \
> - "bt829_SetFormat", \
> - "bt829_SetMux", \
> - "bt829_SetBrightness", \
> - "bt829_SetContrast", \
> - "bt829_SetSaturation", \
> - "bt829_SetTint", \
> - "bt829_SetCaptSize", \
> - "bt829_SetOUT_EN", \
> - "bt829_SetP_IO"
> -
> -#endif
> diff --git a/hw/xfree86/i2c/bt829_module.c b/hw/xfree86/i2c/bt829_module.c
> deleted file mode 100644
> index c8a6ac6..0000000
> --- a/hw/xfree86/i2c/bt829_module.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86Module.h"
> -
> -static XF86ModuleVersionInfo bt829VersRec = {
> - "bt829",
> - MODULEVENDORSTRING,
> - MODINFOSTRING1,
> - MODINFOSTRING2,
> - XORG_VERSION_CURRENT,
> - 1, 0, 0,
> - ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */
> - ABI_VIDEODRV_VERSION,
> - MOD_CLASS_NONE,
> - {0, 0, 0, 0}
> -};
> -
> -_X_EXPORT XF86ModuleData bt829ModuleData = { &bt829VersRec, NULL, NULL };
> diff --git a/hw/xfree86/i2c/fi1236.c b/hw/xfree86/i2c/fi1236.c
> deleted file mode 100644
> index ebd1454..0000000
> --- a/hw/xfree86/i2c/fi1236.c
> +++ /dev/null
> @@ -1,686 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include <unistd.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <math.h>
> -
> -#include "xf86.h"
> -#include "xf86i2c.h"
> -#include "fi1236.h"
> -#include "tda9885.h"
> -#include "i2c_def.h"
> -
> -#define NUM_TUNERS 8
> -
> -const FI1236_parameters tuner_parms[NUM_TUNERS] = {
> - /* 0 - FI1236 */
> - {733, 884, 12820, 2516, 7220, 0xA2, 0x94, 0x34, 0x8e},
> - /* !!!based on documentation - it should be:
> - {733, 16*55.25, 16*801.25, 16*160, 16*454, 0xA0, 0x90, 0x30, 0x8e}, */
> -
> - /* 1 - FI1216 */
> - {623, 16 * 48.75, 16 * 855.25, 16 * 170, 16 * 450, 0xA0, 0x90, 0x30, 0x8e},
> - /* 2 - TEMIC FN5AL */
> - {623, 16 * 45.75, 16 * 855.25, 16 * 169, 16 * 454, 0xA0, 0x90, 0x30, 0x8e},
> - /* 3 - MT2032.. */
> - {733, 768, 13760, 0, 0, 0, 0, 0, 0},
> - /* 4 - FI1246 */
> - {623, 16 * 45.75, 16 * 855.25, 16 * 170, 16 * 450, 0xA0, 0x90, 0x30, 0x8e},
> - /* 5 - FI1256 */
> - {623, 16 * 49.75, 16 * 863.25, 16 * 170, 16 * 450, 0xA0, 0x90, 0x30, 0x8e},
> - /* 6 - FI1236W */
> - /*{ 733, 884, 12820, 2516, 7220, 0x1, 0x2, 0x4, 0x8e }, */
> - {732, 16 * 55.25, 16 * 801.25, 16 * 160, 16 * 442, 0x1, 0x2, 0x4, 0x8e},
> - /* 7 - FM1216ME */
> - {623, 16 * 48.25, 16 * 863.25, 16 * 158.00, 16 * 442.00, 0x1, 0x2, 0x4, 0x8e}
> -};
> -
> -FI1236Ptr
> -Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr)
> -{
> - FI1236Ptr f;
> - I2CByte a;
> -
> - f = calloc(1, sizeof(FI1236Rec));
> - if (f == NULL)
> - return NULL;
> - f->d.DevName = strdup("FI12xx Tuner");
> - f->d.SlaveAddr = addr;
> - f->d.pI2CBus = b;
> - f->d.NextDev = NULL;
> - f->d.StartTimeout = b->StartTimeout;
> - f->d.BitTimeout = b->BitTimeout;
> - f->d.AcknTimeout = b->AcknTimeout;
> - f->d.ByteTimeout = b->ByteTimeout;
> - f->type = TUNER_TYPE_FI1236;
> - f->afc_timer_installed = FALSE;
> - f->last_afc_hint = TUNER_OFF;
> - f->video_if = 45.7812;
> -
> - if (!I2C_WriteRead(&(f->d), NULL, 0, &a, 1)) {
> - free(f);
> - return NULL;
> - }
> - FI1236_set_tuner_type(f, TUNER_TYPE_FI1236);
> - if (!I2CDevInit(&(f->d))) {
> - free(f);
> - return NULL;
> - }
> - return f;
> -}
> -
> -static void
> -MT2032_dump_parameters(FI1236Ptr f, MT2032_parameters * m)
> -{
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: input f_rf=%g f_if1=%g f_if2=%g f_ref=%g f_ifbw=%g f_step=%g\n",
> - m->f_rf, m->f_if1, m->f_if2, m->f_ref, m->f_ifbw, m->f_step);
> -
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: computed f_lo1=%g f_lo2=%g LO1I=%d LO2I=%d SEL=%d STEP=%d NUM=%d\n",
> - m->f_lo1, m->f_lo2, m->LO1I, m->LO2I, m->SEL, m->STEP, m->NUM);
> -}
> -
> -static void
> -MT2032_getid(FI1236Ptr f)
> -{
> - CARD8 out[4];
> - CARD8 in;
> -
> - in = 0x11;
> - I2C_WriteRead(&(f->d), (I2CByte *) &in, 1, out, 4);
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: Company code 0x%02x%02x, part code 0x%02x, revision code 0x%02x\n",
> - out[0], out[1], out[2], out[3]);
> -
> -}
> -
> -/* might be buggy */
> -#if 0
> -static void
> -MT2032_shutdown(FI1236Ptr f)
> -{
> - CARD8 data[10];
> -
> - data[0] = 0x00; /* start with register 0x00 */
> - data[1] = 0x1A;
> - data[2] = 0x44;
> - data[3] = 0x20;
> -
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 4, NULL, 0);
> -
> - data[0] = 0x05; /* now start with register 0x05 */
> - data[1] = 0xD7;
> - data[2] = 0x14;
> - data[3] = 0x05;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 4, NULL, 0);
> -
> - data[0] = 0x0B; /* now start with register 0x05 */
> - data[1] = 0x8F;
> - data[2] = 0x07;
> - data[3] = 0x43;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 4, NULL, 0);
> -
> - usleep(15000);
> -}
> -#endif
> -
> -static void MT2032_dump_status(FI1236Ptr f);
> -
> -static void
> -MT2032_init(FI1236Ptr f)
> -{
> - CARD8 data[10];
> - CARD8 value;
> - CARD8 xogc = 0x00;
> -
> - MT2032_getid(f);
> -
> - data[0] = 0x02; /* start with register 0x02 */
> - data[1] = 0xFF;
> - data[2] = 0x0F;
> - data[3] = 0x1F;
> -
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 4, NULL, 0);
> -
> - data[0] = 0x06; /* now start with register 0x06 */
> - data[1] = 0xE4;
> - data[2] = 0x8F;
> - data[3] = 0xC3;
> - data[4] = 0x4E;
> - data[5] = 0xEC;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 6, NULL, 0);
> -
> - data[0] = 0x0d; /* now start with register 0x0d */
> - data[1] = 0x32;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 2, NULL, 0);
> -
> - while (1) {
> - usleep(15000); /* wait 15 milliseconds */
> -
> - data[0] = 0x0e; /* register number 7, status */
> - value = 0xFF;
> - if (!I2C_WriteRead(&(f->d), (I2CByte *) data, 1, &value, 1))
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: failed to read XOK\n");
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: XOK=%d\n", value & 0x01);
> - if (value & 1)
> - break;
> -
> - data[0] = 0x07;
> - if (!I2C_WriteRead(&(f->d), (I2CByte *) data, 1, &value, 1))
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: failed to read XOGC\n");
> -
> - xogc = value & 0x7;
> - if (xogc == 4)
> - break; /* XOGC has reached 4.. stop */
> - xogc--;
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: try XOGC=%d\n", xogc);
> - usleep(15000);
> - data[0] = 0x07; /* register number 7, control byte 2 */
> - data[1] = 0x08 | xogc;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 2, NULL, 0);
> - }
> - f->xogc = xogc;
> - /* wait before continuing */
> - usleep(15000); /* wait 50 milliseconds */
> - MT2032_dump_status(f);
> -}
> -
> -static int
> -MT2032_no_spur_in_band(MT2032_parameters * m)
> -{
> - int n_max, n1, n2;
> - double f_test;
> -
> - n_max = 5;
> - n1 = 1;
> - while (1) {
> - n2 = -n1;
> - f_test = n1 * (m->f_lo1 - m->f_lo2);
> - while (1) {
> - n2--;
> - f_test = f_test - m->f_lo2;
> - xf86DrvMsg(0, X_INFO,
> - "testing f_test=%g n1=%d n2=%d f_lo1=%g f_lo2=%g f_if2=%g\n",
> - f_test, n1, n2, m->f_lo1, m->f_lo2, m->f_if2);
> - xf86DrvMsg(0, X_INFO, "d_f=%g f_ifbw=%g\n",
> - fabs(fabs(f_test) - m->f_if2), m->f_ifbw);
> - if ((fabs(fabs(f_test) - m->f_if2) * 2.0) <= m->f_ifbw)
> - return 0;
> - if (n2 <= -n_max)
> - break;
> - /* this line in the manual is bogus. I say it is faster
> - and more correct to go over all harmonics.. */
> -#if 0
> - if (f_test < (m->f_lo2 - m->f_if2 - m->f_ifbw))
> - break;
> -#endif
> - }
> - n1++;
> - if (n1 >= n_max)
> - return 1;
> - }
> -
> -}
> -
> -static void
> -MT2032_calculate_register_settings(MT2032_parameters * m, double f_rf,
> - double f_if1, double f_if2, double f_ref,
> - double f_ifbw, double f_step)
> -{
> - int n;
> -
> - m->f_rf = f_rf;
> - m->f_if1 = f_if1;
> - m->f_if2 = f_if2;
> - m->f_ref = f_ref;
> - m->f_ifbw = f_ifbw;
> - m->f_step = f_step;
> -
> - m->f_lo1 = f_rf + f_if1;
> - m->LO1I = lrint(m->f_lo1 / f_ref);
> - m->f_lo1 = f_ref * m->LO1I;
> -
> - m->f_lo2 = m->f_lo1 - f_rf - f_if2;
> -
> - /* check for spurs */
> - n = 1;
> - while (n < 3) {
> - if (MT2032_no_spur_in_band(m))
> - break;
> -
> - if (m->f_lo1 < (f_rf + f_if1))
> - m->LO1I += n;
> - else
> - m->LO1I -= n;
> -
> - m->f_lo1 = m->LO1I * f_ref;
> - m->f_lo2 = m->f_lo1 - f_rf - f_if2;
> - n++;
> - }
> - /* xf86DrvMsg(0, X_INFO, "MT2032: n=%d\n", n); */
> - /* select VCO */
> -
> - /* m->f_lo1>1100.0 */
> - if (m->f_lo1 < 1370.0)
> - m->SEL = 4;
> - else if (m->f_lo1 < 1530.0)
> - m->SEL = 3;
> - else if (m->f_lo1 < 1720.0)
> - m->SEL = 2;
> - else if (m->f_lo1 < 1890.0)
> - m->SEL = 1;
> - else /* m->f_lo1 < 1958.0 */
> - m->SEL = 0;
> -
> - /* calculate the rest of the registers */
> - m->LO2I = floor(m->f_lo2 / f_ref);
> - m->STEP = floor(3780.0 * f_step / f_ref);
> - m->NUM = floor(3780.0 * (m->f_lo2 / f_ref - m->LO2I));
> - m->NUM = m->STEP * lrint((1.0 * m->NUM) / (1.0 * m->STEP));
> -}
> -
> -static int
> -MT2032_wait_for_lock(FI1236Ptr f)
> -{
> - int n;
> - CARD8 data[10];
> - CARD8 value;
> -
> - n = 12;
> - while (1) {
> - data[0] = 0x0e; /* register number 7, status */
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 1, &value, 1);
> - /* xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: LO1LK=%d LO2LK=%d\n",
> - (value & 0x04)>>2, (value & 0x02)>>1); */
> - if ((value & 6) == 6)
> - break;
> - usleep(1500);
> - n--;
> - if (n < 0)
> - break;
> - }
> - if (n < 0) {
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: failed to set frequency\n");
> - return 0;
> - }
> - return 1;
> -}
> -
> -static void
> -MT2032_implement_settings(FI1236Ptr f, MT2032_parameters * m)
> -{
> - CARD8 data[10];
> - CARD8 value;
> -
> - data[0] = 0x00; /* start with register 0x00 */
> - data[1] = (m->LO1I >> 3) - 1;
> - data[2] = (m->SEL << 4) | (m->LO1I & 0x7);
> - data[3] = 0x86;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 4, NULL, 0);
> -
> - data[0] = 0x05; /* start with register 0x05 */
> - data[1] = ((m->LO2I & 0x7) << 5) | ((m->LO2I >> 3) - 1);
> - if (m->f_rf < 400.0)
> - data[2] = 0xe4;
> - else
> - data[2] = 0xf4;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 3, NULL, 0);
> -
> - data[0] = 0x07; /* register number 7, control byte 2 */
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 1, &value, 1);
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: using XOGC=%d\n", (value & 0x07));
> - data[1] = 8 | (value & 0x7);
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 2, NULL, 0);
> -
> - data[0] = 0x0b; /* start with register 0x0b */
> - data[1] = m->NUM & 0xff;
> - data[2] = (1 << 7) | ((m->NUM >> 8) & 0x0f);
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 3, NULL, 0);
> -
> - MT2032_wait_for_lock(f);
> -}
> -
> -static void
> -MT2032_optimize_VCO(FI1236Ptr f, MT2032_parameters * m)
> -{
> - CARD8 data[10];
> - CARD8 value;
> - CARD8 TAD1;
> -
> - data[0] = 0x0f; /* register number 7, status */
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 1, &value, 1);
> - TAD1 = value & 0x07;
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: TAD1=%d SEL=%d\n", TAD1, m->SEL);
> - if (TAD1 < 2)
> - return;
> - if (TAD1 == 2) {
> - if (m->SEL == 0)
> - return;
> - m->SEL--;
> - }
> - else {
> - if (m->SEL >= 4)
> - return;
> - m->SEL++;
> - }
> - data[0] = 0x01; /* start with register 1 */
> - data[1] = (m->SEL << 4) | (m->LO1I & 0x7);
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 2, NULL, 0);
> -
> -}
> -
> -static int
> -FI1236_get_afc_hint(FI1236Ptr f)
> -{
> - CARD8 out;
> - CARD8 AFC;
> -
> - if ((f->type == TUNER_TYPE_FM1216ME) || (f->type == TUNER_TYPE_FI1236W)) {
> - TDA9885Ptr t = (TDA9885Ptr) f->afc_source;
> -
> - if (t == NULL)
> - return TUNER_OFF;
> -
> - tda9885_getstatus(t);
> - tda9885_dumpstatus(t);
> - AFC = t->afc_status & 0x0f;
> -
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "AFC: FI1236_get_afc_hint: %i\n", AFC);
> - if (AFC == 0)
> - return TUNER_TUNED;
> - else if (AFC <= 0x07)
> - return TUNER_JUST_BELOW;
> - else if (AFC < 0x0f)
> - return TUNER_JUST_ABOVE;
> - else if (AFC == 0x0f)
> - return TUNER_TUNED;
> - }
> - else {
> - I2C_WriteRead(&(f->d), NULL, 0, &out, 1);
> - AFC = out & 0x7;
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "AFC: FI1236_get_afc_hint: %i\n", AFC);
> - if (AFC == 2)
> - return TUNER_TUNED;
> - if (AFC == 3)
> - return TUNER_JUST_BELOW;
> - if (AFC == 1)
> - return TUNER_JUST_ABOVE;
> - return TUNER_OFF;
> - }
> - return TUNER_OFF;
> -}
> -
> -static int
> -MT2032_get_afc_hint(FI1236Ptr f)
> -{
> - CARD8 in;
> - CARD8 out[2];
> - CARD8 AFC;
> -
> - in = 0x0e;
> - I2C_WriteRead(&(f->d), (I2CByte *) &in, 1, out, 2);
> - AFC = (out[0] >> 4) & 0x7;
> -#if 0
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC=%d TAD1=%d TAD2=%d\n",
> - AFC, out[1] & 0x7, (out[1] >> 4) & 0x07);
> -#endif
> - if (AFC == 2)
> - return TUNER_TUNED;
> - if (AFC == 3)
> - return TUNER_JUST_BELOW;
> - if (AFC == 1)
> - return TUNER_JUST_ABOVE;
> - return TUNER_OFF;
> -}
> -
> -/* this function is for external use only */
> -int
> -TUNER_get_afc_hint(FI1236Ptr f)
> -{
> - if (f->afc_timer_installed)
> - return TUNER_STILL_TUNING;
> - return f->last_afc_hint;
> -}
> -
> -static void
> -MT2032_dump_status(FI1236Ptr f)
> -{
> - CARD8 in;
> - CARD8 out[2];
> - CARD8 AFC;
> - CARD8 LDONrb;
> - CARD8 LO1LK, LO2LK, XOK;
> - CARD8 TAD2, TAD1;
> -
> - in = 0x0e;
> - I2C_WriteRead(&(f->d), (I2CByte *) &in, 1, out, 2);
> - XOK = out[0] & 1;
> - LO1LK = (out[0] >> 2) & 1;
> - LO2LK = (out[0] >> 1) & 1;
> - LDONrb = (out[0] >> 3) & 1;
> -
> - AFC = (out[0] >> 4) & 0x7;
> -
> - TAD1 = (out[1] & 0x7);
> - TAD2 = (out[1] >> 4) & 0x7;
> -
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: status: XOK=%d LO1LK=%d LO2LK=%d LDONrb=%d AFC=%d TAD1=%d TAD2=%d\n",
> - XOK, LO1LK, LO2LK, LDONrb, AFC, TAD1, TAD2);
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: status: OSCILLATOR:%s PLL1:%s PLL2:%s\n",
> - XOK ? "ok" : "off",
> - LO1LK ? "locked" : "off", LO2LK ? "locked" : "off");
> -
> -}
> -
> -static void
> -MT2032_tune(FI1236Ptr f, double freq, double step)
> -{
> - MT2032_parameters m;
> - CARD8 data[10];
> - int i;
> -
> - /* NTSC IF is 44mhz.. but 733/16=45.8125 and all TDAXXXX docs mention
> - 45.75, 39, 58.75 and 30. */
> -#if 0
> - MT2032_calculate_register_settings(&m, freq, 1090.0, 45.125, 5.25, 6.0,
> - step);
> - MT2032_calculate_register_settings(&m, freq, 1090.0, 45.74, 5.25, 6.0,
> - step);
> -#endif
> - MT2032_calculate_register_settings(&m, freq, 1090.0, f->video_if, 5.25, 3.0,
> - step);
> - MT2032_dump_parameters(f, &m);
> - MT2032_implement_settings(f, &m);
> - /* MT2032_dump_parameters(f, &m); */
> - for (i = 0; i < 3; i++) {
> - MT2032_optimize_VCO(f, &m);
> - if (MT2032_wait_for_lock(f)) {
> - data[0] = 0x02; /* LO Gain control register 0x02 */
> - data[1] = 0x20;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 2, NULL, 0);
> - return;
> - }
> - data[0] = 0x07;
> - data[1] = 0x88 | f->xogc;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 2, NULL, 0);
> - usleep(15000);
> - data[1] = 0x08 | f->xogc;
> - I2C_WriteRead(&(f->d), (I2CByte *) data, 2, NULL, 0);
> - }
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "MT2032: failed to set frequency\n");
> -}
> -
> -void
> -FI1236_set_tuner_type(FI1236Ptr f, int type)
> -{
> - f->type = type;
> - if (type >= NUM_TUNERS)
> - type = NUM_TUNERS - 1;
> - if (type < 0)
> - type = 0;
> - memcpy(&(f->parm), &(tuner_parms[type]), sizeof(FI1236_parameters));
> - f->original_frequency = f->parm.min_freq;
> - f->afc_delta = 0;
> - if (type == TUNER_TYPE_MT2032) {
> - MT2032_init(f);
> - return;
> - }
> -}
> -
> -static CARD32
> -AFC_TimerCallback(OsTimerPtr timer, CARD32 time, void *data)
> -{
> - FI1236Ptr f = (FI1236Ptr) data;
> -
> - if (FI1236_AFC(f))
> - return 150;
> - else {
> - f->afc_timer_installed = FALSE;
> - f->afc_count = 0;
> - return 0;
> - }
> -}
> -
> -void
> -FI1236_tune(FI1236Ptr f, CARD32 frequency)
> -{
> - CARD16 divider;
> - CARD8 data;
> -
> - if (frequency < f->parm.min_freq)
> - frequency = f->parm.min_freq;
> - if (frequency > f->parm.max_freq)
> - frequency = f->parm.max_freq;
> -
> - divider = (f->parm.fcar + (CARD16) frequency) & 0x7fff;
> - f->tuner_data.div1 = (CARD8) ((divider >> 8) & 0x7f);
> - f->tuner_data.div2 = (CARD8) (divider & 0xff);
> - f->tuner_data.control = f->parm.control;
> -
> - if (frequency < f->parm.threshold1)
> - f->tuner_data.band = f->parm.band_low;
> - else if (frequency < f->parm.threshold2)
> - f->tuner_data.band = f->parm.band_mid;
> - else
> - f->tuner_data.band = f->parm.band_high;
> -
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "Setting tuner band to %d\n", f->tuner_data.band);
> -
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "Setting tuner frequency to %d\n", (int) frequency);
> -
> - if ((f->type == TUNER_TYPE_FM1216ME) || (f->type == TUNER_TYPE_FI1236W)) {
> - f->tuner_data.aux = 0x20;
> - I2C_WriteRead(&(f->d), (I2CByte *) &(f->tuner_data), 5, NULL, 0);
> - I2C_WriteRead(&(f->d), NULL, 0, &data, 1);
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Tuner status %x\n", data);
> - }
> - else
> - I2C_WriteRead(&(f->d), (I2CByte *) &(f->tuner_data), 4, NULL, 0);
> -}
> -
> -void
> -TUNER_set_frequency(FI1236Ptr f, CARD32 frequency)
> -{
> - if (frequency < f->parm.min_freq)
> - frequency = f->parm.min_freq;
> - if (frequency > f->parm.max_freq)
> - frequency = f->parm.max_freq;
> -
> - f->afc_delta = 0;
> - f->original_frequency = frequency;
> -
> - if (f->type == TUNER_TYPE_MT2032)
> - MT2032_tune(f, (1.0 * frequency) / 16.0, 0.0625);
> - else
> - FI1236_tune(f, frequency);
> -
> - if (!f->afc_timer_installed) {
> - f->afc_timer_installed = TRUE;
> -/* RegisterBlockAndWakeupHandlers(FI1236_BlockHandler, AFCWakeup, f); */
> - TimerSet(NULL, 0, 300, AFC_TimerCallback, f);
> - }
> -
> -}
> -
> -int
> -FI1236_AFC(FI1236Ptr f)
> -{
> -#if 0
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "AFC: f=%p f->count=%d f->original_frequency=%d f->afc_delta=%d\n",
> - f, f->afc_count, f->original_frequency, f->afc_delta);
> -#endif
> - f->afc_count++;
> - if (f->type == TUNER_TYPE_MT2032) {
> - f->last_afc_hint = MT2032_get_afc_hint(f);
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "AFC: afc_hint=%d\n", f->last_afc_hint);
> - if (f->last_afc_hint == TUNER_TUNED)
> - return 0;
> - if (f->afc_count > 3)
> - f->last_afc_hint = TUNER_OFF;
> - if (f->last_afc_hint == TUNER_OFF)
> - f->afc_delta = 0;
> - else
> - f->afc_delta += f->last_afc_hint;
> -
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "AFC: Setting tuner frequency to %g\n",
> - (0.5 * (2 * f->original_frequency + f->afc_delta)) / 16.0);
> - MT2032_tune(f,
> - (1.0 * f->original_frequency + 0.5 * f->afc_delta) / 16.0,
> - 0.03125);
> - if (f->last_afc_hint == TUNER_OFF)
> - return 0;
> - return 1; /* call me again */
> - }
> - else {
> - f->last_afc_hint = FI1236_get_afc_hint(f);
> - if (f->last_afc_hint == TUNER_TUNED) {
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: TUNER_TUNNED\n");
> - return 0;
> - }
> - if (f->afc_count > 3)
> - f->last_afc_hint = TUNER_OFF;
> -
> - if (f->last_afc_hint == TUNER_OFF)
> - f->afc_delta = 0;
> - else
> - f->afc_delta += f->last_afc_hint;
> -
> - xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO,
> - "AFC: Setting tuner frequency to %g\n",
> - (0.5 * (2 * f->original_frequency + f->afc_delta)) / 16.0);
> - FI1236_tune(f, f->original_frequency + f->afc_delta);
> - if (f->last_afc_hint == TUNER_OFF)
> - return 0;
> - return 1; /* call me again */
> - }
> - return 0; /* done */
> -}
> -
> -void
> -fi1236_dump_status(FI1236Ptr f)
> -{
> - if (f->type == TUNER_TYPE_MT2032)
> - MT2032_dump_status(f);
> -}
> diff --git a/hw/xfree86/i2c/fi1236.h b/hw/xfree86/i2c/fi1236.h
> deleted file mode 100644
> index 0530892..0000000
> --- a/hw/xfree86/i2c/fi1236.h
> +++ /dev/null
> @@ -1,113 +0,0 @@
> -#ifndef __FI1236_H__
> -#define __FI1236_H__
> -
> -#include "xf86i2c.h"
> -
> -/* why someone has defined NUM someplace else is beyoung me.. */
> -#undef NUM
> -
> -typedef struct {
> - CARD32 fcar; /* 16 * fcar_Mhz */
> - CARD32 min_freq; /* 16 * min_freq_Mhz */
> - CARD32 max_freq; /* 16 * max_freq_Mhz */
> -
> - CARD32 threshold1; /* 16 * Value_Mhz */
> - CARD32 threshold2; /* 16 * Value_Mhz */
> -
> - CARD8 band_low;
> - CARD8 band_mid;
> - CARD8 band_high;
> - CARD8 control;
> -} FI1236_parameters;
> -
> -typedef struct {
> - /* what we want */
> - /* all frequencies are in Mhz */
> - double f_rf; /* frequency to tune to */
> - double f_if1; /* first intermediate frequency */
> - double f_if2; /* second intermediate frequency */
> - double f_ref; /* reference frequency */
> - double f_ifbw; /* bandwidth */
> - double f_step; /* step */
> -
> - /* what we compute */
> - double f_lo1;
> - double f_lo2;
> - int LO1I;
> - int LO2I;
> - int SEL;
> - int STEP;
> - int NUM;
> -} MT2032_parameters;
> -
> -typedef struct {
> - I2CDevRec d;
> - int type;
> -
> - void *afc_source; /* The AFC source may be another chip like TDA988x */
> -
> - int afc_delta;
> - CARD32 original_frequency;
> - Bool afc_timer_installed;
> - int afc_count;
> - int last_afc_hint;
> -
> - double video_if;
> - FI1236_parameters parm;
> - int xogc; /* for MT2032 */
> -
> - struct {
> - CARD8 div1;
> - CARD8 div2;
> - CARD8 control;
> - CARD8 band;
> - CARD8 aux; /* this is for MK3 tuners */
> - } tuner_data;
> -} FI1236Rec, *FI1236Ptr;
> -
> -#define TUNER_TYPE_FI1236 0
> -#define TUNER_TYPE_FI1216 1
> -#define TUNER_TYPE_TEMIC_FN5AL 2
> -#define TUNER_TYPE_MT2032 3
> -#define TUNER_TYPE_FI1246 4
> -#define TUNER_TYPE_FI1256 5
> -#define TUNER_TYPE_FI1236W 6
> -#define TUNER_TYPE_FM1216ME 7
> -
> -#define FI1236_ADDR(a) ((a)->d.SlaveAddr)
> -
> -#define FI1236_ADDR_1 0xC6
> -#define FI1236_ADDR_2 0xC0
> -
> -#define TUNER_TUNED 0
> -#define TUNER_JUST_BELOW 1
> -#define TUNER_JUST_ABOVE -1
> -#define TUNER_OFF 4
> -#define TUNER_STILL_TUNING 5
> -
> -void FI1236_tune(FI1236Ptr f, CARD32 frequency);
> -
> -#define FI1236SymbolsList \
> - "Detect_FI1236", \
> - "FI1236_set_tuner_type", \
> - "TUNER_set_frequency"
> -
> -#define xf86_Detect_FI1236 Detect_FI1236
> -extern _X_EXPORT FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr);
> -
> -#define xf86_FI1236_set_tuner_type FI1236_set_tuner_type
> -extern _X_EXPORT void FI1236_set_tuner_type(FI1236Ptr f, int type);
> -
> -#define xf86_TUNER_set_frequency TUNER_set_frequency
> -extern _X_EXPORT void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency);
> -
> -#define xf86_FI1236_AFC FI1236_AFC
> -extern _X_EXPORT int FI1236_AFC(FI1236Ptr f);
> -
> -#define xf86_TUNER_get_afc_hint TUNER_get_afc_hint
> -extern _X_EXPORT int TUNER_get_afc_hint(FI1236Ptr f);
> -
> -#define xf86_fi1236_dump_status fi1236_dump_status
> -extern _X_EXPORT void fi1236_dump_status(FI1236Ptr f);
> -
> -#endif
> diff --git a/hw/xfree86/i2c/fi1236_module.c b/hw/xfree86/i2c/fi1236_module.c
> deleted file mode 100644
> index 2f453d9..0000000
> --- a/hw/xfree86/i2c/fi1236_module.c
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86Module.h"
> -
> -static XF86ModuleVersionInfo fi1236VersRec = {
> - "fi1236",
> - MODULEVENDORSTRING,
> - MODINFOSTRING1,
> - MODINFOSTRING2,
> - XORG_VERSION_CURRENT,
> - 1, 0, 0,
> - ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */
> - ABI_VIDEODRV_VERSION,
> - MOD_CLASS_NONE,
> - {0, 0, 0, 0}
> -};
> -
> -_X_EXPORT XF86ModuleData fi1236ModuleData = {
> - &fi1236VersRec,
> - NULL,
> - NULL
> -};
> diff --git a/hw/xfree86/i2c/msp3430.c b/hw/xfree86/i2c/msp3430.c
> deleted file mode 100644
> index a501489..0000000
> --- a/hw/xfree86/i2c/msp3430.c
> +++ /dev/null
> @@ -1,779 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include <string.h>
> -#include <unistd.h>
> -
> -#include "xf86.h"
> -#include "xf86i2c.h"
> -#include "msp3430.h"
> -#include "i2c_def.h"
> -
> -#define CONTROL 0x00
> -#define WR_DEM 0x10
> -#define RD_DEM 0x11
> -#define WR_DSP 0x12
> -#define RD_DSP 0x13
> -
> -void InitMSP34xxG(MSP3430Ptr m);
> -void InitMSP34x5D(MSP3430Ptr m);
> -void CheckModeMSP34x5D(MSP3430Ptr m);
> -static const char *MSP_getProductName(CARD16 product_id);
> -void mpause(int milliseconds);
> -
> -#define __MSPDEBUG__ 0
> -
> -#if __MSPDEBUG__ > 3
> -
> -void MSPBeep(MSP3430Ptr m, CARD8 freq);
> -
> -#define __MSPBEEP MSPBeep(m,0x14);
> -
> -#else
> -
> -#define __MSPBEEP
> -#endif
> -
> -static void
> -SetMSP3430Control(MSP3430Ptr m, CARD8 RegAddress, CARD8 RegValueHigh,
> - CARD8 RegValueLow)
> -{
> - I2CByte data[3];
> -
> - data[0] = RegAddress;
> - data[1] = RegValueHigh;
> - data[2] = RegValueLow;
> -
> - I2C_WriteRead(&(m->d), data, 3, NULL, 0);
> -}
> -
> -static void
> -SetMSP3430Data(MSP3430Ptr m, CARD8 RegAddress, CARD8 RegSubAddressHigh,
> - CARD8 RegSubAddressLow, CARD8 RegValueHigh, CARD8 RegValueLow)
> -{
> - I2CByte data[5];
> -
> -#ifdef MSP_DEBUG
> - if (!m->registers_present[RegSubAddressLow]) {
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_ERROR,
> - "Attempt to access non-existent register in MSP34xxX: 0x%02x 0x%02x 0x%02x <- 0x%02x 0x%02x\n",
> - RegAddress, RegSubAddressHigh, RegSubAddressLow,
> - RegValueHigh, RegValueLow);
> - }
> -#endif
> -
> - data[0] = RegAddress;
> - data[1] = RegSubAddressHigh;
> - data[2] = RegSubAddressLow;
> - data[3] = RegValueHigh;
> - data[4] = RegValueLow;
> -
> - I2C_WriteRead(&(m->d), data, 5, NULL, 0);
> -}
> -
> -static void
> -GetMSP3430Data(MSP3430Ptr m, CARD8 RegAddress, CARD8 RegSubAddressHigh,
> - CARD8 RegSubAddressLow, CARD8 *RegValueHigh, CARD8 *RegValueLow)
> -{
> - I2CByte send[3];
> - I2CByte receive[2];
> -
> - send[0] = RegAddress;
> - send[1] = RegSubAddressHigh;
> - send[2] = RegSubAddressLow;
> -
> - I2C_WriteRead(&(m->d), send, 3, receive, 2);
> -
> - *RegValueHigh = receive[0];
> - *RegValueLow = receive[1];
> -}
> -
> -#if __MSPDEBUG__ > 2
> -static void
> -MSP3430DumpStatus(MSP3430Ptr m)
> -{
> - CARD8 status_hi, status_lo;
> - CARD8 subaddr, data[2];
> -
> - GetMSP3430Data(m, RD_DEM, 0x02, 0x00, &status_hi, &status_lo);
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "MSP34xx: SAP(8)=%d mono/NICAM(7)=%d stereo=%d %s O_1=%d O_0=%d 2nd car=%d 1st car=%d\n",
> - status_hi & 1, (status_lo >> 7) & 1, (status_lo >> 6) & 1,
> - (status_lo >> 5) ? ((status_hi >> 1) & 1 ? "bad NICAM reception"
> - : "NICAM") : ((status_hi >> 1) & 1 ? "bogus"
> - : "ANALOG FM/AM"),
> - (status_lo >> 4) & 1, (status_lo >> 3) & 1,
> - !((status_lo >> 2) & 1), !((status_lo >> 1) & 1));
> -
> - GetMSP3430Data(m, RD_DEM, 0x00, 0x7E, &status_hi, &status_lo);
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "MSP34xx: standard result=0x%02x%02x\n", status_hi, status_lo);
> - subaddr = 0x0;
> - I2C_WriteRead(&(m->d), &subaddr, 1, data, 2);
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO, "MSP34xx: control=0x%02x%02x\n",
> - data[1], data[0]);
> -}
> -#endif
> -
> -/* wrapper */
> -void
> -InitMSP3430(MSP3430Ptr m)
> -{
> -#if __MSPDEBUG__ > 1
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "InitMSP3430(m->connector=%d, m->standard=%d, m->chip_family=%d)\n",
> - m->connector, m->standard, m->chip_family);
> -#endif
> - switch (m->chip_family) {
> - case MSPFAMILY_34x0G:
> - InitMSP34xxG(m);
> - break;
> - case MSPFAMILY_34x5G:
> - InitMSP34xxG(m);
> - break;
> - case MSPFAMILY_34x5D:
> - InitMSP34x5D(m);
> - break;
> - }
> -}
> -
> -/*-----------------------------------------------------------------
> -| common functions for all MSP34xx chips
> -|----------------------------------------------------------------*/
> -
> -MSP3430Ptr
> -DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr)
> -{
> - MSP3430Ptr m;
> - I2CByte a;
> - CARD8 hardware_version, major_revision, product_code, rom_version;
> - Bool supported;
> -
> - m = calloc(1, sizeof(MSP3430Rec));
> - if (m == NULL)
> - return NULL;
> - m->d.DevName = strdup("MSP34xx");
> - m->d.SlaveAddr = addr;
> - m->d.pI2CBus = b;
> - m->d.NextDev = NULL;
> - m->d.StartTimeout = b->StartTimeout;
> - m->d.BitTimeout = b->BitTimeout;
> - m->d.AcknTimeout = b->AcknTimeout;
> - m->d.ByteTimeout = b->ByteTimeout;
> -
> - if (!I2C_WriteRead(&(m->d), NULL, 0, &a, 1)) {
> - free((void *) m->d.DevName);
> - free(m);
> - return NULL;
> - }
> -
> - m->standard = MSP3430_NTSC;
> - m->connector = MSP3430_CONNECTOR_1;
> - m->mode = MSPMODE_STEREO_A; /*stereo or chanel A if avail. */
> - m->c_format = MSPFORMAT_UNKNOWN;
> - m->c_standard = MSPSTANDARD_UNKNOWN;
> - m->c_matrix = m->c_fmmatrix = m->c_source = 0;
> - m->volume = 0;
> - m->recheck = FALSE;
> -
> - GetMSP3430Data(m, RD_DSP, 0x00, 0x1E, &hardware_version, &major_revision);
> - GetMSP3430Data(m, RD_DSP, 0x00, 0x1F, &product_code, &rom_version);
> - m->hardware_version = hardware_version;
> - m->major_revision = major_revision;
> - m->product_code = product_code;
> - m->rom_version = rom_version;
> -
> - m->chip_id = ((major_revision << 8) | product_code);
> -
> - supported = FALSE;
> - switch (major_revision) {
> - case 4: /* 34xxD */
> - switch (product_code) {
> - case 0x05: /* 3405D */
> - case 0x0A: /* 3410D */
> - case 0x0F: /* 3415D */
> - m->chip_family = MSPFAMILY_34x5D;
> - m->recheck = TRUE;
> - supported = TRUE;
> - break;
> - default:
> - m->chip_family = MSPFAMILY_34x0D;
> - }
> - break;
> - case 7: /* 34xxG */
> - switch (product_code) {
> - case 0x00:
> - case 0x0A:
> - case 0x1E:
> - case 0x28:
> - case 0x32:
> - m->chip_family = MSPFAMILY_34x0G;
> - supported = TRUE;
> - break;
> - case 0x0f:
> - case 0x19:
> - case 0x2d:
> - case 0x37:
> - case 0x41:
> - m->chip_family = MSPFAMILY_34x5G;
> - supported = TRUE;
> -#ifdef MSP_DEBUG
> - memset(m->registers_present, 0, 256);
> -#define A(num) m->registers_present[(num)]=1;
> -#define B(num1, num2) memset(&(m->registers_present[num1]), 1, num2-num1);
> - A(0x20)
> - A(0x30)
> - A(0x40)
> - A(0x00)
> - B(0x01, 0x08)
> - B(0x0B, 0x0E)
> - A(0x10)
> - B(0x12, 0x14)
> - A(0x16)
> - A(0x29)
> -#undef B
> -#undef A
> -#endif
> - break;
> - default:
> - m->chip_family = MSPFAMILY_UNKNOWN;
> - }
> - break;
> - default:
> - m->chip_family = MSPFAMILY_UNKNOWN;
> - }
> -
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "Found %s%s, rom version 0x%02x, chip_id=0x%04x\n",
> - MSP_getProductName(m->chip_id),
> - supported ? "" : " (unsupported)", rom_version, m->chip_id);
> -
> - if (!supported) {
> - free((void *) m->d.DevName);
> - free(m);
> - return NULL;
> - }
> - if (!I2CDevInit(&(m->d))) {
> - free((void *) m->d.DevName);
> - free(m);
> - return NULL;
> - }
> -
> - return m;
> -}
> -
> -void
> -ResetMSP3430(MSP3430Ptr m)
> -{
> - /* Reset the MSP3430 */
> - SetMSP3430Control(m, 0x00, 0x80, 0x00);
> - /* Set it back to normal operation */
> - SetMSP3430Control(m, 0x00, 0x00, 0x00);
> -
> - m->c_format = MSPFORMAT_UNKNOWN;
> - m->c_standard = MSPSTANDARD_UNKNOWN;
> - m->c_matrix = m->c_fmmatrix = m->c_source = 0;
> - m->volume = 0;
> -}
> -
> -void
> -MSP3430SetVolume(MSP3430Ptr m, CARD8 value)
> -{
> - CARD8 result;
> -
> -#if 0
> - CARD8 old_volume;
> -
> - GetMSP3430Data(m, RD_DSP, 0x00, 0x00, &old_volume, &result);
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO, "MSP3430 result 0x%02x\n",
> - result);
> -#endif
> - /* save an extra Get call */
> - result = 0;
> -
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x00, value, result);
> -
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x07, value, 0);
> - m->volume = value;
> -
> -#if __MSPDEBUG__ > 2
> - MSP3430DumpStatus(m);
> - __MSPBEEP GetMSP3430Data(m, RD_DSP, 0x00, 0x00, &old_volume, &result);
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO, "MSP3430 volume 0x%02x\n",
> - value);
> -#endif
> -}
> -
> -void
> -MSP3430SetSAP(MSP3430Ptr m, int mode)
> -{
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "Put actual code to change SAP here\n");
> -
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x08, mode & 0xff, 0x20);
> -}
> -
> -#if 0
> -void
> -MSP3430SetSource(MSP3430Ptr m, CARD8 value)
> -{
> - /* Write to DSP, register 0x0008, (loudspeaker channel source/matrix) */
> - /* This sets the source to the TV tuner, for stereo operation */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x08, value, 0x20);
> -}
> -#endif
> -
> -static const char *
> -MSP_getProductName(CARD16 product_id)
> -{
> - switch (product_id) {
> - case 0x0400:
> - return "MSP3400D";
> - case 0x040a:
> - return "MSP3410D";
> - case 0x0405:
> - return "MSP3405D";
> - case 0x040f:
> - return "MSP3415D";
> - case 0x0700:
> - return "MSP3400G";
> - case 0x070a:
> - return "MSP3410G";
> - case 0x071e:
> - return "MSP3430G";
> - case 0x0728:
> - return "MSP3440G";
> - case 0x0732:
> - return "MSP3450G";
> - case 0x070f:
> - return "MSP3415G";
> - case 0x0719:
> - return "MSP3425G";
> - case 0x072d:
> - return "MSP3445G";
> - case 0x0737:
> - return "MSP3455G";
> - case 0x0741:
> - return "MSP3465G";
> - }
> - return "MSP - unknown type";
> -}
> -
> -#if __MSPDEBUG__ > 2
> -/*puts beep in MSP output
> - freq = 0x01 - 16Hz ... 0x40 - 1kHz ... 0xff - 4kHz
> -*/
> -void
> -MSPBeep(MSP3430Ptr m, CARD8 freq)
> -{
> - SetMSP3430Data(m, WR_DSP, 0x00, freq, 0x7f, 0x40);
> - mpause(100);
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x14, 0x00, 0x00);
> -}
> -#endif
> -
> -void
> -mpause(int milliseconds)
> -{
> - int i, m;
> -
> - m = milliseconds / 20;
> - for (i = 0; i < m; i++)
> - usleep(20000);
> -}
> -
> -/*-----------------------------------------------------------------
> -| specific functions for all MSP34xxG chips
> -|----------------------------------------------------------------*/
> -
> -void
> -InitMSP34xxG(MSP3430Ptr m)
> -{
> -
> -#if __MSPDEBUG__ > 1
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "InitMSP34xxG(m->connector=%d, m->standard=%d, m->chip_family=%d)\n",
> - m->connector, m->standard, m->chip_family);
> -#endif
> - /* Reset MSP3430 */
> - SetMSP3430Control(m, 0x00, 0x80, 0x00);
> - /* Set it back to normal operation */
> - SetMSP3430Control(m, 0x00, 0x00, 0x00);
> -
> - /*set MODUS register */
> - /* bits: 0 - automatic sound detection */
> - /* 1 - enable STATUS change */
> - /* 12 - detect 6.5 Mhz carrier as D/K1, D/K2 or D/K NICAM (does not seem to work ) */
> - /* 13 - detect 4.5 Mhz carrier as BTSC */
> - if ((m->standard & 0xff) == MSP3430_PAL) {
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x30, 0x30, 0x03 | 0x08); /* make O_ pins tristate */
> - /* PAL standard */
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x20, 0x00, 0x01); /* possibly wrong */
> - }
> - else {
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x30, 0x20, 0x03 | 0x08);
> - /* standard selection is M-BTSC-Stereo */
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x20, 0x00, 0x20);
> - }
> -
> - switch (m->connector) {
> - case MSP3430_CONNECTOR_1:
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x08, 0x03, 0x20);
> - break;
> - case MSP3430_CONNECTOR_2:
> - /* this has not been checked yet.. could be bogus */
> - /* SCART Input Prescale: 0 dB gain */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0d, 0x19, 0x00);
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x08, 0x02, 0x20);
> - break;
> - case MSP3430_CONNECTOR_3:
> - default:
> - /* SCART Input Prescale: 0 dB gain */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0d, 0x19, 0x00);
> -
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x08, 0x02, 0x20);
> - break;
> - }
> -
> - switch (m->standard) {
> - case MSP3430_PAL:
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0e, 0x24, 0x03);
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x10, 0x00, 0x5a);
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x20, 0x00, 0x03);
> - /* Set volume to FAST_MUTE. */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x00, 0xFF, 0x00);
> - break;
> - case MSP3430_PAL_DK1:
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0e, 0x24, 0x03);
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x10, 0x00, 0x5a);
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x20, 0x00, 0x04);
> - /* Set volume to FAST_MUTE. */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x00, 0xFF, 0x00);
> - break;
> - case MSP3430_SECAM: /* is this right ? */
> - case MSP3430_NTSC:
> - /* Write to DSP, register 0x000E, (prescale FM/FM matrix) */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0e, 0x24, 0x03);
> -
> - /* Set volume to FAST_MUTE. */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x00, 0xFF, 0x00);
> - break;
> - }
> -
> -}
> -
> -/*-----------------------------------------------------------------
> -| specific functions for all MSP34x5D chips
> -|----------------------------------------------------------------*/
> -
> -void
> -InitMSP34x5D(MSP3430Ptr m)
> -{
> - int count;
> - CARD8 high, low;
> - CARD16 result, standard;
> - CARD16 peak;
> -
> - if (m->c_format == MSPFORMAT_UNKNOWN)
> - ResetMSP3430(m);
> - else {
> - /*mute volume */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x00, 0x00, 0x00);
> - }
> -
> - switch (m->connector) {
> - case MSP3430_CONNECTOR_2:
> - case MSP3430_CONNECTOR_3:
> - if (m->c_format != MSPFORMAT_SCART) {
> - /* SCART Input Prescale: 0 dB gain */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0d, 0x19, 0x00);
> - /* this has not been checked yet.. could be bogus */
> - m->c_format = MSPFORMAT_SCART; /*stereo */
> - }
> - break;
> - case MSP3430_CONNECTOR_1:
> - default:
> -
> - switch (m->standard & 0x00ff) {
> - case MSP3430_PAL:
> - switch (m->standard) {
> - case MSP3430_PAL_DK1:
> - standard = MSPSTANDARD_FM_DK1;
> - break;
> -/* case MSP3430_PAL_DK2:
> - standard=MSPSTANDARD_FM_DK2;
> - break;
> - case MSP3430_PAL_BG:
> - may be FM stereo (Germany) or FM NICAM (Scandinavia,spain)
> - standard=MSPSTANDARD_AUTO;
> - break;
> -*/
> - default:
> - standard = MSPSTANDARD_AUTO;
> - }
> - break;
> - case MSP3430_SECAM:
> - standard = MSPSTANDARD_AUTO;
> - case MSP3430_NTSC:
> - /* Only MSP34x5 supported format - Korean NTSC-M */
> - standard = MSPSTANDARD_FM_M;
> - default:
> - standard = MSPSTANDARD_AUTO;
> - }
> -
> - /*no NICAM support in MSP3410D - force to autodetect */
> - if ((m->chip_id == 0x405) && (standard >= MSPSTANDARD_NICAM_BG))
> - standard = MSPSTANDARD_AUTO;
> -
> - if (m->c_standard != standard) {
> -
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x20, standard >> 8,
> - standard & 0xFF);
> - if (standard == MSPSTANDARD_AUTO) {
> - count = 50; /* time shouldn't exceed 1s, just in case */
> - do {
> - usleep(20000);
> - GetMSP3430Data(m, RD_DEM, 0x00, 0x7e, &high, &low);
> - result = (high << 8) | low;
> - --count;
> - } while (result > 0x07ff && count > 0);
> -
> - if ((result > MSPSTANDARD_AUTO))
> - standard = result;
> - else
> - standard = MSPSTANDARD_UNKNOWN;
> -#if __MSPDEBUG__ > 1
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "Detected audio standard: %d\n", result);
> -#endif
> - /* result = MSPSTANDARD_NICAM_L can be one of:
> - SECAM_L - MSPSTANDARD_NICAM_L
> - D/K1 - MSPSTANDARD_FM_DK1
> - D/K2 - MSPSTANDARD_FM_DK2
> - D/K-NICAM - MSPSTANDARD_NICAM_DK */
> - if (standard == MSPSTANDARD_NICAM_L) {
> - if ((m->standard & 0x00ff) == MSP3430_PAL) {
> - /* force PAL D/K */
> - standard = MSPSTANDARD_FM_DK1;
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x20, standard >> 8,
> - standard & 0xFF);
> -#if __MSPDEBUG__ > 1
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "Detected 6.5MHz carrier - forced to D/K1 !!!\n");
> -#endif
> - }
> - }
> - }
> - m->c_standard = standard;
> - } /*end - standard changed */
> - else {
> - if (standard < MSPSTANDARD_NICAM_BG) {
> - /* get old value of ident. mode register */
> - GetMSP3430Data(m, RD_DSP, 0x00, 0x15, &high, &low);
> - /* reset Ident-Filter */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x14, 0x00, 0x3F);
> - /* put back old value to ident. mode register */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x14, 0x00, low);
> - }
> - }
> -
> - if (standard <= MSPSTANDARD_AUTO) {
> - m->c_format = MSPFORMAT_1xFM;
> - }
> - else if (standard < MSPSTANDARD_NICAM_BG) {
> - /* set FM prescale */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0e, 0x30, 0);
> - /* set FM deemphasis */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0f,
> - ((standard == MSPSTANDARD_FM_M) ? 0 : 1), 0);
> -
> - /* check if FM2 carrier is present */
> - /*turn off FM DC Notch */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x17, 0x00, 0x3f);
> - /*matrix source for Quasi-Peak Detector - stereo: ch2->L ch1->R */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0c, 0x00, 0x20);
> -
> - mpause(250);
> - GetMSP3430Data(m, RD_DSP, 0x00, 0x1A, &high, &low);
> - peak = (high << 8) | low;
> -#if __MSPDEBUG__ > 1
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "Second carrier Quasi-Peak detection: %d\n", peak);
> -#endif
> - /*turn on FM DC Notch */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x17, 0x00, 0x00);
> -
> - if (peak < 5) {
> - /* if second carrier not detected - only mono from first carrier */
> - m->c_format = MSPFORMAT_1xFM;
> - }
> - else {
> - m->c_format = MSPFORMAT_2xFM;
> - /*start of FM identification process - FM_WAIT
> - wait at least 0.5s - used 1s - gives beter resolution */
> - mpause(1000);
> - }
> - }
> - else {
> - if (standard == MSPSTANDARD_NICAM_L) {
> - m->c_format = MSPFORMAT_NICAM_AM;
> - /* set AM prescale */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0e, 0x7C, 0);
> - }
> - else {
> - m->c_format = MSPFORMAT_NICAM_FM;
> - /* set FM prescale */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0e, 0x30, 0);
> - }
> - /* set FM deemphasis */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0f, 0x00, 0);
> - /* set NICAM prescale to 0dB */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x10, 0x20, 0);
> - }
> -
> - break;
> - } /*end - case conector */
> -
> - CheckModeMSP34x5D(m);
> -
> - /* Set volume to FAST_MUTE. */
> - /*SetMSP3430Data(m, WR_DSP, 0x00, 0x00, 0xFF, 0x00); */
> - /*set volume */
> - MSP3430SetVolume(m, m->volume);
> -
> -__MSPBEEP} /* EnableMSP34x5D ()... */
> -
> -void
> -CheckModeMSP34x5D(MSP3430Ptr m)
> -{
> - const char stereo_on = 25;
> - const char stereo_off = 20;
> - const char dual_on = -stereo_on;
> - const char dual_off = -stereo_off;
> - char detect;
> - CARD8 matrix, fmmatrix, source, high, low;
> -
> - fmmatrix = 0; /*no matrix */
> - source = 0;
> - /*FM*/ switch (m->c_format) {
> - case MSPFORMAT_NICAM_FM:
> - case MSPFORMAT_NICAM_AM:
> - case MSPFORMAT_SCART:
> - source = ((m->c_format == MSPFORMAT_SCART) ? 2 : 1);
> - switch (m->mode) {
> - case MSPMODE_MONO:
> - matrix = 0x30;
> - /*MONO*/ break;
> - case MSPMODE_A:
> - matrix = 0x00;
> - /*A*/ break;
> - case MSPMODE_B:
> - matrix = 0x10;
> - /*B*/ break;
> - default:
> - matrix = 0x20;
> - /*STEREO*/ break;
> - }
> - break;
> - default:
> - case MSPFORMAT_1xFM:
> - matrix = 0x00;
> - /*A*/ break;
> - case MSPFORMAT_2xFM:
> - switch (m->mode) {
> - case MSPMODE_MONO:
> - matrix = 0x30;
> - /*MONO*/ break;
> - case MSPMODE_STEREO:
> - matrix = 0x20;
> - /*STEREO*/ fmmatrix = ((m->c_standard == MSPSTANDARD_FM_M) ? 2 : 1);
> - break;
> - case MSPMODE_AB:
> - matrix = 0x20;
> - /*STEREO*/ break;
> - case MSPMODE_A:
> - matrix = 0x00;
> - /*A*/ break;
> - case MSPMODE_B:
> - matrix = 0x10;
> - /*B*/ break;
> - default:
> - /*FM_IDENT_CHECK */
> - GetMSP3430Data(m, RD_DSP, 0x00, 0x18, &high, &low);
> - detect = (char) high;
> -#if __MSPDEBUG__ > 1
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO,
> - "Stereo Detection Register: %d\n", detect);
> -#endif
> - if (detect >=
> - ((m->c_mode == MSPMODE_STEREO) ? stereo_off : stereo_on)) {
> - m->c_mode = MSPMODE_STEREO;
> - matrix = 0x20;
> - /*STEREO*/
> - fmmatrix = ((m->c_standard == MSPSTANDARD_FM_M) ? 2 : 1);
> - }
> - else if (detect <= ((m->c_mode == MSPMODE_AB) ? dual_off : dual_on)) {
> - m->c_mode = MSPMODE_AB;
> - switch (m->mode) {
> - case MSPMODE_STEREO_AB:
> - matrix = 0x20;
> - break;
> - case MSPMODE_STEREO_B:
> - matrix = 0x10;
> - break;
> - default:
> - case MSPMODE_A:
> - matrix = 0x00;
> - break;
> - }
> - }
> - else {
> - m->c_mode = MSPMODE_MONO;
> - matrix = 0x30;
> - /*MONO*/}
> - break;
> - } /* end - case mode */
> - break;
> - }
> -
> - if (m->c_fmmatrix != fmmatrix) {
> - GetMSP3430Data(m, RD_DSP, 0x00, 0x0e, &high, &low);
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x0e, high, fmmatrix);
> - m->c_fmmatrix = fmmatrix;
> - }
> -
> - if ((m->c_matrix != matrix) || (m->c_source != source)) {
> - /*set chanel source and matrix for loudspeaker */
> - SetMSP3430Data(m, WR_DSP, 0x00, 0x08, source, matrix);
> -
> - m->c_matrix = matrix;
> - m->c_source = source;
> - }
> -
> - if (((m->c_format) & 0xF0) == MSPFORMAT_NICAM)
> - SetMSP3430Data(m, WR_DEM, 0x00, 0x21, 0, 1);
> -
> -#if __MSPDEBUG__ > 0
> - char *msg;
> -
> - switch (matrix) {
> - case 0x30:
> - /*MONO*/ msg = "MONO";
> - break;
> - case 0x00:
> - /*LEFT*/ msg = "MONO/CHANNEL_1";
> - break;
> - case 0x10:
> - /*RIGHT*/ msg = "MONO/CHANNEL_2";
> - break;
> - case 0x20:
> - /*LEFT*/ msg = "STEREO";
> - break;
> - default:
> - msg = "unknown";
> - break;
> - }
> - xf86DrvMsg(m->d.pI2CBus->scrnIndex, X_INFO, "Audio mode set to: %s\n", msg);
> -#endif
> -}
> diff --git a/hw/xfree86/i2c/msp3430.h b/hw/xfree86/i2c/msp3430.h
> deleted file mode 100644
> index ef66e1e..0000000
> --- a/hw/xfree86/i2c/msp3430.h
> +++ /dev/null
> @@ -1,116 +0,0 @@
> -#ifndef __MSP3430_H__
> -#define __MSP3430_H__
> -
> -#include "xf86i2c.h"
> -
> -typedef struct {
> - I2CDevRec d;
> -
> - int standard;
> - int connector;
> - int mode;
> -
> - CARD8 hardware_version, major_revision, product_code, rom_version;
> -#ifdef MSP_DEBUG
> - CARD8 registers_present[256];
> -#endif
> -
> - CARD16 chip_id;
> - CARD8 chip_family;
> - Bool recheck; /*reinitialization needed after channel change */
> - CARD8 c_format; /*current state of audio format */
> - CARD16 c_standard; /*current state of standard register */
> - CARD8 c_source; /*current state of source register */
> - CARD8 c_matrix; /*current state of matrix register */
> - CARD8 c_fmmatrix; /*current state of fmmatrix register */
> - int c_mode; /* current state of mode for autoswitchimg */
> - CARD8 volume;
> -} MSP3430Rec, *MSP3430Ptr;
> -
> -#define MSP3430_ADDR_1 0x80
> -#define MSP3430_ADDR_2 0x84
> -#define MSP3430_ADDR_3 0x88
> -
> -#define MSP3430_PAL 1
> -#define MSP3430_NTSC 2
> -#define MSP3430_PAL_DK1 (0x100 | MSP3430_PAL)
> -#define MSP3430_SECAM 3
> -
> -#define MSP3430_CONNECTOR_1 1 /* tuner on AIW cards */
> -#define MSP3430_CONNECTOR_2 2 /* SVideo on AIW cards */
> -#define MSP3430_CONNECTOR_3 3 /* composite on AIW cards */
> -
> -#define MSP3430_ADDR(a) ((a)->d.SlaveAddr)
> -
> -#define MSP3430_FAST_MUTE 0xFF
> -/* a handy volume transform function, -1000..1000 -> 0x01..0x7F */
> -#define MSP3430_VOLUME(value) (0x01+(0x7F-0x01)*log(value+1001)/log(2001))
> -
> -/*----------------------------------------------------------*/
> -
> -/* MSP chip families */
> -#define MSPFAMILY_UNKNOWN 0
> -#define MSPFAMILY_34x0D 1
> -#define MSPFAMILY_34x5D 2
> -#define MSPFAMILY_34x0G 3
> -#define MSPFAMILY_34x5G 4
> -
> -/* values for MSP standard */
> -#define MSPSTANDARD_UNKNOWN 0x00
> -#define MSPSTANDARD_AUTO 0x01
> -#define MSPSTANDARD_FM_M 0x02
> -#define MSPSTANDARD_FM_BG 0x03
> -#define MSPSTANDARD_FM_DK1 0x04
> -#define MSPSTANDARD_FM_DK2 0x04
> -#define MSPSTANDARD_NICAM_BG 0x08
> -#define MSPSTANDARD_NICAM_L 0x09
> -#define MSPSTANDARD_NICAM_I 0x0A
> -#define MSPSTANDARD_NICAM_DK 0x0B
> -
> -/* values for MSP format */
> -#define MSPFORMAT_UNKNOWN 0x00
> -#define MSPFORMAT_FM 0x10
> -#define MSPFORMAT_1xFM 0x00|MSPFORMAT_FM
> -#define MSPFORMAT_2xFM 0x01|MSPFORMAT_FM
> -#define MSPFORMAT_NICAM 0x20
> -#define MSPFORMAT_NICAM_FM 0x00|MSPFORMAT_NICAM
> -#define MSPFORMAT_NICAM_AM 0x01|MSPFORMAT_NICAM
> -#define MSPFORMAT_SCART 0x30
> -
> -/* values for MSP mode */
> -#define MSPMODE_UNKNOWN 0
> -/* automatic modes */
> -#define MSPMODE_STEREO_AB 1
> -#define MSPMODE_STEREO_A 2
> -#define MSPMODE_STEREO_B 3
> -/* forced modes */
> -#define MSPMODE_MONO 4
> -#define MSPMODE_STEREO 5
> -#define MSPMODE_AB 6
> -#define MSPMODE_A 7
> -#define MSPMODE_B 8
> -/*----------------------------------------------------------*/
> -
> -#define xf86_InitMSP3430 InitMSP3430
> -extern _X_EXPORT void InitMSP3430(MSP3430Ptr m);
> -
> -#define xf86_DetectMSP3430 DetectMSP3430
> -extern _X_EXPORT MSP3430Ptr DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr);
> -
> -#define xf86_ResetMSP3430 ResetMSP3430
> -extern _X_EXPORT void ResetMSP3430(MSP3430Ptr m);
> -
> -#define xf86_MSP3430SetVolume MSP3430SetVolume
> -extern _X_EXPORT void MSP3430SetVolume(MSP3430Ptr m, CARD8 value);
> -
> -#define xf86_MSP3430SetSAP MSP3430SetSAP
> -extern _X_EXPORT void MSP3430SetSAP(MSP3430Ptr m, int mode);
> -
> -#define MSP3430SymbolsList \
> - "InitMSP3430", \
> - "DetectMSP3430", \
> - "ResetMSP3430", \
> - "MSP3430SetVolume", \
> - "MSP3430SetSAP"
> -
> -#endif
> diff --git a/hw/xfree86/i2c/msp3430_module.c b/hw/xfree86/i2c/msp3430_module.c
> deleted file mode 100644
> index e177efe..0000000
> --- a/hw/xfree86/i2c/msp3430_module.c
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86Module.h"
> -
> -static XF86ModuleVersionInfo msp3430VersRec = {
> - "msp3430",
> - MODULEVENDORSTRING,
> - MODINFOSTRING1,
> - MODINFOSTRING2,
> - XORG_VERSION_CURRENT,
> - 1, 0, 0,
> - ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */
> - ABI_VIDEODRV_VERSION,
> - MOD_CLASS_NONE,
> - {0, 0, 0, 0}
> -};
> -
> -_X_EXPORT XF86ModuleData msp3430ModuleData = {
> - &msp3430VersRec,
> - NULL,
> - NULL
> -};
> diff --git a/hw/xfree86/i2c/tda8425.c b/hw/xfree86/i2c/tda8425.c
> deleted file mode 100644
> index 051249b..0000000
> --- a/hw/xfree86/i2c/tda8425.c
> +++ /dev/null
> @@ -1,83 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86.h"
> -#include "xf86i2c.h"
> -#include "tda8425.h"
> -#include "i2c_def.h"
> -
> -#define TDA8425(a,b) { \
> - data[0]=a; \
> - data[1]=b; \
> - I2C_WriteRead(&(t->d), data, 2, NULL, 0); \
> - }
> -
> -TDA8425Ptr
> -Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr, Bool force)
> -{
> - TDA8425Ptr t;
> -
> - t = calloc(1, sizeof(TDA8425Rec));
> - if (t == NULL)
> - return NULL;
> - t->d.DevName = "TDA8425 BTSC Stereo Audio Processor";
> - t->d.SlaveAddr = addr;
> - t->d.pI2CBus = b;
> - t->d.NextDev = NULL;
> - t->d.StartTimeout = b->StartTimeout;
> - t->d.BitTimeout = b->BitTimeout;
> - t->d.AcknTimeout = b->AcknTimeout;
> - t->d.ByteTimeout = b->ByteTimeout;
> -
> - if (!force && !I2CProbeAddress(b, addr)) {
> - free(t);
> - return NULL;
> - }
> -
> - /* set default parameters */
> - if (!I2CDevInit(&(t->d))) {
> - free(t);
> - return NULL;
> - }
> -
> - return t;
> -}
> -
> -Bool
> -tda8425_init(TDA8425Ptr t)
> -{
> - t->stereo = 3; /* 3 = Spacial 2 = Linear 1 = Pseudo 0 = Forced mono */
> - t->v_left = 0xFF; /* FF - C0 */
> - t->v_right = 0xFF; /* FF - C0 */
> - t->bass = 0xF6; /* 0xFF - 0xF0 */
> - t->treble = 0xF6; /* 0xFF - 0xF0 */
> - t->src_sel = 3; /* 3 - stereo */
> - t->mute = TRUE;
> - t->mux = 0; /* 0 - source one, 1 -source 2 */
> -
> - tda8425_setaudio(t);
> - return TRUE;
> -}
> -
> -void
> -tda8425_setaudio(TDA8425Ptr t)
> -{
> - I2CByte data[2];
> -
> - TDA8425(0x00, t->v_left);
> - TDA8425(0x01, t->v_right);
> - TDA8425(0x02, t->bass);
> - TDA8425(0x03, t->treble);
> - TDA8425(0x08,
> - 0xC0 | (t->mute ? 0x20 : 0x0) | (t->stereo << 3) | (t->
> - src_sel << 1) |
> - t->mux);
> -}
> -
> -void
> -tda8425_mute(TDA8425Ptr t, Bool mute)
> -{
> - t->mute = mute;
> - tda8425_setaudio(t);
> -}
> diff --git a/hw/xfree86/i2c/tda8425.h b/hw/xfree86/i2c/tda8425.h
> deleted file mode 100644
> index e3dfb13..0000000
> --- a/hw/xfree86/i2c/tda8425.h
> +++ /dev/null
> @@ -1,44 +0,0 @@
> -#ifndef __TDA8425_H__
> -#define __TDA8425_H__
> -
> -#include "xf86i2c.h"
> -
> -typedef struct {
> - I2CDevRec d;
> -
> - int mux;
> - int stereo;
> - int v_left;
> - int v_right;
> - int bass;
> - int treble;
> - int src_sel;
> - Bool mute;
> -} TDA8425Rec, *TDA8425Ptr;
> -
> -#define TDA8425_ADDR_1 0x82
> -
> -/* the third parameter is meant to force detection of tda8425.
> - This is because tda8425 is write-only and complete implementation
> - of I2C protocol is not always available. Besides address there is no good
> - way to autodetect it so we have to _know_ it is there anyway */
> -
> -#define xf86_Detect_tda8425 Detect_tda8425
> -extern _X_EXPORT TDA8425Ptr Detect_tda8425(I2CBusPtr b, I2CSlaveAddr addr,
> - Bool force);
> -#define xf86_tda8425_init tda8425_init
> -extern _X_EXPORT Bool tda8425_init(TDA8425Ptr t);
> -
> -#define xf86_tda8425_setaudio tda8425_setaudio
> -extern _X_EXPORT void tda8425_setaudio(TDA8425Ptr t);
> -
> -#define xf86_tda8425_mute tda8425_mute
> -extern _X_EXPORT void tda8425_mute(TDA8425Ptr t, Bool mute);
> -
> -#define TDA8425SymbolsList \
> - "Detect_tda8425", \
> - "tda8425_init", \
> - "tda8425_setaudio", \
> - "tda8425_mute"
> -
> -#endif
> diff --git a/hw/xfree86/i2c/tda8425_module.c b/hw/xfree86/i2c/tda8425_module.c
> deleted file mode 100644
> index 74c820f..0000000
> --- a/hw/xfree86/i2c/tda8425_module.c
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86Module.h"
> -
> -static XF86ModuleVersionInfo tda8425VersRec = {
> - "tda8425",
> - MODULEVENDORSTRING,
> - MODINFOSTRING1,
> - MODINFOSTRING2,
> - XORG_VERSION_CURRENT,
> - 1, 0, 0,
> - ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */
> - ABI_VIDEODRV_VERSION,
> - MOD_CLASS_NONE,
> - {0, 0, 0, 0}
> -};
> -
> -_X_EXPORT XF86ModuleData tda8425ModuleData = {
> - &tda8425VersRec,
> - NULL,
> - NULL
> -};
> diff --git a/hw/xfree86/i2c/tda9850.c b/hw/xfree86/i2c/tda9850.c
> deleted file mode 100644
> index d258bda..0000000
> --- a/hw/xfree86/i2c/tda9850.c
> +++ /dev/null
> @@ -1,136 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86.h"
> -#include "xf86i2c.h"
> -#include "tda9850.h"
> -#include "i2c_def.h"
> -
> -#define TDA9850(a,b) { \
> - data[0]=a; \
> - data[1]=b; \
> - I2C_WriteRead(&(t->d), data, 2, NULL, 0); \
> - }
> -
> -TDA9850Ptr
> -Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr)
> -{
> - TDA9850Ptr t;
> - I2CByte a;
> -
> - t = calloc(1, sizeof(TDA9850Rec));
> - if (t == NULL)
> - return NULL;
> - switch (addr) {
> - case TDA9850_ADDR_1:
> - t->d.DevName = "TDA9850 BTSC Stereo+SAP Audio Processor";
> - break;
> - default:
> - t->d.DevName = "Generic TDAxxxx";
> - break;
> - }
> - t->d.SlaveAddr = addr;
> - t->d.pI2CBus = b;
> - t->d.NextDev = NULL;
> - t->d.StartTimeout = b->StartTimeout;
> - t->d.BitTimeout = b->BitTimeout;
> - t->d.AcknTimeout = b->AcknTimeout;
> - t->d.ByteTimeout = b->ByteTimeout;
> -
> - if (!I2C_WriteRead(&(t->d), NULL, 0, &a, 1)) {
> - free(t);
> - return NULL;
> - }
> -
> - /* set default parameters */
> - if (!I2CDevInit(&(t->d))) {
> - free(t);
> - return NULL;
> - }
> -
> - return t;
> -}
> -
> -Bool
> -tda9850_init(TDA9850Ptr t)
> -{
> - t->stereo = 1;
> - t->sap = 0;
> - t->mute = TRUE;
> - t->sap_mute = TRUE;
> - tda9850_setaudio(t);
> - return TRUE;
> -}
> -
> -void
> -tda9850_setaudio(TDA9850Ptr t)
> -{
> - CARD8 data[2];
> -
> - if (t->mux == 2) {
> - TDA9850(0x04, 0x0F);
> - TDA9850(0x05, 0x0F);
> - TDA9850(0x06, 0x58);
> - TDA9850(0x07, 0x07);
> - TDA9850(0x08, 0x00);
> - TDA9850(0x09, 0x00);
> - TDA9850(0x0A, 0x03);
> - }
> - else {
> - TDA9850(0x04, 0x07);
> - TDA9850(0x05, 0x07);
> - TDA9850(0x06, 0x58);
> - TDA9850(0x07, 0x07);
> - TDA9850(0x08, 0x10);
> - TDA9850(0x09, 0x10);
> - TDA9850(0x0A, 0x03);
> - }
> -
> - TDA9850(0x06,
> - (t->stereo << 6) | (t->sap << 7) | (t->mute ? 0x8 : 0) | (t->
> - sap_mute ?
> - 0x10 :
> - 0x0));
> -}
> -
> -void
> -tda9850_mute(TDA9850Ptr t, Bool mute)
> -{
> - CARD8 data[2];
> -
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO, "tda9850_mute %s\n",
> - mute ? "on" : "off");
> - t->mute = mute;
> -
> - TDA9850(0x06,
> - (t->stereo << 6) | (t->sap << 7) | (t->mute ? 0x8 : 0x0) | (t->
> - sap_mute
> - ? 0x10 :
> - 0x0));
> -}
> -
> -void
> -tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute)
> -{
> - CARD8 data[2];
> -
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO, "tda9850_sap_mute %s\n",
> - sap_mute ? "on" : "off");
> - t->sap_mute = sap_mute;
> -
> - TDA9850(0x06,
> - (t->stereo << 6) | (t->sap << 7) | (t->mute ? 0x8 : 0x0) | (t->
> - sap_mute
> - ? 0x10 :
> - 0x0));
> -}
> -
> -CARD16
> -tda9850_getstatus(TDA9850Ptr t)
> -{
> - CARD16 status;
> -
> - I2C_WriteRead(&(t->d), NULL, 0, (I2CByte *) &status, 2);
> - return status;
> -}
> diff --git a/hw/xfree86/i2c/tda9850.h b/hw/xfree86/i2c/tda9850.h
> deleted file mode 100644
> index 7d82095..0000000
> --- a/hw/xfree86/i2c/tda9850.h
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -#ifndef __TDA9850_H__
> -#define __TDA9850_H__
> -
> -#include "xf86i2c.h"
> -
> -typedef struct {
> - I2CDevRec d;
> -
> - int mux;
> - int stereo;
> - int sap;
> - Bool mute;
> - Bool sap_mute;
> -} TDA9850Rec, *TDA9850Ptr;
> -
> -#define TDA9850_ADDR_1 0xB4
> -
> -#define xf86_Detect_tda9850 Detect_tda9850
> -extern _X_EXPORT TDA9850Ptr Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr);
> -
> -#define xf86_tda9850_init tda9850_init
> -extern _X_EXPORT Bool tda9850_init(TDA9850Ptr t);
> -
> -#define xf86_tda9850_setaudio tda9850_setaudio
> -extern _X_EXPORT void tda9850_setaudio(TDA9850Ptr t);
> -
> -#define xf86_tda9850_mute tda9850_mute
> -extern _X_EXPORT void tda9850_mute(TDA9850Ptr t, Bool mute);
> -
> -#define xf86_tda9850_sap_mute tda9850_sap_mute
> -extern _X_EXPORT void tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute);
> -
> -#define xf86_tda9850_getstatus tda9850_getstatus
> -extern _X_EXPORT CARD16 tda9850_getstatus(TDA9850Ptr t);
> -
> -#define TDA9850SymbolsList \
> - "Detect_tda9850", \
> - "tda9850_init", \
> - "tda9850_setaudio", \
> - "tda9850_mute", \
> - "tda9850_sap_mute"
> -
> -#endif
> diff --git a/hw/xfree86/i2c/tda9850_module.c b/hw/xfree86/i2c/tda9850_module.c
> deleted file mode 100644
> index 197d65a..0000000
> --- a/hw/xfree86/i2c/tda9850_module.c
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86Module.h"
> -
> -static XF86ModuleVersionInfo tda9850VersRec = {
> - "tda9850",
> - MODULEVENDORSTRING,
> - MODINFOSTRING1,
> - MODINFOSTRING2,
> - XORG_VERSION_CURRENT,
> - 1, 0, 0,
> - ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */
> - ABI_VIDEODRV_VERSION,
> - MOD_CLASS_NONE,
> - {0, 0, 0, 0}
> -};
> -
> -_X_EXPORT XF86ModuleData tda9850ModuleData = {
> - &tda9850VersRec,
> - NULL,
> - NULL
> -};
> diff --git a/hw/xfree86/i2c/tda9885.c b/hw/xfree86/i2c/tda9885.c
> deleted file mode 100644
> index fd859bd..0000000
> --- a/hw/xfree86/i2c/tda9885.c
> +++ /dev/null
> @@ -1,100 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86.h"
> -#include "xf86i2c.h"
> -#include "tda9885.h"
> -#include "i2c_def.h"
> -
> -TDA9885Ptr
> -Detect_tda9885(I2CBusPtr b, I2CSlaveAddr addr)
> -{
> - TDA9885Ptr t;
> - I2CByte a;
> -
> - t = calloc(1, sizeof(TDA9885Rec));
> - if (t == NULL)
> - return NULL;
> - switch (addr) {
> - case TDA9885_ADDR_1:
> - case TDA9885_ADDR_2:
> - case TDA9885_ADDR_3:
> - case TDA9885_ADDR_4:
> - t->d.DevName = "TDA9885 Alignment-free IF-PLL";
> - break;
> - default:
> - t->d.DevName = "Generic TDAxxxx";
> - break;
> - }
> - t->d.SlaveAddr = addr;
> - t->d.pI2CBus = b;
> - t->d.NextDev = NULL;
> - t->d.StartTimeout = b->StartTimeout;
> - t->d.BitTimeout = b->BitTimeout;
> - t->d.AcknTimeout = b->AcknTimeout;
> - t->d.ByteTimeout = b->ByteTimeout;
> -
> - if (!I2C_WriteRead(&(t->d), NULL, 0, &a, 1)) {
> - free(t);
> - return NULL;
> - }
> -
> - /* set default parameters */
> - if (!I2CDevInit(&(t->d))) {
> - free(t);
> - return NULL;
> - }
> -
> - return t;
> -}
> -
> -Bool
> -tda9885_init(TDA9885Ptr t)
> -{
> - t->forced_mute_audio = 1;
> - return TRUE;
> -}
> -
> -void
> -tda9885_getstatus(TDA9885Ptr t)
> -{
> - CARD8 value;
> -
> - I2C_WriteRead(&(t->d), NULL, 0, &value, 1);
> - t->after_reset = value & 1;
> - t->afc_status = (value >> 1) & 0xf;
> - t->fm_carrier = (value >> 5) & 1;
> - t->vif_level = (value >> 6) & 1;
> - t->afc_win = (value >> 7) & 1;
> -}
> -
> -void
> -tda9885_setparameters(TDA9885Ptr t)
> -{
> - CARD8 data[4];
> -
> - data[0] = 0; /* start with subaddress 0 */
> - data[1] = (t->sound_trap & 1) | ((t->auto_mute_fm & 1) << 1) | ((t->carrier_mode & 1) << 2) | ((t->modulation & 3) << 3) | ((t->forced_mute_audio & 1) << 5) | ((t->port1 & 1) << 6) | ((t->port2 & 1) << 7); /* B data */
> - data[2] = (t->top_adjustment & 0x1f) | ((t->deemphasis & 0x3) << 5) | ((t->audio_gain & 1) << 7); /* C data */
> - data[3] = (t->standard_sound_carrier & 0x3) | ((t->standard_video_if & 0x07) << 2) | ((t->minimum_gain & 0x01) << 5) | ((t->gating & 0x01) << 6) | ((t->vif_agc & 0x01) << 7); /* E data */
> -
> - I2C_WriteRead(&(t->d), data, 4, NULL, 0);
> -
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "TDA9885 setparam: B data: %x, C data: %x, E data: %x\n",
> - data[1], data[2], data[3]);
> -}
> -
> -void
> -tda9885_dumpstatus(TDA9885Ptr t)
> -{
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "TDA9885 status: after_reset=%d afc_status=%d (%3.1f kHz off) fm_carrier=%d vif_level=%d afc_win=%d %s\n",
> - t->after_reset, t->afc_status,
> - (t->afc_status <
> - 8) ? -12.5 - t->afc_status * 25.0 : -12.5 + (16 -
> - t->afc_status) *
> - 25.0, t->fm_carrier, t->vif_level, t->afc_win,
> - t->afc_win ? "VCO in" : "VCO out");
> -}
> diff --git a/hw/xfree86/i2c/tda9885.h b/hw/xfree86/i2c/tda9885.h
> deleted file mode 100644
> index 2d8a8af..0000000
> --- a/hw/xfree86/i2c/tda9885.h
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -#ifndef __TDA9885_H__
> -#define __TDA9885_H__
> -
> -#include "xf86i2c.h"
> -
> -typedef struct {
> - I2CDevRec d;
> -
> - /* write-only parameters */
> - /* B DATA */
> - CARD8 sound_trap;
> - CARD8 auto_mute_fm;
> - CARD8 carrier_mode;
> - CARD8 modulation;
> - CARD8 forced_mute_audio;
> - CARD8 port1;
> - CARD8 port2;
> - /* C DATA */
> - CARD8 top_adjustment;
> - CARD8 deemphasis;
> - CARD8 audio_gain;
> - /* E DATA */
> - CARD8 standard_sound_carrier;
> - CARD8 standard_video_if;
> - CARD8 minimum_gain;
> - CARD8 gating;
> - CARD8 vif_agc;
> - /* read-only values */
> -
> - CARD8 after_reset;
> - CARD8 afc_status;
> - CARD8 vif_level;
> - CARD8 afc_win;
> - CARD8 fm_carrier;
> -} TDA9885Rec, *TDA9885Ptr;
> -
> -#define TDA9885_ADDR_1 0x86
> -#define TDA9885_ADDR_2 0x84
> -#define TDA9885_ADDR_3 0x96
> -#define TDA9885_ADDR_4 0x94
> -
> -#define xf86_Detect_tda9885 Detect_tda9885
> -extern _X_EXPORT TDA9885Ptr Detect_tda9885(I2CBusPtr b, I2CSlaveAddr addr);
> -
> -#define xf86_tda9885_init tda9885_init
> -extern _X_EXPORT Bool tda9885_init(TDA9885Ptr t);
> -
> -#define xf86_tda9885_setparameters tda9885_setparameters
> -extern _X_EXPORT void tda9885_setparameters(TDA9885Ptr t);
> -
> -#define xf86_tda9885_getstatus tda9885_getstatus
> -extern _X_EXPORT void tda9885_getstatus(TDA9885Ptr t);
> -
> -#define xf86_tda9885_dumpstatus tda9885_dumpstatus
> -extern _X_EXPORT void tda9885_dumpstatus(TDA9885Ptr t);
> -
> -#define TDA9885SymbolsList \
> - "Detect_tda9885", \
> - "tda9885_init", \
> - "tda9885_setaudio", \
> - "tda9885_mute"
> -
> -#endif
> diff --git a/hw/xfree86/i2c/tda9885_module.c b/hw/xfree86/i2c/tda9885_module.c
> deleted file mode 100644
> index e71bd60..0000000
> --- a/hw/xfree86/i2c/tda9885_module.c
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86Module.h"
> -
> -static XF86ModuleVersionInfo tda9885VersRec = {
> - "tda9885",
> - MODULEVENDORSTRING,
> - MODINFOSTRING1,
> - MODINFOSTRING2,
> - XORG_VERSION_CURRENT,
> - 1, 0, 0,
> - ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */
> - ABI_VIDEODRV_VERSION,
> - MOD_CLASS_NONE,
> - {0, 0, 0, 0}
> -};
> -
> -_X_EXPORT XF86ModuleData tda9885ModuleData = {
> - &tda9885VersRec,
> - NULL,
> - NULL
> -};
> diff --git a/hw/xfree86/i2c/uda1380.c b/hw/xfree86/i2c/uda1380.c
> deleted file mode 100644
> index 8722687..0000000
> --- a/hw/xfree86/i2c/uda1380.c
> +++ /dev/null
> @@ -1,196 +0,0 @@
> -/*************************************************************************************
> - * Copyright (C) 2005 Bogdan D. bogdand at users.sourceforge.net
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a copy of this
> - * software and associated documentation files (the "Software"), to deal in the Software
> - * without restriction, including without limitation the rights to use, copy, modify,
> - * merge, publish, distribute, sublicense, and/or sell copies of the Software,
> - * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in all copies or
> - * substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
> - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
> - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM,
> - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> - *
> - * Except as contained in this notice, the name of the author shall not be used in advertising or
> - * otherwise to promote the sale, use or other dealings in this Software without prior written
> - * authorization from the author.
> - *
> - ************************************************************************************/
> -
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86.h"
> -#include "xf86i2c.h"
> -#include "uda1380.h"
> -#include "i2c_def.h"
> -
> -UDA1380Ptr
> -Detect_uda1380(I2CBusPtr b, I2CSlaveAddr addr)
> -{
> - UDA1380Ptr t;
> - I2CByte a;
> -
> - t = calloc(1, sizeof(UDA1380Rec));
> - if (t == NULL)
> - return NULL;
> - switch (addr) {
> - case UDA1380_ADDR_1:
> - case UDA1380_ADDR_2:
> - t->d.DevName = "UDA1380 Stereo audion coder-decoder";
> - break;
> - default:
> - t->d.DevName = "Generic UDAxxxx";
> - break;
> - }
> - t->d.SlaveAddr = addr;
> - t->d.pI2CBus = b;
> - t->d.NextDev = NULL;
> - t->d.StartTimeout = b->StartTimeout;
> - t->d.BitTimeout = b->BitTimeout;
> - t->d.AcknTimeout = b->AcknTimeout;
> - t->d.ByteTimeout = b->ByteTimeout;
> -
> - if (!I2C_WriteRead(&(t->d), NULL, 0, &a, 1)) {
> - free(t);
> - return NULL;
> - }
> -
> - /* set default parameters */
> - if (!I2CDevInit(&(t->d))) {
> - free(t);
> - return NULL;
> - }
> -
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "UDA1380 stereo coder-decoder detected\n");
> -
> - return t;
> -}
> -
> -Bool
> -uda1380_init(UDA1380Ptr t)
> -{
> - CARD8 data[3];
> - CARD16 tmp;
> - Bool ret;
> -
> - /* Power control */
> - data[0] = 0x02;
> - tmp =
> - (1 << 13) | (1 << 10) | (1 << 8) | (1 << 7) | (1 << 6) | (1 << 3) | (1
> - <<
> - 1);
> - data[1] = (CARD8) ((tmp >> 8) & 0xff);
> - data[2] = (CARD8) (tmp & 0xff);
> - ret = I2C_WriteRead(&(t->d), data, 3, NULL, 0);
> - if (ret == FALSE) {
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "UDA1380 failed to initialize\n");
> - return FALSE;
> - }
> -
> - /* Analog mixer (AVC) */
> - data[0] = 0x03;
> - /* the analog mixer is muted initially */
> - data[1] = 0x3f;
> - data[2] = 0x3f;
> - ret = I2C_WriteRead(&(t->d), data, 3, NULL, 0);
> - if (ret == FALSE) {
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "UDA1380 failed to initialize\n");
> - return FALSE;
> - }
> -
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO, "UDA1380 initialized\n");
> -
> - return TRUE;
> -}
> -
> -void
> -uda1380_shutdown(UDA1380Ptr t)
> -{
> - CARD8 data[3];
> - Bool ret;
> -
> - /* Power control */
> - data[0] = 0x02;
> - data[1] = 0;
> - data[2] = 0;
> - ret = I2C_WriteRead(&(t->d), data, 3, NULL, 0);
> - if (ret == FALSE)
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "UDA1380 failed to shutdown\n");
> -}
> -
> -void
> -uda1380_setvolume(UDA1380Ptr t, INT32 value)
> -{
> - CARD8 data[3];
> -
> - /*
> - * We have to scale the value ranging from -1000 to 1000 to 0x2c to 0
> - */
> - CARD8 volume = 47 - (CARD8) ((value + 1000) * 47 / 2000);
> - Bool ret;
> -
> - t->analog_mixer_settings = ((volume << 8) & 0x3f00) | (volume & 0x3f);
> -
> - /* Analog mixer (AVC) */
> - data[0] = 0x03;
> - data[1] = volume & 0x3f;
> - data[2] = volume & 0x3f;
> - ret = I2C_WriteRead(&(t->d), data, 3, NULL, 0);
> - if (ret == FALSE)
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "UDA1380 failed to set volume\n");
> -}
> -
> -void
> -uda1380_mute(UDA1380Ptr t, Bool mute)
> -{
> - CARD8 data[3];
> - Bool ret;
> -
> - if (mute == TRUE) {
> - /* Analog mixer (AVC) */
> - data[0] = 0x03;
> - data[1] = 0xff;
> - data[2] = 0xff;
> - ret = I2C_WriteRead(&(t->d), data, 3, NULL, 0);
> - if (ret == FALSE)
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "UDA1380 failed to mute\n");
> - }
> - else {
> - /* Analog mixer (AVC) */
> - data[0] = 0x03;
> - data[1] = (CARD8) ((t->analog_mixer_settings >> 8) & 0x3f);
> - data[2] = (CARD8) (t->analog_mixer_settings & 0x3f);
> - ret = I2C_WriteRead(&(t->d), data, 3, NULL, 0);
> - if (ret == FALSE)
> - xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO,
> - "UDA1380 failed to unmute\n");
> - }
> -}
> -
> -void
> -uda1380_getstatus(UDA1380Ptr t)
> -{
> -}
> -
> -void
> -uda1380_setparameters(UDA1380Ptr t)
> -{
> -}
> -
> -void
> -uda1380_dumpstatus(UDA1380Ptr t)
> -{
> -}
> diff --git a/hw/xfree86/i2c/uda1380.h b/hw/xfree86/i2c/uda1380.h
> deleted file mode 100644
> index f0bc616..0000000
> --- a/hw/xfree86/i2c/uda1380.h
> +++ /dev/null
> @@ -1,81 +0,0 @@
> -/*************************************************************************************
> - * Copyright (C) 2005 Bogdan D. bogdand at users.sourceforge.net
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a copy of this
> - * software and associated documentation files (the "Software"), to deal in the Software
> - * without restriction, including without limitation the rights to use, copy, modify,
> - * merge, publish, distribute, sublicense, and/or sell copies of the Software,
> - * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in all copies or
> - * substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
> - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
> - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM,
> - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> - *
> - * Except as contained in this notice, the name of the author shall not be used in advertising or
> - * otherwise to promote the sale, use or other dealings in this Software without prior written
> - * authorization from the author.
> - *
> - * Revision 1.3 2005/09/24 21:56:00 bogdand
> - * Changed the license to a X/MIT one
> - *
> - * Revision 1.2 2005/07/01 22:43:11 daniels
> - * Change all misc.h and os.h references to <X11/foo.h>.
> - *
> - *
> - ************************************************************************************/
> -
> -#ifndef __UDA1380_H__
> -#define __UDA1380_H__
> -
> -#include "xf86i2c.h"
> -
> -typedef struct {
> - I2CDevRec d;
> -
> - CARD16 analog_mixer_settings; /* register 0x03 */
> -
> -} UDA1380Rec, *UDA1380Ptr;
> -
> -#define UDA1380_ADDR_1 0x30
> -#define UDA1380_ADDR_2 0x34
> -
> -#define xf86_Detect_uda1380 Detect_uda1380
> -extern _X_EXPORT UDA1380Ptr Detect_uda1380(I2CBusPtr b, I2CSlaveAddr addr);
> -
> -#define xf86_uda1380_init uda1380_init
> -extern _X_EXPORT Bool uda1380_init(UDA1380Ptr t);
> -
> -#define xf86_uda1380_shutdown uda1380_shutdown
> -extern _X_EXPORT void uda1380_shutdown(UDA1380Ptr t);
> -
> -#define xf86_uda1380_setvolume uda1380_setvolume
> -extern _X_EXPORT void uda1380_setvolume(UDA1380Ptr t, INT32);
> -
> -#define xf86_uda1380_mute uda1380_mute
> -extern _X_EXPORT void uda1380_mute(UDA1380Ptr t, Bool);
> -
> -#define xf86_uda1380_setparameters uda1380_setparameters
> -extern _X_EXPORT void uda1380_setparameters(UDA1380Ptr t);
> -
> -#define xf86_uda1380_getstatus uda1380_getstatus
> -extern _X_EXPORT void uda1380_getstatus(UDA1380Ptr t);
> -
> -#define xf86_uda1380_dumpstatus uda1380_dumpstatus
> -extern _X_EXPORT void uda1380_dumpstatus(UDA1380Ptr t);
> -
> -#define UDA1380SymbolsList \
> - "Detect_uda1380", \
> - "uda1380_init", \
> - "uda1380_shutdown", \
> - "uda1380_setvolume", \
> - "uda1380_mute", \
> - "uda1380_setparameters", \
> - "uda1380_getstatus", \
> - "uda1380_dumpstatus"
> -
> -#endif
> diff --git a/hw/xfree86/i2c/uda1380_module.c b/hw/xfree86/i2c/uda1380_module.c
> deleted file mode 100644
> index dca834b..0000000
> --- a/hw/xfree86/i2c/uda1380_module.c
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "xf86Module.h"
> -
> -static XF86ModuleVersionInfo uda1380VersRec = {
> - "uda1380",
> - MODULEVENDORSTRING,
> - MODINFOSTRING1,
> - MODINFOSTRING2,
> - XORG_VERSION_CURRENT,
> - 1, 0, 0,
> - ABI_CLASS_VIDEODRV, /* This needs the video driver ABI */
> - ABI_VIDEODRV_VERSION,
> - MOD_CLASS_NONE,
> - {0, 0, 0, 0}
> -};
> -
> -_X_EXPORT XF86ModuleData uda1380ModuleData = {
> - &uda1380VersRec,
> - NULL,
> - NULL
> -};
> diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
> index e1f649a..f1f7c22 100644
> --- a/hw/xfree86/loader/loadmod.c
> +++ b/hw/xfree86/loader/loadmod.c
> @@ -197,7 +197,6 @@ static const char *stdSubdirs[] = {
> "",
> "input/",
> "drivers/",
> - "multimedia/",
> "extensions/",
> "internal/",
> NULL
> --
> 1.9.3
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list