diff options
author | Luka Perkov <luka@openwrt.org> | 2013-10-16 03:25:54 +0000 |
---|---|---|
committer | Luka Perkov <luka@openwrt.org> | 2013-10-16 03:25:54 +0000 |
commit | 662e3943ff20d1cd005ee13be25216ab08aaf8ee (patch) | |
tree | 37f6d5951da1b9b6ad4a69230bcaa990de2ca208 /target/linux/imx6/patches-3.10/120-ventana-init.ptach | |
parent | adb70acecb0258ae23346f15f832d855da5affd3 (diff) | |
download | mtk-20170518-662e3943ff20d1cd005ee13be25216ab08aaf8ee.zip mtk-20170518-662e3943ff20d1cd005ee13be25216ab08aaf8ee.tar.gz mtk-20170518-662e3943ff20d1cd005ee13be25216ab08aaf8ee.tar.bz2 |
imx6: split out ventana init patch from devicetree
SVN-Revision: 38423
Diffstat (limited to 'target/linux/imx6/patches-3.10/120-ventana-init.ptach')
-rw-r--r-- | target/linux/imx6/patches-3.10/120-ventana-init.ptach | 70 |
1 files changed, 70 insertions, 0 deletions
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 index 0000000..2dd91d2 --- /dev/null +++ b/target/linux/imx6/patches-3.10/120-ventana-init.ptach @@ -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(); + |