diff options
Diffstat (limited to 'drivers/media/rc/fintek-cir.c')
-rw-r--r-- | drivers/media/rc/fintek-cir.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/drivers/media/rc/fintek-cir.c b/drivers/media/rc/fintek-cir.c index 1df410e13688..d6fa441655d2 100644 --- a/drivers/media/rc/fintek-cir.c +++ b/drivers/media/rc/fintek-cir.c | |||
@@ -500,18 +500,18 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id | |||
500 | /* input device for IR remote (and tx) */ | 500 | /* input device for IR remote (and tx) */ |
501 | rdev = rc_allocate_device(); | 501 | rdev = rc_allocate_device(); |
502 | if (!rdev) | 502 | if (!rdev) |
503 | goto failure; | 503 | goto exit_free_dev_rdev; |
504 | 504 | ||
505 | ret = -ENODEV; | 505 | ret = -ENODEV; |
506 | /* validate pnp resources */ | 506 | /* validate pnp resources */ |
507 | if (!pnp_port_valid(pdev, 0)) { | 507 | if (!pnp_port_valid(pdev, 0)) { |
508 | dev_err(&pdev->dev, "IR PNP Port not valid!\n"); | 508 | dev_err(&pdev->dev, "IR PNP Port not valid!\n"); |
509 | goto failure; | 509 | goto exit_free_dev_rdev; |
510 | } | 510 | } |
511 | 511 | ||
512 | if (!pnp_irq_valid(pdev, 0)) { | 512 | if (!pnp_irq_valid(pdev, 0)) { |
513 | dev_err(&pdev->dev, "IR PNP IRQ not valid!\n"); | 513 | dev_err(&pdev->dev, "IR PNP IRQ not valid!\n"); |
514 | goto failure; | 514 | goto exit_free_dev_rdev; |
515 | } | 515 | } |
516 | 516 | ||
517 | fintek->cir_addr = pnp_port_start(pdev, 0); | 517 | fintek->cir_addr = pnp_port_start(pdev, 0); |
@@ -528,7 +528,7 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id | |||
528 | 528 | ||
529 | ret = fintek_hw_detect(fintek); | 529 | ret = fintek_hw_detect(fintek); |
530 | if (ret) | 530 | if (ret) |
531 | goto failure; | 531 | goto exit_free_dev_rdev; |
532 | 532 | ||
533 | /* Initialize CIR & CIR Wake Logical Devices */ | 533 | /* Initialize CIR & CIR Wake Logical Devices */ |
534 | fintek_config_mode_enable(fintek); | 534 | fintek_config_mode_enable(fintek); |
@@ -557,33 +557,35 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id | |||
557 | /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */ | 557 | /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */ |
558 | rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD); | 558 | rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD); |
559 | 559 | ||
560 | fintek->rdev = rdev; | ||
561 | |||
560 | ret = -EBUSY; | 562 | ret = -EBUSY; |
561 | /* now claim resources */ | 563 | /* now claim resources */ |
562 | if (!request_region(fintek->cir_addr, | 564 | if (!request_region(fintek->cir_addr, |
563 | fintek->cir_port_len, FINTEK_DRIVER_NAME)) | 565 | fintek->cir_port_len, FINTEK_DRIVER_NAME)) |
564 | goto failure; | 566 | goto exit_free_dev_rdev; |
565 | 567 | ||
566 | if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED, | 568 | if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED, |
567 | FINTEK_DRIVER_NAME, (void *)fintek)) | 569 | FINTEK_DRIVER_NAME, (void *)fintek)) |
568 | goto failure2; | 570 | goto exit_free_cir_addr; |
569 | 571 | ||
570 | ret = rc_register_device(rdev); | 572 | ret = rc_register_device(rdev); |
571 | if (ret) | 573 | if (ret) |
572 | goto failure3; | 574 | goto exit_free_irq; |
573 | 575 | ||
574 | device_init_wakeup(&pdev->dev, true); | 576 | device_init_wakeup(&pdev->dev, true); |
575 | fintek->rdev = rdev; | 577 | |
576 | fit_pr(KERN_NOTICE, "driver has been successfully loaded\n"); | 578 | fit_pr(KERN_NOTICE, "driver has been successfully loaded\n"); |
577 | if (debug) | 579 | if (debug) |
578 | cir_dump_regs(fintek); | 580 | cir_dump_regs(fintek); |
579 | 581 | ||
580 | return 0; | 582 | return 0; |
581 | 583 | ||
582 | failure3: | 584 | exit_free_irq: |
583 | free_irq(fintek->cir_irq, fintek); | 585 | free_irq(fintek->cir_irq, fintek); |
584 | failure2: | 586 | exit_free_cir_addr: |
585 | release_region(fintek->cir_addr, fintek->cir_port_len); | 587 | release_region(fintek->cir_addr, fintek->cir_port_len); |
586 | failure: | 588 | exit_free_dev_rdev: |
587 | rc_free_device(rdev); | 589 | rc_free_device(rdev); |
588 | kfree(fintek); | 590 | kfree(fintek); |
589 | 591 | ||