All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Oliver Schinagl <oliver-dxLnbx3+1qmEVqv0pETR8A@public.gmane.org>,
	Maxime Ripard
	<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Richard Zhu
	<Hong-Xing.Zhu-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	linux-ide-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
	Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [RFC v3 03/13] ahci-platform: Fix clk enable/disable unbalance on suspend/resume
Date: Sun, 19 Jan 2014 00:48:45 +0100	[thread overview]
Message-ID: <1390088935-7193-4-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1390088935-7193-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

For devices where ahci_platform_data provides suspend() there is an unbalance
in clk enable/disable calls. The suspend path does not disable the clk, but
the resume path enables it. This commit fixes it by always disabling the clk
in the suspend path independent of there being an ahci_platform_data suspend
method.

On all drivers currently using a suspend method, the suspend method always
succeeds, so change its return type to void, to avoid having the introduce
somewhat complex error handling paths.

The disabling of the clock on suspend is a functional change, to ensure this
is ok I've audited all drivers using ahci_platform_data:

arch/arm/mach-davinci/devices-da8xx.c: Does not use a suspend method
arch/arm/mach-spear/spear1340.c: Does not use the clock framework
drivers/ata/ahci_imx.c: Does have suspend and resume pdata methods, these
disable / enable another clock, so likely it is ok to disable / enable the
clock at of-node index 0 as well, I've ordered a wandboard to be able to
test these changes.

Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
 arch/arm/mach-spear/spear1340.c | 6 ++----
 drivers/ata/ahci_imx.c          | 4 +---
 drivers/ata/ahci_platform.c     | 2 +-
 include/linux/ahci_platform.h   | 2 +-
 4 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/arch/arm/mach-spear/spear1340.c b/arch/arm/mach-spear/spear1340.c
index 3fb6834..c4cbbd2 100644
--- a/arch/arm/mach-spear/spear1340.c
+++ b/arch/arm/mach-spear/spear1340.c
@@ -107,14 +107,12 @@ void sata_miphy_exit(struct device *dev)
 	msleep(20);
 }
 
-int sata_suspend(struct device *dev)
+void sata_suspend(struct device *dev)
 {
 	if (dev->power.power_state.event == PM_EVENT_FREEZE)
-		return 0;
+		return;
 
 	sata_miphy_exit(dev);
-
-	return 0;
 }
 
 int sata_resume(struct device *dev)
diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c
index 3e23e99..30568d3 100644
--- a/drivers/ata/ahci_imx.c
+++ b/drivers/ata/ahci_imx.c
@@ -171,7 +171,7 @@ static void imx6q_sata_exit(struct device *dev)
 	clk_disable_unprepare(imxpriv->sata_ref_clk);
 }
 
-static int imx_ahci_suspend(struct device *dev)
+static void imx_ahci_suspend(struct device *dev)
 {
 	struct imx_ahci_priv *imxpriv =  dev_get_drvdata(dev->parent);
 
@@ -185,8 +185,6 @@ static int imx_ahci_suspend(struct device *dev)
 				!IMX6Q_GPR13_SATA_MPLL_CLK_EN);
 		clk_disable_unprepare(imxpriv->sata_ref_clk);
 	}
-
-	return 0;
 }
 
 static int imx_ahci_resume(struct device *dev)
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index 4b231ba..dc1ef73 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -275,7 +275,7 @@ static int ahci_suspend(struct device *dev)
 		return rc;
 
 	if (pdata && pdata->suspend)
-		return pdata->suspend(dev);
+		pdata->suspend(dev);
 
 	if (!IS_ERR(hpriv->clk))
 		clk_disable_unprepare(hpriv->clk);
diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h
index 73a2500..a641cb6 100644
--- a/include/linux/ahci_platform.h
+++ b/include/linux/ahci_platform.h
@@ -23,7 +23,7 @@ struct ata_port_info;
 struct ahci_platform_data {
 	int (*init)(struct device *dev, void __iomem *addr);
 	void (*exit)(struct device *dev);
-	int (*suspend)(struct device *dev);
+	void (*suspend)(struct device *dev);
 	int (*resume)(struct device *dev);
 	const struct ata_port_info *ata_port_info;
 	unsigned int force_port_map;
-- 
1.8.4.2

WARNING: multiple messages have this Message-ID (diff)
From: hdegoede@redhat.com (Hans de Goede)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC v3 03/13] ahci-platform: Fix clk enable/disable unbalance on suspend/resume
Date: Sun, 19 Jan 2014 00:48:45 +0100	[thread overview]
Message-ID: <1390088935-7193-4-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1390088935-7193-1-git-send-email-hdegoede@redhat.com>

For devices where ahci_platform_data provides suspend() there is an unbalance
in clk enable/disable calls. The suspend path does not disable the clk, but
the resume path enables it. This commit fixes it by always disabling the clk
in the suspend path independent of there being an ahci_platform_data suspend
method.

On all drivers currently using a suspend method, the suspend method always
succeeds, so change its return type to void, to avoid having the introduce
somewhat complex error handling paths.

The disabling of the clock on suspend is a functional change, to ensure this
is ok I've audited all drivers using ahci_platform_data:

arch/arm/mach-davinci/devices-da8xx.c: Does not use a suspend method
arch/arm/mach-spear/spear1340.c: Does not use the clock framework
drivers/ata/ahci_imx.c: Does have suspend and resume pdata methods, these
disable / enable another clock, so likely it is ok to disable / enable the
clock at of-node index 0 as well, I've ordered a wandboard to be able to
test these changes.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 arch/arm/mach-spear/spear1340.c | 6 ++----
 drivers/ata/ahci_imx.c          | 4 +---
 drivers/ata/ahci_platform.c     | 2 +-
 include/linux/ahci_platform.h   | 2 +-
 4 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/arch/arm/mach-spear/spear1340.c b/arch/arm/mach-spear/spear1340.c
index 3fb6834..c4cbbd2 100644
--- a/arch/arm/mach-spear/spear1340.c
+++ b/arch/arm/mach-spear/spear1340.c
@@ -107,14 +107,12 @@ void sata_miphy_exit(struct device *dev)
 	msleep(20);
 }
 
-int sata_suspend(struct device *dev)
+void sata_suspend(struct device *dev)
 {
 	if (dev->power.power_state.event == PM_EVENT_FREEZE)
-		return 0;
+		return;
 
 	sata_miphy_exit(dev);
-
-	return 0;
 }
 
 int sata_resume(struct device *dev)
diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c
index 3e23e99..30568d3 100644
--- a/drivers/ata/ahci_imx.c
+++ b/drivers/ata/ahci_imx.c
@@ -171,7 +171,7 @@ static void imx6q_sata_exit(struct device *dev)
 	clk_disable_unprepare(imxpriv->sata_ref_clk);
 }
 
-static int imx_ahci_suspend(struct device *dev)
+static void imx_ahci_suspend(struct device *dev)
 {
 	struct imx_ahci_priv *imxpriv =  dev_get_drvdata(dev->parent);
 
@@ -185,8 +185,6 @@ static int imx_ahci_suspend(struct device *dev)
 				!IMX6Q_GPR13_SATA_MPLL_CLK_EN);
 		clk_disable_unprepare(imxpriv->sata_ref_clk);
 	}
-
-	return 0;
 }
 
 static int imx_ahci_resume(struct device *dev)
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index 4b231ba..dc1ef73 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -275,7 +275,7 @@ static int ahci_suspend(struct device *dev)
 		return rc;
 
 	if (pdata && pdata->suspend)
-		return pdata->suspend(dev);
+		pdata->suspend(dev);
 
 	if (!IS_ERR(hpriv->clk))
 		clk_disable_unprepare(hpriv->clk);
diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h
index 73a2500..a641cb6 100644
--- a/include/linux/ahci_platform.h
+++ b/include/linux/ahci_platform.h
@@ -23,7 +23,7 @@ struct ata_port_info;
 struct ahci_platform_data {
 	int (*init)(struct device *dev, void __iomem *addr);
 	void (*exit)(struct device *dev);
-	int (*suspend)(struct device *dev);
+	void (*suspend)(struct device *dev);
 	int (*resume)(struct device *dev);
 	const struct ata_port_info *ata_port_info;
 	unsigned int force_port_map;
-- 
1.8.4.2

  parent reply	other threads:[~2014-01-18 23:48 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-18 23:48 [RFC v3 00/13] ahci: add sunxi driver and cleanup imx driver Hans de Goede
2014-01-18 23:48 ` Hans de Goede
     [not found] ` <1390088935-7193-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-18 23:48   ` [RFC v3 01/13] libahci: Allow drivers to override start_engine Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19  4:46       ` Tejun Heo
2014-01-19  4:46         ` Tejun Heo
     [not found]         ` <20140119044643.GH3640-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-01-19 18:48           ` Hans de Goede
2014-01-19 18:48             ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 02/13] sata-highbank: Remove unnecessary ahci_platform.h include Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-3-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 11:15       ` Tejun Heo
2014-01-19 11:15         ` Tejun Heo
2014-01-18 23:48   ` Hans de Goede [this message]
2014-01-18 23:48     ` [RFC v3 03/13] ahci-platform: Fix clk enable/disable unbalance on suspend/resume Hans de Goede
     [not found]     ` <1390088935-7193-4-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 11:14       ` Tejun Heo
2014-01-19 11:14         ` Tejun Heo
     [not found]         ` <20140119111412.GA11123-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-01-19 18:47           ` Hans de Goede
2014-01-19 18:47             ` Hans de Goede
     [not found]             ` <52DC1DAA.3010403-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 19:15               ` Tejun Heo
2014-01-19 19:15                 ` Tejun Heo
     [not found]                 ` <20140119191554.GB32165-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2014-01-19 19:52                   ` Hans de Goede
2014-01-19 19:52                     ` Hans de Goede
     [not found]                     ` <52DC2CF5.5080109-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-20 12:26                       ` Tejun Heo
2014-01-20 12:26                         ` Tejun Heo
2014-01-18 23:48   ` [RFC v3 04/13] ahci-platform: Undo pdata->resume on resume failure Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-5-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 11:27       ` Tejun Heo
2014-01-19 11:27         ` Tejun Heo
     [not found]         ` <20140119112737.GC11123-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-01-19 18:40           ` Hans de Goede
2014-01-19 18:40             ` Hans de Goede
     [not found]             ` <52DC1C15.1030107-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 19:13               ` Tejun Heo
2014-01-19 19:13                 ` Tejun Heo
     [not found]                 ` <20140119191349.GA32165-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2014-01-19 19:34                   ` Hans de Goede
2014-01-19 19:34                     ` Hans de Goede
     [not found]                     ` <52DC28DB.7070804-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 19:42                       ` Tejun Heo
2014-01-19 19:42                         ` Tejun Heo
     [not found]                         ` <20140119194226.GE32165-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2014-01-19 19:53                           ` Hans de Goede
2014-01-19 19:53                             ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 05/13] ahci-platform: Pass ahci_host_priv ptr to ahci_platform_data init method Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-6-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 11:30       ` Tejun Heo
2014-01-19 11:30         ` Tejun Heo
     [not found]         ` <20140119113051.GD11123-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-01-19 18:51           ` Hans de Goede
2014-01-19 18:51             ` Hans de Goede
     [not found]             ` <52DC1EC4.3090807-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 19:17               ` Tejun Heo
2014-01-19 19:17                 ` Tejun Heo
     [not found]                 ` <20140119191706.GC32165-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2014-01-19 19:56                   ` Hans de Goede
2014-01-19 19:56                     ` Hans de Goede
     [not found]                     ` <52DC2DD9.7070403-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-20 12:28                       ` Tejun Heo
2014-01-20 12:28                         ` Tejun Heo
2014-01-18 23:48   ` [RFC v3 06/13] ahci-platform: Add support for devices with more then 1 clock Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-7-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 12:38       ` Russell King - ARM Linux
2014-01-19 12:38         ` Russell King - ARM Linux
     [not found]         ` <20140119123854.GP15937-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-01-19 19:20           ` Hans de Goede
2014-01-19 19:20             ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 07/13] ahci-platform: Add support for an optional regulator for sata-target power Hans de Goede
2014-01-18 23:48     ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 08/13] ahci-platform: Allow specifying platform_data through of_device_id Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-9-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 11:38       ` Tejun Heo
2014-01-19 11:38         ` Tejun Heo
2014-01-19 12:30         ` Russell King - ARM Linux
2014-01-19 12:30           ` Russell King - ARM Linux
     [not found]           ` <20140119123055.GO15937-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-01-19 13:19             ` Tejun Heo
2014-01-19 13:19               ` Tejun Heo
     [not found]         ` <20140119113838.GE11123-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-01-19 18:56           ` Hans de Goede
2014-01-19 18:56             ` Hans de Goede
     [not found]             ` <52DC1FF5.80101-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 19:22               ` Tejun Heo
2014-01-19 19:22                 ` Tejun Heo
2014-01-20  8:24     ` Sascha Hauer
2014-01-20  8:24       ` Sascha Hauer
     [not found]       ` <20140120082438.GH16215-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-01-20  8:35         ` Hans de Goede
2014-01-20  8:35           ` Hans de Goede
2014-01-20  9:09           ` Sascha Hauer
2014-01-20  9:09             ` Sascha Hauer
     [not found]             ` <20140120090950.GI16215-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-01-20  9:17               ` Hans de Goede
2014-01-20  9:17                 ` Hans de Goede
2014-01-20  9:57                 ` Sascha Hauer
2014-01-20  9:57                   ` Sascha Hauer
2014-01-18 23:48   ` [RFC v3 09/13] ARM: sunxi: Add support for Allwinner SUNXi SoCs sata to ahci_platform Hans de Goede
2014-01-18 23:48     ` Hans de Goede
2014-01-19 12:22     ` Russell King - ARM Linux
2014-01-19 12:22       ` Russell King - ARM Linux
     [not found]       ` <20140119122216.GM15937-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-01-19 19:07         ` Hans de Goede
2014-01-19 19:07           ` Hans de Goede
2014-01-19 19:56           ` Russell King - ARM Linux
2014-01-19 19:56             ` Russell King - ARM Linux
     [not found]             ` <20140119195642.GU15937-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-01-19 20:01               ` Hans de Goede
2014-01-19 20:01                 ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 10/13] ahci_imx: Adjust for ahci_platform managing the clocks Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-11-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 12:41       ` Russell King - ARM Linux
2014-01-19 12:41         ` Russell King - ARM Linux
     [not found]         ` <20140119124134.GQ15937-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-01-19 19:30           ` Hans de Goede
2014-01-19 19:30             ` Hans de Goede
     [not found]             ` <52DC27DD.5030309-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 19:32               ` Russell King - ARM Linux
2014-01-19 19:32                 ` Russell King - ARM Linux
     [not found]                 ` <20140119193258.GT15937-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-01-19 19:38                   ` Hans de Goede
2014-01-19 19:38                     ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 11/13] ahci-imx: Don't create a nested platform device from probe Hans de Goede
2014-01-18 23:48     ` Hans de Goede
     [not found]     ` <1390088935-7193-12-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-19 12:25       ` Russell King - ARM Linux
2014-01-19 12:25         ` Russell King - ARM Linux
     [not found]         ` <20140119122540.GN15937-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-01-19 19:08           ` Hans de Goede
2014-01-19 19:08             ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 12/13] ARM: sun4i: dts: Add ahci / sata support Hans de Goede
2014-01-18 23:48     ` Hans de Goede
2014-01-18 23:48   ` [RFC v3 13/13] ARM: sun7i: " Hans de Goede
2014-01-18 23:48     ` Hans de Goede
2014-01-19  9:52   ` [RFC v3 00/13] ahci: add sunxi driver and cleanup imx driver Russell King - ARM Linux
2014-01-19  9:52     ` Russell King - ARM Linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1390088935-7193-4-git-send-email-hdegoede@redhat.com \
    --to=hdegoede-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=Hong-Xing.Zhu-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-ide-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=oliver-dxLnbx3+1qmEVqv0pETR8A@public.gmane.org \
    --cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.