lkml.org 
[lkml]   [2020]   [Dec]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.10 058/217] Bluetooth: btqca: Add valid le states quirk
    Date
    From: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>

    [ Upstream commit 547801380ec7e6104ea679f599d03c342b4b39a0 ]

    WCN3991 supports connectable advertisements so we need to add the valid
    le states quirk so the 'central-peripheral' role is exposed in
    userspace.

    Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/bluetooth/hci_qca.c | 19 +++++++++++++------
    1 file changed, 13 insertions(+), 6 deletions(-)

    diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
    index 244b8feba5232..2d3f1f179a1e3 100644
    --- a/drivers/bluetooth/hci_qca.c
    +++ b/drivers/bluetooth/hci_qca.c
    @@ -78,6 +78,7 @@ enum qca_flags {

    enum qca_capabilities {
    QCA_CAP_WIDEBAND_SPEECH = BIT(0),
    + QCA_CAP_VALID_LE_STATES = BIT(1),
    };

    /* HCI_IBS transmit side sleep protocol states */
    @@ -1780,7 +1781,7 @@ static const struct qca_device_data qca_soc_data_wcn3991 = {
    { "vddch0", 450000 },
    },
    .num_vregs = 4,
    - .capabilities = QCA_CAP_WIDEBAND_SPEECH,
    + .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
    };

    static const struct qca_device_data qca_soc_data_wcn3998 = {
    @@ -2017,11 +2018,17 @@ static int qca_serdev_probe(struct serdev_device *serdev)
    hdev->shutdown = qca_power_off;
    }

    - /* Wideband speech support must be set per driver since it can't be
    - * queried via hci.
    - */
    - if (data && (data->capabilities & QCA_CAP_WIDEBAND_SPEECH))
    - set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
    + if (data) {
    + /* Wideband speech support must be set per driver since it can't
    + * be queried via hci. Same with the valid le states quirk.
    + */
    + if (data->capabilities & QCA_CAP_WIDEBAND_SPEECH)
    + set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED,
    + &hdev->quirks);
    +
    + if (data->capabilities & QCA_CAP_VALID_LE_STATES)
    + set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
    + }

    return 0;
    }
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-12-23 04:09    [W:4.190 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site