* [PATCH SDK1.2 0/3] pci patches description
@ 2011-12-21 7:10 Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Jia Hongtao @ 2011-12-21 7:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: B11780, b38951
This serials of patches include two parts.
First, we unify the pci initialization code using platform driver
mechanism. Then, we add PM support for deep sleep stat to save and
restore inbound/outbound window registers.
These patches are against 'next' branch on:
http://git.kernel.org/?p=linux/kernel/git/galak/powerpc.git
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code
2011-12-21 7:10 [PATCH SDK1.2 0/3] pci patches description Jia Hongtao
@ 2011-12-21 7:10 ` Jia Hongtao
2012-01-10 7:31 ` Jia Hongtao-B38951
2011-12-21 7:10 ` [PATCH SDK1.2 2/3] powerpc/fsl-pci: Only scan PCI bus if configured as a host Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 3/3] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
2 siblings, 1 reply; 8+ messages in thread
From: Jia Hongtao @ 2011-12-21 7:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: B11780, b38951
We unified the Freescale pci/pcie initialization by changing the fsl_pci
to a platform driver.
In previous version pci/pcie initialization is in platform code which
Initialize pci bridge base on EP/RC or host/agent settings.
Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/platforms/85xx/p1022_ds.c | 39 +++++++----------------
arch/powerpc/sysdev/fsl_pci.c | 53 ++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+), 27 deletions(-)
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platforms/85xx/p1022_ds.c
index 2bf4342..41de2c1 100644
--- a/arch/powerpc/platforms/85xx/p1022_ds.c
+++ b/arch/powerpc/platforms/85xx/p1022_ds.c
@@ -277,32 +277,9 @@ void __init mpc85xx_smp_init(void);
*/
static void __init p1022_ds_setup_arch(void)
{
-#ifdef CONFIG_PCI
- struct device_node *np;
-#endif
- dma_addr_t max = 0xffffffff;
-
if (ppc_md.progress)
ppc_md.progress("p1022_ds_setup_arch()", 0);
-#ifdef CONFIG_PCI
- for_each_compatible_node(np, "pci", "fsl,p1022-pcie") {
- struct resource rsrc;
- struct pci_controller *hose;
-
- of_address_to_resource(np, 0, &rsrc);
-
- if ((rsrc.start & 0xfffff) == 0x8000)
- fsl_add_bridge(np, 1);
- else
- fsl_add_bridge(np, 0);
-
- hose = pci_find_hose_for_OF_device(np);
- max = min(max, hose->dma_window_base_cur +
- hose->dma_window_size);
- }
-#endif
-
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
diu_ops.get_pixel_format = p1022ds_get_pixel_format;
diu_ops.set_gamma_table = p1022ds_set_gamma_table;
@@ -316,11 +293,8 @@ static void __init p1022_ds_setup_arch(void)
#endif
#ifdef CONFIG_SWIOTLB
- if (memblock_end_of_DRAM() > max) {
+ if (memblock_end_of_DRAM() > 0xffffffff)
ppc_swiotlb_enable = 1;
- set_pci_dma_ops(&swiotlb_dma_ops);
- ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
- }
#endif
pr_info("Freescale P1022 DS reference board\n");
@@ -339,6 +313,17 @@ static int __init p1022_ds_publish_devices(void)
}
machine_device_initcall(p1022_ds, p1022_ds_publish_devices);
+static struct of_device_id __initdata p1022_pci_ids[] = {
+ { .compatible = "fsl,p1022-pcie", },
+ {},
+};
+
+static int __init p1022_ds_publish_pci_device(void)
+{
+ return of_platform_bus_probe(NULL, p1022_pci_ids, NULL);
+}
+machine_arch_initcall(p1022_ds, p1022_ds_publish_pci_device);
+
machine_arch_initcall(p1022_ds, swiotlb_setup_bus_notifier);
/*
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 4ce547e..a0f305d 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -712,3 +712,56 @@ u64 fsl_pci_immrbar_base(struct pci_controller *hose)
return 0;
}
+
+static const struct of_device_id pci_ids[] = {
+ { .compatible = "fsl,mpc8540-pci", },
+ { .compatible = "fsl,mpc8548-pcie", },
+ { .compatible = "fsl,p1022-pcie", },
+ {},
+};
+
+static int __devinit fsl_pci_probe(struct platform_device *pdev)
+{
+ struct pci_controller *hose;
+
+ if (of_match_node(pci_ids, pdev->dev.of_node)) {
+ struct resource rsrc;
+ of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
+ if ((rsrc.start & 0xfffff) == 8000)
+ fsl_add_bridge(pdev->dev.of_node, 1);
+ else
+ fsl_add_bridge(pdev->dev.of_node, 0);
+
+#ifdef CONFIG_SWIOTLB
+ hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
+ /*
+ * if we couldn't map all of DRAM via the dma windows
+ * we need SWIOTLB to handle buffers located outside of
+ * dma capable memory region
+ */
+ if (memblock_end_of_DRAM() > hose->dma_window_base_cur
+ + hose->dma_window_size) {
+ ppc_swiotlb_enable = 1;
+ set_pci_dma_ops(&swiotlb_dma_ops);
+ ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
+ }
+#endif
+
+ }
+
+ return 0;
+}
+
+static struct platform_driver fsl_pci_driver = {
+ .driver = {
+ .name = "fsl-pci",
+ .of_match_table = pci_ids,
+ },
+ .probe = fsl_pci_probe,
+};
+
+static int __init fsl_pci_init(void)
+{
+ return platform_driver_register(&fsl_pci_driver);
+}
+arch_initcall(fsl_pci_init);
--
1.7.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH SDK1.2 2/3] powerpc/fsl-pci: Only scan PCI bus if configured as a host
2011-12-21 7:10 [PATCH SDK1.2 0/3] pci patches description Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
@ 2011-12-21 7:10 ` Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 3/3] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
2 siblings, 0 replies; 8+ messages in thread
From: Jia Hongtao @ 2011-12-21 7:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: B11780, b38951
If we're an agent/end-point or fsl_add_bridge doesn't succeed due to some
resource failure we should not scan the PCI bus. We change fsl_add_bridge()
to return -ENODEV in the case we're an agent/end-point.
Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/sysdev/fsl_pci.c | 34 +++++++++++++++++++---------------
1 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index a0f305d..e318e9d 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -370,7 +370,7 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
iounmap(hose->cfg_data);
iounmap(hose->cfg_addr);
pcibios_free_controller(hose);
- return 0;
+ return -ENODEV;
}
setup_pci_cmd(hose);
@@ -723,29 +723,33 @@ static const struct of_device_id pci_ids[] = {
static int __devinit fsl_pci_probe(struct platform_device *pdev)
{
struct pci_controller *hose;
+ int ret;
if (of_match_node(pci_ids, pdev->dev.of_node)) {
struct resource rsrc;
of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
if ((rsrc.start & 0xfffff) == 8000)
- fsl_add_bridge(pdev->dev.of_node, 1);
+ ret = fsl_add_bridge(pdev->dev.of_node, 1);
else
- fsl_add_bridge(pdev->dev.of_node, 0);
+ ret = fsl_add_bridge(pdev->dev.of_node, 0);
+ if (ret == 0) {
#ifdef CONFIG_SWIOTLB
- hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
- /*
- * if we couldn't map all of DRAM via the dma windows
- * we need SWIOTLB to handle buffers located outside of
- * dma capable memory region
- */
- if (memblock_end_of_DRAM() > hose->dma_window_base_cur
- + hose->dma_window_size) {
- ppc_swiotlb_enable = 1;
- set_pci_dma_ops(&swiotlb_dma_ops);
- ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
- }
+ hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
+ /*
+ * if we couldn't map all of DRAM via the dma windows
+ * we need SWIOTLB to handle buffers located outside of
+ * dma capable memory region
+ */
+ if (memblock_end_of_DRAM() > hose->dma_window_base_cur
+ + hose->dma_window_size) {
+ ppc_swiotlb_enable = 1;
+ set_pci_dma_ops(&swiotlb_dma_ops);
+ ppc_md.pci_dma_dev_setup =
+ pci_dma_dev_setup_swiotlb;
+ }
#endif
+ }
}
--
1.7.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH SDK1.2 3/3] powerpc/fsl-pci: Add pci inbound/outbound PM support
2011-12-21 7:10 [PATCH SDK1.2 0/3] pci patches description Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 2/3] powerpc/fsl-pci: Only scan PCI bus if configured as a host Jia Hongtao
@ 2011-12-21 7:10 ` Jia Hongtao
2012-03-16 19:20 ` Kumar Gala
2 siblings, 1 reply; 8+ messages in thread
From: Jia Hongtao @ 2011-12-21 7:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: B11780, b38951
Power supply for PCI inbound/outbound window registers is off when system
go to deep-sleep state. We save the values of registers before suspend
and restore to registers after resume.
Signed-off-by: Jiang Yutang <b14898@freescale.com>
Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/include/asm/pci-bridge.h | 6 ++
arch/powerpc/sysdev/fsl_pci.c | 108 +++++++++++++++++++++++++++++++++
2 files changed, 114 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
index 882b6aa..c99b40e 100644
--- a/arch/powerpc/include/asm/pci-bridge.h
+++ b/arch/powerpc/include/asm/pci-bridge.h
@@ -92,6 +92,12 @@ struct pci_controller {
void *private_data;
#endif /* CONFIG_PPC64 */
+
+#ifdef CONFIG_SUSPEND
+ struct pci_outbound_window_regs __iomem *pci_pow;
+ struct pci_inbound_window_regs __iomem *pci_piw;
+ void *saved_regs;
+#endif
};
/* These are used for config access before all the PCI probing
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index e318e9d..046866f 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -756,12 +756,120 @@ static int __devinit fsl_pci_probe(struct platform_device *pdev)
return 0;
}
+#ifdef CONFIG_SUSPEND
+
+#define PCI_POW_NUMBER 5
+#define PCI_POW_BIAS 0xc00
+#define PCI_PIW_NUMBER 3
+#define PCI_PIW_BIAS 0xda0
+
+static int fsl_pci_suspend(struct platform_device *dev, pm_message_t state)
+{
+ struct pci_controller *hose;
+ struct pci_outbound_window_regs *pci_saved_pow;
+ struct pci_inbound_window_regs *pci_saved_piw;
+ struct resource pci_rsrc;
+ unsigned int i;
+
+ hose = pci_find_hose_for_OF_device(dev->dev.of_node);
+ of_address_to_resource(dev->dev.of_node, 0, &pci_rsrc);
+
+ hose->pci_pow = ioremap(pci_rsrc.start + PCI_POW_BIAS,
+ sizeof(struct pci_outbound_window_regs)
+ * PCI_POW_NUMBER);
+ if (!hose->pci_pow) {
+ pr_err("pci_pow ioremap error!\n");
+ return -ENOMEM;
+ }
+
+ hose->pci_piw = ioremap(pci_rsrc.start + PCI_PIW_BIAS,
+ sizeof(struct pci_inbound_window_regs)
+ * PCI_PIW_NUMBER);
+ if (!hose->pci_piw) {
+ pr_err("pci_piw ioremap error!\n");
+ goto err1;
+ }
+
+ hose->saved_regs = kmalloc(
+ sizeof(struct pci_outbound_window_regs) * PCI_POW_NUMBER +
+ sizeof(struct pci_inbound_window_regs) * PCI_PIW_NUMBER,
+ GFP_KERNEL);
+ if (!hose->saved_regs)
+ goto err2;
+
+ pci_saved_pow = hose->saved_regs;
+ for (i = 0; i < PCI_POW_NUMBER; i++) {
+ pci_saved_pow[i].potar = in_be32(&hose->pci_pow[i].potar);
+ pci_saved_pow[i].potear = in_be32(&hose->pci_pow[i].potear);
+ pci_saved_pow[i].powbar = in_be32(&hose->pci_pow[i].powbar);
+ pci_saved_pow[i].powar = in_be32(&hose->pci_pow[i].powar);
+ }
+
+ pci_saved_piw = (struct pci_inbound_window_regs *)
+ (pci_saved_pow + PCI_POW_NUMBER);
+ for (i = 0; i < PCI_PIW_NUMBER; i++) {
+ pci_saved_piw[i].pitar = in_be32(&hose->pci_piw[i].pitar);
+ pci_saved_piw[i].piwbar = in_be32(&hose->pci_piw[i].piwbar);
+ pci_saved_piw[i].piwbear = in_be32(&hose->pci_piw[i].piwbear);
+ pci_saved_piw[i].piwar = in_be32(&hose->pci_piw[i].piwar);
+ }
+
+ return 0;
+
+err2:
+ iounmap(hose->pci_piw);
+
+err1:
+ iounmap(hose->pci_pow);
+ return -ENOMEM;
+}
+
+static int fsl_pci_resume(struct platform_device *dev)
+{
+ struct pci_controller *hose;
+ struct pci_outbound_window_regs *pci_saved_pow;
+ struct pci_inbound_window_regs *pci_saved_piw;
+ unsigned int i;
+
+ hose = pci_find_hose_for_OF_device(dev->dev.of_node);
+ if (!hose->pci_pow || !hose->pci_piw || !hose->saved_regs)
+ return 0;
+
+ pci_saved_pow = hose->saved_regs;
+ for (i = 0; i < PCI_POW_NUMBER; i++) {
+ out_be32(&hose->pci_pow[i].potar, pci_saved_pow[i].potar);
+ out_be32(&hose->pci_pow[i].potear, pci_saved_pow[i].potear);
+ out_be32(&hose->pci_pow[i].powbar, pci_saved_pow[i].powbar);
+ out_be32(&hose->pci_pow[i].powar, pci_saved_pow[i].powar);
+ }
+ iounmap(hose->pci_pow);
+
+ pci_saved_piw = (struct pci_inbound_window_regs *)
+ (pci_saved_pow + PCI_POW_NUMBER);
+ for (i = 0; i < PCI_PIW_NUMBER; i++) {
+ out_be32(&hose->pci_piw[i].pitar, pci_saved_piw[i].pitar);
+ out_be32(&hose->pci_piw[i].piwbar, pci_saved_piw[i].piwbar);
+ out_be32(&hose->pci_piw[i].piwbear, pci_saved_piw[i].piwbear);
+ out_be32(&hose->pci_piw[i].piwar, pci_saved_piw[i].piwar);
+ }
+ iounmap(hose->pci_piw);
+ kfree(hose->saved_regs);
+ hose->saved_regs = NULL;
+
+ return 0;
+}
+#endif
+
static struct platform_driver fsl_pci_driver = {
.driver = {
.name = "fsl-pci",
.of_match_table = pci_ids,
},
.probe = fsl_pci_probe,
+#ifdef CONFIG_SUSPEND
+ .suspend = fsl_pci_suspend,
+ .resume = fsl_pci_resume,
+#endif
};
static int __init fsl_pci_init(void)
--
1.7.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* RE: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code
2011-12-21 7:10 ` [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
@ 2012-01-10 7:31 ` Jia Hongtao-B38951
2012-02-10 2:27 ` Jia Hongtao-B38951
0 siblings, 1 reply; 8+ messages in thread
From: Jia Hongtao-B38951 @ 2012-01-10 7:31 UTC (permalink / raw)
To: Gala Kumar-B11780
Cc: linuxppc-dev@lists.ozlabs.org, Li Yang-R58472, Jia Hongtao-B38951
Hi Kumar,
Do you have any idea on this series of patches?
Looking forward to your answer.
Thanks.
--Jia Hongtao.
-----Original Message-----
From: Jia Hongtao-B38951=20
Sent: Wednesday, December 21, 2011 3:11 PM
To: linuxppc-dev@lists.ozlabs.org
Cc: Li Yang-R58472; Gala Kumar-B11780; Jia Hongtao-B38951
Subject: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization =
code
We unified the Freescale pci/pcie initialization by changing the fsl_pci to=
a platform driver.
In previous version pci/pcie initialization is in platform code which Initi=
alize pci bridge base on EP/RC or host/agent settings.
Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/platforms/85xx/p1022_ds.c | 39 +++++++----------------
arch/powerpc/sysdev/fsl_pci.c | 53 ++++++++++++++++++++++++++++=
++++
2 files changed, 65 insertions(+), 27 deletions(-)
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platform=
s/85xx/p1022_ds.c
index 2bf4342..41de2c1 100644
--- a/arch/powerpc/platforms/85xx/p1022_ds.c
+++ b/arch/powerpc/platforms/85xx/p1022_ds.c
@@ -277,32 +277,9 @@ void __init mpc85xx_smp_init(void);
*/
static void __init p1022_ds_setup_arch(void) { -#ifdef CONFIG_PCI
- struct device_node *np;
-#endif
- dma_addr_t max =3D 0xffffffff;
-
if (ppc_md.progress)
ppc_md.progress("p1022_ds_setup_arch()", 0);
=20
-#ifdef CONFIG_PCI
- for_each_compatible_node(np, "pci", "fsl,p1022-pcie") {
- struct resource rsrc;
- struct pci_controller *hose;
-
- of_address_to_resource(np, 0, &rsrc);
-
- if ((rsrc.start & 0xfffff) =3D=3D 0x8000)
- fsl_add_bridge(np, 1);
- else
- fsl_add_bridge(np, 0);
-
- hose =3D pci_find_hose_for_OF_device(np);
- max =3D min(max, hose->dma_window_base_cur +
- hose->dma_window_size);
- }
-#endif
-
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
diu_ops.get_pixel_format =3D p1022ds_get_pixel_format;
diu_ops.set_gamma_table =3D p1022ds_set_gamma_table;
@@ -316,11 +293,8 @@ static void __init p1022_ds_setup_arch(void) #endif
=20
#ifdef CONFIG_SWIOTLB
- if (memblock_end_of_DRAM() > max) {
+ if (memblock_end_of_DRAM() > 0xffffffff)
ppc_swiotlb_enable =3D 1;
- set_pci_dma_ops(&swiotlb_dma_ops);
- ppc_md.pci_dma_dev_setup =3D pci_dma_dev_setup_swiotlb;
- }
#endif
=20
pr_info("Freescale P1022 DS reference board\n"); @@ -339,6 +313,17 @@ sta=
tic int __init p1022_ds_publish_devices(void) } machine_device_initcall(p=
1022_ds, p1022_ds_publish_devices);
=20
+static struct of_device_id __initdata p1022_pci_ids[] =3D {
+ { .compatible =3D "fsl,p1022-pcie", },
+ {},
+};
+
+static int __init p1022_ds_publish_pci_device(void) {
+ return of_platform_bus_probe(NULL, p1022_pci_ids, NULL); }=20
+machine_arch_initcall(p1022_ds, p1022_ds_publish_pci_device);
+
machine_arch_initcall(p1022_ds, swiotlb_setup_bus_notifier);
=20
/*
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c =
index 4ce547e..a0f305d 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -712,3 +712,56 @@ u64 fsl_pci_immrbar_base(struct pci_controller *hose)
=20
return 0;
}
+
+static const struct of_device_id pci_ids[] =3D {
+ { .compatible =3D "fsl,mpc8540-pci", },
+ { .compatible =3D "fsl,mpc8548-pcie", },
+ { .compatible =3D "fsl,p1022-pcie", },
+ {},
+};
+
+static int __devinit fsl_pci_probe(struct platform_device *pdev) {
+ struct pci_controller *hose;
+
+ if (of_match_node(pci_ids, pdev->dev.of_node)) {
+ struct resource rsrc;
+ of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
+ if ((rsrc.start & 0xfffff) =3D=3D 8000)
+ fsl_add_bridge(pdev->dev.of_node, 1);
+ else
+ fsl_add_bridge(pdev->dev.of_node, 0);
+
+#ifdef CONFIG_SWIOTLB
+ hose =3D pci_find_hose_for_OF_device(pdev->dev.of_node);
+ /*
+ * if we couldn't map all of DRAM via the dma windows
+ * we need SWIOTLB to handle buffers located outside of
+ * dma capable memory region
+ */
+ if (memblock_end_of_DRAM() > hose->dma_window_base_cur
+ + hose->dma_window_size) {
+ ppc_swiotlb_enable =3D 1;
+ set_pci_dma_ops(&swiotlb_dma_ops);
+ ppc_md.pci_dma_dev_setup =3D pci_dma_dev_setup_swiotlb;
+ }
+#endif
+
+ }
+
+ return 0;
+}
+
+static struct platform_driver fsl_pci_driver =3D {
+ .driver =3D {
+ .name =3D "fsl-pci",
+ .of_match_table =3D pci_ids,
+ },
+ .probe =3D fsl_pci_probe,
+};
+
+static int __init fsl_pci_init(void)
+{
+ return platform_driver_register(&fsl_pci_driver);
+}
+arch_initcall(fsl_pci_init);
--
1.7.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* RE: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code
2012-01-10 7:31 ` Jia Hongtao-B38951
@ 2012-02-10 2:27 ` Jia Hongtao-B38951
2012-03-16 18:58 ` Kumar Gala
0 siblings, 1 reply; 8+ messages in thread
From: Jia Hongtao-B38951 @ 2012-02-10 2:27 UTC (permalink / raw)
To: Kumar Gala
Cc: linuxppc-dev@lists.ozlabs.org, Li Yang-R58472, Jia Hongtao-B38951
Hi Kumar,
This series of patches have been pending for a long time.
I'd like to know whether they are look good or not so I can do the further =
work on it.
It's kind of emergency things for me.
Thanks a lot for your attention.
-----Original Message-----
From: Jia Hongtao-B38951=20
Sent: Tuesday, January 10, 2012 3:31 PM
To: Gala Kumar-B11780
Cc: Li Yang-R58472; Jia Hongtao-B38951; linuxppc-dev@lists.ozlabs.org
Subject: RE: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initializat=
ion code
Hi Kumar,
Do you have any idea on this series of patches?
Looking forward to your answer.
Thanks.
--Jia Hongtao.
-----Original Message-----
From: Jia Hongtao-B38951
Sent: Wednesday, December 21, 2011 3:11 PM
To: linuxppc-dev@lists.ozlabs.org
Cc: Li Yang-R58472; Gala Kumar-B11780; Jia Hongtao-B38951
Subject: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization =
code
We unified the Freescale pci/pcie initialization by changing the fsl_pci to=
a platform driver.
In previous version pci/pcie initialization is in platform code which Initi=
alize pci bridge base on EP/RC or host/agent settings.
Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/platforms/85xx/p1022_ds.c | 39 +++++++----------------
arch/powerpc/sysdev/fsl_pci.c | 53 ++++++++++++++++++++++++++++=
++++
2 files changed, 65 insertions(+), 27 deletions(-)
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platform=
s/85xx/p1022_ds.c
index 2bf4342..41de2c1 100644
--- a/arch/powerpc/platforms/85xx/p1022_ds.c
+++ b/arch/powerpc/platforms/85xx/p1022_ds.c
@@ -277,32 +277,9 @@ void __init mpc85xx_smp_init(void);
*/
static void __init p1022_ds_setup_arch(void) { -#ifdef CONFIG_PCI
- struct device_node *np;
-#endif
- dma_addr_t max =3D 0xffffffff;
-
if (ppc_md.progress)
ppc_md.progress("p1022_ds_setup_arch()", 0);
=20
-#ifdef CONFIG_PCI
- for_each_compatible_node(np, "pci", "fsl,p1022-pcie") {
- struct resource rsrc;
- struct pci_controller *hose;
-
- of_address_to_resource(np, 0, &rsrc);
-
- if ((rsrc.start & 0xfffff) =3D=3D 0x8000)
- fsl_add_bridge(np, 1);
- else
- fsl_add_bridge(np, 0);
-
- hose =3D pci_find_hose_for_OF_device(np);
- max =3D min(max, hose->dma_window_base_cur +
- hose->dma_window_size);
- }
-#endif
-
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
diu_ops.get_pixel_format =3D p1022ds_get_pixel_format;
diu_ops.set_gamma_table =3D p1022ds_set_gamma_table;
@@ -316,11 +293,8 @@ static void __init p1022_ds_setup_arch(void) #endif
=20
#ifdef CONFIG_SWIOTLB
- if (memblock_end_of_DRAM() > max) {
+ if (memblock_end_of_DRAM() > 0xffffffff)
ppc_swiotlb_enable =3D 1;
- set_pci_dma_ops(&swiotlb_dma_ops);
- ppc_md.pci_dma_dev_setup =3D pci_dma_dev_setup_swiotlb;
- }
#endif
=20
pr_info("Freescale P1022 DS reference board\n"); @@ -339,6 +313,17 @@ sta=
tic int __init p1022_ds_publish_devices(void) } machine_device_initcall(p=
1022_ds, p1022_ds_publish_devices);
=20
+static struct of_device_id __initdata p1022_pci_ids[] =3D {
+ { .compatible =3D "fsl,p1022-pcie", },
+ {},
+};
+
+static int __init p1022_ds_publish_pci_device(void) {
+ return of_platform_bus_probe(NULL, p1022_pci_ids, NULL); }=20
+machine_arch_initcall(p1022_ds, p1022_ds_publish_pci_device);
+
machine_arch_initcall(p1022_ds, swiotlb_setup_bus_notifier);
=20
/*
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c =
index 4ce547e..a0f305d 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -712,3 +712,56 @@ u64 fsl_pci_immrbar_base(struct pci_controller *hose)
=20
return 0;
}
+
+static const struct of_device_id pci_ids[] =3D {
+ { .compatible =3D "fsl,mpc8540-pci", },
+ { .compatible =3D "fsl,mpc8548-pcie", },
+ { .compatible =3D "fsl,p1022-pcie", },
+ {},
+};
+
+static int __devinit fsl_pci_probe(struct platform_device *pdev) {
+ struct pci_controller *hose;
+
+ if (of_match_node(pci_ids, pdev->dev.of_node)) {
+ struct resource rsrc;
+ of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
+ if ((rsrc.start & 0xfffff) =3D=3D 8000)
+ fsl_add_bridge(pdev->dev.of_node, 1);
+ else
+ fsl_add_bridge(pdev->dev.of_node, 0);
+
+#ifdef CONFIG_SWIOTLB
+ hose =3D pci_find_hose_for_OF_device(pdev->dev.of_node);
+ /*
+ * if we couldn't map all of DRAM via the dma windows
+ * we need SWIOTLB to handle buffers located outside of
+ * dma capable memory region
+ */
+ if (memblock_end_of_DRAM() > hose->dma_window_base_cur
+ + hose->dma_window_size) {
+ ppc_swiotlb_enable =3D 1;
+ set_pci_dma_ops(&swiotlb_dma_ops);
+ ppc_md.pci_dma_dev_setup =3D pci_dma_dev_setup_swiotlb;
+ }
+#endif
+
+ }
+
+ return 0;
+}
+
+static struct platform_driver fsl_pci_driver =3D {
+ .driver =3D {
+ .name =3D "fsl-pci",
+ .of_match_table =3D pci_ids,
+ },
+ .probe =3D fsl_pci_probe,
+};
+
+static int __init fsl_pci_init(void)
+{
+ return platform_driver_register(&fsl_pci_driver);
+}
+arch_initcall(fsl_pci_init);
--
1.7.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code
2012-02-10 2:27 ` Jia Hongtao-B38951
@ 2012-03-16 18:58 ` Kumar Gala
0 siblings, 0 replies; 8+ messages in thread
From: Kumar Gala @ 2012-03-16 18:58 UTC (permalink / raw)
To: Jia Hongtao-B38951; +Cc: linuxppc-dev@lists.ozlabs.org, Li Yang-R58472
On Feb 9, 2012, at 8:27 PM, Jia Hongtao-B38951 wrote:
> Hi Kumar,
> This series of patches have been pending for a long time.
> I'd like to know whether they are look good or not so I can do the =
further work on it.
> It's kind of emergency things for me.
> Thanks a lot for your attention.
I commented some time ago that the patches looked fine, but needed to be =
done for ALL the boards (include 86xx).
- k
>=20
> -----Original Message-----
> From: Jia Hongtao-B38951=20
> Sent: Tuesday, January 10, 2012 3:31 PM
> To: Gala Kumar-B11780
> Cc: Li Yang-R58472; Jia Hongtao-B38951; linuxppc-dev@lists.ozlabs.org
> Subject: RE: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie =
initialization code
>=20
> Hi Kumar,
> Do you have any idea on this series of patches?
> Looking forward to your answer.
> Thanks.
>=20
> --Jia Hongtao.
>=20
> -----Original Message-----
> From: Jia Hongtao-B38951
> Sent: Wednesday, December 21, 2011 3:11 PM
> To: linuxppc-dev@lists.ozlabs.org
> Cc: Li Yang-R58472; Gala Kumar-B11780; Jia Hongtao-B38951
> Subject: [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie =
initialization code
>=20
> We unified the Freescale pci/pcie initialization by changing the =
fsl_pci to a platform driver.
>=20
> In previous version pci/pcie initialization is in platform code which =
Initialize pci bridge base on EP/RC or host/agent settings.
>=20
> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> arch/powerpc/platforms/85xx/p1022_ds.c | 39 +++++++----------------
> arch/powerpc/sysdev/fsl_pci.c | 53 =
++++++++++++++++++++++++++++++++
> 2 files changed, 65 insertions(+), 27 deletions(-)
>=20
> diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c =
b/arch/powerpc/platforms/85xx/p1022_ds.c
> index 2bf4342..41de2c1 100644
> --- a/arch/powerpc/platforms/85xx/p1022_ds.c
> +++ b/arch/powerpc/platforms/85xx/p1022_ds.c
> @@ -277,32 +277,9 @@ void __init mpc85xx_smp_init(void);
> */
> static void __init p1022_ds_setup_arch(void) { -#ifdef CONFIG_PCI
> - struct device_node *np;
> -#endif
> - dma_addr_t max =3D 0xffffffff;
> -
> if (ppc_md.progress)
> ppc_md.progress("p1022_ds_setup_arch()", 0);
>=20
> -#ifdef CONFIG_PCI
> - for_each_compatible_node(np, "pci", "fsl,p1022-pcie") {
> - struct resource rsrc;
> - struct pci_controller *hose;
> -
> - of_address_to_resource(np, 0, &rsrc);
> -
> - if ((rsrc.start & 0xfffff) =3D=3D 0x8000)
> - fsl_add_bridge(np, 1);
> - else
> - fsl_add_bridge(np, 0);
> -
> - hose =3D pci_find_hose_for_OF_device(np);
> - max =3D min(max, hose->dma_window_base_cur +
> - hose->dma_window_size);
> - }
> -#endif
> -
> #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
> diu_ops.get_pixel_format =3D p1022ds_get_pixel_format;
> diu_ops.set_gamma_table =3D p1022ds_set_gamma_table;
> @@ -316,11 +293,8 @@ static void __init p1022_ds_setup_arch(void) =
#endif
>=20
> #ifdef CONFIG_SWIOTLB
> - if (memblock_end_of_DRAM() > max) {
> + if (memblock_end_of_DRAM() > 0xffffffff)
> ppc_swiotlb_enable =3D 1;
> - set_pci_dma_ops(&swiotlb_dma_ops);
> - ppc_md.pci_dma_dev_setup =3D pci_dma_dev_setup_swiotlb;
> - }
> #endif
>=20
> pr_info("Freescale P1022 DS reference board\n"); @@ -339,6 =
+313,17 @@ static int __init p1022_ds_publish_devices(void) } =
machine_device_initcall(p1022_ds, p1022_ds_publish_devices);
>=20
> +static struct of_device_id __initdata p1022_pci_ids[] =3D {
> + { .compatible =3D "fsl,p1022-pcie", },
> + {},
> +};
> +
> +static int __init p1022_ds_publish_pci_device(void) {
> + return of_platform_bus_probe(NULL, p1022_pci_ids, NULL); }=20
> +machine_arch_initcall(p1022_ds, p1022_ds_publish_pci_device);
> +
> machine_arch_initcall(p1022_ds, swiotlb_setup_bus_notifier);
>=20
> /*
> diff --git a/arch/powerpc/sysdev/fsl_pci.c =
b/arch/powerpc/sysdev/fsl_pci.c index 4ce547e..a0f305d 100644
> --- a/arch/powerpc/sysdev/fsl_pci.c
> +++ b/arch/powerpc/sysdev/fsl_pci.c
> @@ -712,3 +712,56 @@ u64 fsl_pci_immrbar_base(struct pci_controller =
*hose)
>=20
> return 0;
> }
> +
> +static const struct of_device_id pci_ids[] =3D {
> + { .compatible =3D "fsl,mpc8540-pci", },
> + { .compatible =3D "fsl,mpc8548-pcie", },
> + { .compatible =3D "fsl,p1022-pcie", },
> + {},
> +};
> +
> +static int __devinit fsl_pci_probe(struct platform_device *pdev) {
> + struct pci_controller *hose;
> +
> + if (of_match_node(pci_ids, pdev->dev.of_node)) {
> + struct resource rsrc;
> + of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
> + if ((rsrc.start & 0xfffff) =3D=3D 8000)
> + fsl_add_bridge(pdev->dev.of_node, 1);
> + else
> + fsl_add_bridge(pdev->dev.of_node, 0);
> +
> +#ifdef CONFIG_SWIOTLB
> + hose =3D pci_find_hose_for_OF_device(pdev->dev.of_node);
> + /*
> + * if we couldn't map all of DRAM via the dma windows
> + * we need SWIOTLB to handle buffers located outside of
> + * dma capable memory region
> + */
> + if (memblock_end_of_DRAM() > hose->dma_window_base_cur
> + + hose->dma_window_size) {
> + ppc_swiotlb_enable =3D 1;
> + set_pci_dma_ops(&swiotlb_dma_ops);
> + ppc_md.pci_dma_dev_setup =3D =
pci_dma_dev_setup_swiotlb;
> + }
> +#endif
> +
> + }
> +
> + return 0;
> +}
> +
> +static struct platform_driver fsl_pci_driver =3D {
> + .driver =3D {
> + .name =3D "fsl-pci",
> + .of_match_table =3D pci_ids,
> + },
> + .probe =3D fsl_pci_probe,
> +};
> +
> +static int __init fsl_pci_init(void)
> +{
> + return platform_driver_register(&fsl_pci_driver);
> +}
> +arch_initcall(fsl_pci_init);
> --
> 1.7.5.1
>=20
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH SDK1.2 3/3] powerpc/fsl-pci: Add pci inbound/outbound PM support
2011-12-21 7:10 ` [PATCH SDK1.2 3/3] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
@ 2012-03-16 19:20 ` Kumar Gala
0 siblings, 0 replies; 8+ messages in thread
From: Kumar Gala @ 2012-03-16 19:20 UTC (permalink / raw)
To: Jia Hongtao; +Cc: B11780, linuxppc-dev
On Dec 21, 2011, at 1:10 AM, Jia Hongtao wrote:
> Power supply for PCI inbound/outbound window registers is off when =
system
> go to deep-sleep state. We save the values of registers before suspend
> and restore to registers after resume.
>=20
> Signed-off-by: Jiang Yutang <b14898@freescale.com>
> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> arch/powerpc/include/asm/pci-bridge.h | 6 ++
> arch/powerpc/sysdev/fsl_pci.c | 108 =
+++++++++++++++++++++++++++++++++
> 2 files changed, 114 insertions(+), 0 deletions(-)
>=20
> diff --git a/arch/powerpc/include/asm/pci-bridge.h =
b/arch/powerpc/include/asm/pci-bridge.h
> index 882b6aa..c99b40e 100644
> --- a/arch/powerpc/include/asm/pci-bridge.h
> +++ b/arch/powerpc/include/asm/pci-bridge.h
> @@ -92,6 +92,12 @@ struct pci_controller {
>=20
> void *private_data;
> #endif /* CONFIG_PPC64 */
> +
> +#ifdef CONFIG_SUSPEND
> + struct pci_outbound_window_regs __iomem *pci_pow;
> + struct pci_inbound_window_regs __iomem *pci_piw;
Why do we need both pointers, we dont you just keep a pointer to 'struct =
ccsr_pci __iomem' ?
Also, is there really a significant speed difference that we need to =
cache the ioremap pointer? Can we not just do the ioremap() both in =
suspend & resume functions?
> + void *saved_regs;
> +#endif
Should we just put this under private_data and expose that everywhere =
(ie not just on PPC64)
> };
Also, dont we need to save/restore the setting of PCSRBAR/PEXCSRBAR
>=20
> /* These are used for config access before all the PCI probing
> diff --git a/arch/powerpc/sysdev/fsl_pci.c =
b/arch/powerpc/sysdev/fsl_pci.c
> index e318e9d..046866f 100644
> --- a/arch/powerpc/sysdev/fsl_pci.c
> +++ b/arch/powerpc/sysdev/fsl_pci.c
> @@ -756,12 +756,120 @@ static int __devinit fsl_pci_probe(struct =
platform_device *pdev)
> return 0;
> }
>=20
> +#ifdef CONFIG_SUSPEND
> +
> +#define PCI_POW_NUMBER 5
> +#define PCI_POW_BIAS 0xc00
> +#define PCI_PIW_NUMBER 3
> +#define PCI_PIW_BIAS 0xda0
> +
> +static int fsl_pci_suspend(struct platform_device *dev, pm_message_t =
state)
> +{
> + struct pci_controller *hose;
> + struct pci_outbound_window_regs *pci_saved_pow;
> + struct pci_inbound_window_regs *pci_saved_piw;
> + struct resource pci_rsrc;
> + unsigned int i;
> +
> + hose =3D pci_find_hose_for_OF_device(dev->dev.of_node);
> + of_address_to_resource(dev->dev.of_node, 0, &pci_rsrc);
> +
> + hose->pci_pow =3D ioremap(pci_rsrc.start + PCI_POW_BIAS,
> + sizeof(struct pci_outbound_window_regs)
> + * PCI_POW_NUMBER);
> + if (!hose->pci_pow) {
> + pr_err("pci_pow ioremap error!\n");
> + return -ENOMEM;
> + }
> +
> + hose->pci_piw =3D ioremap(pci_rsrc.start + PCI_PIW_BIAS,
> + sizeof(struct pci_inbound_window_regs)
> + * PCI_PIW_NUMBER);
> + if (!hose->pci_piw) {
> + pr_err("pci_piw ioremap error!\n");
> + goto err1;
> + }
> +
> + hose->saved_regs =3D kmalloc(
> + sizeof(struct pci_outbound_window_regs) * PCI_POW_NUMBER =
+
> + sizeof(struct pci_inbound_window_regs) * PCI_PIW_NUMBER,
> + GFP_KERNEL);
> + if (!hose->saved_regs)
> + goto err2;
> +
> + pci_saved_pow =3D hose->saved_regs;
> + for (i =3D 0; i < PCI_POW_NUMBER; i++) {
> + pci_saved_pow[i].potar =3D =
in_be32(&hose->pci_pow[i].potar);
> + pci_saved_pow[i].potear =3D =
in_be32(&hose->pci_pow[i].potear);
> + pci_saved_pow[i].powbar =3D =
in_be32(&hose->pci_pow[i].powbar);
> + pci_saved_pow[i].powar =3D =
in_be32(&hose->pci_pow[i].powar);
> + }
> +
> + pci_saved_piw =3D (struct pci_inbound_window_regs *)
> + (pci_saved_pow + PCI_POW_NUMBER);
> + for (i =3D 0; i < PCI_PIW_NUMBER; i++) {
> + pci_saved_piw[i].pitar =3D =
in_be32(&hose->pci_piw[i].pitar);
> + pci_saved_piw[i].piwbar =3D =
in_be32(&hose->pci_piw[i].piwbar);
> + pci_saved_piw[i].piwbear =3D =
in_be32(&hose->pci_piw[i].piwbear);
> + pci_saved_piw[i].piwar =3D =
in_be32(&hose->pci_piw[i].piwar);
> + }
> +
> + return 0;
> +
> +err2:
> + iounmap(hose->pci_piw);
> +
> +err1:
> + iounmap(hose->pci_pow);
> + return -ENOMEM;
> +}
> +
> +static int fsl_pci_resume(struct platform_device *dev)
> +{
> + struct pci_controller *hose;
> + struct pci_outbound_window_regs *pci_saved_pow;
> + struct pci_inbound_window_regs *pci_saved_piw;
> + unsigned int i;
> +
> + hose =3D pci_find_hose_for_OF_device(dev->dev.of_node);
> + if (!hose->pci_pow || !hose->pci_piw || !hose->saved_regs)
> + return 0;
> +
> + pci_saved_pow =3D hose->saved_regs;
> + for (i =3D 0; i < PCI_POW_NUMBER; i++) {
> + out_be32(&hose->pci_pow[i].potar, =
pci_saved_pow[i].potar);
> + out_be32(&hose->pci_pow[i].potear, =
pci_saved_pow[i].potear);
> + out_be32(&hose->pci_pow[i].powbar, =
pci_saved_pow[i].powbar);
> + out_be32(&hose->pci_pow[i].powar, =
pci_saved_pow[i].powar);
> + }
> + iounmap(hose->pci_pow);
> +
> + pci_saved_piw =3D (struct pci_inbound_window_regs *)
> + (pci_saved_pow + PCI_POW_NUMBER);
> + for (i =3D 0; i < PCI_PIW_NUMBER; i++) {
> + out_be32(&hose->pci_piw[i].pitar, =
pci_saved_piw[i].pitar);
> + out_be32(&hose->pci_piw[i].piwbar, =
pci_saved_piw[i].piwbar);
> + out_be32(&hose->pci_piw[i].piwbear, =
pci_saved_piw[i].piwbear);
> + out_be32(&hose->pci_piw[i].piwar, =
pci_saved_piw[i].piwar);
> + }
> + iounmap(hose->pci_piw);
> + kfree(hose->saved_regs);
> + hose->saved_regs =3D NULL;
> +
> + return 0;
> +}
> +#endif
> +
> static struct platform_driver fsl_pci_driver =3D {
> .driver =3D {
> .name =3D "fsl-pci",
> .of_match_table =3D pci_ids,
> },
> .probe =3D fsl_pci_probe,
> +#ifdef CONFIG_SUSPEND
> + .suspend =3D fsl_pci_suspend,
> + .resume =3D fsl_pci_resume,
> +#endif
> };
>=20
> static int __init fsl_pci_init(void)
> --=20
> 1.7.5.1
>=20
>=20
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-03-16 19:20 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-21 7:10 [PATCH SDK1.2 0/3] pci patches description Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 1/3] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
2012-01-10 7:31 ` Jia Hongtao-B38951
2012-02-10 2:27 ` Jia Hongtao-B38951
2012-03-16 18:58 ` Kumar Gala
2011-12-21 7:10 ` [PATCH SDK1.2 2/3] powerpc/fsl-pci: Only scan PCI bus if configured as a host Jia Hongtao
2011-12-21 7:10 ` [PATCH SDK1.2 3/3] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
2012-03-16 19:20 ` Kumar Gala
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).