e6f93b671a8df142257d00faadb6f3c09f875fcb
[openwrt.git] / target / linux / brcm2708 / patches-3.10 / 0103-lirc_rpi-Don-t-register-with-lirc_dev-if-we-can-t-cl.patch
1 From a4a78ef42a4720e11e6489dc44936153e601d89f Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Du=C5=A1an=20Dragi=C4=87?= <dragic.dusan@gmail.com>
3 Date: Wed, 25 Sep 2013 18:44:05 +0200
4 Subject: [PATCH 103/196] lirc_rpi: Don't register with lirc_dev if we can't
5  claim gpio pins
6
7 Currently the lirc_rpi module always registers a new lirc device.
8 In case the gpio pins can't be claimed it exits without unregistering.
9
10 Skip registering with lirc_dev if pins can't be claimed.
11 Also, don't free gpio pins that we haven't claimed.
12 ---
13  drivers/staging/media/lirc/lirc_rpi.c | 13 +++++++------
14  1 file changed, 7 insertions(+), 6 deletions(-)
15
16 diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c
17 index cb32042..c76f696 100644
18 --- a/drivers/staging/media/lirc/lirc_rpi.c
19 +++ b/drivers/staging/media/lirc/lirc_rpi.c
20 @@ -590,8 +590,6 @@ static int __init lirc_rpi_init(void)
21  
22  static void lirc_rpi_exit(void)
23  {
24 -       gpio_free(gpio_out_pin);
25 -       gpio_free(gpio_in_pin);
26         platform_device_unregister(lirc_rpi_dev);
27         platform_driver_unregister(&lirc_rpi_driver);
28         lirc_buffer_free(&rbuf);
29 @@ -623,6 +621,10 @@ static int __init lirc_rpi_init_module(void)
30                 goto exit_rpi;
31         }
32  
33 +       result = init_port();
34 +       if (result < 0)
35 +               goto exit_rpi;
36 +
37         driver.features = LIRC_CAN_SET_SEND_DUTY_CYCLE |
38                           LIRC_CAN_SET_SEND_CARRIER |
39                           LIRC_CAN_SEND_PULSE |
40 @@ -640,10 +642,6 @@ static int __init lirc_rpi_init_module(void)
41  
42         printk(KERN_INFO LIRC_DRIVER_NAME ": driver registered!\n");
43  
44 -       result = init_port();
45 -       if (result < 0)
46 -               goto exit_rpi;
47 -
48         return 0;
49  
50         exit_rpi:
51 @@ -654,6 +652,9 @@ static int __init lirc_rpi_init_module(void)
52  
53  static void __exit lirc_rpi_exit_module(void)
54  {
55 +       gpio_free(gpio_out_pin);
56 +       gpio_free(gpio_in_pin);
57 +
58         lirc_rpi_exit();
59  
60         lirc_unregister_driver(driver.minor);
61 -- 
62 1.9.1
63