From: Mauro Carvalho Chehab Date: Sat, 18 Jan 2014 14:13:02 +0000 (-0300) Subject: [media] drx-j: dynamically load the firmware X-Git-Tag: v3.15-rc1~85^2~263 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b48293db4a348e9759c1f8a41a84f2e9f559decf;p=pandora-kernel.git [media] drx-j: dynamically load the firmware Instead of hardcoding the firmware files together with the driver, use request_firmware() way, loading it from userspace. The firmware files are placed at: http://linuxtv.org/downloads/firmware/#8 And they'll be latter submitted to linux-firmware git tree. Acked-by: Devin Heitmueller Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c b/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c index a19547b08b02..f0f14ed95958 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c +++ b/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c @@ -29,9 +29,10 @@ #include "dvb_frontend.h" #include "drx39xxj.h" #include "drx_driver.h" -#include "drxj_mc.h" #include "drxj.h" +#define DRX39XX_MAIN_FIRMWARE "dvb-fe-drxj-mc-1.0.8.fw" + static int drx39xxj_set_powerstate(struct dvb_frontend *fe, int enable) { struct drx39xxj_state *state = fe->demodulator_priv; @@ -323,6 +324,8 @@ static void drx39xxj_release(struct dvb_frontend *fe) kfree(demod->my_ext_attr); kfree(demod->my_common_attr); kfree(demod->my_i2c_dev_addr); + if (demod->firmware) + release_firmware(demod->firmware); kfree(demod); kfree(state); } @@ -377,15 +380,13 @@ struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c) demod->my_i2c_dev_addr = demod_addr; demod->my_common_attr = demod_comm_attr; demod->my_i2c_dev_addr->user_data = state; - demod->my_common_attr->microcode = DRXJ_MC_MAIN; -#if 0 - demod->my_common_attr->verify_microcode = false; -#endif + demod->my_common_attr->microcode_file = DRX39XX_MAIN_FIRMWARE; demod->my_common_attr->verify_microcode = true; demod->my_common_attr->intermediate_freq = 5000; demod->my_ext_attr = demod_ext_attr; ((struct drxj_data *)demod_ext_attr)->uio_sma_tx_mode = DRX_UIO_MODE_READWRITE; demod->my_tuner = NULL; + demod->i2c = i2c; result = drx_open(demod); if (result != 0) { @@ -455,3 +456,4 @@ static struct dvb_frontend_ops drx39xxj_ops = { MODULE_DESCRIPTION("Micronas DRX39xxj Frontend"); MODULE_AUTHOR("Devin Heitmueller"); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(DRX39XX_MAIN_FIRMWARE); Reading git-diff-tree failed