linux/drivers/bluetooth/hci_uart.h
<<
>>
Prefs
   1/*
   2 *
   3 *  Bluetooth HCI UART driver
   4 *
   5 *  Copyright (C) 2000-2001  Qualcomm Incorporated
   6 *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
   7 *  Copyright (C) 2004-2005  Marcel Holtmann <marcel@holtmann.org>
   8 *
   9 *
  10 *  This program is free software; you can redistribute it and/or modify
  11 *  it under the terms of the GNU General Public License as published by
  12 *  the Free Software Foundation; either version 2 of the License, or
  13 *  (at your option) any later version.
  14 *
  15 *  This program is distributed in the hope that it will be useful,
  16 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18 *  GNU General Public License for more details.
  19 *
  20 *  You should have received a copy of the GNU General Public License
  21 *  along with this program; if not, write to the Free Software
  22 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23 *
  24 */
  25
  26#ifndef N_HCI
  27#define N_HCI   15
  28#endif
  29
  30/* Ioctls */
  31#define HCIUARTSETPROTO         _IOW('U', 200, int)
  32#define HCIUARTGETPROTO         _IOR('U', 201, int)
  33#define HCIUARTGETDEVICE        _IOR('U', 202, int)
  34#define HCIUARTSETFLAGS         _IOW('U', 203, int)
  35#define HCIUARTGETFLAGS         _IOR('U', 204, int)
  36
  37/* UART protocols */
  38#define HCI_UART_MAX_PROTO      6
  39
  40#define HCI_UART_H4     0
  41#define HCI_UART_BCSP   1
  42#define HCI_UART_3WIRE  2
  43#define HCI_UART_H4DS   3
  44#define HCI_UART_LL     4
  45#define HCI_UART_ATH3K  5
  46
  47#define HCI_UART_RAW_DEVICE     0
  48#define HCI_UART_RESET_ON_INIT  1
  49#define HCI_UART_CREATE_AMP     2
  50#define HCI_UART_INIT_PENDING   3
  51
  52struct hci_uart;
  53
  54struct hci_uart_proto {
  55        unsigned int id;
  56        int (*open)(struct hci_uart *hu);
  57        int (*close)(struct hci_uart *hu);
  58        int (*flush)(struct hci_uart *hu);
  59        int (*recv)(struct hci_uart *hu, void *data, int len);
  60        int (*enqueue)(struct hci_uart *hu, struct sk_buff *skb);
  61        struct sk_buff *(*dequeue)(struct hci_uart *hu);
  62};
  63
  64struct hci_uart {
  65        struct tty_struct       *tty;
  66        struct hci_dev          *hdev;
  67        unsigned long           flags;
  68        unsigned long           hdev_flags;
  69
  70        struct work_struct      init_ready;
  71
  72        struct hci_uart_proto   *proto;
  73        void                    *priv;
  74
  75        struct sk_buff          *tx_skb;
  76        unsigned long           tx_state;
  77        spinlock_t              rx_lock;
  78};
  79
  80/* HCI_UART proto flag bits */
  81#define HCI_UART_PROTO_SET      0
  82#define HCI_UART_REGISTERED     1
  83
  84/* TX states  */
  85#define HCI_UART_SENDING        1
  86#define HCI_UART_TX_WAKEUP      2
  87
  88int hci_uart_register_proto(struct hci_uart_proto *p);
  89int hci_uart_unregister_proto(struct hci_uart_proto *p);
  90int hci_uart_tx_wakeup(struct hci_uart *hu);
  91int hci_uart_init_ready(struct hci_uart *hu);
  92
  93#ifdef CONFIG_BT_HCIUART_H4
  94int h4_init(void);
  95int h4_deinit(void);
  96#endif
  97
  98#ifdef CONFIG_BT_HCIUART_BCSP
  99int bcsp_init(void);
 100int bcsp_deinit(void);
 101#endif
 102
 103#ifdef CONFIG_BT_HCIUART_LL
 104int ll_init(void);
 105int ll_deinit(void);
 106#endif
 107
 108#ifdef CONFIG_BT_HCIUART_ATH3K
 109int ath_init(void);
 110int ath_deinit(void);
 111#endif
 112
 113#ifdef CONFIG_BT_HCIUART_3WIRE
 114int h5_init(void);
 115int h5_deinit(void);
 116#endif
 117
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.