From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jisheng Zhang Subject: [PATCH v4 06/13] mmc: sdhci-of-arasan: use sdhci_pltfm_init for private allocation Date: Tue, 26 Jan 2016 18:15:46 +0800 Message-ID: <1453803353-6266-7-git-send-email-jszhang@marvell.com> References: <1453803353-6266-1-git-send-email-jszhang@marvell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1453803353-6266-1-git-send-email-jszhang@marvell.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: ulf.hansson@linaro.org, arnd@arndb.de, ludovic.desroches@atmel.com, swarren@wwwdotorg.org, lee@kernel.org, eric@anholt.net, michal.simek@xilinx.com, soren.brinkmann@xilinx.com, srinivas.kandagatla@gmail.com, maxime.coquelin@st.com, patrice.chotard@st.com, thierry.reding@gmail.com, sebastian.hesselbarth@gmail.com Cc: Jisheng Zhang , kernel@stlinux.com, linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: linux-mmc@vger.kernel.org Commit 0e748234293f ("mmc: sdhci: Add size for caller in init+register") allows users of sdhci_pltfm to allocate private space in calls to sdhci_pltfm_init+sdhci_pltfm_register. This patch migrates the sdhci-of-arasan driver to this allocation. Signed-off-by: Jisheng Zhang Acked-by: Arnd Bergmann --- drivers/mmc/host/sdhci-of-arasan.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c index 50eb8bc..84c8fde 100644 --- a/drivers/mmc/host/sdhci-of-arasan.c +++ b/drivers/mmc/host/sdhci-of-arasan.c @@ -81,7 +81,7 @@ static int sdhci_arasan_suspend(struct device *dev) struct platform_device *pdev = to_platform_device(dev); struct sdhci_host *host = platform_get_drvdata(pdev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); - struct sdhci_arasan_data *sdhci_arasan = pltfm_host->priv; + struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host); int ret; ret = sdhci_suspend_host(host); @@ -106,7 +106,7 @@ static int sdhci_arasan_resume(struct device *dev) struct platform_device *pdev = to_platform_device(dev); struct sdhci_host *host = platform_get_drvdata(pdev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); - struct sdhci_arasan_data *sdhci_arasan = pltfm_host->priv; + struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host); int ret; ret = clk_enable(sdhci_arasan->clk_ahb); @@ -137,10 +137,13 @@ static int sdhci_arasan_probe(struct platform_device *pdev) struct sdhci_pltfm_host *pltfm_host; struct sdhci_arasan_data *sdhci_arasan; - sdhci_arasan = devm_kzalloc(&pdev->dev, sizeof(*sdhci_arasan), - GFP_KERNEL); - if (!sdhci_arasan) - return -ENOMEM; + host = sdhci_pltfm_init(pdev, &sdhci_arasan_pdata, + sizeof(*sdhci_arasan)); + if (IS_ERR(host)) + return PTR_ERR(host); + + pltfm_host = sdhci_priv(host); + sdhci_arasan = sdhci_pltfm_priv(pltfm_host); sdhci_arasan->clk_ahb = devm_clk_get(&pdev->dev, "clk_ahb"); if (IS_ERR(sdhci_arasan->clk_ahb)) { @@ -166,20 +169,12 @@ static int sdhci_arasan_probe(struct platform_device *pdev) goto clk_dis_ahb; } - host = sdhci_pltfm_init(pdev, &sdhci_arasan_pdata, 0); - if (IS_ERR(host)) { - ret = PTR_ERR(host); - goto clk_disable_all; - } - if (of_device_is_compatible(pdev->dev.of_node, "arasan,sdhci-4.9a")) { host->quirks |= SDHCI_QUIRK_NO_HISPD_BIT; host->quirks2 |= SDHCI_QUIRK2_HOST_NO_CMD23; } sdhci_get_of_property(pdev); - pltfm_host = sdhci_priv(host); - pltfm_host->priv = sdhci_arasan; pltfm_host->clk = clk_xin; ret = mmc_of_parse(host->mmc); @@ -209,11 +204,12 @@ static int sdhci_arasan_remove(struct platform_device *pdev) int ret; struct sdhci_host *host = platform_get_drvdata(pdev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); - struct sdhci_arasan_data *sdhci_arasan = pltfm_host->priv; + struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host); + struct clk *clk_ahb = sdhci_arasan->clk_ahb; ret = sdhci_pltfm_unregister(pdev); - clk_disable_unprepare(sdhci_arasan->clk_ahb); + clk_disable_unprepare(clk_ahb); return ret; } -- 2.7.0