diff options
Diffstat (limited to 'drivers/staging/media/lirc/lirc_serial.c')
-rw-r--r-- | drivers/staging/media/lirc/lirc_serial.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/drivers/staging/media/lirc/lirc_serial.c b/drivers/staging/media/lirc/lirc_serial.c index 86376311506..d833772ef80 100644 --- a/drivers/staging/media/lirc/lirc_serial.c +++ b/drivers/staging/media/lirc/lirc_serial.c | |||
@@ -875,11 +875,14 @@ static int __devinit lirc_serial_probe(struct platform_device *dev) | |||
875 | ": or compile the serial port driver as module and\n"); | 875 | ": or compile the serial port driver as module and\n"); |
876 | printk(KERN_WARNING LIRC_DRIVER_NAME | 876 | printk(KERN_WARNING LIRC_DRIVER_NAME |
877 | ": make sure this module is loaded first\n"); | 877 | ": make sure this module is loaded first\n"); |
878 | return -EBUSY; | 878 | result = -EBUSY; |
879 | goto exit_free_irq; | ||
879 | } | 880 | } |
880 | 881 | ||
881 | if (hardware_init_port() < 0) | 882 | if (hardware_init_port() < 0) { |
882 | return -EINVAL; | 883 | result = -EINVAL; |
884 | goto exit_release_region; | ||
885 | } | ||
883 | 886 | ||
884 | /* Initialize pulse/space widths */ | 887 | /* Initialize pulse/space widths */ |
885 | init_timing_params(duty_cycle, freq); | 888 | init_timing_params(duty_cycle, freq); |
@@ -911,6 +914,16 @@ static int __devinit lirc_serial_probe(struct platform_device *dev) | |||
911 | 914 | ||
912 | dprintk("Interrupt %d, port %04x obtained\n", irq, io); | 915 | dprintk("Interrupt %d, port %04x obtained\n", irq, io); |
913 | return 0; | 916 | return 0; |
917 | |||
918 | exit_release_region: | ||
919 | if (iommap != 0) | ||
920 | release_mem_region(iommap, 8 << ioshift); | ||
921 | else | ||
922 | release_region(io, 8); | ||
923 | exit_free_irq: | ||
924 | free_irq(irq, (void *)&hardware); | ||
925 | |||
926 | return result; | ||
914 | } | 927 | } |
915 | 928 | ||
916 | static int __devexit lirc_serial_remove(struct platform_device *dev) | 929 | static int __devexit lirc_serial_remove(struct platform_device *dev) |