diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2014-08-29 04:29:19 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2014-11-03 05:27:36 -0500 |
commit | eddd3263208e3e4f80665bbec9d16f02c98986e8 (patch) | |
tree | 80c88780f9de26f9742250368f0d40bce28fbd79 /drivers/media/pci | |
parent | c79a23f33dc1868a90ca6cb0bee0228c751bb7ea (diff) |
[media] cx88: return proper errors during fw load
Don't return -1, return a proper error.
Replace dprintk(0, ...) by pr_err since firmware load errors should just be
reported as an error.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/pci')
-rw-r--r-- | drivers/media/pci/cx88/cx88-blackbird.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/drivers/media/pci/cx88/cx88-blackbird.c b/drivers/media/pci/cx88/cx88-blackbird.c index 32abba47a937..11054cd903af 100644 --- a/drivers/media/pci/cx88/cx88-blackbird.c +++ b/drivers/media/pci/cx88/cx88-blackbird.c | |||
@@ -322,13 +322,13 @@ static int blackbird_mbox_func(void *priv, u32 command, int in, int out, u32 dat | |||
322 | memory_read(dev->core, dev->mailbox - 4, &value); | 322 | memory_read(dev->core, dev->mailbox - 4, &value); |
323 | if (value != 0x12345678) { | 323 | if (value != 0x12345678) { |
324 | dprintk(0, "Firmware and/or mailbox pointer not initialized or corrupted\n"); | 324 | dprintk(0, "Firmware and/or mailbox pointer not initialized or corrupted\n"); |
325 | return -1; | 325 | return -EIO; |
326 | } | 326 | } |
327 | 327 | ||
328 | memory_read(dev->core, dev->mailbox, &flag); | 328 | memory_read(dev->core, dev->mailbox, &flag); |
329 | if (flag) { | 329 | if (flag) { |
330 | dprintk(0, "ERROR: Mailbox appears to be in use (%x)\n", flag); | 330 | dprintk(0, "ERROR: Mailbox appears to be in use (%x)\n", flag); |
331 | return -1; | 331 | return -EIO; |
332 | } | 332 | } |
333 | 333 | ||
334 | flag |= 1; /* tell 'em we're working on it */ | 334 | flag |= 1; /* tell 'em we're working on it */ |
@@ -354,8 +354,8 @@ static int blackbird_mbox_func(void *priv, u32 command, int in, int out, u32 dat | |||
354 | if (0 != (flag & 4)) | 354 | if (0 != (flag & 4)) |
355 | break; | 355 | break; |
356 | if (time_after(jiffies,timeout)) { | 356 | if (time_after(jiffies,timeout)) { |
357 | dprintk(0, "ERROR: API Mailbox timeout\n"); | 357 | dprintk(0, "ERROR: API Mailbox timeout %x\n", command); |
358 | return -1; | 358 | return -EIO; |
359 | } | 359 | } |
360 | udelay(10); | 360 | udelay(10); |
361 | } | 361 | } |
@@ -416,7 +416,7 @@ static int blackbird_find_mailbox(struct cx8802_dev *dev) | |||
416 | } | 416 | } |
417 | } | 417 | } |
418 | dprintk(0, "Mailbox signature values not found!\n"); | 418 | dprintk(0, "Mailbox signature values not found!\n"); |
419 | return -1; | 419 | return -EIO; |
420 | } | 420 | } |
421 | 421 | ||
422 | static int blackbird_load_firmware(struct cx8802_dev *dev) | 422 | static int blackbird_load_firmware(struct cx8802_dev *dev) |
@@ -445,24 +445,23 @@ static int blackbird_load_firmware(struct cx8802_dev *dev) | |||
445 | 445 | ||
446 | 446 | ||
447 | if (retval != 0) { | 447 | if (retval != 0) { |
448 | dprintk(0, "ERROR: Hotplug firmware request failed (%s).\n", | 448 | pr_err("Hotplug firmware request failed (%s).\n", |
449 | CX2341X_FIRM_ENC_FILENAME); | 449 | CX2341X_FIRM_ENC_FILENAME); |
450 | dprintk(0, "Please fix your hotplug setup, the board will " | 450 | pr_err("Please fix your hotplug setup, the board will not work without firmware loaded!\n"); |
451 | "not work without firmware loaded!\n"); | 451 | return -EIO; |
452 | return -1; | ||
453 | } | 452 | } |
454 | 453 | ||
455 | if (firmware->size != BLACKBIRD_FIRM_IMAGE_SIZE) { | 454 | if (firmware->size != BLACKBIRD_FIRM_IMAGE_SIZE) { |
456 | dprintk(0, "ERROR: Firmware size mismatch (have %zd, expected %d)\n", | 455 | pr_err("Firmware size mismatch (have %zd, expected %d)\n", |
457 | firmware->size, BLACKBIRD_FIRM_IMAGE_SIZE); | 456 | firmware->size, BLACKBIRD_FIRM_IMAGE_SIZE); |
458 | release_firmware(firmware); | 457 | release_firmware(firmware); |
459 | return -1; | 458 | return -EINVAL; |
460 | } | 459 | } |
461 | 460 | ||
462 | if (0 != memcmp(firmware->data, magic, 8)) { | 461 | if (0 != memcmp(firmware->data, magic, 8)) { |
463 | dprintk(0, "ERROR: Firmware magic mismatch, wrong file?\n"); | 462 | pr_err("Firmware magic mismatch, wrong file?\n"); |
464 | release_firmware(firmware); | 463 | release_firmware(firmware); |
465 | return -1; | 464 | return -EINVAL; |
466 | } | 465 | } |
467 | 466 | ||
468 | /* transfer to the chip */ | 467 | /* transfer to the chip */ |
@@ -480,12 +479,11 @@ static int blackbird_load_firmware(struct cx8802_dev *dev) | |||
480 | memory_read(dev->core, i, &value); | 479 | memory_read(dev->core, i, &value); |
481 | checksum -= ~value; | 480 | checksum -= ~value; |
482 | } | 481 | } |
482 | release_firmware(firmware); | ||
483 | if (checksum) { | 483 | if (checksum) { |
484 | dprintk(0, "ERROR: Firmware load failed (checksum mismatch).\n"); | 484 | pr_err("Firmware load might have failed (checksum mismatch).\n"); |
485 | release_firmware(firmware); | 485 | return -EIO; |
486 | return -1; | ||
487 | } | 486 | } |
488 | release_firmware(firmware); | ||
489 | dprintk(0, "Firmware upload successful.\n"); | 487 | dprintk(0, "Firmware upload successful.\n"); |
490 | 488 | ||
491 | retval |= register_write(dev->core, IVTV_REG_HW_BLOCKS, IVTV_CMD_HW_BLOCKS_RST); | 489 | retval |= register_write(dev->core, IVTV_REG_HW_BLOCKS, IVTV_CMD_HW_BLOCKS_RST); |