From patchwork Sun May 21 19:59: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: 9739265 X-Patchwork-Delegate: kvalo@adurom.com 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 D936660326 for ; Sun, 21 May 2017 20:02:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C8B5228598 for ; Sun, 21 May 2017 20:02:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BD681285A3; Sun, 21 May 2017 20:02:01 +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=-1.9 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM autolearn=ham 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 2FFB728598 for ; Sun, 21 May 2017 20:01:59 +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=JTHaMpQurbG6ffavCZiW8mBc4K8m6I4Tg69FyA1Fy78=; b=YknpWF0anFvpFHCYHny74iB4lg 8pGN57XhCfcEosMTajFYMiJ88t2rPqIdKxrU0e1/NNWGoKnUZtTXqoeXDV4bd75NFjXI7dx3LUud7 n90sdtjyQYYzOtw1T4qy0XCamAjAGn4OR4vxEpyxsXO6SsEhP8qSMruWuWp0pZeVWCUsiL+ZVtbYb 36bQI/tXKqvpYOpSm1G8XkmK13V20vN1JmFan4jl0a6hSSwjZOJhYfbBOPvQh4O/JwNQWtiKvItQU vdvG32SpK1Z2CrwpvDQz3wwsm5CS3dLydAJjVZvKLa5t/T/2/7qwQCQuRaPDB/wKWyV2jblIsmkmD y8ZCln9w==; 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 1dCX2z-0002CF-VS; Sun, 21 May 2017 20:01:49 +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 1dCX2r-00022f-8H for ath10k@lists.infradead.org; Sun, 21 May 2017 20:01:45 +0000 Received: by mail-lf0-x242.google.com with SMTP id 99so3690729lfu.2 for ; Sun, 21 May 2017 13:01:24 -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=OiZSghNhQenAL3nVufiHVGR08gcpub0P/b+T6u8avgo=; b=MCcSBdVwV3WGwn+z+PmH6l3kGxpY9WIMGwTAMepHzXxC5tx9/QP7Keqx02OF6NFUDe nxA/1xttpSN32Ea5SM2jTZa7fYtIK8EUTBsgr9TKtNDMMjOQMJuod7KtMaee8672lbzH goKBNne3O09pdTKK6urZZghlsxmDCh7q9UJPyebdgIts3GGulG2lX81CUI63kSLDLcZW 1cfsR/8nWrbiD0lO4ReC48RnWhkFGv1xmfpAJAM/nu6MwLnzNGCQsKOAIiOEwK9EAUty PQq+g+BRN3jzLmcv7vP3uzVAQOJy784wleB9ZwdzQCqQOmtIANRy+S6r0OA4aQ/NxPnZ Vp7Q== 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=OiZSghNhQenAL3nVufiHVGR08gcpub0P/b+T6u8avgo=; b=LQli9rUwMtUXM7SImrGfbbmQP+woFODmF5WtzusM6+2WYvcj5Nzrbw9Bkj87bVJXBX bz3b9bBRu/eOWb9q58Zljqocf6F4k4VvD7LWKV444mZpFoKN8RxunKvfUwBnO+dL6iCZ XsSxBQF8pz3dRUXNC7n69Jk6A0vEU8JW9iLiSBBIs/hJkTlCsCRSr5CZPHpYq+hsdZVv IMKiouwNI5ztqZy9CUE/OZ0/tY+6IJ+toLXYTfnMGQpVoKyowV/KWpDRJJWSoCB4cR9G FNxWPbyUf4QjdFUb6LHHwvruhpF1XDBuJDmKH8TVmM1x+2BT7Bx1vNB7D7Gm1ApPiL4X rpEg== X-Gm-Message-State: AODbwcD681YFfg5qUOf5FU/KdpJlwTj4GWX7ZGbGbdU2LY2mBWHkBI4d w7OEMj/cg6yvw6GxghU= X-Received: by 10.25.213.66 with SMTP id m63mr4816170lfg.50.1495396882602; Sun, 21 May 2017 13:01:22 -0700 (PDT) Received: from erik-mate-1604.lan (90-227-62-61-no75.tbcn.telia.com. [90.227.62.61]) by smtp.gmail.com with ESMTPSA id 17sm1821544ljo.56.2017.05.21.13.01.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 21 May 2017 13:01:22 -0700 (PDT) From: Erik Stromdahl To: kvalo@qca.qualcomm.com, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Subject: [RFC 4/9] ath10k: add start_once support Date: Sun, 21 May 2017 21:59:06 +0200 Message-Id: <1495396751-4805-5-git-send-email-erik.stromdahl@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495396751-4805-1-git-send-email-erik.stromdahl@gmail.com> References: <1495396751-4805-1-git-send-email-erik.stromdahl@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170521_130141_811583_3DD074F8 X-CRM114-Status: GOOD ( 15.68 ) 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 0c46004..54bf396 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -1956,6 +1956,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); @@ -2175,6 +2178,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: @@ -2227,6 +2231,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); @@ -2329,12 +2334,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 cdac923..0e75441 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 160377aa..f733e73 100644 --- a/drivers/net/wireless/ath/ath10k/hw.h +++ b/drivers/net/wireless/ath/ath10k/hw.h @@ -473,6 +473,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;