Skip to content

Commit

Permalink
dt-bindings: net: Add schema for Qualcomm BAM-DMUX
Browse files Browse the repository at this point in the history
The BAM Data Multiplexer provides access to the network data channels of
modems integrated into many older Qualcomm SoCs, e.g. Qualcomm MSM8916 or
MSM8974. It is built using a simple protocol layer on top of a DMA engine
(Qualcomm BAM) and bidirectional interrupts to coordinate power control.

The device tree node combines the incoming interrupt with the outgoing
interrupts (smem-states) as well as the two DMA channels, which allows
the BAM-DMUX driver to request all necessary resources.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Stephan Gerhold authored and David S. Miller committed Nov 29, 2021
1 parent fc1e5a3 commit f3aee7c
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions Documentation/devicetree/bindings/net/qcom,bam-dmux.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/qcom,bam-dmux.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm BAM Data Multiplexer

maintainers:
- Stephan Gerhold <stephan@gerhold.net>

description: |
The BAM Data Multiplexer provides access to the network data channels
of modems integrated into many older Qualcomm SoCs, e.g. Qualcomm MSM8916
or MSM8974. It is built using a simple protocol layer on top of a DMA engine
(Qualcomm BAM DMA) and bidirectional interrupts to coordinate power control.
Note that this schema does not directly describe a hardware block but rather
a firmware convention that combines several other hardware blocks (such as the
DMA engine). As such it is specific to a firmware version, not a particular
SoC or hardware version.
properties:
compatible:
const: qcom,bam-dmux

interrupts:
description:
Interrupts used by the modem to signal the AP.
Both interrupts must be declared as IRQ_TYPE_EDGE_BOTH.
items:
- description: Power control
- description: Power control acknowledgment

interrupt-names:
items:
- const: pc
- const: pc-ack

qcom,smem-states:
$ref: /schemas/types.yaml#/definitions/phandle-array
description: State bits used by the AP to signal the modem.
items:
- description: Power control
- description: Power control acknowledgment

qcom,smem-state-names:
description: Names for the state bits used by the AP to signal the modem.
items:
- const: pc
- const: pc-ack

dmas:
items:
- description: TX DMA channel phandle
- description: RX DMA channel phandle

dma-names:
items:
- const: tx
- const: rx

required:
- compatible
- interrupts
- interrupt-names
- qcom,smem-states
- qcom,smem-state-names
- dmas
- dma-names

additionalProperties: false

examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
mpss: remoteproc {
bam-dmux {
compatible = "qcom,bam-dmux";
interrupt-parent = <&modem_smsm>;
interrupts = <1 IRQ_TYPE_EDGE_BOTH>, <11 IRQ_TYPE_EDGE_BOTH>;
interrupt-names = "pc", "pc-ack";
qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>;
qcom,smem-state-names = "pc", "pc-ack";
dmas = <&bam_dmux_dma 4>, <&bam_dmux_dma 5>;
dma-names = "tx", "rx";
};
};

0 comments on commit f3aee7c

Please sign in to comment.