msm: 8064: add platform device info for the sglte2 target
The sglte2 target has two external modems, an mdm9x15
and a qsc1215.
Change-Id: I0cd5b3cb20994e706536c2bbd4c0f82ada35058d
Signed-off-by: Joel King <joelking@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-8064-gpiomux.c b/arch/arm/mach-msm/board-8064-gpiomux.c
index f6d6dff..b8e12d0 100644
--- a/arch/arm/mach-msm/board-8064-gpiomux.c
+++ b/arch/arm/mach-msm/board-8064-gpiomux.c
@@ -1366,6 +1366,23 @@
},
};
+static struct msm_gpiomux_config sglte2_qsc_configs[] __initdata = {
+ /* MDM2AP_STATUS */
+ {
+ .gpio = 51,
+ .settings = {
+ [GPIOMUX_SUSPENDED] = &mdm2ap_status_cfg,
+ }
+ },
+ /* MDM2AP_ERRFATAL */
+ {
+ .gpio = 52,
+ .settings = {
+ [GPIOMUX_SUSPENDED] = &mdm2ap_errfatal_cfg,
+ }
+ },
+};
+
void __init apq8064_init_gpiomux(void)
{
int rc;
@@ -1430,12 +1447,19 @@
ARRAY_SIZE(amdm_configs));
msm_gpiomux_install(bmdm_configs,
ARRAY_SIZE(bmdm_configs));
- } else if (SOCINFO_VERSION_MINOR(platform_version) == 1)
- msm_gpiomux_install(mdm_i2s_configs,
- ARRAY_SIZE(mdm_i2s_configs));
- else
+ } else if (socinfo_get_platform_subtype() ==
+ PLATFORM_SUBTYPE_SGLTE2) {
msm_gpiomux_install(mdm_configs,
ARRAY_SIZE(mdm_configs));
+ msm_gpiomux_install(sglte2_qsc_configs,
+ ARRAY_SIZE(sglte2_qsc_configs));
+ } else if (SOCINFO_VERSION_MINOR(platform_version) == 1) {
+ msm_gpiomux_install(mdm_i2s_configs,
+ ARRAY_SIZE(mdm_i2s_configs));
+ } else {
+ msm_gpiomux_install(mdm_configs,
+ ARRAY_SIZE(mdm_configs));
+ }
}
if (machine_is_apq8064_mtp()) {
diff --git a/arch/arm/mach-msm/board-8064-pmic.c b/arch/arm/mach-msm/board-8064-pmic.c
index 65707b1..35120a9 100644
--- a/arch/arm/mach-msm/board-8064-pmic.c
+++ b/arch/arm/mach-msm/board-8064-pmic.c
@@ -185,6 +185,11 @@
PM8921_MPP_INIT(1, D_OUTPUT, PM8921_MPP_DIG_LEVEL_VPH, DOUT_CTRL_HIGH),
};
+static struct pm8xxx_gpio_init pm8921_sglte2_gpios[] __initdata = {
+ PM8921_GPIO_OUTPUT(2, 0, HIGH), /* PM2QSC_SOFT_RESET */
+ PM8921_GPIO_OUTPUT(21, 0, HIGH), /* PM2QSC_KEYPADPWR */
+
+};
void __init apq8064_configure_gpios(struct pm8xxx_gpio_init *data, int len)
{
@@ -216,9 +221,15 @@
ARRAY_SIZE(pm8917_cdp_kp_gpios));
}
- if (machine_is_apq8064_mtp())
+ if (machine_is_apq8064_mtp()) {
apq8064_configure_gpios(pm8921_mtp_kp_gpios,
ARRAY_SIZE(pm8921_mtp_kp_gpios));
+ if (socinfo_get_platform_subtype() ==
+ PLATFORM_SUBTYPE_SGLTE2) {
+ apq8064_configure_gpios(pm8921_sglte2_gpios,
+ ARRAY_SIZE(pm8921_sglte2_gpios));
+ }
+ }
if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd()
|| machine_is_mpq8064_dtv())
diff --git a/arch/arm/mach-msm/board-8064.c b/arch/arm/mach-msm/board-8064.c
index 208875f..c125332 100644
--- a/arch/arm/mach-msm/board-8064.c
+++ b/arch/arm/mach-msm/board-8064.c
@@ -1892,6 +1892,14 @@
.no_a2m_errfatal_on_ssr = 1,
};
+static struct mdm_platform_data sglte2_qsc_platform_data = {
+ .mdm_version = "3.0",
+ .ramdump_delay_ms = 2000,
+ .ramdump_timeout_ms = 600000,
+ .no_powerdown_after_ramdumps = 1,
+ .image_upgrade_supported = 1,
+};
+
static struct tsens_platform_data apq_tsens_pdata = {
.tsens_factor = 1000,
.hw_type = APQ_8064,
@@ -3261,6 +3269,14 @@
bmdm_8064_device.dev.platform_data =
&bmdm_platform_data;
platform_device_register(&bmdm_8064_device);
+ } else if (socinfo_get_platform_subtype() ==
+ PLATFORM_SUBTYPE_SGLTE2) {
+ sglte_mdm_8064_device.dev.platform_data =
+ &mdm_platform_data;
+ platform_device_register(&sglte_mdm_8064_device);
+ sglte2_qsc_8064_device.dev.platform_data =
+ &sglte2_qsc_platform_data;
+ platform_device_register(&sglte2_qsc_8064_device);
} else if (SOCINFO_VERSION_MINOR(platform_version) == 1) {
i2s_mdm_8064_device.dev.platform_data =
&mdm_platform_data;
diff --git a/arch/arm/mach-msm/devices-8064.c b/arch/arm/mach-msm/devices-8064.c
index 3d8f0da..60ce99b 100644
--- a/arch/arm/mach-msm/devices-8064.c
+++ b/arch/arm/mach-msm/devices-8064.c
@@ -44,6 +44,7 @@
#include "msm_watchdog.h"
#include "rpm_stats.h"
#include "rpm_log.h"
+#include "board-8064.h"
#include <mach/mpm.h>
#include <mach/iommu_domains.h>
#include <mach/msm_cache_dump.h>
@@ -2570,6 +2571,11 @@
#define AP2BMDM_SOFT_RESET 3
#define AP2BMDM_WAKEUP 29
+#define SGLTE2_QSC2AP_STATUS 51
+#define SGLTE2_QSC2AP_ERRFATAL 52
+#define SGLTE2_PM2QSC_SOFT_RESET PM8921_GPIO_PM_TO_SYS(2)
+#define SGLTE2_PM2QSC_KEYPADPWR PM8921_GPIO_PM_TO_SYS(21)
+
static struct resource mdm_resources[] = {
{
.start = MDM2AP_ERRFATAL,
@@ -2744,6 +2750,45 @@
},
};
+static struct resource sglte2_qsc_resources[] = {
+ {
+ .start = SGLTE2_QSC2AP_ERRFATAL,
+ .end = SGLTE2_QSC2AP_ERRFATAL,
+ .name = "MDM2AP_ERRFATAL",
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .start = AP2MDM_ERRFATAL,
+ .end = AP2MDM_ERRFATAL,
+ .name = "AP2MDM_ERRFATAL",
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .start = SGLTE2_QSC2AP_STATUS,
+ .end = SGLTE2_QSC2AP_STATUS,
+ .name = "MDM2AP_STATUS",
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .start = AP2MDM_STATUS,
+ .end = AP2MDM_STATUS,
+ .name = "AP2MDM_STATUS",
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .start = SGLTE2_PM2QSC_KEYPADPWR,
+ .end = SGLTE2_PM2QSC_KEYPADPWR,
+ .name = "AP2MDM_KPDPWR_N",
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .start = SGLTE2_PM2QSC_SOFT_RESET,
+ .end = SGLTE2_PM2QSC_SOFT_RESET,
+ .name = "AP2MDM_SOFT_RESET",
+ .flags = IORESOURCE_IO,
+ },
+};
+
struct platform_device mdm_8064_device = {
.name = "mdm2_modem",
.id = -1,
@@ -2772,6 +2817,20 @@
.resource = i2s_mdm_resources,
};
+struct platform_device sglte_mdm_8064_device = {
+ .name = "mdm2_modem",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(mdm_resources),
+ .resource = mdm_resources,
+};
+
+struct platform_device sglte2_qsc_8064_device = {
+ .name = "mdm2_modem",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(sglte2_qsc_resources),
+ .resource = sglte2_qsc_resources,
+};
+
static struct msm_dcvs_sync_rule apq8064_dcvs_sync_rules[] = {
{1026000, 400000},
{384000, 200000},
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
index 5f3aa3a..b795371 100644
--- a/arch/arm/mach-msm/devices.h
+++ b/arch/arm/mach-msm/devices.h
@@ -456,3 +456,6 @@
extern struct platform_device amdm_8064_device;
extern struct platform_device bmdm_8064_device;
+
+extern struct platform_device sglte_mdm_8064_device;
+extern struct platform_device sglte2_qsc_8064_device;