From patchwork Wed Feb 6 19:46:54 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guennadi Liakhovetski X-Patchwork-Id: 2106431 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 4AB2A3FCFC for ; Wed, 6 Feb 2013 19:47:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758039Ab3BFTrQ (ORCPT ); Wed, 6 Feb 2013 14:47:16 -0500 Received: from moutng.kundenserver.de ([212.227.126.186]:62473 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757990Ab3BFTrL (ORCPT ); Wed, 6 Feb 2013 14:47:11 -0500 Received: from axis700.grange (dslb-178-006-240-079.pools.arcor-ip.net [178.6.240.79]) by mrelayeu.kundenserver.de (node=mrbap4) with ESMTP (Nemesis) id 0Md4Fu-1UKI8Z2NOc-00IYeE; Wed, 06 Feb 2013 20:47:05 +0100 Received: from 6a.grange (6a.grange [192.168.1.11]) by axis700.grange (Postfix) with ESMTPS id A065140BB8; Wed, 6 Feb 2013 20:47:04 +0100 (CET) Received: from lyakh by 6a.grange with local (Exim 4.72) (envelope-from ) id 1U3AxU-0004qJ-HL; Wed, 06 Feb 2013 20:47:04 +0100 From: Guennadi Liakhovetski To: linux-mmc@vger.kernel.org Cc: devicetree-discuss@lists.ozlabs.org, linux-sh@vger.kernel.org, Magnus Damm , Simon Horman , Guennadi Liakhovetski , Arnd Bergmann Subject: [PATCH v3 07/13] mmc: tmio-mmc: parse device-tree bindings Date: Wed, 6 Feb 2013 20:46:54 +0100 Message-Id: <1360180020-18555-8-git-send-email-g.liakhovetski@gmx.de> X-Mailer: git-send-email 1.7.2.5 In-Reply-To: <1360180020-18555-1-git-send-email-g.liakhovetski@gmx.de> References: <1360180020-18555-1-git-send-email-g.liakhovetski@gmx.de> X-Provags-ID: V02:K0:XpBq5AbxWCv9XE0bW4bPKLX5R3/Q9+a5/uFGTil14zN DEJxdD2NiWy5uCWjIfYVoTpvLIWD9LbpKjOkoN2qgh8sA/k/Pd IPXh86AUBXyfbXpU52gDure0tufN+4vw+doVTbX2Q8yoJpeuO7 kTkix9aAPD/EEGoJBNJ69/e08kA+7xS6FZvnH7a1gN5jf9e9/T EeyrN6abpqDnNr2cU7CjRkKbpNlwvqR/cR6TApa07Nay0A5141 bwlQOJ9AS32jhSPK6cJdaGeLjlamXoK+dn3HWP0qkof4Sono3o 0fN5m+E37e/7aVaqSDq/RFrFKw/w/Rj6DiXvf1vFxKNpw/XPzd Bxo8aUXbNXVLhEIljwO23AnYPlJqwNmLSOk+LQa7JTuMhJAo1I YKyamMXlyHe1w== Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Add parsing of common and driver-specific DT bindings to the tmio-mmc MMC host driver. Signed-off-by: Guennadi Liakhovetski Cc: Arnd Bergmann --- v3: remove the "toshiba,mmc-cap-sdio-irq" property drivers/mmc/host/tmio_mmc_pio.c | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c index b25adb4..e32e9b4 100644 --- a/drivers/mmc/host/tmio_mmc_pio.c +++ b/drivers/mmc/host/tmio_mmc_pio.c @@ -918,6 +918,21 @@ static void tmio_mmc_init_ocr(struct tmio_mmc_host *host) dev_warn(mmc_dev(mmc), "Platform OCR mask is ignored\n"); } +static void tmio_mmc_of_parse(struct platform_device *pdev, + struct tmio_mmc_data *pdata) +{ + const struct device_node *np = pdev->dev.of_node; + if (!np) + return; + + if (of_get_property(np, "toshiba,mmc-wrprotect-disable", NULL)) + pdata->flags |= TMIO_MMC_WRPROTECT_DISABLE; + if (of_get_property(np, "toshiba,mmc-blksz-2bytes", NULL)) + pdata->flags |= TMIO_MMC_BLKSZ_2BYTES; + if (of_get_property(np, "toshiba,mmc-has-idle-wait", NULL)) + pdata->flags |= TMIO_MMC_HAS_IDLE_WAIT; +} + int tmio_mmc_host_probe(struct tmio_mmc_host **host, struct platform_device *pdev, struct tmio_mmc_data *pdata) @@ -928,6 +943,8 @@ int tmio_mmc_host_probe(struct tmio_mmc_host **host, int ret; u32 irq_mask = TMIO_MASK_CMD; + tmio_mmc_of_parse(pdev, pdata); + if (!(pdata->flags & TMIO_MMC_HAS_IDLE_WAIT)) pdata->write16_hook = NULL; @@ -939,6 +956,8 @@ int tmio_mmc_host_probe(struct tmio_mmc_host **host, if (!mmc) return -ENOMEM; + mmc_of_parse(mmc); + pdata->dev = &pdev->dev; _host = mmc_priv(mmc); _host->pdata = pdata; @@ -959,7 +978,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host **host, } mmc->ops = &tmio_mmc_ops; - mmc->caps = MMC_CAP_4_BIT_DATA | pdata->capabilities; + mmc->caps |= MMC_CAP_4_BIT_DATA | pdata->capabilities; mmc->caps2 = pdata->capabilities2; mmc->max_segs = 32; mmc->max_blk_size = 512; @@ -971,7 +990,8 @@ int tmio_mmc_host_probe(struct tmio_mmc_host **host, _host->native_hotplug = !(pdata->flags & TMIO_MMC_USE_GPIO_CD || mmc->caps & MMC_CAP_NEEDS_POLL || - mmc->caps & MMC_CAP_NONREMOVABLE); + mmc->caps & MMC_CAP_NONREMOVABLE || + mmc->slot.cd_irq >= 0); _host->power = false; pm_runtime_enable(&pdev->dev);