imx6: split out ventana init patch from devicetree
SVN-Revision: 38423
This commit is contained in:
parent
adb70acecb
commit
662e3943ff
2 changed files with 70 additions and 59 deletions
|
@ -133,62 +133,3 @@
|
||||||
|
|
||||||
usbotg {
|
usbotg {
|
||||||
pinctrl_usbotg_1: usbotggrp-1 {
|
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();
|
|
||||||
|
|
||||||
|
|
70
target/linux/imx6/patches-3.10/120-ventana-init.ptach
Normal file
70
target/linux/imx6/patches-3.10/120-ventana-init.ptach
Normal file
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue