* [PATCH v2 0/5] Qualcomm Shared Memory State Machines
@ 2015-09-25 1:24 Bjorn Andersson
2015-09-25 1:24 ` [PATCH v2 1/5] dt-binding: soc: qcom: Add Qualcomm SMSM device tree documentation Bjorn Andersson
2015-09-25 1:25 ` [PATCH v2 2/5] dt-binding: soc: qcom: Introduce qcom,smp2p binding documentation Bjorn Andersson
0 siblings, 2 replies; 3+ messages in thread
From: Bjorn Andersson @ 2015-09-25 1:24 UTC (permalink / raw)
To: Andy Gross, Ian Campbell, Mark Rutland, Pawel Moll, Rob Herring
Cc: devicetree, linux-arm-msm, linux-kernel, linux-soc
This series implements the two different mechanisms for propagating single bit
state information, used on the various Qualcomm platforms.
The system was traditionally used by the modem and application processor to
convey information about boot progress, power states, error handling and so on.
This was implemented as SMSM, with status bits representing a single local
state.
As the complexity of the SoC grew the state bits array grew and the need for
targeting specific state information at specific remote processors appeared.
SMP2P solves this by having separate shared memory regions per processor-pair.
This state information is e.g. used to convey progress and status of remote
firmware loading. Individual bits maps to various stages of the boot and error
states.
Changed since v1:
- The series moved away from representing outgoing bits as gpios
Bjorn Andersson (5):
dt-binding: soc: qcom: Add Qualcomm SMSM device tree documentation
dt-binding: soc: qcom: Introduce qcom,smp2p binding documentation
soc: qcom: Introduce common SMEM state machine code
soc: qcom: smsm: Add driver for Qualcomm SMSM
soc: qcom: smp2p: Qualcomm Shared Memory Point to Point
.../devicetree/bindings/soc/qcom/qcom,smp2p.txt | 104 ++++
.../devicetree/bindings/soc/qcom/qcom,smsm.txt | 104 ++++
drivers/soc/qcom/Kconfig | 19 +
drivers/soc/qcom/Makefile | 3 +
drivers/soc/qcom/smem_state.c | 201 +++++++
drivers/soc/qcom/smp2p.c | 578 +++++++++++++++++++
drivers/soc/qcom/smsm.c | 625 +++++++++++++++++++++
include/linux/soc/qcom/smem_state.h | 18 +
8 files changed, 1652 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.txt
create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,smsm.txt
create mode 100644 drivers/soc/qcom/smem_state.c
create mode 100644 drivers/soc/qcom/smp2p.c
create mode 100644 drivers/soc/qcom/smsm.c
create mode 100644 include/linux/soc/qcom/smem_state.h
--
1.8.2.2
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 1/5] dt-binding: soc: qcom: Add Qualcomm SMSM device tree documentation
2015-09-25 1:24 [PATCH v2 0/5] Qualcomm Shared Memory State Machines Bjorn Andersson
@ 2015-09-25 1:24 ` Bjorn Andersson
2015-09-25 1:25 ` [PATCH v2 2/5] dt-binding: soc: qcom: Introduce qcom,smp2p binding documentation Bjorn Andersson
1 sibling, 0 replies; 3+ messages in thread
From: Bjorn Andersson @ 2015-09-25 1:24 UTC (permalink / raw)
To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell
Cc: devicetree, linux-kernel, linux-arm-msm
This documents a device tree binding for the Qualcomm Shared Memory
State Machine.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
Changes since v1:
- No longer representing outgoing state as gpio-controller
.../devicetree/bindings/soc/qcom/qcom,smsm.txt | 104 +++++++++++++++++++++
1 file changed, 104 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,smsm.txt
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,smsm.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,smsm.txt
new file mode 100644
index 000000000000..a6634c70850d
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,smsm.txt
@@ -0,0 +1,104 @@
+Qualcomm Shared Memory State Machine
+
+The Shared Memory State Machine facilitates broadcasting of single bit state
+information between the processors in a Qualcomm SoC. Each processor is
+assigned 32 bits of state that can be modified. A processor can through a
+matrix of bitmaps signal subscription of notifications upon changes to a
+certain bit owned by a certain remote processor.
+
+- compatible:
+ Usage: required
+ Value type: <string>
+ Definition: must be one of:
+ "qcom,smsm"
+
+- qcom,ipc-N:
+ Usage: required
+ Value type: <prop-encoded-array>
+ Definition: three entries specifying the outgoing ipc bit used for
+ signaling the N:th remote processor
+ - phandle to a syscon node representing the apcs registers
+ - u32 representing offset to the register within the syscon
+ - u32 representing the ipc bit within the register
+
+- qcom,local-host:
+ Usage: optional
+ Value type: <u32>
+ Definition: identifier of the local processor in the list of hosts, or
+ in other words specifier of the column in the subscription
+ matrix representing the local processor
+ defaults to host 0
+
+- #address-cells:
+ Usage: required
+ Value type: <u32>
+ Definition: must be 1
+
+- #size-cells:
+ Usage: required
+ Value type: <u32>
+ Definition: must be 0
+
+= SUBNODES
+Each processor's state bits are described by a subnode of the smsm device node.
+Nodes can either be flagged as an interrupt-controller to denote a remote
+processor's state bits or the local processors bits. The node names are not
+important.
+
+- reg:
+ Usage: required
+ Value type: <u32>
+ Definition: specifies the offset, in words, of the first bit for this
+ entry
+
+- #qcom,state-cells:
+ Usage: required for local entry
+ Value type: <u32>
+ Definition: must be 1 - denotes bit number
+
+- interrupt-controller:
+ Usage: required for remote entries
+ Value type: <empty>
+ Definition: marks the entry as a interrupt-controller and the state bits
+ to belong to a remote processor
+
+- #interrupt-cells:
+ Usage: required for remote entries
+ Value type: <u32>
+ Definition: must be 2 - denotes bit number and IRQ flags
+
+- interrupts:
+ Usage: required for remote entries
+ Value type: <prop-encoded-array>
+ Definition: one entry specifying remote IRQ used by the remote processor
+ to signal changes of its state bits
+
+
+= EXAMPLE
+The following example shows the SMEM setup for controlling properties of the
+wireless processor, defined from the 8974 apps processor's point-of-view. It
+encompasses one outbound entry and the outgoing interrupt for the wireless
+processor.
+
+smsm {
+ compatible = "qcom,smsm";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ qcom,ipc-3 = <&apcs 8 19>;
+
+ apps_smsm: apps@0 {
+ reg = <0>;
+
+ #qcom,state-cells = <1>;
+ };
+
+ wcnss_smsm: wcnss@7 {
+ reg = <7>;
+ interrupts = <0 144 1>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
--
1.8.2.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v2 2/5] dt-binding: soc: qcom: Introduce qcom,smp2p binding documentation
2015-09-25 1:24 [PATCH v2 0/5] Qualcomm Shared Memory State Machines Bjorn Andersson
2015-09-25 1:24 ` [PATCH v2 1/5] dt-binding: soc: qcom: Add Qualcomm SMSM device tree documentation Bjorn Andersson
@ 2015-09-25 1:25 ` Bjorn Andersson
1 sibling, 0 replies; 3+ messages in thread
From: Bjorn Andersson @ 2015-09-25 1:25 UTC (permalink / raw)
To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell
Cc: devicetree, linux-kernel, linux-arm-msm
Introduce binding documentation for the Qualcomm Shared Memory Point 2 Point
protocol.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
Changes since v1:
- No longer representing outgoing state as gpio-controller
.../devicetree/bindings/soc/qcom/qcom,smp2p.txt | 104 +++++++++++++++++++++
1 file changed, 104 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.txt
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.txt
new file mode 100644
index 000000000000..5cc82b8353d8
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.txt
@@ -0,0 +1,104 @@
+Qualcomm Shared Memory Point 2 Point binding
+
+The Shared Memory Point to Point (SMP2P) protocol facilitates communication of
+a single 32-bit value between two processors. Each value has a single writer
+(the local side) and a single reader (the remote side). Values are uniquely
+identified in the system by the directed edge (local processor ID to remote
+processor ID) and a string identifier.
+
+- compatible:
+ Usage: required
+ Value type: <string>
+ Definition: must be one of:
+ "qcom,smp2p"
+
+- interrupts:
+ Usage: required
+ Value type: <prop-encoded-array>
+ Definition: one entry specifying the smp2p notification interrupt
+
+- qcom,ipc:
+ Usage: required
+ Value type: <prop-encoded-array>
+ Definition: three entries specifying the outgoing ipc bit used for
+ signaling the remote end of the smp2p edge:
+ - phandle to a syscon node representing the apcs registers
+ - u32 representing offset to the register within the syscon
+ - u32 representing the ipc bit within the register
+
+- qcom,smem:
+ Usage: required
+ Value type: <u32 array>
+ Definition: two identifiers of the inbound and outbound smem items used
+ for this edge
+
+- qcom,local-pid:
+ Usage: required
+ Value type: <u32>
+ Definition: specifies the identfier of the local endpoint of this edge
+
+- qcom,remote-pid:
+ Usage: required
+ Value type: <u32>
+ Definition: specifies the identfier of the remote endpoint of this edge
+
+= SUBNODES
+Each SMP2P pair contain a set of inbound and outbound entries, these are
+described in subnodes of the smp2p device node. The node names are not
+important.
+
+- qcom,entry-name:
+ Usage: required
+ Value type: <string>
+ Definition: specifies the name of this entry, for inbound entries this
+ will be used to match against the remotely allocated entry
+ and for outbound entries this name is used for allocating
+ entries
+
+- interrupt-controller:
+ Usage: required for incoming entries
+ Value type: <empty>
+ Definition: marks the entry as inbound; the node should be specified
+ as a two cell interrupt-controller as defined in
+ "../interrupt-controller/interrupts.txt"
+ If not specified this node will denote the outgoing entry
+
+- #interrupt-cells:
+ Usage: required for incoming entries
+ Value type: <u32>
+ Definition: must be 2 - denoting the bit in the entry and IRQ flags
+
+- #qcom,state-cells:
+ Usage: required for outgoing entries
+ Value type: <u32>
+ Definition: must be 1 - denoting the bit in the entry
+
+= EXAMPLE
+The following example shows the SMP2P setup with the wireless processor,
+defined from the 8974 apps processor's point-of-view. It encompasses one
+inbound and one outbound entry:
+
+wcnss-smp2p {
+ compatible = "qcom,smp2p";
+ qcom,smem = <431>, <451>;
+
+ interrupts = <0 143 1>;
+
+ qcom,ipc = <&apcs 8 18>;
+
+ qcom,local-pid = <0>;
+ qcom,remote-pid = <4>;
+
+ wcnss_smp2p_out: master-kernel {
+ qcom,entry-name = "master-kernel";
+
+ #qcom,state-cells = <1>;
+ };
+
+ wcnss_smp2p_in: slave-kernel {
+ qcom,entry-name = "slave-kernel";
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
--
1.8.2.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-09-25 1:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-25 1:24 [PATCH v2 0/5] Qualcomm Shared Memory State Machines Bjorn Andersson
2015-09-25 1:24 ` [PATCH v2 1/5] dt-binding: soc: qcom: Add Qualcomm SMSM device tree documentation Bjorn Andersson
2015-09-25 1:25 ` [PATCH v2 2/5] dt-binding: soc: qcom: Introduce qcom,smp2p binding documentation Bjorn Andersson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).