Merge "ARM: dts: msm: Add SMP2P entries for MSMFALCON"

This commit is contained in:
Linux Build Service Account 2016-08-16 10:20:17 -07:00 committed by Gerrit - the friendly Code Review server
commit 02a6f0f1c2
11 changed files with 218 additions and 16 deletions

View file

@ -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 |

View file

@ -1,7 +1,9 @@
Qualcomm Technologies, Inc. SMSM Point-to-Point (SMP2P) Sleepstate driver Qualcomm Technologies, Inc. SMSM Point-to-Point (SMP2P) Sleepstate driver
Required properties: Required properties:
-compatible : should be "qcom,smp2pgpio_sleepstate_3_out"; -compatible : should be one of the following:
- "qcom,smp2pgpio_sleepstate_3_out" - for sensor processor on remote pid 3
- "qcom,smp2pgpio-sleepstate-out" - for other cases
-gpios : the relevant gpio pins of the entry. -gpios : the relevant gpio pins of the entry.
Example: Example:

View file

@ -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"

View file

@ -0,0 +1,175 @@
/* Copyright (c) 2016, The Linux Foundation. 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
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
&soc {
qcom,smp2p-modem@17911008 {
compatible = "qcom,smp2p";
reg = <0x17911008 0x4>;
qcom,remote-pid = <1>;
qcom,irq-bitmask = <0x4000>;
interrupts = <0 451 1>;
};
qcom,smp2p-adsp@17911008 {
compatible = "qcom,smp2p";
reg = <0x17911008 0x4>;
qcom,remote-pid = <2>;
qcom,irq-bitmask = <0x400>;
interrupts = <0 158 1>;
};
qcom,smp2p-cdsp@17911008 {
compatible = "qcom,smp2p";
reg = <0x17911008 0x4>;
qcom,remote-pid = <5>;
qcom,irq-bitmask = <0x40000000>;
interrupts = <0 514 1>;
};
smp2pgpio_smp2p_15_in: qcom,smp2pgpio-smp2p-15-in {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <15>;
qcom,is-inbound;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_15_in {
compatible = "qcom,smp2pgpio_test_smp2p_15_in";
gpios = <&smp2pgpio_smp2p_15_in 0 0>;
};
smp2pgpio_smp2p_15_out: qcom,smp2pgpio-smp2p-15-out {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <15>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_15_out {
compatible = "qcom,smp2pgpio_test_smp2p_15_out";
gpios = <&smp2pgpio_smp2p_15_out 0 0>;
};
smp2pgpio_smp2p_1_in: qcom,smp2pgpio-smp2p-1-in {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <1>;
qcom,is-inbound;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_1_in {
compatible = "qcom,smp2pgpio_test_smp2p_1_in";
gpios = <&smp2pgpio_smp2p_1_in 0 0>;
};
smp2pgpio_smp2p_1_out: qcom,smp2pgpio-smp2p-1-out {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <1>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_1_out {
compatible = "qcom,smp2pgpio_test_smp2p_1_out";
gpios = <&smp2pgpio_smp2p_1_out 0 0>;
};
smp2pgpio_smp2p_2_in: qcom,smp2pgpio-smp2p-2-in {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <2>;
qcom,is-inbound;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_2_in {
compatible = "qcom,smp2pgpio_test_smp2p_2_in";
gpios = <&smp2pgpio_smp2p_2_in 0 0>;
};
smp2pgpio_smp2p_2_out: qcom,smp2pgpio-smp2p-2-out {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <2>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_2_out {
compatible = "qcom,smp2pgpio_test_smp2p_2_out";
gpios = <&smp2pgpio_smp2p_2_out 0 0>;
};
smp2pgpio_sleepstate_2_out: qcom,smp2pgpio-sleepstate-gpio-2-out {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "sleepstate";
qcom,remote-pid = <2>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio-sleepstate-2-out {
compatible = "qcom,smp2pgpio-sleepstate-out";
gpios = <&smp2pgpio_sleepstate_2_out 0 0>;
};
smp2pgpio_smp2p_5_in: qcom,smp2pgpio-smp2p-5-in {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <5>;
qcom,is-inbound;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_5_in {
compatible = "qcom,smp2pgpio_test_smp2p_5_in";
gpios = <&smp2pgpio_smp2p_5_in 0 0>;
};
smp2pgpio_smp2p_5_out: qcom,smp2pgpio-smp2p-5-out {
compatible = "qcom,smp2pgpio";
qcom,entry-name = "smp2p";
qcom,remote-pid = <5>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
qcom,smp2pgpio_test_smp2p_5_out {
compatible = "qcom,smp2pgpio_test_smp2p_5_out";
gpios = <&smp2pgpio_smp2p_5_out 0 0>;
};
};

View file

@ -194,6 +194,7 @@
}; };
}; };
#include "msmfalcon-smp2p.dtsi"
&soc { &soc {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;

View file

@ -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", },

View file

@ -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;

View file

@ -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 */

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-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
@ -74,6 +74,7 @@ static int smp2p_sleepstate_probe(struct platform_device *pdev)
static struct of_device_id msm_smp2p_slst_match_table[] = { static struct of_device_id msm_smp2p_slst_match_table[] = {
{.compatible = "qcom,smp2pgpio_sleepstate_3_out"}, {.compatible = "qcom,smp2pgpio_sleepstate_3_out"},
{.compatible = "qcom,smp2pgpio-sleepstate-out"},
{}, {},
}; };

View file

@ -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;

View file

@ -92,15 +92,8 @@ enum {
SMEM_KEYPAD_STATE_UPDATED, SMEM_KEYPAD_STATE_UPDATED,
SMEM_KEYPAD_STATE_IDX, SMEM_KEYPAD_STATE_IDX,
SMEM_GPIO_INT, SMEM_GPIO_INT,
SMEM_MDDI_LCD_IDX, SMEM_SMP2P_CDSP_BASE,
SMEM_MDDI_HOST_DRIVER_STATE, SMEM_SMD_PROFILES = SMEM_SMP2P_CDSP_BASE + 8,
SMEM_MDDI_LCD_DISP_STATE,
SMEM_LCD_CUR_PANEL,
SMEM_MARM_BOOT_SEGMENT_INFO,
SMEM_AARM_BOOT_SEGMENT_INFO,
SMEM_SLEEP_STATIC,
SMEM_SCORPION_FREQUENCY,
SMEM_SMD_PROFILES,
SMEM_TSSC_BUSY, SMEM_TSSC_BUSY,
SMEM_HS_SUSPEND_FILTER_INFO, SMEM_HS_SUSPEND_FILTER_INFO,
SMEM_BATT_INFO, SMEM_BATT_INFO,