msm: 8064: add support for gpio/tlmm.

Added Kconfig entry to enable the GPIOMUX driver.
Updated Makefile to compile gpiomux driver files.
Added io map for TLMM device, and perform gpiomux
initialization without installing any gpios.
Gpios will be mapped when the peripheral connections
are finalized for virtio, cdp or other targets.

Signed-off-by: Joel King <joelking@codeaurora.org>
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index 6cedf95..5e49225 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -141,6 +141,7 @@
 	select ARM_GIC
 	select CPU_V7
 	select MSM_SCM if SMP
+	select MSM_GPIOMUX
 
 config ARCH_FSM9XXX
 	bool "FSM9XXX"
diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile
index 9aa3bfa..f64f526 100644
--- a/arch/arm/mach-msm/Makefile
+++ b/arch/arm/mach-msm/Makefile
@@ -233,6 +233,7 @@
 obj-$(CONFIG_ARCH_QSD8X50) += gpiomux-8x50.o gpiomux-v1.o gpiomux.o
 obj-$(CONFIG_ARCH_MSM8X60) += gpiomux-8x60.o gpiomux-v2.o gpiomux.o
 obj-$(CONFIG_ARCH_MSM8960) += gpiomux-v2.o gpiomux.o
+obj-$(CONFIG_ARCH_APQ8064) += gpiomux-v2.o gpiomux.o
 
 ifdef CONFIG_FSM9XXX_TLMM
 obj-y   += gpio-fsm9xxx.o
diff --git a/arch/arm/mach-msm/board-apq8064.c b/arch/arm/mach-msm/board-apq8064.c
index f0b246a..30006ce 100644
--- a/arch/arm/mach-msm/board-apq8064.c
+++ b/arch/arm/mach-msm/board-apq8064.c
@@ -25,6 +25,21 @@
 #include <mach/socinfo.h>
 #include "timer.h"
 #include "devices.h"
+#include <mach/msm_spi.h>
+#include <mach/gpio.h>
+#include <mach/gpiomux.h>
+
+static int __init gpiomux_init(void)
+{
+	int rc;
+
+	rc = msm_gpiomux_init(NR_GPIO_IRQS);
+	if (rc) {
+		pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc);
+		return rc;
+	}
+	return 0;
+}
 
 static void __init apq8064_map_io(void)
 {
@@ -85,6 +100,7 @@
 	if (socinfo_init() < 0)
 		pr_err("socinfo_init() failed!\n");
 	msm_clock_init(msm_clocks_8064_dummy, msm_num_clocks_8064_dummy);
+	gpiomux_init();
 	platform_add_devices(common_devices, ARRAY_SIZE(common_devices));
 }
 
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8064.h b/arch/arm/mach-msm/include/mach/msm_iomap-8064.h
index abb590b..fe6fd97 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap-8064.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap-8064.h
@@ -47,4 +47,7 @@
 #define APQ8064_DMOV_PHYS		0x18300000
 #define APQ8064_DMOV_SIZE		SZ_1M
 
+#define APQ8064_TLMM_PHYS		0x00800000
+#define APQ8064_TLMM_SIZE		SZ_16K
+
 #endif
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c
index a4d3bf1..ad3e4c1 100644
--- a/arch/arm/mach-msm/io.c
+++ b/arch/arm/mach-msm/io.c
@@ -220,6 +220,7 @@
 	MSM_CHIP_DEVICE(TMR, APQ8064),
 	MSM_CHIP_DEVICE(TMR0, APQ8064),
 	MSM_CHIP_DEVICE(DMOV, APQ8064),
+	MSM_CHIP_DEVICE(TLMM, APQ8064),
 	{
 		.virtual =  (unsigned long) MSM_SHARED_RAM_BASE,
 		.length =   MSM_SHARED_RAM_SIZE,