blob: d25b4560b62efa94062940df3d65570336a63872 [file] [log] [blame]
Qualcomm SLIMBUS controller
Qualcomm implements 2 type of slimbus controllers:
1. "qcom,slim-msm": This controller is used if applications processor
driver is controlling slimbus master component. This driver is
responsible for communicating with slave HW directly using
messaging interface, and doing data channel management. Driver
also communicates with satellite component (driver implemented
by other execution environment, such as ADSP) to get its
requirements for data channel and bandwidth requirements.
2. "qcom,slim-ngd": This controller is used if applications processor
driver is controlling slimbus satellite component (also known as
Non-ported Generic Device, or NGD). This is light-weight slimbus
controller responsible for communicating with slave HW directly
over bus messaging interface, and communicating with master component
(driver residing on other execution environment, such as ADSP)
for bandwidth and data channel management.
Required properties:
- reg : Offset and length of the register region(s) for the device
- reg-names : Register region name(s) referenced in reg above
Required register resource entries are:
"slimbus_physical": Physical adderss of controller register blocks
"slimbus_bam_physical": Physical address of Bus Access Module (BAM)
for this controller
- compatible : should be "qcom,slim-msm" if this is master component driver
- compatible : should be "qcom,slim-ngd" if this is satellite component driver
- cell-index : SLIMBUS number used for this controller
- interrupts : Interrupt numbers used by this controller
- interrupt-names : Required interrupt resource entries are:
"slimbus_irq" : Interrupt for SLIMBUS core
"slimbus_bam_irq" : Interrupt for controller core's BAM
Optional property:
- reg entry for slew rate : If slew rate control register is provided, this
entry should be used.
- reg-name for slew rate: "slimbus_slew_reg"
- qcom,min-clk-gear : Minimum clock gear at which this controller can be run
(range: 1-10)
Default value will be 1 if this entry is not specified
- qcom,max-clk-gear: Maximum clock gear at which this controller can be run
(range: 1-10)
Default value will be 10 if this entry is not specified
- qcom,rxreg-access: This boolean indicates that slimbus RX should use direct
register access to receive data. This flag is only needed if
BAM pipe is not available to receive data from slimbus
- qcom,apps-ch-pipes: This value represents BAM pipe-mask used by application
processor for data channels. If this property is not defined,
default mask of 0x3F000000 is used indicating apps can use 6
pipes from 24-29.
- qcom,ea-pc: This value represents product code (PC) field of enumeration
address (EA) for the Qualcomm slimbus controller hardware.
This value is needed if data-channels originating from apps
are to be used, so that application processor can query
logical address of the ported generic device to be used.
Other than PC, fields of EA are same across platforms.
- qcom,slim-mdm: This value provides the identifier of slimbus component on
external mdm. This property enables the slimbus driver to
register and receive subsytem restart notification from mdm
and follow appropriate steps to ensure communication on the bus
can be resumed after mdm-restart.
Example:
slim@fe12f000 {
cell-index = <1>;
compatible = "qcom,slim-msm";
reg = <0xfe12f000 0x35000>,
<0xfe104000 0x20000>;
reg-names = "slimbus_physical", "slimbus_bam_physical";
interrupts = <0 163 0 0 164 0>;
interrupt-names = "slimbus_irq", "slimbus_bam_irq";
qcom,min-clk-gear = <10>;
qcom,rxreg-access;
qcom,apps-ch-pipes = <0x60000000>;
qcom,ea-pc = <0x30>;
};