Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
416ecb64
Commit
416ecb64
authored
Mar 04, 2004
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://linux-mh.bkbits.net/bluetooth-2.6
into nuts.davemloft.net:/disk1/BK/net-2.6
parents
b02a51da
fc8c3e4b
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
86 additions
and
34 deletions
+86
-34
drivers/bluetooth/hci_usb.c
drivers/bluetooth/hci_usb.c
+26
-9
drivers/bluetooth/hci_usb.h
drivers/bluetooth/hci_usb.h
+2
-1
include/net/bluetooth/hci.h
include/net/bluetooth/hci.h
+28
-18
include/net/bluetooth/hci_core.h
include/net/bluetooth/hci_core.h
+3
-0
net/bluetooth/hci_conn.c
net/bluetooth/hci_conn.c
+6
-0
net/bluetooth/hci_core.c
net/bluetooth/hci_core.c
+4
-0
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+6
-0
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/core.c
+1
-1
net/bluetooth/rfcomm/tty.c
net/bluetooth/rfcomm/tty.c
+10
-5
No files found.
drivers/bluetooth/hci_usb.c
View file @
416ecb64
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
*
*
* $Id: hci_usb.c,v 1.8 2002/07/18 17:23:09 maxk Exp $
* $Id: hci_usb.c,v 1.8 2002/07/18 17:23:09 maxk Exp $
*/
*/
#define VERSION "2.
4
"
#define VERSION "2.
5
"
#include <linux/config.h>
#include <linux/config.h>
#include <linux/module.h>
#include <linux/module.h>
...
@@ -70,12 +70,6 @@
...
@@ -70,12 +70,6 @@
static
struct
usb_driver
hci_usb_driver
;
static
struct
usb_driver
hci_usb_driver
;
static
struct
usb_device_id
bluetooth_ids
[]
=
{
static
struct
usb_device_id
bluetooth_ids
[]
=
{
/* Broadcom BCM2033 without firmware */
{
USB_DEVICE
(
0x0a5c
,
0x2033
),
.
driver_info
=
HCI_IGNORE
},
/* Digianswer device */
{
USB_DEVICE
(
0x08fd
,
0x0001
),
.
driver_info
=
HCI_DIGIANSWER
},
/* Generic Bluetooth USB device */
/* Generic Bluetooth USB device */
{
USB_DEVICE_INFO
(
HCI_DEV_CLASS
,
HCI_DEV_SUBCLASS
,
HCI_DEV_PROTOCOL
)
},
{
USB_DEVICE_INFO
(
HCI_DEV_CLASS
,
HCI_DEV_SUBCLASS
,
HCI_DEV_PROTOCOL
)
},
...
@@ -93,6 +87,19 @@ static struct usb_device_id bluetooth_ids[] = {
...
@@ -93,6 +87,19 @@ static struct usb_device_id bluetooth_ids[] = {
MODULE_DEVICE_TABLE
(
usb
,
bluetooth_ids
);
MODULE_DEVICE_TABLE
(
usb
,
bluetooth_ids
);
static
struct
usb_device_id
blacklist_ids
[]
=
{
/* Broadcom BCM2033 without firmware */
{
USB_DEVICE
(
0x0a5c
,
0x2033
),
.
driver_info
=
HCI_IGNORE
},
/* Broadcom BCM2035 */
{
USB_DEVICE
(
0x0a5c
,
0x200a
),
.
driver_info
=
HCI_RESET
},
/* Digianswer device */
{
USB_DEVICE
(
0x08fd
,
0x0001
),
.
driver_info
=
HCI_DIGIANSWER
},
{
}
/* Terminating entry */
};
struct
_urb
*
_urb_alloc
(
int
isoc
,
int
gfp
)
struct
_urb
*
_urb_alloc
(
int
isoc
,
int
gfp
)
{
{
struct
_urb
*
_urb
=
kmalloc
(
sizeof
(
struct
_urb
)
+
struct
_urb
*
_urb
=
kmalloc
(
sizeof
(
struct
_urb
)
+
...
@@ -790,6 +797,13 @@ int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
...
@@ -790,6 +797,13 @@ int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
BT_DBG
(
"udev %p ifnum %d"
,
udev
,
ifnum
);
BT_DBG
(
"udev %p ifnum %d"
,
udev
,
ifnum
);
if
(
!
id
->
driver_info
)
{
const
struct
usb_device_id
*
match
;
match
=
usb_match_id
(
intf
,
blacklist_ids
);
if
(
match
)
id
=
match
;
}
iface
=
udev
->
actconfig
->
interface
[
0
];
iface
=
udev
->
actconfig
->
interface
[
0
];
if
(
id
->
driver_info
&
HCI_IGNORE
)
if
(
id
->
driver_info
&
HCI_IGNORE
)
...
@@ -928,6 +942,9 @@ int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
...
@@ -928,6 +942,9 @@ int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
hdev
->
owner
=
THIS_MODULE
;
hdev
->
owner
=
THIS_MODULE
;
if
(
id
->
driver_info
&
HCI_RESET
)
set_bit
(
HCI_QUIRK_RESET_ON_INIT
,
&
hdev
->
quirks
);
if
(
hci_register_dev
(
hdev
)
<
0
)
{
if
(
hci_register_dev
(
hdev
)
<
0
)
{
BT_ERR
(
"Can't register HCI device"
);
BT_ERR
(
"Can't register HCI device"
);
hci_free_dev
(
hdev
);
hci_free_dev
(
hdev
);
...
@@ -994,6 +1011,6 @@ void hci_usb_cleanup(void)
...
@@ -994,6 +1011,6 @@ void hci_usb_cleanup(void)
module_init
(
hci_usb_init
);
module_init
(
hci_usb_init
);
module_exit
(
hci_usb_cleanup
);
module_exit
(
hci_usb_cleanup
);
MODULE_AUTHOR
(
"Maxim Krasnyansky <maxk@qualcomm.com>"
);
MODULE_AUTHOR
(
"Maxim Krasnyansky <maxk@qualcomm.com>
, Marcel Holtmann <marcel@holtmann.org>
"
);
MODULE_DESCRIPTION
(
"Bluetooth HCI USB driver ver "
VERSION
);
MODULE_DESCRIPTION
(
"Bluetooth HCI USB driver ver "
VERSION
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
drivers/bluetooth/hci_usb.h
View file @
416ecb64
...
@@ -38,7 +38,8 @@
...
@@ -38,7 +38,8 @@
#define HCI_DIGI_REQ 0x40
#define HCI_DIGI_REQ 0x40
#define HCI_IGNORE 0x01
#define HCI_IGNORE 0x01
#define HCI_DIGIANSWER 0x02
#define HCI_RESET 0x02
#define HCI_DIGIANSWER 0x04
#define HCI_MAX_IFACE_NUM 3
#define HCI_MAX_IFACE_NUM 3
...
...
include/net/bluetooth/hci.h
View file @
416ecb64
...
@@ -42,6 +42,11 @@
...
@@ -42,6 +42,11 @@
#define HCI_DEV_SUSPEND 5
#define HCI_DEV_SUSPEND 5
#define HCI_DEV_RESUME 6
#define HCI_DEV_RESUME 6
/* HCI notify events */
#define HCI_NOTIFY_CONN_ADD 1
#define HCI_NOTIFY_CONN_DEL 2
#define HCI_NOTIFY_VOICE_SETTING 3
/* HCI device types */
/* HCI device types */
#define HCI_VHCI 0
#define HCI_VHCI 0
#define HCI_USB 1
#define HCI_USB 1
...
@@ -50,6 +55,11 @@
...
@@ -50,6 +55,11 @@
#define HCI_RS232 4
#define HCI_RS232 4
#define HCI_PCI 5
#define HCI_PCI 5
/* HCI device quirks */
enum
{
HCI_QUIRK_RESET_ON_INIT
};
/* HCI device flags */
/* HCI device flags */
enum
{
enum
{
HCI_UP
,
HCI_UP
,
...
...
include/net/bluetooth/hci_core.h
View file @
416ecb64
...
@@ -77,6 +77,8 @@ struct hci_dev {
...
@@ -77,6 +77,8 @@ struct hci_dev {
__u16
link_policy
;
__u16
link_policy
;
__u16
link_mode
;
__u16
link_mode
;
unsigned
long
quirks
;
atomic_t
cmd_cnt
;
atomic_t
cmd_cnt
;
unsigned
int
acl_cnt
;
unsigned
int
acl_cnt
;
unsigned
int
sco_cnt
;
unsigned
int
sco_cnt
;
...
@@ -128,6 +130,7 @@ struct hci_dev {
...
@@ -128,6 +130,7 @@ struct hci_dev {
int
(
*
flush
)(
struct
hci_dev
*
hdev
);
int
(
*
flush
)(
struct
hci_dev
*
hdev
);
int
(
*
send
)(
struct
sk_buff
*
skb
);
int
(
*
send
)(
struct
sk_buff
*
skb
);
void
(
*
destruct
)(
struct
hci_dev
*
hdev
);
void
(
*
destruct
)(
struct
hci_dev
*
hdev
);
void
(
*
notify
)(
struct
hci_dev
*
hdev
,
unsigned
int
evt
);
int
(
*
ioctl
)(
struct
hci_dev
*
hdev
,
unsigned
int
cmd
,
unsigned
long
arg
);
int
(
*
ioctl
)(
struct
hci_dev
*
hdev
,
unsigned
int
cmd
,
unsigned
long
arg
);
};
};
...
...
net/bluetooth/hci_conn.c
View file @
416ecb64
...
@@ -170,6 +170,9 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
...
@@ -170,6 +170,9 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
hci_conn_hash_add
(
hdev
,
conn
);
hci_conn_hash_add
(
hdev
,
conn
);
tasklet_enable
(
&
hdev
->
tx_task
);
tasklet_enable
(
&
hdev
->
tx_task
);
if
(
hdev
->
notify
)
hdev
->
notify
(
hdev
,
HCI_NOTIFY_CONN_ADD
);
return
conn
;
return
conn
;
}
}
...
@@ -196,6 +199,9 @@ int hci_conn_del(struct hci_conn *conn)
...
@@ -196,6 +199,9 @@ int hci_conn_del(struct hci_conn *conn)
hdev
->
acl_cnt
+=
conn
->
sent
;
hdev
->
acl_cnt
+=
conn
->
sent
;
}
}
if
(
hdev
->
notify
)
hdev
->
notify
(
hdev
,
HCI_NOTIFY_CONN_DEL
);
tasklet_disable
(
&
hdev
->
tx_task
);
tasklet_disable
(
&
hdev
->
tx_task
);
hci_conn_hash_del
(
hdev
,
conn
);
hci_conn_hash_del
(
hdev
,
conn
);
tasklet_enable
(
&
hdev
->
tx_task
);
tasklet_enable
(
&
hdev
->
tx_task
);
...
...
net/bluetooth/hci_core.c
View file @
416ecb64
...
@@ -189,6 +189,10 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
...
@@ -189,6 +189,10 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
/* Mandatory initialization */
/* Mandatory initialization */
/* Reset */
if
(
test_bit
(
HCI_QUIRK_RESET_ON_INIT
,
&
hdev
->
quirks
))
hci_send_cmd
(
hdev
,
OGF_HOST_CTL
,
OCF_RESET
,
0
,
NULL
);
/* Read Local Supported Features */
/* Read Local Supported Features */
hci_send_cmd
(
hdev
,
OGF_INFO_PARAM
,
OCF_READ_LOCAL_FEATURES
,
0
,
NULL
);
hci_send_cmd
(
hdev
,
OGF_INFO_PARAM
,
OCF_READ_LOCAL_FEATURES
,
0
,
NULL
);
...
...
net/bluetooth/hci_event.c
View file @
416ecb64
...
@@ -232,6 +232,9 @@ static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb
...
@@ -232,6 +232,9 @@ static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb
hdev
->
voice_setting
=
setting
;
hdev
->
voice_setting
=
setting
;
BT_DBG
(
"%s: voice setting 0x%04x"
,
hdev
->
name
,
setting
);
BT_DBG
(
"%s: voice setting 0x%04x"
,
hdev
->
name
,
setting
);
if
(
hdev
->
notify
)
hdev
->
notify
(
hdev
,
HCI_NOTIFY_VOICE_SETTING
);
}
}
break
;
break
;
...
@@ -247,6 +250,9 @@ static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb
...
@@ -247,6 +250,9 @@ static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb
hdev
->
voice_setting
=
setting
;
hdev
->
voice_setting
=
setting
;
BT_DBG
(
"%s: voice setting 0x%04x"
,
hdev
->
name
,
setting
);
BT_DBG
(
"%s: voice setting 0x%04x"
,
hdev
->
name
,
setting
);
if
(
hdev
->
notify
)
hdev
->
notify
(
hdev
,
HCI_NOTIFY_VOICE_SETTING
);
}
}
hci_req_complete
(
hdev
,
status
);
hci_req_complete
(
hdev
,
status
);
break
;
break
;
...
...
net/bluetooth/rfcomm/core.c
View file @
416ecb64
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
#include <net/bluetooth/l2cap.h>
#include <net/bluetooth/l2cap.h>
#include <net/bluetooth/rfcomm.h>
#include <net/bluetooth/rfcomm.h>
#define VERSION "1.
1
"
#define VERSION "1.
2
"
#ifndef CONFIG_BT_RFCOMM_DEBUG
#ifndef CONFIG_BT_RFCOMM_DEBUG
#undef BT_DBG
#undef BT_DBG
...
...
net/bluetooth/rfcomm/tty.c
View file @
416ecb64
...
@@ -50,6 +50,8 @@
...
@@ -50,6 +50,8 @@
#define RFCOMM_TTY_MAJOR 216
/* device node major id of the usb/bluetooth.c driver */
#define RFCOMM_TTY_MAJOR 216
/* device node major id of the usb/bluetooth.c driver */
#define RFCOMM_TTY_MINOR 0
#define RFCOMM_TTY_MINOR 0
static
struct
tty_driver
*
rfcomm_tty_driver
;
struct
rfcomm_dev
{
struct
rfcomm_dev
{
struct
list_head
list
;
struct
list_head
list
;
atomic_t
refcnt
;
atomic_t
refcnt
;
...
@@ -98,6 +100,8 @@ static void rfcomm_dev_destruct(struct rfcomm_dev *dev)
...
@@ -98,6 +100,8 @@ static void rfcomm_dev_destruct(struct rfcomm_dev *dev)
rfcomm_dlc_put
(
dlc
);
rfcomm_dlc_put
(
dlc
);
tty_unregister_device
(
rfcomm_tty_driver
,
dev
->
id
);
/* Refcount should only hit zero when called from rfcomm_dev_del()
/* Refcount should only hit zero when called from rfcomm_dev_del()
which will have taken us off the list. Everything else are
which will have taken us off the list. Everything else are
refcounting bugs. */
refcounting bugs. */
...
@@ -239,7 +243,10 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
...
@@ -239,7 +243,10 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
if
(
err
)
{
if
(
err
)
{
kfree
(
dev
);
kfree
(
dev
);
return
err
;
return
err
;
}
else
}
tty_register_device
(
rfcomm_tty_driver
,
dev
->
id
,
NULL
);
return
dev
->
id
;
return
dev
->
id
;
}
}
...
@@ -871,8 +878,6 @@ static int rfcomm_tty_tiocmset(struct tty_struct *tty, struct file *filp, unsign
...
@@ -871,8 +878,6 @@ static int rfcomm_tty_tiocmset(struct tty_struct *tty, struct file *filp, unsign
/* ---- TTY structure ---- */
/* ---- TTY structure ---- */
static
struct
tty_driver
*
rfcomm_tty_driver
;
static
struct
tty_operations
rfcomm_ops
=
{
static
struct
tty_operations
rfcomm_ops
=
{
.
open
=
rfcomm_tty_open
,
.
open
=
rfcomm_tty_open
,
.
close
=
rfcomm_tty_close
,
.
close
=
rfcomm_tty_close
,
...
@@ -906,7 +911,7 @@ int rfcomm_init_ttys(void)
...
@@ -906,7 +911,7 @@ int rfcomm_init_ttys(void)
rfcomm_tty_driver
->
minor_start
=
RFCOMM_TTY_MINOR
;
rfcomm_tty_driver
->
minor_start
=
RFCOMM_TTY_MINOR
;
rfcomm_tty_driver
->
type
=
TTY_DRIVER_TYPE_SERIAL
;
rfcomm_tty_driver
->
type
=
TTY_DRIVER_TYPE_SERIAL
;
rfcomm_tty_driver
->
subtype
=
SERIAL_TYPE_NORMAL
;
rfcomm_tty_driver
->
subtype
=
SERIAL_TYPE_NORMAL
;
rfcomm_tty_driver
->
flags
=
TTY_DRIVER_REAL_RAW
;
rfcomm_tty_driver
->
flags
=
TTY_DRIVER_REAL_RAW
|
TTY_DRIVER_NO_DEVFS
;
rfcomm_tty_driver
->
init_termios
=
tty_std_termios
;
rfcomm_tty_driver
->
init_termios
=
tty_std_termios
;
rfcomm_tty_driver
->
init_termios
.
c_cflag
=
B9600
|
CS8
|
CREAD
|
HUPCL
|
CLOCAL
;
rfcomm_tty_driver
->
init_termios
.
c_cflag
=
B9600
|
CS8
|
CREAD
|
HUPCL
|
CLOCAL
;
tty_set_operations
(
rfcomm_tty_driver
,
&
rfcomm_ops
);
tty_set_operations
(
rfcomm_tty_driver
,
&
rfcomm_ops
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment