media: dvb-frontends/m88rs6060: Fix m88rs6060_probe().

This commit is contained in:
CrazyCat
2024-03-15 17:30:55 +02:00
parent a4014d9835
commit 8ac9d8f7e0

View File

@@ -3506,7 +3506,6 @@ static int m88rs6060_probe(struct i2c_client *client)
base->count++; base->count++;
dev->base = base; dev->base = base;
}else{ }else{
base = kzalloc(sizeof(struct m88rs6060_base),GFP_KERNEL); base = kzalloc(sizeof(struct m88rs6060_base),GFP_KERNEL);
if(!base) if(!base)
goto err_kfree; goto err_kfree;
@@ -3519,17 +3518,19 @@ static int m88rs6060_probe(struct i2c_client *client)
} }
dev->regmap = regmap_init_i2c(client, &regmap_config); dev->regmap = regmap_init_i2c(client, &regmap_config);
if (IS_ERR(dev->regmap)) { if (IS_ERR(dev->regmap)) {
ret = PTR_ERR(dev->regmap); ret = PTR_ERR(dev->regmap);
goto err_base_kfree; goto err_base_kfree;
} }
/*check demod i2c */ /*check demod i2c */
ret = regmap_read(dev->regmap, 0x00, &tmp); ret = regmap_read(dev->regmap, 0x00, &tmp);
if (ret) if (ret)
goto err_regmap_exit; goto err_regmap_exit;
if (tmp != 0xe2) if (tmp != 0xe2)
goto err_regmap_exit; {
ret = -ENODEV;
goto err_regmap_exit;
}
dev->mclk = 96000; dev->mclk = 96000;
@@ -3537,7 +3538,6 @@ static int m88rs6060_probe(struct i2c_client *client)
*cfg->fe = &dev->fe; *cfg->fe = &dev->fe;
dev->fe_status = 0; dev->fe_status = 0;
if(dev->config.HAS_CI){ //for 6910SECI if(dev->config.HAS_CI){ //for 6910SECI
//for ci clk si5351 //for ci clk si5351
struct si5351_priv *priv; struct si5351_priv *priv;
@@ -3593,7 +3593,11 @@ static int m88rs6060_probe(struct i2c_client *client)
err_regmap_exit: err_regmap_exit:
regmap_exit(dev->regmap); regmap_exit(dev->regmap);
err_base_kfree: err_base_kfree:
kfree(base); base->count--;
if (base->count==0) {
list_del(&base->m88rs6060list);
kfree(base);
}
err_kfree: err_kfree:
kfree(dev); kfree(dev);
@@ -3610,15 +3614,15 @@ static void m88rs6060_remove(struct i2c_client *client)
dev->base->count --; dev->base->count --;
if(dev->base->count==0) if(dev->base->count==0)
{ {
list_del(&dev->base->m88rs6060list); list_del(&dev->base->m88rs6060list);
kfree(dev->base); kfree(dev->base);
} }
if(dev->priv){ if(dev->priv){
dev->priv->base1->count --; dev->priv->base1->count --;
if(dev->priv->base1->count==0){ if(dev->priv->base1->count==0){
list_del(&dev->priv->base1->si5351list); list_del(&dev->priv->base1->si5351list);
kfree(dev->priv); kfree(dev->priv);
} }
} }
regmap_exit(dev->regmap); regmap_exit(dev->regmap);
dev->fe.ops.release = NULL; dev->fe.ops.release = NULL;