From patchwork Tue Jun 25 11:39:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 1122004 X-Patchwork-Delegate: van.freenix@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="YNpiWy9p"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45Y44N5QQ5z9s8m for ; Tue, 25 Jun 2019 21:41:24 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 7CF09C21CB6; Tue, 25 Jun 2019 11:40:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 2A5C5C21DA6; Tue, 25 Jun 2019 11:39:53 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id CA0DEC21DF3; Tue, 25 Jun 2019 11:39:23 +0000 (UTC) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by lists.denx.de (Postfix) with ESMTPS id 4EDAFC21DED for ; Tue, 25 Jun 2019 11:39:20 +0000 (UTC) Received: by mail-wr1-f66.google.com with SMTP id n4so16277182wrs.3 for ; Tue, 25 Jun 2019 04:39:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=KtZKhW67ups92FFyfdcDEUmpk+v2CHvAU2/5/EXk6o4=; b=YNpiWy9pcx84hGUvT3W6gP5U7LekGxcuuZZjwqBq2fkqOYSj6kNgd+Lc/bm9uy0OH8 qEgt5XI8ZZ5Cp8UFKXAdcyW0poUF0MdnDvmrw82wZIvXDmdKSLX12d3G5ItWQ8S7Kvxu OMSmYFNhQB9jmsQBKRIa/bDKPRuTpBtvxm6E7Gxjv+t1ICbCeq5vg5Y3rei7g6EqG2Ix R4yb6D48sOePKR3xnNFQatGbq3F7tm3V+edtVano8U9CPlu8nqrhd/7mAC7ZCapaUU3P oPHjAtHEa6cB/fkK5ohbKyfG86kgiIf5DWTMzQgnDRx0hB7Zt67VizXtdRN8P43n58dj 3bCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=KtZKhW67ups92FFyfdcDEUmpk+v2CHvAU2/5/EXk6o4=; b=CV5Fnop9YWkuGvPhjGraM7vwItIWSNJq4RXIUqkPTX0NT7ns4BpoxY1nxXZGmpoaLa W7fXYcrtrKwsScAMjwRwSTN/75R+k6LaJYIgncJE/lXWY/H6TCNZwIpWgXFrrAVoDh1c s0F/dHvvQdrSHG3Mkdbd0YneABvruXHQrUn+SqRsbz4xZQBr4WitJAHJ6+iBSVHT90Fu cN+oEZpgPRak57Mr7vVeO7NdTKI9uOQwHKCcpok5xI9bOeGyVWTT1w5FGN9chRirfV5q zPUdcdD9CmWJhRS91IbKZsJvYtKo4cDTsNhN2lWFnxoiqjWcxbfIRuk1CWwgbHXapOpv sclQ== X-Gm-Message-State: APjAAAX3CWQa7xVJlUyqz3KK6U3dpPf+8TCmk0IqQbt0MxL2m68IX1FB RQaYFMdPKPEAI7AWlC9odM+tbRPr0Rby8g== X-Google-Smtp-Source: APXvYqwK3M6Fk6nZs0VT2vWiOXMHo4TrQzbo8cAaXrI+rwdHbwe0J9EDj9LbN1hAwgHq4KiY20o2Zw== X-Received: by 2002:a5d:66ce:: with SMTP id k14mr48768544wrw.308.1561462759739; Tue, 25 Jun 2019 04:39:19 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id t12sm14890256wrw.53.2019.06.25.04.39.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 25 Jun 2019 04:39:19 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, faiz_abbas@ti.com, peng.fan@nxp.com Date: Tue, 25 Jun 2019 13:39:04 +0200 Message-Id: <476dbfb8926b7a7dd77bc4c9afe89a58e6869959.1561462741.git.michal.simek@xilinx.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Cc: T Karthik Reddy Subject: [U-Boot] [PATCH v3 4/4] mmc: sdhci: Implement SDHCI card detect X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: T Karthik Reddy Card detect function implemented for SDHCI framework. Signed-off-by: T Karthik Reddy Signed-off-by: Michal Simek --- Changes in v3: - Use new MMC_SD.. macros Changes in v2: - Used CARD_PRESENT instead of SDHCI_CARD_DETECT_PIN_LEVEL for reading sd card presence detection. drivers/mmc/sdhci.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index 4ffe74e35e08..c4e88790bc68 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c @@ -12,6 +12,7 @@ #include #include #include +#include #if defined(CONFIG_FIXED_SDHCI_ALIGNED_BUFFER) void *aligned_buffer = (void *)CONFIG_FIXED_SDHCI_ALIGNED_BUFFER; @@ -630,9 +631,40 @@ int sdhci_probe(struct udevice *dev) return sdhci_init(mmc); } +int sdhci_get_cd(struct udevice *dev) +{ + struct mmc *mmc = mmc_get_mmc_dev(dev); + struct sdhci_host *host = mmc->priv; + int value; + + /* If nonremovable, assume that the card is always present. */ + if (mmc->cfg->host_caps & MMC_CAP_NONREMOVABLE) + return 1; + /* If polling, assume that the card is always present. */ + if (mmc->cfg->host_caps & MMC_CAP_NEEDS_POLL) + return 1; + +#if CONFIG_IS_ENABLED(DM_GPIO) + value = dm_gpio_get_value(&host->cd_gpio); + if (value >= 0) { + if (mmc->cfg->host_caps & MMC_CAP_CD_ACTIVE_HIGH) + return !value; + else + return value; + } +#endif + value = !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & + SDHCI_CARD_PRESENT); + if (mmc->cfg->host_caps & MMC_CAP_CD_ACTIVE_HIGH) + return !value; + else + return value; +} + const struct dm_mmc_ops sdhci_ops = { .send_cmd = sdhci_send_command, .set_ios = sdhci_set_ios, + .get_cd = sdhci_get_cd, #ifdef MMC_SUPPORTS_TUNING .execute_tuning = sdhci_execute_tuning, #endif