diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2012-07-16 09:12:11 -0400 |
---|---|---|
committer | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2012-07-17 13:48:29 -0400 |
commit | 9f2aee848fe60325b1984653833d2d1825ec730d (patch) | |
tree | cf1f3d1a081a37421af9d9eb8918917f1deef8a3 /drivers/bluetooth/hci_uart.h | |
parent | dac670b97698f7c5584b224dd68d9d612b9ad4d7 (diff) |
Bluetooth: Add delayed init sequence support for UART controllers
This patch makes it possible to have UART drivers perform an internal
initialization before calling hci_register_dev. This allows moving a lot
of init code from user space (hciattach) to the kernel side, thereby
creating a more controlled/robust initialization process.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Diffstat (limited to 'drivers/bluetooth/hci_uart.h')
-rw-r--r-- | drivers/bluetooth/hci_uart.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h index aaf9d7de1b9f..fffa61ff5cb1 100644 --- a/drivers/bluetooth/hci_uart.h +++ b/drivers/bluetooth/hci_uart.h | |||
@@ -47,6 +47,7 @@ | |||
47 | #define HCI_UART_RAW_DEVICE 0 | 47 | #define HCI_UART_RAW_DEVICE 0 |
48 | #define HCI_UART_RESET_ON_INIT 1 | 48 | #define HCI_UART_RESET_ON_INIT 1 |
49 | #define HCI_UART_CREATE_AMP 2 | 49 | #define HCI_UART_CREATE_AMP 2 |
50 | #define HCI_UART_INIT_PENDING 3 | ||
50 | 51 | ||
51 | struct hci_uart; | 52 | struct hci_uart; |
52 | 53 | ||
@@ -66,6 +67,8 @@ struct hci_uart { | |||
66 | unsigned long flags; | 67 | unsigned long flags; |
67 | unsigned long hdev_flags; | 68 | unsigned long hdev_flags; |
68 | 69 | ||
70 | struct work_struct init_ready; | ||
71 | |||
69 | struct hci_uart_proto *proto; | 72 | struct hci_uart_proto *proto; |
70 | void *priv; | 73 | void *priv; |
71 | 74 | ||
@@ -76,6 +79,7 @@ struct hci_uart { | |||
76 | 79 | ||
77 | /* HCI_UART proto flag bits */ | 80 | /* HCI_UART proto flag bits */ |
78 | #define HCI_UART_PROTO_SET 0 | 81 | #define HCI_UART_PROTO_SET 0 |
82 | #define HCI_UART_REGISTERED 1 | ||
79 | 83 | ||
80 | /* TX states */ | 84 | /* TX states */ |
81 | #define HCI_UART_SENDING 1 | 85 | #define HCI_UART_SENDING 1 |
@@ -84,6 +88,7 @@ struct hci_uart { | |||
84 | int hci_uart_register_proto(struct hci_uart_proto *p); | 88 | int hci_uart_register_proto(struct hci_uart_proto *p); |
85 | int hci_uart_unregister_proto(struct hci_uart_proto *p); | 89 | int hci_uart_unregister_proto(struct hci_uart_proto *p); |
86 | int hci_uart_tx_wakeup(struct hci_uart *hu); | 90 | int hci_uart_tx_wakeup(struct hci_uart *hu); |
91 | int hci_uart_init_ready(struct hci_uart *hu); | ||
87 | 92 | ||
88 | #ifdef CONFIG_BT_HCIUART_H4 | 93 | #ifdef CONFIG_BT_HCIUART_H4 |
89 | int h4_init(void); | 94 | int h4_init(void); |