parent
adb70acecb
commit
662e3943ff
@ -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 new issue