From patchwork Wed Jan 27 22:25:41 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 8144941 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.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 58CD6BEEED for ; Wed, 27 Jan 2016 22:27:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 74AF72024F for ; Wed, 27 Jan 2016 22:27:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7FEBF2022D for ; Wed, 27 Jan 2016 22:26:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966279AbcA0W04 (ORCPT ); Wed, 27 Jan 2016 17:26:56 -0500 Received: from mout.kundenserver.de ([217.72.192.74]:63403 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967470AbcA0W0y (ORCPT ); Wed, 27 Jan 2016 17:26:54 -0500 Received: from localhost.localdomain ([95.91.39.67]) by mrelayeu.kundenserver.de (mreue104) with ESMTPSA (Nemesis) id 0M8hRj-1aBiJT0obL-00wE9o; Wed, 27 Jan 2016 23:26:04 +0100 From: Stefan Wahren To: Scott Branden , Ray Jui , Jon Mason , Stephen Warren , Lee Jones , Eric Anholt Cc: Rob Herring , Mark Rutland , Arnd Bergmann , Ulf Hansson , kernel@martin.sperl.org, devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-mmc@vger.kernel.org, jszhang@marvell.com, shawn.lin@rock-chips.com, bcm-kernel-feedback-list@broadcom.com, Stefan Wahren Subject: [PATCH 2/3] mmc: sdhci-iproc: add bcm2835 support Date: Wed, 27 Jan 2016 22:25:41 +0000 Message-Id: <1453933542-30287-3-git-send-email-stefan.wahren@i2se.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1453933542-30287-1-git-send-email-stefan.wahren@i2se.com> References: <1453933542-30287-1-git-send-email-stefan.wahren@i2se.com> X-Provags-ID: V03:K0:WbxkNw72mHoGIuaxXXV7tuJoG+/0gNTv/TK60iQYXa5XYp3WGFO hGHaTRh9tnbomuwi9PmcBBwhwtCItPf6u6TY9GVmMK+zMlLP3KEfS0g00H3NNWeukWNyh1E e8U3Lkvn/NFGovnXYwFmnXcy6oEqWbpFKbqU0XQLV+hxAi2Eg7tame2UJAsDtJmn8jnEsu3 bHDLOIfg/RE2LKJDV2a3w== X-UI-Out-Filterresults: notjunk:1; V01:K0:OJLtOVgiWGs=:yxN9PMSq5PlWyvSSA3k586 UeN1FGRZDGhaKDbeL844A863k9CXePWRiRhiskSYFg7Uns5EG6FVS2CoOZo4liCcTrXzX4+ZN noO3IMHFRvox46YJiKWdr6Pvjuf6Dk6i4w8+QSTTvyoYouJNXr8H4OCoVc9wb6rBDdM+HsxeM ECM5nUwH5VJrGNSBws6pC3iiLkHvt5xPGXr4L2UWysmQE8LGYSBUCwaaRPSJrseIbII7MmTQx jIMqpwO6e4YL3rOut6vthcKh6KvzxUYkbo8VK5GjeHEwPARdqHDap4UJORYYueRMkt1p0vzQ3 gAe8ioOgzgAvm7q11auyjYOTJlCQL3X99cya28XFV45hyGsDe1E9AUopKZFjOHjlVYPdQUAWY fy+iFuPtCREpsyCAK+HDuAAXYQCNMU0JRj8RtFBpGMmHozCQZ82WAdcwDiEDu5C2bXsHxxNK0 /2bzr7doSWK8yGPFP0tCDLz5Y2r599MnpIQa64eATKR+yHvrpskM3yrzB0AwKHElXB2cVRnjK RE+o3gmC0UbjYskvHyMncvb7ELaBHxEQfU5/EMwLbLvFJpIBBF0fnHk2dvrAmR7kkiTtlmF5w k7OD5nS9IYDEBKSu4M+fzrVSa9HGGglemAQLFZKMGcgVjbctHIvq0ucpGkMvs5LlsEcGBRfAs SYaApLrpSfQ/cd809MAonmN0Ht9DlUGt3XYsh7HRTqxd2KnxrENIM82WPFV1DXjq6pTs= Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Spam-Status: No, score=-6.9 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 Scott Branden from Broadcom said that the BCM2835 eMMC IP core is very similar to IPROC and share most of the quirks. So use this driver instead of separate one. The sdhci-iproc contains a better workaround for the clock domain crossing problem which doesn't need any delays. This results in a better write performance. Btw we get the rid of the SDHCI_CAPABILITIES hack in the sdhci_readl function. Suggested-by: Scott Branden Signed-off-by: Stefan Wahren Acked-by: Eric Anholt --- drivers/mmc/host/Kconfig | 6 +++--- drivers/mmc/host/sdhci-iproc.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig index 1526b8a..60de1e4 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -318,15 +318,15 @@ config MMC_SDHCI_F_SDH30 If unsure, say N. config MMC_SDHCI_IPROC - tristate "SDHCI platform support for the iProc SD/MMC Controller" - depends on ARCH_BCM_IPROC || COMPILE_TEST + tristate "SDHCI support for the BCM2835 & iProc SD/MMC Controller" + depends on ARCH_BCM2835 || ARCH_BCM_IPROC || COMPILE_TEST depends on MMC_SDHCI_PLTFM default ARCH_BCM_IPROC select MMC_SDHCI_IO_ACCESSORS help This selects the iProc SD/MMC controller. - If you have an IPROC platform with SD or MMC devices, + If you have a BCM2835 or IPROC platform with SD or MMC devices, say Y or M here. If unsure, say N. diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c index cdc6c4a..871c92c 100644 --- a/drivers/mmc/host/sdhci-iproc.c +++ b/drivers/mmc/host/sdhci-iproc.c @@ -169,7 +169,22 @@ static const struct sdhci_iproc_data iproc_data = { .mmc_caps = MMC_CAP_1_8V_DDR, }; +static const struct sdhci_pltfm_data sdhci_bcm2835_pltfm_data = { + .quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION | + SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | + SDHCI_QUIRK_MISSING_CAPS, + .ops = &sdhci_iproc_ops, +}; + +static const struct sdhci_iproc_data bcm2835_data = { + .pdata = &sdhci_bcm2835_pltfm_data, + .caps = SDHCI_CAN_VDD_330, + .caps1 = 0x00000000, + .mmc_caps = 0x00000000, +}; + static const struct of_device_id sdhci_iproc_of_match[] = { + { .compatible = "brcm,bcm2835-sdhci", .data = &bcm2835_data }, { .compatible = "brcm,sdhci-iproc-cygnus", .data = &iproc_data }, { } };