[OpenWrt-Devel] [PATCH] lantiq: Fix initialization of the PCI IRQs when PCIe is also enabled

2015-05-15 Thread Martin Blumenstingl
There are already ifx_pcie_bios_{map_irq,plat_dev_init} hooks defined in
ifxmips_pcie.c. Instead of defining a new hook we simply re-use the
existing ones (this is basically what the lantiq BSP code does).

Signed-off-by: Martin Blumenstingl martin.blumensti...@googlemail.com
---
 .../0001-MIPS-lantiq-add-pcie-driver.patch | 37 +++---
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git 
a/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch 
b/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch
index 26f262c..040eb1f 100644
--- a/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch
+++ b/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch
@@ -174,26 +174,34 @@ Signed-off-by: John Crispin blo...@openwrt.org
 + ifx_pcie_rc_class_early_fixup);
 --- a/arch/mips/pci/fixup-lantiq.c
 +++ b/arch/mips/pci/fixup-lantiq.c
-@@ -11,11 +11,12 @@
+@@ -8,12 +8,18 @@
+ 
+ #include linux/of_irq.h
+ #include linux/of_pci.h
++#include ifxmips_pci_common.h
  
  int (*ltq_pci_plat_arch_init)(struct pci_dev *dev) = NULL;
  int (*ltq_pci_plat_dev_init)(struct pci_dev *dev) = NULL;
-+int (*ltq_pci_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin);
  
  int pcibios_plat_dev_init(struct pci_dev *dev)
  {
++#ifdef CONFIG_PCIE_LANTIQ
++  if (pci_find_capability(dev, PCI_CAP_ID_EXP))
++  ifx_pcie_bios_plat_dev_init(dev);
++#endif
++
if (ltq_pci_plat_arch_init)
--  return ltq_pci_plat_arch_init(dev);
-+  ltq_pci_plat_arch_init(dev);
+   return ltq_pci_plat_arch_init(dev);
  
-   if (ltq_pci_plat_dev_init)
-   return ltq_pci_plat_dev_init(dev);
-@@ -25,5 +26,7 @@ int pcibios_plat_dev_init(struct pci_dev
+@@ -25,5 +31,10 @@
  
  int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
  {
-+  if (ltq_pci_map_irq)
-+  return ltq_pci_map_irq(dev, slot, pin);
++#ifdef CONFIG_PCIE_LANTIQ
++  if (pci_find_capability(dev, PCI_CAP_ID_EXP))
++  return ifx_pcie_bios_map_irq(dev, slot, pin);
++#endif
++
return of_irq_parse_and_map_pci(dev, slot, pin);
  }
 --- /dev/null
@@ -249,7 +257,7 @@ Signed-off-by: John Crispin blo...@openwrt.org
 +extern int ifx_pci_bios_plat_dev_init(struct pci_dev *dev);
 +#endif /* COFNIG_IFX_PCI */
 +
-+#ifdef CONFIG_IFX_PCIE
++#ifdef CONFIG_PCIE_LANTIQ
 +extern int ifx_pcie_bios_map_irq(IFX_PCI_CONST struct pci_dev *dev, u8 slot, 
u8 pin);
 +extern int ifx_pcie_bios_plat_dev_init(struct pci_dev *dev);
 +#endif
@@ -258,7 +266,7 @@ Signed-off-by: John Crispin blo...@openwrt.org
 +
 --- /dev/null
 +++ b/arch/mips/pci/ifxmips_pcie.c
-@@ -0,0 +1,1099 @@
+@@ -0,0 +1,1092 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
@@ -1306,19 +1314,12 @@ Signed-off-by: John Crispin blo...@openwrt.org
 +  return 0;
 +}
 +
-+extern int (*ltq_pci_plat_arch_init)(struct pci_dev *dev);
-+extern int (*ltq_pci_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin);
-+
 +static int __init ifx_pcie_bios_init(void)
 +{
 +void __iomem *io_map_base;
 +int pcie_port;
 +int startup_port;
 +
-+
-+  ltq_pci_map_irq = ifx_pcie_bios_map_irq;
-+  ltq_pci_plat_arch_init = ifx_pcie_bios_plat_dev_init;
-+
 +/* Enable AHB Master/ Slave */
 +pcie_ahb_pmu_setup();
 +
-- 
2.4.1
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH] lantiq: Fix initialization of the PCI IRQs when PCIe is also enabled

2015-05-15 Thread Martin Blumenstingl
This patch plus my previous one (see [0]) make PCIe and PCI work
at the same time (at least on the device I'm testing with).
Unfortunately I have no other lantiq device with PCIe - so it would be
nice if someone else could test that this doesn't break any existing
devices.

Regards,
Martin


[0] https://patchwork.ozlabs.org/patch/471002/
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel