From patchwork Thu Jul 21 12:30:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jaehoon Chung X-Patchwork-Id: 651179 X-Patchwork-Delegate: jh80.chung@samsung.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3rwCmt6z7bz9sdg for ; Thu, 21 Jul 2016 22:30:54 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 380C5A7544; Thu, 21 Jul 2016 14:30:53 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lWpGj7EJ8Kgm; Thu, 21 Jul 2016 14:30:53 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B8D58A751B; Thu, 21 Jul 2016 14:30:52 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id ADF6AA751B for ; Thu, 21 Jul 2016 14:30:48 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F6Qoc36WZ-tP for ; Thu, 21 Jul 2016 14:30:48 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by theia.denx.de (Postfix) with ESMTPS id 33527A7518 for ; Thu, 21 Jul 2016 14:30:45 +0200 (CEST) Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OAO010D2035TKD0@mailout2.samsung.com> for u-boot@lists.denx.de; Thu, 21 Jul 2016 21:30:41 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.113]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id 0D.A3.05174.170C0975; Thu, 21 Jul 2016 21:30:41 +0900 (KST) X-AuditID: cbfee68d-f79876d000001436-f0-5790c0711605 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 59.00.04429.170C0975; Thu, 21 Jul 2016 05:30:41 -0700 (MST) Received: from localhost.localdomain ([10.113.62.216]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OAO006YS0350S60@mmp1.samsung.com>; Thu, 21 Jul 2016 21:30:41 +0900 (KST) From: Jaehoon Chung To: u-boot@lists.denx.de Date: Thu, 21 Jul 2016 21:30:39 +0900 Message-id: <1469104239-12822-1-git-send-email-jh80.chung@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrNLMWRmVeSWpSXmKPExsWyRsSkULfwwIRwg8Vd2hY3frWxWrx5uJnR ouNIC6PFty3bGC2mTtrMbvF2bye7A5vH7IaLLB6vDqxi9zh7ZwejR9+WVYwBLFFcNimpOZll qUX6dglcGU2/n7EVnBWreHZyBnsD4xWhLkYODgkBE4nNC7i6GDmBTDGJC/fWs3UxcnEICaxg lLjbeoEVImEi8W7XXiaIxFJGiRl/3rJDOD8YJb7sOcsOUsUmoCOx/dtxJhBbREBC4lf/VUaQ ImaBBkaJz7eaGUESwgIuEpt3HAdrYBFQldi9bD4ziM0r4Caxs+ku1Do5iZPHJrOCNEsI/GaT +PT7CzNEg4DEt8mHWCDulpXYdIAZol5S4uCKGywTGAUXMDKsYhRNLUguKE5KLzLUK07MLS7N S9dLzs/dxAgM09P/nvXuYLx9wPoQowAHoxIP74oX/eFCrIllxZW5hxhNgTZMZJYSTc4HRkNe SbyhsZmRhamJqbGRuaWZkjivotTPYCGB9MSS1OzU1ILUovii0pzU4kOMTBycUg2MfIkvG71U jTxP73j7e/Xr4EWs1b08YR4KNiEFM+4vLHP5HZvj0Tw/tCkwi8/wfMf67Ks5OvEaRSkOwmbP 7Sf/n+Wy3n72gcqvsicy1HM8im29A+5c0j+UajUnNXeK2KuZFnu+xEanbc869DW9+0HH+jWT +Ep7n4QxeSre7Va/4u12PVF26UslluKMREMt5qLiRABWahRuTgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkkeLIzCtJLcpLzFFi42I5/e+xgG7hgQnhBl1PVS1u/GpjtXjzcDOj RceRFkaLb1u2MVpMnbSZ3eLt3k52BzaP2Q0XWTxeHVjF7nH2zg5Gj74tqxgDWKIaGG0yUhNT UosUUvOS81My89JtlbyD453jTc0MDHUNLS3MlRTyEnNTbZVcfAJ03TJzgNYrKZQl5pQChQIS i4uV9O0wTQgNcdO1gGmM0PUNCYLrMTJAAwlrGDOafj9jKzgrVvHs5Az2BsYrQl2MnBwSAiYS 73btZYKwxSQu3FvP1sXIxSEksJRRYsaft+wQzg9GiS97zrKDVLEJ6Ehs/3YcrENEQELiV/9V RpAiZoEGRonPt5oZQRLCAi4Sm3ccB2tgEVCV2L1sPjOIzSvgJrGz6S4rxDo5iZPHJrNOYORe wMiwilEitSC5oDgpPdcoL7Vcrzgxt7g0L10vOT93EyM4Gp5J72A8vMv9EKMAB6MSD++O1f3h QqyJZcWVuYcYJTiYlUR4bfdOCBfiTUmsrEotyo8vKs1JLT7EaAp0wERmKdHkfGCk5pXEGxqb mBlZGpkbWhgZmyuJ8z7+vy5MSCA9sSQ1OzW1ILUIpo+Jg1OqgXHl/7ILf623HhNICmjVsVm5 c9304NMGzUnbS1K/hBdcrmS6crf3i4CuPWsb+4Xls+dk/6+VZ5vhWZjbIzHburY1WffnsXif rhPBhVtShXz/nj3gccvt05qTOpyZHRtNGdYtnr/5t1XyW/5bly8ZdZydpiV7fpvflazky40/ bjXYl/xe1fe5Q0mJpTgj0VCLuag4EQA+lTMTnAIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: trini@konsulko.com Subject: [U-Boot] [PATCH] mmc: s5p_sdhci: support the Driver model for Exynos X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" This patch support the driver model for s5p_sdhci controller. To support the legacy model, maintained the existing code. Note: If use the Driver Model, it needs to modify the device-tree. In future, will update the Device-tree and enable the configuratioin. (CONFIG_BLK, CONFIG_DM_MMC and CONFING_DM_MMC_OPS) Signed-off-by: Jaehoon Chung Reviewed-by: Simon Glass Acked-by: Minkyu Kang --- drivers/mmc/s5p_sdhci.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c index 44353c7..8f5fa99 100644 --- a/drivers/mmc/s5p_sdhci.c +++ b/drivers/mmc/s5p_sdhci.c @@ -16,6 +16,16 @@ #include #include +#ifdef CONFIG_DM_MMC +#include +struct s5p_sdhci_plat { + struct mmc_config cfg; + struct mmc mmc; +}; + +DECLARE_GLOBAL_DATA_PTR; +#endif + static char *S5P_NAME = "SAMSUNG SDHCI"; static void s5p_sdhci_set_control_reg(struct sdhci_host *host) { @@ -79,7 +89,11 @@ static int s5p_sdhci_core_init(struct sdhci_host *host) if (host->bus_width == 8) host->host_caps |= MMC_MODE_8BIT; +#ifndef CONFIG_BLK return add_sdhci(host, 52000000, 400000); +#else + return 0; +#endif } int s5p_sdhci_init(u32 regbase, int index, int bus_width) @@ -215,3 +229,62 @@ int exynos_mmc_init(const void *blob) return process_nodes(blob, node_list, count); } #endif + +#ifdef CONFIG_DM_MMC +static int s5p_sdhci_probe(struct udevice *dev) +{ + struct s5p_sdhci_plat *plat = dev_get_platdata(dev); + struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); + struct sdhci_host *host = dev_get_priv(dev); + u32 caps; + int ret; + + ret = sdhci_get_config(gd->fdt_blob, dev->of_offset, host); + if (ret) + return ret; + + ret = do_sdhci_init(host); + if (ret) + return ret; + + caps = sdhci_readl(host, SDHCI_CAPABILITIES); + sdhci_setup_cfg(&plat->cfg, host->name, host->bus_width, caps, + 52000000, 400000, host->version, host->quirks, + host->host_caps); + + host->mmc = &plat->mmc; + host->mmc->priv = host; + host->mmc->dev = dev; + upriv->mmc = host->mmc; + + return sdhci_probe(dev); +} + +static int s5p_sdhci_bind(struct udevice *dev) +{ + struct s5p_sdhci_plat *plat = dev_get_platdata(dev); + int ret; + + ret = sdhci_bind(dev, &plat->mmc, &plat->cfg); + if (ret) + return ret; + + return 0; +} + +static const struct udevice_id s5p_sdhci_ids[] = { + { .compatible = "samsung,exynos4412-sdhci"}, + { } +}; + +U_BOOT_DRIVER(s5p_sdhci_drv) = { + .name = "s5p_sdhci", + .id = UCLASS_MMC, + .of_match = s5p_sdhci_ids, + .bind = s5p_sdhci_bind, + .ops = &sdhci_ops, + .probe = s5p_sdhci_probe, + .priv_auto_alloc_size = sizeof(struct sdhci_host), + .platdata_auto_alloc_size = sizeof(struct s5p_sdhci_plat), +}; +#endif /* CONFIG_DM_MMC */