V4L/DVB (5315): Tda1004x: check request firmware for NULL ponter again
authorHartmut Hackmann <hartmut.hackmann@t-online.de>
Fri, 27 Apr 2007 15:31:13 +0000 (12:31 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 27 Apr 2007 18:43:33 +0000 (15:43 -0300)
In older versions, this was used to decide whether to boot from
eeprom or file. This is no longer necessary but the check helps to avoid
an oops with misconfigured cards.

Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/frontends/tda1004x.c

index c47501ae8b0e588ae0aed184700f61b877b9ea6a..dbfc94a9c3f7f53be33ebeb9e8ec2875c28a8c10 100644 (file)
@@ -515,18 +515,24 @@ static int tda10046_fwupload(struct dvb_frontend* fe)
        if (tda1004x_check_upload_ok(state) == 0)
                return 0;
 
-       /* request the firmware, this will block until someone uploads it */
-       printk(KERN_INFO "tda1004x: waiting for firmware upload...\n");
-       ret = state->config->request_firmware(fe, &fw, TDA10046_DEFAULT_FIRMWARE);
-       if (ret) {
-               /* remain compatible to old bug: try to load with tda10045 image name */
-               ret = state->config->request_firmware(fe, &fw, TDA10045_DEFAULT_FIRMWARE);
+       if (state->config->request_firmware != NULL) {
+               /* request the firmware, this will block until someone uploads it */
+               printk(KERN_INFO "tda1004x: waiting for firmware upload...\n");
+               ret = state->config->request_firmware(fe, &fw, TDA10046_DEFAULT_FIRMWARE);
                if (ret) {
-                       printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n");
-                       return ret;
-               } else
-                       printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n",
-                                         TDA10046_DEFAULT_FIRMWARE);
+                       /* remain compatible to old bug: try to load with tda10045 image name */
+                       ret = state->config->request_firmware(fe, &fw, TDA10045_DEFAULT_FIRMWARE);
+                       if (ret) {
+                               printk(KERN_ERR "tda1004x: no firmware upload (timeout or file not found?)\n");
+                               return ret;
+                       } else {
+                               printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n",
+                                                 TDA10046_DEFAULT_FIRMWARE);
+                       }
+               }
+       } else {
+               printk(KERN_ERR "tda1004x: no request function defined, can't upload from file\n");
+               return -EIO;
        }
        tda1004x_write_mask(state, TDA1004X_CONFC4, 8, 8); // going to boot from HOST
        ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10046H_CODE_CPT, TDA10046H_CODE_IN);