* [PATCH RESEND 2/5] Bluetooth: mt7921s: Set HCI_QUIRK_VALID_LE_STATES
2022-03-15 18:00 [PATCH RESEND 1/5] Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt sean.wang
@ 2022-03-15 18:00 ` sean.wang
2022-03-15 18:00 ` [PATCH RESEND 3/5] Bluetooth: mt7921s: Add .get_data_path_id sean.wang
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: sean.wang @ 2022-03-15 18:00 UTC (permalink / raw)
To: marcel, johan.hedberg
Cc: sean.wang, Soul.Huang, YN.Chen, Leon.Yen, Eric-SY.Chang,
Deren.Wu, km.lin, robin.chiu, Eddie.Chen, ch.yeh, posh.sun,
ted.huang, Eric.Liang, Stella.Chang, Tom.Chou, steve.lee, jsiuda,
frankgor, abhishekpandit, michaelfsun, mcchou, shawnku,
linux-bluetooth, linux-mediatek, linux-kernel, Yake Yang
From: Yake Yang <yake.yang@mediatek.com>
The patch set HCI_QUIRK_VALID_LE_STATES to be consistent with the btusb for
MT7921 and is required for the likes of experimental LE simultaneous roles.
Reviewed-by: Mark Chen <markyawenchen@gmail.com>
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Yake Yang <yake.yang@mediatek.com>
---
drivers/bluetooth/btmtksdio.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c
index 9644069cecbb..034e55278c56 100644
--- a/drivers/bluetooth/btmtksdio.c
+++ b/drivers/bluetooth/btmtksdio.c
@@ -1070,6 +1070,9 @@ static int btmtksdio_setup(struct hci_dev *hdev)
}
}
+ /* Valid LE States quirk for MediaTek 7921 */
+ set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
+
break;
case 0x7663:
case 0x7668:
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH RESEND 3/5] Bluetooth: mt7921s: Add .get_data_path_id
2022-03-15 18:00 [PATCH RESEND 1/5] Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt sean.wang
2022-03-15 18:00 ` [PATCH RESEND 2/5] Bluetooth: mt7921s: Set HCI_QUIRK_VALID_LE_STATES sean.wang
@ 2022-03-15 18:00 ` sean.wang
2022-03-15 18:00 ` [PATCH RESEND 4/5] Bluetooth: mt7921s: Add .btmtk_get_codec_config_data sean.wang
2022-03-15 18:00 ` [PATCH RESEND 5/5] Bluetooth: mt7921s: Add WBS support sean.wang
3 siblings, 0 replies; 5+ messages in thread
From: sean.wang @ 2022-03-15 18:00 UTC (permalink / raw)
To: marcel, johan.hedberg
Cc: sean.wang, Soul.Huang, YN.Chen, Leon.Yen, Eric-SY.Chang,
Deren.Wu, km.lin, robin.chiu, Eddie.Chen, ch.yeh, posh.sun,
ted.huang, Eric.Liang, Stella.Chang, Tom.Chou, steve.lee, jsiuda,
frankgor, abhishekpandit, michaelfsun, mcchou, shawnku,
linux-bluetooth, linux-mediatek, linux-kernel, Yake Yang
From: Yake Yang <yake.yang@mediatek.com>
Add .get_data_path_id to fetch data_path_id for MT7921 to support HFP
offload use case.
This is a preliminary patch to add the WBS support to the MT7921 driver.
Reviewed-by: Mark Chen <markyawenchen@gmail.com>
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Yake Yang <yake.yang@mediatek.com>
---
drivers/bluetooth/btmtksdio.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c
index 034e55278c56..4000a994fe2c 100644
--- a/drivers/bluetooth/btmtksdio.c
+++ b/drivers/bluetooth/btmtksdio.c
@@ -936,6 +936,13 @@ static int btmtksdio_mtk_reg_write(struct hci_dev *hdev, u32 reg, u32 val, u32 m
return err;
}
+static int btmtksdio_get_data_path_id(struct hci_dev *hdev, __u8 *data_path_id)
+{
+ /* uses 1 as data path id for all the usecases */
+ *data_path_id = 1;
+ return 0;
+}
+
static int btmtksdio_sco_setting(struct hci_dev *hdev)
{
const struct btmtk_sco sco_setting = {
@@ -968,7 +975,13 @@ static int btmtksdio_sco_setting(struct hci_dev *hdev)
return err;
val |= 0x00000101;
- return btmtksdio_mtk_reg_write(hdev, MT7921_PINMUX_1, val, ~0);
+ err = btmtksdio_mtk_reg_write(hdev, MT7921_PINMUX_1, val, ~0);
+ if (err < 0)
+ return err;
+
+ hdev->get_data_path_id = btmtksdio_get_data_path_id;
+
+ return err;
}
static int btmtksdio_reset_setting(struct hci_dev *hdev)
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH RESEND 4/5] Bluetooth: mt7921s: Add .btmtk_get_codec_config_data
2022-03-15 18:00 [PATCH RESEND 1/5] Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt sean.wang
2022-03-15 18:00 ` [PATCH RESEND 2/5] Bluetooth: mt7921s: Set HCI_QUIRK_VALID_LE_STATES sean.wang
2022-03-15 18:00 ` [PATCH RESEND 3/5] Bluetooth: mt7921s: Add .get_data_path_id sean.wang
@ 2022-03-15 18:00 ` sean.wang
2022-03-15 18:00 ` [PATCH RESEND 5/5] Bluetooth: mt7921s: Add WBS support sean.wang
3 siblings, 0 replies; 5+ messages in thread
From: sean.wang @ 2022-03-15 18:00 UTC (permalink / raw)
To: marcel, johan.hedberg
Cc: sean.wang, Soul.Huang, YN.Chen, Leon.Yen, Eric-SY.Chang,
Deren.Wu, km.lin, robin.chiu, Eddie.Chen, ch.yeh, posh.sun,
ted.huang, Eric.Liang, Stella.Chang, Tom.Chou, steve.lee, jsiuda,
frankgor, abhishekpandit, michaelfsun, mcchou, shawnku,
linux-bluetooth, linux-mediatek, linux-kernel, Yake Yang
From: Yake Yang <yake.yang@mediatek.com>
add .btmtk_get_codec_config_data to get codec configuration data.
In HFP offload usecase, controllers need to be set codec details before
opening SCO. This callback function is used to fetch vendor specific codec
config data.
This is a preliminary patch to add the WBS support to the MT7921 driver.
Reviewed-by: Mark Chen <markyawenchen@gmail.com>
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Yake Yang <yake.yang@mediatek.com>
---
drivers/bluetooth/btmtksdio.c | 50 +++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c
index 4000a994fe2c..c28eb9fc6176 100644
--- a/drivers/bluetooth/btmtksdio.c
+++ b/drivers/bluetooth/btmtksdio.c
@@ -943,6 +943,55 @@ static int btmtksdio_get_data_path_id(struct hci_dev *hdev, __u8 *data_path_id)
return 0;
}
+static int btmtksdio_get_codec_config_data(struct hci_dev *hdev,
+ __u8 link, struct bt_codec *codec,
+ __u8 *ven_len, __u8 **ven_data)
+{
+ int err = 0;
+
+ if (!ven_data || !ven_len)
+ return -EINVAL;
+
+ *ven_len = 0;
+ *ven_data = NULL;
+
+ if (link != ESCO_LINK) {
+ bt_dev_err(hdev, "Invalid link type(%u)", link);
+ return -EINVAL;
+ }
+
+ *ven_data = kmalloc(sizeof(__u8), GFP_KERNEL);
+ if (!ven_data) {
+ err = -ENOMEM;
+ goto error;
+ }
+
+ /* supports only CVSD and mSBC offload codecs */
+ switch (codec->id) {
+ case 0x02:
+ **ven_data = 0x00;
+ break;
+ case 0x05:
+ **ven_data = 0x01;
+ break;
+ default:
+ err = -EINVAL;
+ bt_dev_err(hdev, "Invalid codec id(%u)", codec->id);
+ goto error;
+ }
+ /* codec and its capabilities are pre-defined to ids
+ * preset id = 0x00 represents CVSD codec with sampling rate 8K
+ * preset id = 0x01 represents mSBC codec with sampling rate 16K
+ */
+ *ven_len = sizeof(__u8);
+ return err;
+
+error:
+ kfree(*ven_data);
+ *ven_data = NULL;
+ return err;
+}
+
static int btmtksdio_sco_setting(struct hci_dev *hdev)
{
const struct btmtk_sco sco_setting = {
@@ -980,6 +1029,7 @@ static int btmtksdio_sco_setting(struct hci_dev *hdev)
return err;
hdev->get_data_path_id = btmtksdio_get_data_path_id;
+ hdev->get_codec_config_data = btmtksdio_get_codec_config_data;
return err;
}
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH RESEND 5/5] Bluetooth: mt7921s: Add WBS support
2022-03-15 18:00 [PATCH RESEND 1/5] Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt sean.wang
` (2 preceding siblings ...)
2022-03-15 18:00 ` [PATCH RESEND 4/5] Bluetooth: mt7921s: Add .btmtk_get_codec_config_data sean.wang
@ 2022-03-15 18:00 ` sean.wang
3 siblings, 0 replies; 5+ messages in thread
From: sean.wang @ 2022-03-15 18:00 UTC (permalink / raw)
To: marcel, johan.hedberg
Cc: sean.wang, Soul.Huang, YN.Chen, Leon.Yen, Eric-SY.Chang,
Deren.Wu, km.lin, robin.chiu, Eddie.Chen, ch.yeh, posh.sun,
ted.huang, Eric.Liang, Stella.Chang, Tom.Chou, steve.lee, jsiuda,
frankgor, abhishekpandit, michaelfsun, mcchou, shawnku,
linux-bluetooth, linux-mediatek, linux-kernel, Yake Yang
From: Yake Yang <yake.yang@mediatek.com>
It is time to add wide band speech (WBS) support.
Reviewed-by: Mark Chen <markyawenchen@gmail.com>
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Yake Yang <yake.yang@mediatek.com>
---
drivers/bluetooth/btmtksdio.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c
index c28eb9fc6176..f3dc5881fff7 100644
--- a/drivers/bluetooth/btmtksdio.c
+++ b/drivers/bluetooth/btmtksdio.c
@@ -1123,6 +1123,9 @@ static int btmtksdio_setup(struct hci_dev *hdev)
return err;
}
+ /* Enable WBS with mSBC codec */
+ set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
+
/* Enable GPIO reset mechanism */
if (bdev->reset) {
err = btmtksdio_reset_setting(hdev);
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread