From patchwork Tue Jul 9 23:19:20 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 2825482 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id A925EC0AB2 for ; Tue, 9 Jul 2013 23:21:46 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id CF4DF20113 for ; Tue, 9 Jul 2013 23:21:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F31A520121 for ; Tue, 9 Jul 2013 23:21:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753971Ab3GIXV2 (ORCPT ); Tue, 9 Jul 2013 19:21:28 -0400 Received: from mail-qc0-f201.google.com ([209.85.216.201]:38030 "EHLO mail-qc0-f201.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753545Ab3GIXT3 (ORCPT ); Tue, 9 Jul 2013 19:19:29 -0400 Received: by mail-qc0-f201.google.com with SMTP id u11so556809qcx.2 for ; Tue, 09 Jul 2013 16:19:29 -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=Kst1LGoBBV0ZZFrXHzpcpgxtMuXwj0jZ3Ee3DLGQnSQ=; b=JrUxV/NBoy9E1IjAF2Cj1aDsGzOVaDupxceQnt5Q8P33aOwRkvTnbrM+E1WWai7d3Q SuccP7tq5FKdvZ7mfOnYQi1L7snN4BZqFQ9jtj6j/iQDxM1G76G0Ojcr9VyuMJFu7aT9 S/b3wkOUiacET6WqjZEqdvaHfrG8zor3pXcov+FgzYaVq9/sFjroOTqb5j9ctZdU0b8b 9KsCMXotUH7JhsgXwCaaTgGQLQVXnvphIUdrOdByISkH6+KyBM8/mg17fblvqEBQWxER rfbHrsW+2eJzwWkVcXTADNUN708A1vY0lszYGVTG/9td7O29ywRV+J5cwfa1toYJcM97 EAlQ== X-Received: by 10.236.148.101 with SMTP id u65mr15333063yhj.47.1373411969091; Tue, 09 Jul 2013 16:19: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 x33si422869yhj.0.2013.07.09.16.19.29 for (version=TLSv1.1 cipher=AES128-SHA bits=128/128); Tue, 09 Jul 2013 16:19: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 E400A5A41DB; Tue, 9 Jul 2013 16:19:28 -0700 (PDT) Received: by tictac.mtv.corp.google.com (Postfix, from userid 121310) id 95E9880977; Tue, 9 Jul 2013 16:19:28 -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 v2 4/5] mmc: dw_mmc: Always setup the bus after suspend/resume Date: Tue, 9 Jul 2013 16:19:20 -0700 Message-Id: <1373411961-23812-5-git-send-email-dianders@chromium.org> X-Mailer: git-send-email 1.8.3 In-Reply-To: <1373411961-23812-1-git-send-email-dianders@chromium.org> References: <1373391071-6312-1-git-send-email-dianders@chromium.org> <1373411961-23812-1-git-send-email-dianders@chromium.org> X-Gm-Message-State: ALoCoQmZJCiPIcZazFh9zzlEWrRU7AqvTe3GaS7ZZjr71VsZTt2ngaeJxQIox0+K3K/0B388p+H18rpPnJviogSr843vc/PG04JNwuArH+cWDJYG+qFbj+em3WCqY9iY4H1hw20N3YkKbB7b3irnVzmgd9Y2E3T5MHVsLvqnxBMVXZ8gnxZkJ7k7Mxbr7LwBy+kNf/IA6KpHaXlwIGLaJebqD/RpH3gN7w== 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 --- 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 7a5ce6a..be095b7 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -2499,9 +2499,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)