From patchwork Fri Jul 21 21:24:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 792347 X-Patchwork-Delegate: jh80.chung@samsung.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; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="noIOxKXA"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3xDkWF61jFz9s81 for ; Sat, 22 Jul 2017 07:32:25 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id A2D82C21DB1; Fri, 21 Jul 2017 21:31:46 +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=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, 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 12088C21DD4; Fri, 21 Jul 2017 21:25:13 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id DA069C21C4F; Fri, 21 Jul 2017 21:24:57 +0000 (UTC) Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by lists.denx.de (Postfix) with ESMTPS id 20A69C21D8E for ; Fri, 21 Jul 2017 21:24:52 +0000 (UTC) Received: by mail-wr0-f195.google.com with SMTP id c24so9512062wra.2 for ; Fri, 21 Jul 2017 14:24:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=x3V2QvS7LfZlBkkCHIWBu/+GCTNJA3jrxcJ4xA3r4wU=; b=noIOxKXAEOqokQpYHOsZ/o2SFGsI2LnoGENN7YpxFXeisPY1D9Obstoe7jZZSUuIMU rWBdCyR3Wiocw56eZiLsagkxpJy/jDUZiZ4E63w93A8jpOWqm1BTZXqEWnTgAmOftf77 o4KomPmyaILdDVPHrIg0Y5nfsf5W4dok70wMyyxuE7qbULsr8FNyHw2IM8rJtWf4Vc+B n7EBGpbbNI3DPUcmPxDAczO0AxrnhVN1Er39xJfkvvDVr9O8ce/KC2bqbNP7+Y26txXl bsGFeMbaatjh5Pw6vSxB3h8zsa+8oCJgnG1CZ7gg+FQI7K4wr2Hha4bBij1GJ8JxNiF8 C4CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=x3V2QvS7LfZlBkkCHIWBu/+GCTNJA3jrxcJ4xA3r4wU=; b=VUhcveJ7nuyifjjAa92E9jMMW4Z9NgOVvv+oWBQxG3st11N3r9O9F91kmZY8SklImS jmFmBuSJT4gAsP8Acu8B4COV057jbmtLSi/bU9dRdZ9aTHC+uFfu5tfCCpM1VwynjorP 4/K8KGuerFwMnEwur07sXnVSfG+iCyyppWv9hbzaKMrfsIfq1NpOTHz5H3DuNn9kG1cb pTk7R0D5MCKYw1sSIRlK9BjC5fj1Hu3t8TJ2LVct/hGy6EwwCP4TG+WmdSUUAZNlU11k Ixk/n1QMKDJ9J3hvhf2NbfzeIK5Cs0V3Xwc2Qv2ctSTm7G3erb93qDeENcVXJHk4s8u2 /xDg== X-Gm-Message-State: AIVw112acdUAP5Xr0dm5iGXZfeb0vEFOvjxiK2g1cbyDWMsvRk1mT/Lz oyL+Q3Z4neI8O1NRTgs= X-Received: by 10.223.161.133 with SMTP id u5mr698485wru.191.1500672291605; Fri, 21 Jul 2017 14:24:51 -0700 (PDT) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id v8sm9188252wrd.28.2017.07.21.14.24.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 21 Jul 2017 14:24:50 -0700 (PDT) From: Marek Vasut X-Google-Original-From: Marek Vasut To: u-boot@lists.denx.de Date: Fri, 21 Jul 2017 23:24:35 +0200 Message-Id: <20170721212436.26073-4-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170721212436.26073-1-marek.vasut+renesas@gmail.com> References: <20170721212436.26073-1-marek.vasut+renesas@gmail.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH 4/5] mmc: uniphier-sd: Add support for quirks 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" Check if the OF match has any associated data and if so, use those data as the controller quirks, otherwise fallback to the old method of reading the controller version register to figure out the quirks. This allows us to supply controller quirks on controllers which ie. do not have version register. Signed-off-by: Marek Vasut Cc: Masahiro Yamada Cc: Jaehoon Chung --- drivers/mmc/uniphier-sd.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/mmc/uniphier-sd.c b/drivers/mmc/uniphier-sd.c index 07436f6ef6..c22c64cdfb 100644 --- a/drivers/mmc/uniphier-sd.c +++ b/drivers/mmc/uniphier-sd.c @@ -751,6 +751,7 @@ static int uniphier_sd_probe(struct udevice *dev) struct uniphier_sd_plat *plat = dev_get_platdata(dev); struct uniphier_sd_priv *priv = dev_get_priv(dev); struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); + const u32 quirks = dev_get_driver_data(dev); fdt_addr_t base; struct clk clk; int ret; @@ -802,18 +803,22 @@ static int uniphier_sd_probe(struct udevice *dev) return -EINVAL; } + if (quirks) { + priv->caps = quirks; + } else { + priv->version = uniphier_sd_readl(priv, UNIPHIER_SD_VERSION) & + UNIPHIER_SD_VERSION_IP; + dev_dbg(dev, "version %x\n", priv->version); + if (priv->version >= 0x10) { + priv->caps |= UNIPHIER_SD_CAP_DMA_INTERNAL; + priv->caps |= UNIPHIER_SD_CAP_DIV1024; + } + } + if (fdt_get_property(gd->fdt_blob, dev_of_offset(dev), "non-removable", NULL)) priv->caps |= UNIPHIER_SD_CAP_NONREMOVABLE; - priv->version = uniphier_sd_readl(priv, UNIPHIER_SD_VERSION) & - UNIPHIER_SD_VERSION_IP; - dev_dbg(dev, "version %x\n", priv->version); - if (priv->version >= 0x10) { - priv->caps |= UNIPHIER_SD_CAP_DMA_INTERNAL; - priv->caps |= UNIPHIER_SD_CAP_DIV1024; - } - uniphier_sd_host_init(priv); plat->cfg.voltages = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34; @@ -828,7 +833,7 @@ static int uniphier_sd_probe(struct udevice *dev) } static const struct udevice_id uniphier_sd_match[] = { - { .compatible = "socionext,uniphier-sdhc" }, + { .compatible = "socionext,uniphier-sdhc", .data = 0 }, { /* sentinel */ } };