]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Bluetooth: Allow reset via sysfs
authorHsin-chen Chuang <chharry@chromium.org>
Wed, 8 Jan 2025 12:24:44 +0000 (20:24 +0800)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 15 Jan 2025 15:37:07 +0000 (10:37 -0500)
Allow sysfs to trigger hdev reset. This is required to recover devices
that are not responsive from userspace.

Signed-off-by: Hsin-chen Chuang <chharry@chromium.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
net/bluetooth/hci_sysfs.c

index 4b54dbbf0729a343c157b134dc0566d551c8d42f..041ce9adc378aed590288a0d52cc864c0fcf3c92 100644 (file)
@@ -90,9 +90,28 @@ static void bt_host_release(struct device *dev)
        module_put(THIS_MODULE);
 }
 
+static ssize_t reset_store(struct device *dev, struct device_attribute *attr,
+                          const char *buf, size_t count)
+{
+       struct hci_dev *hdev = to_hci_dev(dev);
+
+       if (hdev->reset)
+               hdev->reset(hdev);
+
+       return count;
+}
+static DEVICE_ATTR_WO(reset);
+
+static struct attribute *bt_host_attrs[] = {
+       &dev_attr_reset.attr,
+       NULL,
+};
+ATTRIBUTE_GROUPS(bt_host);
+
 static const struct device_type bt_host = {
        .name    = "host",
        .release = bt_host_release,
+       .groups = bt_host_groups,
 };
 
 void hci_init_sysfs(struct hci_dev *hdev)