summaryrefslogtreecommitdiff
path: root/patches/0020-tty-termios/net_bluetooth_hci_ldisc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/0020-tty-termios/net_bluetooth_hci_ldisc.patch')
-rw-r--r--patches/0020-tty-termios/net_bluetooth_hci_ldisc.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/patches/0020-tty-termios/net_bluetooth_hci_ldisc.patch b/patches/0020-tty-termios/net_bluetooth_hci_ldisc.patch
new file mode 100644
index 00000000..81371523
--- /dev/null
+++ b/patches/0020-tty-termios/net_bluetooth_hci_ldisc.patch
@@ -0,0 +1,67 @@
+--- a/drivers/bluetooth/hci_ldisc.c
++++ b/drivers/bluetooth/hci_ldisc.c
+@@ -24,6 +24,7 @@
+ */
+
+ #include <linux/module.h>
++#include <linux/version.h>
+
+ #include <linux/kernel.h>
+ #include <linux/init.h>
+@@ -269,7 +270,11 @@ void hci_uart_set_flow_control(struct hc
+
+ if (enable) {
+ /* Disable hardware flow control */
++#if LINUX_VERSION_IS_GEQ(3,7,0)
+ ktermios = tty->termios;
++#else
++ ktermios = *tty->termios;
++#endif
+ ktermios.c_cflag &= ~CRTSCTS;
+ status = tty_set_termios(tty, &ktermios);
+ BT_DBG("Disabling hardware flow control: %s",
+@@ -303,7 +308,11 @@ void hci_uart_set_flow_control(struct hc
+ BT_DBG("Setting RTS: %s", status ? "failed" : "success");
+
+ /* Re-enable hardware flow control */
++#if LINUX_VERSION_IS_GEQ(3,7,0)
+ ktermios = tty->termios;
++#else
++ ktermios = *tty->termios;
++#endif
+ ktermios.c_cflag |= CRTSCTS;
+ status = tty_set_termios(tty, &ktermios);
+ BT_DBG("Enabling hardware flow control: %s",
+@@ -324,7 +333,11 @@ void hci_uart_init_tty(struct hci_uart *
+ struct ktermios ktermios;
+
+ /* Bring the UART into a known 8 bits no parity hw fc state */
++#if LINUX_VERSION_IS_GEQ(3,7,0)
+ ktermios = tty->termios;
++#else
++ ktermios = *tty->termios;
++#endif
+ ktermios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP |
+ INLCR | IGNCR | ICRNL | IXON);
+ ktermios.c_oflag &= ~OPOST;
+@@ -342,7 +355,11 @@ void hci_uart_set_baudrate(struct hci_ua
+ struct tty_struct *tty = hu->tty;
+ struct ktermios ktermios;
+
++#if LINUX_VERSION_IS_GEQ(3,7,0)
+ ktermios = tty->termios;
++#else
++ ktermios = *tty->termios;
++#endif
+ ktermios.c_cflag &= ~CBAUD;
+ tty_termios_encode_baud_rate(&ktermios, speed, speed);
+
+@@ -350,7 +367,7 @@ void hci_uart_set_baudrate(struct hci_ua
+ tty_set_termios(tty, &ktermios);
+
+ BT_DBG("%s: New tty speeds: %d/%d", hu->hdev->name,
+- tty->termios.c_ispeed, tty->termios.c_ospeed);
++ ktermios.c_ispeed, ktermios.c_ospeed);
+ }
+
+ static int hci_uart_setup(struct hci_dev *hdev)