From: Marcel Holtmann <marcel@holtmann.org>
To: Tedd Ho-Jeong An <tedd.an@intel.com>
Cc: linux-bluetooth@vger.kernel.org, albert.o.ho@intel.com,
johan.hedberg@intel.com, tedd.hj.an@gmail.com
Subject: Re: [RFCv3 1/3] Bluetooth: Add support BT mini-driver
Date: Sun, 11 Nov 2012 01:34:30 +0100 [thread overview]
Message-ID: <1352594070.16204.15.camel@aeonflux> (raw)
In-Reply-To: <1385742.8V9Ax1uMxF@tedd-ubuntu>
Hi Tedd,
> This patch add mini-driver support in BTUSB
>
> Signed-off-by: Tedd Ho-Jeong An <tedd.an@intel.com>
> ---
> drivers/bluetooth/btusb.c | 68 +++++++++++++++++++++++++++++++++++++++++----
> drivers/bluetooth/btusb.h | 44 +++++++++++++++++++++++++++++
> 2 files changed, 106 insertions(+), 6 deletions(-)
> create mode 100644 drivers/bluetooth/btusb.h
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index f637c25..39a1e6c 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -27,6 +27,8 @@
> #include <net/bluetooth/bluetooth.h>
> #include <net/bluetooth/hci_core.h>
>
> +#include "btusb.h"
> +
> #define VERSION "0.6"
>
> static bool ignore_dga;
> @@ -47,6 +49,7 @@ static struct usb_driver btusb_driver;
> #define BTUSB_BROKEN_ISOC 0x20
> #define BTUSB_WRONG_SCO_MTU 0x40
> #define BTUSB_ATH3012 0x80
> +#define BTUSB_VENDOR 0x100
>
> static struct usb_device_id btusb_table[] = {
> /* Generic Bluetooth USB device */
> @@ -206,6 +209,7 @@ struct btusb_data {
> struct usb_device *udev;
> struct usb_interface *intf;
> struct usb_interface *isoc;
> + struct btusb_driver_info *driver_info;
>
> spinlock_t lock;
>
> @@ -952,9 +956,15 @@ static int btusb_probe(struct usb_interface *intf,
> return -ENODEV;
> }
>
> - data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL);
> - if (!data)
> - return -ENOMEM;
> +/* CHECKME: if mini-driver invokes btusb_probe, btusb_data already has been
> + * allocated. If btusb_probe is directly invoked by usb core, then allocate
> + * here. */
> + data = usb_get_intfdata(intf);
> + if (!data) {
> + data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL);
> + if (!data)
> + return -ENOMEM;
> + }
>
> for (i = 0; i < intf->cur_altsetting->desc.bNumEndpoints; i++) {
> ep_desc = &intf->cur_altsetting->endpoint[i].desc;
> @@ -1012,6 +1022,17 @@ static int btusb_probe(struct usb_interface *intf,
> hdev->send = btusb_send_frame;
> hdev->notify = btusb_notify;
>
> + /* bind the vendor specific mini-driver */
> + if ((id->driver_info & BTUSB_VENDOR) && data->driver_info) {
> + if (data->driver_info->bind) {
> + err = data->driver_info->bind(hdev);
> + if (err < 0) {
> + hci_free_dev(hdev);
> + return err;
> + }
> + }
> + }
> +
I think we can make this even simpler. Had a 12 hours flight to Tokyo
and ran out of movies to watch ;)
So I have a set of patches that add a real hdev->setup() stage to
Bluetooth core. So it can be used from any driver. I also have an
immediate use for it by one of the Broadcom drivers that need to send
one extra HCI command for the HID switching.
Need to refactor the patches a bit in better order and will post them
then.
Regards
Marcel
prev parent reply other threads:[~2012-11-11 0:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-02 20:54 [RFCv3 1/3] Bluetooth: Add support BT mini-driver Tedd Ho-Jeong An
2012-11-11 0:34 ` Marcel Holtmann [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1352594070.16204.15.camel@aeonflux \
--to=marcel@holtmann.org \
--cc=albert.o.ho@intel.com \
--cc=johan.hedberg@intel.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=tedd.an@intel.com \
--cc=tedd.hj.an@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox