Re: [PATCH v2 2/3] Bluetooth: hci_vhci: Add force_suspend entry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Luiz,

>>> This adds force_suspend which can be used to force the controller into
>>> suspend/resume state.
>>> 
>>> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
>>> ---
>>> drivers/bluetooth/hci_vhci.c | 49 ++++++++++++++++++++++++++++++++++++
>>> 1 file changed, 49 insertions(+)
>>> 
>>> diff --git a/drivers/bluetooth/hci_vhci.c b/drivers/bluetooth/hci_vhci.c
>>> index cc3679f3491d..52f9106faeae 100644
>>> --- a/drivers/bluetooth/hci_vhci.c
>>> +++ b/drivers/bluetooth/hci_vhci.c
>>> @@ -21,6 +21,7 @@
>>> 
>>> #include <linux/skbuff.h>
>>> #include <linux/miscdevice.h>
>>> +#include <linux/debugfs.h>
>>> 
>>> #include <net/bluetooth/bluetooth.h>
>>> #include <net/bluetooth/hci_core.h>
>>> @@ -91,6 +92,51 @@ static int vhci_get_codec_config_data(struct hci_dev *hdev, __u8 type,
>>>      return 0;
>>> }
>>> 
>>> +static ssize_t force_suspend_read(struct file *file, char __user *user_buf,
>>> +                               size_t count, loff_t *ppos)
>>> +{
>>> +     struct hci_dev *hdev = file->private_data;
>>> +     char buf[3];
>>> +
>>> +     buf[0] = hdev->suspended ? 'Y' : 'N';
>>> +     buf[1] = '\n';
>>> +     buf[2] = '\0';
>>> +     return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
>>> +}
>>> +
>>> +static ssize_t force_suspend_write(struct file *file,
>>> +                                const char __user *user_buf,
>>> +                                size_t count, loff_t *ppos)
>>> +{
>>> +     struct hci_dev *hdev = file->private_data;
>>> +     bool enable;
>>> +     int err;
>>> +
>>> +     err = kstrtobool_from_user(user_buf, count, &enable);
>>> +     if (err)
>>> +             return err;
>>> +
>>> +     if (hdev->suspended == enable)
>>> +             return -EALREADY;
>> 
>> I think that we have to have bool suspended in vhci_data struct here. It needs to be local to the driver.
> 
> Ok, but I guess hdev->suspended should be kept as is, right?

yes, that is for the core to handle. The transport driver just needs to not mess or depend on core internals.

Regards

Marcel




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux