From patchwork Fri Jan 13 23:35:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Norris X-Patchwork-Id: 9516615 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 40B48601DA for ; Fri, 13 Jan 2017 23:36:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 32FAA28498 for ; Fri, 13 Jan 2017 23:36:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 26E27285F4; Fri, 13 Jan 2017 23:36:18 +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=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D644C28498 for ; Fri, 13 Jan 2017 23:36:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751563AbdAMXfw (ORCPT ); Fri, 13 Jan 2017 18:35:52 -0500 Received: from mail-pf0-f172.google.com ([209.85.192.172]:32878 "EHLO mail-pf0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751513AbdAMXfu (ORCPT ); Fri, 13 Jan 2017 18:35:50 -0500 Received: by mail-pf0-f172.google.com with SMTP id y143so38055962pfb.0 for ; Fri, 13 Jan 2017 15:35:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id; bh=JIW0JQzYp5WjyU5fn/VThw53JoeqoViDtvs7e6vFhN0=; b=UPdconUOPl7cPRvoSmH28fKItjEV3zLJx1KMisYiQkEEMmeHF/T8TXzBIXkjuE9kGC ZWfIgyYjxjttTBcYpfufBSWZ1k/ZhdfKWHfCMH1NtW5s0iqhXo5s/+/82ERx/ibIud7k U/ZC8xYvwVMO1UYaCx+H+uCT1QpxchzofRdJQ= 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; bh=JIW0JQzYp5WjyU5fn/VThw53JoeqoViDtvs7e6vFhN0=; b=uoMoTfNVGYZZlE9CZMnZufrnQn3FEX2ItLxw8DxnfXChXhAGnOzu1I7y/WBfn3z6no ziqFoaWJY8WcuG4PnZHFO2qu3Gxm5EVSRMZWeaZuaP9Skx+lnWChF+rJH9p45Jwc8o8i 9zGLKSpMZsPdMOwYV/iO5UTkKiMy8qNFXS323KFD3d4jqPap2YkoeMl/cdyDp9nRarvu 5mA6VgVxvQVEz5OW2SYuRmczLOODW2TT1osldn5kPCYgEVX+l+lPLJ6VDof6j40WjXJM pMFmp6OrucT5IGQRdaCy2oUOmHqvCcrRPZY9/bCgVQhnJUVdEqJGQ33/j0W/OBuaGfOY Ea1Q== X-Gm-Message-State: AIkVDXJJBZqAkfM9cDJmI4S5t937QU6zZhjMNUE3SwMUAiuuRJthtwhRM0OjKukWEyI/Cp2F X-Received: by 10.98.149.218 with SMTP id c87mr17231522pfk.88.1484350549975; Fri, 13 Jan 2017 15:35:49 -0800 (PST) Received: from ban.mtv.corp.google.com ([172.22.64.120]) by smtp.gmail.com with ESMTPSA id r21sm31515999pfd.95.2017.01.13.15.35.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 13 Jan 2017 15:35:49 -0800 (PST) From: Brian Norris To: Amitkumar Karwar , Nishant Sarmukadam Cc: , Kalle Valo , linux-wireless@vger.kernel.org, Cathy Luo , Dmitry Torokhov , Brian Norris Subject: [PATCH v2 1/3] mwifiex: pcie: use posted write to wake up firmware Date: Fri, 13 Jan 2017 15:35:36 -0800 Message-Id: <20170113233538.36196-1-briannorris@chromium.org> X-Mailer: git-send-email 2.11.0.483.g087da7b7c-goog Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Depending on system factors (e.g., the PCIe link PM state), the first read to wake up the Wifi firmware can take a long time. There is no reason to use a (blocking, non-posted) read at this point, so let's just use a write instead. Write vs. read doesn't matter functionality-wise -- it's just a dummy operation. But let's make sure to re-write with the correct "ready" signature, since we check for that in other parts of the driver. This has been shown to decrease the time spent blocking in this function on RK3399. Signed-off-by: Brian Norris --- v2: * write FIRMWARE_READY_PCIE instead of 0 --- drivers/net/wireless/marvell/mwifiex/pcie.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 66226c615be0..3f4cda2d3b61 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -458,7 +458,6 @@ static void mwifiex_delay_for_sleep_cookie(struct mwifiex_adapter *adapter, /* This function wakes up the card by reading fw_status register. */ static int mwifiex_pm_wakeup_card(struct mwifiex_adapter *adapter) { - u32 fw_status; struct pcie_service_card *card = adapter->card; const struct mwifiex_pcie_card_reg *reg = card->pcie.reg; @@ -468,10 +467,10 @@ static int mwifiex_pm_wakeup_card(struct mwifiex_adapter *adapter) if (reg->sleep_cookie) mwifiex_pcie_dev_wakeup_delay(adapter); - /* Reading fw_status register will wakeup device */ - if (mwifiex_read_reg(adapter, reg->fw_status, &fw_status)) { + /* Accessing fw_status register will wakeup device */ + if (mwifiex_write_reg(adapter, reg->fw_status, FIRMWARE_READY_PCIE)) { mwifiex_dbg(adapter, ERROR, - "Reading fw_status register failed\n"); + "Writing fw_status register failed\n"); return -1; }