1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
--- a/drivers/bluetooth/hci_intel.c
+++ b/drivers/bluetooth/hci_intel.c
@@ -29,7 +29,9 @@
#include <linux/wait.h>
#include <linux/tty.h>
#include <linux/platform_device.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
#include <linux/gpio/consumer.h>
+#endif
#include <linux/acpi.h>
#include <linux/interrupt.h>
#include <linux/pm_runtime.h>
@@ -379,7 +381,9 @@ static int intel_set_power(struct hci_ua
BT_INFO("hu %p, Switching compatible pm device (%s) to %u",
hu, dev_name(&idev->pdev->dev), powered);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
gpiod_set_value(idev->reset, powered);
+#endif
/* Provide to idev a hu reference which is used to run LPM
* transactions (lpm suspend/resume) from PM callbacks.
@@ -1306,14 +1310,17 @@ static int intel_probe(struct platform_d
idev->pdev = pdev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
idev->reset = devm_gpiod_get_optional(&pdev->dev, "reset",
GPIOD_OUT_LOW);
if (IS_ERR(idev->reset)) {
dev_err(&pdev->dev, "Unable to retrieve gpio\n");
return PTR_ERR(idev->reset);
}
+#endif
idev->irq = platform_get_irq(pdev, 0);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
if (idev->irq < 0) {
struct gpio_desc *host_wake;
@@ -1332,12 +1339,15 @@ static int intel_probe(struct platform_d
goto no_irq;
}
}
+#endif
/* Only enable wake-up/irq when controller is powered */
device_set_wakeup_capable(&pdev->dev, true);
device_wakeup_disable(&pdev->dev);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
no_irq:
+#endif
platform_set_drvdata(pdev, idev);
/* Place this instance on the device list */
@@ -1345,8 +1355,10 @@ no_irq:
list_add_tail(&idev->list, &intel_device_list);
mutex_unlock(&intel_device_list_lock);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
dev_info(&pdev->dev, "registered, gpio(%d)/irq(%d).\n",
desc_to_gpio(idev->reset), idev->irq);
+#endif
return 0;
}
|