Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3566862ybl; Mon, 3 Feb 2020 02:41:39 -0800 (PST) X-Google-Smtp-Source: APXvYqxE07tv6OitgTfEC7aqZXn49DQHJkRDG+mjuR9PSxJRzonaDVxmiDCeHyghIoi04m4vNSUS X-Received: by 2002:a05:6808:b22:: with SMTP id t2mr14194175oij.40.1580726499806; Mon, 03 Feb 2020 02:41:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580726499; cv=none; d=google.com; s=arc-20160816; b=BdMLJEXyb/Lh04vQk1Y9s0GlFib/Z2cwWPPHy1hm+AZkaJWn694YBpLbr6VH/0efGj rI/SWLIM81cCKWchgGhCfzbDlXV003PXCm/cpBiotHCjpNdzz5D+QSbZr0pIDE7W0LBl xlp/jeLfsuF4dfeid8Y//snLF/QF3dwlZLJa4Ej18bVHu52CQ069tL8g26NXgFW0OK8O Juyyj448maFzxnYQVx3ASpkTa7AdSrVg8LZVBS7jCknOyulUcFlI2ugQnJKeYm4dDbF/ ry6aYI2EIGl4UpEWhDDxKMN4eVJd+5KQAaML1z0iVEhoxGVKsg+iHYWnv73MsUlBBEGY xk+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=cDq/5KUBq8W2lxGTEVrj3p3ISw767E+9Nl3HH52iNj4=; b=DBarva/fxRk1KtQnRfFHj/OrnF707kZ48jYvBQDi4KoDp8TRFuvzsjmvMQ1TJm67Zc XfY4LWnyqYQx1wsIcyhO4P0TXWOL7X7KCmssdA6QQHSWe5/AQ9RF6PXmcTKFlIPj0ED5 79idPtMQSnW/sXgaYHC5lENdTfPsVPFWQJgCw5xv+FOMhTLTp6B7FpZo2ADln5D5kycW U4/MbHlKlspaGFRW/3lXXgJ1EL56QBT7YYLm/5ZAbGL6cWU4aVUk9o/mglo2rTtMBh5P cdH4ZwhJ20n39462OfpKfU40e6Rp3va5xkB1itRoA59z/FJOiwcCaH3YRc2Y9AY8slvz 4KMg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m19si9285153otr.18.2020.02.03.02.41.27; Mon, 03 Feb 2020 02:41:39 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727311AbgBCKlO (ORCPT + 99 others); Mon, 3 Feb 2020 05:41:14 -0500 Received: from alexa-out-blr-01.qualcomm.com ([103.229.18.197]:14206 "EHLO alexa-out-blr-01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727196AbgBCKlO (ORCPT ); Mon, 3 Feb 2020 05:41:14 -0500 Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by alexa-out-blr-01.qualcomm.com with ESMTP/TLS/AES256-SHA; 03 Feb 2020 16:11:08 +0530 Received: from gubbaven-linux.qualcomm.com ([10.206.64.32]) by ironmsg02-blr.qualcomm.com with ESMTP; 03 Feb 2020 16:10:45 +0530 Received: by gubbaven-linux.qualcomm.com (Postfix, from userid 2365015) id 8A536212C4; Mon, 3 Feb 2020 16:10:43 +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, robh@kernel.org, hemantg@codeaurora.org, linux-arm-msm@vger.kernel.org, bgodavar@codeaurora.org, tientzu@chromium.org, seanpaul@chromium.org, rjliao@codeaurora.org, yshavit@google.com, devicetree@vger.kernel.org, Venkata Lakshmi Narayana Gubba Subject: [PATCH v3 1/2] Bluetooth: hci_qca: Enable clocks required for BT SOC Date: Mon, 3 Feb 2020 16:10:40 +0530 Message-Id: <1580726441-1100-1-git-send-email-gubbaven@codeaurora.org> X-Mailer: git-send-email 2.7.4 Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Instead of relying on other subsytem to turn ON clocks required for BT SoC to operate, voting them from the driver. Signed-off-by: Venkata Lakshmi Narayana Gubba --- v3: *Removed the function qca_setup_clock() *For enabling and disabling clocks, directly called the functions clk_prepare_enable and clk_disable_unprepare respectively. --- drivers/bluetooth/hci_qca.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index d6e0c99..eacc65b 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1755,6 +1755,13 @@ static int qca_regulator_enable(struct qca_serdev *qcadev) power->vregs_on = true; + ret = clk_prepare_enable(qcadev->susclk); + if (ret) { + /* Turn off regulators to overcome power leakage */ + qca_regulator_disable(qcadev); + return ret; + } + return 0; } @@ -1773,6 +1780,9 @@ static void qca_regulator_disable(struct qca_serdev *qcadev) regulator_bulk_disable(power->num_vregs, power->vreg_bulk); power->vregs_on = false; + + if (qcadev->susclk) + clk_disable_unprepare(qcadev->susclk); } static int qca_init_regulators(struct qca_power *qca, @@ -1839,6 +1849,12 @@ static int qca_serdev_probe(struct serdev_device *serdev) qcadev->bt_power->vregs_on = false; + qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL); + if (IS_ERR(qcadev->susclk)) { + dev_err(&serdev->dev, "failed to acquire clk\n"); + return PTR_ERR(qcadev->susclk); + } + device_property_read_u32(&serdev->dev, "max-speed", &qcadev->oper_speed); if (!qcadev->oper_speed) -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation