From patchwork Mon Jul 6 12:16:19 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ivan T. Ivanov" X-Patchwork-Id: 6722711 X-Patchwork-Delegate: agross@codeaurora.org Return-Path: X-Original-To: patchwork-linux-arm-msm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id BAA4E9F380 for ; Mon, 6 Jul 2015 12:17:42 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E614220615 for ; Mon, 6 Jul 2015 12:17:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 01D742060A for ; Mon, 6 Jul 2015 12:17:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755289AbbGFMRh (ORCPT ); Mon, 6 Jul 2015 08:17:37 -0400 Received: from mail-wi0-f182.google.com ([209.85.212.182]:36364 "EHLO mail-wi0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754545AbbGFMQd (ORCPT ); Mon, 6 Jul 2015 08:16:33 -0400 Received: by widjy10 with SMTP id jy10so159116038wid.1 for ; Mon, 06 Jul 2015 05:16:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2GdfiyexJfZVCQyI5aNxrBEDyhah0gYiLHu3xFEd3KA=; b=ai5RotocHcgmLxCD1megOl9MzNVbMmIcweb5UM5Jc4+LqXAx5DWrFNWLdnhqIZbYR2 TLXUkK30EE2iuuoDwtMq+jYIYbW6wDZ2MbrZ3jz7E9vv/DyCmSYRswUf1gPlr5t1HqNj fwoHDa7pZC8lQqHbBOpBSQPCwhsEf6+JK3J3q9anIg7hgwAFRUb1n0YKHflthwDLj8Qg 4kOMNnsXjI+cYqYegrMi/NB8UJPkSUVtkZU2Myu6KlAzsjJzosWeQ07F97PvSLP1bUvo gDCI2BYfrMeBypf0giZFyQZYxILupIsFDAW35Ibo7gLVY1e9KkjL/8IoE8kcBa/kIGMe iPmQ== X-Gm-Message-State: ALoCoQlbI3NzPt11ypBVJ4Yv3lEtOxPC4JI2O9ANxwKY5PKZYUOORPPkjB8Lhl4NOXBvsJaAOWti X-Received: by 10.180.106.195 with SMTP id gw3mr53831256wib.25.1436184992458; Mon, 06 Jul 2015 05:16:32 -0700 (PDT) Received: from localhost.localdomain ([37.157.136.206]) by mx.google.com with ESMTPSA id ha4sm46918316wib.0.2015.07.06.05.16.31 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 06 Jul 2015 05:16:31 -0700 (PDT) From: "Ivan T. Ivanov" To: Ulf Hansson Cc: Adrian Hunter , Tim Kryger , Aisheng Dong , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: [PATCH v2 1/3] mmc: sdhci: let GPIO based card detection have higher precedence Date: Mon, 6 Jul 2015 15:16:19 +0300 Message-Id: <1436184981-16719-2-git-send-email-ivan.ivanov@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1436184981-16719-1-git-send-email-ivan.ivanov@linaro.org> References: <1436184981-16719-1-git-send-email-ivan.ivanov@linaro.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable 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 Controller could have BROKEN_CARD_DETECTION quirk set, but drivers could use GPIO to detect card present state. Let, when defined, GPIO take precedence, so drivers could properly detect card state and not use polling. Signed-off-by: Ivan T. Ivanov --- drivers/mmc/host/sdhci.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index bc14452..dd91b24 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1601,15 +1601,21 @@ static int sdhci_do_get_cd(struct sdhci_host *host) if (host->flags & SDHCI_DEVICE_DEAD) return 0; - /* If polling/nonremovable, assume that the card is always present. */ - if ((host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) || - (host->mmc->caps & MMC_CAP_NONREMOVABLE)) + /* If nonremovable, assume that the card is always present. */ + if (host->mmc->caps & MMC_CAP_NONREMOVABLE) return 1; - /* Try slot gpio detect */ + /* + * Try slot gpio detect, if defined it take precedence + * over build in controller functionality + */ if (!IS_ERR_VALUE(gpio_cd)) return !!gpio_cd; + /* If polling, assume that the card is always present. */ + if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) + return 1; + /* Host native card detect */ return !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT); }