# References

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

## QUP v3 overview

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

The QUP v3 is a highly flexible and programmable hardware for supporting a wide range of
            serial interface. A single QUP v3 serial engine hardware core provides up to eight
            serial interfaces. The two QUP v3 hardware cores are as follows:
- 16-serial engine core
- SSC QUP v3 hardware core with five serial engines available in the SSC\_I/Os

The QUP v3 supports access from multiple hardware entities in the system. Each entity has
            its own execution environment (EE), a separate address space, and an interrupt line. For
            information on the various transfer modes that can be configured in QUP v3, see [Supported transfer modes in QUP v3](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html#qup-v3-supported-transfer-modes).

The following figure shows one GSI core/engine connected with up to eight serial engines
            (SE). You have the flexibility to customize configurations depending on the use case or
            the protocol of the serial engine. For information on how to customize configurations,
            see [QUP v3 access control customization](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html#customize-access-control-of-qup). To verify if the QUP v3
            firmware is correctly flashed, see [QUP v3 firmware status verification](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html#verify-qup-firmware-status).

Figure : QUP v3 block diagram
            
            <!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export qup-v3-block-diagram.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="7.37833in" height="2.87014in" viewbox="0 0 531.24 206.65" xml:space="preserve" color-interpolation-filters="sRGB" class="st7"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st2 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st3 { fill: #ffffff; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { fill: none; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st6 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st7 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(16.92,-161.419)">		<title>Square</title>		<desc>EE</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="12.9098" cy="193.74" width="25.82" height="25.8197"></v:textrect>		<rect x="0" y="180.83" width="25.8197" height="25.8197" class="st1"></rect>		<text x="4.91" y="197.34" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>EE</text>		</g>	<g id="shape2-4" v:mid="2" v:groupcontext="shape" transform="translate(16.92,-91.7061)">		<title>Square.2</title>		<desc>EE</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="12.9098" cy="193.74" width="25.82" height="25.8197"></v:textrect>		<rect x="0" y="180.83" width="25.8197" height="25.8197" class="st1"></rect>		<text x="4.91" y="197.34" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>EE</text>		</g>	<g id="shape3-7" v:mid="3" v:groupcontext="shape" transform="translate(16.92,-21.993)">		<title>Square.3</title>		<desc>EE</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="12.9098" cy="193.74" width="25.82" height="25.8197"></v:textrect>		<rect x="0" y="180.83" width="25.8197" height="25.8197" class="st1"></rect>		<text x="4.91" y="197.34" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>EE</text>		</g>	<g id="shape4-10" v:mid="4" v:groupcontext="shape" transform="translate(42.7397,-174.329)">		<title>Simple Double Arrow</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="ArrowType" v:prompt="" v:val="VT0(3):26"></v:ud>		</v:userdefs>		<path d="M0 206.65 L10.18 200.75 L10.18 203.7 L31.73 203.7 L31.73 200.75 L41.91 206.65 L31.73 212.55 L31.73 209.6 L10.18					 209.6 L10.18 212.55 L0 206.65 Z" class="st3"></path>	</g>	<g id="shape7-12" v:mid="7" v:groupcontext="shape" transform="translate(84.6512,-21.993)">		<title>Rectangle</title>		<desc>AXI/AHB</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18.0738" cy="124.027" width="36.15" height="165.246"></v:textrect>		<rect x="0" y="41.404" width="36.1475" height="165.246" class="st1"></rect>		<text x="6.74" y="120.43" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AXI/<tspan x="5.74" dy="1.2em" class="st4">AHB</tspan></text>		</g>	<g id="shape9-16" v:mid="9" v:groupcontext="shape" transform="translate(163.31,-18.12)">		<title>Square.9</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="36.24" width="170.41" height="170.41" class="st1"></rect>	</g>	<g id="shape10-18" v:mid="10" v:groupcontext="shape" transform="translate(42.7397,-104.616)">		<title>Simple Double Arrow.10</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="ArrowType" v:prompt="" v:val="VT0(3):26"></v:ud>		</v:userdefs>		<path d="M0 206.65 L10.18 200.75 L10.18 203.7 L31.73 203.7 L31.73 200.75 L41.91 206.65 L31.73 212.55 L31.73 209.6 L10.18					 209.6 L10.18 212.55 L0 206.65 Z" class="st3"></path>	</g>	<g id="shape11-20" v:mid="11" v:groupcontext="shape" transform="translate(43.7085,-33.2798)">		<title>Simple Double Arrow.11</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="ArrowType" v:prompt="" v:val="VT0(3):26"></v:ud>		</v:userdefs>		<path d="M0 206.65 L10.18 200.75 L10.18 203.7 L31.13 203.7 L31.13 200.75 L41.31 206.65 L31.13 212.55 L31.13 209.6 L10.18					 209.6 L10.18 212.55 L0 206.65 Z" class="st3"></path>	</g>	<g id="shape12-22" v:mid="12" v:groupcontext="shape" transform="translate(121.399,-105.28)">		<title>Simple Double Arrow.12</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="ArrowType" v:prompt="" v:val="VT0(3):26"></v:ud>		</v:userdefs>		<path d="M0 206.65 L10.18 200.75 L10.18 203.7 L31.13 203.7 L31.13 200.75 L41.31 206.65 L31.13 212.55 L31.13 209.6 L10.18					 209.6 L10.18 212.55 L0 206.65 Z" class="st3"></path>	</g>	<g id="shape13-24" v:mid="13" v:groupcontext="shape" transform="translate(184.925,-84.8823)">		<title>Square.13</title>		<desc>GSI</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="20.3975" cy="186.252" width="40.8" height="40.7951"></v:textrect>		<rect x="0" y="165.855" width="40.7951" height="40.7951" class="st1"></rect>		<text x="10.06" y="189.85" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GSI</text>		</g>	<g id="shape15-27" v:mid="15" v:groupcontext="shape" transform="translate(269.595,-146.96)">		<title>Rectangle.15</title>		<desc>SE1</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="23.625" cy="193.74" width="47.25" height="25.8197"></v:textrect>		<rect x="0" y="180.83" width="47.25" height="25.8197" class="st1"></rect>		<text x="12.28" y="197.34" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SE1</text>		</g>	<g id="shape16-30" v:mid="16" v:groupcontext="shape" transform="translate(269.595,-94.3249)">		<title>Rectangle.16</title>		<desc>SE2</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="23.625" cy="193.74" width="47.25" height="25.8197"></v:textrect>		<rect x="0" y="180.83" width="47.25" height="25.8197" class="st1"></rect>		<text x="12.28" y="197.34" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SE2</text>		</g>	<g id="shape17-33" v:mid="17" v:groupcontext="shape" transform="translate(270.72,-27.4151)">		<title>Rectangle.17</title>		<desc>SE n</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="23.625" cy="193.74" width="47.25" height="25.8197"></v:textrect>		<rect x="0" y="180.83" width="47.25" height="25.8197" class="st1"></rect>		<text x="10.62" y="197.34" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SE n</text>		</g>	<g id="shape19-36" v:mid="19" v:groupcontext="shape" transform="translate(291.028,-73.1782)">		<title>Circle.19</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 205.08 A1.57335 1.57335 0 0 1 3.15 205.08 A1.57335 1.57335 0 1 1 0 205.08 Z" class="st1"></path>	</g>	<g id="shape20-38" v:mid="20" v:groupcontext="shape" transform="translate(291.129,-64.1094)">		<title>Circle.20</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 205.04 A1.60775 1.60775 0 0 1 3.22 205.04 A1.60775 1.60775 0 1 1 0 205.04 Z" class="st1"></path>	</g>	<g id="shape21-40" v:mid="21" v:groupcontext="shape" transform="translate(175.095,-141.28)">		<title>Sheet.21</title>		<desc>QUP v3</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="32.625" cy="190.337" width="65.25" height="32.625"></v:textrect>		<rect x="0" y="174.025" width="65.25" height="32.625" class="st5"></rect>		<text x="11.62" y="193.94" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QUP v3</text>		</g>	<g id="shape24-43" v:mid="24" v:groupcontext="shape" transform="translate(333.985,-159.575) rotate(-0.092983)">		<title>Simple Double Arrow.24</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="ArrowType" v:prompt="" v:val="VT0(3):26"></v:ud>		</v:userdefs>		<path d="M0 206.65 L12 199.99 L12 203.32 L95.88 203.32 L95.88 199.99 L107.88 206.65 L95.88 213.31 L95.88 209.98 L12 209.98					 L12 213.31 L0 206.65 Z" class="st3"></path>	</g>	<g id="shape25-45" v:mid="25" v:groupcontext="shape" transform="translate(333.893,-105.57) rotate(-0.397661)">		<title>Simple Double Arrow.25</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="ArrowType" v:prompt="" v:val="VT0(3):26"></v:ud>		</v:userdefs>		<path d="M0 206.65 L12 199.99 L12 203.32 L94.27 203.32 L94.27 199.99 L106.28 206.65 L94.27 213.31 L94.27 209.98 L12 209.98					 L12 213.31 L0 206.65 Z" class="st3"></path>	</g>	<g id="shape29-47" v:mid="29" v:groupcontext="shape" transform="translate(442.237,-130.5)">		<title>Square.29</title>		<desc>Devices</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28.0881" cy="178.562" width="56.18" height="56.1762"></v:textrect>		<rect x="0" y="150.474" width="56.1762" height="56.1762" class="st1"></rect>		<text x="6.75" y="182.16" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Devices</text>		</g>	<g id="shape32-50" v:mid="32" v:groupcontext="shape" transform="translate(442.348,-71.207)">		<title>Square.32</title>		<desc>Devices</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="27.4703" cy="179.18" width="54.95" height="54.9406"></v:textrect>		<rect x="0" y="151.709" width="54.9406" height="54.9406" class="st1"></rect>		<text x="6.13" y="182.78" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Devices</text>		</g>	<g id="shape33-53" v:mid="33" v:groupcontext="shape" transform="translate(370.2,-163.5)">		<title>Sheet.33</title>		<desc>I2C</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="200.262" width="36" height="12.7757"></v:textrect>		<rect x="0" y="193.874" width="36" height="12.7757" class="st6"></rect>		<text x="8.66" y="203.86" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I2C</text>		</g>	<g id="shape34-56" v:mid="34" v:groupcontext="shape" transform="translate(369.075,-109.849)">		<title>Sheet.34</title>		<desc>SPI</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="19.1225" cy="200.262" width="38.25" height="12.7757"></v:textrect>		<rect x="0" y="193.874" width="38.245" height="12.7757" class="st6"></rect>		<text x="9.45" y="203.86" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPI</text>		</g>	<g id="shape35-59" v:mid="35" v:groupcontext="shape" transform="translate(291.083,-82.2845)">		<title>Circle.35</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 205.04 A1.60775 1.60775 0 0 1 3.22 205.04 A1.60775 1.60775 0 1 1 0 205.04 Z" class="st1"></path>	</g></g>
</svg>

## QUP v3 mapping to protocols and GPIOs in QCS6490 and QCS5430

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

The QCS6490 and QCS5430 chip products contain 21 QUP v3 serial engines. Of these, 16
            QUP v3 serial engines are allocated for the application processor and 5 QUP v3 serial
            engines are allocated for the sensor low-power island (SLPI) on the application digital
            signal processor (aDSP).

Only one protocol can be selected in one QUP v3 serial engine at a time. For example,
            simultaneous UART and I2C functions are not supported. Each QUP v3 serial engine has up
            to seven lanes (I/O), which are numbered from 0 to 6.

Note: The top-level QUP v3 serial engines are used as the application
            processor and boot image. The low-power island (LPI) QUP v3 serial engines are used for
            the sensor subsystem and TrustZone use cases.

The default QUP v3 mapping to protocols and GPIOs are listed in the following
            tables.

| QUP v3 serial engine | QUP v3 serial engine | Protocols | Protocols | Protocols | Protocols | Protocols | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| QUP v3 serial engine | QUP v3 serial engine | UART | I3C | HS UART | SPI-M | I2C | L0 | L1 | L2 | L3 | L4 | L5 | L6 |
| QUP\_0 | SE0 | Yes | Yes | – | Yes | Yes | 0 | 1 | 2 | 3 | – | – | – |
| QUP\_0 | SE1 | Yes | Yes | – | Yes | Yes | 4 | 5 | 6 | 7 | – | – | – |
| QUP\_0 | SE2 | Yes | – | – | Yes | Yes | 8 | 9 | 10 | 11 | – | – | – |
| QUP\_0 | SE3 | Yes | – | – | Yes | Yes | 12 | 13 | 14 | 15 | – | – | – |
| QUP\_0 | SE4 | Yes | – | – | Yes | Yes | 16 | 17 | 18 | 19 | – | – | – |
| QUP\_0 | SE5 | Yes | – | – | Yes | Yes | 20 | 21 | 22 | 23 | – | – | – |
| QUP\_0 | SE6 | Yes | – | Yes | Yes | Yes | 24 | 25 | 26 | 27 | – | – | – |
| QUP\_0 | SE7 | Yes | – | Yes | Yes | Yes | 28 | 29 | 30 | 31 | 2 | 3 | 6 |
| QUP\_1 | SE0 | Yes | Yes | – | Yes | Yes | 32 | 33 | 34 | 35 | – | – | – |
| QUP\_1 | SE1 | Yes | Yes | – | Yes | Yes | 36 | 37 | 38 | 39 | – | – | – |
| QUP\_1 | SE2 | Yes | – | – | Yes | Yes | 40 | 41 | 42 | 43 | – | – | – |
| QUP\_1 | SE3 | Yes | – | – | Yes | Yes | 44 | 45 | 45 | 47 | – | – | – |
| QUP\_1 | SE4 | Yes | – | – | Yes | Yes | 48 | 49 | 50 | 51 | 55 | 54 | 38 |
| QUP\_1 | SE5 | Yes | – | – | Yes | Yes | 52 | 53 | 54 | 55 | – | – | – |
| QUP\_1 | SE6 | Yes | – | Yes | Yes | Yes | 56 | 57 | 58 | 59 | 62 | 63 | 50 |
| QUP\_1 | SE7 | Yes | – | Yes | Yes | Yes | 60 | 61 | 62 | 63 | – | – | – |
| LPI\_QUP | SE0 | – | Yes | – | – | Yes | 159 | 160 | – | – | – | – | – |
| LPI\_QUP | SE1 | – | Yes | – | – | Yes | 161 | 162 | – | – | – | – | – |
| LPI\_QUP | SE2 | – | Yes | – | Yes | Yes | 163 | 164 | 165 | 166 | 161 | – | – |
| LPI\_QUP | SE5 | Yes | – | – | – | Yes | 171 | 172 | 171 | 172 | – | – | – |
| LPI\_QUP | SE6 | Yes | – | Yes | – | – | 159 | 159 | – | – | – | – | – |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |

## QUP v3 mapping to protocols and GPIOs in QCS9075

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

The QCS9075 chip product contains 26 QUP v3 serial engines. The protocol and GPIO mapping
            is listed in the following tables.

| QUP v3 serial engine | QUP v3 serial engine | Protocols | Protocols | Protocols | Protocols | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping | QUP lane to GPIO mapping |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| QUP v3 serial engine | QUP v3 serial engine | UART | HS UART | I2C-M | SPI-M | L0 | L1 | L2 | L3 | L4 | L5 | L6 |
| QUP\_0 | SE0 | Yes | – | Yes | Yes | 20 | 21 | 22 | 23 | – | – | – |
| QUP\_0 | SE1 | Yes | – | Yes | Yes | 24 | 25 | 26 | 27 | – | – | – |
| QUP\_0 | SE2 | Yes | Yes | Yes | Yes | 36 | 37 | 38 | 39 | – | – | – |
| QUP\_0 | SE3 | Yes | Yes | Yes | Yes | 28 | 29 | 30 | 31 | – | – | – |
| QUP\_0 | SE4 | Yes | – | Yes | Yes | 32 | 33 | 34 | 35 | – | – | – |
| QUP\_0 | SE5 | Yes | – | Yes | Yes | 36 | 37 | 38 | 39 | – | – | – |
| QUP\_1 | SE0 | Yes | – | Yes | Yes | 40 | 41 | 42 | 43 | – | – | – |
| QUP\_1 | SE1 | Yes | – | Yes | Yes | 42 | 43 | 40 | 41 | – | – | – |
| QUP\_1 | SE2 | Yes | Yes | Yes | Yes | 46 | 47 | 44 | 45 | – | – | – |
| QUP\_1 | SE3 | Yes | Yes | Yes | Yes | 44 | 45 | 46 | 47 | – | – | – |
| QUP\_1 | SE4 | Yes | – | Yes | Yes | 48 | 49 | 50 | 51 | – | – | – |
| QUP\_1 | SE5 | Yes | – | Yes | Yes | 52 | 53 | 54 | 55 | – | – | – |
| QUP\_1 | SE6 | Yes | – | Yes | Yes | 56 | 57 | 56 | 57 | – | – | – |
| QUP\_2 | SE0 | Yes | – | Yes | Yes | 80 | 81 | 82 | 83 | – | – | – |
| QUP\_2 | SE1 | Yes | – | Yes | Yes | 84 | 85 | 99 | 100 | – | – | – |
| QUP\_2 | SE2 | Yes | Yes | Yes | Yes | 86 | 87 | 88 | 89 | 90 | – | – |
| QUP\_2 | SE3 | Yes | Yes | Yes | Yes | 91 | 92 | 93 | 94 | – | – | – |
| QUP\_2 | SE4 | Yes | – | Yes | Yes | 95 | 96 | 97 | 98 | – | – | – |
| QUP\_2 | SE5 | Yes | – | Yes | Yes | 99 | 100 | 84 | 85 | – | – | – |
| QUP\_2 | SE6 | Yes | – | Yes | Yes | 97 | 98 | 95 | 96 | – | – | – |
| QUP\_3 | SE0 | Yes | – | Yes | Yes | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  |  |  |  |

## Supported transfer modes in QUP v3

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

The following modes can be configured in the QUP v3 serial engine.
- **FIFO mode** 
![](data:image/png;base64,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)

    1. ①: The application processor configures the generic interface (GENI).
    2. ②: The application processor processes Rx/Tx data. The data is
                            transferred between GENI and memory.
- **DMA mode**
![](data:image/png;base64,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)

    1. ①: The application processor initializes DMA.
    2. ②: The serial engine configures GENI, and initiates the transfer
                            process.
- **GSI mode**
![](data:image/png;base64,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)

    1. ①: The application processor prepares TRE.
    2. ②: The application processor informs QUP (GSI).
    3. ③: The GSI processes TRE.
    4. ④: After the TRE completes processing, it is sent to GENI.
    5. ⑤: The serial engine processes the Rx/Tx data.

Note: The QUP v3 UART serial engine does not support the GSI
                mode.

## QUP v3 access control customization

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

The QUP v3 user access file `QUPAC_Access.c` specifies the owners of the
            serial engine resource. Initially, it is populated according to the system I/O GPIO
            allocation. All serial engines must be listed to access the subsystem. It is flexible
            enough to list only the available serial engine on a particular device.

To customize the access control for the required serial engine protocol, configure the
            parameters in the QUPAC\_Access.c file. The TrustZone image for the
                QUPAC\_Access.c file is
                at /firmware/qualcomm-linux-spf-1-0\_ap\_standard\_oem\_nomodem/TZ.XF.5.0/trustzone\_images/core/settings/buses/qup\_accesscontrol/qupv3/config/&lt;chipset&gt;/QUPAC\_Access.c.

To specify the owner of the serial engine resource, modify the
                QUPAC\_Access.c file to suit the board design.

The following use case specifies the default protocol that operates on an enabled serial
            engine. You can modify the code according to your board design.

### Nonsecure mode use case in QUP v3 serial engine

The following nonsecure mode use cases are supported in the QUP v3 serial engine.

    const QUPv3_se_security_permissions_type qupv3_perms_iot_rb3[] =
    {
      /*   PeriphID,         ProtocolID,               Mode,  NsOwner,       bAllowFifo, bLoad, bModExcl  */
      { QUPV3_0_SE0, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // LT9611 and QPS615 I2C
      { QUPV3_0_SE1, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // APPS I2C - PCIE/ USB Type C
      { QUPV3_0_SE2, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // SMB / LS1 I2C
      { QUPV3_0_SE3, QUPV3_PROTOCOL_SPI,     QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // CAN SPI
      { QUPV3_0_SE4, QUPV3_PROTOCOL_UART_4W, QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // LS1 UART
      { QUPV3_0_SE5, QUPV3_PROTOCOL_UART_2W, QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  FALSE, FALSE }, // Debug UART
      { QUPV3_0_SE6, QUPV3_PROTOCOL_UART_2W, QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // WLAN UART
      { QUPV3_0_SE7, QUPV3_PROTOCOL_UART_4W, QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // Hastings BT
      { QUPV3_1_SE0, QUPV3_PROTOCOL_SPMI,    QUPV3_MODE_FIFO, AC_ADSP_Q6_ELF,     TRUE,  TRUE,  FALSE }, // QuP SPMI
      { QUPV3_1_SE1, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // NFC I2C
      { QUPV3_1_SE2, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_FIFO, AC_HLOS,            TRUE,  TRUE,  FALSE }, // HDMI OUT for VIDEOIOBoard
      { QUPV3_1_SE3, QUPV3_PROTOCOL_SPI,     QUPV3_MODE_FIFO, AC_HLOS,            FALSE, TRUE,  TRUE }, // LS1 SPI
      { QUPV3_1_SE4, QUPV3_PROTOCOL_SPI,     QUPV3_MODE_GSI,  AC_TZ,              FALSE, TRUE,  TRUE }, // SPI -NFC ESE
      { QUPV3_1_SE5, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_GSI,  AC_HLOS,            FALSE, TRUE,  FALSE}, // Legacy Touch
      { QUPV3_1_SE6, QUPV3_PROTOCOL_SPI,     QUPV3_MODE_GSI,  AC_HLOS,            FALSE, TRUE,  FALSE}, // FP
      /*QUPV3_1_SE7*/
    };Copy to clipboard

### QUP v3 serial engine access list description

The following variables are passed into the
                    `QUPv3_se_security_permissions_type` structure.

Table : Security permission variables for QUP v3

| Variables | Description |
| --- | --- |
| `PeriphID` | Serial engine peripheral to configure and assign. |
| `ProtocolID` | Macro of the required protocol. |
| `Mode` | Macro of FIFO/GSI/DMA modes. |
| `NsOwner` | Holds a macro of the image that needs access. |
| `bAllowFifo` | The boolean flag is set to `True` if the mode is<br>                                    `FIFO`, else the flag is set to<br>                                    `False`. |
| `bLoad` | The boolean flag value is set to `True` to load<br>                                the protocol firmware. |
| `bModExcl` | This flag is exclusively for TrustZone. It is set to<br>                                    `True` when `NsOwner` is AC\_TZ. |

For more information on this macro,
                    see settings/buses/qup\_accesscontrol/qupv3/interface/QupACCommonIds.h.

##  QUP v3 firmware status verification

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

For serial engines to work, the QUP firmware must be flashed correctly. The firmware is
            delivered through the metabuild at
                `common/core_qupv3fw/<chipset>/qupv3fw.elf`. You can verify the
            firmware status by checking `GENI_FW_REVISION_RO (0xa8c068)`. For
            example, identify the register in the kernel log for the `0000ffff`
            value. In the following log, the `0000ffff` error indicates that the
            firmware is not flashed
            correctly.

    0a8c068: 0000ffff //Invalid firmware or firmware not loaded
    00a80068: 00000126 //SPI
    00a88068: 00000338 //I2C
    Copy to clipboard

Modify the `QUPAC_Access.c` file configuration only if you intend to use a
            protocol different from the default configuration.

The following sample log is displayed when configurations do not match after loading.

    msm_geni_serial 898000.qcom,qup_uart:msm_geni_serial_startup: Invalid FW
                        255 loadedCopy to clipboard

## Related documents

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

| Title | Resource |
| --- | --- |
| **Qualcomm Technologies,                            Inc.** | **Qualcomm Technologies,                            Inc.** |
| Secure shell | [https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#how-to-ssh-](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#how-to-ssh-) |
| QDTE | [https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-4/qdte-tools.html](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-4/qdte-tools.html) |
| **Resources** | **Resources** |
| PCI bus subsystem | [https://www.kernel.org/doc/html/latest/PCI/index.html](https://www.kernel.org/doc/html/latest/PCI/index.html) |
| Linux user space examples | [https://github.com/Digilent/linux-userspace-examples/tree/master/uart_example_linux/src](https://github.com/Digilent/linux-userspace-examples/tree/master/uart_example_linux/src) |
| DTSI configuration examples | [https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts](https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts) |
| Test tools and methods for the UART serial interface driver | [https://docs.kernel.org/admin-guide/serial-console.html](https://docs.kernel.org/admin-guide/serial-console.html) |
| UART Linux APIs | [https://github.com/torvalds/linux/blob/master/include/linux/tty.h](https://github.com/torvalds/linux/blob/master/include/linux/tty.h) |
| UART upstream device tree reference | [https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi](https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi) |
| Qualcomm Robotics RB3 Gen 2 Development Kit device tree node | [https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts](https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts) |
| SPI samples | [https://github.com/Digilent/linux-userspace-examples/tree/master](https://github.com/Digilent/linux-userspace-examples/tree/master) |
| SPI Linux APIs | <ul class="ul" id="related_documents__ul_y25_4h1_r1c"><br>                                <li class="li"><a href="https://github.com/torvalds/linux/blob/master/include/uapi/linux/spi/spidev.h" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://github.com/torvalds/linux/blob/master/include/uapi/linux/spi/spidev.h')">https://github.com/torvalds/linux/blob/master/include/uapi/linux/spi/spidev.h</a></li><br><br>                                <li class="li"><a href="https://github.com/torvalds/linux/blob/master/include/linux/spi/spi.h" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://github.com/torvalds/linux/blob/master/include/linux/spi/spi.h')">https://github.com/torvalds/linux/blob/master/include/linux/spi/spi.h</a></li><br><br>                            </ul> |
| SPI kernel tools | [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/tools/spi](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/tools/spi) |
| SPI upstream device tree reference | [https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi](https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi) |
| I2C samples | <ul class="ul" id="related_documents__ul_agk_231_r1c"><br>                                <li class="li"><a href="https://manpages.debian.org/testing/i2c-tools/index.html" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://manpages.debian.org/testing/i2c-tools/index.html')">https://manpages.debian.org/testing/i2c-tools/index.html</a></li><br><br>                                <li class="li"><a href="https://linuxhint.com/i2c-linux-utilities/" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://linuxhint.com/i2c-linux-utilities/')">https://linuxhint.com/i2c-linux-utilities/</a></li><br><br>                            </ul> |
| I2C Linux APIs | <ul class="ul" id="related_documents__ul_snn_g31_r1c"><br>                                <li class="li"><a href="https://github.com/torvalds/linux/blob/master/include/linux/i2c.h" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://github.com/torvalds/linux/blob/master/include/linux/i2c.h')">https://github.com/torvalds/linux/blob/master/include/linux/i2c.h</a></li><br><br>                                <li class="li"><a href="https://github.com/torvalds/linux/blob/master/include/linux/i2c-dev.h" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://github.com/torvalds/linux/blob/master/include/linux/i2c-dev.h')">https://github.com/torvalds/linux/blob/master/include/linux/i2c-dev.h</a></li><br><br>                            </ul> |
| I2C upstream kernel test applications and I2C tool | [https://layers.openembedded.org/layerindex/recipe/27859/](https://layers.openembedded.org/layerindex/recipe/27859/) |
| I2C upstream device tree reference | [https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi](https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi) |
| PCIe device initialization and enumeration process | [https://www.kernel.org/doc/html/latest/PCI/index.html](https://www.kernel.org/doc/html/latest/PCI/index.html) |
| PCIe framework and client driver PCIe registrations | [https://www.kernel.org/doc/html/latest/PCI/index.html](https://www.kernel.org/doc/html/latest/PCI/index.html) |
| Add MSI groups supported for a PCIe instance | [https://lore.kernel.org/linux-arm-msm/f1168212-bc6e-4570-869c-2870d6f248ad@linaro.org/T/](https://lore.kernel.org/linux-arm-msm/f1168212-bc6e-4570-869c-2870d6f248ad@linaro.org/T/) |
| PCIe debugging | [https://pcisig.com/specifications](https://pcisig.com/specifications) |
| PCIe upstream device tree reference | <ul class="ul" id="related_documents__ul_spq_sj1_r1c"><br>                                <li class="li"><a href="https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi')">https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi</a></li><br><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/controller/dwc/pcie-qcom.c?h=v6.8-rc6#n1634" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/controller/dwc/pcie-qcom.c?h=v6.8-rc6#n1634')">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/controller/dwc/pcie-qcom.c?h=v6.8-rc6#n1634</a></li><br><br>                            </ul> |
| USB `Qscratch` wrapper driver | [https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/dwc3-qcom.c](https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/dwc3-qcom.c) |
| Controller core driver | [https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/core.c](https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/core.c) |
| USB software interface drivers for Type-C connector | <ul class="ul" id="related_documents__ul_bcf_bk1_r1c"><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi.c?h=v6.6.2" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi.c?h=v6.6.2')">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi.c?h=v6.6.2</a></li><br><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi_glink.c?h=v6.6.2" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi_glink.c?h=v6.6.2')">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi_glink.c?h=v6.6.2</a></li><br><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/displayport.c?h=v6.6.2" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/displayport.c?h=v6.6.2')">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/displayport.c?h=v6.6.2</a></li><br><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2')">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2</a></li><br><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2')">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2</a></li><br><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink.c?h=v6.6.2" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink.c?h=v6.6.2')">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink.c?h=v6.6.2</a></li><br><br>                                <li class="li"><a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink_altmode.c?h=v6.6.2" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink_altmode.c?h=v6.6.2')">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink_altmode.c?h=v6.6.2</a></li><br><br>                            </ul> |
| LPM support | [https://lore.kernel.org/all/20231017131851.8299-1-quic_kriskura@quicinc.com/](https://lore.kernel.org/all/20231017131851.8299-1-quic_kriskura@quicinc.com/) |
| USB DW3C driver | [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2) |
| Qualcomm Synopsys femto PHY | [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c?h=v6.6.2](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c?h=v6.6.2) |
| QMP DisplayPort combo PHY | [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2) |
| USB ADB | [https://developer.android.com/tools/adb](https://developer.android.com/tools/adb) |
| `f_fs.c` | [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_fs.c?h=v6.6.2](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_fs.c?h=v6.6.2) |
| Mass storage | [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_mass_storage.c?h=v6.6.2](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_mass_storage.c?h=v6.6.2) |
| Platform tools (adb/fastboot) | [https://developer.android.com/tools/releases/platform-tools](https://developer.android.com/tools/releases/platform-tools) |
| UVC LibUVC | <ul class="ul" id="related_documents__ul_rj4_ccl_j1c"><br>                                <li class="li"><a href="https://github.com/libuvc/libuvc" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://github.com/libuvc/libuvc')">https://github.com/libuvc/libuvc</a></li><br><br>                                <li class="li"><a href="https://libuvc.github.io/libuvc/" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://libuvc.github.io/libuvc/')">https://libuvc.github.io/libuvc/</a></li><br><br>                            </ul> |
| UVC gadget | [https://github.com/wlhe/uvc-gadget](https://github.com/wlhe/uvc-gadget) |
| UVC streamer | [https://github.com/bsapundzhiev/uvc-streamer](https://github.com/bsapundzhiev/uvc-streamer) |
| UVC Video4Linux (v4l2-utils) | [https://linuxtv.org/downloads/v4l-dvb-apis/driver-api/v4l2-core.html](https://linuxtv.org/downloads/v4l-dvb-apis/driver-api/v4l2-core.html) |
| USB upstream device tree reference | [https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi](https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/sc7280.dtsi) |
| Qualcomm Linux chip product device-tree node | [https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts](https://git.linaro.org/kernel-org/linux-next.git/tree/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts) |
| RPM changes in the USB driver and other examples | [https://patchwork.kernel.org/project/linux-usb/list/?series=793939&archive=both](https://patchwork.kernel.org/project/linux-usb/list/?series=793939&amp;archive=both) |
| Flatten a device tree | <ul class="ul" id="related_documents__ul_izt_hm1_r1c"><br>                                <li class="li"><a href="https://lore.kernel.org/all/af60c05b-4a0f-51b8-486a-1fc601602515@quicinc.com/" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://lore.kernel.org/all/af60c05b-4a0f-51b8-486a-1fc601602515@quicinc.com/')">https://lore.kernel.org/all/af60c05b-4a0f-51b8-486a-1fc601602515@quicinc.com/</a></li><br><br>                                <li class="li"><a href="https://lore.kernel.org/all/20231016-dwc3-refactor-v1-0-ab4a84165470@quicinc.com/" target="_blank" class="xref cursorpointer" onclick="Window.BookmapComponent.navigateExternalFile('https://lore.kernel.org/all/20231016-dwc3-refactor-v1-0-ab4a84165470@quicinc.com/')">https://lore.kernel.org/all/20231016-dwc3-refactor-v1-0-ab4a84165470@quicinc.com/</a></li><br><br>                            </ul> |

## Acronyms and terms

Source: [https://docs.qualcomm.com/doc/80-70015-8/topic/references.html](https://docs.qualcomm.com/doc/80-70015-8/topic/references.html)

| Acronym or term | Definition |
| --- | --- |
| aDSP | Application digital signal processor |
| ADB | Android debug bridge |
| ASPM | Active state power management |
| BDF | Bus device function |
| CAN | Controller area network |
| CRC | Cyclic redundancy check |
| CTS | Clear to send |
| DLLP | Data link layer packet |
| DTS | Device tree source |
| ECRC | End-to-end CRC |
| EE | Execution environment |
| ESE | Execute secure environment |
| FP | Fingerprint |
| GPIO | General-purpose input/output |
| GSI | Generic software interface |
| HID | Human interface device |
| I/O | Input/output |
| I2C | Interintegrated circuit |
| I3C | Improved interintegrated circuit |
| LSP | List processor |
| MS | Mass storage |
| MSI | Message signaled interrupt |
| NCM | Network control modem |
| NFC | Near-field communication |
| PCIe | Peripheral component interconnect express |
| QoS | Quality of service |
| QIM | Qualcomm intelligent multimedia |
| RTS | Request to send |
| SCL | Serial clock line |
| SDK | Software development kit |
| SDL | Serial data line |
| SE | Serial engine |
| SLPI | Sensor low-power island |
| SPI | Serial peripheral interface |
| SPMI | System power management interface |
| SSC | Snapdragon sensor core |
| TC | Traffic class |
| TLP | Transaction layer packet |
| TZ | TrustZone |
| UEFI | Unified extensible firmware interface |
| UAC | USB audio class |
| UART | Universal asynchronous receiver-transmitter |
| UCSI | USB Type-C connector system software interface |
| V4L2 | Video4Linux2 |
| VC | Virtual channel |
| Yavta | Yet another V4L2 test application |

Last Published: Oct 15, 2024

[Previous Topic
CAN](https://docs.qualcomm.com/bundle/publicresource/80-70015-8/topics/can.md)