From patchwork Tue Jul 9 17:31:10 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 2825402 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 355CE9F9EC for ; Tue, 9 Jul 2013 17:32:19 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2B5FE201F7 for ; Tue, 9 Jul 2013 17:32:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4A9F1201F5 for ; Tue, 9 Jul 2013 17:32:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752970Ab3GIRcQ (ORCPT ); Tue, 9 Jul 2013 13:32:16 -0400 Received: from mail-qe0-f74.google.com ([209.85.128.74]:43116 "EHLO mail-qe0-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752609Ab3GIRbp (ORCPT ); Tue, 9 Jul 2013 13:31:45 -0400 Received: by mail-qe0-f74.google.com with SMTP id a11so510446qen.5 for ; Tue, 09 Jul 2013 10:31:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=5RPKRn6HkZW917Sily7kR/40bfOAbih+8SflPENb884=; b=MwTAt92mkhQlXmCEQPLzJsrzd0n19DYqsVzO1LXaQjIvaJgzBkuRIPwh1ph5kv1wPB N+Q+X8I0kdz7s8dgvKtUloJPW09TCMN1O+yguQZmku2+NZnj9i+VlA5HH6vfGL/qWivM GV9z4FSOcy+1qqk5c4RYpKhuEppT3IRINpSlwUOHubZj1I4SM3ZYtsvj8Xnbj8HoQRPY 12kd1c8+alqxc8j8GTI+1fRIfxkqTxoCG58XCC2WIkt1G665ci4xJlMg405Kt2iPPDXt gS5tyt01OFv3qkbolEaNdXFCpcWzf6NHYY/ksnYffJ469dxRPg91NHvepxFah4Ws5rP0 7VTQ== X-Received: by 10.236.201.19 with SMTP id a19mr14327507yho.24.1373391104430; Tue, 09 Jul 2013 10:31:44 -0700 (PDT) Received: from corp2gmr1-1.hot.corp.google.com (corp2gmr1-1.hot.corp.google.com [172.24.189.92]) by gmr-mx.google.com with ESMTPS id f68si13933990yhd.4.2013.07.09.10.31.44 for (version=TLSv1.1 cipher=AES128-SHA bits=128/128); Tue, 09 Jul 2013 10:31:44 -0700 (PDT) Received: from tictac.mtv.corp.google.com (tictac.mtv.corp.google.com [172.22.162.34]) by corp2gmr1-1.hot.corp.google.com (Postfix) with ESMTP id 40B5131C1BF; Tue, 9 Jul 2013 10:31:44 -0700 (PDT) Received: by tictac.mtv.corp.google.com (Postfix, from userid 121310) id 011BD80867; Tue, 9 Jul 2013 10:31:43 -0700 (PDT) From: Doug Anderson To: Chris Ball Cc: Olof Johansson , Jaehoon Chung , Seungwon Jeon , James Hogan , Grant Grundler , Alim Akhtar , Abhilash Kesavan , Tomasz Figa , Doug Anderson , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Date: Tue, 9 Jul 2013 10:31:10 -0700 Message-Id: <1373391071-6312-5-git-send-email-dianders@chromium.org> X-Mailer: git-send-email 1.8.3 In-Reply-To: <1373391071-6312-1-git-send-email-dianders@chromium.org> References: <1373391071-6312-1-git-send-email-dianders@chromium.org> X-Gm-Message-State: ALoCoQm/NLoiJEH8/DRwIOw0p2yFWLCor8aDWY14H4mYvXQkRBYBoGiC3GXnjFAMi52MgRdPIsNUvkBPFMKRdp8prAMFdk5U0kpP+R0tl7a413OVZ8N6TWaCmSKcsHJ/fErKk8JeUmk7YRuaV0wRJQkkyoLOiTMkr3/Vv/MXv5Qc42oRMboW3gsEsH4E3Xv9iv/PLpLEhj7mQp4sxxbEJJIxDiQfinNohg== Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP After suspend/resume all of the dw_mmc registers are reset to defaults. We restore most of them, but specifically don't setup the clock registers after resume unless we've got a powered card. Things still work because the core will eventually call set_ios() and we'll set things up. There doesn't seem to be any reason that I can see _not_ to set things up after resume. Restoring this state makes the code easier to reason about and should help prevent bugs. It also allows us to do a register dump before and after suspend/resume to confirm that we've set things up OK. I examined the state of the dw_mmc instance before and after suspend after this patch. I had no card inserted in an SD card slot. Before this patch, differences were: * CLKDIV (0x08) * CLKENA (0x10) * TMOUT (0x14) * CMD (0x2C) - difference is not important * CLKSEL (0x9C - exynos specific) After this patch, only TMOUT was different. I have a separate patch for that. Signed-off-by: Doug Anderson --- drivers/mmc/host/dw_mmc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 2aaa93f..a0a07df 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -2510,9 +2510,7 @@ int dw_mci_resume(struct dw_mci *host) struct dw_mci_slot *slot = host->slot[i]; if (!slot) continue; - if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) { - dw_mci_set_ios(slot->mmc, &slot->mmc->ios); - } + dw_mci_set_ios(slot->mmc, &slot->mmc->ios); ret = mmc_resume_host(host->slot[i]->mmc); if (ret < 0)