From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934207AbcAZKXw (ORCPT ); Tue, 26 Jan 2016 05:23:52 -0500 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:55761 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964822AbcAZKUc (ORCPT ); Tue, 26 Jan 2016 05:20:32 -0500 From: Jisheng Zhang To: , , , , , , , , , , , , CC: , , , , , , Jisheng Zhang Subject: [PATCH v4 05/13] mmc: sdhci-of-arasan: fix clk issue in sdhci_arasan_remove() Date: Tue, 26 Jan 2016 18:15:45 +0800 Message-ID: <1453803353-6266-6-git-send-email-jszhang@marvell.com> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1453803353-6266-1-git-send-email-jszhang@marvell.com> References: <1453803353-6266-1-git-send-email-jszhang@marvell.com> MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-01-26_03:,, signatures=0 X-Proofpoint-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1507310008 definitions=main-1601260186 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org sdhci_pltfm_unregister() could operate host's registers, it will cause problems if the clk is already disabled and unprepared. Fix this issue by moving the clk_disable_unprepare() call to the end of remove function. Signed-off-by: Jisheng Zhang --- drivers/mmc/host/sdhci-of-arasan.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c index 75379cb..50eb8bc 100644 --- a/drivers/mmc/host/sdhci-of-arasan.c +++ b/drivers/mmc/host/sdhci-of-arasan.c @@ -206,13 +206,16 @@ clk_dis_ahb: 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; + ret = sdhci_pltfm_unregister(pdev); + clk_disable_unprepare(sdhci_arasan->clk_ahb); - return sdhci_pltfm_unregister(pdev); + return ret; } static const struct of_device_id sdhci_arasan_of_match[] = { -- 2.7.0