Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp10704169pxu; Wed, 30 Dec 2020 09:19:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJwHfCKVcQ0Fd6ZAllRkhhfa0eqkW8wBBl9ITpHy5Ve/Asi8ysz1aor6C7xKhshJC7BD7hU7 X-Received: by 2002:a17:906:94ca:: with SMTP id d10mr47975766ejy.62.1609348747992; Wed, 30 Dec 2020 09:19:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609348747; cv=none; d=google.com; s=arc-20160816; b=V3yc1RmGpGUxIJGPC1AIR6CRF2BV2V6xb9O8jjjYX3r5NFLlrMfJvGiBIK5q7LVQOv pe3Dn4RxbTeXCz5DYh+Xnw7b7hJD8sRa6vNMFekxr9RQTUbOfJoz7LSqP42jETpazSuh GsEhW5qOuZFKyonvu+f1gDwJ1KcvUe/xlnPGaxWjOjJqsW0wImtBCCG/fuW85Yeo/+7S 58uU8qgMNq1ojzBfcVrRHL8CrMvjCvBpRO14MvtF/smmco1mEv7O8b8rG5BizZZI0r2U NGnn5/CXjjTSQbm212Ezqb+GaKvBT4wp4ojWVHg+mN90nCz1sVTIgII4079OfOR3TPT9 1n0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=rU/qoL2gLzaU/4qJrqHquwHYPzF5zPMoxrOqwJrdUfU=; b=UnCgTMzbmrjxEbRnr1W+lSKLZ0e1L551inWIP/Wgc2xqLSAJlatvUcSlHD834sBu/g o2zF+tRRV4L8RlfWCz2Y4sza7xzF1ar+MXClm5rE7RbV9DP1/b/NxYt/cRblyLeM5+Ak 6iOblbVYrCvyqRo/6CdNdgaETqJy7NomxJb9xQarxqlUTmkfWWurYD3LfqkSLBdxCQpP ozPcZF5SvaXjohZasTUYrIl1q1wu0VdCKWNlu/tQusBdQPYLdC5hBvcm1ojR6nqrN2LH J3Qj6YXrxK+cpgOr4dB10PmEDbMQSINC5pXdMoq6pr4ryoh09eZ48hzeIciEIzUuKy6K bkVw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k3si23591117edr.372.2020.12.30.09.18.44; Wed, 30 Dec 2020 09:19:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726348AbgL3RSS (ORCPT + 99 others); Wed, 30 Dec 2020 12:18:18 -0500 Received: from alexa-out.qualcomm.com ([129.46.98.28]:27907 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726168AbgL3RSR (ORCPT ); Wed, 30 Dec 2020 12:18:17 -0500 Received: from ironmsg08-lv.qualcomm.com ([10.47.202.152]) by alexa-out.qualcomm.com with ESMTP; 30 Dec 2020 09:17:37 -0800 X-QCInternal: smtphost Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by ironmsg08-lv.qualcomm.com with ESMTP/TLS/AES256-SHA; 30 Dec 2020 09:17:35 -0800 X-QCInternal: smtphost Received: from gubbaven-linux.qualcomm.com ([10.206.64.32]) by ironmsg02-blr.qualcomm.com with ESMTP; 30 Dec 2020 22:47:11 +0530 Received: by gubbaven-linux.qualcomm.com (Postfix, from userid 2365015) id 283B821298; Wed, 30 Dec 2020 22:47:10 +0530 (IST) From: Venkata Lakshmi Narayana Gubba To: marcel@holtmann.org, johan.hedberg@gmail.com Cc: mka@chromium.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, hemantg@codeaurora.org, linux-arm-msm@vger.kernel.org, bgodavar@codeaurora.org, rjliao@codeaurora.org, hbandi@codeaurora.org, abhishekpandit@chromium.org, Venkata Lakshmi Narayana Gubba Subject: [PATCH v1] Bluetooth: hci_qca: Wait for SSR completion during suspend Date: Wed, 30 Dec 2020 22:47:08 +0530 Message-Id: <1609348628-3932-1-git-send-email-gubbaven@codeaurora.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During SSR after memory dump collection,BT controller will be powered off, powered on and then FW will be downloaded.During suspend if BT controller is powered off due to SSR then we should wait until SSR is completed and then suspend. Fixes: 2be43abac5a8 ("Bluetooth: hci_qca: Wait for timeout during suspend") Signed-off-by: Venkata Lakshmi Narayana Gubba --- drivers/bluetooth/hci_qca.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 4a96368..6ad4079 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -50,7 +50,8 @@ #define IBS_HOST_TX_IDLE_TIMEOUT_MS 2000 #define CMD_TRANS_TIMEOUT_MS 100 #define MEMDUMP_TIMEOUT_MS 8000 -#define IBS_DISABLE_SSR_TIMEOUT_MS (MEMDUMP_TIMEOUT_MS + 1000) +#define IBS_DISABLE_SSR_TIMEOUT_MS \ + (MEMDUMP_TIMEOUT_MS + FW_DOWNLOAD_TIMEOUT_MS) #define FW_DOWNLOAD_TIMEOUT_MS 3000 /* susclk rate */ @@ -2100,7 +2101,12 @@ static int __maybe_unused qca_suspend(struct device *dev) set_bit(QCA_SUSPENDING, &qca->flags); - if (test_bit(QCA_BT_OFF, &qca->flags)) + /* During SSR after memory dump collection, controller will be + * powered off and then powered on.If controller is powered off + * during SSR then we should wait until SSR is completed. + */ + if (test_bit(QCA_BT_OFF, &qca->flags) && + !test_bit(QCA_SSR_TRIGGERED, &qca->flags)) return 0; if (test_bit(QCA_IBS_DISABLED, &qca->flags)) { @@ -2110,7 +2116,7 @@ static int __maybe_unused qca_suspend(struct device *dev) /* QCA_IBS_DISABLED flag is set to true, During FW download * and during memory dump collection. It is reset to false, - * After FW download complete and after memory dump collections. + * After FW download complete. */ wait_on_bit_timeout(&qca->flags, QCA_IBS_DISABLED, TASK_UNINTERRUPTIBLE, msecs_to_jiffies(wait_timeout)); @@ -2122,10 +2128,6 @@ static int __maybe_unused qca_suspend(struct device *dev) } } - /* After memory dump collection, Controller is powered off.*/ - if (test_bit(QCA_BT_OFF, &qca->flags)) - return 0; - cancel_work_sync(&qca->ws_awake_device); cancel_work_sync(&qca->ws_awake_rx); -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation