# 入门指南：设置设备接口

Source: [https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html](https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html)

在开始之前，请按照 [Qualcomm Linux 编译指南](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-254/introduction.html)中所述搭建基础架构。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export getting-started.svg getting-started -->
<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="12.3724in" height="2.61851in" viewbox="0 0 890.813 188.533" xml:space="preserve" color-interpolation-filters="sRGB" class="st11"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-1 .st1 { fill: #3253dc; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749992 }
.svg-1 .st2 { fill: #ffffff; font-family: SimSun; font-size: 1.16666em }
.svg-1 .st3 { fill: #ffffff; fill-opacity: 0.95; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999992 }
.svg-1 .st4 { fill: #002eb5; font-family: SimSun; font-size: 0.916672em }
.svg-1 .st5 { font-size: 1em }
.svg-1 .st6 { fill: #002eb5; font-family: Arial; font-size: 0.916672em }
.svg-1 .st7 { font-family: SimSun; font-size: 1em }
.svg-1 .st8 { fill: #39a3b5; stroke: #39a3b5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749992 }
.svg-1 .st9 { marker-end: url("#mrkr13-45"); stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 4.49999 }
.svg-1 .st10 { fill: #3253dc; fill-opacity: 1; stroke: #3253dc; stroke-opacity: 1; stroke-width: 0.64102529927456 }
.svg-1 .st11 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-45" class="st10" v:arrowtype="13" v:arrowsize="2" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-1.5600008316859,-1.5600008316859) "></use>	</marker></defs><g v:mid="4" v:index="2" v:groupcontext="foregroundPage">	<title>getting-started</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="8.50387" v:shadowoffsety="-8.50387"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(18.38,-62.1379)">		<title>Sheet.1</title>		<desc>Identify interface status</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99992,3.99992,3.99992,3.99992)" v:tabspace="42.5189" v:verticalalign="0"></v:textblock>		<v:textrect cx="110.746" cy="143.576" width="221.53" height="89.9615"></v:textrect>		<path d="M0 182.86 A5.66935 5.66935 -180 0 0 5.67 188.53 L215.84 188.53 A5.66935 5.66935 -180 0 0 221.51 182.86 L221.51					 104.24 A5.66935 5.66935 -180 0 0 215.84 98.57 L5.67 98.57 A5.66935 5.66935 -180 0 0 0 104.24 L0 182.86 Z" class="st1"></path>		<text x="68.75" y="132.17" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist><v:newlinechar></v:newlinechar>识别接口状态</text>		</g>	<g id="shape2-4" v:mid="2" v:groupcontext="shape" transform="translate(38.1852,-14.1972)">		<title>Rectangle.20</title>		<desc>Obtain bootup logs List enabled devices</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99992,3.99992,3.99992,3.99992)" v:tabspace="42.5189" v:verticalalign="0"></v:textblock>		<v:textrect cx="110.746" cy="142.92" width="221.53" height="91.272"></v:textrect>		<path d="M0 180.42 A8.50406 8.11333 -0 0 0 8.5 188.53 L213.01 188.53 A8.50406 8.11333 -0 0 0 221.51 180.42 L221.51 105.37					 A8.50406 8.11333 -0 0 0 213.01 97.26 L8.5 97.26 A8.50406 8.11333 -0 0 0 -0 105.37 L0 180.42 Z" class="st3"></path>		<text x="15.32" y="111.32" class="st4" v:langid="1033"><v:paragraph v:indentleft="11.34" v:spbefore="2" v:spafter="3" v:bulletsize="-1.2" v:bulletspace="5.66921"></v:paragraph><v:tablist></v:tablist>获取启动日志<v:newlinechar></v:newlinechar><tspan x="15.32" dy="1.671em" class="st5">列出已启用的设备</tspan></text>		</g>	<g id="shape3-8" v:mid="3" v:groupcontext="shape" transform="translate(325.985,-61.9859)">		<title>Sheet.3</title>		<desc>Enable required interface</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99992,3.99992,3.99992,3.99992)" v:tabspace="42.5189" v:verticalalign="0"></v:textblock>		<v:textrect cx="110.746" cy="143.576" width="221.53" height="89.9615"></v:textrect>		<path d="M0 182.86 A5.66935 5.66935 -180 0 0 5.67 188.53 L215.84 188.53 A5.66935 5.66935 -180 0 0 221.51 182.86 L221.51					 104.24 A5.66935 5.66935 -180 0 0 215.84 98.57 L5.67 98.57 A5.66935 5.66935 -180 0 0 0 104.24 L0 182.86 Z" class="st1"></path>		<text x="68.75" y="132.17" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist><v:newlinechar></v:newlinechar>启用所需接口</text>		</g>	<g id="shape4-11" v:mid="4" v:groupcontext="shape" transform="translate(343.808,-14.1972)">		<title>Rectangle.23</title>		<desc>UART software SPI software I2C software PCIe software USB sof...</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99992,3.99992,3.99992,3.99992)" v:tabspace="42.5189" v:verticalalign="0"></v:textblock>		<v:textrect cx="110.746" cy="142.494" width="221.53" height="92.1252"></v:textrect>		<path d="M0 180.42 A8.50406 8.11679 -0 0 0 8.5 188.53 L213.01 188.53 A8.50406 8.11679 -0 0 0 221.51 180.42 L221.51 104.52					 A8.50406 8.11679 -0 0 0 213.01 96.41 L8.5 96.41 A8.50406 8.11679 -0 0 0 0 104.52 L0 180.42 Z" class="st3"></path>		<text x="15.32" y="110.47" class="st6" v:langid="1033"><v:paragraph v:indentleft="11.34" v:spbefore="2" v:spafter="3" v:bulletsize="-1.2" v:bulletspace="5.66921"></v:paragraph><v:tablist></v:tablist>UART <tspan class="st7">软件<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">SPI </tspan><tspan class="st7">软件<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">I2C </tspan><tspan class="st7">软件<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">PCIe </tspan><tspan class="st7">软件<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">USB </tspan><tspan class="st7">软件</tspan></text>		</g>	<g id="shape5-23" v:mid="5" v:groupcontext="shape" transform="translate(630.553,-62.4827)">		<title>Sheet.5</title>		<path d="M0 182.86 A5.66935 5.66935 -180 0 0 5.67 188.53 L215.84 188.53 A5.66935 5.66935 -180 0 0 221.51 182.86 L221.51					 104.24 A5.66935 5.66935 -180 0 0 215.84 98.57 L5.67 98.57 A5.66935 5.66935 -180 0 0 0 104.24 L0 182.86 Z" class="st8"></path>	</g>	<g id="shape6-25" v:mid="6" v:groupcontext="shape" transform="translate(630.052,-62.8623)">		<title>Sheet.6</title>		<desc>Verify interface status</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99992,3.99992,3.99992,3.99992)" v:tabspace="42.5189" v:verticalalign="0"></v:textblock>		<v:textrect cx="110.746" cy="143.576" width="221.53" height="89.9615"></v:textrect>		<path d="M0 182.86 A5.66935 5.66935 -180 0 0 5.67 188.53 L215.84 188.53 A5.66935 5.66935 -180 0 0 221.51 182.86 L221.51					 104.24 A5.66935 5.66935 -180 0 0 215.84 98.57 L5.67 98.57 A5.66935 5.66935 -180 0 0 0 104.24 L0 182.86 Z" class="st1"></path>		<text x="68.75" y="132.17" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist><v:newlinechar></v:newlinechar>验证接口状态        </text>		</g>	<g id="shape7-28" v:mid="7" v:groupcontext="shape" transform="translate(650.8,-14.1972)">		<title>Rectangle.26</title>		<desc>UART verification SPI verification I2C verification PCIe veri...</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99992,3.99992,3.99992,3.99992)" v:tabspace="42.5189" v:verticalalign="0"></v:textblock>		<v:textrect cx="110.746" cy="142.494" width="221.53" height="92.1252"></v:textrect>		<path d="M0 180.42 A8.50406 8.11679 -0 0 0 8.5 188.53 L213.01 188.53 A8.50406 8.11679 -0 0 0 221.51 180.42 L221.51 104.52					 A8.50406 8.11679 -0 0 0 213.01 96.41 L8.5 96.41 A8.50406 8.11679 -0 0 0 0 104.52 L0 180.42 Z" class="st3"></path>		<text x="15.32" y="110.47" class="st6" v:langid="1033"><v:paragraph v:indentleft="11.34" v:spbefore="2" v:spafter="3" v:bulletsize="-1.2" v:bulletspace="5.66921"></v:paragraph><v:tablist></v:tablist>UART <tspan class="st7">验证<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">SPI </tspan><tspan class="st7">验证<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">I2C </tspan><tspan class="st7">验证<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">PCIe </tspan><tspan class="st7">验证<v:newlinechar></v:newlinechar></tspan><tspan x="15.32" dy="1.671em" class="st5">USB </tspan><tspan class="st7">验证</tspan></text>		</g>	<g id="shape8-40" v:mid="8" v:groupcontext="shape" transform="translate(248.031,-127.562)">		<title>Sheet.8</title>		<path d="M0 188.53 L49.81 188.53 L70.87 188.53" class="st9"></path>	</g>	<g id="shape9-46" v:mid="9" v:groupcontext="shape" transform="translate(552.756,-127.562)">		<title>Sheet.9</title>		<path d="M0 188.53 L49.81 188.53 L70.87 188.53" class="st9"></path>	</g></g>
</svg>

## 识别接口状态

Source: [https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html](https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html)

默认接口状态指示启动过程中的接口状态。要识别接口状态，必须确保接口注册成功并获取已启用接口的列表。

### 获取启动日志

Source: [https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html](https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html)

### About this task

请执行以下操作，以便获取设备的启动日志：

### Procedure

1. 以 permissive 模式打开 SSH shell 或使用 ADB shell。有关如何运行 SSH 的更多信息，请参见 [使用 SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/how_to.html#use-ssh) 一节。
2. 通过运行以下命令获取已启用接口的日志。
                
dmesgCopy to clipboard

输出：

        [    0.434365] msm_serial: driver initialized
        [    0.799123] 994000.serial: ttyMSM0 at MMIO 0x994000 (irq = 139, base_baud = 0) is a MSM
        [    0.801937] 99c000.serial: ttyHS1 at MMIO 0x99c000 (irq = 140, base_baud = 0) is a MSM
        [    0.804563] serial serial0: tty port ttyHS1 registered
         
        [ 0.720945] usbhub_rest_vreg GPIO handle specifies active low - ignored
        [    0.815241] dwc3-qcom 8c00000.usb: Adding to iommu group 4
        [    5.195974] dwc3-qcom a600000.usb: Adding to iommu group 18
        [    5.229464] qcom_pmic_glink pmic-glink: Failed to create device link (0x180) with a600000.usb
        [    6.195825] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
        [    6.450338] usb 1-1: new high-speed USB device number 2 using xhci_hcd
        [    6.664583] usbcore: registered new device driver onboard-usb-hub
        [    6.730998] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
        [    7.083668] usb 2-1.1: new SuperSpeed USB device number 3 using xhci_hcd
        [    7.217287] ax88179_178a 2-1.1:1.0 eth0: register 'ax88179_178a' at usb-0001:04:00.0-1.1, ASIX AX88179 USB 3.0 Gigabit Ethernet, 02:fe:ee:05:44:23
        [    7.217415] usbcore: registered new interface driver ax88179_178a
        [   10.223140] dwc3-qcom a600000.usb: request 0000000000000000 was not queued to ep0ouCopy to clipboard
3. 连接 UART 串行端口以登录控制台。
                
![](data:image/png;base64,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)

### 列出设备上启用的接口 

Source: [https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html](https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html)

要获取已启用接口的列表，应按照以下所述操作：

- 对于 UART，运行以下命令。

        ls /dev/tty*Copy to clipboard

    输出：

        /dev/tty    /dev/tty21 /dev/tty35  /dev/tty49  /dev/tty62   /dev/ttyp4
        /dev/tty0   /dev/tty22 /dev/tty36  /dev/tty5   /dev/tty63   /dev/ttyp5
        /dev/tty1   /dev/tty23 /dev/tty37  /dev/tty50  /dev/tty7    /dev/ttyp6
        /dev/tty10  /dev/tty24 /dev/tty38  /dev/tty51  /dev/tty8    /dev/ttyp7
        /dev/tty11  /dev/tty25 /dev/tty39  /dev/tty52  /dev/tty9    /dev/ttyp8
        /dev/tty12  /dev/tty26 /dev/tty4   /dev/tty53  /dev/ttyMSM0 /dev/ttyp9
        /dev/tty13  /dev/tty27 /dev/tty40  /dev/tty54  /dev/ttyS0   /dev/ttypa
        /dev/tty14  /dev/tty28 /dev/tty41  /dev/tty55  /dev/ttyS1   /dev/ttypb
        /dev/tty15  /dev/tty29 /dev/tty42  /dev/tty56  /dev/ttyS2   /dev/ttypc
        /dev/tty16  /dev/tty3  /dev/tty43  /dev/tty57  /dev/ttyS3   /dev/ttypd
        /dev/tty17  /dev/tty30 /dev/tty44  /dev/tty58  /dev/ttynull /dev/ttype
        /dev/tty18  /dev/tty31 /dev/tty45  /dev/tty59  /dev/ttyp0   /dev/ttypf
        /dev/tty19  /dev/tty32 /dev/tty46  /dev/tty6   /dev/ttyp1
        /dev/tty2   /dev/tty33 /dev/tty47  /dev/tty60  /dev/ttyp2
        /dev/tty20  /dev/tty34 /dev/tty48  /dev/tty61  /dev/ttyp3Copy to clipboard
- 对于 I2C，运行以下命令。

        ls /dev/i2c*Copy to clipboard

    随即显示以下输出。

        /dev/i2c-0  /dev/i2c-1 /dev/i2c-16Copy to clipboard
- 对于 SPI，请运行以下命令。

        ls /dev/spi*Copy to clipboard

    随即显示以下输出。

        spidev14.0Copy to clipboard
- 对于 PCIe，获取枚举日志。有关 PCIe 探测日志的更多信息，请参阅 [PCIe 相关配置](https://docs.qualcomm.com/doc/80-70018-8SC/topic/pcie.html#pcie-software-support-feature-for-qps615__section_xbl_hhd_l1c) 和 [QPS615 switch 支持](https://docs.qualcomm.com/doc/80-70018-8SC/topic/pcie.html#pcie-software-support-feature-for-qps615__section_nmw_5jd_l1c)。

## 在 QUP v3 串行引擎上加载 Linux 固件

Source: [https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html](https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html)

QUP v3 串行引擎将所需协议的固件加载到串行引擎上。协议（I2C、SPI、I3C）和通信模式（[FIFO](https://docs.qualcomm.com/doc/80-70018-8SC/topic/references.html#qup-v3-supported-transfer-modes__ul_unp_cdt_qzb)、[GSI](https://docs.qualcomm.com/doc/80-70018-8SC/topic/references.html#qup-v3-supported-transfer-modes__b_zzd_rsp_rcc)）的配置在安全执行环境（如 Qualcomm TEE `devcfg`）中完成。关于开源开发，此配置在 Linux `devkit` 中执行，允许非安全用例。然而，对于安全用例，需使用 Qualcomm TEE `devcfg`。

### 默认配置

每个串行引擎的默认配置（包括所选的数据传输模式和所有权）位于 /TZ.XF.5.0/core.tz/2.0/settings/buses/qup\_accesscontrol/qupv3/config/lemans/QUPAC\_Access.c 文件中。

在默认配置中，Linux 拥有所有串行引擎。所有安全用例均由 Qualcomm TEE 处理。

    const QUPv3_se_security_permissions_type qupv3_perms_default =
    {
      /*   PeriphID,         ProtocolID,               Mode,      NsOwner,         bAllowFifo, bLoad, bModExcl  */
      /*QUPV3_0_SE0*/
      /*QUPV3_0_SE1*/
      /*QUPV3_0_SE2*/
      { QUPV3_0_SE3, QUPV3_PROTOCOL_UART_4W,   QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // BT UART (2nd Hastings)
      { QUPV3_0_SE4, QUPV3_PROTOCOL_UART_2W,   QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // VIP UART/SPI (SOC SLAVE)
      /*QUPV3_0_SE5*/                                                                                       // Spare
      { QUPV3_1_SE0, QUPV3_PROTOCOL_I2C,       QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // I2C Carplay
      /*QUPV3_1_SE1*/
      { QUPV3_1_SE2, QUPV3_PROTOCOL_UART_2W,   QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // Tuner
      { QUPV3_1_SE3, QUPV3_PROTOCOL_UART_2W,   QUPV3_MODE_FIFO,   AC_HLOS,            TRUE, FALSE, FALSE }, // Debug UART
      { QUPV3_1_SE4, QUPV3_PROTOCOL_I2C,       QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // I2C A2B Controller & Audio port expander
      { QUPV3_1_SE5, QUPV3_PROTOCOL_UART_2W,   QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // GNSS
      /*QUPV3_1_SE6*/
      { QUPV3_2_SE0, QUPV3_PROTOCOL_SPI,       QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // FPGA
      { QUPV3_2_SE1, QUPV3_PROTOCOL_I2C,       QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // PCIe I2C MUX
      { QUPV3_2_SE2, QUPV3_PROTOCOL_SPI,       QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // SPI - Audio
      { QUPV3_2_SE3, QUPV3_PROTOCOL_UART_4W,   QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // BT UART
      { QUPV3_2_SE4, QUPV3_PROTOCOL_I2C,       QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // I2C Display 1
      { QUPV3_2_SE5, QUPV3_PROTOCOL_I2C,       QUPV3_MODE_FIFO,   AC_HLOS,            TRUE,  TRUE, FALSE }, // I2C Sensor
      /*QUPV3_2_SE6 */
      { QUPV3_3_SE0,  QUPV3_PROTOCOL_SPI,       QUPV3_MODE_FIFO,   AC_HLOS,           TRUE,  FALSE, FALSE }, // SPI
    };
    Copy to clipboard

### 加载 Linux 固件

要加载 Linux 固件，请执行以下操作：
1. 在以下文件中启用 CONFIG\_QUP\_FW\_LOAD：
    - 在 arch/arm64/configs/qcom\_defconfig 中设置 `CONFIG_QCOM_QUP_FW_LOAD=y`
    - 在 arch/arm64/configs/qcom\_vm\_defconfig 中设置 `CONFIG_QCOM_QUP_FW_LOAD=m`
2. 要使用所需协议加载固件，请在设备树节点中包含 `qcom,load-firmware` 属性。
3. 配置传输模式。

        GENI_SE_INVALID,  	// 0
        GENI_SE_FIFO,	//1
        GENI_SE_DMA,	//2
        GENI_GPI_DMA,	//3
        Copy to clipboard
4. 将固件加载至串行引擎。 
例如，当 QUPv3\_2\_SE2 (0x00888000) 通过 FIFO 通信模式从 Linux 加载时，请使用以下 DTSI 属性。

        spi16: spi@888000 {
                 compatible = "qcom,geni-spi";
                 reg = <0x0 0x00888000 0x0 0x4000>;
                 interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
                 clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
                 clock-names = "se";
                 interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                         &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                         <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                         &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
                         <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                 interconnect-names = "qup-core",
                         "qup-config",
                         "qup-memory";
                 power-domains = <&rpmhpd SA8775P_CX>;
                        dmas = <&gpi_dma2 0 2 QCOM_GPI_SPI>,
                        <&gpi_dma2 1 2 QCOM_GPI_SPI>;
                        dma-names = "tx", "rx";
                 address-cells = <1>;
                 #size-cells = <0>;   qcom,load-firmware;   xfer-mode = <1>;
                 status = "disabled";
                           };
        Copy to clipboard
5. 加载 GPI 固件。

        gpi_dma2: qcom,gpi-dma@800000  {		#dma-cells = <3>;		compatible = "qcom,sm6350-gpi-dma";		reg = <0x0 0x00800000 0x0 0x60000>;		interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>,		     <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>,	     <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>,		     <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 598 IRQ_TYPE_LEVEL_HIGH>,			     <GIC_SPI 599 IRQ_TYPE_LEVEL_HIGH>;		dma-channels = <12>;		dma-channel-mask = <0xfff>;
        iommus = <&apps_smmu 0x5b6 0x0>;
        qcom,load-firmware;
        xfer-mode = <3>;		status = "disabled";	};
        Copy to clipboard

## 启用所需接口

Source: [https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html](https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html)

要启用接口，应按照以下所述操作：

- 关于 UART，请参阅 [UART 软件](https://docs.qualcomm.com/doc/80-70018-8SC/topic/uart.html#uart_software) 部分。
- 关于 SPI，请参阅 [SPI 软件](https://docs.qualcomm.com/doc/80-70018-8SC/topic/spi.html#spi_software) 部分。
- 关于 I2C，请参阅 [I2C 软件](https://docs.qualcomm.com/doc/80-70018-8SC/topic/i2c.html#i2c-software) 部分。
- 关于 PCIe，请参阅 [PCIe 软件](https://docs.qualcomm.com/doc/80-70018-8SC/topic/pcie.html#pcie-software) 部分。
- 关于 USB，请参阅 [USB 软件](https://docs.qualcomm.com/doc/80-70018-8SC/topic/usb.html#usb-software) 部分。

## 验证接口状态

Source: [https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html](https://docs.qualcomm.com/doc/80-70018-8SC/topic/get-started.html)

要验证不同接口的功能，应按照以下所述操作：

- 关于 UART，请参阅 [验证 UART 接口](https://docs.qualcomm.com/doc/80-70018-8SC/topic/uart.html#uart_verification) 部分。
- 关于 SPI，请参阅 [SPI 验证](https://docs.qualcomm.com/doc/80-70018-8SC/topic/spi.html#spi_verification) 部分。
- 关于 I2C，请参阅 [验证 I2C 接口](https://docs.qualcomm.com/doc/80-70018-8SC/topic/i2c.html#i2c-verification) 部分。
- 对于 PCIe，使用以下命令验证连接的端点。

        lspciCopy to clipboard

    随即显示以下输出。

        0001:00:00.0 PCI bridge: Qualcomm Device 010b
        0001:01:00.0 PCI bridge: Toshiba Corporation Device 0623
        0001:02:01.0 PCI bridge: Toshiba Corporation Device 0623
        0001:02:02.0 PCI bridge: Toshiba Corporation Device 0623
        0001:02:03.0 PCI bridge: Toshiba Corporation Device 0623
        0001:04:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)
        0001:05:00.0 Ethernet controller: Toshiba Corporation Device 0220
        0001:05:00.1 Ethernet controller: Toshiba Corporation Device 0220Copy to clipboard
- 对于 USB，按照以下所述验证设备和主机：
    - 设备：连接 USB Type-C 端口，然后通过主机 PC 验证枚举的日志。

            adb devicesCopy to clipboard

        随即显示以下输出。

            List of devices attached
            541eb4ba        deviceCopy to clipboard
    - 主机：连接 USB 设备（例如鼠标或 U 盘），并使用以下命令验证设备检测。

            lsusbCopy to clipboard

        随即显示以下输出。

            Bus 002 Device 003: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
            Bus 002 Device 002: ID 05e3:0625 Genesys Logic, Inc. USB3.2 Hub
            Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
            Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
            Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubCopy to clipboard

Last Published: May 06, 2025

[Previous Topic
QCS8275 接口概述](https://docs.qualcomm.com/bundle/publicresource/80-70018-8SC/topics/qcs8275-interface-overview.md) [Next Topic
UART](https://docs.qualcomm.com/bundle/publicresource/80-70018-8SC/topics/uart.md)