RE: [PATCH 2/2] fsl/pci: The new pci suspend/resume implementation

2014-01-20 Thread dongsheng.w...@freescale.com
Any more comments? :)

Thanks,
-Dongsheng

 -Original Message-
 From: Linuxppc-dev [mailto:linuxppc-dev-
 bounces+b40534=freescale@lists.ozlabs.org] On Behalf Of
 dongsheng.w...@freescale.com
 Sent: Wednesday, January 08, 2014 3:13 PM
 To: Rafael J. Wysocki
 Cc: linuxppc-dev@lists.ozlabs.org; ga...@codeaurora.org; Wood Scott-B07421;
 linux-...@vger.kernel.org; bhelg...@google.com
 Subject: RE: [PATCH 2/2] fsl/pci: The new pci suspend/resume implementation
 
 
 
  -Original Message-
  From: Rafael J. Wysocki [mailto:r...@rjwysocki.net]
  Sent: Wednesday, January 08, 2014 4:42 AM
  To: Wang Dongsheng-B40534
  Cc: bhelg...@google.com; Wood Scott-B07421; ga...@codeaurora.org; Zang Roy-
  R61911; linux-...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org
  Subject: Re: [PATCH 2/2] fsl/pci: The new pci suspend/resume implementation
 
  On Tuesday, January 07, 2014 04:04:08 PM Dongsheng Wang wrote:
   From: Wang Dongsheng dongsheng.w...@freescale.com
  
   The new suspend/resume implementation, send pme turnoff message
   in suspend, and send pme exit message in resume.
  
   Add a PME handler, to response PME  message interrupt.
  
   Change platform_driver-suspend/resume to syscore-suspend/resume.
 
  Can you please first describe the problem you're trying to address?
 
 If we do nothing in suspend/resume, some platform PCIe ip-block can't 
 guarantee
 the link back to L0 state from sleep, then, when we read the EP device will 
 hang.
 Only we send pme turnoff message in pci controller suspend, and send pme exit
 message in resume, the link state will be normal.
 
 When we send pme turnoff message in pci controller suspend, the links will 
 into
 l2/l3
 ready, then, host cannot communicate with ep device, but pci-driver will call
 back EP
 device to save them state. So we need to change 
 platform_driver-suspend/resume
 to
 syscore-suspend/resume.
 
 Thanks,
 -Dongsheng
 ___
 Linuxppc-dev mailing list
 Linuxppc-dev@lists.ozlabs.org
 https://lists.ozlabs.org/listinfo/linuxppc-dev
 

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 2/2] fsl/pci: The new pci suspend/resume implementation

2014-01-07 Thread Dongsheng Wang
From: Wang Dongsheng dongsheng.w...@freescale.com

The new suspend/resume implementation, send pme turnoff message
in suspend, and send pme exit message in resume.

Add a PME handler, to response PME  message interrupt.

Change platform_driver-suspend/resume to syscore-suspend/resume.
pci-driver will call back EP device, to save EP state in
pci_pm_suspend_noirq, so we need to keep the link, until
pci_pm_suspend_noirq finish.

Signed-off-by: Wang Dongsheng dongsheng.w...@freescale.com

diff --git a/arch/powerpc/platforms/85xx/c293pcie.c 
b/arch/powerpc/platforms/85xx/c293pcie.c
index 213d5b8..84476b6 100644
--- a/arch/powerpc/platforms/85xx/c293pcie.c
+++ b/arch/powerpc/platforms/85xx/c293pcie.c
@@ -68,6 +68,7 @@ define_machine(c293_pcie) {
.init_IRQ   = c293_pcie_pic_init,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #endif
.get_irq= mpic_get_irq,
.restart= fsl_rstcr_restart,
diff --git a/arch/powerpc/platforms/85xx/corenet_generic.c 
b/arch/powerpc/platforms/85xx/corenet_generic.c
index fbd871e..aa8b9a3 100644
--- a/arch/powerpc/platforms/85xx/corenet_generic.c
+++ b/arch/powerpc/platforms/85xx/corenet_generic.c
@@ -163,6 +163,7 @@ define_machine(corenet_generic) {
.init_IRQ   = corenet_gen_pic_init,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #endif
.get_irq= mpic_get_coreint_irq,
.restart= fsl_rstcr_restart,
diff --git a/arch/powerpc/platforms/85xx/ge_imp3a.c 
b/arch/powerpc/platforms/85xx/ge_imp3a.c
index e6285ae..11790e0 100644
--- a/arch/powerpc/platforms/85xx/ge_imp3a.c
+++ b/arch/powerpc/platforms/85xx/ge_imp3a.c
@@ -215,6 +215,7 @@ define_machine(ge_imp3a) {
.show_cpuinfo   = ge_imp3a_show_cpuinfo,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #endif
.get_irq= mpic_get_irq,
.restart= fsl_rstcr_restart,
diff --git a/arch/powerpc/platforms/85xx/mpc8536_ds.c 
b/arch/powerpc/platforms/85xx/mpc8536_ds.c
index 15ce4b5..a378ba3 100644
--- a/arch/powerpc/platforms/85xx/mpc8536_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc8536_ds.c
@@ -76,6 +76,7 @@ define_machine(mpc8536_ds) {
.init_IRQ   = mpc8536_ds_pic_init,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #endif
.get_irq= mpic_get_irq,
.restart= fsl_rstcr_restart,
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c 
b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index 7a31a0e..b0753e2 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -385,6 +385,7 @@ define_machine(mpc85xx_cds) {
 #ifdef CONFIG_PCI
.restart= mpc85xx_cds_restart,
.pcibios_fixup_bus  = mpc85xx_cds_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #else
.restart= fsl_rstcr_restart,
 #endif
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c 
b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index 9ebb91e..ffdf021 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -209,6 +209,7 @@ define_machine(mpc8544_ds) {
.init_IRQ   = mpc85xx_ds_pic_init,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #endif
.get_irq= mpic_get_irq,
.restart= fsl_rstcr_restart,
@@ -223,6 +224,7 @@ define_machine(mpc8572_ds) {
.init_IRQ   = mpc85xx_ds_pic_init,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #endif
.get_irq= mpic_get_irq,
.restart= fsl_rstcr_restart,
@@ -237,6 +239,7 @@ define_machine(p2020_ds) {
.init_IRQ   = mpc85xx_ds_pic_init,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 #endif
.get_irq= mpic_get_irq,
.restart= fsl_rstcr_restart,
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c 
b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index a7b3621..6cd3b8a 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -416,6 +416,7 @@ define_machine(mpc8568_mds) {
.progress   = udbg_progress,
 #ifdef CONFIG_PCI
.pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
+   .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
 

Re: [PATCH 2/2] fsl/pci: The new pci suspend/resume implementation

2014-01-07 Thread Rafael J. Wysocki
On Tuesday, January 07, 2014 04:04:08 PM Dongsheng Wang wrote:
 From: Wang Dongsheng dongsheng.w...@freescale.com
 
 The new suspend/resume implementation, send pme turnoff message
 in suspend, and send pme exit message in resume.
 
 Add a PME handler, to response PME  message interrupt.
 
 Change platform_driver-suspend/resume to syscore-suspend/resume.

Can you please first describe the problem you're trying to address?

Thanks!

 pci-driver will call back EP device, to save EP state in
 pci_pm_suspend_noirq, so we need to keep the link, until
 pci_pm_suspend_noirq finish.
 
 Signed-off-by: Wang Dongsheng dongsheng.w...@freescale.com
 
 diff --git a/arch/powerpc/platforms/85xx/c293pcie.c 
 b/arch/powerpc/platforms/85xx/c293pcie.c
 index 213d5b8..84476b6 100644
 --- a/arch/powerpc/platforms/85xx/c293pcie.c
 +++ b/arch/powerpc/platforms/85xx/c293pcie.c
 @@ -68,6 +68,7 @@ define_machine(c293_pcie) {
   .init_IRQ   = c293_pcie_pic_init,
  #ifdef CONFIG_PCI
   .pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #endif
   .get_irq= mpic_get_irq,
   .restart= fsl_rstcr_restart,
 diff --git a/arch/powerpc/platforms/85xx/corenet_generic.c 
 b/arch/powerpc/platforms/85xx/corenet_generic.c
 index fbd871e..aa8b9a3 100644
 --- a/arch/powerpc/platforms/85xx/corenet_generic.c
 +++ b/arch/powerpc/platforms/85xx/corenet_generic.c
 @@ -163,6 +163,7 @@ define_machine(corenet_generic) {
   .init_IRQ   = corenet_gen_pic_init,
  #ifdef CONFIG_PCI
   .pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #endif
   .get_irq= mpic_get_coreint_irq,
   .restart= fsl_rstcr_restart,
 diff --git a/arch/powerpc/platforms/85xx/ge_imp3a.c 
 b/arch/powerpc/platforms/85xx/ge_imp3a.c
 index e6285ae..11790e0 100644
 --- a/arch/powerpc/platforms/85xx/ge_imp3a.c
 +++ b/arch/powerpc/platforms/85xx/ge_imp3a.c
 @@ -215,6 +215,7 @@ define_machine(ge_imp3a) {
   .show_cpuinfo   = ge_imp3a_show_cpuinfo,
  #ifdef CONFIG_PCI
   .pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #endif
   .get_irq= mpic_get_irq,
   .restart= fsl_rstcr_restart,
 diff --git a/arch/powerpc/platforms/85xx/mpc8536_ds.c 
 b/arch/powerpc/platforms/85xx/mpc8536_ds.c
 index 15ce4b5..a378ba3 100644
 --- a/arch/powerpc/platforms/85xx/mpc8536_ds.c
 +++ b/arch/powerpc/platforms/85xx/mpc8536_ds.c
 @@ -76,6 +76,7 @@ define_machine(mpc8536_ds) {
   .init_IRQ   = mpc8536_ds_pic_init,
  #ifdef CONFIG_PCI
   .pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #endif
   .get_irq= mpic_get_irq,
   .restart= fsl_rstcr_restart,
 diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c 
 b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
 index 7a31a0e..b0753e2 100644
 --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
 @@ -385,6 +385,7 @@ define_machine(mpc85xx_cds) {
  #ifdef CONFIG_PCI
   .restart= mpc85xx_cds_restart,
   .pcibios_fixup_bus  = mpc85xx_cds_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #else
   .restart= fsl_rstcr_restart,
  #endif
 diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c 
 b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
 index 9ebb91e..ffdf021 100644
 --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
 @@ -209,6 +209,7 @@ define_machine(mpc8544_ds) {
   .init_IRQ   = mpc85xx_ds_pic_init,
  #ifdef CONFIG_PCI
   .pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #endif
   .get_irq= mpic_get_irq,
   .restart= fsl_rstcr_restart,
 @@ -223,6 +224,7 @@ define_machine(mpc8572_ds) {
   .init_IRQ   = mpc85xx_ds_pic_init,
  #ifdef CONFIG_PCI
   .pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #endif
   .get_irq= mpic_get_irq,
   .restart= fsl_rstcr_restart,
 @@ -237,6 +239,7 @@ define_machine(p2020_ds) {
   .init_IRQ   = mpc85xx_ds_pic_init,
  #ifdef CONFIG_PCI
   .pcibios_fixup_bus  = fsl_pcibios_fixup_bus,
 + .pcibios_fixup_phb  = fsl_pcibios_fixup_phb,
  #endif
   .get_irq= mpic_get_irq,
   .restart= fsl_rstcr_restart,
 diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c 
 b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
 index a7b3621..6cd3b8a 100644
 --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
 +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
 @@ -416,6 +416,7 @@