946 .set_params = xc5000_set_params,
947 .set_analog_params = xc5000_set_analog_params,
948 .get_frequency = xc5000_get_frequency,
949 .get_bandwidth = xc5000_get_bandwidth,
950 .get_status = xc5000_get_status
951};
952
953struct dvb_frontend *xc5000_attach(struct dvb_frontend *fe,
954 struct i2c_adapter *i2c,
955 struct xc5000_config *cfg)
956{
957 struct xc5000_priv *priv = NULL;
958 int instance;
959 u16 id = 0;
960
961 dprintk(1, "%s(%d-%04x)\n", __func__,
962 i2c ? i2c_adapter_id(i2c) : -1,
963 cfg ? cfg->i2c_address : -1);
964
965 mutex_lock(&xc5000_list_mutex);
966
967 instance = hybrid_tuner_request_state(struct xc5000_priv, priv,
968 hybrid_tuner_instance_list,
969 i2c, cfg->i2c_address, "xc5000");
970 switch (instance) {
971 case 0:
972 goto fail;
973 break;
974 case 1:
975
976 priv->bandwidth = BANDWIDTH_6_MHZ;
977 priv->if_khz = cfg->if_khz;
978
979 fe->tuner_priv = priv;
980 break;
981 default:
982
983 fe->tuner_priv = priv;
984 break;
985 }
986