void                    *msft_data;
 #endif
 
+#if IS_ENABLED(CONFIG_BT_AOSPEXT)
+       bool                    aosp_capable;
+#endif
+
        int (*open)(struct hci_dev *hdev);
        int (*close)(struct hci_dev *hdev);
        int (*flush)(struct hci_dev *hdev);
 #endif
 }
 
+static inline void hci_set_aosp_capable(struct hci_dev *hdev)
+{
+#if IS_ENABLED(CONFIG_BT_AOSPEXT)
+       hdev->aosp_capable = true;
+#endif
+}
+
 int hci_dev_open(__u16 dev);
 int hci_dev_close(__u16 dev);
 int hci_dev_do_close(struct hci_dev *hdev);
 
          This options enables support for the Microsoft defined HCI
          vendor extensions.
 
+config BT_AOSPEXT
+       bool "Enable Android Open Source Project extensions"
+       depends on BT
+       help
+         This options enables support for the Android Open Source
+         Project defined HCI vendor extensions.
+
 config BT_DEBUGFS
        bool "Export Bluetooth internals in debugfs"
        depends on BT && DEBUG_FS
 
 bluetooth-$(CONFIG_BT_HS) += a2mp.o amp.o
 bluetooth-$(CONFIG_BT_LEDS) += leds.o
 bluetooth-$(CONFIG_BT_MSFTEXT) += msft.o
+bluetooth-$(CONFIG_BT_AOSPEXT) += aosp.o
 bluetooth-$(CONFIG_BT_DEBUGFS) += hci_debugfs.o
 bluetooth-$(CONFIG_BT_SELFTEST) += selftest.o
 
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2021 Intel Corporation
+ */
+
+#include <net/bluetooth/bluetooth.h>
+#include <net/bluetooth/hci_core.h>
+
+#include "aosp.h"
+
+void aosp_do_open(struct hci_dev *hdev)
+{
+       struct sk_buff *skb;
+
+       if (!hdev->aosp_capable)
+               return;
+
+       bt_dev_dbg(hdev, "Initialize AOSP extension");
+
+       /* LE Get Vendor Capabilities Command */
+       skb = __hci_cmd_sync(hdev, hci_opcode_pack(0x3f, 0x153), 0, NULL,
+                            HCI_CMD_TIMEOUT);
+       if (IS_ERR(skb))
+               return;
+
+       kfree_skb(skb);
+}
+
+void aosp_do_close(struct hci_dev *hdev)
+{
+       if (!hdev->aosp_capable)
+               return;
+
+       bt_dev_dbg(hdev, "Cleanup of AOSP extension");
+}
 
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2021 Intel Corporation
+ */
+
+#if IS_ENABLED(CONFIG_BT_AOSPEXT)
+
+void aosp_do_open(struct hci_dev *hdev);
+void aosp_do_close(struct hci_dev *hdev);
+
+#else
+
+static inline void aosp_do_open(struct hci_dev *hdev) {}
+static inline void aosp_do_close(struct hci_dev *hdev) {}
+
+#endif
 
 #include "smp.h"
 #include "leds.h"
 #include "msft.h"
+#include "aosp.h"
 
 static void hci_rx_work(struct work_struct *work);
 static void hci_cmd_work(struct work_struct *work);
                ret = hdev->set_diag(hdev, true);
 
        msft_do_open(hdev);
+       aosp_do_open(hdev);
 
        clear_bit(HCI_INIT, &hdev->flags);
 
 
        hci_sock_dev_event(hdev, HCI_DEV_DOWN);
 
+       aosp_do_close(hdev);
        msft_do_close(hdev);
 
        if (hdev->flush)