soc: qcom: smp2p: Add support for CDSP peripheral
The CDSP peripheral now supports SMP2P communication, so add the necessary support to allow the apps subsystem to talk to CDSP peripheral. CRs-Fixed: 1043377 Change-Id: If28a0f801411a215b02647f8acfccb1edb1033d4 Signed-off-by: Dhoat Harpal <hdhoat@codeaurora.org>
This commit is contained in:
parent
75b0a3ebc6
commit
7c0c7b0b3d
6 changed files with 35 additions and 5 deletions
|
@ -181,7 +181,7 @@ added to the end of the list (Table 3).
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
| Wireless processor | 4 |
|
| Wireless processor | 4 |
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
| Modem Fw | 5 |
|
| CDSP processor | 5 |
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
| Power processor | 6 |
|
| Power processor | 6 |
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
@ -206,6 +206,8 @@ Item ID will be 427 + 1 = 428.
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
| Description | SMEM ID value |
|
| Description | SMEM ID value |
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
| CDSP SMEM Item base | 94 |
|
||||||
|
---------------------------------------------------
|
||||||
| Apps SMP2P SMEM Item base | 427 |
|
| Apps SMP2P SMEM Item base | 427 |
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
| Modem SMP2P SMEM Item base | 435 |
|
| Modem SMP2P SMEM Item base | 435 |
|
||||||
|
|
|
@ -31,6 +31,8 @@ Unit test devices ("smp2p" entries):
|
||||||
"qcom,smp2pgpio_test_smp2p_3_in"
|
"qcom,smp2pgpio_test_smp2p_3_in"
|
||||||
"qcom,smp2pgpio_test_smp2p_4_out"
|
"qcom,smp2pgpio_test_smp2p_4_out"
|
||||||
"qcom,smp2pgpio_test_smp2p_4_in"
|
"qcom,smp2pgpio_test_smp2p_4_in"
|
||||||
|
"qcom,smp2pgpio_test_smp2p_5_out"
|
||||||
|
"qcom,smp2pgpio_test_smp2p_5_in"
|
||||||
"qcom,smp2pgpio_test_smp2p_7_out"
|
"qcom,smp2pgpio_test_smp2p_7_out"
|
||||||
"qcom,smp2pgpio_test_smp2p_7_in"
|
"qcom,smp2pgpio_test_smp2p_7_in"
|
||||||
"qcom,smp2pgpio_test_smp2p_15_out"
|
"qcom,smp2pgpio_test_smp2p_15_out"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* drivers/gpio/gpio-msm-smp2p-test.c
|
/* drivers/gpio/gpio-msm-smp2p-test.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License version 2 and
|
||||||
|
@ -95,6 +95,10 @@ static int smp2p_gpio_test_probe(struct platform_device *pdev)
|
||||||
gpio_info_ptr = &gpio_info[SMP2P_WIRELESS_PROC].in;
|
gpio_info_ptr = &gpio_info[SMP2P_WIRELESS_PROC].in;
|
||||||
} else if (strcmp("qcom,smp2pgpio_test_smp2p_4_out", node->name) == 0) {
|
} else if (strcmp("qcom,smp2pgpio_test_smp2p_4_out", node->name) == 0) {
|
||||||
gpio_info_ptr = &gpio_info[SMP2P_WIRELESS_PROC].out;
|
gpio_info_ptr = &gpio_info[SMP2P_WIRELESS_PROC].out;
|
||||||
|
} else if (strcmp("qcom,smp2pgpio_test_smp2p_5_in", node->name) == 0) {
|
||||||
|
gpio_info_ptr = &gpio_info[SMP2P_CDSP_PROC].in;
|
||||||
|
} else if (strcmp("qcom,smp2pgpio_test_smp2p_5_out", node->name) == 0) {
|
||||||
|
gpio_info_ptr = &gpio_info[SMP2P_CDSP_PROC].out;
|
||||||
} else if (strcmp("qcom,smp2pgpio_test_smp2p_7_in", node->name) == 0) {
|
} else if (strcmp("qcom,smp2pgpio_test_smp2p_7_in", node->name) == 0) {
|
||||||
gpio_info_ptr = &gpio_info[SMP2P_TZ_PROC].in;
|
gpio_info_ptr = &gpio_info[SMP2P_TZ_PROC].in;
|
||||||
} else if (strcmp("qcom,smp2pgpio_test_smp2p_7_out", node->name) == 0) {
|
} else if (strcmp("qcom,smp2pgpio_test_smp2p_7_out", node->name) == 0) {
|
||||||
|
@ -148,6 +152,10 @@ static struct of_device_id msm_smp2p_match_table[] = {
|
||||||
{.compatible = "qcom,smp2pgpio_test_smp2p_4_out", },
|
{.compatible = "qcom,smp2pgpio_test_smp2p_4_out", },
|
||||||
{.compatible = "qcom,smp2pgpio_test_smp2p_4_in", },
|
{.compatible = "qcom,smp2pgpio_test_smp2p_4_in", },
|
||||||
|
|
||||||
|
/* CDSP */
|
||||||
|
{.compatible = "qcom,smp2pgpio_test_smp2p_5_out", },
|
||||||
|
{.compatible = "qcom,smp2pgpio_test_smp2p_5_in", },
|
||||||
|
|
||||||
/* TZ */
|
/* TZ */
|
||||||
{.compatible = "qcom,smp2pgpio_test_smp2p_7_out", },
|
{.compatible = "qcom,smp2pgpio_test_smp2p_7_out", },
|
||||||
{.compatible = "qcom,smp2pgpio_test_smp2p_7_in", },
|
{.compatible = "qcom,smp2pgpio_test_smp2p_7_in", },
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* drivers/soc/qcom/smp2p.c
|
/* drivers/soc/qcom/smp2p.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License version 2 and
|
||||||
|
@ -214,6 +214,7 @@ static struct smp2p_interrupt_config smp2p_int_cfgs[SMP2P_NUM_PROCS] = {
|
||||||
[SMP2P_AUDIO_PROC].name = "lpass",
|
[SMP2P_AUDIO_PROC].name = "lpass",
|
||||||
[SMP2P_SENSOR_PROC].name = "dsps",
|
[SMP2P_SENSOR_PROC].name = "dsps",
|
||||||
[SMP2P_WIRELESS_PROC].name = "wcnss",
|
[SMP2P_WIRELESS_PROC].name = "wcnss",
|
||||||
|
[SMP2P_CDSP_PROC].name = "cdsp",
|
||||||
[SMP2P_TZ_PROC].name = "tz",
|
[SMP2P_TZ_PROC].name = "tz",
|
||||||
[SMP2P_REMOTE_MOCK_PROC].name = "mock",
|
[SMP2P_REMOTE_MOCK_PROC].name = "mock",
|
||||||
};
|
};
|
||||||
|
@ -333,6 +334,9 @@ static int smp2p_get_smem_item_id(int write_pid, int read_pid)
|
||||||
case SMP2P_WIRELESS_PROC:
|
case SMP2P_WIRELESS_PROC:
|
||||||
ret = SMEM_SMP2P_WIRLESS_BASE + read_pid;
|
ret = SMEM_SMP2P_WIRLESS_BASE + read_pid;
|
||||||
break;
|
break;
|
||||||
|
case SMP2P_CDSP_PROC:
|
||||||
|
ret = SMEM_SMP2P_CDSP_BASE + read_pid;
|
||||||
|
break;
|
||||||
case SMP2P_POWER_PROC:
|
case SMP2P_POWER_PROC:
|
||||||
ret = SMEM_SMP2P_POWER_BASE + read_pid;
|
ret = SMEM_SMP2P_POWER_BASE + read_pid;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* drivers/soc/qcom/smp2p_private_api.h
|
/* drivers/soc/qcom/smp2p_private_api.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License version 2 and
|
||||||
|
@ -31,7 +31,7 @@ enum {
|
||||||
SMP2P_AUDIO_PROC = 2,
|
SMP2P_AUDIO_PROC = 2,
|
||||||
SMP2P_SENSOR_PROC = 3,
|
SMP2P_SENSOR_PROC = 3,
|
||||||
SMP2P_WIRELESS_PROC = 4,
|
SMP2P_WIRELESS_PROC = 4,
|
||||||
SMP2P_RESERVED_PROC_2 = 5,
|
SMP2P_CDSP_PROC = 5,
|
||||||
SMP2P_POWER_PROC = 6,
|
SMP2P_POWER_PROC = 6,
|
||||||
SMP2P_TZ_PROC = 7,
|
SMP2P_TZ_PROC = 7,
|
||||||
/* add new processors here */
|
/* add new processors here */
|
||||||
|
|
|
@ -373,6 +373,11 @@ static void smp2p_ut_remote_spinlock_wcnss(struct seq_file *s)
|
||||||
smp2p_ut_remote_spinlock_pid(s, SMP2P_WIRELESS_PROC, false);
|
smp2p_ut_remote_spinlock_pid(s, SMP2P_WIRELESS_PROC, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void smp2p_ut_remote_spinlock_cdsp(struct seq_file *s)
|
||||||
|
{
|
||||||
|
smp2p_ut_remote_spinlock_pid(s, SMP2P_CDSP_PROC, false);
|
||||||
|
}
|
||||||
|
|
||||||
static void smp2p_ut_remote_spinlock_tz(struct seq_file *s)
|
static void smp2p_ut_remote_spinlock_tz(struct seq_file *s)
|
||||||
{
|
{
|
||||||
smp2p_ut_remote_spinlock_pid(s, SMP2P_TZ_PROC, false);
|
smp2p_ut_remote_spinlock_pid(s, SMP2P_TZ_PROC, false);
|
||||||
|
@ -752,6 +757,11 @@ static void smp2p_ut_remote_spinlock_track_wcnss(struct seq_file *s)
|
||||||
smp2p_ut_remote_spinlock_track(s, SMP2P_WIRELESS_PROC);
|
smp2p_ut_remote_spinlock_track(s, SMP2P_WIRELESS_PROC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void smp2p_ut_remote_spinlock_track_cdsp(struct seq_file *s)
|
||||||
|
{
|
||||||
|
smp2p_ut_remote_spinlock_track(s, SMP2P_CDSP_PROC);
|
||||||
|
}
|
||||||
|
|
||||||
static void smp2p_ut_remote_spinlock_track_tz(struct seq_file *s)
|
static void smp2p_ut_remote_spinlock_track_tz(struct seq_file *s)
|
||||||
{
|
{
|
||||||
smp2p_ut_remote_spinlock_track(s, SMP2P_TZ_PROC);
|
smp2p_ut_remote_spinlock_track(s, SMP2P_TZ_PROC);
|
||||||
|
@ -782,6 +792,8 @@ static int __init smp2p_debugfs_init(void)
|
||||||
smp2p_ut_remote_spinlock_dsps);
|
smp2p_ut_remote_spinlock_dsps);
|
||||||
smp2p_debug_create("ut_remote_spinlock_wcnss",
|
smp2p_debug_create("ut_remote_spinlock_wcnss",
|
||||||
smp2p_ut_remote_spinlock_wcnss);
|
smp2p_ut_remote_spinlock_wcnss);
|
||||||
|
smp2p_debug_create("ut_remote_spinlock_cdsp",
|
||||||
|
smp2p_ut_remote_spinlock_cdsp);
|
||||||
smp2p_debug_create("ut_remote_spinlock_tz",
|
smp2p_debug_create("ut_remote_spinlock_tz",
|
||||||
smp2p_ut_remote_spinlock_tz);
|
smp2p_ut_remote_spinlock_tz);
|
||||||
smp2p_debug_create("ut_remote_spinlock_rpm",
|
smp2p_debug_create("ut_remote_spinlock_rpm",
|
||||||
|
@ -798,6 +810,8 @@ static int __init smp2p_debugfs_init(void)
|
||||||
&smp2p_ut_remote_spinlock_track_dsps);
|
&smp2p_ut_remote_spinlock_track_dsps);
|
||||||
smp2p_debug_create("ut_remote_spinlock_track_wcnss",
|
smp2p_debug_create("ut_remote_spinlock_track_wcnss",
|
||||||
&smp2p_ut_remote_spinlock_track_wcnss);
|
&smp2p_ut_remote_spinlock_track_wcnss);
|
||||||
|
smp2p_debug_create("ut_remote_spinlock_track_cdsp",
|
||||||
|
&smp2p_ut_remote_spinlock_track_cdsp);
|
||||||
smp2p_debug_create("ut_remote_spinlock_track_tz",
|
smp2p_debug_create("ut_remote_spinlock_track_tz",
|
||||||
&smp2p_ut_remote_spinlock_track_tz);
|
&smp2p_ut_remote_spinlock_track_tz);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue