aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/imx6
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/imx6')
-rw-r--r--target/linux/imx6/config-3.13360
-rw-r--r--target/linux/imx6/patches-3.13/0001-ARM-dts-disable-flexcan-by-default.patch31
-rw-r--r--target/linux/imx6/patches-3.13/0002-ARM-dts-added-several-new-imx-pinmux-groups.patch115
-rw-r--r--target/linux/imx6/patches-3.13/0003-ARM-dts-add-Gateworks-Ventana-support.patch2240
-rw-r--r--target/linux/imx6/patches-3.13/0004-imx-add-PCI-fixup-for-PEX860X-on-Gateworks-board.patch68
-rw-r--r--target/linux/imx6/patches-3.13/0005-PCI-designware-Fix-I-O-transfers-by-using-CPU-not-re.patch67
-rw-r--r--target/linux/imx6/patches-3.13/0040-i2c-imx-retry-on-NAK.patch38
-rw-r--r--target/linux/imx6/patches-3.13/0050-sky2-allow-mac-to-come-from-dt.patch69
-rw-r--r--target/linux/imx6/patches-3.13/100-bootargs.patch11
-rw-r--r--target/linux/imx6/patches-3.13/200-PCI-imx6-add-support-for-legacy-irqs.patch43
10 files changed, 3042 insertions, 0 deletions
diff --git a/target/linux/imx6/config-3.13 b/target/linux/imx6/config-3.13
new file mode 100644
index 0000000000..fdf9b722bd
--- /dev/null
+++ b/target/linux/imx6/config-3.13
@@ -0,0 +1,360 @@
+CONFIG_AHCI_IMX=y
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+CONFIG_ARCH_HAS_CPUFREQ=y
+CONFIG_ARCH_HAS_OPP=y
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+CONFIG_ARCH_HAS_TICK_BROADCAST=y
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MULTIPLATFORM=y
+# CONFIG_ARCH_MULTI_CPU_AUTO is not set
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MXC=y
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
+CONFIG_ARCH_NR_GPIO=0
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_ARM=y
+# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
+# CONFIG_ARM_CPU_SUSPEND is not set
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+# CONFIG_ARM_LPAE is not set
+CONFIG_ARM_NR_BANKS=8
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_ARM_THUMB=y
+# CONFIG_ARM_THUMBEE is not set
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_ATA=y
+CONFIG_ATAGS=y
+# CONFIG_ATA_SFF is not set
+CONFIG_AUTO_ZRELADDR=y
+# CONFIG_CACHE_L2X0 is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_CLKSRC_OF=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_COMMON_CLK=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_FREQ=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_CPU_HAS_ASID=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_V7=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_XZ=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_IMX_UART_PORT=1
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_8250 is not set
+# CONFIG_DEBUG_UART_PL01X is not set
+# CONFIG_DEBUG_USER is not set
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_DTC=y
+# CONFIG_DW_DMAC_CORE is not set
+# CONFIG_DW_DMAC_PCI is not set
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_FEC=y
+CONFIG_FRAME_POINTER=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_CPUFREQ_CPU0=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IO=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_MXC=y
+CONFIG_GPIO_SYSFS=y
+# CONFIG_HAMRADIO is not set
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_ARM_SCU=y
+CONFIG_HAVE_ARM_TWD=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_HAVE_BPF_JIT=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_IDE=y
+CONFIG_HAVE_IMX_ANATOP=y
+CONFIG_HAVE_IMX_GPC=y
+CONFIG_HAVE_IMX_MMDC=y
+CONFIG_HAVE_IMX_SRC=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_HAVE_NET_DSA=y
+CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_SMP=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_UID16=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HZ_FIXED=0
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_IMX=y
+# CONFIG_IMX2_WDT is not set
+CONFIG_IMX_DMA=y
+CONFIG_IMX_SDMA=y
+# CONFIG_IMX_WEIM is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IOMMU_HELPER=y
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_JBD=y
+CONFIG_JBD2=y
+CONFIG_KTIME_SCALAR=y
+# CONFIG_LEDS_REGULATOR is not set
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+# CONFIG_MACH_EUKREA_CPUIMX51SD is not set
+# CONFIG_MACH_IMX51_DT is not set
+# CONFIG_MACH_MX51_BABBAGE is not set
+CONFIG_MDIO_BOARDINFO=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_MXC is not set
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+# CONFIG_MTD_PHYSMAP_OF is not set
+# CONFIG_MTD_SM_COMMON is not set
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_GLUEBI is not set
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MULTI_IRQ_HANDLER=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+# CONFIG_MX3_IPU is not set
+# CONFIG_MXC_DEBUG_BOARD is not set
+# CONFIG_MXC_IRQ_PRIOR is not set
+CONFIG_MXS_DMA=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_NLS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NO_HZ_COMMON=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NR_CPUS=4
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_MTD=y
+CONFIG_OF_NET=y
+CONFIG_OF_PCI=y
+CONFIG_OF_PCI_IRQ=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_PCI=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_DW=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_IMX6=y
+CONFIG_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+CONFIG_PHYLIB=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX=y
+CONFIG_PINCTRL_IMX6Q=y
+CONFIG_PINCTRL_IMX6SL=y
+# CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PM_OPP=y
+CONFIG_PPS=y
+# CONFIG_PREEMPT_RCU is not set
+CONFIG_PROC_DEVICETREE=y
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_RATIONAL=y
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_GZIP=y
+CONFIG_RD_LZO=y
+CONFIG_RD_XZ=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_SPI=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_ANATOP=y
+# CONFIG_REGULATOR_DEBUG is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_PFUZE100=y
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_RFKILL_REGULATOR is not set
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_DRV_IMXDI is not set
+# CONFIG_RTC_DRV_MXC is not set
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_SCHED_HRTICK=y
+CONFIG_SCSI=y
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+CONFIG_SOC_BUS=y
+# CONFIG_SOC_IMX53 is not set
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+# CONFIG_SOC_VF610 is not set
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_MASTER=y
+CONFIG_STMP_DEVICE=y
+CONFIG_STOP_MACHINE=y
+CONFIG_SWIOTLB=y
+# CONFIG_SWP_EMULATE is not set
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TREE_RCU=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_XZ=y
+CONFIG_UBIFS_FS_ZLIB=y
+CONFIG_UID16=y
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_USB_MXS_PHY is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USE_OF=y
+CONFIG_VECTORS_BASE=0xffff0000
+# CONFIG_VFP is not set
+CONFIG_VMSPLIT_2G=y
+# CONFIG_VMSPLIT_3G is not set
+# CONFIG_XEN is not set
+CONFIG_XPS=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ZBOOT_ROM_TEXT=0x0
+# CONFIG_ZBUD is not set
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZONE_DMA_FLAG=0
diff --git a/target/linux/imx6/patches-3.13/0001-ARM-dts-disable-flexcan-by-default.patch b/target/linux/imx6/patches-3.13/0001-ARM-dts-disable-flexcan-by-default.patch
new file mode 100644
index 0000000000..babd544af8
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/0001-ARM-dts-disable-flexcan-by-default.patch
@@ -0,0 +1,31 @@
+From 1759b172f78263de7077a2743e11f3b718682849 Mon Sep 17 00:00:00 2001
+From: Tim Harvey <tharvey@gateworks.com>
+Date: Tue, 22 Oct 2013 21:51:27 -0700
+Subject: [PATCH 1/3] ARM: dts: disable flexcan by default
+
+Typically nodes are disabled by default and enabled when needed.
+
+Signed-off-by: Tim Harvey <tharvey@gateworks.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ arch/arm/boot/dts/imx6qdl.dtsi | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/arm/boot/dts/imx6qdl.dtsi
++++ b/arch/arm/boot/dts/imx6qdl.dtsi
+@@ -331,6 +331,7 @@
+ interrupts = <0 110 0x04>;
+ clocks = <&clks 108>, <&clks 109>;
+ clock-names = "ipg", "per";
++ status = "disabled";
+ };
+
+ can2: flexcan@02094000 {
+@@ -339,6 +340,7 @@
+ interrupts = <0 111 0x04>;
+ clocks = <&clks 110>, <&clks 111>;
+ clock-names = "ipg", "per";
++ status = "disabled";
+ };
+
+ gpt: gpt@02098000 {
diff --git a/target/linux/imx6/patches-3.13/0002-ARM-dts-added-several-new-imx-pinmux-groups.patch b/target/linux/imx6/patches-3.13/0002-ARM-dts-added-several-new-imx-pinmux-groups.patch
new file mode 100644
index 0000000000..f2d7f6ca17
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/0002-ARM-dts-added-several-new-imx-pinmux-groups.patch
@@ -0,0 +1,115 @@
+From 925467009cc6d92edb02b9e68710db022cd56f41 Mon Sep 17 00:00:00 2001
+From: Tim Harvey <tharvey@gateworks.com>
+Date: Tue, 22 Oct 2013 21:51:25 -0700
+Subject: [PATCH 2/3] ARM: dts: added several new imx-pinmux groups
+
+Signed-off-by: Tim Harvey <tharvey@gateworks.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ arch/arm/boot/dts/imx6qdl.dtsi | 60 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 60 insertions(+)
+
+--- a/arch/arm/boot/dts/imx6qdl.dtsi
++++ b/arch/arm/boot/dts/imx6qdl.dtsi
+@@ -639,6 +639,14 @@
+ MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x80000000
+ >;
+ };
++
++ pinctrl_audmux_4: audmux-4 {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_D24__AUD5_RXFS 0x80000000
++ MX6QDL_PAD_EIM_D25__AUD5_RXC 0x80000000
++ MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x80000000
++ >;
++ };
+ };
+
+ ecspi1 {
+@@ -811,6 +819,28 @@
+ MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1
+ >;
+ };
++
++ /* No Strobe */
++ pinctrl_gpmi_nand_2: gpmi-nand-2 {
++ fsl,pins = <
++ MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1
++ MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1
++ MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1
++ MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
++ MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1
++ MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1
++ MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1
++ MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1
++ MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1
++ MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1
++ MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1
++ MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1
++ MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1
++ MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1
++ MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1
++ MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1
++ >;
++ };
+ };
+
+ hdmi_hdcp {
+@@ -1058,6 +1088,13 @@
+ MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1
+ >;
+ };
++
++ pinctrl_uart1_2: uart1grp-2 {
++ fsl,pins = <
++ MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1
++ MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b0b1
++ >;
++ };
+ };
+
+ uart2 {
+@@ -1076,6 +1113,13 @@
+ MX6QDL_PAD_EIM_D29__UART2_DTE_RTS_B 0x1b0b1
+ >;
+ };
++
++ pinctrl_uart2_3: uart2grp-3 {
++ fsl,pins = <
++ MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
++ MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
++ >;
++ };
+ };
+
+ uart3 {
+@@ -1096,6 +1140,13 @@
+ MX6QDL_PAD_EIM_EB3__UART3_RTS_B 0x1b0b1
+ >;
+ };
++
++ pinctrl_uart3_3: uart3grp-3 {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
++ MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
++ >;
++ };
+ };
+
+ uart4 {
+@@ -1106,6 +1157,15 @@
+ >;
+ };
+ };
++
++ uart5 {
++ pinctrl_uart5_1: uart5grp-1 {
++ fsl,pins = <
++ MX6QDL_PAD_KEY_COL1__UART5_TX_DATA 0x1b0b1
++ MX6QDL_PAD_KEY_ROW1__UART5_RX_DATA 0x1b0b1
++ >;
++ };
++ };
+
+ usbotg {
+ pinctrl_usbotg_1: usbotggrp-1 {
diff --git a/target/linux/imx6/patches-3.13/0003-ARM-dts-add-Gateworks-Ventana-support.patch b/target/linux/imx6/patches-3.13/0003-ARM-dts-add-Gateworks-Ventana-support.patch
new file mode 100644
index 0000000000..33904b4a58
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/0003-ARM-dts-add-Gateworks-Ventana-support.patch
@@ -0,0 +1,2240 @@
+From bf2ef777f8ed0830be49b62167cc67d3be6abba6 Mon Sep 17 00:00:00 2001
+From: Tim Harvey <tharvey@gateworks.com>
+Date: Tue, 22 Oct 2013 21:51:26 -0700
+Subject: [PATCH 3/3] ARM: dts: add Gateworks Ventana support
+
+The Gateworks Ventana product family consists of several baseboard designs
+based on the Freescale i.MX6 family of processors. Each baseboard has a
+different set of possible features.
+
+Signed-off-by: Tim Harvey <tharvey@gateworks.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ arch/arm/boot/dts/Makefile | 9 +
+ arch/arm/boot/dts/imx6dl-gw51xx.dts | 19 ++
+ arch/arm/boot/dts/imx6dl-gw52xx.dts | 19 ++
+ arch/arm/boot/dts/imx6dl-gw53xx.dts | 19 ++
+ arch/arm/boot/dts/imx6dl-gw54xx.dts | 19 ++
+ arch/arm/boot/dts/imx6q-gw51xx.dts | 19 ++
+ arch/arm/boot/dts/imx6q-gw52xx.dts | 23 ++
+ arch/arm/boot/dts/imx6q-gw53xx.dts | 23 ++
+ arch/arm/boot/dts/imx6q-gw5400-a.dts | 443 ++++++++++++++++++++++++++++++++
+ arch/arm/boot/dts/imx6q-gw54xx.dts | 23 ++
+ arch/arm/boot/dts/imx6qdl-gw51xx.dtsi | 272 ++++++++++++++++++++
+ arch/arm/boot/dts/imx6qdl-gw52xx.dtsi | 373 +++++++++++++++++++++++++++
+ arch/arm/boot/dts/imx6qdl-gw53xx.dtsi | 429 +++++++++++++++++++++++++++++++
+ arch/arm/boot/dts/imx6qdl-gw54xx.dtsi | 457 ++++++++++++++++++++++++++++++++++
+ 14 files changed, 2147 insertions(+)
+ create mode 100644 arch/arm/boot/dts/imx6dl-gw51xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6dl-gw52xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6dl-gw53xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6dl-gw54xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6q-gw51xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6q-gw52xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6q-gw53xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6q-gw5400-a.dts
+ create mode 100644 arch/arm/boot/dts/imx6q-gw54xx.dts
+ create mode 100644 arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
+ create mode 100644 arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
+ create mode 100644 arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+ create mode 100644 arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -136,10 +136,19 @@ dtb-$(CONFIG_ARCH_MXC) += \
+ imx53-mba53.dtb \
+ imx53-qsb.dtb \
+ imx53-smd.dtb \
++ imx6dl-gw51xx.dtb \
++ imx6dl-gw52xx.dtb \
++ imx6dl-gw53xx.dtb \
++ imx6dl-gw54xx.dtb \
+ imx6dl-sabreauto.dtb \
+ imx6dl-sabresd.dtb \
+ imx6dl-wandboard.dtb \
+ imx6q-arm2.dtb \
++ imx6q-gw51xx.dtb \
++ imx6q-gw52xx.dtb \
++ imx6q-gw53xx.dtb \
++ imx6q-gw5400-a.dtb \
++ imx6q-gw54xx.dtb \
+ imx6q-phytec-pbab01.dtb \
+ imx6q-sabreauto.dtb \
+ imx6q-sabrelite.dtb \
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6dl-gw51xx.dts
+@@ -0,0 +1,19 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6dl.dtsi"
++#include "imx6qdl-gw51xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 DualLite GW51XX";
++ compatible = "gw,imx6dl-gw51xx", "gw,ventana", "fsl,imx6dl";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6dl-gw52xx.dts
+@@ -0,0 +1,19 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6dl.dtsi"
++#include "imx6qdl-gw52xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 DualLite GW52XX";
++ compatible = "gw,imx6dl-gw52xx", "gw,ventana", "fsl,imx6dl";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6dl-gw53xx.dts
+@@ -0,0 +1,19 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6dl.dtsi"
++#include "imx6qdl-gw53xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 DualLite GW53XX";
++ compatible = "gw,imx6dl-gw53xx", "gw,ventana", "fsl,imx6dl";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6dl-gw54xx.dts
+@@ -0,0 +1,19 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6dl.dtsi"
++#include "imx6qdl-gw54xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 DualLite GW54XX";
++ compatible = "gw,imx6dl-gw54xx", "gw,ventana", "fsl,imx6dl";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-gw51xx.dts
+@@ -0,0 +1,19 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6q.dtsi"
++#include "imx6qdl-gw54xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 Quad GW51XX";
++ compatible = "gw,imx6q-gw51xx", "gw,ventana", "fsl,imx6q";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-gw52xx.dts
+@@ -0,0 +1,23 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6q.dtsi"
++#include "imx6qdl-gw52xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 Quad GW52XX";
++ compatible = "gw,imx6q-gw52xx", "gw,ventana", "fsl,imx6q";
++};
++
++&sata {
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-gw53xx.dts
+@@ -0,0 +1,23 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6q.dtsi"
++#include "imx6qdl-gw53xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 Quad GW53XX";
++ compatible = "gw,imx6q-gw53xx", "gw,ventana", "fsl,imx6q";
++};
++
++&sata {
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-gw5400-a.dts
+@@ -0,0 +1,443 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6q.dtsi"
++
++/ {
++ model = "Gateworks Ventana GW5400-A";
++ compatible = "gw,imx6q-gw5400-a", "gw,ventana", "fsl,imx6q";
++
++ /* these are used by bootloader for disabling nodes */
++ aliases {
++ ethernet0 = &fec;
++ ethernet1 = &eth1;
++ i2c0 = &i2c1;
++ i2c1 = &i2c2;
++ i2c2 = &i2c3;
++ led0 = &led0;
++ led1 = &led1;
++ led2 = &led2;
++ sky2 = &eth1;
++ ssi0 = &ssi1;
++ spi0 = &ecspi1;
++ usb0 = &usbh1;
++ usb1 = &usbotg;
++ usdhc2 = &usdhc3;
++ };
++
++ chosen {
++ bootargs = "console=ttymxc1,115200";
++ };
++
++ leds {
++ compatible = "gpio-leds";
++
++ led0: user1 {
++ label = "user1";
++ gpios = <&gpio4 6 0>; /* 102 -> MX6_PANLEDG */
++ default-state = "on";
++ linux,default-trigger = "heartbeat";
++ };
++
++ led1: user2 {
++ label = "user2";
++ gpios = <&gpio4 10 0>; /* 106 -> MX6_PANLEDR */
++ default-state = "off";
++ };
++
++ led2: user3 {
++ label = "user3";
++ gpios = <&gpio4 15 1>; /* 111 -> MX6_LOCLED# */
++ default-state = "off";
++ };
++ };
++
++ memory {
++ reg = <0x10000000 0x40000000>;
++ };
++
++ pps {
++ compatible = "pps-gpio";
++ gpios = <&gpio1 5 0>;
++ status = "okay";
++ };
++
++ regulators {
++ compatible = "simple-bus";
++
++ reg_1p0v: 1p0v {
++ compatible = "regulator-fixed";
++ regulator-name = "1P0V";
++ regulator-min-microvolt = <1000000>;
++ regulator-max-microvolt = <1000000>;
++ regulator-always-on;
++ };
++
++ reg_3p3v: 3p3v {
++ compatible = "regulator-fixed";
++ regulator-name = "3P3V";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ reg_usb_h1_vbus: usb_h1_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_h1_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ regulator-always-on;
++ };
++
++ reg_usb_otg_vbus: usb_otg_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_otg_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ gpio = <&gpio3 22 0>;
++ enable-active-high;
++ };
++ };
++
++ sound {
++ compatible = "fsl,imx6q-sabrelite-sgtl5000",
++ "fsl,imx-audio-sgtl5000";
++ model = "imx6q-sabrelite-sgtl5000";
++ ssi-controller = <&ssi1>;
++ audio-codec = <&codec>;
++ audio-routing =
++ "MIC_IN", "Mic Jack",
++ "Mic Jack", "Mic Bias",
++ "Headphone Jack", "HP_OUT";
++ mux-int-port = <1>;
++ mux-ext-port = <4>;
++ };
++};
++
++&audmux {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_audmux_1>;
++ status = "okay";
++};
++
++&ecspi1 {
++ fsl,spi-num-chipselects = <1>;
++ cs-gpios = <&gpio3 19 0>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_ecspi1_1>;
++ status = "okay";
++
++ flash: m25p80@0 {
++ compatible = "sst,w25q256";
++ spi-max-frequency = <30000000>;
++ reg = <0>;
++ };
++};
++
++&fec {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_enet_1>;
++ phy-mode = "rgmii";
++ phy-reset-gpios = <&gpio1 30 0>;
++ status = "okay";
++};
++
++&i2c1 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c1_1>;
++ status = "okay";
++
++ eeprom1: eeprom@50 {
++ compatible = "atmel,24c02";
++ reg = <0x50>;
++ pagesize = <16>;
++ };
++
++ eeprom2: eeprom@51 {
++ compatible = "atmel,24c02";
++ reg = <0x51>;
++ pagesize = <16>;
++ };
++
++ eeprom3: eeprom@52 {
++ compatible = "atmel,24c02";
++ reg = <0x52>;
++ pagesize = <16>;
++ };
++
++ eeprom4: eeprom@53 {
++ compatible = "atmel,24c02";
++ reg = <0x53>;
++ pagesize = <16>;
++ };
++
++ gpio: pca9555@23 {
++ compatible = "nxp,pca9555";
++ reg = <0x23>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ hwmon: gsc@29 {
++ compatible = "gw,gsp";
++ reg = <0x29>;
++ };
++
++ rtc: ds1672@68 {
++ compatible = "dallas,ds1672";
++ reg = <0x68>;
++ };
++};
++
++&i2c2 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c2_2>;
++ status = "okay";
++
++ pmic: pfuze100@08 {
++ compatible = "fsl,pfuze100";
++ reg = <0x08>;
++
++ regulators {
++ sw1a_reg: sw1ab {
++ regulator-min-microvolt = <300000>;
++ regulator-max-microvolt = <1875000>;
++ regulator-boot-on;
++ regulator-always-on;
++ regulator-ramp-delay = <6250>;
++ };
++
++ sw1c_reg: sw1c {
++ regulator-min-microvolt = <300000>;
++ regulator-max-microvolt = <1875000>;
++ regulator-boot-on;
++ regulator-always-on;
++ regulator-ramp-delay = <6250>;
++ };
++
++ sw2_reg: sw2 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <3950000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw3a_reg: sw3a {
++ regulator-min-microvolt = <400000>;
++ regulator-max-microvolt = <1975000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw3b_reg: sw3b {
++ regulator-min-microvolt = <400000>;
++ regulator-max-microvolt = <1975000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw4_reg: sw4 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <3300000>;
++ };
++
++ swbst_reg: swbst {
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5150000>;
++ };
++
++ snvs_reg: vsnvs {
++ regulator-min-microvolt = <1000000>;
++ regulator-max-microvolt = <3000000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ vref_reg: vrefddr {
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ vgen1_reg: vgen1 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <1550000>;
++ };
++
++ vgen2_reg: vgen2 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <1550000>;
++ };
++
++ vgen3_reg: vgen3 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ };
++
++ vgen4_reg: vgen4 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen5_reg: vgen5 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen6_reg: vgen6 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++ };
++ };
++
++ pciswitch: pex8609@3f {
++ compatible = "plx,pex8609";
++ reg = <0x3f>;
++ };
++
++ pciclkgen: si52147@6b {
++ compatible = "sil,si52147";
++ reg = <0x6b>;
++ };
++};
++
++&i2c3 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c3_2>;
++ status = "okay";
++
++ accelerometer: mma8450@1c {
++ compatible = "fsl,mma8450";
++ reg = <0x1c>;
++ };
++
++ codec: sgtl5000@0a {
++ compatible = "fsl,sgtl5000";
++ reg = <0x0a>;
++ clocks = <&clks 201>;
++ VDDA-supply = <&sw4_reg>;
++ VDDIO-supply = <&reg_3p3v>;
++ };
++
++ hdmiin: adv7611@4c {
++ compatible = "adi,adv7611";
++ reg = <0x4c>;
++ };
++
++ touchscreen: egalax_ts@04 {
++ compatible = "eeti,egalax_ts";
++ reg = <0x04>;
++ interrupt-parent = <&gpio7>;
++ interrupts = <12 2>; /* gpio7_12 active low */
++ wakeup-gpios = <&gpio7 12 0>;
++ };
++
++ videoout: adv7393@2a {
++ compatible = "adi,adv7393";
++ reg = <0x2a>;
++ };
++
++ videoin: adv7180@20 {
++ compatible = "adi,adv7180";
++ reg = <0x20>;
++ };
++};
++
++&iomuxc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_hog>;
++
++ hog {
++ pinctrl_hog: hoggrp {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 /* OTG_PWR_EN */
++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x80000000 /* SPINOR_CS0# */
++ MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 /* PCIE IRQ */
++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* PCIE RST */
++ MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x000130b0 /* AUD4_MCK */
++ MX6QDL_PAD_GPIO_5__GPIO1_IO05 0x80000000 /* GPS_PPS */
++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 /* TOUCH_IRQ# */
++ MX6QDL_PAD_KEY_COL0__GPIO4_IO06 0x80000000 /* user1 led */
++ MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x80000000 /* user2 led */
++ MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x80000000 /* user3 led */
++ MX6QDL_PAD_SD1_DAT0__GPIO1_IO16 0x80000000 /* USBHUB_RST# */
++ MX6QDL_PAD_SD1_DAT3__GPIO1_IO21 0x80000000 /* MIPI_DIO */
++ >;
++ };
++ };
++};
++
++&ldb {
++ status = "okay";
++ lvds-channel@0 {
++ crtcs = <&ipu1 0>, <&ipu1 1>, <&ipu2 0>, <&ipu2 1>;
++ };
++};
++
++&pcie {
++ reset-gpio = <&gpio1 29 0>;
++ status = "okay";
++
++ eth1: sky2@8 { /* MAC/PHY on bus 8 */
++ compatible = "marvell,sky2";
++ };
++};
++
++&ssi1 {
++ fsl,mode = "i2s-slave";
++ status = "okay";
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart1_2>;
++ status = "okay";
++};
++
++&uart2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart2_3>;
++ status = "okay";
++};
++
++&uart5 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart5_1>;
++ status = "okay";
++};
++
++&usbotg {
++ vbus-supply = <&reg_usb_otg_vbus>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usbotg_1>;
++ disable-over-current;
++ status = "okay";
++};
++
++&usbh1 {
++ vbus-supply = <&reg_usb_h1_vbus>;
++ status = "okay";
++};
++
++&usdhc3 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usdhc3_2>;
++ cd-gpios = <&gpio7 0 0>;
++ vmmc-supply = <&reg_3p3v>;
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-gw54xx.dts
+@@ -0,0 +1,23 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6q.dtsi"
++#include "imx6qdl-gw54xx.dtsi"
++
++/ {
++ model = "Gateworks Ventana i.MX6 Quad GW54XX";
++ compatible = "gw,imx6q-gw54xx", "gw,ventana", "fsl,imx6q";
++};
++
++&sata {
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
+@@ -0,0 +1,272 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/ {
++ /* these are used by bootloader for disabling nodes */
++ aliases {
++ can0 = &can1;
++ ethernet0 = &fec;
++ led0 = &led0;
++ led1 = &led1;
++ nand = &gpmi;
++ usb0 = &usbh1;
++ usb1 = &usbotg;
++ };
++
++ chosen {
++ bootargs = "console=ttymxc1,115200";
++ };
++
++ leds {
++ compatible = "gpio-leds";
++
++ led0: user1 {
++ label = "user1";
++ gpios = <&gpio4 6 0>; /* 102 -> MX6_PANLEDG */
++ default-state = "on";
++ linux,default-trigger = "heartbeat";
++ };
++
++ led1: user2 {
++ label = "user2";
++ gpios = <&gpio4 7 0>; /* 103 -> MX6_PANLEDR */
++ default-state = "off";
++ };
++ };
++
++ memory {
++ reg = <0x10000000 0x20000000>;
++ };
++
++ pps {
++ compatible = "pps-gpio";
++ gpios = <&gpio1 26 0>;
++ status = "okay";
++ };
++
++ regulators {
++ compatible = "simple-bus";
++
++ reg_3p3v: 3p3v {
++ compatible = "regulator-fixed";
++ regulator-name = "3P3V";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ reg_5p0v: 5p0v {
++ compatible = "regulator-fixed";
++ regulator-name = "5P0V";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ regulator-always-on;
++ };
++
++ reg_usb_otg_vbus: usb_otg_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_otg_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ gpio = <&gpio3 22 0>;
++ enable-active-high;
++ };
++ };
++};
++
++&fec {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_enet_1>;
++ phy-mode = "rgmii";
++ phy-reset-gpios = <&gpio1 30 0>;
++ status = "okay";
++};
++
++&gpmi {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_gpmi_nand_2>;
++ status = "okay";
++};
++
++&i2c1 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c1_1>;
++ status = "okay";
++
++ eeprom1: eeprom@50 {
++ compatible = "atmel,24c02";
++ reg = <0x50>;
++ pagesize = <16>;
++ };
++
++ eeprom2: eeprom@51 {
++ compatible = "atmel,24c02";
++ reg = <0x51>;
++ pagesize = <16>;
++ };
++
++ eeprom3: eeprom@52 {
++ compatible = "atmel,24c02";
++ reg = <0x52>;
++ pagesize = <16>;
++ };
++
++ eeprom4: eeprom@53 {
++ compatible = "atmel,24c02";
++ reg = <0x53>;
++ pagesize = <16>;
++ };
++
++ gpio: pca9555@23 {
++ compatible = "nxp,pca9555";
++ reg = <0x23>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ hwmon: gsc@29 {
++ compatible = "gw,gsp";
++ reg = <0x29>;
++ };
++
++ rtc: ds1672@68 {
++ compatible = "dallas,ds1672";
++ reg = <0x68>;
++ };
++};
++
++&i2c2 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c2_2>;
++ status = "okay";
++
++ pmic: ltc3676@3c {
++ compatible = "ltc,ltc3676";
++ reg = <0x3c>;
++
++ regulators {
++ sw1_reg: ltc3676__sw1 {
++ regulator-min-microvolt = <1175000>;
++ regulator-max-microvolt = <1175000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw2_reg: ltc3676__sw2 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw3_reg: ltc3676__sw3 {
++ regulator-min-microvolt = <1175000>;
++ regulator-max-microvolt = <1175000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw4_reg: ltc3676__sw4 {
++ regulator-min-microvolt = <1500000>;
++ regulator-max-microvolt = <1500000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ ldo2_reg: ltc3676__ldo2 {
++ regulator-min-microvolt = <2500000>;
++ regulator-max-microvolt = <2500000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ ldo4_reg: ltc3676__ldo4 {
++ regulator-min-microvolt = <3000000>;
++ regulator-max-microvolt = <3000000>;
++ };
++ };
++ };
++};
++
++&i2c3 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c3_2>;
++ status = "okay";
++
++ videoin: adv7180@20 {
++ compatible = "adi,adv7180";
++ reg = <0x20>;
++ };
++};
++
++&iomuxc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_hog>;
++
++ hog {
++ pinctrl_hog: hoggrp {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_A19__GPIO2_IO19 0x80000000 /* MEZZ_DIO0 */
++ MX6QDL_PAD_EIM_A20__GPIO2_IO18 0x80000000 /* MEZZ_DIO1 */
++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 /* OTG_PWR_EN */
++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 /* GPS_PPS */
++ MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 /* PHY Reset */
++ MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x80000000 /* PCIE_RST# */
++ MX6QDL_PAD_KEY_COL0__GPIO4_IO06 0x80000000 /* user1 led */
++ MX6QDL_PAD_KEY_ROW0__GPIO4_IO07 0x80000000 /* user2 led */
++ >;
++ };
++ };
++};
++
++&pcie {
++ reset-gpio = <&gpio1 0 0>;
++ status = "okay";
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart1_2>;
++ status = "okay";
++};
++
++&uart2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart2_3>;
++ status = "okay";
++};
++
++&uart3 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart3_3>;
++ status = "okay";
++};
++
++&uart5 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart5_1>;
++ status = "okay";
++};
++
++&usbotg {
++ vbus-supply = <&reg_usb_otg_vbus>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usbotg_1>;
++ disable-over-current;
++ status = "okay";
++};
++
++&usbh1 {
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
+@@ -0,0 +1,373 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/ {
++ /* these are used by bootloader for disabling nodes */
++ aliases {
++ ethernet0 = &fec;
++ led0 = &led0;
++ led1 = &led1;
++ led2 = &led2;
++ nand = &gpmi;
++ ssi0 = &ssi1;
++ usb0 = &usbh1;
++ usb1 = &usbotg;
++ usdhc2 = &usdhc3;
++ };
++
++ chosen {
++ bootargs = "console=ttymxc1,115200";
++ };
++
++ leds {
++ compatible = "gpio-leds";
++
++ led0: user1 {
++ label = "user1";
++ gpios = <&gpio4 6 0>; /* 102 -> MX6_PANLEDG */
++ default-state = "on";
++ linux,default-trigger = "heartbeat";
++ };
++
++ led1: user2 {
++ label = "user2";
++ gpios = <&gpio4 7 0>; /* 103 -> MX6_PANLEDR */
++ default-state = "off";
++ };
++
++ led2: user3 {
++ label = "user3";
++ gpios = <&gpio4 15 1>; /* 111 - MX6_LOCLED# */
++ default-state = "off";
++ };
++ };
++
++ memory {
++ reg = <0x10000000 0x20000000>;
++ };
++
++ pps {
++ compatible = "pps-gpio";
++ gpios = <&gpio1 26 0>;
++ status = "okay";
++ };
++
++ regulators {
++ compatible = "simple-bus";
++
++ reg_1p0v: 1p0v {
++ compatible = "regulator-fixed";
++ regulator-name = "1P0V";
++ regulator-min-microvolt = <1000000>;
++ regulator-max-microvolt = <1000000>;
++ regulator-always-on;
++ };
++
++ /* remove this fixed regulator once ltc3676__sw2 driver available */
++ reg_1p8v: 1p8v {
++ compatible = "regulator-fixed";
++ regulator-name = "1P8V";
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-always-on;
++ };
++
++ reg_3p3v: 3p3v {
++ compatible = "regulator-fixed";
++ regulator-name = "3P3V";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ reg_5p0v: 5p0v {
++ compatible = "regulator-fixed";
++ regulator-name = "5P0V";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ regulator-always-on;
++ };
++
++ reg_usb_otg_vbus: usb_otg_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_otg_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ gpio = <&gpio3 22 0>;
++ enable-active-high;
++ };
++ };
++
++ sound {
++ compatible = "fsl,imx6q-sabrelite-sgtl5000",
++ "fsl,imx-audio-sgtl5000";
++ model = "imx6q-sabrelite-sgtl5000";
++ ssi-controller = <&ssi1>;
++ audio-codec = <&codec>;
++ audio-routing =
++ "MIC_IN", "Mic Jack",
++ "Mic Jack", "Mic Bias",
++ "Headphone Jack", "HP_OUT";
++ mux-int-port = <1>;
++ mux-ext-port = <4>;
++ };
++};
++
++&audmux {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_audmux_1>;
++ status = "okay";
++};
++
++&fec {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_enet_1>;
++ phy-mode = "rgmii";
++ phy-reset-gpios = <&gpio1 30 0>;
++ status = "okay";
++};
++
++&gpmi {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_gpmi_nand_2>;
++ status = "okay";
++};
++
++&i2c1 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c1_1>;
++ status = "okay";
++
++ eeprom1: eeprom@50 {
++ compatible = "atmel,24c02";
++ reg = <0x50>;
++ pagesize = <16>;
++ };
++
++ eeprom2: eeprom@51 {
++ compatible = "atmel,24c02";
++ reg = <0x51>;
++ pagesize = <16>;
++ };
++
++ eeprom3: eeprom@52 {
++ compatible = "atmel,24c02";
++ reg = <0x52>;
++ pagesize = <16>;
++ };
++
++ eeprom4: eeprom@53 {
++ compatible = "atmel,24c02";
++ reg = <0x53>;
++ pagesize = <16>;
++ };
++
++ gpio: pca9555@23 {
++ compatible = "nxp,pca9555";
++ reg = <0x23>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ hwmon: gsc@29 {
++ compatible = "gw,gsp";
++ reg = <0x29>;
++ };
++
++ rtc: ds1672@68 {
++ compatible = "dallas,ds1672";
++ reg = <0x68>;
++ };
++};
++
++&i2c2 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c2_2>;
++ status = "okay";
++
++ pciswitch: pex8609@3f {
++ compatible = "plx,pex8609";
++ reg = <0x3f>;
++ };
++
++ pmic: ltc3676@3c {
++ compatible = "ltc,ltc3676";
++ reg = <0x3c>;
++
++ regulators {
++ sw1_reg: ltc3676__sw1 {
++ regulator-min-microvolt = <1175000>;
++ regulator-max-microvolt = <1175000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw2_reg: ltc3676__sw2 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw3_reg: ltc3676__sw3 {
++ regulator-min-microvolt = <1175000>;
++ regulator-max-microvolt = <1175000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw4_reg: ltc3676__sw4 {
++ regulator-min-microvolt = <1500000>;
++ regulator-max-microvolt = <1500000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ ldo2_reg: ltc3676__ldo2 {
++ regulator-min-microvolt = <2500000>;
++ regulator-max-microvolt = <2500000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ ldo3_reg: ltc3676__ldo3 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ ldo4_reg: ltc3676__ldo4 {
++ regulator-min-microvolt = <3000000>;
++ regulator-max-microvolt = <3000000>;
++ };
++ };
++ };
++};
++
++&i2c3 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c3_2>;
++ status = "okay";
++
++ accelerometer: fxos8700@1e {
++ compatible = "fsl,fxos8700";
++ reg = <0x13>;
++ };
++
++ codec: sgtl5000@0a {
++ compatible = "fsl,sgtl5000";
++ reg = <0x0a>;
++ clocks = <&clks 169>;
++ VDDA-supply = <&reg_1p8v>;
++ VDDIO-supply = <&reg_3p3v>;
++ };
++
++ touchscreen: egalax_ts@04 {
++ compatible = "eeti,egalax_ts";
++ reg = <0x04>;
++ interrupt-parent = <&gpio7>;
++ interrupts = <12 2>; /* gpio7_12 active low */
++ wakeup-gpios = <&gpio7 12 0>;
++ };
++
++ videoin: adv7180@20 {
++ compatible = "adi,adv7180";
++ reg = <0x20>;
++ };
++};
++
++&iomuxc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_hog>;
++
++ hog {
++ pinctrl_hog: hoggrp {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_A19__GPIO2_IO19 0x80000000 /* MEZZ_DIO0 */
++ MX6QDL_PAD_EIM_A20__GPIO2_IO18 0x80000000 /* MEZZ_DIO1 */
++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 /* OTG_PWR_EN */
++ MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x80000000 /* VIDDEC_PDN# */
++ MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 /* PHY Reset */
++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* PCIE_RST# */
++ MX6QDL_PAD_ENET_RXD0__GPIO1_IO27 0x80000000 /* GPS_PWDN */
++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 /* GPS_PPS */
++ MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x000130b0 /* AUD4_MCK */
++ MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* USB_SEL_PCI */
++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 /* TOUCH_IRQ# */
++ MX6QDL_PAD_KEY_COL0__GPIO4_IO06 0x80000000 /* user1 led */
++ MX6QDL_PAD_KEY_ROW0__GPIO4_IO07 0x80000000 /* user2 led */
++ MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x80000000 /* user3 led */
++ MX6QDL_PAD_SD2_CMD__GPIO1_IO11 0x80000000 /* LVDS_TCH# */
++ MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000 /* SD3_CD# */
++ MX6QDL_PAD_SD4_DAT3__GPIO2_IO11 0x80000000 /* UART2_EN# */
++ >;
++ };
++ };
++};
++
++&ldb {
++ status = "okay";
++ lvds-channel@0 {
++ crtcs = <&ipu1 0>, <&ipu1 1>;
++ };
++};
++
++&pcie {
++ reset-gpio = <&gpio1 29 0>;
++ status = "okay";
++};
++
++&ssi1 {
++ fsl,mode = "i2s-slave";
++ status = "okay";
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart1_2>;
++ status = "okay";
++};
++
++&uart2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart2_3>;
++ status = "okay";
++};
++
++&uart5 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart5_1>;
++ status = "okay";
++};
++
++&usbotg {
++ vbus-supply = <&reg_usb_otg_vbus>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usbotg_1>;
++ disable-over-current;
++ status = "okay";
++};
++
++&usbh1 {
++ status = "okay";
++};
++
++&usdhc3 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usdhc3_2>;
++ cd-gpios = <&gpio7 0 0>;
++ vmmc-supply = <&reg_3p3v>;
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+@@ -0,0 +1,429 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/ {
++ /* these are used by bootloader for disabling nodes */
++ aliases {
++ can0 = &can1;
++ ethernet0 = &fec;
++ ethernet1 = &eth1;
++ led0 = &led0;
++ led1 = &led1;
++ led2 = &led2;
++ nand = &gpmi;
++ sky2 = &eth1;
++ ssi0 = &ssi1;
++ usb0 = &usbh1;
++ usb1 = &usbotg;
++ usdhc2 = &usdhc3;
++ };
++
++ chosen {
++ bootargs = "console=ttymxc1,115200";
++ };
++
++ leds {
++ compatible = "gpio-leds";
++
++ led0: user1 {
++ label = "user1";
++ gpios = <&gpio4 6 0>; /* 102 -> MX6_PANLEDG */
++ default-state = "on";
++ linux,default-trigger = "heartbeat";
++ };
++
++ led1: user2 {
++ label = "user2";
++ gpios = <&gpio4 7 0>; /* 103 -> MX6_PANLEDR */
++ default-state = "off";
++ };
++
++ led2: user3 {
++ label = "user3";
++ gpios = <&gpio4 15 1>; /* 111 -> MX6_LOCLED# */
++ default-state = "off";
++ };
++ };
++
++ memory {
++ reg = <0x10000000 0x40000000>;
++ };
++
++ pps {
++ compatible = "pps-gpio";
++ gpios = <&gpio1 26 0>;
++ status = "okay";
++ };
++
++ regulators {
++ compatible = "simple-bus";
++
++ reg_1p0v: 1p0v {
++ compatible = "regulator-fixed";
++ regulator-name = "1P0V";
++ regulator-min-microvolt = <1000000>;
++ regulator-max-microvolt = <1000000>;
++ regulator-always-on;
++ };
++
++ /* remove when pmic 1p8 regulator available */
++ reg_1p8v: 1p8v {
++ compatible = "regulator-fixed";
++ regulator-name = "1P8V";
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-always-on;
++ };
++
++ reg_3p3v: 3p3v {
++ compatible = "regulator-fixed";
++ regulator-name = "3P3V";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ reg_usb_h1_vbus: usb_h1_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_h1_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ regulator-always-on;
++ };
++
++ reg_usb_otg_vbus: usb_otg_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_otg_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ gpio = <&gpio3 22 0>;
++ enable-active-high;
++ };
++ };
++
++ sound {
++ compatible = "fsl,imx6q-sabrelite-sgtl5000",
++ "fsl,imx-audio-sgtl5000";
++ model = "imx6q-sabrelite-sgtl5000";
++ ssi-controller = <&ssi1>;
++ audio-codec = <&codec>;
++ audio-routing =
++ "MIC_IN", "Mic Jack",
++ "Mic Jack", "Mic Bias",
++ "Headphone Jack", "HP_OUT";
++ mux-int-port = <1>;
++ mux-ext-port = <4>;
++ };
++};
++
++&audmux {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_audmux_1>;
++ status = "okay";
++};
++
++&can1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_flexcan1_1>;
++ status = "okay";
++};
++
++&fec {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_enet_1>;
++ phy-mode = "rgmii";
++ phy-reset-gpios = <&gpio1 30 0>;
++ status = "okay";
++};
++
++&gpmi {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_gpmi_nand_2>;
++ status = "okay";
++};
++
++&i2c1 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c1_1>;
++ status = "okay";
++
++ eeprom1: eeprom@50 {
++ compatible = "atmel,24c02";
++ reg = <0x50>;
++ pagesize = <16>;
++ };
++
++ eeprom2: eeprom@51 {
++ compatible = "atmel,24c02";
++ reg = <0x51>;
++ pagesize = <16>;
++ };
++
++ eeprom3: eeprom@52 {
++ compatible = "atmel,24c02";
++ reg = <0x52>;
++ pagesize = <16>;
++ };
++
++ eeprom4: eeprom@53 {
++ compatible = "atmel,24c02";
++ reg = <0x53>;
++ pagesize = <16>;
++ };
++
++ gpio: pca9555@23 {
++ compatible = "nxp,pca9555";
++ reg = <0x23>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ hwmon: gsc@29 {
++ compatible = "gw,gsp";
++ reg = <0x29>;
++ };
++
++ rtc: ds1672@68 {
++ compatible = "dallas,ds1672";
++ reg = <0x68>;
++ };
++};
++
++&i2c2 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c2_2>;
++ status = "okay";
++
++ pciclkgen: si53156@6b {
++ compatible = "sil,si53156";
++ reg = <0x6b>;
++ };
++
++ pciswitch: pex8606@3f {
++ compatible = "plx,pex8606";
++ reg = <0x3f>;
++ };
++
++ pmic: ltc3676@3c {
++ compatible = "ltc,ltc3676";
++ reg = <0x3c>;
++
++ regulators {
++ /* VDD_SOC */
++ sw1_reg: ltc3676__sw1 {
++ regulator-min-microvolt = <1175000>;
++ regulator-max-microvolt = <1175000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ /* VDD_1P8 */
++ sw2_reg: ltc3676__sw2 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ /* VDD_ARM */
++ sw3_reg: ltc3676__sw3 {
++ regulator-min-microvolt = <1175000>;
++ regulator-max-microvolt = <1175000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ /* VDD_DDR */
++ sw4_reg: ltc3676__sw4 {
++ regulator-min-microvolt = <1500000>;
++ regulator-max-microvolt = <1500000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ /* VDD_2P5 */
++ ldo2_reg: ltc3676__ldo2 {
++ regulator-min-microvolt = <2500000>;
++ regulator-max-microvolt = <2500000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ /* VDD_1P8 */
++ ldo3_reg: ltc3676__ldo3 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <1800000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ /* VDD_HIGH */
++ ldo4_reg: ltc3676__ldo4 {
++ regulator-min-microvolt = <3000000>;
++ regulator-max-microvolt = <3000000>;
++ };
++ };
++ };
++};
++
++&i2c3 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c3_2>;
++ status = "okay";
++
++ accelerometer: fxos8700@1e {
++ compatible = "fsl,fxos8700";
++ reg = <0x1e>;
++ };
++
++ codec: sgtl5000@0a {
++ compatible = "fsl,sgtl5000";
++ reg = <0x0a>;
++ clocks = <&clks 201>;
++ VDDA-supply = <&reg_1p8v>;
++ VDDIO-supply = <&reg_3p3v>;
++ };
++
++ hdmiin: adv7611@4c {
++ compatible = "adi,adv7611";
++ reg = <0x4c>;
++ };
++
++ touchscreen: egalax_ts@04 {
++ compatible = "eeti,egalax_ts";
++ reg = <0x04>;
++ interrupt-parent = <&gpio1>;
++ interrupts = <11 2>; /* gpio1_11 active low */
++ wakeup-gpios = <&gpio1 11 0>;
++ };
++
++ videoout: adv7393@2a {
++ compatible = "adi,adv7393";
++ reg = <0x2a>;
++ };
++
++ videoin: adv7180@20 {
++ compatible = "adi,adv7180";
++ reg = <0x20>;
++ };
++};
++
++&iomuxc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_hog>;
++
++ hog {
++ pinctrl_hog: hoggrp {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_A19__GPIO2_IO19 0x80000000 /* PCIE6EXP_DIO0 */
++ MX6QDL_PAD_EIM_A20__GPIO2_IO18 0x80000000 /* PCIE6EXP_DIO1 */
++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 /* OTG_PWR_EN */
++ MX6QDL_PAD_ENET_RXD0__GPIO1_IO27 0x80000000 /* GPS_SHDN */
++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 /* GPS_PPS */
++ MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 /* PCIE IRQ */
++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* PCIE RST */
++ MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x000130b0 /* AUD4_MCK */
++ MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* CAN_STBY */
++ MX6QDL_PAD_GPIO_8__GPIO1_IO08 0x80000000 /* PMIC_IRQ# */
++ MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x80000000 /* HUB_RST# */
++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 /* PCIE_WDIS# */
++ MX6QDL_PAD_GPIO_19__GPIO4_IO05 0x80000000 /* ACCEL_IRQ# */
++ MX6QDL_PAD_KEY_COL0__GPIO4_IO06 0x80000000 /* user1 led */
++ MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x80000000 /* USBOTG_OC# */
++ MX6QDL_PAD_KEY_ROW0__GPIO4_IO07 0x80000000 /* user2 led */
++ MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x80000000 /* user3 led */
++ MX6QDL_PAD_SD2_CMD__GPIO1_IO11 0x80000000 /* TOUCH_IRQ# */
++ MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000 /* SD3_DET# */
++ >;
++ };
++ };
++};
++
++&ldb {
++ status = "okay";
++
++ lvds-channel@1 {
++ fsl,data-mapping = "spwg";
++ fsl,data-width = <18>;
++ status = "okay";
++
++ display-timings {
++ native-mode = <&timing0>;
++ timing0: hsd100pxn1 {
++ clock-frequency = <65000000>;
++ hactive = <1024>;
++ vactive = <768>;
++ hback-porch = <220>;
++ hfront-porch = <40>;
++ vback-porch = <21>;
++ vfront-porch = <7>;
++ hsync-len = <60>;
++ vsync-len = <10>;
++ };
++ };
++ };
++};
++
++&pcie {
++ reset-gpio = <&gpio1 29 0>;
++ status = "okay";
++
++ eth1: sky2@8 { /* MAC/PHY on bus 8 */
++ compatible = "marvell,sky2";
++ };
++};
++
++&ssi1 {
++ fsl,mode = "i2s-slave";
++ status = "okay";
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart1_2>;
++ status = "okay";
++};
++
++&uart2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart2_3>;
++ status = "okay";
++};
++
++&uart5 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart5_1>;
++ status = "okay";
++};
++
++&usbotg {
++ vbus-supply = <&reg_usb_otg_vbus>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usbotg_1>;
++ disable-over-current;
++ status = "okay";
++};
++
++&usbh1 {
++ vbus-supply = <&reg_usb_h1_vbus>;
++ status = "okay";
++};
++
++&usdhc3 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usdhc3_2>;
++ cd-gpios = <&gpio7 0 0>;
++ vmmc-supply = <&reg_3p3v>;
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+@@ -0,0 +1,457 @@
++/*
++ * Copyright 2013 Gateworks Corporation
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/ {
++ /* these are used by bootloader for disabling nodes */
++ aliases {
++ can0 = &can1;
++ ethernet0 = &fec;
++ ethernet1 = &eth1;
++ led0 = &led0;
++ led1 = &led1;
++ led2 = &led2;
++ nand = &gpmi;
++ sky2 = &eth1;
++ ssi0 = &ssi1;
++ usb0 = &usbh1;
++ usb1 = &usbotg;
++ usdhc2 = &usdhc3;
++ };
++
++ chosen {
++ bootargs = "console=ttymxc1,115200";
++ };
++
++ leds {
++ compatible = "gpio-leds";
++
++ led0: user1 {
++ label = "user1";
++ gpios = <&gpio4 6 0>; /* 102 -> MX6_PANLEDG */
++ default-state = "on";
++ linux,default-trigger = "heartbeat";
++ };
++
++ led1: user2 {
++ label = "user2";
++ gpios = <&gpio4 7 0>; /* 103 -> MX6_PANLEDR */
++ default-state = "off";
++ };
++
++ led2: user3 {
++ label = "user3";
++ gpios = <&gpio4 15 1>; /* 111 -> MX6_LOCLED# */
++ default-state = "off";
++ };
++ };
++
++ memory {
++ reg = <0x10000000 0x40000000>;
++ };
++
++ pps {
++ compatible = "pps-gpio";
++ gpios = <&gpio1 26 0>;
++ status = "okay";
++ };
++
++ regulators {
++ compatible = "simple-bus";
++
++ reg_1p0v: 1p0v {
++ compatible = "regulator-fixed";
++ regulator-name = "1P0V";
++ regulator-min-microvolt = <1000000>;
++ regulator-max-microvolt = <1000000>;
++ regulator-always-on;
++ };
++
++ reg_3p3v: 3p3v {
++ compatible = "regulator-fixed";
++ regulator-name = "3P3V";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ reg_usb_h1_vbus: usb_h1_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_h1_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ regulator-always-on;
++ };
++
++ reg_usb_otg_vbus: usb_otg_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_otg_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ gpio = <&gpio3 22 0>;
++ enable-active-high;
++ };
++ };
++
++ sound {
++ compatible = "fsl,imx6q-sabrelite-sgtl5000",
++ "fsl,imx-audio-sgtl5000";
++ model = "imx6q-sabrelite-sgtl5000";
++ ssi-controller = <&ssi1>;
++ audio-codec = <&codec>;
++ audio-routing =
++ "MIC_IN", "Mic Jack",
++ "Mic Jack", "Mic Bias",
++ "Headphone Jack", "HP_OUT";
++ mux-int-port = <1>;
++ mux-ext-port = <4>;
++ };
++};
++
++&audmux {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_audmux_1>; /* AUD4<->sgtl5000 */
++ status = "okay";
++};
++
++&can1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_flexcan1_1>;
++ status = "okay";
++};
++
++&fec {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_enet_1>;
++ phy-mode = "rgmii";
++ phy-reset-gpios = <&gpio1 30 0>;
++ status = "okay";
++};
++
++&gpmi {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_gpmi_nand_2>;
++ status = "okay";
++};
++
++&i2c1 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c1_1>;
++ status = "okay";
++
++ eeprom1: eeprom@50 {
++ compatible = "atmel,24c02";
++ reg = <0x50>;
++ pagesize = <16>;
++ };
++
++ eeprom2: eeprom@51 {
++ compatible = "atmel,24c02";
++ reg = <0x51>;
++ pagesize = <16>;
++ };
++
++ eeprom3: eeprom@52 {
++ compatible = "atmel,24c02";
++ reg = <0x52>;
++ pagesize = <16>;
++ };
++
++ eeprom4: eeprom@53 {
++ compatible = "atmel,24c02";
++ reg = <0x53>;
++ pagesize = <16>;
++ };
++
++ gpio: pca9555@23 {
++ compatible = "nxp,pca9555";
++ reg = <0x23>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ hwmon: gsc@29 {
++ compatible = "gw,gsp";
++ reg = <0x29>;
++ };
++
++ rtc: ds1672@68 {
++ compatible = "dallas,ds1672";
++ reg = <0x68>;
++ };
++};
++
++&i2c2 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c2_2>;
++ status = "okay";
++
++ pmic: pfuze100@08 {
++ compatible = "fsl,pfuze100";
++ reg = <0x08>;
++
++ regulators {
++ sw1a_reg: sw1ab {
++ regulator-min-microvolt = <300000>;
++ regulator-max-microvolt = <1875000>;
++ regulator-boot-on;
++ regulator-always-on;
++ regulator-ramp-delay = <6250>;
++ };
++
++ sw1c_reg: sw1c {
++ regulator-min-microvolt = <300000>;
++ regulator-max-microvolt = <1875000>;
++ regulator-boot-on;
++ regulator-always-on;
++ regulator-ramp-delay = <6250>;
++ };
++
++ sw2_reg: sw2 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <3950000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw3a_reg: sw3a {
++ regulator-min-microvolt = <400000>;
++ regulator-max-microvolt = <1975000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw3b_reg: sw3b {
++ regulator-min-microvolt = <400000>;
++ regulator-max-microvolt = <1975000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ sw4_reg: sw4 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <3300000>;
++ };
++
++ swbst_reg: swbst {
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5150000>;
++ };
++
++ snvs_reg: vsnvs {
++ regulator-min-microvolt = <1000000>;
++ regulator-max-microvolt = <3000000>;
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ vref_reg: vrefddr {
++ regulator-boot-on;
++ regulator-always-on;
++ };
++
++ vgen1_reg: vgen1 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <1550000>;
++ };
++
++ vgen2_reg: vgen2 {
++ regulator-min-microvolt = <800000>;
++ regulator-max-microvolt = <1550000>;
++ };
++
++ vgen3_reg: vgen3 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ };
++
++ vgen4_reg: vgen4 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen5_reg: vgen5 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++
++ vgen6_reg: vgen6 {
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-always-on;
++ };
++ };
++ };
++
++ pciswitch: pex8609@3f {
++ compatible = "plx,pex8609";
++ reg = <0x3f>;
++ };
++
++ pciclkgen: si52147@6b {
++ compatible = "sil,si52147";
++ reg = <0x6b>;
++ };
++};
++
++&i2c3 {
++ clock-frequency = <100000>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c3_2>;
++ status = "okay";
++
++ accelerometer: fxos8700@1e {
++ compatible = "fsl,fxos8700";
++ reg = <0x1e>;
++ };
++
++ codec: sgtl5000@0a {
++ compatible = "fsl,sgtl5000";
++ reg = <0x0a>;
++ clocks = <&clks 201>;
++ VDDA-supply = <&sw4_reg>;
++ VDDIO-supply = <&reg_3p3v>;
++ };
++
++ hdmiin: adv7611@4c {
++ compatible = "adi,adv7611";
++ reg = <0x4c>;
++ };
++
++ touchscreen: egalax_ts@04 {
++ compatible = "eeti,egalax_ts";
++ reg = <0x04>;
++ interrupt-parent = <&gpio7>;
++ interrupts = <12 2>; /* gpio7_12 active low */
++ wakeup-gpios = <&gpio7 12 0>;
++ };
++
++ videoout: adv7393@2a {
++ compatible = "adi,adv7393";
++ reg = <0x2a>;
++ };
++
++ videoin: adv7180@20 {
++ compatible = "adi,adv7180";
++ reg = <0x20>;
++ };
++};
++
++&iomuxc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_hog>;
++
++ hog {
++ pinctrl_hog: hoggrp {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 /* OTG_PWR_EN */
++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x80000000 /* SPINOR_CS0# */
++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 /* GPS_PPS */
++ MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 /* PCIE IRQ */
++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* PCIE RST */
++ MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x000130b0 /* AUD4_MCK */
++ MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* CAN_STBY */
++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 /* TOUCH_IRQ# */
++ MX6QDL_PAD_KEY_COL0__GPIO4_IO06 0x80000000 /* user1 led */
++ MX6QDL_PAD_KEY_ROW0__GPIO4_IO07 0x80000000 /* user2 led */
++ MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x80000000 /* user3 led */
++ MX6QDL_PAD_SD1_DAT0__GPIO1_IO16 0x80000000 /* USBHUB_RST# */
++ MX6QDL_PAD_SD1_DAT3__GPIO1_IO21 0x80000000 /* MIPI_DIO */
++ >;
++ };
++ };
++};
++
++&ldb {
++ status = "okay";
++
++ lvds-channel@1 {
++ fsl,data-mapping = "spwg";
++ fsl,data-width = <18>;
++ status = "okay";
++
++ display-timings {
++ native-mode = <&timing0>;
++ timing0: hsd100pxn1 {
++ clock-frequency = <65000000>;
++ hactive = <1024>;
++ vactive = <768>;
++ hback-porch = <220>;
++ hfront-porch = <40>;
++ vback-porch = <21>;
++ vfront-porch = <7>;
++ hsync-len = <60>;
++ vsync-len = <10>;
++ };
++ };
++ };
++};
++
++&pcie {
++ reset-gpio = <&gpio1 29 0>;
++ status = "okay";
++
++ eth1: sky2@8 { /* MAC/PHY on bus 8 */
++ compatible = "marvell,sky2";
++ };
++};
++
++&ssi1 {
++ fsl,mode = "i2s-slave";
++ status = "okay";
++};
++
++&ssi2 {
++ fsl,mode = "i2s-slave";
++ status = "okay";
++};
++
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart1_2>;
++ status = "okay";
++};
++
++&uart2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart2_3>;
++ status = "okay";
++};
++
++&uart5 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart5_1>;
++ status = "okay";
++};
++
++&usbotg {
++ vbus-supply = <&reg_usb_otg_vbus>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usbotg_1>;
++ disable-over-current;
++ status = "okay";
++};
++
++&usbh1 {
++ vbus-supply = <&reg_usb_h1_vbus>;
++ status = "okay";
++};
++
++&usdhc3 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_usdhc3_2>;
++ cd-gpios = <&gpio7 0 0>;
++ vmmc-supply = <&reg_3p3v>;
++ status = "okay";
++};
diff --git a/target/linux/imx6/patches-3.13/0004-imx-add-PCI-fixup-for-PEX860X-on-Gateworks-board.patch b/target/linux/imx6/patches-3.13/0004-imx-add-PCI-fixup-for-PEX860X-on-Gateworks-board.patch
new file mode 100644
index 0000000000..93f1ee4e28
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/0004-imx-add-PCI-fixup-for-PEX860X-on-Gateworks-board.patch
@@ -0,0 +1,68 @@
+From 4bb1d09fe48f51efac2f51b9280796e2d00a6c4a Mon Sep 17 00:00:00 2001
+From: Tim Harvey <tharvey@gateworks.com>
+Date: Tue, 22 Oct 2013 21:51:28 -0700
+Subject: [PATCH] ARM: imx: add PCI fixup for PEX860X on Gateworks board
+
+The PEX860X has GPIO's which are used for PCI Reset lines on the
+Gateworks Ventana boards. The GPIO's need to be set as output
+level high so as to allow the PCIe devices to come out of reset.
+
+Signed-off-by: Tim Harvey <tharvey@gateworks.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ arch/arm/mach-imx/mach-imx6q.c | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+--- a/arch/arm/mach-imx/mach-imx6q.c
++++ b/arch/arm/mach-imx/mach-imx6q.c
+@@ -13,6 +13,7 @@
+ #include <linux/clk.h>
+ #include <linux/clkdev.h>
+ #include <linux/cpu.h>
++#include <linux/delay.h>
+ #include <linux/export.h>
+ #include <linux/init.h>
+ #include <linux/io.h>
+@@ -23,6 +24,7 @@
+ #include <linux/of_irq.h>
+ #include <linux/of_platform.h>
+ #include <linux/pm_opp.h>
++#include <linux/pci.h>
+ #include <linux/phy.h>
+ #include <linux/reboot.h>
+ #include <linux/regmap.h>
+@@ -78,6 +80,34 @@ static int ksz9031rn_phy_fixup(struct ph
+ return 0;
+ }
+
++/*
++ * fixup for PLX PEX8909 bridge to configure GPIO1-7 as output High
++ * as they are used for slots1-7 PERST#
++ */
++static void 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);
++
++ msleep(100);
++}
++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8609, ventana_pciesw_early_fixup);
++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8606, ventana_pciesw_early_fixup);
++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8604, ventana_pciesw_early_fixup);
++
+ static int ar8031_phy_fixup(struct phy_device *dev)
+ {
+ u16 val;
diff --git a/target/linux/imx6/patches-3.13/0005-PCI-designware-Fix-I-O-transfers-by-using-CPU-not-re.patch b/target/linux/imx6/patches-3.13/0005-PCI-designware-Fix-I-O-transfers-by-using-CPU-not-re.patch
new file mode 100644
index 0000000000..688de09a73
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/0005-PCI-designware-Fix-I-O-transfers-by-using-CPU-not-re.patch
@@ -0,0 +1,67 @@
+From fce8591f73c6a30c231f220d1092362aae0b985c Mon Sep 17 00:00:00 2001
+From: Pratyush Anand <pratyush.anand@st.com>
+Date: Wed, 11 Dec 2013 15:08:33 +0530
+Subject: [PATCH] PCI: designware: Fix I/O transfers by using CPU (not realio)
+ address
+
+pp->io_base, which is the input of the outbound IO address translation
+unit, should be the CPU address. It was incorrectly programmed to the
+realio address.
+
+We should pass global_io_offset rather than sys->io_offset to
+pci_ioremap_io(), so we map the new window into the first available spot in
+the Linux view of the I/O space.
+
+We must also pass CPU address instead of realio address to pci_ioremap_io().
+
+This patch fixes above issue. It has been tested with Lecroy PTC in AIC
+mode and Pericom PI7C9X2G303EL PCIe switch, which does not work otherwise.
+
+Tested-by: Mohit Kumar <mohit.kumar@st.com>
+Tested-by: Tim Harvey <tharvey@gateworks.com>
+Signed-off-by: Pratyush Anand <pratyush.anand@st.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Reviewed-by: Marek Vasut <marex@denx.de
+Reviewed-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
+Acked-by: Arnd Bergmann <arnd@arndb.de>
+Acked-by: Jingoo Han <jg1.han@samsung.com>
+Cc: Richard Zhu <Hong-Xing.Zhu@freescale.com>
+---
+ drivers/pci/host/pcie-designware.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/drivers/pci/host/pcie-designware.c
++++ b/drivers/pci/host/pcie-designware.c
+@@ -394,6 +394,7 @@ int __init dw_pcie_host_init(struct pcie
+ + global_io_offset);
+ pp->config.io_size = resource_size(&pp->io);
+ pp->config.io_bus_addr = range.pci_addr;
++ pp->io_base = range.cpu_addr;
+ }
+ if (restype == IORESOURCE_MEM) {
+ of_pci_range_to_resource(&range, np, &pp->mem);
+@@ -419,7 +420,6 @@ int __init dw_pcie_host_init(struct pcie
+
+ pp->cfg0_base = pp->cfg.start;
+ pp->cfg1_base = pp->cfg.start + pp->config.cfg0_size;
+- pp->io_base = pp->io.start;
+ pp->mem_base = pp->mem.start;
+
+ pp->va_cfg0_base = devm_ioremap(pp->dev, pp->cfg0_base,
+@@ -585,7 +585,6 @@ static int dw_pcie_wr_other_conf(struct
+ return ret;
+ }
+
+-
+ static int dw_pcie_valid_config(struct pcie_port *pp,
+ struct pci_bus *bus, int dev)
+ {
+@@ -679,7 +678,7 @@ static int dw_pcie_setup(int nr, struct
+
+ if (global_io_offset < SZ_1M && pp->config.io_size > 0) {
+ sys->io_offset = global_io_offset - pp->config.io_bus_addr;
+- pci_ioremap_io(sys->io_offset, pp->io.start);
++ pci_ioremap_io(global_io_offset, pp->io_base);
+ global_io_offset += SZ_64K;
+ pci_add_resource_offset(&sys->resources, &pp->io,
+ sys->io_offset);
diff --git a/target/linux/imx6/patches-3.13/0040-i2c-imx-retry-on-NAK.patch b/target/linux/imx6/patches-3.13/0040-i2c-imx-retry-on-NAK.patch
new file mode 100644
index 0000000000..eec6697272
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/0040-i2c-imx-retry-on-NAK.patch
@@ -0,0 +1,38 @@
+From: Tim Harvey <tharvey@gateworks.com>
+Subject: [PATCH] i2c: imx: retry on NAK
+
+In case of busy i2c try again to get ACK.
+
+Signed-off-by: Tim Harvey <tharvey@gateworks.com>
+Tested-by: Luka Perkov <luka@openwrt.org>
+---
+ drivers/i2c/busses/i2c-imx.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/i2c/busses/i2c-imx.c
++++ b/drivers/i2c/busses/i2c-imx.c
+@@ -62,6 +62,7 @@
+
+ /* Default value */
+ #define IMX_I2C_BIT_RATE 100000 /* 100kHz */
++#define IMX_I2C_MAX_RETRIES 3 /* number of retries to attempt */
+
+ /* IMX I2C registers:
+ * the I2C register offset is different between SoCs,
+@@ -298,7 +299,7 @@ static int i2c_imx_acked(struct imx_i2c_
+ {
+ if (imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR) & I2SR_RXAK) {
+ dev_dbg(&i2c_imx->adapter.dev, "<%s> No ACK\n", __func__);
+- return -EIO; /* No ACK */
++ return -EAGAIN; /* try again */
+ }
+
+ dev_dbg(&i2c_imx->adapter.dev, "<%s> ACK received\n", __func__);
+@@ -635,6 +636,7 @@ static int i2c_imx_probe(struct platform
+ i2c_imx->adapter.dev.parent = &pdev->dev;
+ i2c_imx->adapter.nr = pdev->id;
+ i2c_imx->adapter.dev.of_node = pdev->dev.of_node;
++ i2c_imx->adapter.retries = IMX_I2C_MAX_RETRIES;
+ i2c_imx->base = base;
+
+ /* Get I2C clock */
diff --git a/target/linux/imx6/patches-3.13/0050-sky2-allow-mac-to-come-from-dt.patch b/target/linux/imx6/patches-3.13/0050-sky2-allow-mac-to-come-from-dt.patch
new file mode 100644
index 0000000000..bab418bf26
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/0050-sky2-allow-mac-to-come-from-dt.patch
@@ -0,0 +1,69 @@
+From: Tim Harvey <tharvey@gateworks.com>
+Subject: [PATCH] sky2: allow mac to come from dt
+
+The driver reads the mac address from the device registers which would
+need to have been programmed by the bootloader. This patch adds
+the ability to pull the mac from devicetree via the aliases/sky2 node.
+
+Signed-off-by: Tim Harvey <tharvey@gateworks.com>
+---
+ drivers/net/ethernet/marvell/sky2.c | 33 ++++++++++++++++++++++++++++++++-
+ 1 file changed, 32 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/marvell/sky2.c
++++ b/drivers/net/ethernet/marvell/sky2.c
+@@ -44,6 +44,8 @@
+ #include <linux/prefetch.h>
+ #include <linux/debugfs.h>
+ #include <linux/mii.h>
++#include <linux/of_device.h>
++#include <linux/of_net.h>
+
+ #include <asm/irq.h>
+
+@@ -4748,6 +4750,7 @@ static struct net_device *sky2_init_netd
+ {
+ struct sky2_port *sky2;
+ struct net_device *dev = alloc_etherdev(sizeof(*sky2));
++ unsigned char *iap, tmpaddr[ETH_ALEN];
+
+ if (!dev)
+ return NULL;
+@@ -4805,8 +4808,36 @@ static struct net_device *sky2_init_netd
+
+ dev->features |= dev->hw_features;
+
++ /*
++ * try to get mac address in the following order:
++ * 1) from device tree data
++ * 2) from internal registers set by bootloader
++ */
++ iap = NULL;
++ if (IS_ENABLED(CONFIG_OF)) {
++ struct device_node *np;
++ np = of_find_node_by_path("/aliases");
++ if (np) {
++ const char *path = of_get_property(np, "sky2", NULL);
++ if (path)
++ np = of_find_node_by_path(path);
++ if (np)
++ path = of_get_mac_address(np);
++ if (path)
++ iap = (unsigned char *) path;
++ }
++ }
++
++ /*
++ * 2) mac registers set by bootloader
++ */
++ if (!iap || !is_valid_ether_addr(iap)) {
++ memcpy_fromio(&tmpaddr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN);
++ iap = &tmpaddr[0];
++ }
++
+ /* read the mac address */
+- memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN);
++ memcpy(dev->dev_addr, iap, ETH_ALEN);
+
+ return dev;
+ }
diff --git a/target/linux/imx6/patches-3.13/100-bootargs.patch b/target/linux/imx6/patches-3.13/100-bootargs.patch
new file mode 100644
index 0000000000..0954391203
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/100-bootargs.patch
@@ -0,0 +1,11 @@
+--- a/arch/arm/boot/dts/imx6dl-wandboard.dts
++++ b/arch/arm/boot/dts/imx6dl-wandboard.dts
+@@ -19,4 +19,8 @@
+ memory {
+ reg = <0x10000000 0x40000000>;
+ };
++
++ chosen {
++ bootargs = "console=ttymxc0,115200";
++ };
+ };
diff --git a/target/linux/imx6/patches-3.13/200-PCI-imx6-add-support-for-legacy-irqs.patch b/target/linux/imx6/patches-3.13/200-PCI-imx6-add-support-for-legacy-irqs.patch
new file mode 100644
index 0000000000..23e94a96a5
--- /dev/null
+++ b/target/linux/imx6/patches-3.13/200-PCI-imx6-add-support-for-legacy-irqs.patch
@@ -0,0 +1,43 @@
+From: Tim Harvey <tharvey@gateworks.com>
+Subject: [PATCH] PCI: imx6: add support for legacy irqs
+
+The i.MX6 supports legacy IRQ's via 155,154,153,152. When devices
+are behind a PCIe-to-PCIe switch (at least for the TI XIO2001) the
+mapping is reversed from when they are behind a PCIe switch.
+
+This patch still needs some review and clarification before going
+upstream.
+---
+ drivers/pci/host/pcie-designware.c | 21 ++++++++++++++++++++-
+ 1 file changed, 20 insertions(+), 1 deletion(-)
+
+--- a/drivers/pci/host/pcie-designware.c
++++ b/drivers/pci/host/pcie-designware.c
+@@ -711,7 +711,26 @@ static int dw_pcie_map_irq(const struct
+ {
+ struct pcie_port *pp = sys_to_pcie(dev->bus->sysdata);
+
+- return pp->irq;
++ /* TI XIO2001 PCIe-to-PCI bridge IRQs are flipped it seems */
++ if ( dev->bus && dev->bus->self
++ && (dev->bus->self->vendor == 0x104c)
++ && (dev->bus->self->device == 0x8240)) {
++ switch (pin) {
++ case 1: return pp->irq - 3;
++ case 2: return pp->irq - 2;
++ case 3: return pp->irq - 1;
++ case 4: return pp->irq;
++ default: return -1;
++ }
++ } else {
++ switch (pin) {
++ case 1: return pp->irq;
++ case 2: return pp->irq - 1;
++ case 3: return pp->irq - 2;
++ case 4: return pp->irq - 3;
++ default: return -1;
++ }
++ }
+ }
+
+ static void dw_pcie_add_bus(struct pci_bus *bus)
w\t CB" ʾ^,Ŀgi~{0xeY4=xW}\TϮ`̭x{=/T>O|?xa'rnצݹwO _5sy!g\ޛr|D^`@~އ>pK\"SKST0X0˼D=X':;Arc8j_?E?c;N,&ji2ˁѳ!H5TSTKaSM1?@oSEHSi0YLR!bZ?_́sT]앋QWR@IS+X|)>&C_0kP& `1 $HmjGi:{j=QmbRuմ˳WM;:I08ULt&9QՏ a Kl\dFd]5G {_pcP` z `HչH@IW2JA@U+:UL2Bp='ЀY' )ْb_s'ugc'<Ϙ ) )L &z%F-bhE^ϳ~+ J_g4 FH a\)LxǮ&絖|+w{Irx9\70GNNNMZ,?M{jr]*;Lh8>Ϟu%#C'ԣ tqK|nE0UNjjutj,Yg-{3\̮g 4@έ,-# omTbx >C;#}Ͳ{D?;}^ޏFxX q=)I(X^ӷr)sH6q@ήX#vX?]|u*\oq 0VpF,, =ƺ)ZP$aR,x%"NOlGs*?]Pf@! &_c)\ Sv$htIiS^mT 5(,4ĎE?4sr ^l vrsqC8}19{xE.xkwH1Ԩ0PaߖKDRN? "8X) Bԟ."9g?zSyͯ{}[ P42!J'yL-\GEC~N~*pPQ4$4wG>FҢ8Pv,"~_e;Bd>?x)>@P0Ld0%HS  {pӄĨy07t`2/05zz_󤪣?|?C"M/<^ Bv&!>Q8w^~N?Oy:GS'<ńd&T! e@@h8J@@=ЀR)CBxSJR {@ȁj2 0].]QpIFZupDJaT3/ޗٿn7sG~}MǷw3ǣ'O_W7~2{w>%g.ht׬—7N|J{ײ;;6<,FDC.0X̧̂64hI>zpf,ipm nCgasU#Tb;Ap(l4FCD:vdۼi gJXCl#E,"I,a)M^9e`tzRŵ"]Bi lho',cbiÈd}>9:9fdykG/AٗVm@<\~A +BJ ,;y6;m99iziɿ'"s,tA/,<2uik4٢_#1M [ix  SPP~}5XNz}UTlIͥQ]MV~6_/,{NG0?Y>4?PH?8|3~(RTW~P0SFLnUI;s 1B9G;Arje IDp4y)`r*D56\?&'%HDnc-5*cJpNCekO(02Fj<2'. ]bVfbzȇ6/3U8&j+FoSV:M@Cݿ#oj$?k[ÈBJLJH*)"iN oyr[ :q$CдrtDp>)RTM̳O Ha81DlQq͕*8:Yݵ:Lb(*ZM C[ϯh;_=t\hԵUJ%C܇# @Yybvl̓WI=lg7rL!n.XlP\ /⁽݅{@+ns{ul? 9$~?.ч;E4:L#t. ^" hvbwH/d]X})jB Bb\T&@W` gRM4Iͻ "|"}.S1N6̜6Q"Tg&aw 2].g3 A9RsUdᜉ|}$Oxf h@?"{4Cv&N@ q9kοmջ1Lwz70  ;Q : VadW>i\qϻ6|#bucll0d&*-nsy "D5+p(LG  YEApA+l2$V"K\4: b*&R (lűDnD-@$ܸ9(-!IjcaHmI3[aƤAPkLaMb.]1Jt1oڣ`[hiӉ3Xjy$D.ATED7ڦby:P]8Mi+\ldk:6+^vhhCKBb4gE\6l튶5Z6ؚ iXE3d($+2[.!ORxϐ+6G=M6̘e13R!@MI_s3^.3)E }U1 @Qs"AhRi~tzCߟ3BT17hxg9J@Weɭ=ُ@>}^ٯ 8>e PbH_y}b?Mv?dpNz㻃G.Ot3;{([p.fg'rٿ?>aه.xɢk@yN~Ct0~;_õB n2)6p˾_w>RpSvyu[eF$>r~dM rC IBPH~W<ڣA3KBza|iAy]hxm'y(rƨQgxWPOL*hh5im6Uh)((Sq2zJ. H]X @S@-QD-MCI%@L2MPSS4ĬRTJD0U4 QJL4)L1EQE*PDR@TTQ%44 Q@BҔPD TQDK RQ(P,DQ0A@C#D!"QKSDL UM12#T%DT״"bo޹\ACY|ܼ߻780=/àxqaW0wP>ݓbIf2A 'YtUAw)qظӏg"z{1TГ@y;C\=ɠ)0 :cpHhoL5*8ۿ؂5"-_c2V> .1l{>+Fs fwwy A#Gi'?]"ZAHo"̇pHeA0PTIC̟L=_J@0bI$_=׻=̂J*PG|/kO9w~w>^Ar0DHb h95űϵwz&{z/D =&rxzL; `QxAO"Δm֖>jL8J*Ι>O4 {K_SlھBKv^۫n⦇&UGj?]u=~=Thf _ą"ϯy?ˆϷߞ -4A2$Q(^k_Bv|'{w:¸¤b1Q 0H1Dq5q;~k+'?pŽ*J"""0)2)w%QEj0yC0m|Q&DB hX~w '233?T ׏U `uONIz{Ŷ m#o=Ta݋Ϩo\ߟӻw߃dG{om|@Ϛ4X2ͬfǓ>#~p}xAC៛ " êӐQB% QZ*TQP"8 'OG8H2C55ǝΘI,TPQ0Q>B_A\>1Dqf˘"䮮 T(E~[||;ʔ9&mʦ솚ъ&"(LN*t(j@R'+)@;|5oH7ʽx d+mrwtFk!Բpsֆ#1x C!u^sC)=숪|wH:|7 J j52"]`T>*8[җ C} W&1ͭz7S,@ 8r)hQ&5;ۜsZsdN&rwth$R?JM8zɥucľ9#<ɗMO} ҞT ILk {jklp/I5=tfG[:]N 2'q%N'oŠ;}A y/? /? ޼WDCz>>9)R@ 6f'd *s$=p |==OK{c*ʊv `"!)#wO/ |y @GN*tU_?t XZPi@qTind! d?@C@C@Jh~$ 3<0&@ rgX}#bRӠJ(h饡ai=̡BU@ P TC9@!"JGȡ,AnP%iD0V5$lU@@ZgO08)d0L!@V_D:.J6=DR69)ss$ZV%bٸBN%i(ZM>g8V a=z)ڼZi^&*،Bcpϙ-d=<B KȈ40LdPw ͠Zʋ[,C=[n\tgqaaC8 h z3cm"pfxm`9Bh襈F#\+wŜaK0zD>3<^A$kM8KvN_Uu6yX8=8WcA~/C! cT}s[FV7 _60b8uOL]جʹ6ns0-v{EkF/Fhw*e} 3~rK8,oaWw# Lvp΂b.B4>n[D0bcLnݮbk᳔ jAP {(*ɆДU&يADc |s<:pR)ܯp4 |e'>ܫI&0S:Rv ^sbW1ICF(^1}K2\?!fhC㇀J@aI!vAA)q>3 %$@+ERP~&a%J#9YAجt!%!vxT}/A=aǦd K%CYM9C>.žArY] ] fe$Z@$i"MCza7D>Cx9L<5Jglh+NZp l=W }TqFvD SƢT8a@cOF;q,/6*pIؗ *uݑ03?w‡0=v05Wp |INa>a>$[Brbgpߚ@qEْw38=uc~)CpEgan,r..lP Bpa+C_`oԘ풠2\~($@)iji P/4Z!a>=Ӵ Vw (MCv;v Hwqp;䐸LwDwʅ5X &%J& ؇8n-\\zU H"PdPQ@02kD4+ك3eh'-ʞKX;Aj=S&_ǻ CpE'6O:bf%0k4 mmbj%Wnq|n d8oxn}zMĀt18:q} ցC{ *=N!w"$tnKұ(ݠ;>/7yH!M1UIB+?ƍ>Si Db)4wiYoC9g%&u `ZeI/3.9[xrXȍ(AOIC4aI: 4J6 S3PXT"_( Oסt4Qq#siե?_k?oiǏFL?QET C51}8<HE{z[Oo)0`ay;;!p&ay4sq^ʡP髸iE |H2@L-DXY˽L}{:;o̘X>)cY{.#ݝ_NӖ<׫8Vos7fο45wɪz:jǢ} +/ɏɿ'5{V W=ԋmܾ8)l]z7wsG20s܂aID^O{1"*z`L,0fFa0a#jGgˬtOl~lh/a [Bh*G5챝$Im~a 2XXhSt)~W&2mIM<p%. XF g0ךv"삕ajHԴk#ù\h0 !CD4Nr5dA$̮AR ;CS]FWW6gq|rKRΦdSHB]ͺrP!s.Q-yQvLFɿphUNMhnk#^  lUX&V&7 ixPܛ D1r#liv4ն.if(!R4's~S7\qNwp1Xʠ7wv2H$5ӞYݐK|,=l1V> 7+HdAHāp͙\s !#I)4̑F28Ӏ0և#Ta4;8^Ac3e臜E|7'6J(hkŷN)KRR훥(!IQ.s$qWEd9)l y-3 xᆑǘNIfYXcc(¸Vf:RM5NۄS;=ŠP۬ka rU]8% eH,!H?COxV9UJmK!\$HOһ[mBWB"DO62kr"m3=$~ޞS  ]?l&)ˇj!,(x{J X )sz8?*7~~NjŻѽ׻ܐo5껯E|~^;~M,Uo$,3*dY3tnd7ܟk^_Fj|y!`.O'DoUXw](pl_ΜܼBz㣫or>>7/ ޗOeZDjͨra)'N7ڇc\<,S5\ћ 0k Ng朳 D!02T%;O }cWWR'3AJ ?S?W@':>/Y l oB 9xY]Gm9C)`)(YJE4f lSO0mqDuz efXnoxɌ)+Mp`:Nf!:fW5٦K'=53`6$"|ݪG[IDHU.L%7~=Ij@rUV[b$1V7o_T:1?O)!o9,WM΄7OBieC+e *#b`B 40\ -lv]erd8y%1&8CH6p3"3 4:ܫ^'4ƳvY77l7䚲@R" 2mE@H>e3k%8}ܕYl Ì8C&!9DZޤSI*Ҙ)5;O9YS}@03PuщB&w&sQpq;C x&"r| vOn̾x$ι3D9٥<ۚՌyraºmfU@=ZPl2h %IL;SEr =קúȑ|0.X؏EcIkRxqpvf7=zhHTĝ##M)@ F'RQna!2Z$nlvċl88ɠz󈛹D%0"ś΄0xw׭T}['djb}Nġn "s<܁n\FpmFh*#1w#\<|ty(-4w,9+L[\ݒt2qiAq6NݶpÉnzmpsbekN6FHǮ#l3hn{{9>DɨvO:"XL$Ϭ 1CgUPD4XAU= ͪXCāYG@=b’_b9/z2TP16mHh3xȵʝ4cnXde CFP+WLOJ@ha{ + "*w{6 Wqn&h9ښ9W?a'( (l7%)\E)a2KK:eQK5Y-ٴˆSdQ\,6Ç|eıPh$>!$D BD8Gg)Frety)"jfaAᖑ#BY̰2Ԕsߞtq"LOЫ> U9<0H (9ڵr)9czkwpibQU 5".ܚ<{YF^DTp (\V"Jjv'{G':g XgkE4ޅ޾SRT M >NwpHxy^6`2/Mzh:A>1awCnM}faX14%(ҏ0e ۍ<>E@q@DFM6>cUA)ڃ|PHLdILd"̧@DЦܻ>9;}Ur 0 pP(;ӹCMF{Bw;h{g$5_)J;0Ի Ң;Qb(X2ë]jw?šQ}nF NYA`?!^!E$4o 'q#fs{7WKKP^mP~z_F;7aaӺ'!b:] *qk<ȕa6ωyw'Z#1G`j EMuɰU5SA1UT3TPh>DMҧl~D$/c[?fT?nhU'V]Qf>:%wX~@ex \ #l٘@_ۙ1SH@xl9ǁDdbbgv -ٙS4s`GX v8㑈nMUn㝦&Wa[$]&\LD4y짎`kL㻚ܷ9LrtLaqxf .mliYeQAP=ڠg4J<L,3~>_Q=ZĦ]4% .eҁއCav, R" B( NF1I%b(hK 98@(h("iBJWo:>}:yDUcr85#}x,SĦ_lAZ6$yGE9OC'`;dC  KQL,AEiXyDC% kTXiU 'x%t?ZLӁa3f1:pC0hVK  Ld7HDV} ~.z63xs!(<.4iX\YSa d)uFɜqFODw&li)'~Pϫ92eHq`Gpe v’Ok87,oM8UBbస”Ak>fķbHTBg^2W¦䂪o'$:ꇊGQH0V6|7Go>ru-e-\I7mqٷٴa,*4-knWrVo o8ͣdlw+HLb1 LVD^X\Ш~O@vjJ4"*E 5A0dC' `;\ 4Ҵ@))~p)[BaĸT"h$ Os.p7 IeJ[JDb06nBP>FoCiNT>W<>u?`Ntu4~'OS}^˯WCȁ8IO&;.\>?\/=P= Зi楬xJ;DK'!:R 3X,}d aDdG&ANHS\ݕlwTm*9w^Xɗם\Ң>xMOCܵ4M8æ#Q!.xx'q9h9=Mxsxddg$AD/M9xz_~vPWP[&YB@`̈橠d;onF[$swI*}7MISI& !:u:98N, r !aɇvO#gHAd'J%Jk=TExç2nwruGܜl)srˁ z6S`Ǔd\nƁ *cRo?5= 5,3r7V* i*|Iz;:,=A`^ܚ_/=яG~[qoSzuz-{864N;:m6fA@А'GFCCffezٓWoFo{ W:ބ B@|F0`|$1iw62}*ʄ[HC<.;q.7oF!aRo7da|?y K!I`)pE\ۓ6b&` hZ)Ѝf$"E~e<<@]Q@NXWf=0'd.iTBPZ't4  _<|P'4~C 442M Kќ^ JINP}ٞw&Ww1cU(`OyrНMȁeZKa]Y2v IXíi I}zUPȝ^.(v;^jW>|HW@)#:J.W+/!jH=,8xn#͵j&<gO$3(>(V1uVٱ<&!pPHQ\}]G`@B$14&Y8|81N!ʭL(n&˻<>j#t;–B0(qt] ׯܺ6$7מ?#Oy:hjaNQ^&.Uȟ|"b *_{&~ljOZ]#g T U (RR+TJL`GMjSc"x0GCRd*go/ď`昒o_DŽo+t=za O8@/~8jP>PЮɩe D:(05|P|E R"!69JAДMњ#Go 9xȱơ.eq (ӎ %PT"@/76 xEqB`BM, ?BeY$?Qӧ&BDJդD!*81D9#3=C@$8$q2u#=Owk<& CqB 9|O,)'0BbYu5H_SsąL&TWnAyNy ,N8qvaSH!;7]$ b=vhm mćs9.m5*f0YsZ!!Ipc%m +%NpȘl70驝 i C CAb-XVonrjf|\䉐3.ZlZK7ɅZ54dQ*Vbt1`tAh;қ =ͫ jrEpԈǔ &*J15svClEΤݖRx8efre%]#49̑1$s :\U.; 76+2mֱ楗$!P#p',1oɘnFT<ȅ+C[_ \2_0E>"I eԚPp?$\~ , BLB_{䯓3|/0"XF6s i'#ɋN1F1VKcqm0 յ̢. p!jkXHDyM0rޡ~%Ÿ7(qgc(J(n.lTi)E|dEY`aZ$[(bՠ&!CJafa"Ey2!]=ۇ 83ѿJ`qBhUN0L-_KqHU00##lzorr3G<ώi FIXAS#"hP\-׺a"؁h+7qÕ[ۆ,cN@ꖗT1ߎ3XjrC_ʜ۶(0HRB(.DH";O?vwN#E〉Ԏ%. )̔ ]Ҕd 5m y#I3v'=! Ft#[ISTyrU!D4`H<9X9";!4n@t SHIF񔢀=@ #Z_!;y(3/:crnsBjE\ gӮxFF7~Jɀ^'xr %mHV$@hR`~Mk0H@XSHp/+( 'Y"lOM /dW!n)r/D֬Aż) HYkM60d^C( pHjt:^@)HRZ;&9Ȃ9!bBꈨ.N)bZfI"#lQTСT0S4!L#Cw*)"4uM 6"h>`Xn#Y&&<ު?g?)H'!/YGqfa>7xd.w܌̽8hIǒGr8*jwBy@9(!!9rBֈn(ysfRViXF>JP(P)HDPPP (j{-iR&tTW,Lb@|C ) m܏鼛:_S8 B[1aFY g&I*(@q R)$aO>Y|d?E!;*9D?6OGXe:3U3`7bon܊qJR峻ɋ&&J")h GqEwˁf`/oٚqkΤᮚ 8Y= SVoݬəP#JYyu&j JP(_~l P!+"4}WոUNuG!)AilBrh "&( T+>Ȟ^Zq4ЀS$ BX4 V3% (PʉH P-!ABPR,$S#,@D B&$b"EJ"YX%Cb(h&T!J"@X%hh TEICT@PDg*d ?&%)f$D$JI9R (H)9 @Ą4"e9L<^-Ht"t^8 ":IRf LJ5L~O㽈C^ƖJ~N`rO 9 MnV=P)<݇ 32x9eNN_kGh$8dqy{ ! zdwD0!ϩzQ`s;sM *ij(jSM <҇$vMe1.([iu)|2~8> (kD0kP~p@.G(20D ~8F`e.O@«Ĝ߫P,,դ~ ?rwz,?ѫWStZׇ7mS,LEGW D $Ntp+bGAp~`R^L h&JsS -m8+"Nِr8?}lEow{Wq)4AMܺr0b:9bzrNYEAD:ud `TAAjÌ +.m154f"G#L}/N!!(<  &$V#y#$Q-+ (SI0@@B.G)>Wd!2~abBL!%#ؔN젠PsxБ{<[,JB)^V˛?O|>NHbFdԠP%0!]ٖD<'zw`h;&%t&* 'cK2髈}ad>O( G!d IւUM bՆPho߼ M4fKpgICso}{8٩{? MrY&a~g7Ͷ.ho3CqD\Mxf2ZzJ3\xbKdh5ra(&Xi@܅! FVCG2<,T;13@$sMHx~=[׬||`hIT%s|!>]#Ҵ*R- QDD=}T?$ԔP0JdYI}I7›fC}FF!&93fPta_ Nh`dR Dx_;;1G2XѸdߊ[#ϺLLEs˟iD ma F`Q=]2|(N+N88n%um['H|A1uwT8`$I5N&$ɒjuf~ypssEEbKXRt!5[2t'e%Q1VmE4pZCĽ<Ɛxd.AOxsݘA(xTm}~w?Ŋx>R4tQG}N񊰾*[Շ [ qv_׵ūd|{|1.瓮y鯻srAG|kOK7Gշ&:yhボUj&?_5'K]Zm1nDZ$r~+ˡ{ڇ\\\NH٤H2%;ytM$Ȱ$=٘) Eh<[Xy!# wR~.cr BsOOM)ۀ鄥Ռ(TA߱#Q@f 2e=^/z I`~IӀdh<.D٨rN);'{E(oـN97rt(`v,D!Bvj,\Bd+ -ZHtQ~8zw s]H" :SkC4mdeI" *!1E)zi?j~0 R(wOSQZ 1RhPy 4Xz!%B@3(Q@}{9JiWhE:$O'JH УJ:*Xv$$̏/Y;I`iv5@$4:& Wy }e %$IݏN1CHߋ_fy>xc .U#1UD%TBj*h׳IM=.x兄D?8 nѸ 2|@HlO$x48ߋs`D`0KYeѨ%&"D2B $?׹ *(* Lb+~ohzg%C$`3zmO!PH.,eLXH5F9p2hU ~'o?¦cB$ ىZ?UT?\M it!0`B?P7yÇ Y,9ꙪL)=ލ] %4)RMH(4S@"wZaAy$أ ]P iHr9.h#H-`eh{a@4C&N%Njj/'~Ŵ愥Z(JB h"bIB)J@ 2Ibd]}5R!Ll4P2W/!2ߒO^iW l?>f$`ahˏ\WDLwx'?o h PœRXLE!~eAu&y}j(cDSL!?8  $t S`3B{$fa&/i we:D!HH^vVajI>p]#J{"_{yD}Y5tűbNFsR&_d$h/Ħ-`apG=_tW  sh&>M'E{|$]+@R/t>јBήw;3ܨ!Вt9V*ebiUJ>(`=.q8ю 9% $KHMlp^h0=H~.0vʐ$@yW.Va))#YQy. +%H 2Yj%)qxr#Η5b К1$?h-]jjfhP"ZBIZ)❞0A"R aчp7nC#HRiXIliHD'|sBD_)|?N:ɈM J< P+y4= QЏy $J~]-i` [,.BX)( JA"Q+0 %)"`8`y*҇ OaBR&!)Zi@ٰ &`(M=w'U48Wڔ ɯ/X>5^u@dA*>V&B?QҢfRhq~/v/c M%˜&Rc0E\P̴fxx=tae4H)>cO $82?}#[|, G'IpCC~ՌlQᆇZ_*Pߣ/ދ{;.M޼ DՃcQL=>mCiVaZ("A5P|X~?i!>ovniχ3 O 8jHpQAm:%;%S°vQ_E @G|;x~xyN<SJB{&-|J'"|Mw,"R+Xs۞4dlTD I ۞eKIizPzb((0DDBAQEjEQ\,}m(Ⰵ7 3b37U<㤱.M!IM>նư\ &8t&v6c,")ϭNaĸ2Bc|c+B NjM(8IHsN<9.)-Os x8 볾ːRl'/{#ęeí MU-v|\ I$Dfi4P:pz61~/ϴȈOUb>H `A=̝ď'/R }L1S\ qG}%nNsn{t % D%ZB P8u˼@T+P>~g4yrtqsZԼNr AõIe64cu=96K }7<Ǔ #*z~hzW]Q2| PQR7^s OF{XꅤiГDBx/(DĽ89&Oq+rݷ7MAAʊ4(SHr|Y{.653{/'!@yJݍz iL.CCt 8O ghEVZ b""v% U,9s @⢁W"?&οF*C"˗&%c4` HQdZG3"% !JP^  )* B $& G:ȧv.v̯T ɵ")YZR*")&)Vɍ LII!2Dq"Fbq߷sqtFl!Š׮:{ny Hoa SS~::"ڇObV\rk6@9)F?c\dGN¼؎fpмhe]GgJA8 5O~|^*"(.6Kn4f렦J{Sj $9GnF0Npy L92c;58_')Ƃ4 XpqANd q[2@m)@i\$0A58ܗJsMdieHM)Nbx',/F D^at 8`?}cSsu5U]Ժ`XRBC,2s¡ah<Æ;L/y󑧁+R`M-L8C&O\ɹ]tC0@&r_)PCgq0 i2i J5<8Q7Bw~|$J4$UJ(QU MRTPDUQIAQ4E%"H L,@UI4UEUIH@4"!IQ $UE@@Р DRE)@PPX%i1*{[_}P>~ŵl!du .&Ď?,e.4UĎmc: AN;;[gKO@Qٱ w.>cl1Fh?tZMJ((eHASZ` o=Y¹OH" ̏.q2]+R?G\zĜsJrvqػGgͫ4q.*bUiWTM%E 3u킱wAt],rX]Ap0;6-Gl\'j1\w].INմm3raaTkNƈ׷41cvO~jhS?vT!M(yEH:;^b>6p9-h`ӱ c؄ RbÓ,MGr~lS߄?)T a:"_YgdcݼzFfݵ0`ɐQE?(E6O{;h]ɹ ٭?u 9}DU*/$ݡ u5UU"R?pU$>(M ${UwnFDvrQ9voك}pA>S ɠSO9(IT!̔78&IBhq?U> ^iBpHFX |&Eڙ)g/-/Sehl%ɃZտq"5aG#WŠ*\ؼS˿QjMP@ `#?|E[^ v~XB8𥨱%1Xb "Sp,IE3T(aSDznmӻw3Ns`- D L x$ye\'8ɩJ3UR(x m3L)AI}? >mx]{3wru{#A4tF4|FP(TdT-.T"t~~m G]=}>|uIp>riٓ|ڰφ2PDAğժ_gR6K&?obn&Rq yv@,??7~4܈/>MGU'ecWݿ.>_K<>U_ vf_^5``7-C`A]%_%!$EСOW:8 ǬOpRm4o ^V=~nk: eC5O HFi="dMb|6lfǹsP@_׌[#<:S.!J~Ӎ'0wDJOyc^Ȧ:'{Rz(6/6]ߞ]%6@74d*7\L5,V$6AӤ''Ljw* /G 5@fCApLšEE[/զJ{*I$:<ߧr6w ;PO<Ҕ'>?>(@6"'D~|O^CLBJ$HJ̩$%Nk_ܠ9h^48(:PD~5X7gţ$AB:vzCJVN|hXw9?{LzE]{ t2~sٻ^sYdžGAgkZ;)$>A% q@,Xœ\]ܪ¢%,ۄ&7vɋbdh,ZVLݐ䆹Ҽ={u= lfkD[ذPF꤇@[H@PF_d_EdIPZK!lC@S^9/D`=ӱFf^G0J>D! {mA4 !HA3PX"mE榫&ći]N`$ &pS,H ~;)_)jfa&)d#1%  #]- 0! H g)s>9DUL.u ҋ#Jc=a6G݃Zxar9b66jfB":K KJ.Nv/hD5XI*QBP"$>r~ͨ*:. ;JclS{rW|haq'! =?HrIaŞzVoiz|Z]ݦg\JA`soS:t M' HȞ'[ò}p! J{l4Ĝ |253I#!S㘸C-s0}5_OQhk6 ie@  `*P0X}{[}ynm*0W4 SU!W?,8iOu6ix9ӪSCO^)i8<b>b %Ϫ-EZBbyɑh*yXUukumf0Xj\ *FKDSsh^kyw׽P@*Pwci-8s HCmD1V v0gsC_{hxv y>|, g\`i~?p$6<µyT`bñog~|nz}LQ Gn__.P0eOK9z:./fOw%7<~~'^:$W^nVB?`hyGѽ=*fZl]g-nƒx<,Ɯm|\yݦχs1<ӡ 3==7d?rYPMRxrϳ?Ve;x _n3x  @$(!4y ː Lc}}xC@ Jl؟x 3`~1q]7{7;]"D;PQUMr)FOIaHYh& -PWGj&9T&fmA,.-$( Dq%i@Assk^ۯpv"9)AI!4S?Owa6EUفQ%zK$EC0xR2f` 2<=[y9O \2Jv)Լ$lM LCAB??8;; JZ*A_$5#4 "Y&I"|%pwGhoGB?$M#0>q A=wCFxbXA3g nH&>3rU3y;!{.q9?Uu31 B@Z Rah *bA5ߧz/>om|=\8:7Y k( 33-;{d/w(Dx\#5ׯ'G kim$ \/5;`Aӿ7^@$}s[nDŽ>ۜzj&8GʚGן>I(*Xb ۈaor`w-LR'Kꏏ.?OňI1%#2MKB/q/~\?D<rɐDp;}3'BsN ep ĝBGˑ$1c,PC.$ǖCkƆ^t"ZTvC83zڇjFebH ZK{Kȡǜf|: uE5!`Tw ӝN=k bF풹6\.˺ly+8Q|K ΆO wk@QQJsmp\af)) e@[x^܇pCEAw+X GК|w'JWBR2/1n'~\j=8y`(bH 0Fꢿ2j) He$(ML%(@ė2V(P3a'y}!G!Ox=w33鄬6d&FV80S0XIjN2 w`q/Q m3/;W{I"Ӫt䍍1,- -JR49=I{ @hyfy+(h?,i> d=^7_xuSE.Aƙ(r|^O7gۇI`g,Z)^k -Ʀ@9$MGObk(]6urĮלY20ʭhՃPݘ&yZo9֎;ɛpۼ&ޘZ'9~s4&~k16V4LBdruF` NtRD Al{jjJ<ڤ ݬM9یd_IA!*n31xs@LbȿǛ 3*̆U3 T 4Mduv] (fXpX aCl.BD֨"R3 dNCF X3DWEd#Fb!B 1Hb_!N7[1x> 0 #U& <5~蟮䝩oAmSbL1b*l <\ @<he$cӅ fDKWV_7y71e6hQ#q)q)?>ODB*v2{lBC٫)O@a CM@F W_ c̆s9 JP"AMc˘44YȑU"h1(U7 B P+ߩU(P@p6e{7RLkC$nuT&IC? +~ ޲Q>O{%5):=:x'xHv (#Gb`C)&mTP *   td+`}':L,d-rf!%5N : /D'mCv2' ZH sp-WO0C _ "#C҉>@ϫ'@:đd%X@LԒBiiScd!;dp@(}xK t8Gy¹.9Zt4#BibRb h* z`h2SE!BOt#'`54D0A5ME(R :oI5đs9ĒA"ЧgIz@j j_+X,*@Pԡ!*F5I4BA R PI%iD,4iK %4ikM. 1$BxA)( Gqe!"PHcx='ͦăNAJC+8hBl a8QQ%Ph1BLPqew̜Ҧ54 O-0͌xo=tMPKuL= B|m׻/3~a J'%Fg{dyH~,az]_w\]eQWz"Xq`y{uwF O ?ҵ&{BrAEj aT ٌ&AY` s8X:*;y [c;d8bJeeȹ$̬ۼ؇ T)c!(3ֿJf2Xp=L$e?[ V*4FAs !%eb`Xp3I~\дB|-s+U\&&adӹwa8"RmZ&a/ud3~%snb80f0ۑŅ@خ$LH`3_qʾ.&c>6|)q þЅ8.X .C?l6%e%# r[A{1,$pKu{@=6c Mhs f «a/Ugv3.-qH8qvVA [qg3:ߪ"'+ubwEƃ[**!"!sg@b2be[K٭UB $Br晐8~,EbpT!.Sx44M͗|˸7BA,fg9|E|7g>OGnT"qRĂ :p6AmVm.4Gi ,-urߨ^w>|oHI[Tt-taMs4s.0/蟙$6 tU4];!gR8RqD1>7H )Pӳ޽0=P mk0nU $ aHa=#1^[xYߵrmyu?6tKkDra]YECEdO! h5w1WӃjo\ں+bӤ `d-/"B\y9 aaC;w5YR PqBh2;i7զp\Z.`():&g8{rT(!Wi}>l9  h@10"PǁrQD$:CgRmLD9V]VP]l!SC6[00\QƷrm`}@IpKB@ɰ N6Ѵ n)>sG ?'3YSM׮Yӷб~ax[8} 07!㇛(vmWa~[LskgMULʋ5aXىs 2183>֊f``-'ʐh&I"E5IAhX"<-SaDwYmrE6w m{'yhΧ+=>]4~za4AO73eLшwb]0mi߼';11H=+Z =];HNBΟLǝZ9*k~ojrԣwv;ʺ(v;0;'?IoIldl Lzͩao{%<]A=c,87۪зlin3HT }p )^ Qb!Q bjw!dx`XVr`1L @+qm7DqR(#+>ȷkܴQJzkH<;=/xfNuhQ g3V餈 +[N%[}?kWXtG.3Axts-C[;FԐzuHN@S` .@!b⢥f@/CsK6Dd1NGeڮǏZE"<A~Y>F2gD2z^zaM['M3 4$Aѭ`N]!#!bM+z CR7xyW͓+&a8E"霺=˜6wqPa`jVlA5WȄ2;5/]6yDȦb'%{%C%. ꝸMJGxŸ C牿fb2N*'n|ln-Or'CmO ^v6m`bA䭭W粙5ʒ¶%Ki +H[rZQχL7tdZy^XjޫE_HNTk!Cw!扽6D)MvMKnE`]UZN,ر޿ʭV>) ^(0&1x=ka[HcmQ\H! JmWkI[ wՍl6]К3*VK3UI:qJFTlf0z>4EM?y4T0Wh[|GW<1'7OLR7XPw=80sJb=OK8+Ybd#7 ]ۼo5z Ì@dTHUө|),R7t7!Eƒc9qYZmP=sUгKD w.~#q⍍{3Ap5|FoaD{v}1.t*?,w{]wz?ڰ6W#j`U}ܘzvwj_$ wʌ͜RK r8"\ybTYvD|3XYSsiz p:S4bKr< Lww2,:p$?.Ŷ@N j @//oWՇoYۢ=ڃW귎nPd>u>or\a=Gz2_۰EjV-f 6͞ \ߓM@eL|nd|8}F C7Ĺȸ_S x< 3/(c2QаdX R Cw;0]S:~4DRȑІ:j&uvDCp9aTG-%P{̨%% C"ɿXM^oʝOwLzh#Ru݆1wvM/2pa9tï;GzuH 湾{.bd({ɑ9QtY?RpuL+}l@CfC{HbED'ۧ?9H  %z˚: Tgl] {pSvLFxCD‰C \Ĵ$b2ܘ&kC$p~^n^xY9'Ȑງd:Y\C=^ŪgiGz|;p%x00 HeAfniYs=nAsv |o퇣,$|SӝHL7_o(zg#zOVa&/ nS:2y|SE֐Ԏٝ3Ir`C!v3u Ի囒ES9`Gt@iΦPpbč&$XQN% %]s> 1A:lA|P Fv_=iS<=snkv }9CL 06aHw1s%8)2'b|܃/`>~*|c_gcV&OB?%Q? 2$ܴGJ~H|zD;M &MоY`SmSE+(;-5O.#I \dL7Flnm*m6)D *afr2EW Kv5d,c[t @'AbhTV#X }ϙcQmɥo54p`hmK8IJ,0?_4˂'1G-! PLaw:*O0wэ~aƙC<}yԓ~Q88ǫwO?]"wta3?xJ|{er0qT\o'$ c} ;w nLc-B/w;ԓ4Pv]hk 7Mbop{* {ry.'0O/zkY!ƚ"~H }◮0DhFȿ&GGiI>CTn]niʖqdG`7C/[z9,=BOy@1rw;i,Z3 vxdt{xZHĦHwfg \y#vZ i(O}Hzn6 gqrWyIde$8ƻt;v;v:d%w8 h. pf@}"kM$FUKk^AmlwoN*)ځN&%2jr v%Rv yqLƪNdMatݥ&0[B'-.V@N'FA8E(6]Lb#*p%Nf&b?(EP?ja4pH+0·2>Ci3hiIϧ=W~lx1"~d_nj|//KmRdϢ጑sA_;rIەäc#,'ר>ܓSbTOsv n|951v;d=ܮ SB'M @;>gW PΘ&@tU5r%DUDU2PUESDx٪"J B*B!!$BO$_7& ( 4))Z:(%;T>|& $8 N(Oye uJ4(|ȈUV=ٙ.ǟ&`~?(~g4=Ȃp2|R$nN"ZCR~Ok ~"Dy{m=pmԔC 1mi6'`'`ˎ㚹uOр~ǟ<@QGN0 x}y91l.|Mtщ 1 -3TJ* H4#z|z=x`yc ]p( %o7X1 ,{hq5Q$~z8BHriZR"J98Ɇr aM3ښv$ΰ+fǥhBxKӝD%PVMl+6UǢ9hFf?g`^E(ڥp+Y%irnI& ~9.+9= ӳa7{Hg'.KÁ%RXasUҫoa\dg"(N`?ô<yف1% W-.el7spIʢZ9w;W;u\czs|_IdCGJ2Uׁr9)xա9H⃷e]b&D92BP.Ű> NCZ"WtxjR|EXP%!HS9t/DɊbsuE4 4 > aڰ|hB̔d񧃧~![)$RR#tb`,XDb)M{URe=o])L)И`,dYAx;aݸ,nDR@:>xϷtt >7ZfDM4=KU!9nX[xVV;yRG2kvME4]wD tdqZnن IrY#bL6G+94[FK7õ'y`!xPH"nA ;>USzD|OP-z|zNwh, hSMa p=, BUU T/,#)E xWZɴ) :kh+GӴϝBB'JW)FhB  DE0+iisN_NN <|1 :p92 ``Wsu2,% j`6h2}`+LS)>K.&NYP_N JM H~?Nzx4d$40oX7xIb@1!CS@'i UW1< h?9kcsEBgIafGg|F[?Yw _Xa=`NKH1JX+3F UDbgd6!K0JTp)5G0YZaAyիTmk_lbfN0V^đVƆ2 'WBʫVy3[gT`P]$Sܔ8QkP aרn @v?:-wqp(sȫ#Y HF Kay%LZjⶺؒRZ&b[`p+V"pw羵|"z;^1@ `/"w~@&4DAi]٬u] Xevy(f'S{SN}> 3/p$Av'x~-" ^xިl7]L4]+jVNA]72v\;dHtsdprw?3䫍<5xd~5ҏ.k%Ë4A~o@+sLTC$<ޕz@;X+P );̌(]rH`$ ؇uY!hd8l]j,`Yhv-8T^˭'@@ΨZg[oi#+|+pdku-!a+}d!d,wΨPȴ/xŚ6| aJ8ymc6zEC6ˀm{MU '64fЬ\D!K$p./@A`~^d]duk="X2|)O B;t0oMt*ڄO g CQLXAa"omy>-sH h M=?U( Y [˜EqU{!I cP+¢'~o=}f1Sr1=md䇦$B*d`e0kZ97$Z66l،O, EwO\t.5.=rNeJy//xt= \ t\Ha$Cq(SjٍI}טWs7+oey~}\DHxsaŝzן%;;AK;zKm*"!mc}¤LXlU(EkMHJ20@g{v@)R'tn0Il 208i)}/NeE :yfzxA0X&,FT$ uf<87[Y@6/Zv{bjAۤ62TE__//wcB2tD;_ Ջd`g7KVì!CAf )fjrqL/Ԉ;T]\n'YEdmk9,B,SPN'!'8)YsXr/tEk>sw;ciqܑ . ,/d]/&mC6)ȸ65A` pSL涜7;m7"Z`EUúb%=oʉqڬF p ΃!"o&FM'BU ~ *}{%JV'9׊BE0 nG.Wr]9drhJMRaj& l 2Mzq=M舷rY'Yŏ:+{zԏ;CäX:Ta"z3+ 0G" 9u;'E Mp&$TsH]6Ĝ>fk}!a"ChAy苕ޝwp,C5L 69U̻H,4`7m[ QJDL ~F &, ]qҀʙF$9 .&8ٮZ׳Cd8}a6%eeXxeg#id #.[VX\ gD6bRHE^:{w 2n%B' e:ol,Sӻðmcf^%U1: )mD.XWGQ=g ,(X^hU@X`ق, SP.3d$`7UƷ`C (ut7*MŐpeÞ3N`ÎhS4bC!aNGw 6{Q{ȏvx@gIxHT.7 ɑ`;/~wAO¥o4I̬ YNi JdBNP2ۜ둳%rvi3s+a&9uw8O|0O5uԙ=ׇ~ts3|FOYfvy.Mdshj"ۘg6n[e n@ Ⴒ0iw|ȐSex- = k)PBI|G.Ǜc/õuig`u@@ ax^{gp /CpfN`A@ɐC${Boer\9ͅQ9di}B%1ȷ.K@[q.4m1!aN[(.es1ME7I w=Ĩv^5 *,Fu|!fsD9+v{6|Ьm8eqe#p U@X3-I' uD*ء]pUbO'}A aW7iPjehC`H0[W:Lț6V3H[Y* ZJXWX?`iLg#ٳrs.NƓk@Vn8mBx Rdt(lsjg)O/Aiu^-@-栢*:bL`0!d Ýn3tNUެvNx3rw3hڷwyM{5aBEL^*8$Xm2v\EZ2Ȳ j 8&T,6X@{Rlem54l[~w=l RnBSf; a`Ćʔ#G5vLgbKdoC y >Ix$;_jIr\Z}Jg\CuyB,IIDD0ȦXfЈ3@ȕLOrX}m2哧4DEX.~vO9~`Ӌ@Tςz̠Vsov! +7A-.}h'Ѷspљ2$ۅyi ?2~Y{iOXT''›i18@d8%\,Ka /j|)0Pa~>~lz%qMz4e}`,Gw}?V)0SYًϦ_v>&S+:!ư'22.~2cx=hآ|/ bӕJ6űA_GN<ӑ&x8kXe&Յrmy7 BA* *fqN6BLI|*Y=v6JAPbȝb|==F TEG2M ;SE bCUotg6 iz;!;|CPō!%U}D C p zPd-20!( N1ģ0d~a1'U;MsI0#w9oA a V@?'v,)4O14p(0 $a\pL dTpU]!Md&_S zI`( >?sȵ!OƯ|f\'X`6"c<1j)8۱y!Fhv0h Iy1O$I |;ۜE3o٭^e|oO9ˤ}5-38iғKCakK$`:bCNF>MU0w=C ` `3p4,.2 9s$}N=LFzpa <R E R ~3=M&$MQ;Z9$M~>rQe"@"̓L*(@;dNΣOM;Y?7 CC':͎,,V" ;.p䚳K:QK:xkVíb0l5&'XUM\^ 0{V Ҡ&)jf7Aϸ4|rn>w9RR T'? |[^8e*w2/#O\Lt'HL 1~9 %"MHzAߏx{dϩQklIv0l1y$wO:G!EB+T99s{0NѶC6pE'Cn6"K52"ppR| QHE!$yS@CE ' ТiU4RPr t J T%2R ШRrE)A( $iZiOP htAiEe`t@4R!TP9 diDP%*#HP #9ux_߁}<ȚODOF<^GıjU298r2 .BHf)&s0I t@ kL40Utjܦ9KmO@C@k)AH> STkP8æ]sHpB~bIq(-Iv,Kd1(`  %* RN:q"C"bh9Ec3AٛF>Qn݆911)YLc_~ U)ZD4/1V[c"Z;&CH[F4Τ>H{?Y轧C*yzOE`tُM=P<Ⱥx"nm7C$܇fxfLC݁ ~lj(4DOcٍJf_n΀)M9^$:?~ E$40v<)ӻ$<0=F3v|9ҭGĨ$`SP;+^^[-N04@8HXBCӘ]8V-hCtЬ4 % óђ,NdcZE_%!{pѭlvM1X)س3M>qnEljgIRͤ~9{@)\ɚA Ԃ 8(,@gqE;0ȡ}L* `s6z5asLL*ZI%IekQZfÂf(b4$2]D}[hS hY9xrsz^u0zLgM%{P%sNOlN1]~1*Х_fDڒBċHt@%#E BO&&̈hi"JQ]`553J)B'a 4]QlRܨ)@#4- :bP'Ȃ !ȥ 8@Z ;*#qI^ԈJA)*$TH"$%+uGt풚iY5rЊG%B!?n_io?6GSE-8_N =jCˤD:CG}uqXm#DƨOWŌNybw :BMuËD^bAMh#;"H|_0rO엄,G8fbahd2*!U;҄O Ut s< f&Sz.ZU\ᰣY&HnJEBd`}d- xH;ya쯶||6hD@EOHEW$ ԻP%A9A{O00TPvq=b=ۻj Ҏc2k(@I!I5!ծ3 ,4=a8i iCME>ξM'}]Zƛ5%a+DT%!@<iPGu<0猻ARSQ,Au"CsPEį4YL<&^i$x' w0.vB9t<&ޅjFZ++QDTr-s@iD֋Іn{vP[g'l-QϯOHdR%),s g:T6do?2 pKݐHu(߃ 5 -@EX nYɊb6#Ɋh)^A)(H ̮ZPwe3wWQG`~IkP?g:zǣL?h X;QrQ}#? #0F\PSTs-02 XN60/k' 4y^+I{9{z\ģ*:IDk>Snj )]~MDqh#x2bJ8p>!u,?kQ^rFDnP?,ˇպ۳С]; қc\`c*eiU7HBT\(I/;.IXh:e|.~׉ *a tySPBCeH?Hz&뻚lYU\o7hdp}h' ~ 'փv>؂MwH h%F!I.tbbW v|r{ȇdzVhI\v}!?`01+X@r;00H. D6H|N $3>7\ HJBҺJ%Ϗ?s"=BG$|&|M<GwE=BCt~L!`(i}nl M꯯u8dYl. Q=J6k"ZeKfy,PwrTT;`Ex$))"OiEbt S ?_ݐOҋ?bC&;>=x s ,AFa 4 0L9V@P(D!AAAOI">>91. 80/Έ"rY _PP] ]"ZV^RCHɩB]\@#$3d'>j'N'kLPgĪb@Cs亣 4L>CƟ/\(=d'۴ZȚS0'ZsP<Z1ވsȂ!["wTb8(H^/Fa| {U<ܻYwٖu2 6"f!PHw a. s#w0lb96}SP94 rG(l")IM"AҁL35EQPKUIQI-HMRP"U EE;ł"snCg^Ā"ʱYg\ݓb%X@{z\WD8MsZwMCjD́˺K%=đ83cĂ&)r rIr;#l3' 9LA6fQiׯ4thpNc}PKwhn ǽA?S 4TA xqB,>@k_[fgRpW;SDaO[I9@7t{bҾ˻~ 9 ni©87kvNMuͤyeAqDzl4)ey  Jܸ0D9{%3)0wԦ\ N/D+M ZwƖa=Jkc J!2D#ACBz?w %OxɖM㇎9?8O B=څ$OӣA!aɑ~ylL=;G1ۅS`<8tJ,tGd␠JZ.g2.aqnxlqͻJ;rcHC~J$,phBh"%!" 41CHPɴwryn/E/Z/5pN@P4DhƱh2f"ω1wn[`<2ns)6(3Q,3A&؋llr`HAZb@UdU4ĔB'Tӓ%.k~l nl4nj̈Eˡ$vbjB%]ozu]n;ٹP`o|lC<:h"I`y:?!q һ>P4p1+l8#2,}fA✼^w4{SMYd~"'E(jd=z>w;7YO3<g3 L&8,M| <ѭ!c=0\nZ(~ ^9yt'nqD=r5{sDEU04831g7 pj׽ǂima@" c 0]K/׿߾Թ:?m򫚵u_"sU;y.?N-<.d$2_:7Bqn0hV~"<}^U>\$]}~‡?)˳N1tO˪ėo^ 9SשF9vr$$-'334 ,w'rMxaiLRb2a,< K"yPAG,6؂9`wy=4G,,˔n49 ^S@WD5@Lry7#\GE\,GN"fX9#Y$ #$1Mp#X GPy_!ylG:aA΀H<_ (7s&@Q&pj h3}Μ}E LÑ9 ?ϹUPp'Lbr[c"kG'N!%Ba"+ lK*(lndpibp:9ER+Z m9N<9e-64HDK riO(x-4Q%$fA5AU|<:mP)Mꍴ5MTĚf( *@S^7mn(SKHnB ܍noNg͔A)8oq{-A`d4CT@=lC d )j\׿ }S倾Im'׃Ʒ1 Y("yLl<0,  DLH Ct3 V`i Bl4cB<zXEp$]Hd@kw>n$K 0Oozě'9eK z@0b!|,8Te֟#3 4߱Ws8.I*oU_ ~[.f%݉Fc_uNFL]TZf{{< 0&iUNuoMۛX"g6oW}}=}\:.{*/O:Jח׽ :1vv^xqy{<# HD Ȍ#{0(d{YsJ~#oM[JPAuc,z6_nMg-;uI\FȱnK#7eOoNwhRI˻ٗ6t?f,.s+f9dw,:V $W!oKqQ|m^"&[op~%}h O?ped8%#=_$S1I\8"]d) a)53DIe~=>`T䜑J4!:>c<2@hhERUV!?GװQeO"~c`q;?J<$x_/ɉᇔy A1 ]aWNp3gPI0eM"uKDhr/ӧ߽O<,B@/T@Hʚ .@& "y^@PiqU )JRJJ#?v9?+J]f@Md'#f)~J>nEGtÌ&;8#|GNѼETJDJyˍ4H0]4"̩L(/<vJ!,@|(*PrdQ-D1zw0r\@C.E쓩E<|uOңG$܄}g_a;R k$DdC+QC9?dzCl`H5M13@ )ADU<Lh@ϑzy;Pڟ=PtS߃$gR5ERLF ` RKA? !" ovf@ 2"". D^9]fpW|okbR89lޙ #' wڃM͛ϦK8 B-? ^4ِjߠ^vܔgt4 C6OnLkmR 3TB#*::SHx72H~ìCa^U mM>H1!M޹0wyr588n\6{[#G\~W;(C4diPD$Ou# Fx>/׽.8kaP_ʸ*1e[ZvQ8 ƑSPO&Iws!l[qx1RTI˳u_^'#A<:?3ӗ>"L` D:? }#/t؞Dj"3j221q@Tyo83& (uj ؅L;\R#o`WpEOks{ޚ?6-g>˧a~`>{٫j7}0߽IoG/}ظ G/~lMr +clS,ɿ(;GsbI 0Cӂ4,(wn=d>EUⱜU*dą%[@K,DzLÄJCJóJ-U:igr 1{H'b9?al.b`.:Q^DE71- (*CBJH1#9P>BGϾ̍OwiO_ ;wC/UZ}\ )m+1:i!/q&@#&.|u_ӻ;7}2y}|fa A@aTEzzopvHai$D@9A ߋ`@,Et[I1$?*|šI!f0#_XnaC D_#Oucn~:Y+w >4)VnϙÖC3M=DZYDB^#W"W*7ӌH,o{ЬTEqɹ u-*Թ; #b "űkò8,8Q`@ PL ܮQb)=ޥdvw2:jI!=k(\yzlBp^2Ή `4<ZY Te`t.QҀɣ`Đ!8 D$X6 Q~,T 0IJuo5yۙvl28`ZO}<[(cB&^ݪOc4TƘsOy723dQ8:I.&AC{tx0*.c0'-x>lMQtliJ PLM]ŒfdM0|(8B儙=q0N'Zzw)sO,7I"y8\84[0g10rEM6{ySrr4*z잘 *\t$OKa Q}:&, ?O_{ '8k0s_!HMrqϏs&)_E`/~a"Hgؘx 䵿ynȸ-3䓞}T}=}`;_4b;s^XM zc'/Wu9+6m46/`n\!7As+濰O}Ng1tym8mϣH]caGwvj@@!fyL|so*xn;>w'a/r Āc#Thh42 hY!ok 륷``?SP@\և#Rgx}w<@T?L)AC2 +BP~cݫ(}hi@_$(r>/t) 川 V|i,a2PBeB2v= ipѐiJ Y(=??̡X"( Sbc (_|w(_ջsDCǿW]7S1LbfX QunןL?-biF TOI%`RRrZ!"Y@ ᧵[p4h }<.^s:_EfͷU Ysw}jsrNZw|7ٛ?W?oG'|w:0U.j|86;]]kW:݆M==rjNu {YDE.= Ub_|"Q ʄ@xmdo 3tۿعrǧf$7zYa/M)'^%=k Iգr!4`6ۆh;*o='{_>Ԡ ( J"$_IR19VN7`79_HP JNN; %HJ\ZI&{T85 9M=o#GbnzJWPuQ(CDO_燁N̺BwŔ{:TZs)ԲhYGɟ;C*HNh`]9镮Re1