Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2378782imm; Thu, 7 Jun 2018 09:37:42 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJKMZGeQ5k+RWcYaT8BP7PUb/QcyIPFoDaofB9sMvTUpPzkbtv0iMzv9DgewDDnN4rACEqO X-Received: by 2002:a17:902:1ab:: with SMTP id b40-v6mr2763268plb.348.1528389462356; Thu, 07 Jun 2018 09:37:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528389462; cv=none; d=google.com; s=arc-20160816; b=ihT83c9g7QUlAVnCywwfilr+tXaof7l8A9oMxHGObjeer9dH/2eoa2UP14GU8sIdrC l96hhXpukNVb7RjvTgxGbl606puVC3pvx0GjtraygZdE7poqQRs7Win/rx6KTmFhQkmv Htt9U+qsPM6CLfdPueGN5leVvTjtd2/EF3kBs8lVt6Ayfobz/ETJFSQtZUK2XQX8M2Hy Vk5F41yYAlKPXeIa1yLC638v86rTXpDJ6d/gWOw9P/MGZV3ZUB2lq5PHc8rA3ysUvjHx ciDz1ifIOqR7PjNEUGup0hTHvsnytr9aB199sYYwjGJN83XdZMSV+Y+SNJioI3wnoxl5 0EpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition :arc-authentication-results; bh=fBt1F+3URntmM6IIxHmzewP1WguQDC6yM9WLhzAGpMk=; b=LQDoQMHz6rcG4ip6jHtbH+Nosh97BkyKiUCmRMbX8jASqp0XP7V33miroYy4UZTaZr VFULkcdzasI9FaQJwhZYQclLzgBB/FWHnoHwZb08l6TH8YITXh2WcaE/UGf4QaLNSOu1 az926M5GEbwzxawIsbjWIR7KvMY+29bQe6sHlLxlt5E/pu1HSy7YeqjsQ6Voj9/ynfVz fEfDYlGraGDf6SWzti3WFFuL8B4XuM8/kEKvHYR4vK937THoE3qeEn3keehOoawwoz9H aYVPcNWGGp++82O8pgMbTsN2Q6SuYToyAmPd1fTanyDmSoG3NWbN7sr252ls0SgaJsTX pIig== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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 k22-v6si13544124pli.331.2018.06.07.09.37.27; Thu, 07 Jun 2018 09:37:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933414AbeFGOTU (ORCPT + 99 others); Thu, 7 Jun 2018 10:19:20 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:39525 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933092AbeFGOJN (ORCPT ); Thu, 7 Jun 2018 10:09:13 -0400 Received: from [148.252.241.226] (helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1fQvbD-0005dI-O1; Thu, 07 Jun 2018 15:09:11 +0100 Received: from ben by deadeye with local (Exim 4.91) (envelope-from ) id 1fQvbA-00039l-EI; Thu, 07 Jun 2018 15:09:08 +0100 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, "Ulf Hansson" , "Adrian Hunter" Date: Thu, 07 Jun 2018 15:05:21 +0100 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) Subject: [PATCH 3.16 301/410] mmc: sdhci-pci: Fix S0i3 for Intel BYT-based controllers In-Reply-To: X-SA-Exim-Connect-IP: 148.252.241.226 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.57-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Adrian Hunter commit f8870ae6e2d6be75b1accc2db981169fdfbea7ab upstream. Tuning can leave the IP in an active state (Buffer Read Enable bit set) which prevents the entry to low power states (i.e. S0i3). Data reset will clear it. Generally tuning is followed by a data transfer which will anyway sort out the state, so it is rare that S0i3 is actually prevented. Signed-off-by: Adrian Hunter Signed-off-by: Ulf Hansson [bwh: Backported to 3.16: - Drop chnages in ni_byt_sdio_probe_slot(), byt_sd_probe_slot() - Adjust filename, context] Signed-off-by: Ben Hutchings --- drivers/mmc/host/sdhci-pci.c | 35 +++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) --- a/drivers/mmc/host/sdhci-pci.c +++ b/drivers/mmc/host/sdhci-pci.c @@ -265,8 +265,34 @@ static void sdhci_pci_int_hw_reset(struc usleep_range(300, 1000); } +static int intel_execute_tuning(struct mmc_host *mmc, u32 opcode) +{ + int err = sdhci_execute_tuning(mmc, opcode); + struct sdhci_host *host = mmc_priv(mmc); + + if (err) + return err; + + /* + * Tuning can leave the IP in an active state (Buffer Read Enable bit + * set) which prevents the entry to low power states (i.e. S0i3). Data + * reset will clear it. + */ + sdhci_reset(host, SDHCI_RESET_DATA); + + return 0; +} + +static void byt_probe_slot(struct sdhci_pci_slot *slot) +{ + struct mmc_host_ops *ops = &slot->host->mmc_host_ops; + + ops->execute_tuning = intel_execute_tuning; +} + static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot) { + byt_probe_slot(slot); slot->host->mmc->caps |= MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE | MMC_CAP_HW_RESET; slot->host->mmc->caps2 |= MMC_CAP2_HC_ERASE_SZ; @@ -278,6 +304,7 @@ static int byt_emmc_probe_slot(struct sd static int byt_sdio_probe_slot(struct sdhci_pci_slot *slot) { + byt_probe_slot(slot); slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE; return 0; }