imx6: split out ventana init patch from devicetree
authorLuka Perkov <luka@openwrt.org>
Wed, 16 Oct 2013 03:25:54 +0000 (03:25 +0000)
committerLuka Perkov <luka@openwrt.org>
Wed, 16 Oct 2013 03:25:54 +0000 (03:25 +0000)
SVN-Revision: 38423

target/linux/imx6/patches-3.10/110-gw5400-a.patch
target/linux/imx6/patches-3.10/120-ventana-init.ptach [new file with mode: 0644]

index e554540dad66245e9e0f09e2438205926ff13f69..ddb796c3973fe2c36985d86d38e2dedc1507da1a 100644 (file)
  
                                usbotg {
                                        pinctrl_usbotg_1: usbotggrp-1 {
---- a/arch/arm/mach-imx/mach-imx6q.c
-+++ b/arch/arm/mach-imx/mach-imx6q.c
-@@ -25,6 +25,7 @@
- #include <linux/of_irq.h>
- #include <linux/of_platform.h>
- #include <linux/opp.h>
-+#include <linux/pci.h>
- #include <linux/phy.h>
- #include <linux/regmap.h>
- #include <linux/micrel_phy.h>
-@@ -145,6 +146,38 @@ static void __init imx6q_sabrelite_init(
-       imx6q_sabrelite_cko1_setup();
- }
-+/*
-+ * fixup for PEX 8909 bridge to configure GPIO1-7 as output High
-+ * as they are used for slots1-7 PERST#
-+ */
-+static void mx6_ventana_pciesw_early_fixup(struct pci_dev *dev)
-+{
-+      u32 dw;
-+
-+      if (!of_machine_is_compatible("gw,ventana"))
-+              return;
-+
-+      if (dev->devfn != 0)
-+              return;
-+
-+      pci_read_config_dword(dev, 0x62c, &dw);
-+      dw |= 0xaaa8; // GPIO1-7 outputs
-+      pci_write_config_dword(dev, 0x62c, dw);
-+
-+      pci_read_config_dword(dev, 0x644, &dw);
-+      dw |= 0xfe;   // GPIO1-7 output high
-+      pci_write_config_dword(dev, 0x644, dw);
-+
-+      mdelay(1);
-+}
-+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8609,
-+      mx6_ventana_pciesw_early_fixup);
-+
-+static void __init imx6q_ventana_init(void)
-+{
-+      imx6q_sabrelite_cko1_setup();
-+}
-+
- static void __init imx6q_1588_init(void)
- {
-       struct regmap *gpr;
-@@ -163,6 +196,9 @@ static void __init imx6q_usb_init(void)
- static void __init imx6q_init_machine(void)
- {
-+      if (of_machine_is_compatible("gw,ventana"))
-+              imx6q_ventana_init();
-+
-       if (of_machine_is_compatible("fsl,imx6q-sabrelite"))
-               imx6q_sabrelite_init();
diff --git a/target/linux/imx6/patches-3.10/120-ventana-init.ptach b/target/linux/imx6/patches-3.10/120-ventana-init.ptach
new file mode 100644 (file)
index 0000000..2dd91d2
--- /dev/null
@@ -0,0 +1,70 @@
+Many of the Gateworks Ventana boards use a PLX PEX860X PCIe Switch
+and utilize its GPIO outputs as PERST# for downstream ports.  This
+patch configures them appropriately during enumeration.
+
+Additionally many of the Ventana boards use CKO1 as the clock input for
+an analog audio codec which is setup here.
+
+--- a/arch/arm/mach-imx/mach-imx6q.c
++++ b/arch/arm/mach-imx/mach-imx6q.c
+@@ -25,6 +25,7 @@
+ #include <linux/of_irq.h>
+ #include <linux/of_platform.h>
+ #include <linux/opp.h>
++#include <linux/pci.h>
+ #include <linux/phy.h>
+ #include <linux/regmap.h>
+ #include <linux/micrel_phy.h>
+@@ -145,6 +146,42 @@ static void __init imx6q_sabrelite_init(
+       imx6q_sabrelite_cko1_setup();
+ }
++/*
++ * fixup for PEX 8909 bridge to configure GPIO1-7 as output High
++ * as they are used for slots1-7 PERST#
++ */
++static void mx6_ventana_pciesw_early_fixup(struct pci_dev *dev)
++{
++      u32 dw;
++
++      if (!of_machine_is_compatible("gw,ventana"))
++              return;
++
++      if (dev->devfn != 0)
++              return;
++
++      pci_read_config_dword(dev, 0x62c, &dw);
++      dw |= 0xaaa8; // GPIO1-7 outputs
++      pci_write_config_dword(dev, 0x62c, dw);
++
++      pci_read_config_dword(dev, 0x644, &dw);
++      dw |= 0xfe;   // GPIO1-7 output high
++      pci_write_config_dword(dev, 0x644, dw);
++
++      mdelay(100);
++}
++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8609,
++      mx6_ventana_pciesw_early_fixup);
++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8606,
++      mx6_ventana_pciesw_early_fixup);
++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8604,
++      mx6_ventana_pciesw_early_fixup);
++
++static void __init imx6q_ventana_init(void)
++{
++      imx6q_sabrelite_cko1_setup();
++}
++
+ static void __init imx6q_1588_init(void)
+ {
+       struct regmap *gpr;
+@@ -163,6 +200,9 @@ static void __init imx6q_usb_init(void)
+ static void __init imx6q_init_machine(void)
+ {
++      if (of_machine_is_compatible("gw,ventana"))
++              imx6q_ventana_init();
++
+       if (of_machine_is_compatible("fsl,imx6q-sabrelite"))
+               imx6q_sabrelite_init();