From patchwork Fri Aug 9 16:33:19 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 2842023 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 1C4959F271 for ; Fri, 9 Aug 2013 16:40:23 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C70AC203A8 for ; Fri, 9 Aug 2013 16:40:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EC31D20345 for ; Fri, 9 Aug 2013 16:40:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S968112Ab3HIQkT (ORCPT ); Fri, 9 Aug 2013 12:40:19 -0400 Received: from mail-qe0-f73.google.com ([209.85.128.73]:59060 "EHLO mail-qe0-f73.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S968090Ab3HIQkS (ORCPT ); Fri, 9 Aug 2013 12:40:18 -0400 Received: by mail-qe0-f73.google.com with SMTP id 1so466968qee.0 for ; Fri, 09 Aug 2013 09:40:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=b/Rpdpg/vpbdwoUdy4PtKaV2UGBgZorsAf+Gr6QYqDc=; b=lRy4VPbLsJ6TQqTeCbJil6w53Ssu7f6tTIcbd09w1mTmlCu4JLHPC3u+lT9gPRrUNo C4/sRrC4DN83IcfMYqeVEcJ3ak2FXmT9EocQaaLO5TJh49aivfm/CeXbL6uI2mbZGr6h Tto1QBCKe8cbv4gM2EltUym++Y4DKUyogOjPM8MPbO8tHOQOzXTQQs61PTZ13dJ6oRZA +KnRKMyWzi0xtTscXWmsBGK6PCo6GIE4SjMafh81XrekfBAHScS0Pkmoiz7m5p6Vy+lb xXMJBm6UBWmdoTNXU8YzqMY/pQunsYTfiVEz03tJ12/yfIf9oS7EJeE3SIiyrtKQrDVC ydow== X-Gm-Message-State: ALoCoQnBDAoEmeURM+rDjbp6OcilqgO1Vccli6Kb6NUikpPM9rMho7RmQPZUz3xO1Xz6B6T86AAjLp9YsZY2fNJWF+1mlv05aaq0+btKCKKIpCBtAf1jh76S/kLOjfTdyW9Vcq1VR5BEBMxHu2FOCV/Egh9yb28dv9JJ2I/9aPgwP/3pYuXste680VR5zNs4Up5oPecV3ANCsd5eFyRwyZUlubdc2QD1eQ== X-Received: by 10.236.117.11 with SMTP id i11mr5488720yhh.16.1376066009629; Fri, 09 Aug 2013 09:33:29 -0700 (PDT) Received: from corp2gmr1-2.hot.corp.google.com (corp2gmr1-2.hot.corp.google.com [172.24.189.93]) by gmr-mx.google.com with ESMTPS id e64si1178679yhj.1.2013.08.09.09.33.29 for (version=TLSv1.1 cipher=AES128-SHA bits=128/128); Fri, 09 Aug 2013 09:33:29 -0700 (PDT) Received: from tictac.mtv.corp.google.com (tictac.mtv.corp.google.com [172.22.162.34]) by corp2gmr1-2.hot.corp.google.com (Postfix) with ESMTP id 753215A424B; Fri, 9 Aug 2013 09:33:29 -0700 (PDT) Received: by tictac.mtv.corp.google.com (Postfix, from userid 121310) id 2A6F880BFB; Fri, 9 Aug 2013 09:33:29 -0700 (PDT) From: Doug Anderson To: Chris Ball Cc: Jaehoon Chung , Seungwon Jeon , James Hogan , Grant Grundler , Alim Akhtar , Abhilash Kesavan , Tomasz Figa , Olof Johansson , Doug Anderson , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 3/4] mmc: dw_mmc: Always setup the bus after suspend/resume Date: Fri, 9 Aug 2013 09:33:19 -0700 Message-Id: <1376066000-5495-4-git-send-email-dianders@chromium.org> X-Mailer: git-send-email 1.8.3 In-Reply-To: <1376066000-5495-1-git-send-email-dianders@chromium.org> References: <1375825071-20922-1-git-send-email-dianders@chromium.org> <1376066000-5495-1-git-send-email-dianders@chromium.org> Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00,KHOP_BIG_TO_CC, 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 Reviewed-by: Tomasz Figa --- Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None 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 e614b03..3d1ee2d 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -2522,9 +2522,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)