Received: by 2002:a05:6a10:eb17:0:0:0:0 with SMTP id hx23csp371851pxb; Fri, 3 Sep 2021 04:13:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx5TWQ+WcPLVU45GiUSMqwzVJ3DNgmuyilt+ceC/XSBLBBGz7S4Z6CRxsvYndR1qCQENdMF X-Received: by 2002:a17:906:6717:: with SMTP id a23mr3521554ejp.358.1630667583542; Fri, 03 Sep 2021 04:13:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630667583; cv=none; d=google.com; s=arc-20160816; b=hnxoh3dmpNEoj1gplx3ohTSLG/k6Nzor3cQ8QK4CKFtjpRQEqU6LWAvVNg2k9mz4Cs /O+bcoospAIQDX0Ai9cyV3fMHsgF6CnUa9bwU/p5spNtrx00LD9DzRROXBUl15pDXM0s qTYDEAZTsxV7eA0QnWLROy2Ru9P0Qjhu/bnMlnNQ8cbwEh+7B2HoWsWpAVEmOn/isoTQ 9ako+ILbfkhbQoWa1j7cc/6pAIA7uCeVHvLckBDzrgSnDpjBAXlYpMhgGmYVI2X0H6p6 Yb+N3Mjho8O6cI6OBY8in/Me9vL8f5vJAiCcqKuJo3pG+m1BCQqqk9e71mpvcVy2/w9+ s6nw== 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=3GxSFKEzAr3/CAELzkpUMaB9aTsjPtDKh680lZQSDyY=; b=fEAFgr1bJq/Oc0PUgCC47/6lnUcu5ueUrFVzm5sP7yGq4ae4k1zijP9SMi4sswMEw0 Q0VJT+U5ICYwkfbj2/gyJPUvj2v68Q3NZNfVPx2aDdkI9w1zsxAum3OwpJauWw9WudCd kXOd1+eZgPw9T+V9xdCU5JtD91jUFO2k78cLs+FKjcELjCL0pggBCJMNUl3/aoFHNsGg bEJupIcKmNTzOURe5IdiTqbMfqbuspL6uy7I9Ji68lvrBBPqdBoWF6yR8zS+4p9YPkFj 6FJyGtxlJmaW4lUyRijzmjJtCxUBlgZZOVqLG3nINlht2mBWXqWGbY0lPK5cztla7M8q F2Pg== 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 nb8si5611149ejc.529.2021.09.03.04.12.26; Fri, 03 Sep 2021 04:13:03 -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 S235029AbhICKyY (ORCPT + 99 others); Fri, 3 Sep 2021 06:54:24 -0400 Received: from mga17.intel.com ([192.55.52.151]:30312 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349215AbhICKyR (ORCPT ); Fri, 3 Sep 2021 06:54:17 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10095"; a="199614849" X-IronPort-AV: E=Sophos;i="5.85,265,1624345200"; d="scan'208";a="199614849" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Sep 2021 03:53:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,265,1624345200"; d="scan'208";a="692090451" Received: from intel-lenovo-legion-y540-15irh-pg0.iind.intel.com ([10.224.186.95]) by fmsmga005.fm.intel.com with ESMTP; 03 Sep 2021 03:53:16 -0700 From: Kiran K To: linux-bluetooth@vger.kernel.org Cc: ravishankar.srivatsa@intel.com, chethan.tumkur.narayan@intel.com, tedd.an@intel.com, luiz.von.dentz@intel.com, Kiran K Subject: [PATCH v14 09/12] Bluetooth: btintel: Define a callback to fetch codec config data Date: Fri, 3 Sep 2021 16:28:10 +0530 Message-Id: <20210903105813.2440-9-kiran.k@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210903105813.2440-1-kiran.k@intel.com> References: <20210903105813.2440-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 --- Notes: * changes in v14: - No changes * changes in v13: - No changes * changes in v12: - No changes * changes in v11: - Remove changes related to Kconfig * changes in v10: - new patch due to refactoring drivers/bluetooth/btintel.c | 53 ++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c index 751e0f0b8242..115bb2d07a8d 100644 --- a/drivers/bluetooth/btintel.c +++ b/drivers/bluetooth/btintel.c @@ -2158,6 +2158,55 @@ static int btintel_prepare_fw_download_tlv(struct hci_dev *hdev, return err; } +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 != 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 btintel_get_data_path_id(struct hci_dev *hdev, __u8 *data_path_id) { /* Intel uses 1 as data path id for all the usecases */ @@ -2190,8 +2239,10 @@ static int btintel_configure_offload(struct hci_dev *hdev) goto error; } - if (use_cases->preset[0] & 0x03) + if (use_cases->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