mfd: intel-lpss: save register context on suspend
Andy Shevchenko
reviewerPATCH v4 1/1 mfd: intel-lpss: save register context on suspend
From: Heikki Krogerus <[email protected]>
All configurations are lost and the registers will have default values when the hardware is suspended and resumed, so saving the private register space context on suspend, and restoring it on resume.
--- drivers/mfd/intel-lpss.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
drivers/mfd/intel-lpss.c +18 -1
@@ -34,6 +34,7 @@#define LPSS_DEV_SIZE 0x200#define LPSS_PRIV_OFFSET 0x200#define LPSS_PRIV_SIZE 0x100 +#define LPSS_PRIV_REG_COUNT (LPSS_PRIV_SIZE / 4)#define LPSS_IDMA64_OFFSET 0x800#define LPSS_IDMA64_SIZE 0x800
@@ -76,6 +77,7 @@ struct intel_lpss {struct mfd_cell *cell;struct device *dev;void __iomem *priv; +u32 priv_ctx[LPSS_PRIV_REG_COUNT ];int devid;u32 caps;u32 active_ltr;
@@ -493,6 +495,16 @@ EXPORT_SYMBOL_GPL(intel_lpss_prepare);int intel_lpss_suspend (struct device *dev) { +struct intel_lpss *lpss =dev_get_drvdata (dev); +unsigned int i; + +/* Save device context */ +for (i =0 ; i <LPSS_PRIV_REG_COUNT ; i++) + lpss->priv_ctx[i] =readl (lpss->priv + i *4 ); + +/* Put the device into reset state */ +writel (0 , lpss->priv +LPSS_PRIV_RESETS ); +return 0 ; }EXPORT_SYMBOL_GPL (intel_lpss_suspend);
@@ -500,8 +512,13 @@ EXPORT_SYMBOL_GPL(intel_lpss_suspend);int intel_lpss_resume (struct device *dev) {struct intel_lpss *lpss =dev_get_drvdata (dev); +unsigned int i; -intel_lpss_init_dev (lpss); +intel_lpss_deassert_reset (lpss); + +/* Restore device context */ +for (i =0 ; i <LPSS_PRIV_REG_COUNT ; i++) +writel (lpss->priv_ctx[i], lpss->priv + i *4 );return 0 ; }
Signature · 1 line
2.8.0.rc3
Lee Jones
AppliedQuoted 11 lines · Andy Shevchenko
From: Heikki Krogerus <[email protected]>
All configurations are lost and the registers will have default values when the hardware is suspended and resumed, so saving the private register space context on suspend, and restoring it on resume.
Fixes 4b45efe85263 (mfd: Add support for Intel Sunrisepoint LPSS devices)Cc [email protected] # v4.3+Signed-off-by Heikki Krogerus <[email protected]>---
You're missing a changelog. I had to go and look at previous submissions to catch up on the history. Please make sure you provide changelogs for >v1 submissions.
Quoted 2 lines
drivers/mfd/intel-lpss.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
Applied, thanks.
Quoted 52 lines
drivers/mfd/intel-lpss.c +18
-1@@ -34,6 +34,7 @@#define LPSS_DEV_SIZE 0x200#define LPSS_PRIV_OFFSET 0x200#define LPSS_PRIV_SIZE 0x100 +#define LPSS_PRIV_REG_COUNT (LPSS_PRIV_SIZE / 4)#define LPSS_IDMA64_OFFSET 0x800#define LPSS_IDMA64_SIZE 0x800@@ -76,6 +77,7 @@ struct intel_lpss {struct mfd_cell *cell;struct device *dev;void __iomem *priv; +u32 priv_ctx[LPSS_PRIV_REG_COUNT ];int devid;u32 caps;u32 active_ltr;@@ -493,6 +495,16 @@ EXPORT_SYMBOL_GPL(intel_lpss_prepare);int intel_lpss_suspend (struct device *dev) { +struct intel_lpss *lpss =dev_get_drvdata (dev); +unsigned int i; + +/* Save device context */ +for (i =0 ; i <LPSS_PRIV_REG_COUNT ; i++) + lpss->priv_ctx[i] =readl (lpss->priv + i *4 ); + +/* Put the device into reset state */ +writel (0 , lpss->priv +LPSS_PRIV_RESETS ); +return 0 ; }EXPORT_SYMBOL_GPL (intel_lpss_suspend);@@ -500,8 +512,13 @@ EXPORT_SYMBOL_GPL(intel_lpss_suspend);int intel_lpss_resume (struct device *dev) {struct intel_lpss *lpss =dev_get_drvdata (dev); +unsigned int i; -intel_lpss_init_dev (lpss); +intel_lpss_deassert_reset (lpss); + +/* Restore device context */ +for (i =0 ; i <LPSS_PRIV_REG_COUNT ; i++) +writel (lpss->priv_ctx[i], lpss->priv + i *4 );return 0 ; }
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Hi Lee,
Quoted 14 lines · Lee Jones
Quoted 11 lines · Andy Shevchenko
From: Heikki Krogerus <[email protected]>
All configurations are lost and the registers will have default values when the hardware is suspended and resumed, so saving the private register space context on suspend, and restoring it on resume.
Fixes 4b45efe85263 (mfd: Add support for Intel Sunrisepoint LPSS devices)Cc [email protected] # v4.3+Signed-off-by Heikki Krogerus <[email protected]>---
Quoted 8 lines
You're missing a changelog. I had to go and look at previous submissions to catch up on the history. Please make sure you provide changelogs for >v1 submissions.
Quoted 2 lines
drivers/mfd/intel-lpss.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)Applied, thanks.
This is still not in your tree?
Thanks,
Signature · 1 line
heikki
Quoted 21 lines · Heikki Krogerus
Hi Lee,
Quoted 18 lines · Lee Jones
Quoted 11 lines · Andy Shevchenko
From: Heikki Krogerus <[email protected]>
All configurations are lost and the registers will have default values when the hardware is suspended and resumed, so saving the private register space context on suspend, and restoring it on resume.
Fixes 4b45efe85263 (mfd: Add support for Intel Sunrisepoint LPSS devices)Cc [email protected] # v4.3+Signed-off-by Heikki Krogerus <[email protected]>---
You're missing a changelog. I had to go and look at previous submissions to catch up on the history. Please make sure you provide changelogs for >v1 submissions.
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
drivers/mfd/intel-lpss.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)Applied, thanks.
This is still not in your tree?
It's applied to my local tree. Will likely push publicly today.
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog