Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp115688pxv; Wed, 30 Jun 2021 01:08:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzF37m/2Qz9yeLAIiauHm72Tzk8ZxJZ2F9tQ7HcqFu78QC7LUll5j1771SBrg8TKUHVG8u3 X-Received: by 2002:a17:907:7050:: with SMTP id ws16mr33163870ejb.95.1625040525898; Wed, 30 Jun 2021 01:08:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625040525; cv=none; d=google.com; s=arc-20160816; b=bVeqUhtblbseMO+Pr+RK4G7S9OJ6BPgLvbuBMPsHAmgFDWjTsaCqG592hwI+R9BurE 3jp1tGY0iMwSEkyXU55scCZD0kfbYLZIB7+qLP+2lkp1VRf7wQynuWY+pQyiiAKR1jVu CNwfG/ykpHaQsiYmY/IHPWXFanuxUmW77iTN7dG5mPtnkGnXhBQPyAak1JHTLgbv335N bywAmcPIWGj0UxewDtl7uvjsNJcdZF17+IhlqhsoCeQ/3UvvCCTEOpvkHsQ6K5trV+Xk 9kcd4Oo31crnfhlfQjm17N6SEZvh8KZJ5LZm4WOJeul5alaVSdiz+foqfRIdUjONcc8z qlxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=cvITKa6xoadQxi1S5GroNxqtyEqSf92DgLLPVSoAzU0=; b=lbWLp17EMXmycwa5mDUMsnGqZE0uORhxaOiwcgugZzMIeE8lnTPi+b12zouNgmDYM+ Z1vA591unAcPy828ZOV1hs+k43w1gij6jPJE/dy6M3MG3sJ1ptqYLhLy7IHP6qBriL3G sgBbmeGYMzcLLW4h3KC44DP4Ol947aHrPARWihqSzHVEdd5ZyZAAZQD/4Wgv8z+2KIEK JN0cmiNXw4k6Vgnfh9TVkd3DutoZ2ZhlLDgxWLZVROWfmfTT1hIOs9ly7Na3QVlTGM8F KHPOxhcJxqQjPvsV7/hIaNpRhJdAqLxQOY2+h6eRwu6tbVfEj7ifouvCRqngkAkH6EU6 ZwHA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x17si24561875ejj.146.2021.06.30.01.08.19; Wed, 30 Jun 2021 01:08:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233243AbhF3IGb (ORCPT + 99 others); Wed, 30 Jun 2021 04:06:31 -0400 Received: from mga07.intel.com ([134.134.136.100]:5410 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233230AbhF3IGb (ORCPT ); Wed, 30 Jun 2021 04:06:31 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10030"; a="272164656" X-IronPort-AV: E=Sophos;i="5.83,311,1616482800"; d="scan'208";a="272164656" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jun 2021 01:04:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,311,1616482800"; d="scan'208";a="643997973" Received: from intel-lenovo-legion-y540-15irh-pg0.iind.intel.com ([10.224.186.95]) by fmsmga005.fm.intel.com with ESMTP; 30 Jun 2021 01:04:02 -0700 From: Kiran K To: linux-bluetooth@vger.kernel.org Cc: Kiran K Subject: [PATCH v10 07/10] Bluetooth: btintel: Define a callback to fetch codec config data Date: Wed, 30 Jun 2021 13:38:04 +0530 Message-Id: <20210630080807.12600-7-kiran.k@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210630080807.12600-1-kiran.k@intel.com> References: <20210630080807.12600-1-kiran.k@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Define callback function to get codec config 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. Signed-off-by: Kiran K Reviewed-by: Chethan T N Reviewed-by: Srivatsa Ravishankar --- * changes in v10: - new patch due to refactoring drivers/bluetooth/btintel.c | 49 ++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c index cdb098235e88..df2e84860c91 100644 --- a/drivers/bluetooth/btintel.c +++ b/drivers/bluetooth/btintel.c @@ -1273,6 +1273,51 @@ int btintel_set_debug_features(struct hci_dev *hdev, EXPORT_SYMBOL_GPL(btintel_set_debug_features); #if IS_ENABLED(CONFIG_BT_OFFLOAD_CODECS) +static int btintel_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 != SCO_LINK && link != ESCO_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; + 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); + return err; +} + static int btintel_get_data_path_id(struct hci_dev *hdev, __u8 *data_path_id) { /* Intel uses 1 as data path id for all the usecases */ @@ -1305,8 +1350,10 @@ int btintel_configure_offload_usecases(struct hci_dev *hdev) goto error; } - if (usecases->preset[0] & 0x03) + if (usecases->preset[0] & 0x03) { hdev->get_data_path_id = btintel_get_data_path_id; + hdev->get_codec_config_data = btintel_get_codec_config_data; + } error: kfree_skb(skb); return err; -- 2.17.1