From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932415AbcHPNhu (ORCPT ); Tue, 16 Aug 2016 09:37:50 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:41847 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753645AbcHPNgw (ORCPT ); Tue, 16 Aug 2016 09:36:52 -0400 X-AuditID: cbfec7f4-f796c6d000001486-c3-57b316edcc7a From: Krzysztof Kozlowski To: Michael Turquette , Stephen Boyd , Stephen Warren , Lee Jones , Eric Anholt , Florian Fainelli , Ray Jui , Scott Branden , bcm-kernel-feedback-list@broadcom.com, Krzysztof Kozlowski , Sylwester Nawrocki , Tomasz Figa , Kukjin Kim , Russell King , Mark Brown , linux-clk@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-i2c@vger.kernel.org, alsa-devel@alsa-project.org Cc: Marek Szyprowski , Charles Keepax , Javier Martinez Canillas , a.hajda@samsung.com, Bartlomiej Zolnierkiewicz Subject: [RFC 16/17] Revert "i2c: exynos5: Fix possible ABBA deadlock by keeping I2C clock prepared" Date: Tue, 16 Aug 2016 15:35:13 +0200 Message-id: <1471354514-24224-17-git-send-email-k.kozlowski@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1471354514-24224-1-git-send-email-k.kozlowski@samsung.com> References: <1471354514-24224-1-git-send-email-k.kozlowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRW0hTcQDG/Z9zds7Zcnaclw4aPizqIcjy8vBXw4SozqNBMhLLjnq8pFPZ VDKInJC30ikmqSloKcFyXrYpS9B0W8bKqWPeTcNLonlZomGZSpvW2++7wPfwkajoFeZDpqRn cbJ0Nk2MC7DPhx/HLmx4ayWXKoz+cLp1iAdHrQYEdlS38aC69AMGq+aXcHj4fJKAfQobgHub JgKub7QgcG0lACoX11CoL2jEoGZxnAe3ns3xYNHBDoC27jocVsy0E7B6uBeBhqoeANWmWQJa P12D32q0ODSuF/Lgr8GnGNx8uwTg9/4CDKq690GEL9O+nY8z+fYBnLGNW1HGPvmEYGq/Whyy rBRh3tXOEoxGVYwz2qbHzGrFH5zRKR1WmU4FmG2NH9NRHxXpFi24nMClpeRwsovh9wTJL9cU RKbJ/cGivRfLAy/cSgBJ0lQwvdJ5swTwHehNj8y14SVAQIqoZkDbqzX/hAKh635Uos4WTgXR 2jdNR4EnpcLpxgM14hQotQpoi3kPcbY8qETaNDNGOBmjztJbdh3uZCHF0MquKex4z482D1Ty nMx3+EMjiqMFEXWDNrcVYuVA2ABcVMCLy47PlMclSQP85axUnp2e5B+fIdWA4+d29OD1QKgB UCQQuwrNLhqJiMfmyHOlBkCTqNhTaPTSSkTCBDb3ISfLiJVlp3FyA/AlMfEpYX23/ZaISmKz uFSOy+Rk/1OE5PvkgejByFIlv6d82dxsbd3PSN0UNgQdqjR69PfJ6+8tpGUssE4SPn0lpDM2 2JYY3Xe61rVlSntnQa3HQ790hdQU60JNmrCFuORzbsZddjj1zHjs/fqQfnXnhKhJBmRXl+/u oqITcx79UT9dRm6XxzSVjQbOe0/HhA0/8oowTxS5izF5MhtwHpXJ2b8MneEKtQIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This reverts commit 10ff4c5239a137abfc896ec73ef3d15a0f86a16a. --- drivers/i2c/busses/i2c-exynos5.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/drivers/i2c/busses/i2c-exynos5.c b/drivers/i2c/busses/i2c-exynos5.c index c0e3ada02876..8710052eeb6b 100644 --- a/drivers/i2c/busses/i2c-exynos5.c +++ b/drivers/i2c/busses/i2c-exynos5.c @@ -671,9 +671,7 @@ static int exynos5_i2c_xfer(struct i2c_adapter *adap, return -EIO; } - ret = clk_enable(i2c->clk); - if (ret) - return ret; + clk_prepare_enable(i2c->clk); for (i = 0; i < num; i++, msgs++) { stop = (i == num - 1); @@ -697,7 +695,7 @@ static int exynos5_i2c_xfer(struct i2c_adapter *adap, } out: - clk_disable(i2c->clk); + clk_disable_unprepare(i2c->clk); return ret; } @@ -749,9 +747,7 @@ static int exynos5_i2c_probe(struct platform_device *pdev) return -ENOENT; } - ret = clk_prepare_enable(i2c->clk); - if (ret) - return ret; + clk_prepare_enable(i2c->clk); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); i2c->regs = devm_ioremap_resource(&pdev->dev, mem); @@ -803,10 +799,6 @@ static int exynos5_i2c_probe(struct platform_device *pdev) platform_set_drvdata(pdev, i2c); - clk_disable(i2c->clk); - - return 0; - err_clk: clk_disable_unprepare(i2c->clk); return ret; @@ -818,8 +810,6 @@ static int exynos5_i2c_remove(struct platform_device *pdev) i2c_del_adapter(&i2c->adap); - clk_unprepare(i2c->clk); - return 0; } @@ -831,8 +821,6 @@ static int exynos5_i2c_suspend_noirq(struct device *dev) i2c->suspended = 1; - clk_unprepare(i2c->clk); - return 0; } @@ -842,9 +830,7 @@ static int exynos5_i2c_resume_noirq(struct device *dev) struct exynos5_i2c *i2c = platform_get_drvdata(pdev); int ret = 0; - ret = clk_prepare_enable(i2c->clk); - if (ret) - return ret; + clk_prepare_enable(i2c->clk); ret = exynos5_hsi2c_clock_setup(i2c); if (ret) { @@ -853,7 +839,7 @@ static int exynos5_i2c_resume_noirq(struct device *dev) } exynos5_i2c_init(i2c); - clk_disable(i2c->clk); + clk_disable_unprepare(i2c->clk); i2c->suspended = 0; return 0; -- 1.9.1