func: struct dvb_frontend *xc2028_attach(struct dvb_frontend struct xc2028_config *cfg) struct xc2028_data * priv ; int instance ; if ( NULL == cfg )  if ( ! fe )  instance = hybrid_tuner_request_state ( struct xc2028_data , priv hybrid_tuner_instance_list cfg -> i2c_adap , cfg -> i2c_addr "xc2028" ) switch ( instance )  priv -> ctrl . max_len = 13; fe -> tuner_priv = priv; fe -> tuner_priv = priv; xc2028_dvb_release ( fe ); static int xc2028_dvb_release(struct dvb_frontend *fe) struct xc2028_data * priv = fe -> tuner_priv ; if ( hybrid_tuner_report_instance_count ( priv ) == 1 )  free_firmware ( priv ); static void free_firmware(struct xc2028_data *priv) if ( ! priv -> firm )  priv -> firm = NULL; priv -> firm_size = 0; priv -> state = XC2028_NO_FIRMWARE; memset ( & priv -> cur_fw , 0 , sizeof ( priv -> cur_fw ) ); 