Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: net: Add schema for Qualcomm BAM-DMUX

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>

authored by

Stephan Gerhold and committed by
David S. Miller
f3aee7c9 fc1e5a36

+92
+92
Documentation/devicetree/bindings/net/qcom,bam-dmux.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/net/qcom,bam-dmux.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm BAM Data Multiplexer 8 + 9 + maintainers: 10 + - Stephan Gerhold <stephan@gerhold.net> 11 + 12 + description: | 13 + The BAM Data Multiplexer provides access to the network data channels 14 + of modems integrated into many older Qualcomm SoCs, e.g. Qualcomm MSM8916 15 + or MSM8974. It is built using a simple protocol layer on top of a DMA engine 16 + (Qualcomm BAM DMA) and bidirectional interrupts to coordinate power control. 17 + 18 + Note that this schema does not directly describe a hardware block but rather 19 + a firmware convention that combines several other hardware blocks (such as the 20 + DMA engine). As such it is specific to a firmware version, not a particular 21 + SoC or hardware version. 22 + 23 + properties: 24 + compatible: 25 + const: qcom,bam-dmux 26 + 27 + interrupts: 28 + description: 29 + Interrupts used by the modem to signal the AP. 30 + Both interrupts must be declared as IRQ_TYPE_EDGE_BOTH. 31 + items: 32 + - description: Power control 33 + - description: Power control acknowledgment 34 + 35 + interrupt-names: 36 + items: 37 + - const: pc 38 + - const: pc-ack 39 + 40 + qcom,smem-states: 41 + $ref: /schemas/types.yaml#/definitions/phandle-array 42 + description: State bits used by the AP to signal the modem. 43 + items: 44 + - description: Power control 45 + - description: Power control acknowledgment 46 + 47 + qcom,smem-state-names: 48 + description: Names for the state bits used by the AP to signal the modem. 49 + items: 50 + - const: pc 51 + - const: pc-ack 52 + 53 + dmas: 54 + items: 55 + - description: TX DMA channel phandle 56 + - description: RX DMA channel phandle 57 + 58 + dma-names: 59 + items: 60 + - const: tx 61 + - const: rx 62 + 63 + required: 64 + - compatible 65 + - interrupts 66 + - interrupt-names 67 + - qcom,smem-states 68 + - qcom,smem-state-names 69 + - dmas 70 + - dma-names 71 + 72 + additionalProperties: false 73 + 74 + examples: 75 + - | 76 + #include <dt-bindings/interrupt-controller/irq.h> 77 + 78 + mpss: remoteproc { 79 + bam-dmux { 80 + compatible = "qcom,bam-dmux"; 81 + 82 + interrupt-parent = <&modem_smsm>; 83 + interrupts = <1 IRQ_TYPE_EDGE_BOTH>, <11 IRQ_TYPE_EDGE_BOTH>; 84 + interrupt-names = "pc", "pc-ack"; 85 + 86 + qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>; 87 + qcom,smem-state-names = "pc", "pc-ack"; 88 + 89 + dmas = <&bam_dmux_dma 4>, <&bam_dmux_dma 5>; 90 + dma-names = "tx", "rx"; 91 + }; 92 + };