From patchwork Wed Jan 16 16:54:42 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guennadi Liakhovetski X-Patchwork-Id: 1991761 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 1D3E8DF2A2 for ; Wed, 16 Jan 2013 16:55:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757888Ab3APQy4 (ORCPT ); Wed, 16 Jan 2013 11:54:56 -0500 Received: from moutng.kundenserver.de ([212.227.126.171]:56371 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757950Ab3APQyu (ORCPT ); Wed, 16 Jan 2013 11:54:50 -0500 Received: from axis700.grange (dslb-178-006-255-053.pools.arcor-ip.net [178.6.255.53]) by mrelayeu.kundenserver.de (node=mrbap4) with ESMTP (Nemesis) id 0Lxfpr-1StFQp2Slv-017Gi8; Wed, 16 Jan 2013 17:54:48 +0100 Received: from 6a.grange (6a.grange [192.168.1.11]) by axis700.grange (Postfix) with ESMTPS id 5346440BC3; Wed, 16 Jan 2013 17:54:47 +0100 (CET) Received: from lyakh by 6a.grange with local (Exim 4.72) (envelope-from ) id 1TvWGE-0006mm-W4; Wed, 16 Jan 2013 17:54:47 +0100 From: Guennadi Liakhovetski To: linux-mmc@vger.kernel.org Cc: linux-sh@vger.kernel.org, Magnus Damm Subject: [PATCH 07/11] mmc: tmio-mmc: parse device-tree bindings Date: Wed, 16 Jan 2013 17:54:42 +0100 Message-Id: <1358355286-26029-8-git-send-email-g.liakhovetski@gmx.de> X-Mailer: git-send-email 1.7.2.5 In-Reply-To: <1358355286-26029-1-git-send-email-g.liakhovetski@gmx.de> References: <1358355286-26029-1-git-send-email-g.liakhovetski@gmx.de> X-Provags-ID: V02:K0:gR2plLpEgZDTykXsgq4XzmpIW7AHgq8BI1B0Pe1yf4d EXc9a7ScfamH0s04hzIKwhIChvDH45g+gqg1R8y6bJHTmnwGgf beihdBSOnITC4aWqBMIzoA2HQESpCyj/s2c4OamF0/Im+IMIBN Hpqup9b/3tqc48oDS6Y0tjhFNJszBKGCx+DXavmBYOJ9FzXnIG a0d+SfcfBh0rv5DNf2xM08fPpC2327eCkZnFM7Wpk/VzpS3cnM mdbdOII0rVHn2T1vuPTrYp2c3VYmUs5ZS3nz3nwU3XH+MB0XKf w7zFsBDaYBKjscqxV71lmI4Ac3itvrw/h02xUy5JzlBKVIdl1s iBDSDDRDH1wpcFDKybATzMDQV6lPnM3AteTcEsU7C98cCKfTPm HeO4sQzi/1HmA== 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 --- drivers/mmc/host/tmio_mmc_pio.c | 24 +++++++++++++++++++++++- 1 files changed, 23 insertions(+), 1 deletions(-) diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c index b25adb4..84582b3 100644 --- a/drivers/mmc/host/tmio_mmc_pio.c +++ b/drivers/mmc/host/tmio_mmc_pio.c @@ -918,6 +918,24 @@ 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-cap-sdio-irq", NULL) && + pdata->flags & TMIO_MMC_SDIO_IRQ) + pdata->capabilities |= MMC_CAP_SDIO_IRQ; + 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 +946,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 +959,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 +981,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;