diag: Add support for 9615, 8260A, and 8974 targets
Also re-structures the code so that adding new target
support will be easier.
Change-Id: I5ad9100932da5454afbf1c996d71a6338dc59dbb
Signed-off-by: Shalabh Jain <shalabhj@codeaurora.org>
diff --git a/drivers/char/diag/diagfwd.c b/drivers/char/diag/diagfwd.c
index 6853654..e147b0e 100644
--- a/drivers/char/diag/diagfwd.c
+++ b/drivers/char/diag/diagfwd.c
@@ -80,11 +80,14 @@
case MSM8660_MACHINE_ID:
return APQ8060_TOOLS_ID;
case AO8960_MACHINE_ID:
+ case MSM8260A_MACHINE_ID:
return AO8960_TOOLS_ID;
case APQ8064_MACHINE_ID:
return APQ8064_TOOLS_ID;
case MSM8930_MACHINE_ID:
return MSM8930_TOOLS_ID;
+ case MSM8974_MACHINE_ID:
+ return MSM8974_TOOLS_ID;
default:
return 0;
}
@@ -105,12 +108,28 @@
case APQ8030_MACHINE_ID:
case MSM8627_MACHINE_ID:
case MSM8227_MACHINE_ID:
+ case MSM8974_MACHINE_ID:
+ case MDM9615_MACHINE_ID:
+ case MSM8260A_MACHINE_ID:
return 1;
default:
return 0;
}
}
+/*
+ * This will return TRUE for targets which support apps as master.
+ * Thus, SW DLOAD and Mode Reset are supported on apps processor.
+ * This applies to 8960 and newer targets.
+ */
+int chk_apps_master(void)
+{
+ if (cpu_is_msm8960() || cpu_is_msm8930() || cpu_is_msm9615())
+ return 1;
+ else
+ return 0;
+}
+
void __diag_smd_send_req(void)
{
void *buf = NULL;
@@ -532,8 +551,7 @@
} else {
if (len > 0) {
if (entry.client_id == MODEM_PROC && driver->ch) {
- if ((cpu_is_msm8960() || cpu_is_msm8930() ||
- cpu_is_msm9615()) &&
+ if (chk_apps_master() &&
(int)(*(char *)buf) == MODE_CMD)
if ((int)(*(char *)(buf+1)) ==
RESET_ID)
@@ -573,8 +591,7 @@
temp += 2;
data_type = APPS_DATA;
/* Dont send any command other than mode reset */
- if ((cpu_is_msm8960() || cpu_is_msm8930() || cpu_is_msm9615()) &&
- cmd_code == MODE_CMD) {
+ if (chk_apps_master() && cmd_code == MODE_CMD) {
if (subsys_id != RESET_ID)
data_type = MODEM_DATA;
}
@@ -858,8 +875,7 @@
return 0;
}
/* Check for download command */
- else if ((cpu_is_msm8x60() || cpu_is_msm8960() || cpu_is_msm8930()
- || cpu_is_msm9615()) && (*buf == 0x3A)) {
+ else if ((cpu_is_msm8x60() || chk_apps_master()) && (*buf == 0x3A)) {
/* send response back */
driver->apps_rsp_buf[0] = *buf;
ENCODE_RSP_AND_SEND(0);
diff --git a/drivers/char/diag/diagfwd_cntl.c b/drivers/char/diag/diagfwd_cntl.c
index 9730d4f..f2a2210 100644
--- a/drivers/char/diag/diagfwd_cntl.c
+++ b/drivers/char/diag/diagfwd_cntl.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011, Code Aurora Forum. All rights reserved.
+/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -135,7 +135,7 @@
{
int r = 0;
- /* open control ports only on 8960 */
+ /* open control ports only on 8960 & newer targets */
if (chk_apps_only()) {
if (pdev->id == SMD_APPS_MODEM)
r = smd_open("DIAG_CNTL", &driver->ch_cntl, driver,
diff --git a/include/linux/diagchar.h b/include/linux/diagchar.h
index bdbaffd..d1c7733 100644
--- a/include/linux/diagchar.h
+++ b/include/linux/diagchar.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2011, Code Aurora Forum. All rights reserved.
+/* Copyright (c) 2008-2012, Code Aurora Forum. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -40,6 +40,7 @@
#define APQ8060_MACHINE_ID 86
#define AO8960_MACHINE_ID 87
#define MSM8660_MACHINE_ID 71
+#define MDM9615_MACHINE_ID 104
#define APQ8064_MACHINE_ID 109
#define MSM8930_MACHINE_ID 116
#define MSM8630_MACHINE_ID 117
@@ -47,10 +48,13 @@
#define APQ8030_MACHINE_ID 119
#define MSM8627_MACHINE_ID 120
#define MSM8227_MACHINE_ID 121
+#define MSM8260A_MACHINE_ID 123
+#define MSM8974_MACHINE_ID 126
#define APQ8060_TOOLS_ID 4062
#define AO8960_TOOLS_ID 4064
#define APQ8064_TOOLS_ID 4072
#define MSM8930_TOOLS_ID 4072
+#define MSM8974_TOOLS_ID 4072
#define MSG_MASK_0 (0x00000001)
#define MSG_MASK_1 (0x00000002)