From patchwork Fri Aug 5 02:11:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jaehoon Chung X-Patchwork-Id: 656038 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 3s5GtH0jZVz9snm for ; Fri, 5 Aug 2016 16:21:59 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id ABE894B951; Fri, 5 Aug 2016 08:21:57 +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 Bw0GeF05f5wt; Fri, 5 Aug 2016 08:21:57 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 260CC4B77D; Fri, 5 Aug 2016 08:21:57 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D28A44B91E for ; Fri, 5 Aug 2016 08:21: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 wxkMcPGgkktm for ; Fri, 5 Aug 2016 08:21:53 +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 mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by theia.denx.de (Postfix) with ESMTPS id 4DE284B801 for ; Fri, 5 Aug 2016 08:21:48 +0200 (CEST) Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OBE00IJOZEQCKB0@mailout1.samsung.com> for u-boot@lists.denx.de; Fri, 05 Aug 2016 11:11:14 +0900 (KST) Received: from epcpsbgm1new.samsung.com ( [172.20.52.113]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id 84.31.31386.1C5F3A75; Fri, 5 Aug 2016 11:11:13 +0900 (KST) X-AuditID: cbfee68d-f79286d000007a9a-0c-57a3f5c1d294 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1new.samsung.com (EPCPMTA) with SMTP id 87.09.05218.1C5F3A75; Fri, 5 Aug 2016 11:11:13 +0900 (KST) 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 <0OBE00BE4ZEP9M50@mmp1.samsung.com>; Fri, 05 Aug 2016 11:11:13 +0900 (KST) From: Jaehoon Chung To: u-boot@lists.denx.de Date: Fri, 05 Aug 2016 11:11:12 +0900 Message-id: <1470363072-6883-2-git-send-email-jh80.chung@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1470363072-6883-1-git-send-email-jh80.chung@samsung.com> References: <1470363072-6883-1-git-send-email-jh80.chung@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsWyRsSkUPfg18XhBj+2Wlrc+NXGatFxpIXR 4tuWbYwWUydtZrd4u7eT3YHVY3bDRRaPVwdWsXucvbOD0aNvyyrGAJYoLpuU1JzMstQifbsE roy/batZC/YYVsx6OYOxgXGdRhcjJ4eEgInE0wW/mSBsMYkL99azdTFycQgJrGCUeDr5ECNM 0bENT1khEksZJTa9vAtV9YNRYvLOHawgVWwCOhLbvx0HGyUiICHxq/8qWDezQIbEz3NdYLaw QJTEl5ZFQDYHB4uAqsSk6Y4gYV4BV4kv+86yQyyTkzh5bDLYSE4BN4kXF5awgZQLAdUc+lAN slZCoJ1dYvPHyywgNSwCAhLfJh9iAamREJCV2HSAGWKMpMTBFTdYJjAKL2BkWMUomlqQXFCc lF5kqFecmFtcmpeul5yfu4kRGMin/z3r3cF4+4D1IUYBDkYlHt6K+MXhQqyJZcWVuYcYTYE2 TGSWEk3OB8ZLXkm8obGZkYWpiamxkbmlmZI4r6LUz2AhgfTEktTs1NSC1KL4otKc1OJDjEwc nFINjHsN9PlcJR8fuDD3yMFOjieyNQ2Mkurqpa+Wr7qu6HOdZ/vJPTqlK2en/tnEuPTbFJmv nqGXnPKjalRVRXZXMut8eWXGLHKZ63tSmGnYJtmkfz5mrtFpdT6CgczFSrNeTj70ZElu89kf ZgffzdaTskjfsbBO71Ltj+SJ17R5p0t1m8/hzX93TImlOCPRUIu5qDgRAOs8NI9fAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprJIsWRmVeSWpSXmKPExsVy+t9jAd2DXxeHG5z+ZGxx41cbq0XHkRZG i29btjFaTJ20md3i7d5OdgdWj9kNF1k8Xh1Yxe5x9s4ORo++LasYA1iiGhhtMlITU1KLFFLz kvNTMvPSbZW8g+Od403NDAx1DS0tzJUU8hJzU22VXHwCdN0yc4A2KymUJeaUAoUCEouLlfTt ME0IDXHTtYBpjND1DQmC6zEyQAMJaxgz/ratZi3YY1gx6+UMxgbGdRpdjJwcEgImEsc2PGWF sMUkLtxbz9bFyMUhJLCUUWLTy7tQzg9Gick7d4BVsQnoSGz/dpwJxBYRkJD41X+VEcRmFsiQ +HmuC8wWFoiS+NKyCMjm4GARUJWYNN0RJMwr4CrxZd9ZdohlchInj00GG8kp4Cbx4sISNpBy IaCaQx+qJzDyLmBkWMUokVqQXFCclJ5rmJdarlecmFtcmpeul5yfu4kRHC3PpHYwHtzlfohR gINRiYfX4cjicCHWxLLiytxDjBIczEoivEdeA4V4UxIrq1KL8uOLSnNSiw8xmgKdNZFZSjQ5 HxjJeSXxhsYmZkaWRuaGFkbG5krivI//rwsTEkhPLEnNTk0tSC2C6WPi4JRqYOSdIl6g9lm0 j/Gj4EP9jY2MEVLO/xdeX/a35+tplhtb9md8sFv5mDl5lYJkxFQVldbPZnoL2e9pcc/958oa nfXj/bX+Ho+gBezS+twp12JsH64K3S74qLd86UfFyMnXdTXP9KWfffSOI2DdzrnHJU5Wr+eo WB51JLBxSrDQj+1XfuY+zH/4P16JpTgj0VCLuag4EQBC+Nf4rAIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: trini@konsulko.com Subject: [U-Boot] [PATCH v2 2/2] mmc: sdhci: remove the unnecessary arguments for sdhci_setup_cfg 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" Some arguments don't need to pass to sdhci_setup_cfg. Generic variable can be used in sdhci_setup_cfg, and some arguments are already included in sdhci_host struct. It's enough that just pass the board specific things to sdhci_setup_cfg(). After removing the unnecessary arguments, it's more simpler than before. It doesn't consider "Version" and "Capabilities" anymore in each SoC driver. Signed-off-by: Jaehoon Chung Reviewed-by: Simon Glass --- Changes for V2: - Add the rockchip_sdhci host controller. - Fix typo. drivers/mmc/msm_sdhci.c | 4 +--- drivers/mmc/rockchip_sdhci.c | 8 ++------ drivers/mmc/sdhci.c | 26 ++++++++++++++------------ drivers/mmc/zynq_sdhci.c | 6 ++---- include/sdhci.h | 12 +++--------- 5 files changed, 22 insertions(+), 34 deletions(-) diff --git a/drivers/mmc/msm_sdhci.c b/drivers/mmc/msm_sdhci.c index e90a044..a8cb9e2 100644 --- a/drivers/mmc/msm_sdhci.c +++ b/drivers/mmc/msm_sdhci.c @@ -143,9 +143,7 @@ static int msm_sdc_probe(struct udevice *dev) /* Set host controller version */ host->version = sdhci_readw(host, SDHCI_HOST_VERSION); - caps = sdhci_readl(host, SDHCI_CAPABILITIES); - ret = sdhci_setup_cfg(&plat->cfg, dev->name, caps, - 0, 0, host->version, host->quirks, 0); + ret = sdhci_setup_cfg(&plat->cfg, host, 0, 0); host->mmc = &plat->mmc; if (ret) return ret; diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c index 023c29b..624029b 100644 --- a/drivers/mmc/rockchip_sdhci.c +++ b/drivers/mmc/rockchip_sdhci.c @@ -33,15 +33,11 @@ static int arasan_sdhci_probe(struct udevice *dev) struct rockchip_sdhc *prv = dev_get_priv(dev); struct sdhci_host *host = &prv->host; int ret; - u32 caps; - host->version = sdhci_readw(host, SDHCI_HOST_VERSION); host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD; - caps = sdhci_readl(host, SDHCI_CAPABILITIES); - ret = sdhci_setup_cfg(&plat->cfg, dev->name, host->bus_width, - caps, CONFIG_ROCKCHIP_SDHCI_MAX_FREQ, EMMC_MIN_FREQ, - host->version, host->quirks, 0); + ret = sdhci_setup_cfg(&plat->cfg, host, CONFIG_ROCKCHIP_SDHCI_MAX_FREQ, + EMMC_MIN_FREQ); host->mmc = &plat->mmc; if (ret) diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index c275314..60108fd 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c @@ -511,18 +511,22 @@ static const struct mmc_ops sdhci_ops = { }; #endif -int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, - uint caps, u32 max_clk, u32 min_clk, uint version, - uint quirks, uint host_caps) +int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host, + u32 max_clk, u32 min_clk) { - cfg->name = name; + u32 caps; + + caps = sdhci_readl(host, SDHCI_CAPABILITIES); + host->version = sdhci_readw(host, SDHCI_HOST_VERSION); + + cfg->name = host->name; #ifndef CONFIG_DM_MMC_OPS cfg->ops = &sdhci_ops; #endif if (max_clk) cfg->f_max = max_clk; else { - if (version >= SDHCI_SPEC_300) + if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) cfg->f_max = (caps & SDHCI_CLOCK_V3_BASE_MASK) >> SDHCI_CLOCK_BASE_SHIFT; else @@ -535,7 +539,7 @@ int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, if (min_clk) cfg->f_min = min_clk; else { - if (version >= SDHCI_SPEC_300) + if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) cfg->f_min = cfg->f_max / SDHCI_MAX_DIV_SPEC_300; else cfg->f_min = cfg->f_max / SDHCI_MAX_DIV_SPEC_200; @@ -549,13 +553,13 @@ int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, cfg->voltages |= MMC_VDD_165_195; cfg->host_caps = MMC_MODE_HS | MMC_MODE_HS_52MHz | MMC_MODE_4BIT; - if (version >= SDHCI_SPEC_300) { + if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) { if (caps & SDHCI_CAN_DO_8BIT) cfg->host_caps |= MMC_MODE_8BIT; } - if (host_caps) - cfg->host_caps |= host_caps; + if (host->host_caps) + cfg->host_caps |= host->host_caps; cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT; @@ -582,9 +586,7 @@ int add_sdhci(struct sdhci_host *host, u32 max_clk, u32 min_clk) } #endif - if (sdhci_setup_cfg(&host->cfg, host->name, caps, - max_clk, min_clk, SDHCI_GET_VERSION(host), - host->quirks, host->host_caps)) { + if (sdhci_setup_cfg(&host->cfg, host, max_clk, min_clk)) { printf("%s: Hardware doesn't specify base clock frequency\n", __func__); return -EINVAL; diff --git a/drivers/mmc/zynq_sdhci.c b/drivers/mmc/zynq_sdhci.c index 69d6151..bf54219 100644 --- a/drivers/mmc/zynq_sdhci.c +++ b/drivers/mmc/zynq_sdhci.c @@ -40,10 +40,8 @@ static int arasan_sdhci_probe(struct udevice *dev) host->version = sdhci_readw(host, SDHCI_HOST_VERSION); caps = sdhci_readl(host, SDHCI_CAPABILITIES); - ret = sdhci_setup_cfg(&plat->cfg, dev->name, - caps, CONFIG_ZYNQ_SDHCI_MAX_FREQ, - CONFIG_ZYNQ_SDHCI_MIN_FREQ, host->version, - host->quirks, 0); + ret = sdhci_setup_cfg(&plat->cfg, host, CONFIG_ZYNQ_SDHCI_MAX_FREQ, + CONFIG_ZYNQ_SDHCI_MIN_FREQ); host->mmc = &plat->mmc; if (ret) return ret; diff --git a/include/sdhci.h b/include/sdhci.h index 693ecc1..fcef4dc 100644 --- a/include/sdhci.h +++ b/include/sdhci.h @@ -367,18 +367,12 @@ static inline u8 sdhci_readb(struct sdhci_host *host, int reg) * See msm_sdhci.c for an example. * * @cfg: Configuration structure to fill in (generally &plat->mmc) - * @name: Device name (normally dev->name) - * @caps: Host capabilities (MMC_MODE_...) + * @host: SDHCI host structure * @max_clk: Maximum supported clock speed in HZ (0 for default) * @min_clk: Minimum supported clock speed in HZ (0 for default) - * @version: Host controller version (generally read from the - * SDHCI_HOST_VERSION register) - * @quirks: Quick flags (SDHCI_QUIRK_...) - * @host_caps: Additional host capabilities (0 if none) */ -int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, - uint caps, u32 max_clk, u32 min_clk, uint version, - uint quirks, uint host_caps); +int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host, + u32 max_clk, u32 min_clk); /** * sdhci_bind() - Set up a new MMC block device