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);