Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1911088pxb; Thu, 16 Sep 2021 20:00:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzLhDRbC94ojEwiooGiMHmhW6a2WGahD2wpVfl1SzKkYrYkXztkeW2QMhbIL4o2X5jqrM9K X-Received: by 2002:a02:2b01:: with SMTP id h1mr6954504jaa.133.1631847651287; Thu, 16 Sep 2021 20:00:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631847651; cv=none; d=google.com; s=arc-20160816; b=Og+rMWz0az+8U8FBslI+RRxjvNqL9f/MT1F2mxB//38UtWNcJkbveZ3T1PQYPh3FO1 fnrCrxnQELdWZ/LpZmDPZselC2hwsxqgMCW/vjUnWhH1Ehx764D1fxh1jeg1RXfYlPj4 aZm4spUv4ClKz+EbywZlZ2gpcHoaNO/YYxUMbYIVsQ6xIcTtQ+4EdbEz/s6Vy2pz17dz MFNunOITxa2zWFEz7QHi0mVvZQWR6WRWv49jZaC2qhmQ+17lVzvgCXyujZZcoRLS7Rvp QxtitsJz39xL4AyRzkR/2r+yrK+XdzNDm5PWT63Zkw+iiaH8NwUoUxCtHNOjK+K5xLrU Xkhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=TR6wcj5r4fxtzrQtWg+4+0f2uBrDAb96+CyYrTaifyM=; b=aBXIU0Ch2Bk6YHg1Y0VPPJR8V+WSQuh9oSdPHc1lUH8MecimF/Hd7imDclN/dMFVmG QdnsGX7C+EeuRRTEihpnYeZvzfhK28w+nW51DXgtREyUETgBkLLHQAZ7V8Wv9qW6XTWe V0OSWMeBQKQZRNblu2HEMcV72M9CmliPZfDGUzZQjW43p2BjsrBZiprc4ISpRbh34RfW obZ3Gy1fR0sRd2FlUr2YeNjgppt6zLLXo6kdVQDLXpukkPTedmE62QUf1HxWfNUXTQJS Xj39UNAavJmt8XAZt2W8rSngU+8NefAKJSeGKhTSod4ffb/pXPRRUWpWGmSfNjyR8zS2 J3cQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=fMwkffZ6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z9si4702783ile.8.2021.09.16.20.00.40; Thu, 16 Sep 2021 20:00:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=fMwkffZ6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347602AbhIPR2d (ORCPT + 99 others); Thu, 16 Sep 2021 13:28:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:51076 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346950AbhIPQ42 (ORCPT ); Thu, 16 Sep 2021 12:56:28 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 4E22561ABB; Thu, 16 Sep 2021 16:30:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631809853; bh=Q5XMrTSI9DyeV30QZ8sULXpxduy3HPeYCnQmNk1zuRE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fMwkffZ6k16GlFRhev7lRe5XLonCOZPGh3HQnYJre7YJl5rNsFzJg1DBSzY2vhuAp QKicmeEm4JkvFaT+jno18ylfqGf46MFDiFCO9ZIy2Jrr5NSw0BBMwcr9mtHQP+G/Iz X6lyI2GXO+K2luG9/E4fParI9wdwukuHWXfjU5ao= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Manish Narani , Adrian Hunter , Ulf Hansson , Sasha Levin Subject: [PATCH 5.13 307/380] mmc: sdhci-of-arasan: Modified SD default speed to 19MHz for ZynqMP Date: Thu, 16 Sep 2021 18:01:04 +0200 Message-Id: <20210916155814.502029046@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155803.966362085@linuxfoundation.org> References: <20210916155803.966362085@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Manish Narani [ Upstream commit c0b4e411a9b09748466ee06d2ae6772effa64dfb ] SD standard speed timing was met only at 19MHz and not 25 MHz, that's why changing driver to 19MHz. The reason for this is when a level shifter is used on the board, timing was met for standard speed only at 19MHz. Since this level shifter is commonly required for high speed modes, the driver is modified to use standard speed of 19Mhz. Signed-off-by: Manish Narani Acked-by: Adrian Hunter Link: https://lore.kernel.org/r/1623753837-21035-2-git-send-email-manish.narani@xilinx.com Signed-off-by: Ulf Hansson Signed-off-by: Sasha Levin --- drivers/mmc/host/sdhci-of-arasan.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c index 839965f7c717..fc3e41c76ab4 100644 --- a/drivers/mmc/host/sdhci-of-arasan.c +++ b/drivers/mmc/host/sdhci-of-arasan.c @@ -159,6 +159,12 @@ struct sdhci_arasan_data { /* Controller immediately reports SDHCI_CLOCK_INT_STABLE after enabling the * internal clock even when the clock isn't stable */ #define SDHCI_ARASAN_QUIRK_CLOCK_UNSTABLE BIT(1) +/* + * Some of the Arasan variations might not have timing requirements + * met at 25MHz for Default Speed mode, those controllers work at + * 19MHz instead + */ +#define SDHCI_ARASAN_QUIRK_CLOCK_25_BROKEN BIT(2) }; struct sdhci_arasan_of_data { @@ -290,6 +296,16 @@ static void sdhci_arasan_set_clock(struct sdhci_host *host, unsigned int clock) sdhci_arasan->is_phy_on = false; } + if (sdhci_arasan->quirks & SDHCI_ARASAN_QUIRK_CLOCK_25_BROKEN) { + /* + * Some of the Arasan variations might not have timing + * requirements met at 25MHz for Default Speed mode, + * those controllers work at 19MHz instead. + */ + if (clock == DEFAULT_SPEED_MAX_DTR) + clock = (DEFAULT_SPEED_MAX_DTR * 19) / 25; + } + /* Set the Input and Output Clock Phase Delays */ if (clk_data->set_clk_delays) clk_data->set_clk_delays(host); @@ -1598,6 +1614,8 @@ static int sdhci_arasan_probe(struct platform_device *pdev) if (of_device_is_compatible(np, "xlnx,zynqmp-8.9a")) { host->mmc_host_ops.execute_tuning = arasan_zynqmp_execute_tuning; + + sdhci_arasan->quirks |= SDHCI_ARASAN_QUIRK_CLOCK_25_BROKEN; } arasan_dt_parse_clk_phases(dev, &sdhci_arasan->clk_data); -- 2.30.2