History log of /linux-master/drivers/bluetooth/hci_nokia.c
Revision Date Author Comments
# e8b5aed3 26-Jul-2023 Yuanjun Gong <ruc_gongyuanjun@163.com>

Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe()

in nokia_bluetooth_serdev_probe(), check the return value of
clk_prepare_enable() and return the error code if
clk_prepare_enable() returns an unexpected value.

Fixes: 7bb318680e86 ("Bluetooth: add nokia driver")
Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>


# 088fc633 19-Sep-2019 Christophe JAILLET <christophe.jaillet@wanadoo.fr>

Bluetooth: hci_nokia: Save a few cycles in 'nokia_enqueue()'

'skb_pad()' a few lines above already initializes the "padded" byte to 0.
So there is no need to do it twice.

All what is needed is to increase the len of the skb. So 'skb_put(..., 1)'
is enough here.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>


# c942fddf 27-May-2019 Thomas Gleixner <tglx@linutronix.de>

treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157

Based on 3 normalized pattern(s):

this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license as published by
the free software foundation either version 2 of the license or at
your option any later version this program is distributed in the
hope that it will be useful but without any warranty without even
the implied warranty of merchantability or fitness for a particular
purpose see the gnu general public license for more details

this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license as published by
the free software foundation either version 2 of the license or at
your option any later version [author] [kishon] [vijay] [abraham]
[i] [kishon]@[ti] [com] this program is distributed in the hope that
it will be useful but without any warranty without even the implied
warranty of merchantability or fitness for a particular purpose see
the gnu general public license for more details

this program is free software you can redistribute it and or modify
it under the terms of the gnu general public license as published by
the free software foundation either version 2 of the license or at
your option any later version [author] [graeme] [gregory]
[gg]@[slimlogic] [co] [uk] [author] [kishon] [vijay] [abraham] [i]
[kishon]@[ti] [com] [based] [on] [twl6030]_[usb] [c] [author] [hema]
[hk] [hemahk]@[ti] [com] this program is distributed in the hope
that it will be useful but without any warranty without even the
implied warranty of merchantability or fitness for a particular
purpose see the gnu general public license for more details

extracted by the scancode license scanner the SPDX license identifier

GPL-2.0-or-later

has been chosen to replace the boilerplate/reference in 1105 file(s).

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Allison Randal <allison@lohutok.net>
Reviewed-by: Richard Fontana <rfontana@redhat.com>
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190527070033.202006027@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


# a9122886 16-Jun-2018 David S. Miller <davem@davemloft.net>

bluetooth: hci_nokia: Don't include linux/unaligned/le_struct.h directly.

This breaks the build as this header is not meant to be used in this
way.

./include/linux/unaligned/access_ok.h:8:28: error: redefinition of ‘get_unaligned_le16’
static __always_inline u16 get_unaligned_le16(const void *p)
^~~~~~~~~~~~~~~~~~
In file included from drivers/bluetooth/hci_nokia.c:32:
./include/linux/unaligned/le_struct.h:7:19: note: previous definition of ‘get_unaligned_le16’ was here
static inline u16 get_unaligned_le16(const void *p)

Use asm/unaligned.h instead.

Signed-off-by: David S. Miller <davem@davemloft.net>


# e9ca0807 27-May-2018 Hans de Goede <hdegoede@redhat.com>

Bluetooth: hci_serdev: Move serdev_device_close/open into common hci_serdev code

Make hci_uart_register_device() and hci_uart_unregister_device() call
serdev_device_close()/open() themselves instead of relying on the various
hci_uart drivers to do this for them.

Besides reducing code complexity, this also ensures correct error checking
of serdev_device_open(), which was missing in a few drivers.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>


# 05f2a0bc 08-Jul-2017 Ian Molton <ian@mnementh.co.uk>

Bluetooth: hci_nokia: Use new hci_uart_unregister_device() function

Simplify _remove() path for hci_nokia.c

Signed-off-by: Ian Molton <ian@mnementh.co.uk>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabor.co.uk>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>


# a529df82 08-Jul-2017 Ian Molton <ian@mnementh.co.uk>

Bluetooth: hci_nokia: remove duplicate call to pm_runtime_disable()

pm_runtime_disable() is called in the _close() handler.

Since we call the _close() handler on remove, there is no need to
call pm_runtime_disable() a second time.

Signed-off-by: Ian Molton <ian@mnementh.co.uk>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>


# ca2eae7d 08-Jul-2017 Ian Molton <ian@mnementh.co.uk>

Bluetooth: hci_nokia: prevent crash on module removal

Only cancel any ongoing work after making sure, that no new work
can be scheduled. This fixes a race condition in the remove handler.

Signed-off-by: Ian Molton <ian@mnementh.co.uk>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>


# 634fef61 16-Jun-2017 Johannes Berg <johannes.berg@intel.com>

networking: add and use skb_put_u8()

Joe and Bjørn suggested that it'd be nicer to not have the
cast in the fairly common case of doing
*(u8 *)skb_put(skb, 1) = c;

Add skb_put_u8() for this case, and use it across the code,
using the following spatch:

@@
expression SKB, C, S;
typedef u8;
identifier fn = {skb_put};
fresh identifier fn2 = fn ## "_u8";
@@
- *(u8 *)fn(SKB, S) = C;
+ fn2(SKB, C);

Note that due to the "S", the spatch isn't perfect, it should
have checked that S is 1, but there's also places that use a
sizeof expression like sizeof(var) or sizeof(u8) etc. Turns
out that nobody ever did something like
*(u8 *)skb_put(skb, 2) = c;

which would be wrong anyway since the second byte wouldn't be
initialized.

Suggested-by: Joe Perches <joe@perches.com>
Suggested-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>


# af72868b 16-Jun-2017 Johannes Berg <johannes.berg@intel.com>

networking: make skb_pull & friends return void pointers

It seems like a historic accident that these return unsigned char *,
and in many places that means casts are required, more often than not.

Make these functions return void * and remove all the casts across
the tree, adding a (u8 *) cast only where the unsigned char pointer
was used directly, all done with the following spatch:

@@
expression SKB, LEN;
typedef u8;
identifier fn = {
skb_pull,
__skb_pull,
skb_pull_inline,
__pskb_pull_tail,
__pskb_pull,
pskb_pull
};
@@
- *(fn(SKB, LEN))
+ *(u8 *)fn(SKB, LEN)

@@
expression E, SKB, LEN;
identifier fn = {
skb_pull,
__skb_pull,
skb_pull_inline,
__pskb_pull_tail,
__pskb_pull,
pskb_pull
};
type T;
@@
- E = ((T *)(fn(SKB, LEN)))
+ E = fn(SKB, LEN)

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>


# 4df864c1 16-Jun-2017 Johannes Berg <johannes.berg@intel.com>

networking: make skb_put & friends return void pointers

It seems like a historic accident that these return unsigned char *,
and in many places that means casts are required, more often than not.

Make these functions (skb_put, __skb_put and pskb_put) return void *
and remove all the casts across the tree, adding a (u8 *) cast only
where the unsigned char pointer was used directly, all done with the
following spatch:

@@
expression SKB, LEN;
typedef u8;
identifier fn = { skb_put, __skb_put };
@@
- *(fn(SKB, LEN))
+ *(u8 *)fn(SKB, LEN)

@@
expression E, SKB, LEN;
identifier fn = { skb_put, __skb_put };
type T;
@@
- E = ((T *)(fn(SKB, LEN)))
+ E = fn(SKB, LEN)

which actually doesn't cover pskb_put since there are only three
users overall.

A handful of stragglers were converted manually, notably a macro in
drivers/isdn/i4l/isdn_bsdcomp.c and, oddly enough, one of the many
instances in net/bluetooth/hci_sock.c. In the former file, I also
had to fix one whitespace problem spatch introduced.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>


# 377a6eac 28-Apr-2017 Frédéric Danis <frederic.danis.oss@gmail.com>

Bluetooth: Add module license for HCI UART Nokia H4+

Fix the following error preventing to load Nokia H4+ module:
kernel: [ 826.461619] hci_nokia: module license 'unspecified' taints kernel.
kernel: [ 826.461629] Disabling lock debugging due to kernel taint
kernel: [ 826.461836] hci_nokia: Unknown symbol gpiod_get_value_cansleep (err 0)
kernel: [ 826.461876] hci_nokia: Unknown symbol devm_kmalloc (err 0)
kernel: [ 826.461908] hci_nokia: Unknown symbol gpiod_set_value (err 0)
kernel: [ 826.461937] hci_nokia: Unknown symbol serdev_device_set_baudrate (err 0)
kernel: [ 826.461994] hci_nokia: Unknown symbol gpiod_set_value_cansleep (err 0)
kernel: [ 826.462021] hci_nokia: Unknown symbol hci_uart_tx_wakeup (err 0)
kernel: [ 826.462043] hci_nokia: Unknown symbol serdev_device_set_flow_control (err 0)
kernel: [ 826.462064] hci_nokia: Unknown symbol gpiod_to_irq (err 0)
kernel: [ 826.462085] hci_nokia: Unknown symbol serdev_device_open (err 0)
kernel: [ 826.462106] hci_nokia: Unknown symbol gpiod_get_value (err 0)
kernel: [ 826.462150] hci_nokia: Unknown symbol clk_prepare (err 0)
kernel: [ 826.462182] hci_nokia: Unknown symbol pm_runtime_enable (err 0)
kernel: [ 826.462204] hci_nokia: Unknown symbol h4_recv_buf (err 0)
kernel: [ 826.462246] hci_nokia: Unknown symbol serdev_device_write_flush (err 0)
kernel: [ 826.462268] hci_nokia: Unknown symbol serdev_device_get_tiocm (err 0)
kernel: [ 826.462298] hci_nokia: Unknown symbol driver_unregister (err 0)
kernel: [ 826.462318] hci_nokia: Unknown symbol serdev_device_wait_until_sent (err 0)
kernel: [ 826.462347] hci_nokia: Unknown symbol __serdev_device_driver_register (err 0)
kernel: [ 826.462384] hci_nokia: Unknown symbol serdev_device_set_tiocm (err 0)
kernel: [ 826.462417] hci_nokia: Unknown symbol clk_get_rate (err 0)
kernel: [ 826.462454] hci_nokia: Unknown symbol __pm_runtime_resume (err 0)
kernel: [ 826.462486] hci_nokia: Unknown symbol serdev_device_close (err 0)
kernel: [ 826.462524] hci_nokia: Unknown symbol cancel_work_sync (err 0)
kernel: [ 826.462546] hci_nokia: Unknown symbol btbcm_set_bdaddr (err 0)
kernel: [ 826.462567] hci_nokia: Unknown symbol clk_disable (err 0)
kernel: [ 826.462610] hci_nokia: Unknown symbol __pm_runtime_disable (err 0)
kernel: [ 826.462632] hci_nokia: Unknown symbol hci_uart_register_device (err 0)
kernel: [ 826.462653] hci_nokia: Unknown symbol clk_enable (err 0)
kernel: [ 826.462675] hci_nokia: Unknown symbol __pm_runtime_idle (err 0)
kernel: [ 826.462700] hci_nokia: Unknown symbol clk_unprepare (err 0)

Signed-off-by: Frédéric Danis <frederic.danis.oss@gmail.com>
Acked-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>


# 7bb31868 12-Apr-2017 Sebastian Reichel <sre@kernel.org>

Bluetooth: add nokia driver

This adds a driver for the Nokia H4+ protocol, which is used
at least on the Nokia N9, N900 & N950.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>