From patchwork Sun Sep 17 19:40:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Erik Stromdahl X-Patchwork-Id: 9955029 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 3058B6028A for ; Sun, 17 Sep 2017 19:41:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 23B9028AB5 for ; Sun, 17 Sep 2017 19:41:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1844228AE8; Sun, 17 Sep 2017 19:41:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 3283D28A6E for ; Sun, 17 Sep 2017 19:41:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=sb8tA9CQo8kGyMxxdXwqEzblzoBeuxoVaZVfrxmUEZ0=; b=kfk2YLOEfjfUB3y+htfsbIE0zI iSPOY/bNgNgnNzYU+ildrexPshAxA4Q6WCZQfyxmXfy979x30LjvI934bDO8ZE1B7oRHQwwTElOpZ aQHU6Fe1e0SvlIubf4+fF/9lEhRavMWz/0HitQhfZ3GcPxmIbKR5teGhBtZnpWqyoftjiMJ67mQ79 V/wO5qvVqHNcob16PiPJLgaUsBteGgo5ouFeC4gEbcklRLRZNkAnTYLfy6PzTY4MSvh93H2Ybxro5 /II6Xl+5UEZauZ3oAb/Cn+dPsMXThEVfSZOJZWtZU/EksKm6EBWElla9/RZgO+sblvjb/MIf3GxIc MqP+WGGQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dtfQx-0008PE-9n; Sun, 17 Sep 2017 19:40:51 +0000 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dtfQs-0008II-Sh for ath10k@lists.infradead.org; Sun, 17 Sep 2017 19:40:48 +0000 Received: by mail-lf0-x242.google.com with SMTP id q132so3528900lfe.4 for ; Sun, 17 Sep 2017 12:40:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mYmdPueprqflJaYI1S4TQDZPVnwjrqcItCkFnyHV99E=; b=BbJ1HdZbb1hdXicmgMJsc2ST5kEdKjDZtcEY/sWwhm+sIUHX6+AV4qpZ3sqcrlp9L/ HyX0yPcDhcXLYAa/zUg3/WouIAMoooLJIMLN0FKFI8KRs0zo+S+1RZuTxopYJ4ddkOMV UW9PrAf/AT0EjUtQW80kOzwpvKLlxCMPivDK7gvGiD5MDZF+ppqxqd61N5cnSi7jeIQ2 0WSvUVjdPPmQEjaayOXADor2/8csFO24TzzklCHdxMMu1l2BEjQuaD7vR8rbfLiPPjTF 5wBmBl3L0ShXVw8EDIm9ouK3YIKbsnuN8nAA2IAlRdRayo4Ni+tjrRn7ov/+VviUtCp0 nyWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mYmdPueprqflJaYI1S4TQDZPVnwjrqcItCkFnyHV99E=; b=WChWiff6YqmKSgjO3scGAIzZ+33e1Hm3U3oUizoV0kjoLdHkU3kTL4lAqW1pGUcBWm 9e1akf/W3HJ4EvK/yRwvL1LzXe6vsasXfOlaDV5ORj/lpiam9M7oiVEB3KOeN0bjAtnt hNpfA1/Ubnwgt3RuNVcoO4qnvnN9jK3e2uaXK2ZJ5jU03ioG9WNCYOLg69g49nlvydcn ShxdzXvNkutON8PxcRmoJCo63hn4N4OJ6wZByfo2bke9wELLGKuNvYptsFpE3kKcHVSI oDrev/Ea6PqiLpKvAULlpWpyJzJa5ofsSb412H1aiMGL629+qj3FRl4kkbC2ZdrwmPbM ay+w== X-Gm-Message-State: AHPjjUjime4K1Z3gdLxp58udSHSh7i1/iwYYRJCqOwmvNkOvha23qKJP tYA6rsH1vd5sgw== X-Google-Smtp-Source: AOwi7QA38wLEnRMYEEbHOYeatQT2r+4hQgBExWwcnmfXFuMrioWm2azzGLb2keJKtHUZgFq9H/S6VQ== X-Received: by 10.46.23.220 with SMTP id 89mr7089557ljx.162.1505677227003; Sun, 17 Sep 2017 12:40:27 -0700 (PDT) Received: from erik-arch-i5-6600.lan (90-227-62-61-no75.tbcn.telia.com. [90.227.62.61]) by smtp.gmail.com with ESMTPSA id 1sm1452879ljo.13.2017.09.17.12.40.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 17 Sep 2017 12:40:26 -0700 (PDT) From: Erik Stromdahl To: kvalo@qca.qualcomm.com, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Subject: [RFC v3 04/11] ath10k: add start_once support Date: Sun, 17 Sep 2017 21:40:06 +0200 Message-Id: <20170917194013.8658-5-erik.stromdahl@gmail.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170917194013.8658-1-erik.stromdahl@gmail.com> References: <20170917194013.8658-1-erik.stromdahl@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170917_124047_132776_ACCC0577 X-CRM114-Status: GOOD ( 15.41 ) X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Erik Stromdahl MIME-Version: 1.0 Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Add possibility to configure the driver to only start target once. This can reduce startup time of SDIO devices significantly since loading the firmware can take a substantial amount of time. The patch is also necessary for high latency devices in general since it does not seem to be possible to rerun the BMI phase (fw upload) without power-cycling the device. Signed-off-by: Erik Stromdahl --- drivers/net/wireless/ath/ath10k/core.c | 19 +++++++++++++++---- drivers/net/wireless/ath/ath10k/core.h | 2 ++ drivers/net/wireless/ath/ath10k/hw.h | 6 ++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index a4a326c89e0d..c21227a74996 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -1999,6 +1999,9 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode, int status; u32 val; + if (ar->is_started && ar->hw_params.start_once) + return 0; + lockdep_assert_held(&ar->conf_mutex); clear_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags); @@ -2226,6 +2229,7 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode, if (status) goto err_hif_stop; + ar->is_started = true; return 0; err_hif_stop: @@ -2278,6 +2282,7 @@ void ath10k_core_stop(struct ath10k *ar) ath10k_htt_tx_stop(&ar->htt); ath10k_htt_rx_free(&ar->htt); ath10k_wmi_detach(ar); + ar->is_started = false; } EXPORT_SYMBOL(ath10k_core_stop); @@ -2380,12 +2385,18 @@ static int ath10k_core_probe_fw(struct ath10k *ar) goto err_unlock; } - ath10k_debug_print_boot_info(ar); - ath10k_core_stop(ar); + /* Leave target running if hw_params.start_once is set */ + if (ar->hw_params.start_once) { + mutex_unlock(&ar->conf_mutex); + } else { + ath10k_debug_print_boot_info(ar); + ath10k_core_stop(ar); - mutex_unlock(&ar->conf_mutex); + mutex_unlock(&ar->conf_mutex); + + ath10k_hif_power_down(ar); + } - ath10k_hif_power_down(ar); return 0; err_unlock: diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 64dadcd6e531..0b5b1dd00e16 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -784,6 +784,8 @@ struct ath10k { bool is_high_latency; + bool is_started; + struct { enum ath10k_bus bus; const struct ath10k_hif_ops *ops; diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h index 8cf7b963f3d4..fd0536077404 100644 --- a/drivers/net/wireless/ath/ath10k/hw.h +++ b/drivers/net/wireless/ath/ath10k/hw.h @@ -569,6 +569,12 @@ struct ath10k_hw_params { bool is_high_latency; enum ath10k_bus bus; + + /* Specifies whether or not the device should be started once. + * If set, the device will be started once by the early fw probe + * and it will not be terminated afterwards. + */ + bool start_once; }; struct htt_rx_desc;