Loading drivers/bluetooth/Kconfig +3 −3 Original line number Original line Diff line number Diff line Loading @@ -188,7 +188,7 @@ config BT_MRVL The core driver to support Marvell Bluetooth devices. The core driver to support Marvell Bluetooth devices. This driver is required if you want to support This driver is required if you want to support Marvell Bluetooth devices, such as 8688/8787. Marvell Bluetooth devices, such as 8688/8787/8797. Say Y here to compile Marvell Bluetooth driver Say Y here to compile Marvell Bluetooth driver into the kernel or say M to compile it as module. into the kernel or say M to compile it as module. Loading @@ -201,8 +201,8 @@ config BT_MRVL_SDIO The driver for Marvell Bluetooth chipsets with SDIO interface. The driver for Marvell Bluetooth chipsets with SDIO interface. This driver is required if you want to use Marvell Bluetooth This driver is required if you want to use Marvell Bluetooth devices with SDIO interface. Currently SD8688/SD8787 chipsets are devices with SDIO interface. Currently SD8688/SD8787/SD8797 supported. chipsets are supported. Say Y here to compile support for Marvell BT-over-SDIO driver Say Y here to compile support for Marvell BT-over-SDIO driver into the kernel or say M to compile it as module. into the kernel or say M to compile it as module. Loading drivers/bluetooth/btmrvl_sdio.c +13 −2 Original line number Original line Diff line number Diff line Loading @@ -64,7 +64,7 @@ static const struct btmrvl_sdio_card_reg btmrvl_reg_8688 = { .io_port_1 = 0x01, .io_port_1 = 0x01, .io_port_2 = 0x02, .io_port_2 = 0x02, }; }; static const struct btmrvl_sdio_card_reg btmrvl_reg_8787 = { static const struct btmrvl_sdio_card_reg btmrvl_reg_87xx = { .cfg = 0x00, .cfg = 0x00, .host_int_mask = 0x02, .host_int_mask = 0x02, .host_intstatus = 0x03, .host_intstatus = 0x03, Loading @@ -91,7 +91,14 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8688 = { static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = { static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = { .helper = NULL, .helper = NULL, .firmware = "mrvl/sd8787_uapsta.bin", .firmware = "mrvl/sd8787_uapsta.bin", .reg = &btmrvl_reg_8787, .reg = &btmrvl_reg_87xx, .sd_blksz_fw_dl = 256, }; static const struct btmrvl_sdio_device btmrvl_sdio_sd8797 = { .helper = NULL, .firmware = "mrvl/sd8797_uapsta.bin", .reg = &btmrvl_reg_87xx, .sd_blksz_fw_dl = 256, .sd_blksz_fw_dl = 256, }; }; Loading @@ -102,6 +109,9 @@ static const struct sdio_device_id btmrvl_sdio_ids[] = { /* Marvell SD8787 Bluetooth device */ /* Marvell SD8787 Bluetooth device */ { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x911A), { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x911A), .driver_data = (unsigned long) &btmrvl_sdio_sd8787 }, .driver_data = (unsigned long) &btmrvl_sdio_sd8787 }, /* Marvell SD8797 Bluetooth device */ { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x912A), .driver_data = (unsigned long) &btmrvl_sdio_sd8797 }, { } /* Terminating entry */ { } /* Terminating entry */ }; }; Loading Loading @@ -1075,3 +1085,4 @@ MODULE_LICENSE("GPL v2"); MODULE_FIRMWARE("sd8688_helper.bin"); MODULE_FIRMWARE("sd8688_helper.bin"); MODULE_FIRMWARE("sd8688.bin"); MODULE_FIRMWARE("sd8688.bin"); MODULE_FIRMWARE("mrvl/sd8787_uapsta.bin"); MODULE_FIRMWARE("mrvl/sd8787_uapsta.bin"); MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin"); drivers/bluetooth/btusb.c +1 −2 Original line number Original line Diff line number Diff line Loading @@ -777,9 +777,8 @@ static int btusb_send_frame(struct sk_buff *skb) usb_mark_last_busy(data->udev); usb_mark_last_busy(data->udev); } } usb_free_urb(urb); done: done: usb_free_urb(urb); return err; return err; } } Loading net/bluetooth/bnep/core.c +3 −5 Original line number Original line Diff line number Diff line Loading @@ -79,17 +79,12 @@ static struct bnep_session *__bnep_get_session(u8 *dst) static void __bnep_link_session(struct bnep_session *s) static void __bnep_link_session(struct bnep_session *s) { { /* It's safe to call __module_get() here because sessions are added by the socket layer which has to hold the reference to this module. */ __module_get(THIS_MODULE); list_add(&s->list, &bnep_session_list); list_add(&s->list, &bnep_session_list); } } static void __bnep_unlink_session(struct bnep_session *s) static void __bnep_unlink_session(struct bnep_session *s) { { list_del(&s->list); list_del(&s->list); module_put(THIS_MODULE); } } static int bnep_send(struct bnep_session *s, void *data, size_t len) static int bnep_send(struct bnep_session *s, void *data, size_t len) Loading Loading @@ -530,6 +525,7 @@ static int bnep_session(void *arg) up_write(&bnep_session_sem); up_write(&bnep_session_sem); free_netdev(dev); free_netdev(dev); module_put_and_exit(0); return 0; return 0; } } Loading Loading @@ -616,9 +612,11 @@ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock) __bnep_link_session(s); __bnep_link_session(s); __module_get(THIS_MODULE); s->task = kthread_run(bnep_session, s, "kbnepd %s", dev->name); s->task = kthread_run(bnep_session, s, "kbnepd %s", dev->name); if (IS_ERR(s->task)) { if (IS_ERR(s->task)) { /* Session thread start failed, gotta cleanup. */ /* Session thread start failed, gotta cleanup. */ module_put(THIS_MODULE); unregister_netdev(dev); unregister_netdev(dev); __bnep_unlink_session(s); __bnep_unlink_session(s); err = PTR_ERR(s->task); err = PTR_ERR(s->task); Loading net/bluetooth/cmtp/core.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -67,14 +67,12 @@ static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr) static void __cmtp_link_session(struct cmtp_session *session) static void __cmtp_link_session(struct cmtp_session *session) { { __module_get(THIS_MODULE); list_add(&session->list, &cmtp_session_list); list_add(&session->list, &cmtp_session_list); } } static void __cmtp_unlink_session(struct cmtp_session *session) static void __cmtp_unlink_session(struct cmtp_session *session) { { list_del(&session->list); list_del(&session->list); module_put(THIS_MODULE); } } static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) Loading Loading @@ -327,6 +325,7 @@ static int cmtp_session(void *arg) up_write(&cmtp_session_sem); up_write(&cmtp_session_sem); kfree(session); kfree(session); module_put_and_exit(0); return 0; return 0; } } Loading Loading @@ -376,9 +375,11 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock) __cmtp_link_session(session); __cmtp_link_session(session); __module_get(THIS_MODULE); session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", session->num); session->num); if (IS_ERR(session->task)) { if (IS_ERR(session->task)) { module_put(THIS_MODULE); err = PTR_ERR(session->task); err = PTR_ERR(session->task); goto unlink; goto unlink; } } Loading Loading
drivers/bluetooth/Kconfig +3 −3 Original line number Original line Diff line number Diff line Loading @@ -188,7 +188,7 @@ config BT_MRVL The core driver to support Marvell Bluetooth devices. The core driver to support Marvell Bluetooth devices. This driver is required if you want to support This driver is required if you want to support Marvell Bluetooth devices, such as 8688/8787. Marvell Bluetooth devices, such as 8688/8787/8797. Say Y here to compile Marvell Bluetooth driver Say Y here to compile Marvell Bluetooth driver into the kernel or say M to compile it as module. into the kernel or say M to compile it as module. Loading @@ -201,8 +201,8 @@ config BT_MRVL_SDIO The driver for Marvell Bluetooth chipsets with SDIO interface. The driver for Marvell Bluetooth chipsets with SDIO interface. This driver is required if you want to use Marvell Bluetooth This driver is required if you want to use Marvell Bluetooth devices with SDIO interface. Currently SD8688/SD8787 chipsets are devices with SDIO interface. Currently SD8688/SD8787/SD8797 supported. chipsets are supported. Say Y here to compile support for Marvell BT-over-SDIO driver Say Y here to compile support for Marvell BT-over-SDIO driver into the kernel or say M to compile it as module. into the kernel or say M to compile it as module. Loading
drivers/bluetooth/btmrvl_sdio.c +13 −2 Original line number Original line Diff line number Diff line Loading @@ -64,7 +64,7 @@ static const struct btmrvl_sdio_card_reg btmrvl_reg_8688 = { .io_port_1 = 0x01, .io_port_1 = 0x01, .io_port_2 = 0x02, .io_port_2 = 0x02, }; }; static const struct btmrvl_sdio_card_reg btmrvl_reg_8787 = { static const struct btmrvl_sdio_card_reg btmrvl_reg_87xx = { .cfg = 0x00, .cfg = 0x00, .host_int_mask = 0x02, .host_int_mask = 0x02, .host_intstatus = 0x03, .host_intstatus = 0x03, Loading @@ -91,7 +91,14 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8688 = { static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = { static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = { .helper = NULL, .helper = NULL, .firmware = "mrvl/sd8787_uapsta.bin", .firmware = "mrvl/sd8787_uapsta.bin", .reg = &btmrvl_reg_8787, .reg = &btmrvl_reg_87xx, .sd_blksz_fw_dl = 256, }; static const struct btmrvl_sdio_device btmrvl_sdio_sd8797 = { .helper = NULL, .firmware = "mrvl/sd8797_uapsta.bin", .reg = &btmrvl_reg_87xx, .sd_blksz_fw_dl = 256, .sd_blksz_fw_dl = 256, }; }; Loading @@ -102,6 +109,9 @@ static const struct sdio_device_id btmrvl_sdio_ids[] = { /* Marvell SD8787 Bluetooth device */ /* Marvell SD8787 Bluetooth device */ { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x911A), { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x911A), .driver_data = (unsigned long) &btmrvl_sdio_sd8787 }, .driver_data = (unsigned long) &btmrvl_sdio_sd8787 }, /* Marvell SD8797 Bluetooth device */ { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x912A), .driver_data = (unsigned long) &btmrvl_sdio_sd8797 }, { } /* Terminating entry */ { } /* Terminating entry */ }; }; Loading Loading @@ -1075,3 +1085,4 @@ MODULE_LICENSE("GPL v2"); MODULE_FIRMWARE("sd8688_helper.bin"); MODULE_FIRMWARE("sd8688_helper.bin"); MODULE_FIRMWARE("sd8688.bin"); MODULE_FIRMWARE("sd8688.bin"); MODULE_FIRMWARE("mrvl/sd8787_uapsta.bin"); MODULE_FIRMWARE("mrvl/sd8787_uapsta.bin"); MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin");
drivers/bluetooth/btusb.c +1 −2 Original line number Original line Diff line number Diff line Loading @@ -777,9 +777,8 @@ static int btusb_send_frame(struct sk_buff *skb) usb_mark_last_busy(data->udev); usb_mark_last_busy(data->udev); } } usb_free_urb(urb); done: done: usb_free_urb(urb); return err; return err; } } Loading
net/bluetooth/bnep/core.c +3 −5 Original line number Original line Diff line number Diff line Loading @@ -79,17 +79,12 @@ static struct bnep_session *__bnep_get_session(u8 *dst) static void __bnep_link_session(struct bnep_session *s) static void __bnep_link_session(struct bnep_session *s) { { /* It's safe to call __module_get() here because sessions are added by the socket layer which has to hold the reference to this module. */ __module_get(THIS_MODULE); list_add(&s->list, &bnep_session_list); list_add(&s->list, &bnep_session_list); } } static void __bnep_unlink_session(struct bnep_session *s) static void __bnep_unlink_session(struct bnep_session *s) { { list_del(&s->list); list_del(&s->list); module_put(THIS_MODULE); } } static int bnep_send(struct bnep_session *s, void *data, size_t len) static int bnep_send(struct bnep_session *s, void *data, size_t len) Loading Loading @@ -530,6 +525,7 @@ static int bnep_session(void *arg) up_write(&bnep_session_sem); up_write(&bnep_session_sem); free_netdev(dev); free_netdev(dev); module_put_and_exit(0); return 0; return 0; } } Loading Loading @@ -616,9 +612,11 @@ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock) __bnep_link_session(s); __bnep_link_session(s); __module_get(THIS_MODULE); s->task = kthread_run(bnep_session, s, "kbnepd %s", dev->name); s->task = kthread_run(bnep_session, s, "kbnepd %s", dev->name); if (IS_ERR(s->task)) { if (IS_ERR(s->task)) { /* Session thread start failed, gotta cleanup. */ /* Session thread start failed, gotta cleanup. */ module_put(THIS_MODULE); unregister_netdev(dev); unregister_netdev(dev); __bnep_unlink_session(s); __bnep_unlink_session(s); err = PTR_ERR(s->task); err = PTR_ERR(s->task); Loading
net/bluetooth/cmtp/core.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -67,14 +67,12 @@ static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr) static void __cmtp_link_session(struct cmtp_session *session) static void __cmtp_link_session(struct cmtp_session *session) { { __module_get(THIS_MODULE); list_add(&session->list, &cmtp_session_list); list_add(&session->list, &cmtp_session_list); } } static void __cmtp_unlink_session(struct cmtp_session *session) static void __cmtp_unlink_session(struct cmtp_session *session) { { list_del(&session->list); list_del(&session->list); module_put(THIS_MODULE); } } static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) Loading Loading @@ -327,6 +325,7 @@ static int cmtp_session(void *arg) up_write(&cmtp_session_sem); up_write(&cmtp_session_sem); kfree(session); kfree(session); module_put_and_exit(0); return 0; return 0; } } Loading Loading @@ -376,9 +375,11 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock) __cmtp_link_session(session); __cmtp_link_session(session); __module_get(THIS_MODULE); session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", session->num); session->num); if (IS_ERR(session->task)) { if (IS_ERR(session->task)) { module_put(THIS_MODULE); err = PTR_ERR(session->task); err = PTR_ERR(session->task); goto unlink; goto unlink; } } Loading