linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Russell King <rmk+kernel@armlinux.org.uk>
Subject: [PATCH 4.4 48/93] ARM: sa1111: fix pcmcia suspend/resume
Date: Thu,  6 Oct 2016 10:29:18 +0200	[thread overview]
Message-ID: <20161006074733.172955470@linuxfoundation.org> (raw)
In-Reply-To: <20161006074731.150212126@linuxfoundation.org>

4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Russell King <rmk+kernel@armlinux.org.uk>

commit 06dfe5cc0cc684e735cb0232fdb756d30780b05d upstream.

SA1111 PCMCIA was broken when PCMCIA switched to using dev_pm_ops for
the PCMCIA socket class.  PCMCIA used to handle suspend/resume via the
socket hosting device, which happened at normal device suspend/resume
time.

However, the referenced commit changed this: much of the resume now
happens much earlier, in the noirq resume handler of dev_pm_ops.

However, on SA1111, the PCMCIA device is not accessible as the SA1111
has not been resumed at _noirq time.  It's slightly worse than that,
because the SA1111 has already been put to sleep at _noirq time, so
suspend doesn't work properly.

Fix this by converting the core SA1111 code to use dev_pm_ops as well,
and performing its own suspend/resume at noirq time.

This fixes these errors in the kernel log:

pcmcia_socket pcmcia_socket0: time out after reset
pcmcia_socket pcmcia_socket1: time out after reset

and the resulting lack of PCMCIA cards after a S2RAM cycle.

Fixes: d7646f7632549 ("pcmcia: use dev_pm_ops for class pcmcia_socket_class")
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/common/sa1111.c |   22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -869,9 +869,9 @@ struct sa1111_save_data {
 
 #ifdef CONFIG_PM
 
-static int sa1111_suspend(struct platform_device *dev, pm_message_t state)
+static int sa1111_suspend_noirq(struct device *dev)
 {
-	struct sa1111 *sachip = platform_get_drvdata(dev);
+	struct sa1111 *sachip = dev_get_drvdata(dev);
 	struct sa1111_save_data *save;
 	unsigned long flags;
 	unsigned int val;
@@ -934,9 +934,9 @@ static int sa1111_suspend(struct platfor
  *	restored by their respective drivers, and must be called
  *	via LDM after this function.
  */
-static int sa1111_resume(struct platform_device *dev)
+static int sa1111_resume_noirq(struct device *dev)
 {
-	struct sa1111 *sachip = platform_get_drvdata(dev);
+	struct sa1111 *sachip = dev_get_drvdata(dev);
 	struct sa1111_save_data *save;
 	unsigned long flags, id;
 	void __iomem *base;
@@ -952,7 +952,7 @@ static int sa1111_resume(struct platform
 	id = sa1111_readl(sachip->base + SA1111_SKID);
 	if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
 		__sa1111_remove(sachip);
-		platform_set_drvdata(dev, NULL);
+		dev_set_drvdata(dev, NULL);
 		kfree(save);
 		return 0;
 	}
@@ -1003,8 +1003,8 @@ static int sa1111_resume(struct platform
 }
 
 #else
-#define sa1111_suspend NULL
-#define sa1111_resume  NULL
+#define sa1111_suspend_noirq NULL
+#define sa1111_resume_noirq  NULL
 #endif
 
 static int sa1111_probe(struct platform_device *pdev)
@@ -1038,6 +1038,11 @@ static int sa1111_remove(struct platform
 	return 0;
 }
 
+static struct dev_pm_ops sa1111_pm_ops = {
+	.suspend_noirq = sa1111_suspend_noirq,
+	.resume_noirq = sa1111_resume_noirq,
+};
+
 /*
  *	Not sure if this should be on the system bus or not yet.
  *	We really want some way to register a system device at
@@ -1050,10 +1055,9 @@ static int sa1111_remove(struct platform
 static struct platform_driver sa1111_device_driver = {
 	.probe		= sa1111_probe,
 	.remove		= sa1111_remove,
-	.suspend	= sa1111_suspend,
-	.resume		= sa1111_resume,
 	.driver		= {
 		.name	= "sa1111",
+		.pm	= &sa1111_pm_ops,
 	},
 };
 

  parent reply	other threads:[~2016-10-06  8:56 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20161006085617uscas1p138247ef1e0fc1f67a8925f522d0aed06@uscas1p1.samsung.com>
2016-10-06  8:28 ` [PATCH 4.4 00/93] 4.4.24-stable review Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 01/93] cpuset: handle race between CPU hotplug and cpuset_hotplug_work Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 02/93] mtd: nand: davinci: Reinitialize the HW ECC engine in 4bit hwctl Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 03/93] mm,ksm: fix endless looping in allocating memory when ksm enable Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 04/93] can: dev: fix deadlock reported after bus-off Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 05/93] x86/init: Fix cr4_init_shadow() on CR4-less machines Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 06/93] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we dont have CPUID Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 07/93] drm/nouveau/fifo/nv04: avoid ramht race against cookie insertion Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 08/93] drm/radeon/si/dpm: add workaround for for Jet parts Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 09/93] ARM: 8616/1: dt: Respect property size when parsing CPUs Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 10/93] ARM: 8617/1: dma: fix dma_max_pfn() Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 11/93] usb: musb: Fix DMA desired mode for Mentor DMA engine Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 12/93] usb: musb: fix DMA for host mode Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 13/93] iwlwifi: mvm: fix a few firmware capability checks Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 14/93] perf/core: Fix pmu::filter_match for SW-led groups Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 15/93] i40e: avoid null pointer dereference Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 16/93] pinctrl: uniphier: fix .pin_dbg_show() callback Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 17/93] pinctrl: Flag strict is a field in struct pinmux_ops Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 18/93] drivers/perf: arm_pmu: Fix leak in error path Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 19/93] mmc: pxamci: fix potential oops Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 20/93] tools/vm/slabinfo: fix an unintentional printf Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 21/93] ipvs: fix bind to link-local mcast IPv6 address in backup Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 22/93] nvmem: Declare nvmem_cell_read() consistently Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 23/93] hwmon: (adt7411) set bit 3 in CFG1 register Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 24/93] spi: sh-msiof: Avoid invalid clock generator parameters Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 25/93] iwlwifi: pcie: fix access to scratch buffer Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 26/93] iwlwifi: mvm: dont use ret when not initialised Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 27/93] ceph: fix race during filling readdir cache Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 28/93] usb: gadget: fsl_qe_udc: signedness bug in qe_get_frame() Greg Kroah-Hartman
2016-10-06  8:28   ` [PATCH 4.4 29/93] gpio: sa1100: fix irq probing for ucb1x00 Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 30/93] irqchip/gicv3: Silence noisy DEBUG_PER_CPU_MAPS warning Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 31/93] ARM: 8618/1: decompressor: reset ttbcr fields to use TTBR0 on ARMv7 Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 32/93] arm64: debug: avoid resetting stepping state machine when TIF_SINGLESTEP Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 33/93] MIPS: uprobes: remove incorrect set_orig_insn Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 34/93] MIPS: fix uretprobe implementation Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 35/93] MIPS: Malta: Fix IOCU disable switch read for MIPS64 Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 36/93] MIPS: uprobes: fix use of uninitialised variable Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 37/93] printk: fix parsing of "brl=" option Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 38/93] tpm: fix byte-order for the value read by tpm2_get_tpm_pt Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 39/93] regulator: qcom_spmi: Add support for S4 supply on pm8941 Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 40/93] regulator: qcom_spmi: Add support for get_mode/set_mode on switches Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 41/93] regulator: qcom_spmi: Update mvs1/mvs2 switches on pm8941 Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 42/93] regulator: qcom_smd: Fix voltage ranges for pm8x41 Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 44/93] ARM: sa1100: register clocks early Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 45/93] ARM: sa1100: fix 3.6864MHz clock Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 46/93] ARM: sa1100: clear reset status prior to reboot Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 47/93] ARM: shmobile: fix regulator quirk for Gen2 Greg Kroah-Hartman
2016-10-06  8:29   ` Greg Kroah-Hartman [this message]
2016-10-06  8:29   ` [PATCH 4.4 49/93] hwrng: omap - Fix assumption that runtime_get_sync will always succeed Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 50/93] blk-mq: actually hook up defer list when running requests Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 51/93] pstore: drop file opened reference count Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 52/93] tile: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 53/93] iwlmvm: mvm: set correct state in smart-fifo configuration Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 55/93] [media] em28xx-i2c: rt_mutex_trylock() returns zero on failure Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 56/93] [media] gspca: avoid unused variable warnings Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 57/93] ath9k: Fix programming of minCCA power threshold Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 58/93] avr32: off by one in at32_init_pio() Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 59/93] fnic: pci_dma_mapping_error() doesnt return an error code Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 60/93] dmaengine: at_xdmac: fix debug string Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 61/93] svc: Avoid garbage replies when pc_func() returns rpc_drop_reply Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 62/93] NFS: Dont drop CB requests with invalid principals Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 63/93] pNFS/files: Fix layoutcommit after a commit to DS Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 64/93] pNFS/flexfiles: " Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 65/93] ASoC: Intel: Skylake: Fix error return code in skl_probe() Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 66/93] brcmfmac: Fix glob_skb leak in brcmf_sdiod_recv_chain Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 67/93] brcmsmac: Free packet if dma_mapping_error() fails in dma_rxfill Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 68/93] brcmsmac: Initialize power in brcms_c_stf_ss_algo_channel_get() Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 69/93] powerpc/prom: Fix sub-processor option passed to ibm, client-architecture-support Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 70/93] sysctl: handle error writing UINT_MAX to u32 fields Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 71/93] ASoC: omap-mcpdm: Fix irq resource handling Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 72/93] kernel/fork: fix CLONE_CHILD_CLEARTID regression in nscd Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 73/93] dmaengine: at_xdmac: fix to pass correct device identity to free_irq() Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 75/93] IB/ipoib: Fix memory corruption in ipoib cm mode connect flow Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 76/93] IB/core: Fix use after free in send_leave function Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 77/93] IB/ipoib: Dont allow MC joins during light MC flush Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 78/93] IB/mlx4: Fix incorrect MC join state bit-masking on SR-IOV Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 79/93] IB/mlx4: Fix code indentation in QP1 MAD flow Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 80/93] IB/mlx4: Use correct subnet-prefix in QP1 mads under SR-IOV Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 82/93] aio: mark AIO pseudo-fs noexec Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 83/93] clk: xgene: Add missing parenthesis when clearing divider value Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 84/93] dm log writes: fix bug with too large bios Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 85/93] USB: serial: cp210x: fix hardware flow-control disable Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 86/93] usb: misc: legousbtower: Fix NULL pointer deference Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 87/93] Staging: fbtft: Fix bug in fbtft-core Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 88/93] USB: serial: cp210x: Add ID for a Juniper console Greg Kroah-Hartman
2016-10-06  8:29   ` [PATCH 4.4 89/93] Revert "usbtmc: convert to devm_kzalloc" Greg Kroah-Hartman
2016-10-06  8:30   ` [PATCH 4.4 90/93] ALSA: hda - Adding one more ALC255 pin definition for headset problem Greg Kroah-Hartman
2016-10-06  8:30   ` [PATCH 4.4 91/93] ACPICA: acpi_get_sleep_type_data: Reduce warnings Greg Kroah-Hartman
2016-10-06  8:30   ` [PATCH 4.4 92/93] ALSA: hda - Fix headset mic detection problem for several Dell laptops Greg Kroah-Hartman
2016-10-06  8:30   ` [PATCH 4.4 93/93] ALSA: hda - Add the top speaker pin config for HP Spectre x360 Greg Kroah-Hartman
2016-10-06 18:42   ` [PATCH 4.4 00/93] 4.4.24-stable review Guenter Roeck
2016-10-06 19:58   ` Shuah Khan
     [not found]   ` <57f7819c.d4301c0a.965e6.cd11@mx.google.com>
2016-10-07 13:02     ` Greg Kroah-Hartman
2016-10-08  9:53       ` Kevin Hilman

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=20161006074733.172955470@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rmk+kernel@armlinux.org.uk \
    --cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).