|
@@ -6609,15 +6609,25 @@ struct dvb_frontend *drxk_attach(const struct drxk_config *config,
|
|
|
|
|
|
/* Load firmware and initialize DRX-K */
|
|
|
if (state->microcode_name) {
|
|
|
- status = request_firmware_nowait(THIS_MODULE, 1,
|
|
|
+ if (config->load_firmware_sync) {
|
|
|
+ const struct firmware *fw = NULL;
|
|
|
+
|
|
|
+ status = request_firmware(&fw, state->microcode_name,
|
|
|
+ state->i2c->dev.parent);
|
|
|
+ if (status < 0)
|
|
|
+ fw = NULL;
|
|
|
+ load_firmware_cb(fw, state);
|
|
|
+ } else {
|
|
|
+ status = request_firmware_nowait(THIS_MODULE, 1,
|
|
|
state->microcode_name,
|
|
|
state->i2c->dev.parent,
|
|
|
GFP_KERNEL,
|
|
|
state, load_firmware_cb);
|
|
|
- if (status < 0) {
|
|
|
- printk(KERN_ERR
|
|
|
- "drxk: failed to request a firmware\n");
|
|
|
- return NULL;
|
|
|
+ if (status < 0) {
|
|
|
+ printk(KERN_ERR
|
|
|
+ "drxk: failed to request a firmware\n");
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
}
|
|
|
} else if (init_drxk(state) < 0)
|
|
|
goto error;
|