Em Wed, 13 Aug 2014 19:09:23 -0600 Shuah Khan <shuah.kh@xxxxxxxxxxx> escreveu: > xc5000 releases firmware right after loading it. Change it to > save the firmware and release it from xc5000_release(). This > helps avoid fecthing firmware when forced firmware load requests > come in to change analog tv frequence and when firmware needs to > be reloaded after suspend and resume. > > Signed-off-by: Shuah Khan <shuah.kh@xxxxxxxxxxx> > --- > drivers/media/tuners/xc5000.c | 34 ++++++++++++++++++++-------------- > 1 file changed, 20 insertions(+), 14 deletions(-) > > diff --git a/drivers/media/tuners/xc5000.c b/drivers/media/tuners/xc5000.c > index 512fe50..31b1dec 100644 > --- a/drivers/media/tuners/xc5000.c > +++ b/drivers/media/tuners/xc5000.c > @@ -70,6 +70,8 @@ struct xc5000_priv { > > struct dvb_frontend *fe; > struct delayed_work timer_sleep; > + > + const struct firmware *firmware; > }; > > /* Misc Defines */ > @@ -1136,20 +1138,23 @@ static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe, int force) > if (!force && xc5000_is_firmware_loaded(fe) == 0) > return 0; > > - ret = request_firmware(&fw, desired_fw->name, > - priv->i2c_props.adap->dev.parent); > - if (ret) { > - printk(KERN_ERR "xc5000: Upload failed. (file not found?)\n"); > - return ret; > - } > - > - dprintk(1, "firmware read %Zu bytes.\n", fw->size); > + if (!priv->firmware) { > + ret = request_firmware(&fw, desired_fw->name, > + priv->i2c_props.adap->dev.parent); > + if (ret) { > + pr_err("xc5000: Upload failed. rc %d\n", ret); > + return ret; > + } > + dprintk(1, "firmware read %Zu bytes.\n", fw->size); > > - if (fw->size != desired_fw->size) { > - printk(KERN_ERR "xc5000: Firmware file with incorrect size\n"); > - ret = -EINVAL; > - goto err; > - } > + if (fw->size != desired_fw->size) { > + pr_err("xc5000: Firmware file with incorrect size\n"); > + ret = -EINVAL; > + goto err; In this case, we should be releasing the firmware too. Btw, this code will also add a memory leak, as priv->firmware will be null, but the firmware was loaded. The rest of the patch looks ok. Regards, Mauro -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html