Re: [PATCH] Bluetooth: SCO: Add support for 16 bits transparent voice setting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Frédéric,

On Tue, Nov 12, 2024 at 10:31 AM Frédéric Danis
<frederic.danis@xxxxxxxxxxxxx> wrote:
>
> The BCM4349B1 supports 16 bits transparent data on its I2S port.

Ok, but what difference does it make if transparent data or transparent 16 bits?

> Signed-off-by: Frédéric Danis <frederic.danis@xxxxxxxxxxxxx>
> ---
>  include/net/bluetooth/bluetooth.h | 1 +
>  net/bluetooth/sco.c               | 7 +++++--
>  2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
> index f66bc85c6411..21e93640c229 100644
> --- a/include/net/bluetooth/bluetooth.h
> +++ b/include/net/bluetooth/bluetooth.h
> @@ -123,6 +123,7 @@ struct bt_voice {
>
>  #define BT_VOICE_TRANSPARENT                   0x0003
>  #define BT_VOICE_CVSD_16BIT                    0x0060
> +#define BT_VOICE_TRANSPARENT_16BIT             0x0063
>
>  #define BT_SNDMTU              12
>  #define BT_RCVMTU              13
> diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
> index 1b8e468d24cf..baaac4d65a5a 100644
> --- a/net/bluetooth/sco.c
> +++ b/net/bluetooth/sco.c
> @@ -319,7 +319,8 @@ static int sco_connect(struct sock *sk)
>         else
>                 type = SCO_LINK;
>
> -       if (sco_pi(sk)->setting == BT_VOICE_TRANSPARENT &&
> +       if ((sco_pi(sk)->setting == BT_VOICE_TRANSPARENT ||
> +            sco_pi(sk)->setting == BT_VOICE_TRANSPARENT_16BIT) &&
>             (!lmp_transp_capable(hdev) || !lmp_esco_capable(hdev))) {
>                 err = -EOPNOTSUPP;
>                 goto unlock;
> @@ -922,6 +923,7 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
>
>                 /* Explicitly check for these values */
>                 if (voice.setting != BT_VOICE_TRANSPARENT &&
> +                   voice.setting != BT_VOICE_TRANSPARENT_16BIT &&
>                     voice.setting != BT_VOICE_CVSD_16BIT) {
>                         err = -EINVAL;
>                         break;
> @@ -935,7 +937,8 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
>                         break;
>                 }
>                 if (enhanced_sync_conn_capable(hdev) &&
> -                   voice.setting == BT_VOICE_TRANSPARENT)
> +                   (voice.setting == BT_VOICE_TRANSPARENT ||
> +                    voice.setting == BT_VOICE_TRANSPARENT_16BIT))
>                         sco_pi(sk)->codec.id = BT_CODEC_TRANSPARENT;
>                 hci_dev_put(hdev);
>                 break;
> --
> 2.34.1
>
>


-- 
Luiz Augusto von Dentz





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux