Bluetooth: hci_qca: Add qcom devcoredump sysfs support
authorSai Teja Aluvala <quic_saluvala@quicinc.com>
Wed, 14 Jun 2023 04:58:15 +0000 (10:28 +0530)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 11 Aug 2023 18:38:40 +0000 (11:38 -0700)
This patch implements the hci_qca driver side .coredump() callback to
trigger a devcoredump via sysfs.

Signed-off-by: Sai Teja Aluvala <quic_saluvala@quicinc.com>
v2 -> V3:
--------
Updated commit text

v1 -> V2:
--------
Updated to work with the updated HCI devcoredump API.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/hci_qca.c

index e30c979..1ee5323 100644 (file)
@@ -2384,6 +2384,18 @@ static const struct acpi_device_id qca_bluetooth_acpi_match[] = {
 MODULE_DEVICE_TABLE(acpi, qca_bluetooth_acpi_match);
 #endif
 
+#ifdef CONFIG_DEV_COREDUMP
+static void hciqca_coredump(struct device *dev)
+{
+       struct serdev_device *serdev = to_serdev_device(dev);
+       struct qca_serdev *qcadev = serdev_device_get_drvdata(serdev);
+       struct hci_uart *hu = &qcadev->serdev_hu;
+       struct hci_dev  *hdev = hu->hdev;
+
+       if (hdev->dump.coredump)
+               hdev->dump.coredump(hdev);
+}
+#endif
 
 static struct serdev_device_driver qca_serdev_driver = {
        .probe = qca_serdev_probe,
@@ -2394,6 +2406,9 @@ static struct serdev_device_driver qca_serdev_driver = {
                .acpi_match_table = ACPI_PTR(qca_bluetooth_acpi_match),
                .shutdown = qca_serdev_shutdown,
                .pm = &qca_pm_ops,
+#ifdef CONFIG_DEV_COREDUMP
+               .coredump = hciqca_coredump,
+#endif
        },
 };