select DVB_STV0297 if !DVB_FE_CUSTOMISE
        select DVB_BCM3510 if !DVB_FE_CUSTOMISE
        select DVB_LGDT330X if !DVB_FE_CUSTOMISE
-       select DVB_TUNER_LGH06XF if !DVB_FE_CUSTOMISE
        help
          Support for the digital TV receiver chip made by B2C2 Inc. included in
          Technisats PCI cards and USB boxes.
 
 #include "stv0297.h"
 #include "mt312.h"
 #include "lgdt330x.h"
-#include "lgh06xf.h"
 #include "dvb-pll.h"
 
 /* lnb control */
        /* try the air atsc 3nd generation (lgdt3303) */
        if ((fc->fe = dvb_attach(lgdt330x_attach, &air2pc_atsc_hd5000_config, &fc->i2c_adap)) != NULL) {
                fc->dev_type          = FC_AIR_ATSC3;
-               dvb_attach(lgh06xf_attach, fc->fe, &fc->i2c_adap);
+               dvb_attach(dvb_pll_attach, fc->fe, 0x61, &fc->i2c_adap, &dvb_pll_lg_tdvs_h06xf);
                info("found the lgdt3303 at i2c address: 0x%02x",air2pc_atsc_hd5000_config.demod_address);
        } else
        /* try the air atsc 1nd generation (bcm3510)/panasonic ct10s */
 
        select DVB_CX24110 if !DVB_FE_CUSTOMISE
        select DVB_OR51211 if !DVB_FE_CUSTOMISE
        select DVB_LGDT330X if !DVB_FE_CUSTOMISE
-       select DVB_TUNER_LGH06XF if !DVB_FE_CUSTOMISE
+       select DVB_PLL
        select DVB_ZL10353 if !DVB_FE_CUSTOMISE
        select FW_LOADER
        help
 
                lgdt330x_reset(card);
                card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config, card->i2c_adapter);
                if (card->fe != NULL) {
-                       dvb_attach(lgh06xf_attach, card->fe, card->i2c_adapter);
+                       dvb_attach(dvb_pll_attach, card->fe, 0x61,
+                                  card->i2c_adapter, &dvb_pll_lg_tdvs_h06xf);
                        dprintk ("dvb_bt8xx: lgdt330x detected\n");
                }
                break;
 
 #include "cx24110.h"
 #include "or51211.h"
 #include "lgdt330x.h"
-#include "lgh06xf.h"
 #include "zl10353.h"
+#include "dvb-pll.h"
 
 struct dvb_bt8xx_card {
        struct mutex lock;
 
        select DVB_PLL
        select DVB_CX22702 if !DVB_FE_CUSTOMISE
        select DVB_LGDT330X if !DVB_FE_CUSTOMISE
-       select DVB_TUNER_LGH06XF if !DVB_FE_CUSTOMISE
        select DVB_MT352 if !DVB_FE_CUSTOMISE
        select DVB_ZL10353 if !DVB_FE_CUSTOMISE
        help
 
 
 #include "cx22702.h"
 #include "lgdt330x.h"
-#include "lgh06xf.h"
 #include "mt352.h"
 #include "mt352_priv.h"
 #include "zl10353.h"
 
 static int cxusb_lgh064f_tuner_attach(struct dvb_usb_adapter *adap)
 {
-       dvb_attach(lgh06xf_attach, adap->fe, &adap->dev->i2c_adap);
+       dvb_attach(dvb_pll_attach, adap->fe, 0x61, &adap->dev->i2c_adap,
+                  &dvb_pll_lg_tdvs_h06xf);
        return 0;
 }
 
 
        help
          A driver for the silicon IF tuner MT2060 from Microtune.
 
-config DVB_TUNER_LGH06XF
-       tristate "LG TDVS-H06xF ATSC tuner"
-       depends on DVB_CORE && I2C
-       select DVB_PLL
-       default m if DVB_FE_CUSTOMISE
-       help
-         A driver for the LG TDVS-H06xF ATSC tuner family.
-
 comment "Miscellaneous devices"
        depends on DVB_CORE
 
 
 obj-$(CONFIG_DVB_TUNER_MT2060) += mt2060.o
 obj-$(CONFIG_DVB_TUNER_QT1010) += qt1010.o
 obj-$(CONFIG_DVB_TUA6100) += tua6100.o
-obj-$(CONFIG_DVB_TUNER_LGH06XF) += lgh06xf.o
 
        .name  = "LG TDVS-H06xF",
        .min   =  54000000,
        .max   = 863000000,
+       .initdata = tua603x_agc103,
        .count = 3,
        .entries = {
                {  165000000, 44000000, 62500, 0xce, 0x01 },
 
+++ /dev/null
-/*
- *  lgh06xf.c - ATSC Tuner support for LG TDVS-H06xF
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "dvb-pll.h"
-#include "lgh06xf.h"
-
-#define LG_H06XF_PLL_I2C_ADDR 0x61
-
-struct lgh06xf_priv {
-       struct i2c_adapter *i2c;
-       u32 frequency;
-};
-
-static int lgh06xf_release(struct dvb_frontend *fe)
-{
-       kfree(fe->tuner_priv);
-       fe->tuner_priv = NULL;
-       return 0;
-}
-
-static int lgh06xf_set_params(struct dvb_frontend* fe,
-                             struct dvb_frontend_parameters* params)
-{
-       struct lgh06xf_priv *priv = fe->tuner_priv;
-       u8 buf[4];
-       struct i2c_msg msg = { .addr = LG_H06XF_PLL_I2C_ADDR, .flags = 0,
-                              .buf = buf, .len = sizeof(buf) };
-       u32 frequency;
-       int result;
-
-       if ((result = dvb_pll_configure(&dvb_pll_lg_tdvs_h06xf, buf,
-                                       params->frequency, 0)) < 0)
-               return result;
-       else
-               frequency = result;
-
-       if (fe->ops.i2c_gate_ctrl)
-               fe->ops.i2c_gate_ctrl(fe, 1);
-       if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) {
-               printk(KERN_WARNING "lgh06xf: %s error "
-                      "(addr %02x <- %02x, result = %i)\n",
-                      __FUNCTION__, buf[0], buf[1], result);
-               if (result < 0)
-                       return result;
-               else
-                       return -EREMOTEIO;
-       }
-
-       /* Set the Auxiliary Byte. */
-       buf[0] = buf[2];
-       buf[0] &= ~0x20;
-       buf[0] |= 0x18;
-       buf[1] = 0x50;
-       msg.len = 2;
-       if (fe->ops.i2c_gate_ctrl)
-               fe->ops.i2c_gate_ctrl(fe, 1);
-       if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) {
-               printk(KERN_WARNING "lgh06xf: %s error "
-                      "(addr %02x <- %02x, result = %i)\n",
-                      __FUNCTION__, buf[0], buf[1], result);
-               if (result < 0)
-                       return result;
-               else
-                       return -EREMOTEIO;
-       }
-
-       priv->frequency = frequency;
-
-       return 0;
-}
-
-static int lgh06xf_get_frequency(struct dvb_frontend *fe, u32 *frequency)
-{
-       struct lgh06xf_priv *priv = fe->tuner_priv;
-       *frequency = priv->frequency;
-       return 0;
-}
-
-static struct dvb_tuner_ops lgh06xf_tuner_ops = {
-       .release       = lgh06xf_release,
-       .set_params    = lgh06xf_set_params,
-       .get_frequency = lgh06xf_get_frequency,
-};
-
-struct dvb_frontend* lgh06xf_attach(struct dvb_frontend *fe,
-                                   struct i2c_adapter *i2c)
-{
-       struct lgh06xf_priv *priv = NULL;
-
-       priv = kzalloc(sizeof(struct lgh06xf_priv), GFP_KERNEL);
-       if (priv == NULL)
-               return NULL;
-
-       priv->i2c = i2c;
-
-       memcpy(&fe->ops.tuner_ops, &lgh06xf_tuner_ops,
-              sizeof(struct dvb_tuner_ops));
-
-       strlcpy(fe->ops.tuner_ops.info.name, dvb_pll_lg_tdvs_h06xf.name,
-               sizeof(fe->ops.tuner_ops.info.name));
-
-       fe->ops.tuner_ops.info.frequency_min = dvb_pll_lg_tdvs_h06xf.min;
-       fe->ops.tuner_ops.info.frequency_max = dvb_pll_lg_tdvs_h06xf.max;
-
-       fe->tuner_priv = priv;
-       return fe;
-}
-
-EXPORT_SYMBOL(lgh06xf_attach);
-
-MODULE_DESCRIPTION("LG TDVS-H06xF ATSC Tuner support");
-MODULE_AUTHOR("Michael Krufky");
-MODULE_LICENSE("GPL");
-
-/*
- * Local variables:
- * c-basic-offset: 8
- * End:
- */
 
+++ /dev/null
-/*
- *  lgh06xf.h - ATSC Tuner support for LG TDVS-H06xF
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _LGH06XF_H_
-#define _LGH06XF_H_
-#include "dvb_frontend.h"
-
-#if defined(CONFIG_DVB_TUNER_LGH06XF) || (defined(CONFIG_DVB_TUNER_LGH06XF_MODULE) && defined(MODULE))
-extern struct dvb_frontend* lgh06xf_attach(struct dvb_frontend* fe,
-                                           struct i2c_adapter *i2c);
-#else
-static inline struct dvb_frontend* lgh06xf_attach(struct dvb_frontend* fe,
-                                                 struct i2c_adapter *i2c)
-{
-       printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
-       return NULL;
-}
-#endif /* CONFIG_DVB_TUNER_LGH06XF */
-
-#endif /* _LGH06XF_H_ */
 
        select DVB_OR51132 if !DVB_FE_CUSTOMISE
        select DVB_CX22702 if !DVB_FE_CUSTOMISE
        select DVB_LGDT330X if !DVB_FE_CUSTOMISE
-       select DVB_TUNER_LGH06XF if !DVB_FE_CUSTOMISE
        select DVB_NXT200X if !DVB_FE_CUSTOMISE
        select DVB_CX24123 if !DVB_FE_CUSTOMISE
        select DVB_ISL6421 if !DVB_FE_CUSTOMISE
 
 #include "cx22702.h"
 #include "or51132.h"
 #include "lgdt330x.h"
-#include "lgh06xf.h"
 #include "nxt200x.h"
 #include "cx24123.h"
 #include "isl6421.h"
                                               &fusionhdtv_5_gold,
                                               &dev->core->i2c_adap);
                if (dev->dvb.frontend != NULL) {
-                       dvb_attach(lgh06xf_attach, dev->dvb.frontend,
-                                  &dev->core->i2c_adap);
+                       dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61,
+                                  &dev->core->i2c_adap,
+                                  &dvb_pll_lg_tdvs_h06xf);
                }
                }
                break;
                                               &pchdtv_hd5500,
                                               &dev->core->i2c_adap);
                if (dev->dvb.frontend != NULL) {
-                       dvb_attach(lgh06xf_attach, dev->dvb.frontend,
-                                  &dev->core->i2c_adap);
+                       dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61,
+                                  &dev->core->i2c_adap,
+                                  &dvb_pll_lg_tdvs_h06xf);
                }
                }
                break;