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,