# PCIe

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

PCIe uses a bidirectional connection to send and receive information at the same time,
            as shown in the following figure.

Figure : PCIe device connection link
            
            <!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export pcie-device-packet-flow.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="6.26473in" height="1.37159in" viewbox="0 0 451.061 98.7548" xml:space="preserve" color-interpolation-filters="sRGB" class="st10"><v:documentproperties v:langid="1033" v:metric="true" 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: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st3 { fill: #000000; font-family: Arial; font-size: 0.833336em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { fill: #ffffff; stroke: none; 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 { marker-end: url("#mrkr13-25"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st8 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-1 .st9 { marker-start: url("#mrkr13-31"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st10 { 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-25" class="st8" v:arrowtype="13" v:arrowsize="2" v:setback="10.56" refx="-10.56" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.52,-3.52) "></use>	</marker>	<marker id="mrkr13-31" class="st8" v:arrowtype="13" v:arrowsize="2" v:setback="10.2" refx="10.2" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(3.52) "></use>	</marker></defs><g v:mid="4" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="6.26473" height="1.37159" v:drawingscale="0.0393701" v:pagescale="0.0393701" v:drawingunits="24" v:shadowoffsetx="8.50394" v:shadowoffsety="-8.50394"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="0" width="451.061" height="98.7548" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0393701" v:pagescale="0.0393701" v:drawingunits="24" v:shadowoffsetx="8.50394" v:shadowoffsety="-8.50394"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-3" v:mid="1" v:groupcontext="shape" transform="translate(18.5,-19.9158)">		<title>Square</title>		<desc>PCIe device A</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="28.3465" cy="70.4083" width="56.7" height="56.6929"></v:textrect>		<rect x="0" y="42.0619" width="56.6929" height="56.6929" class="st2"></rect>		<text x="17.23" y="67.41" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PCIe <tspan x="9.17" dy="1.2em" class="st4">device A</tspan></text>		</g>	<g id="shape2-7" v:mid="2" v:groupcontext="shape" transform="translate(375.868,-19.4097)">		<title>Square.2</title>		<desc>PCIe device B</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="28.3465" cy="70.4083" width="56.7" height="56.6929"></v:textrect>		<rect x="0" y="42.0619" width="56.6929" height="56.6929" class="st2"></rect>		<text x="17.23" y="67.41" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PCIe <tspan x="9.17" dy="1.2em" class="st4">device B</tspan></text>		</g>	<g id="shape7-11" v:mid="7" v:groupcontext="shape" transform="translate(84.9132,-66.0816)">		<title>Rectangle</title>		<desc>Packet</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="28.3465" cy="91.6682" width="56.7" height="14.1732"></v:textrect>		<rect x="0" y="84.5816" width="56.6929" height="14.1732" class="st5"></rect>		<text x="13.06" y="94.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Packet</text>		</g>	<g id="shape8-14" v:mid="8" v:groupcontext="shape" transform="translate(312.191,-18.5)">		<title>Rectangle.8</title>		<desc>Packet</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="28.3465" cy="91.6682" width="56.7" height="14.1732"></v:textrect>		<rect x="0" y="84.5816" width="56.6929" height="14.1732" class="st5"></rect>		<text x="13.06" y="94.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Packet</text>		</g>	<g id="shape10-17" v:mid="10" v:groupcontext="shape" transform="translate(133.404,-44.0103)">		<title>Sheet.10</title>		<desc>Link (1 bit to 32 bits wide)</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="95.6693" cy="92.9438" width="191.34" height="11.622"></v:textrect>		<rect x="0" y="87.1327" width="191.339" height="11.622" class="st6"></rect>		<text x="38.97" y="95.94" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Link (1 bit to 32 bits wide)</text>		</g>	<g id="shape12-20" v:mid="12" v:groupcontext="shape" transform="translate(75.6991,-65.0692)">		<title>Sheet.12</title>		<path d="M0 98.75 L290.11 98.75" class="st7"></path>	</g>	<g id="shape13-26" v:mid="13" v:groupcontext="shape" transform="translate(74.7895,-35.2042)">		<title>Sheet.13</title>		<path d="M10.2 98.75 L10.56 98.75 L300.67 98.75" class="st9"></path>	</g></g>
</svg>

The path between the devices is called a <dfn class="term">Link</dfn>. It is made up of one or
            more transmit and receive pairs. One pair of the Link is called a <dfn class="term">Lane</dfn>. The
            PCIe device connection in Qualcomm Linux devices supports 16 lanes. The number of lanes
            or the <dfn class="term">Link width</dfn> is x4. For more information on PCIe, see [https://pcisig.com/specifications/pciexpress/technical_library/pciexpress_whitepaper.pdf](https://pcisig.com/specifications/pciexpress/technical_library/pciexpress_whitepaper.pdf).

The following table lists the types of PCIe connections for devices.

Table : PCIe connections

| PCIe type | Description |
| :---: | --- |
| Root complex (RC) | Connects the CPU to the PCIe topology |
| Switch | Connects more than 2 ports and acts as a packet router |
| Bridge | Connects different buses: for example, PCIe to PCIe, or PCIe to<br>                            peripheral component interconnect (PCI) |
| Endpoint (EP) | Resides at the bottom of the PCIe topology tree structure and has<br>                            only an upstream port |
| Legacy endpoint | Uses older PCI bus operations to support backward<br>                            compatibility |

## PCIe host mode enumeration feature

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

When a system first powers up, the configuration software running on the system host
            processor is aware of the existence of only Bus 0 (if PCIe is supported). The software
            is not aware of the bus topology or any device connected to the bus. The enumeration
            process discovers the various buses, devices, and functions present in the system.

When enumeration is complete, each bus in the system is numbered as follows:
- The primary bus number indicates the bus that directly connects to the primary
                    interface of the bridge (towards the root complex).
- The secondary bus number indicates the bus that directly connects to the
                    secondary interface of the bridge (away from the root complex).
- The subordinate bus number indicates the highest numbered bus that exists on the
                    downstream side of the bridge.

The BDF number uniquely identifies each device. The ID-based routing method of the
            transaction layer packet (TLP) uses this number. The PCIe host mode enumeration process
            involves the following:

1. Link training
2. Scanning for devices on the bus
3. Registration

For more information on the PCIe device initialization, enumeration process, see [https://www.kernel.org/doc/html/latest/PCI/index.html](https://www.kernel.org/doc/html/latest/PCI/index.html).

## PCIe layered architecture

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

The following figure shows the layered architecture model of PCIe.

Figure : PCIe layered architecture
            
            <!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export pcie-architecture.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.8092in" height="8.48308in" viewbox="0 0 562.262 610.782" xml:space="preserve" color-interpolation-filters="sRGB" class="st13"><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-2 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-2 .st4 { font-size: 1em }
.svg-2 .st5 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st6 { marker-start: url("#mrkr13-52"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st7 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-2 .st8 { fill: none; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st9 { marker-end: url("#mrkr13-94"); marker-start: url("#mrkr13-52"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st10 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st11 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st12 { fill: #000000; font-family: Calibri; font-size: 1.00001em }
.svg-2 .st13 { 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-52" class="st7" v:arrowtype="13" v:arrowsize="2" v:setback="10.2" refx="10.2" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(3.52) "></use>	</marker>	<marker id="mrkr13-94" class="st7" v:arrowtype="13" v:arrowsize="2" v:setback="10.56" refx="-10.56" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.52,-3.52) "></use>	</marker></defs><g v:mid="4" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="7.8092" height="8.48308" 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">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="0" width="562.262" height="610.782" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" 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>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-3" v:mid="1" v:groupcontext="shape" transform="translate(119.131,-551.131)">		<title>Rectangle</title>		<desc>Transaction</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="54" cy="592.782" width="108" height="36"></v:textrect>		<rect x="0" y="574.782" width="108" height="36" class="st2"></rect>		<text x="22.65" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Transaction</text>		</g>	<g id="shape3-6" v:mid="3" v:groupcontext="shape" transform="translate(335.131,-551.131)">		<title>Rectangle.3</title>		<desc>Transaction</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="54" cy="592.782" width="108" height="36"></v:textrect>		<rect x="0" y="574.782" width="108" height="36" class="st2"></rect>		<text x="22.65" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Transaction</text>		</g>	<g id="shape4-9" v:mid="4" v:groupcontext="shape" transform="translate(119.131,-479.131)">		<title>Rectangle.4</title>		<desc>Data link</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="54" cy="592.782" width="108" height="36"></v:textrect>		<rect x="0" y="574.782" width="108" height="36" class="st2"></rect>		<text x="30.66" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Data link</text>		</g>	<g id="shape5-12" v:mid="5" v:groupcontext="shape" transform="translate(335.131,-479.131)">		<title>Rectangle.5</title>		<desc>Data link</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="54" cy="592.782" width="108" height="36"></v:textrect>		<rect x="0" y="574.782" width="108" height="36" class="st2"></rect>		<text x="30.66" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Data link</text>		</g>	<g id="shape6-15" v:mid="6" v:groupcontext="shape" transform="translate(119.131,-263.131)">		<title>Rectangle.6</title>		<desc>Physical</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:verticalalign="0"></v:textblock>		<v:textrect cx="54" cy="520.782" width="108" height="180"></v:textrect>		<rect x="0" y="430.782" width="108" height="180" class="st2"></rect>		<text x="31.66" y="445.58" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Physical</text>		</g>	<g id="shape7-18" v:mid="7" v:groupcontext="shape" transform="translate(119.131,-362.131)">		<title>Rectangle.7</title>		<desc>Logical sub-block</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="54" cy="588.282" width="108" height="45"></v:textrect>		<rect x="0" y="565.782" width="108" height="45" class="st2"></rect>		<text x="7.64" y="591.88" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Logical sub-block</text>		</g>	<g id="shape8-21" v:mid="8" v:groupcontext="shape" transform="translate(119.131,-299.131)">		<title>Rectangle.8</title>		<desc>Electrical sub-block</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="54" cy="588.282" width="108" height="45"></v:textrect>		<rect x="0" y="565.782" width="108" height="45" class="st2"></rect>		<text x="29.66" y="584.68" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Electrical <v:lf></v:lf><tspan x="28.32" dy="1.2em" class="st4">sub</tspan>-block</text>		</g>	<g id="shape12-25" v:mid="12" v:groupcontext="shape" transform="translate(130.342,-263.131)">		<title>Sheet.12</title>		<desc>Rx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="12.375" cy="601.782" width="24.76" height="18"></v:textrect>		<rect x="0" y="592.782" width="24.75" height="18" class="st5"></rect>		<text x="5.04" y="605.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rx</text>		</g>	<g id="shape13-28" v:mid="13" v:groupcontext="shape" transform="translate(191.131,-263.131)">		<title>Sheet.13</title>		<desc>Tx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="12.375" cy="601.782" width="24.76" height="18"></v:textrect>		<rect x="0" y="592.782" width="24.75" height="18" class="st5"></rect>		<text x="5.71" y="605.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Tx</text>		</g>	<g id="shape14-31" v:mid="14" v:groupcontext="shape" transform="translate(335.131,-263.131)">		<title>Rectangle.14</title>		<desc>Physical</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:verticalalign="0"></v:textblock>		<v:textrect cx="54" cy="520.782" width="108" height="180"></v:textrect>		<rect x="0" y="430.782" width="108" height="180" class="st2"></rect>		<text x="31.66" y="445.58" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Physical</text>		</g>	<g id="shape15-34" v:mid="15" v:groupcontext="shape" transform="translate(335.131,-362.131)">		<title>Rectangle.15</title>		<desc>Logical sub-block</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="54" cy="588.282" width="108" height="45"></v:textrect>		<rect x="0" y="565.782" width="108" height="45" class="st2"></rect>		<text x="7.64" y="591.88" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Logical sub-block</text>		</g>	<g id="shape16-37" v:mid="16" v:groupcontext="shape" transform="translate(335.131,-299.131)">		<title>Rectangle.16</title>		<desc>Electrical sub-block</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="54" cy="588.282" width="108" height="45"></v:textrect>		<rect x="0" y="565.782" width="108" height="45" class="st2"></rect>		<text x="29.66" y="584.68" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Electrical <v:lf></v:lf><tspan x="28.32" dy="1.2em" class="st4">sub</tspan>-block</text>		</g>	<g id="shape17-41" v:mid="17" v:groupcontext="shape" transform="translate(346.342,-263.131)">		<title>Sheet.17</title>		<desc>Rx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="12.375" cy="601.782" width="24.76" height="18"></v:textrect>		<rect x="0" y="592.782" width="24.75" height="18" class="st5"></rect>		<text x="5.04" y="605.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rx</text>		</g>	<g id="shape18-44" v:mid="18" v:groupcontext="shape" transform="translate(407.131,-263.131)">		<title>Sheet.18</title>		<desc>Tx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="12.375" cy="601.782" width="24.76" height="18"></v:textrect>		<rect x="0" y="592.782" width="24.75" height="18" class="st5"></rect>		<text x="5.71" y="605.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Tx</text>		</g>	<g id="shape22-47" v:mid="22" v:groupcontext="shape" transform="translate(146.131,-209.131)">		<title>Sheet.22</title>		<path d="M0 566.98 L0 567.34 L0 610.78 L279 610.78 L279 556.78" class="st6"></path>	</g>	<g id="shape23-53" v:mid="23" v:groupcontext="shape" transform="translate(200.131,-236.131)">		<title>Sheet.23</title>		<path d="M162 593.98 L162 594.34 L162 610.78 L0 610.78 L0 583.78" class="st6"></path>	</g>	<g id="shape24-58" v:mid="24" v:groupcontext="shape" transform="translate(227.131,-560.131)">		<title>1-D double</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M4.5 597.28 L4.5 592.78 L0 601.78 L4.5 610.78 L4.5 606.28 L103.5 606.28 L103.5 610.78 L108 601.78 L103.5 592.78					 L103.5 597.28 L4.5 597.28 Z" class="st8"></path>	</g>	<g id="shape25-60" v:mid="25" v:groupcontext="shape" transform="translate(227.131,-488.131)">		<title>1-D double.25</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M4.5 597.28 L4.5 592.78 L0 601.78 L4.5 610.78 L4.5 606.28 L103.5 606.28 L103.5 610.78 L108 601.78 L103.5 592.78					 L103.5 597.28 L4.5 597.28 Z" class="st8"></path>	</g>	<g id="shape26-62" v:mid="26" v:groupcontext="shape" transform="translate(227.131,-344.131)">		<title>1-D double.26</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M4.5 597.28 L4.5 592.78 L0 601.78 L4.5 610.78 L4.5 606.28 L103.5 606.28 L103.5 610.78 L108 601.78 L103.5 592.78					 L103.5 597.28 L4.5 597.28 Z" class="st8"></path>	</g>	<g id="shape27-64" v:mid="27" v:groupcontext="shape" transform="translate(29.1312,-137.131)">		<title>Rectangle.27</title>		<desc>Framing</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="36" cy="592.782" width="72.01" height="36"></v:textrect>		<rect x="0" y="574.782" width="72" height="36" class="st2"></rect>		<text x="13.99" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Framing</text>		</g>	<g id="shape28-67" v:mid="28" v:groupcontext="shape" transform="translate(101.131,-137.131)">		<title>Rectangle.28</title>		<desc>Sequence number</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="36" cy="592.782" width="72.01" height="36"></v:textrect>		<rect x="0" y="574.782" width="72" height="36" class="st2"></rect>		<text x="8.98" y="589.18" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Sequence <tspan x="15.66" dy="1.2em" class="st4">number</tspan></text>		</g>	<g id="shape29-71" v:mid="29" v:groupcontext="shape" transform="translate(173.131,-137.131)">		<title>Rectangle.29</title>		<desc>Header</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="36" cy="592.782" width="72.01" height="36"></v:textrect>		<rect x="0" y="574.782" width="72" height="36" class="st2"></rect>		<text x="16.32" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Header</text>		</g>	<g id="shape30-74" v:mid="30" v:groupcontext="shape" transform="translate(245.131,-137.131)">		<title>Rectangle.30</title>		<desc>Payload data</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="36" cy="592.782" width="72.01" height="36"></v:textrect>		<rect x="0" y="574.782" width="72" height="36" class="st2"></rect>		<text x="14.32" y="589.18" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Payload <tspan x="24.32" dy="1.2em" class="st4">data</tspan></text>		</g>	<g id="shape31-78" v:mid="31" v:groupcontext="shape" transform="translate(317.131,-137.131)">		<title>Rectangle.31</title>		<desc>ECRC</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="36" cy="592.782" width="72.01" height="36"></v:textrect>		<rect x="0" y="574.782" width="72" height="36" class="st2"></rect>		<text x="19" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ECRC</text>		</g>	<g id="shape32-81" v:mid="32" v:groupcontext="shape" transform="translate(389.131,-137.131)">		<title>Rectangle.32</title>		<desc>LCRC</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="36" cy="592.782" width="72.01" height="36"></v:textrect>		<rect x="0" y="574.782" width="72" height="36" class="st2"></rect>		<text x="19.66" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>LCRC</text>		</g>	<g id="shape33-84" v:mid="33" v:groupcontext="shape" transform="translate(461.131,-137.131)">		<title>Rectangle.33</title>		<desc>Framing</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="36" cy="592.782" width="72.01" height="36"></v:textrect>		<rect x="0" y="574.782" width="72" height="36" class="st2"></rect>		<text x="13.99" y="596.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Framing</text>		</g>	<g id="shape34-87" v:mid="34" v:groupcontext="shape" transform="translate(29.1312,-29.1312)">		<title>Sheet.34</title>		<path d="M0 512.98 L0 513.34 L0 610.78 L504 610.78 L504 513.34" class="st9"></path>	</g>	<g id="shape36-95" v:mid="36" v:groupcontext="shape" transform="translate(101.131,-65.1312)">		<title>Sheet.36</title>		<path d="M0 548.98 L0 549.34 L0 610.78 L360 610.78 L360 549.34" class="st9"></path>	</g>	<g id="shape37-102" v:mid="37" v:groupcontext="shape" transform="translate(173.131,-101.131)">		<title>Sheet.37</title>		<path d="M0 584.98 L0 585.34 L0 610.78 L216 610.78 L216 585.34" class="st9"></path>	</g>	<g id="shape38-109" v:mid="38" v:groupcontext="shape" transform="translate(245.131,-20.1312)">		<title>Sheet.38</title>		<desc>Physical layer</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="45" cy="601.782" width="90" height="18"></v:textrect>		<rect x="0" y="592.782" width="90" height="18" class="st10"></rect>		<text x="7.99" y="605.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Physical layer</text>		</g>	<g id="shape39-112" v:mid="39" v:groupcontext="shape" transform="translate(245.131,-56.1312)">		<title>Sheet.39</title>		<desc>Data link layer</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="45" cy="601.782" width="90" height="18"></v:textrect>		<rect x="0" y="592.782" width="90" height="18" class="st10"></rect>		<text x="6.98" y="605.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Data link layer</text>		</g>	<g id="shape40-115" v:mid="40" v:groupcontext="shape" transform="translate(236.131,-92.1312)">		<title>Sheet.40</title>		<desc>Transaction layer</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="601.782" width="108" height="18"></v:textrect>		<rect x="0" y="592.782" width="108" height="18" class="st10"></rect>		<text x="7.98" y="605.38" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Transaction layer</text>		</g>	<g id="shape43-118" v:mid="43" v:groupcontext="shape" transform="translate(256.5,-574.407)">		<title>Sheet.43</title>		<desc>TLP</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="601.782" width="49.5" height="18"></v:textrect>		<rect x="0" y="592.782" width="49.5" height="18" class="st11"></rect>		<text x="16.2" y="605.38" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TLP</text>		</g>	<g id="shape44-121" v:mid="44" v:groupcontext="shape" transform="translate(256.5,-502.717)">		<title>Sheet.44</title>		<desc>DLLP</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="601.782" width="49.5" height="18"></v:textrect>		<rect x="0" y="592.782" width="49.5" height="18" class="st11"></rect>		<text x="12.91" y="605.38" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>DLLP</text>		</g>	<g id="shape45-124" v:mid="45" v:groupcontext="shape" transform="translate(241.252,-358.407)">		<title>Sheet.45</title>		<desc>Ordered set</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.5" cy="601.782" width="81" height="18"></v:textrect>		<rect x="0" y="592.782" width="81" height="18" class="st11"></rect>		<text x="11.37" y="605.38" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Ordered set</text>		</g></g>
</svg>

The transmission units exchanged are as follows.

- Ordered set between the physical layer entities.
- Data link layer packet (DLLP) between data link layer entities.
- Transaction layer packet (TLP) between transaction layer entities.

The following table lists the three layers, with the respective functions, in the PCIe
            architecture.

| Layer | Features |
| --- | --- |
| Physical layer | Logical sub-block: Link training, initialization, and maintenance. |
| Physical layer | Physical sub-block: 8b/10b encoding and decoding, and<br>                            parallel-to-serial and serial-to-parallel conversion. |
| Data link layer | Assembly and disassembly of the DLLP packet. |
| Data link layer | Generation and validation of the link layer CRC (LCRC). |
| Data link layer | Acknowledgment and no acknowledgment protocol (replay of TLPs in<br>                            error). |
| Transaction layer | Assembly and disassembly of the TLP packet. |
| Transaction layer | Generation and validation of end-to-end CRC (ECRC). |
| Transaction layer | Flow control receives entity advertises for the available to receive<br>                            buffer size information using DLLPs. |
| Transaction layer | Quality of service (QoS): traffic class (TC) to virtual channel (VC)<br>                            mapping. |
| Transaction layer | Transaction ordering: implements the transaction ordering rule within<br>                            a VC. |
|  |  |
|  |  |
|  |  |
|  |  |

PCI defines a dedicated block of configuration address space for each function as shown
            in the following figure. The software determines the presence of a function, configures
            it, and checks and controls its status.
Figure : PCIe configuration address space
                
                <!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export pcie-compatible-configuration-space.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="12.7116in" height="12.1282in" viewbox="0 0 915.235 873.229" xml:space="preserve" color-interpolation-filters="sRGB" class="st5"><v:documentproperties v:langid="1033" v:metric="true" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-3 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-3 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-3 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-3 .st4 { font-size: 1em }
.svg-3 .st5 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<g v:mid="4" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="12.7116" height="12.1282" v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="8.50394" v:shadowoffsety="-8.50394"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="0" width="915.235" height="873.229" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="8.50394" v:shadowoffsety="-8.50394"></v:pageproperties>	<g id="shape1-3" v:mid="1" v:groupcontext="shape" transform="translate(18.5,-808.47)">		<title>Rectangle</title>		<desc>Type 0 configuration space</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="74.83" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Type 0 configuration space</text>		</g>	<g id="shape2-6" v:mid="2" v:groupcontext="shape" transform="translate(18.5,-715.953)">		<title>Rectangle.2</title>		<desc>Device ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="73.4375" cy="850.1" width="146.88" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="146.875" height="46.2585" class="st2"></rect>		<text x="47.43" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Device ID</text>		</g>	<g id="shape6-9" v:mid="6" v:groupcontext="shape" transform="translate(18.5,-530.919)">		<title>Rectangle.6</title>		<desc>Base address register 0</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 0</text>		</g>	<g id="shape7-12" v:mid="7" v:groupcontext="shape" transform="translate(18.5,-484.661)">		<title>Rectangle.7</title>		<desc>Base address register 1</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 1</text>		</g>	<g id="shape8-15" v:mid="8" v:groupcontext="shape" transform="translate(18.5,-438.402)">		<title>Rectangle.8</title>		<desc>Base address register 2</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 2</text>		</g>	<g id="shape9-18" v:mid="9" v:groupcontext="shape" transform="translate(18.5,-392.144)">		<title>Rectangle.9</title>		<desc>Base address register 3</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 3</text>		</g>	<g id="shape10-21" v:mid="10" v:groupcontext="shape" transform="translate(18.5,-345.885)">		<title>Rectangle.10</title>		<desc>Base address register 4</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 4</text>		</g>	<g id="shape11-24" v:mid="11" v:groupcontext="shape" transform="translate(18.5,-299.626)">		<title>Rectangle.11</title>		<desc>Base address register 5</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 5</text>		</g>	<g id="shape12-27" v:mid="12" v:groupcontext="shape" transform="translate(18.5,-253.368)">		<title>Rectangle.12</title>		<desc>Card bus CIS pointer</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="90.85" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Card bus CIS pointer</text>		</g>	<g id="shape14-30" v:mid="14" v:groupcontext="shape" transform="translate(18.5,-160.851)">		<title>Rectangle.14</title>		<desc>Expansion ROM base address</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="65.5" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Expansion ROM base address</text>		</g>	<g id="shape15-33" v:mid="15" v:groupcontext="shape" transform="translate(18.5,-114.592)">		<title>Rectangle.15</title>		<desc>Reserved</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="93.4659" cy="850.1" width="186.94" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="186.932" height="46.2585" class="st2"></rect>		<text x="67.79" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Reserved</text>		</g>	<g id="shape16-36" v:mid="16" v:groupcontext="shape" transform="translate(18.5,-68.3338)">		<title>Rectangle.16</title>		<desc>Reserved</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="121.2" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Reserved</text>		</g>	<g id="shape17-39" v:mid="17" v:groupcontext="shape" transform="translate(18.5,-22.0753)">		<title>Rectangle.17</title>		<desc>Max_Lat</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="36.7187" cy="850.1" width="73.44" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="73.4375" height="46.2585" class="st2"></rect>		<text x="13.71" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Max_Lat</text>		</g>	<g id="shape72-42" v:mid="72" v:groupcontext="shape" transform="translate(434.225,-712.378)">		<title>Square</title>		<desc>00</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>00</text>		</g>	<g id="shape73-45" v:mid="73" v:groupcontext="shape" transform="translate(434.225,-666.12)">		<title>Square.73</title>		<desc>04</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>04</text>		</g>	<g id="shape74-48" v:mid="74" v:groupcontext="shape" transform="translate(434.225,-619.861)">		<title>Square.74</title>		<desc>08</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>08</text>		</g>	<g id="shape75-51" v:mid="75" v:groupcontext="shape" transform="translate(434.225,-573.602)">		<title>Square.75</title>		<desc>0C</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="19.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>0C</text>		</g>	<g id="shape76-54" v:mid="76" v:groupcontext="shape" transform="translate(434.225,-527.344)">		<title>Square.76</title>		<desc>10</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>10</text>		</g>	<g id="shape77-57" v:mid="77" v:groupcontext="shape" transform="translate(434.225,-481.085)">		<title>Square.77</title>		<desc>14</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>14</text>		</g>	<g id="shape78-60" v:mid="78" v:groupcontext="shape" transform="translate(434.225,-434.827)">		<title>Square.78</title>		<desc>18</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>18</text>		</g>	<g id="shape79-63" v:mid="79" v:groupcontext="shape" transform="translate(434.225,-388.568)">		<title>Square.79</title>		<desc>1C</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="19.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1C</text>		</g>	<g id="shape80-66" v:mid="80" v:groupcontext="shape" transform="translate(434.225,-342.31)">		<title>Square.80</title>		<desc>20</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>20</text>		</g>	<g id="shape81-69" v:mid="81" v:groupcontext="shape" transform="translate(434.225,-296.051)">		<title>Square.81</title>		<desc>24</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>24</text>		</g>	<g id="shape82-72" v:mid="82" v:groupcontext="shape" transform="translate(434.225,-249.793)">		<title>Square.82</title>		<desc>28</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>28</text>		</g>	<g id="shape83-75" v:mid="83" v:groupcontext="shape" transform="translate(434.225,-203.534)">		<title>Square.83</title>		<desc>2C</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="19.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>2C</text>		</g>	<g id="shape84-78" v:mid="84" v:groupcontext="shape" transform="translate(434.225,-157.276)">		<title>Square.84</title>		<desc>30</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>30</text>		</g>	<g id="shape85-81" v:mid="85" v:groupcontext="shape" transform="translate(434.225,-111.017)">		<title>Square.85</title>		<desc>34</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>34</text>		</g>	<g id="shape86-84" v:mid="86" v:groupcontext="shape" transform="translate(434.225,-64.7585)">		<title>Square.86</title>		<desc>38</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="20.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>38</text>		</g>	<g id="shape87-87" v:mid="87" v:groupcontext="shape" transform="translate(434.225,-18.5)">		<title>Square.87</title>		<desc>3C</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="846.524" width="53.41" height="53.4091"></v:textrect>		<rect x="0" y="819.82" width="53.4091" height="53.4091" class="st2"></rect>		<text x="19.03" y="850.12" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>3C</text>		</g>	<g id="shape88-90" v:mid="88" v:groupcontext="shape" transform="translate(152.023,-715.953)">		<title>Rectangle.88</title>		<desc>Vendor ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="80.1136" cy="850.1" width="160.23" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="160.227" height="46.2585" class="st2"></rect>		<text x="53.1" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Vendor ID</text>		</g>	<g id="shape89-93" v:mid="89" v:groupcontext="shape" transform="translate(18.5,-669.695)">		<title>Rectangle.89</title>		<desc>Status</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="73.4375" cy="850.1" width="146.88" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="146.875" height="46.2585" class="st2"></rect>		<text x="56.43" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Status</text>		</g>	<g id="shape90-96" v:mid="90" v:groupcontext="shape" transform="translate(152.023,-669.695)">		<title>Rectangle.90</title>		<desc>Command</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="79.8634" cy="850.1" width="159.73" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="159.727" height="46.2585" class="st2"></rect>		<text x="52.19" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Command</text>		</g>	<g id="shape91-99" v:mid="91" v:groupcontext="shape" transform="translate(18.5,-623.436)">		<title>Rectangle.91</title>		<desc>Class code</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="93.4659" cy="850.1" width="186.94" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="186.932" height="46.2585" class="st2"></rect>		<text x="63.78" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Class code</text>		</g>	<g id="shape92-102" v:mid="92" v:groupcontext="shape" transform="translate(152.023,-623.436)">		<title>Rectangle.92</title>		<desc>Revision ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="80.1136" cy="850.1" width="160.23" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="160.227" height="46.2585" class="st2"></rect>		<text x="49.44" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Revision ID</text>		</g>	<g id="shape93-105" v:mid="93" v:groupcontext="shape" transform="translate(18.5,-577.178)">		<title>Rectangle.93</title>		<desc>BIST</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="850.1" width="53.41" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="53.4091" height="46.2585" class="st2"></rect>		<text x="13.37" y="853.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>BIST</text>		</g>	<g id="shape95-108" v:mid="95" v:groupcontext="shape" transform="translate(71.9091,-577.178)">		<title>Rectangle.95</title>		<desc>Header type</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="40.307" cy="850.1" width="80.62" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="80.6141" height="46.2585" class="st2"></rect>		<text x="7.62" y="853.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Header type</text>		</g>	<g id="shape96-111" v:mid="96" v:groupcontext="shape" transform="translate(152.023,-577.178)">		<title>Rectangle.96</title>		<desc>Controller latency timer</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="44.6247" cy="850.1" width="89.25" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="89.2494" height="46.2585" class="st2"></rect>		<text x="18.61" y="847.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Controller <tspan x="10.61" dy="1em" class="st4">latency timer</tspan></text>		</g>	<g id="shape102-115" v:mid="102" v:groupcontext="shape" transform="translate(18.5,-207.109)">		<title>Rectangle.102</title>		<desc>Subsystem ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="73.4375" cy="850.1" width="146.88" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="146.875" height="46.2585" class="st2"></rect>		<text x="36.09" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Subsystem ID</text>		</g>	<g id="shape103-118" v:mid="103" v:groupcontext="shape" transform="translate(165.375,-207.109)">		<title>Rectangle.103</title>		<desc>Subsystem vendor ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="73.4375" cy="850.1" width="146.88" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="146.875" height="46.2585" class="st2"></rect>		<text x="16.08" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Subsystem vendor ID</text>		</g>	<g id="shape104-121" v:mid="104" v:groupcontext="shape" transform="translate(165.375,-114.592)">		<title>Rectangle.104</title>		<desc>Capabilities pointer</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="73.4375" cy="850.1" width="146.88" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="146.875" height="46.2585" class="st2"></rect>		<text x="22.41" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Capabilities pointer</text>		</g>	<g id="shape105-124" v:mid="105" v:groupcontext="shape" transform="translate(91.9375,-22.0753)">		<title>Rectangle.105</title>		<desc>Max_Gnt</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="40.0568" cy="850.1" width="80.12" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="80.1136" height="46.2585" class="st2"></rect>		<text x="15.71" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Max_Gnt</text>		</g>	<g id="shape107-127" v:mid="107" v:groupcontext="shape" transform="translate(238.812,-22.0753)">		<title>Rectangle.107</title>		<desc>Interrupt line</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="36.7187" cy="850.1" width="73.44" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="73.4375" height="46.2585" class="st2"></rect>		<text x="14.37" y="846.5" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Interrupt <tspan x="27.38" dy="1.2em" class="st4">line</tspan></text>		</g>	<g id="shape108-131" v:mid="108" v:groupcontext="shape" transform="translate(407.52,-808.47)">		<title>Rectangle.108</title>		<desc>Byte offset</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="53.4091" cy="850.1" width="106.82" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="106.818" height="46.2585" class="st2"></rect>		<text x="25.06" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Byte offset</text>		</g>	<g id="shape109-134" v:mid="109" v:groupcontext="shape" transform="translate(602.985,-808.47)">		<title>Rectangle.109</title>		<desc>Type 1 configuration space</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="74.83" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Type 1 configuration space</text>		</g>	<g id="shape110-137" v:mid="110" v:groupcontext="shape" transform="translate(602.985,-715.953)">		<title>Rectangle.110</title>		<desc>Device ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="73.4375" cy="850.1" width="146.88" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="146.875" height="46.2585" class="st2"></rect>		<text x="47.43" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Device ID</text>		</g>	<g id="shape111-140" v:mid="111" v:groupcontext="shape" transform="translate(602.985,-530.919)">		<title>Rectangle.111</title>		<desc>Base address register 0</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 0</text>		</g>	<g id="shape112-143" v:mid="112" v:groupcontext="shape" transform="translate(602.985,-484.661)">		<title>Rectangle.112</title>		<desc>Base address register 1</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="83.51" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Base address register 1</text>		</g>	<g id="shape114-146" v:mid="114" v:groupcontext="shape" transform="translate(602.985,-392.144)">		<title>Rectangle.114</title>		<desc>Secondary status</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="76.7019" cy="850.1" width="153.41" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="153.404" height="46.2585" class="st2"></rect>		<text x="30.34" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Secondary status</text>		</g>	<g id="shape115-149" v:mid="115" v:groupcontext="shape" transform="translate(602.985,-345.885)">		<title>Rectangle.115</title>		<desc>Memory limit</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="76.7019" cy="850.1" width="153.41" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="153.404" height="46.2585" class="st2"></rect>		<text x="42.7" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Memory limit</text>		</g>	<g id="shape116-152" v:mid="116" v:groupcontext="shape" transform="translate(602.985,-299.627)">		<title>Rectangle.116</title>		<desc>Prefetchable memory limit</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="76.7019" cy="850.1" width="153.41" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="153.404" height="46.2585" class="st2"></rect>		<text x="7.35" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Prefetchable memory limit</text>		</g>	<g id="shape117-155" v:mid="117" v:groupcontext="shape" transform="translate(602.985,-253.368)">		<title>Rectangle.117</title>		<desc>Prefetchable base upper 32 bits</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="62.15" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Prefetchable base upper 32 bits</text>		</g>	<g id="shape118-158" v:mid="118" v:groupcontext="shape" transform="translate(602.985,-160.851)">		<title>Rectangle.118</title>		<desc>I/O limit upper 16 bits</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="73.4375" cy="850.1" width="146.88" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="146.875" height="46.2585" class="st2"></rect>		<text x="36.09" y="846.5" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I/O limit upper<v:lf></v:lf><tspan x="55.76" dy="1.2em" class="st4">16 bits</tspan></text>		</g>	<g id="shape119-162" v:mid="119" v:groupcontext="shape" transform="translate(602.985,-114.592)">		<title>Rectangle.119</title>		<desc>Reserved</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="93.4659" cy="850.1" width="186.94" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="186.932" height="46.2585" class="st2"></rect>		<text x="67.79" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Reserved</text>		</g>	<g id="shape120-165" v:mid="120" v:groupcontext="shape" transform="translate(602.985,-68.3338)">		<title>Rectangle.120</title>		<desc>Expansion ROM base address</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="65.5" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Expansion ROM base address</text>		</g>	<g id="shape121-168" v:mid="121" v:groupcontext="shape" transform="translate(602.985,-22.0753)">		<title>Rectangle.121</title>		<desc>Bridge control</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="66.7613" cy="850.1" width="133.53" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="133.523" height="46.2585" class="st2"></rect>		<text x="29.74" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Bridge control</text>		</g>	<g id="shape122-171" v:mid="122" v:groupcontext="shape" transform="translate(737.008,-715.953)">		<title>Rectangle.122</title>		<desc>Vendor ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="79.8634" cy="850.1" width="159.73" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="159.727" height="46.2585" class="st2"></rect>		<text x="52.85" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Vendor ID</text>		</g>	<g id="shape123-174" v:mid="123" v:groupcontext="shape" transform="translate(602.985,-669.695)">		<title>Rectangle.123</title>		<desc>Status</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="67.0116" cy="850.1" width="134.03" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="134.023" height="46.2585" class="st2"></rect>		<text x="50" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Status</text>		</g>	<g id="shape124-177" v:mid="124" v:groupcontext="shape" transform="translate(737.008,-669.695)">		<title>Rectangle.124</title>		<desc>Command</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="79.8634" cy="850.1" width="159.73" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="159.727" height="46.2585" class="st2"></rect>		<text x="52.19" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Command</text>		</g>	<g id="shape125-180" v:mid="125" v:groupcontext="shape" transform="translate(602.985,-623.436)">		<title>Rectangle.125</title>		<desc>Class code</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="93.4659" cy="850.1" width="186.94" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="186.932" height="46.2585" class="st2"></rect>		<text x="63.78" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Class code</text>		</g>	<g id="shape126-183" v:mid="126" v:groupcontext="shape" transform="translate(737.008,-623.436)">		<title>Rectangle.126</title>		<desc>Revision ID</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="79.8634" cy="850.1" width="159.73" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="159.727" height="46.2585" class="st2"></rect>		<text x="49.19" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Revision ID</text>		</g>	<g id="shape127-186" v:mid="127" v:groupcontext="shape" transform="translate(602.985,-577.178)">		<title>Rectangle.127</title>		<desc>BIST</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="26.7045" cy="850.1" width="53.41" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="53.4091" height="46.2585" class="st2"></rect>		<text x="13.37" y="853.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>BIST</text>		</g>	<g id="shape128-189" v:mid="128" v:groupcontext="shape" transform="translate(816.621,-577.178)">		<title>Rectangle.128</title>		<desc>Cache line size</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="40.0568" cy="850.1" width="80.12" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="80.1136" height="46.2585" class="st2"></rect>		<text x="11.71" y="847.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Cache line <tspan x="29.39" dy="1em" class="st4">size</tspan></text>		</g>	<g id="shape129-193" v:mid="129" v:groupcontext="shape" transform="translate(656.394,-577.178)">		<title>Rectangle.129</title>		<desc>Header type</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="44.0098" cy="850.1" width="88.02" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="88.0196" height="46.2585" class="st2"></rect>		<text x="11.32" y="853.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Header type</text>		</g>	<g id="shape130-196" v:mid="130" v:groupcontext="shape" transform="translate(736.878,-577.178)">		<title>Rectangle.130</title>		<desc>Primary latency timer</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="40.0568" cy="850.1" width="80.12" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="80.1136" height="46.2585" class="st2"></rect>		<text x="19.39" y="847.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Primary <tspan x="6.05" dy="1em" class="st4">latency timer</tspan></text>		</g>	<g id="shape131-200" v:mid="131" v:groupcontext="shape" transform="translate(602.724,-207.109)">		<title>Rectangle.131</title>		<desc>Prefetchable limit upper 32 bits</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="146.875" cy="850.1" width="293.75" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="293.75" height="46.2585" class="st2"></rect>		<text x="64.5" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Prefetchable limit upper 32 bits</text>		</g>	<g id="shape133-203" v:mid="133" v:groupcontext="shape" transform="translate(734.173,-114.592)">		<title>Rectangle.133</title>		<desc>Capabilities pointer</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="81.2807" cy="850.1" width="162.57" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="162.561" height="46.2585" class="st2"></rect>		<text x="30.25" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Capabilities pointer</text>		</g>	<g id="shape135-206" v:mid="135" v:groupcontext="shape" transform="translate(736.507,-22.0753)">		<title>Rectangle.135</title>		<desc>Interrupt pin</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="40.0568" cy="850.1" width="80.12" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="80.1136" height="46.2585" class="st2"></rect>		<text x="8.04" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Interrupt pin</text>		</g>	<g id="shape136-209" v:mid="136" v:groupcontext="shape" transform="translate(816.621,-22.0753)">		<title>Rectangle.136</title>		<desc>Interrupt line</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="40.0568" cy="850.1" width="80.12" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="80.1136" height="46.2585" class="st2"></rect>		<text x="6.7" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Interrupt line</text>		</g>	<g id="shape138-212" v:mid="138" v:groupcontext="shape" transform="translate(734.016,-160.851)">		<title>Rectangle.138</title>		<desc>I/O base upper 16 bits</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="81.2807" cy="850.1" width="162.57" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="162.561" height="46.2585" class="st2"></rect>		<text x="41.59" y="846.5" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I/O base upper<v:lf></v:lf><tspan x="63.6" dy="1.2em" class="st4">16 bits</tspan></text>		</g>	<g id="shape141-216" v:mid="141" v:groupcontext="shape" transform="translate(756.388,-299.627)">		<title>Rectangle.141</title>		<desc>Prefetchable memory base</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="70.1731" cy="850.1" width="140.35" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="140.346" height="46.2585" class="st2"></rect>		<text x="13.15" y="846.5" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Prefetchable memory <tspan x="57.16" dy="1.2em" class="st4">base</tspan></text>		</g>	<g id="shape144-220" v:mid="144" v:groupcontext="shape" transform="translate(756.388,-345.885)">		<title>Rectangle.144</title>		<desc>Memory base</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="70.1731" cy="850.1" width="140.35" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="140.346" height="46.2585" class="st2"></rect>		<text x="33.83" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Memory base</text>		</g>	<g id="shape146-223" v:mid="146" v:groupcontext="shape" transform="translate(756.388,-392.144)">		<title>Rectangle.146</title>		<desc>I/O limit</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="36.7187" cy="850.1" width="73.44" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="73.4375" height="46.2585" class="st2"></rect>		<text x="16.39" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I/O limit</text>		</g>	<g id="shape147-226" v:mid="147" v:groupcontext="shape" transform="translate(829.826,-392.144)">		<title>Rectangle.147</title>		<desc>I/O base</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="33.4543" cy="850.1" width="66.91" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="66.9087" height="46.2585" class="st2"></rect>		<text x="10.78" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I/O base</text>		</g>	<g id="shape150-229" v:mid="150" v:groupcontext="shape" transform="translate(602.994,-438.402)">		<title>Rectangle.150</title>		<desc>Secondary latency timer</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="33.4543" cy="850.1" width="66.91" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="66.9087" height="46.2585" class="st2"></rect>		<text x="4.77" y="839.3" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Secondary <tspan x="14.44" dy="1.2em" class="st4">latency </tspan><tspan x="20.12" dy="1.2em" class="st4">timer</tspan></text>		</g>	<g id="shape148-234" v:mid="148" v:groupcontext="shape" transform="translate(756.213,-438.402)">		<title>Rectangle.148</title>		<desc>Secondary bus number</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="40.0568" cy="850.1" width="80.12" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="80.1136" height="46.2585" class="st2"></rect>		<text x="11.37" y="846.5" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Secondary <tspan x="8.37" dy="1.2em" class="st4">bus number</tspan></text>		</g>	<g id="shape106-238" v:mid="106" v:groupcontext="shape" transform="translate(167.835,-22.0753)">		<title>Rectangle.106</title>		<desc>Interrupt pin</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="36.7187" cy="850.1" width="73.44" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="73.4375" height="46.2585" class="st2"></rect>		<text x="4.7" y="853.7" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Interrupt pin</text>		</g>	<g id="shape94-241" v:mid="94" v:groupcontext="shape" transform="translate(238.812,-577.178)">		<title>Rectangle.94</title>		<desc>Cache line size</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="36.7187" cy="850.1" width="73.44" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="73.4375" height="46.2585" class="st2"></rect>		<text x="8.37" y="847.1" class="st3" v:langid="1033"><v:paragraph v:spline="-1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Cache line <tspan x="26.05" dy="1em" class="st4">size</tspan></text>		</g>	<g id="shape151-245" v:mid="151" v:groupcontext="shape" transform="translate(668.193,-438.402)">		<title>Rectangle.151</title>		<desc>Subordinate bus number</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="44.0098" cy="850.1" width="88.02" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="88.0196" height="46.2585" class="st2"></rect>		<text x="11.65" y="839.3" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Subordinate <tspan x="34.34" dy="1.2em" class="st4">bus <v:lf></v:lf></tspan><tspan x="23.67" dy="1.2em" class="st4">number</tspan></text>		</g>	<g id="shape149-250" v:mid="149" v:groupcontext="shape" transform="translate(829.826,-438.402)">		<title>Rectangle.149</title>		<desc>Primary bus number</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:tabspace="42.5197"></v:textblock>		<v:textrect cx="33.4543" cy="850.1" width="66.91" height="46.2585"></v:textrect>		<rect x="0" y="826.97" width="66.9087" height="46.2585" class="st2"></rect>		<text x="12.79" y="839.3" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Primary <tspan x="23.78" dy="1.2em" class="st4">bus </tspan><tspan x="13.11" dy="1.2em" class="st4">number</tspan></text>		</g></g>
</svg>

## PCIe software

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

The PCIe controller driver initializes the PCIe resources and performs link training.
            After successful training, the controller driver calls the PCIe framework for link
            enumeration, such as endpoint discovery, identifying the client driver, and probing
            those drivers. For more information about the PCIe framework and client driver PCIe
            registrations, see [https://www.kernel.org/doc/html/latest/PCI/index.html](https://www.kernel.org/doc/html/latest/PCI/index.html).

### Link training

Link training comprises the following operations:
1. The PCIe driver `pcie-qcom.c` file at [https://github.com/torvalds/linux/blob/master/drivers/pci/controller/dwc/pcie-qcom.c](https://github.com/torvalds/linux/blob/master/drivers/pci/controller/dwc/pcie-qcom.c) obtains the required resources such as
                        regulators, clocks, from the device tree.
2. The PCIe driver calls Synopsys DesignWare® Core host
                            driver pcie-designware-host.c file at [https://github.com/torvalds/linux/blob/master/drivers/pci/controller/dwc/pcie-designware-host.c](https://github.com/torvalds/linux/blob/master/drivers/pci/controller/dwc/pcie-designware-host.c) to initialize the root complex.
3. The Synopsys DesignWare Core driver performs all necessary
                        initializations.
4. The Synopsys DesignWare Core driver calls a function pointer to perform host
                        initialization.
5. The Qualcomm PCIe driver performs PHY power-on, enables all regulators,
                        clocks.
6. The Synopsys DesignWare Core driver starts the link training by calling the
                        function pointer to start the link.

### Hardware initialization

The driver initializes and configures the PCIe hardware block and performs link
                training. The initialization occurs after the `platform _probe()`
                driver function is
                called.

    static int qcom_pcie_probe(struct platform_device *pdev)
    {
    
            // get PCIe resources
    
            ret = dw_pcie_host_init(pp);  // call DWC framework to host intialisation like MSI, MSIx and controller init 
            if (ret) {
                    dev_err(dev, "cannot initialize host\n");
                    goto err_phy_exit;
            }
    
    };
    
    static const struct of_device_id qcom_pcie_match[] = {
            { .compatible = "qcom,pcie-sc7280", .data = &cfg_1_9_0 },
            {}
    
    };
    
    static struct platform_driver qcom_pcie_driver = {
            .probe = qcom_pcie_probe,
            .driver = {
                    .name = "qcom-pcie",
                    .suppress_bind_attrs = true,
                    .of_match_table = qcom_pcie_match,
            },
    };Copy to clipboard

When the Synopsys DesignWare Core driver is initialized, it also initializes MSI,
                MSIx, and controllers. The driver calls a Qualcomm function pointer to start the
                link training.

    static int qcom_pcie_start_link(struct dw_pcie *pci)
    {
            struct qcom_pcie *pcie = to_qcom_pcie(pci);
    
            /* Enable Link Training state machine */
            if (pcie->cfg->ops->ltssm_enable)
                    pcie->cfg->ops->ltssm_enable(pcie);
    
            return 0;
    }
    
    static int qcom_pcie_link_up(struct dw_pcie *pci)
    {
            u16 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
            u16 val = readw(pci->dbi_base + offset + PCI_EXP_LNKSTA);
    
            return !!(val & PCI_EXP_LNKSTA_DLLLA); // checks the link is up or not
    }
    static const struct dw_pcie_ops dw_pcie_ops = {
            .link_up = qcom_pcie_link_up,
            .start_link = qcom_pcie_start_link,
    };Copy to clipboard

The Synopsys DesignWare Core driver waits for the link to be active to enumerate the
                PCI framework. The Qualcomm PCIe driver enables only the link training.

Note:  The PCIE\_0 root complex instance is enabled by default for
                the WLAN EP connection.

## Enable QPS615 PCIe switch

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

This section describes how to enable a QPS615 PCIe switch in the Qualcomm Linux hardware
            SoCs. The QPS615 switch endpoint is supported on the `PCIe1` instance.
            The following figure shows the QPS615 endpoint and connections.

Figure : QPS615 PCIe switch connection diagram
            
            <!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export qps615-pcie-switch.svg qps615-pcie-switch-connection-diagram -->
<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.54589in" height="6.32918in" viewbox="0 0 543.304 455.701" xml:space="preserve" color-interpolation-filters="sRGB" class="st12"><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-4 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-4 .st2 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-4 .st3 { fill: #ffffff; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-4 .st4 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-4 .st5 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-4 .st6 { font-size: 0.666659em }
.svg-4 .st7 { fill: #000000; font-family: Arial; font-size: 0.75em }
.svg-4 .st8 { font-size: 1em }
.svg-4 .st9 { fill: none; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-4 .st10 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-4 .st11 { fill: #000000; font-family: Arial; font-size: 0.833336em }
.svg-4 .st12 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<g v:mid="17" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="7.54589" height="6.32918" v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="5.68434E-14" width="543.304" height="455.701" class="st1"></rect>	</g></g><g v:mid="10" v:index="7" v:groupcontext="foregroundPage">	<title>qps615-pcie-switch-connection-diagram</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape1023-3" v:mid="1023" v:groupcontext="shape" transform="translate(18.5,-113.99)">		<title>Sheet.1023</title>		<rect x="0" y="223.645" width="506.304" height="232.056" class="st2"></rect>	</g>	<g id="shape1011-5" v:mid="1011" v:groupcontext="shape" transform="translate(503.708,673.383) rotate(180)">		<title>Simple Double Arrow.1011</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 455.7 L12 443.71 L12 449.7 L452.11 449.7 L452.11 443.71 L464.11 455.7 L452.11 467.7 L452.11 461.7 L12 461.7					 L12 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1012-7" v:mid="1012" v:groupcontext="shape" transform="translate(729.853,154.394) rotate(90)">		<title>Simple Double Arrow.1012</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 455.7 L12 443.71 L12 449.7 L44.26 449.7 L44.26 443.71 L56.26 455.7 L44.26 467.7 L44.26 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1013-9" v:mid="1013" v:groupcontext="shape" transform="translate(729.853,224.712) rotate(90)">		<title>Simple Double Arrow.1013</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 455.7 L12 443.71 L12 449.7 L44.88 449.7 L44.88 443.71 L56.88 455.7 L44.88 467.7 L44.88 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1014-11" v:mid="1014" v:groupcontext="shape" transform="translate(569.133,224.712) rotate(90)">		<title>Simple Double Arrow.1014</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 455.7 L12 443.71 L12 449.7 L44.88 449.7 L44.88 443.71 L56.88 455.7 L44.88 467.7 L44.88 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1015-13" v:mid="1015" v:groupcontext="shape" transform="translate(882.696,224.712) rotate(90)">		<title>Simple Double Arrow.1015</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 455.7 L12 443.71 L12 449.7 L44.88 449.7 L44.88 443.71 L56.88 455.7 L44.88 467.7 L44.88 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1016-15" v:mid="1016" v:groupcontext="shape" transform="translate(39.596,-143.086)">		<title>Sheet.1016</title>		<desc>QPS615 DSP 1 Bus 2 Dev 1 Func 0 | BDF 0x208</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.836" cy="440.189" width="147.68" height="31.0238"></v:textrect>		<rect x="0" y="424.677" width="147.672" height="31.0238" class="st4"></rect>		<text x="32.15" y="436.89" class="st5" v:langid="1033"><v:paragraph v:spline="-1.1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS615 DSP 1<v:newlinechar></v:newlinechar><tspan x="15.44" dy="1.65em" class="st6">Bus 2 Dev 1 Func 0 | BDF 0x208</tspan></text>		</g>	<g id="shape1018-19" v:mid="1018" v:groupcontext="shape" transform="translate(197.816,-143.086)">		<title>Sheet.1018</title>		<desc>QPS615 DSP 2 Bus 2 Dev 2 Func 0 | BDF 0x210</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.836" cy="440.189" width="147.68" height="31.0238"></v:textrect>		<rect x="0" y="424.677" width="147.672" height="31.0238" class="st4"></rect>		<text x="32.15" y="436.29" class="st5" v:langid="1033"><v:paragraph v:spline="-1.1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS615 DSP 2<v:newlinechar></v:newlinechar><v:paragraph v:horizalign="1"></v:paragraph><tspan x="15.44" dy="1.763em" class="st6">Bus 2 Dev 2 Func 0 | BDF 0x210</tspan></text>		</g>	<g id="shape1020-23" v:mid="1020" v:groupcontext="shape" transform="translate(356.036,-143.086)">		<title>Sheet.1020</title>		<desc>QPS615 VDSP Bus 2 Dev 3 Func 0 | BDF 0x218</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.836" cy="440.189" width="147.68" height="31.0238"></v:textrect>		<rect x="0" y="424.677" width="147.672" height="31.0238" class="st4"></rect>		<text x="33.15" y="436.29" class="st5" v:langid="1033"><v:paragraph v:spline="-1.1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS615 VDSP<v:newlinechar></v:newlinechar><v:paragraph v:horizalign="1"></v:paragraph><tspan x="15.44" dy="1.763em" class="st6">Bus 2 Dev 3 Func 0 | BDF 0x218</tspan></text>		</g>	<g id="shape1024-27" v:mid="1024" v:groupcontext="shape" transform="translate(356.036,-26.5)">		<title>Sheet.1024</title>		<desc>eEP PCIe embedded EP Bus 5 Dev 0 Func 0 | BDF 0x500 Bus 5 Dev...</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.836" cy="426.552" width="147.68" height="58.2985"></v:textrect>		<rect x="0" y="397.402" width="147.672" height="58.2985" class="st4"></rect>		<text x="65.33" y="407.3" class="st7" v:langid="1033"><v:paragraph v:spline="-1.4" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>eEP<v:newlinechar></v:newlinechar><v:newlinechar></v:newlinechar><tspan x="34.06" dy="2.178em" class="st8">PCIe embedded EP<v:newlinechar></v:newlinechar></tspan><tspan x="8.14" dy="1.4em" class="st8">Bus 5 Dev 0 Func 0 | BDF 0x500<v:newlinechar></v:newlinechar></tspan><tspan x="8.14" dy="1.4em" class="st8">Bus 5 Dev 0 Func 1 | BDF 0x501</tspan></text>		</g>	<g id="shape1025-33" v:mid="1025" v:groupcontext="shape" transform="translate(25.452,-18.5)">		<title>Sheet.1025</title>		<rect x="0" y="127.701" width="488" height="328" class="st9"></rect>	</g>	<g id="shape1028-35" v:mid="1028" v:groupcontext="shape" transform="translate(275.452,-361.164)">		<title>Sheet.1028</title>		<desc>Gen3 x2 Bus #1</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.768" cy="440.189" width="49.54" height="31.0238"></v:textrect>		<rect x="0" y="424.677" width="49.536" height="31.0238" class="st10"></rect>		<text x="13.76" y="432.09" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Gen3<v:newlinechar></v:newlinechar><tspan x="20.02" dy="1.2em" class="st8">x2<v:lf></v:lf></tspan><tspan x="10.76" dy="1.2em" class="st8">Bus #1</tspan></text>		</g>	<g id="shape1029-40" v:mid="1029" v:groupcontext="shape" transform="translate(272.916,-261.894)">		<title>Sheet.1029</title>		<desc>Bus #2</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.768" cy="444.451" width="49.54" height="22.5"></v:textrect>		<rect x="0" y="433.201" width="49.536" height="22.5" class="st10"></rect>		<text x="9.2" y="447.45" class="st11" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Bus #2</text>		</g>	<g id="shape1030-43" v:mid="1030" v:groupcontext="shape" transform="translate(115.416,-93.308)">		<title>Sheet.1030</title>		<desc>Gen3 x2 Bus #3</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.768" cy="434.605" width="49.54" height="42.192"></v:textrect>		<rect x="0" y="413.509" width="49.536" height="42.192" class="st10"></rect>		<text x="13.76" y="426.5" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Gen3<v:newlinechar></v:newlinechar><tspan x="20.02" dy="1.2em" class="st8">x2<v:lf></v:lf></tspan><tspan x="10.76" dy="1.2em" class="st8">Bus #3</tspan></text>		</g>	<g id="shape1031-48" v:mid="1031" v:groupcontext="shape" transform="translate(274.916,-99.404)">		<title>Sheet.1031</title>		<desc>Gen3 x1 Bus #4</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.768" cy="434.605" width="49.54" height="42.192"></v:textrect>		<rect x="0" y="413.509" width="49.536" height="42.192" class="st10"></rect>		<text x="13.76" y="431.9" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist><v:lf></v:lf>Gen3<v:newlinechar></v:newlinechar><tspan x="20.02" dy="1.2em" class="st8">x1<v:lf></v:lf></tspan><tspan x="10.76" dy="1.2em" class="st8">Bus #4</tspan></text>		</g>	<g id="shape1032-53" v:mid="1032" v:groupcontext="shape" transform="translate(426.952,-104)">		<title>Sheet.1032</title>		<desc>Gen3 x2 Bus #5</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.768" cy="444.451" width="49.54" height="22.5"></v:textrect>		<rect x="0" y="433.201" width="49.536" height="22.5" class="st10"></rect>		<text x="13.76" y="436.35" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Gen3<v:newlinechar></v:newlinechar><tspan x="20.02" dy="1.2em" class="st8">x2<v:lf></v:lf></tspan><tspan x="10.76" dy="1.2em" class="st8">Bus #5</tspan></text>		</g>	<g id="shape1033-58" v:mid="1033" v:groupcontext="shape" transform="translate(45.452,-316.5)">		<title>Sheet.1033</title>		<desc>Device</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="42.2885" cy="442.678" width="84.58" height="26.0465"></v:textrect>		<rect x="0" y="429.654" width="84.577" height="26.0465" class="st10"></rect>		<text x="23.95" y="446.28" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Device</text>		</g>	<g id="shape1041-61" v:mid="1041" v:groupcontext="shape" transform="translate(884.153,313.201) rotate(90)">		<title>Simple Double Arrow.1041</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 455.7 L12 443.71 L12 449.7 L44.88 449.7 L44.88 443.71 L56.88 455.7 L44.88 467.7 L44.88 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1043-63" v:mid="1043" v:groupcontext="shape" transform="translate(730.153,51.2785) rotate(90)">		<title>Simple Double Arrow.1043</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 455.7 L12 443.71 L12 449.7 L44.26 449.7 L44.26 443.71 L56.26 455.7 L44.26 467.7 L44.26 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1044-65" v:mid="1044" v:groupcontext="shape" transform="translate(730.153,313.201) rotate(90)">		<title>Simple Double Arrow.1044</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 455.7 L12 443.71 L12 449.7 L44.88 449.7 L44.88 443.71 L56.88 455.7 L44.88 467.7 L44.88 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1045-67" v:mid="1045" v:groupcontext="shape" transform="translate(569.153,313.701) rotate(90)">		<title>Simple Double Arrow.1045</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 455.7 L12 443.71 L12 449.7 L44.88 449.7 L44.88 443.71 L56.88 455.7 L44.88 467.7 L44.88 461.7 L12 461.7 L12					 467.7 L0 455.7 Z" class="st3"></path>	</g>	<g id="shape1046-69" v:mid="1046" v:groupcontext="shape" transform="translate(200.452,-302.476)">		<title>Sheet.1046</title>		<desc>QPS615 USP Bus 1 Dev 0 Func 0 | BDF 0x100</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.836" cy="440.189" width="147.68" height="31.0238"></v:textrect>		<rect x="0" y="424.677" width="147.672" height="31.0238" class="st4"></rect>		<text x="37.15" y="436.89" class="st5" v:langid="1033"><v:paragraph v:spline="-1.1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS615 USP<v:newlinechar></v:newlinechar><tspan x="15.44" dy="1.65em" class="st6">Bus 1 Dev 0 Func 0 | BDF 0x100</tspan></text>		</g>	<g id="shape1047-73" v:mid="1047" v:groupcontext="shape" transform="translate(201.164,-406.177)">		<title>Sheet.1047</title>		<desc>Root complex Bus 0 Dev 0 Func 0 | BDF 0x000</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.836" cy="440.189" width="147.68" height="31.0238"></v:textrect>		<rect x="0" y="424.677" width="147.672" height="31.0238" class="st4"></rect>		<text x="37.15" y="436.89" class="st5" v:langid="1033"><v:paragraph v:spline="-1.1" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Root complex<v:newlinechar></v:newlinechar><tspan x="15.44" dy="1.65em" class="st6">Bus 0 Dev 0 Func 0 | BDF 0x000</tspan></text>		</g></g>
</svg>

The Qualcomm PCIe driver documentation can be accessed at the following locations:
- [https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/pci/qcom%2Cpcie-sc8280xp.yaml](https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/pci/qcom%2Cpcie-sc8280xp.yaml)
- [https://elixir.bootlin.com/linux/v6.6.48/source/Documentation/devicetree/bindings/pci/qcom,pcie.yaml](https://elixir.bootlin.com/linux/v6.6.48/source/Documentation/devicetree/bindings/pci/qcom,pcie.yaml)
- [https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/phy/qcom%2Csc8280xp-qmp-pcie-phy.yaml](https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/phy/qcom%2Csc8280xp-qmp-pcie-phy.yaml)

### PCIe-related configurations

The following configurations are enabled by default to support the QPS615 switch.
                Disable the QPS615 switch default support, by reverting the code changes, to use it
                for a different PCIe endpoint.

To enable PCIe-related `configs`, apply the following patch to the /arch/arm64/configs/qcom\_addons.config
                file.

    QCLINUX: arm64: defconfig: qcom:
    diff --git a/arch/arm64/configs/qcom_addons.config b/arch/arm64/configs/qcom_addons.config
    index 46555f9..a83f417 100644
    --- a/arch/arm64/configs/qcom_addons.config
    +++ b/arch/arm64/configs/qcom_addons.config
    @@ -25,3 +25,4 @@
     CONFIG_VIRT_DRIVERS=y
     CONFIG_QCOM_SMP2P_SLEEPSTATE=m
     CONFIG_QCOM_SOC_DEBUG=y
    +CONFIG_QCOM_QPS615_PCIE_SWITCH=y
    diff --git a/arch/arm64/configs/qcom_defconfig b/arch/arm64/configs/qcom_defconfig
    index 7293680..730122c 100644
    --- a/arch/arm64/configs/qcom_defconfig
    +++ b/arch/arm64/configs/qcom_defconfig
    @@ -173,6 +173,7 @@
     CONFIG_HOTPLUG_PCI=y
     CONFIG_HOTPLUG_PCI_ACPI=y
     CONFIG_PCI_HOST_GENERIC=y
    +CONFIG_PCIE_DW_PLAT_HOST=y
     CONFIG_PCIE_QCOM=y
     CONFIG_PCI_ENDPOINT=y
     CONFIG_PCI_ENDPOINT_CONFIGFS=y
    @@ -793,3 +794,5 @@
     CONFIG_CORESIGHT_TPDM=m
     CONFIG_CORESIGHT_DUMMY=m
     CONFIG_MEMTEST=y
    +CONFIG_PCIEASPM=y
    +CONFIG_PCIEASPM_POWER_SUPERSAVE=y
    Copy to clipboard

### Always-on refclk signal to endpoint 

In PCIe low-power states such as L1.1 or L1.2, the PHY stops supplying
                    `refclk` to the endpoint. However, the `refclk`
                signal must be supplied to the endpoint. If the endpoint asserts
                    `clkreq` to bring back the link to L0, then root complex must
                provide `refclk` to the endpoint. Some devices with PCIe QPS615
                switches fail to drive the `clkreq` signal to the host from the
                endpoints due to the switch board design. You can add a flag to ensure
                    `refclk` is always supplied to the endpoint.

To retain `refclk` in always-on status, apply the following patch to
                the phy-qcom-qmp-pcie.c file at [https://github.com/torvalds/linux/blob/master/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c](https://github.com/torvalds/linux/blob/master/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c).

    phy: qcom-qmp-pcie:
    --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
    +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
    @@ -43,6 +43,8 @@
     /* QPHY_PCS_STATUS bit */
     #define PHYSTATUS				BIT(6)
     #define PHYSTATUS_4_20				BIT(7)
    +/* PCS_PCIE_ENDPOINT_REFCLK_CNTRL */
    +#define EPCLK_ALWAYS_ON_EN			BIT(6)
     
     #define PHY_INIT_COMPLETE_TIMEOUT		10000
     
    @@ -2293,6 +2295,8 @@
     	struct phy *phy;
     	int mode;
     
    +	bool refclk_always_on;
    +
     	struct clk_fixed_rate pipe_clk_fixed;
     };
     
    @@ -3238,6 +3242,10 @@
     	qmp_pcie_configure(pcs, tbls->pcs, tbls->pcs_num);
     	qmp_pcie_configure(pcs_misc, tbls->pcs_misc, tbls->pcs_misc_num);
     
    +	if (qmp->refclk_always_on && cfg->regs[QPHY_PCS_ENDPOINT_REFCLK_CNTRL])
    +		qphy_setbits(pcs_misc, cfg->regs[QPHY_PCS_ENDPOINT_REFCLK_CNTRL],
    +			     EPCLK_ALWAYS_ON_EN);
    +
     	if (cfg->lanes >= 4 && qmp->tcsr_4ln_config) {
     		qmp_pcie_configure(serdes, cfg->serdes_4ln_tbl, cfg->serdes_4ln_num);
     		qmp_pcie_init_port_b(qmp, tbls);
    @@ -3760,6 +3768,12 @@
     	if (ret)
     		goto err_node_put;
     
    +	qmp->refclk_always_on = of_property_read_bool(dev->of_node, "qcom,refclk-always-on");
    +	if (qmp->refclk_always_on && !qmp->cfg->regs[QPHY_PCS_ENDPOINT_REFCLK_CNTRL]) {
    +		dev_err(dev, "refclk is always on is present but refclk cntrl offset is not present\n");
    +		goto err_node_put;
    +	}
    +
     	ret = phy_pipe_clk_register(qmp, np);
     	if (ret)
     		goto err_node_put;
     Copy to clipboard

### Message signaled interrupt (MSI)

The current MSI mapping doesn't have all the vectors. The Qualcomm Linux hardware
                SoCs support eight vectors. Each vector in turn supports 32 MSIs. Therefore, the
                total MSIs supported are 256.

For information about adding all the MSI groups supported for this PCIe instance,
                    see [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/).

### QPS615 switch support

When all the GPIOs that control power to the QPS615 PCIe switch are added as fixed
                regulators, the QPS615 driver enables the power through the regulator framework. It
                also performs I2C writes to configure the QPS615 switch. The PCIe node is added as a
                dependency to the QPS615 node so that the PCIe driver probes after the QPS615 driver
                probe, which ensures that the switch is powered and ready for enumeration. When
                QPS615 can't toggle, the CLKREQ pin causes a device crash. This is a known
                limitation. Hence, the `refclk` is set to always-on.

### QPS615 switch device tree bindings

To add QPS615 switch device tree binding, apply the following patch to the /arch/arm64/boot/dts/qcom/&lt;chipset&gt;-addons-rb3.dts
                file.

    QCLINUX: dt-bindings: pci: qps615:
    diff --git a/arch/arm64/boot/dts/qcom/<chipset>-addons-rb3.dts b/arch/arm64/boot/dts/qcom/<chipset>-addons-rb3.dts
    index 109ad08..7baf505 100644
    --- a/arch/arm64/boot/dts/qcom/<chipset>-addons-rb3.dts
    +++ b/arch/arm64/boot/dts/qcom/<chipset>-addons-rb3.dts
    @@ -14,6 +14,82 @@
     / {
     	model = "Qualcomm Technologies, Inc. <chipset>-addons RB3 platform";
     	compatible = "qcom,<chipset>-addons-rb3","qcom,sc7280";
    +
    +	qps615_0p9_vreg: qps615-0p9-vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "qps615_0p9_vreg";
    +		gpio = <&pm8350c_gpios 2 0>;
    +		regulator-min-microvolt = <1000000>;
    +		regulator-max-microvolt = <1000000>;
    +		enable-active-high;
    +		regulator-enable-ramp-delay = <4300>;
    +	};
    +
    +	qps615_1p8_vreg: qps615-1p8-vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "qps615_1p8_vreg";
    +		gpio = <&pm8350c_gpios 3 0>;
    +		vin-supply = <&qps615_0p9_vreg>;
    +		regulator-min-microvolt = <1800000>;
    +		regulator-max-microvolt = <1800000>;
    +		enable-active-high;
    +		regulator-enable-ramp-delay = <10000>;
    +	};
    +
    +	qps615_rsex_vreg: qps615-rsex-vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "qps615_rsex_vreg";
    +		gpio = <&pm8350c_gpios 1 0>;
    +		vin-supply = <&qps615_1p8_vreg>;
    +		regulator-min-microvolt = <1800000>;
    +		regulator-max-microvolt = <1800000>;
    +		enable-active-high;
    +		regulator-enable-ramp-delay = <10000>;
    +	};
    +
    +	usb_hub_1p05_vreg: usb-hub-1p05-vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "usb_hub_1p05_vreg";
    +		gpio = <&pm7250b_gpios 4 0>;
    +		vin-supply = <&qps615_rsex_vreg>;
    +		regulator-min-microvolt = <1000000>;
    +		regulator-max-microvolt = <1000000>;
    +		enable-active-high;
    +		regulator-enable-ramp-delay = <5000>;
    +	};
    +
    +	usb_hub_3p3_vreg: usb-hub-3p3-vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "usb_hub_3p3_vreg";
    +		gpio = <&pm7250b_gpios 1 0>;
    +		vin-supply = <&usb_hub_1p05_vreg>;
    +		regulator-min-microvolt = <3300000>;
    +		regulator-max-microvolt = <3300000>;
    +		enable-active-high;
    +		regulator-enable-ramp-delay = <10000>;
    +	};
    +
    +	usb_hub_rest_vreg: usb-hub-rest-vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "usb_hub_rest_vreg";
    +		gpio = <&pm8350c_gpios 4 0>;
    +		vin-supply = <&usb_hub_3p3_vreg>;
    +		regulator-min-microvolt = <3300000>;
    +		regulator-max-microvolt = <3300000>;
    +		enable-active-high;
    +	};
    +};
    +
    +&i2c0 {
    +	clock-frequency = <100000>;
    +	status = "okay";
    +
    +	qps615_switch: pcie-switch@77 {
    +		compatible = "qcom,switch-i2c";
    +		reg = <0x77>;
    +		vdda-supply = <&usb_hub_rest_vreg>;
    +		status = "okay";
    +	};
     };
     
     &i2c1 {
    @@ -216,6 +292,14 @@
     	};
     };
     
    +&pcie1 {
    +	dummy-supply = <&qps615_switch>;
    +};
    +
    +&pcie1_phy {
    +	qcom,refclk-always-on;
    +};
    +
    
    &pm8350c_gpios {
    pm8008i-reset-state {
    pm8008i_active: pm8008i-active-pins {
    
    Documentation/devicetree/bindings/pci/qps615-switch.yaml Documentation/devicetree/bindings/pci/qps615-switch.yaml
    new file mode 100644
    index 0000000..f59e068
    --- /dev/null
    +++ b/Documentation/devicetree/bindings/pci/qps615-switch.yaml
    @@ -0,0 +1,41 @@
    +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
    +%YAML 1.2
    +---
    +$id: http://devicetree.org/schemas/pci/qps615-switch.yaml#
    +$schema: http://devicetree.org/meta-schemas/core.yaml#
    +
    +title: Qualcomm Technologies, Inc. (QTI)  PCIe switch
    +
    +maintainers:
    +  - Chundru Krishna chaitanya <quic_krichai@quicinc.com>
    +
    +properties:
    +  compatible:
    +    enum:
    +      - qcom,switch-i2c
    +
    +  reg:
    +    maxItems: 1
    +
    +  vdda-supply:
    +    description: A phandle to the core analog power supply
    +
    +required:
    +  - compatible
    +  - reg
    +  - vdda-supply
    +
    +additionalProperties: false
    +
    +examples:
    +  - |
    +      i2c {
    +          #address-cells = <1>;
    +          #size-cells = <0>;
    +          qps615: pcie-switch@77 {
    +              compatible = "qcom,switch-i2c";
    +              reg = <0x077>;
    +              vdda-supply = <&foo>;
    +          };
    Copy to clipboard

### QPS615 switch driver

A driver is added for powering on the QPS615 PCIe switch. It performs the basic
                initialization through I2C. The initialization sequence is present in the firmware
                image that the driver requested through the request\_firmware
                API.

To add the QPS615 switch driver, apply the following patch to the /drivers/pci/controller/Kconfig
                file.

    QCLINUX: pci: controller: misc:
    diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
    index c0c3f28..d68e701 100644
    --- a/drivers/pci/controller/Kconfig
    +++ b/drivers/pci/controller/Kconfig
    @@ -345,4 +345,5 @@
     source "drivers/pci/controller/cadence/Kconfig"
     source "drivers/pci/controller/dwc/Kconfig"
     source "drivers/pci/controller/mobiveil/Kconfig"
    +source "drivers/pci/controller/misc/Kconfig"
     endmenu
    diff --git a/drivers/pci/controller/Makefile b/drivers/pci/controller/Makefile
    index 37c8663..015f711b 100644
    --- a/drivers/pci/controller/Makefile
    +++ b/drivers/pci/controller/Makefile
    @@ -43,6 +43,7 @@
     # pcie-hisi.o quirks are needed even without CONFIG_PCIE_DW
     obj-y				+= dwc/
     obj-y				+= mobiveil/
    +obj-y				+= misc/
     
    # The following drivers are for devices that use the generic ACPI
    diff --git a/drivers/pci/controller/misc/Kconfig b/drivers/pci/controller/misc/Kconfig
    new file mode 100644
    index 0000000..0acea3f
    --- /dev/null
    +++ b/drivers/pci/controller/misc/Kconfig
    @@ -0,0 +1,10 @@
    
    +# SPDX-License-Identifier: GPL-2.0
    +config QCOM_QPS615_PCIE_SWITCH
    +	bool "QCOM QPS615 PCIe Switch Driver"
    +	depends on PCuart
    +	help
    +	 This adds support to enable QPS615 PCIe switch power. And after powering on the switch do
    +	 switch initialization through I2C writes. The I2C data is parsed from the requested
    +	 firmware.
    +
    +	 Say Y to compile this driver.
    diff --git a/drivers/pci/controller/misc/Makefile b/drivers/pci/controller/misc/Makefile
    new file mode 100644
    index 0000000..1c2b99e
    --- /dev/null
    +++ b/drivers/pci/controller/misc/Makefile
    @@ -0,0 +1,2 @@
    +# SPDX-License-Identifier: GPL-2.0
    +obj-$(CONFIG_QCOM_QPS615_PCIE_SWITCH) += qps615.o
    
    Change in arm64: dts: qcom: <chipset>-rb3g2: Add PCIe nodes. 
    Enable PCIe1 controller and its corresponding PHY nodes on
    <chipset>-rb3g2 platform. As there are multiple endpoints connected through PCIe switch add smmu id for each BDF.
    
    diff --git a/arch/arm64/boot/dts/qcom/<chipset>-rb3.dts b/arch/arm64/boot/dts/qcom/<chipset>-rb3.dts
    index 5adce1f..f995a53 100644
    --- a/arch/arm64/boot/dts/qcom/<chipset>-rb3.dts
    +++ b/arch/arm64/boot/dts/qcom/<chipset>-rb3.dts
    @@ -512,6 +512,32 @@
     	bias-bus-hold;
     };
     
    +&pcie1 {
    +	perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
    +
    +	pinctrl-0 = <&pcie1_reset_n>, <&pcie1_wake_n>;
    +	pinctrl-names = "default";
    +
    +	iommu-map = <0x0 &apps_smmu 0x1c80 0x1>,
    +		    <0x100 &apps_smmu 0x1c81 0x1>,
    +		    <0x208 &apps_smmu 0x1c84 0x1>,
    +		    <0x210 &apps_smmu 0x1c85 0x1>,
    +		    <0x218 &apps_smmu 0x1c86 0x1>,
    +		    <0x300 &apps_smmu 0x1c87 0x1>,
    +		    <0x400 &apps_smmu 0x1c88 0x1>,
    +		    <0x500 &apps_smmu 0x1c89 0x1>,
    +		    <0x501 &apps_smmu 0x1c90 0x1>;
    +
    +	status = "okay";
    +};
    +
    +&pcie1_phy {
    +	vdda-phy-supply = <&vreg_l10c_0p88>;
    +	vdda-pll-supply = <&vreg_l6b_1p2>;
    +
    +	status = "okay";
    +};
    +
     &qup_uart5_rx {
     	drive-strength = <2>;
     	bias-pull-up;
    @@ -604,6 +630,21 @@
     		bias-disable;
     	};
     
    +	pcie1_reset_n: pcie1-reset-n-state {
    +		pins = "gpio2";
    +		function = "gpio";
    +		drive-strength = <16>;
    +		output-low;
    +		bias-disable;
    +	};
    +
    +	pcie1_wake_n: pcie1-wake-n-state {
    +		pins = "gpio3";
    +		function = "gpio";
    +		drive-strength = <2>;
    +		bias-pull-up;
    +	};
    +
     	qup_uart7_sleep_cts: qup-uart7-sleep-cts-state {
     		pins = "gpio28";
     		function = "gpio";
    
    Copy to clipboard

### Save and restore configuration space QPS615 switch

Preserve the configuration space of the PCIe bridge device during power management
                suspend state. Resume the PCIe bridge configuration space during power management
                resume state. This method is essential for the proper operation of PCIe endpoints
                connected using the QPS615 PCIe switch.

    diff --git a/drivers/pci/controller/misc/qps615.c b/drivers/pci/controller/misc/qps615.c
    index 7d63efb..10048cd 100644
    --- a/drivers/pci/controller/misc/qps615.c
    +++ b/drivers/pci/controller/misc/qps615.c
    @@ -5,6 +5,7 @@
     #include <linux/firmware.h>
     #include <linux/i2c.h>
     #include <linux/module.h>
    +#include <linux/pci.h>
     
     #define DRV_NAME		"qps615-switch-i2c"
     
    @@ -235,6 +236,24 @@
     }
     module_init(qps615_i2c_init);
     
    +static void qcom_pcie_resume_early(struct pci_dev *pdev)
    +{
    +	pci_restore_state(pdev);
    +}
    +
    +DECLARE_PCI_FIXUP_CLASS_RESUME_EARLY(PCI_ANY_ID,
    +				PCI_ANY_ID, PCI_CLASS_BRIDGE_PCI_NORMAL, 0,
    +				qcom_pcie_resume_early);
    +
    +static void qcom_pcie_suspend_late(struct pci_dev *pdev)
    +{
    +	pci_save_state(pdev);
    +}
    +
    +DECLARE_PCI_FIXUP_CLASS_SUSPEND_LATE(PCI_ANY_ID,
    +				PCI_ANY_ID, PCI_CLASS_BRIDGE_PCI_NORMAL, 0,
    +				qcom_pcie_suspend_late);
    +
     MODULE_AUTHOR("Krishna Chaitanya Chundru <quic_krichai@quicinc.com>");
     MODULE_DESCRIPTION("QPS615 PCIE Switch driver");
     MODULE_LICENSE("GPL");
    Copy to clipboard

The following is a sample PCIe kernel driver log from the QPS615 device
                enumeration.

    [    7.254674] qcom-pcie 1c08000.pci: supply vdda not found, using dummy regulator
    [    7.285224] qcom-pcie 1c08000.pci: supply vddpe-3v3 not found, using dummy regulator
    [    7.299688] qcom-pcie 1c08000.pci: host bridge /soc@0/pci@1c08000 ranges:
    [    7.313713] qcom-pcie 1c08000.pci: IO 0x0040200000..0x00402fffff -> 0x0000000000
    [    7.329778] qcom-pcie 1c08000.pci: MEM 0x0040300000..0x005fffffff -> 0x0040300000
    [    7.479174] qcom-pcie 1c08000.pci: iATU: unroll T, 8 ob, 8 ib, align 4K, limit 1024G
    [    7.577792] qcom-pcie 1c08000.pci: PCIe Gen.3 x2 link up
    [    7.648353] qcom-pcie 1c08000.pci: PCI host bridge to bus 0001:00
    [    7.654618] pci_bus 0001:00: root bus resource [bus 00-ff]
    [    7.654620] pci_bus 0001:00: root bus resource [io  0x0000-0xfffff]
    [    7.654622] pci_bus 0001:00: root bus resource [mem 0x40300000-0x5fffffff]
    [    7.654633] pci 0001:00:00.0: [17cb:010b] type 01 class 0x060400
    [    7.665893] pci 0001:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff]
    [    7.684913] pci 0001:00:00.0: PME# supported from D0 D3hot D3cold
    [    7.700502] pci 0001:01:00.0: [1179:0623] type 01 class 0x060400
    [    7.710817] pci 0001:01:00.0: PME# supported from D0 D3hot D3cold
    [    7.733698] pci 0001:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    7.738818] pci 0001:02:01.0: [1179:0623] type 01 class 0x060400
    [    7.751157] pci 0001:02:01.0: PME# supported from D0 D3hot D3cold
    [    7.763174] pci 0001:02:02.0: [1179:0623] type 01 class 0x060400
    [    7.777084] pci 0001:02:02.0: PME# supported from D0 D3hot D3cold
    [    7.792832] pci 0001:02:03.0: [1179:0623] type 01 class 0x060400
    [    7.815659] pci 0001:02:03.0: PME# supported from D0 D3hot D3cold
    Copy to clipboard

## Enable USB interface through PCIe switch

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

This section provides instructions on how to activate a USB interface through a PCIe
            switch in the Qualcomm Linux hardware SoCs. The PCIE1 instance is connected to the
            endpoint of the QPS615 switch, and the downstream port of the QPS615 is connected to the
            PCIe to USB endpoint. For the PCIe to USB endpoint connections using the QPS615, see the
            mainboard and interposer block diagram at [https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-251/rb3_hardware_overview.html](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-251/rb3_hardware_overview.html).

Note: QCS9075 PCIe software doesn't support USB.

### Enable power for the PCIe to USB controller

Enable the power for the PCIe to USB controller connected through the QPS615 switch,
                and reset the external USB hub connected using GPIO162. This method is necessary for
                the correct detection and functioning of the USB peripherals.

    diff --git a/arch/arm64/boot/dts/qcom/qcs6490-addons-rb3gen2.dtsi b/arch/arm64/boot/dts/qcom/qcs6490-addons-rb3gen2.dtsi
    index bf95b66..4a76a36 100644
    --- a/arch/arm64/boot/dts/qcom/qcs6490-addons-rb3gen2.dtsi
    +++ b/arch/arm64/boot/dts/qcom/qcs6490-addons-rb3gen2.dtsi
    @@ -40,6 +40,37 @@
     		regulator-enable-ramp-delay = <10000>;
     	};
     
    +	upd_3p3_vreg: upd_3p3_vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "upd_3p3_vreg";
    +		gpio = <&pm7250b_gpios 1 0>;
    +		vin-supply = <&qps615_rsex_vreg>;
    +		regulator-min-microvolt = <3300000>;
    +		regulator-max-microvolt = <3300000>;
    +		enable-active-high;
    +		regulator-enable-ramp-delay = <10000>;
    +		regulator-always-on;
    +	};
    +
    +	upd_rest_vreg: upd_rest_vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "upd_rest_vreg";
    +		gpio = <&pm8350c_gpios 4 0>;
    +		vin-supply = <&upd_3p3_vreg>;
    +		regulator-min-microvolt = <3300000>;
    +		regulator-max-microvolt = <3300000>;
    +		enable-active-high;
    +		regulator-always-on;
    +	};
    +
    +	usbhub_rest_vreg: usbhub_rest_vreg {
    +		compatible = "regulator-fixed";
    +		regulator-name = "usbhub_rest_vreg";
    +		pinctrl-names = "default";
    +		pinctrl-0 = <&pcie1_usb_hub_reset_default>;
    +		gpio = <&tlmm 162 GPIO_ACTIVE_LOW>;
    +		enable-active-high;
    +	};
     };
     
     &i2c0 {
    @@ -165,6 +196,14 @@
     		bias-pull-down;
     		input-enable;
     	};
    +
    +	pcie1_usb_hub_reset_default: pcie1_usb_hub_reset_default {
    +		pins = "gpio162";
    +		function = "gpio";
    +		drive-strength = <2>;
    +		output-high;
    +		bias-pull-down;
    +	};
     };
     Copy to clipboard

### Avoid early handoff in PCIe to USB controller 

Ensure that `usb_early-handoff` is skipped for the PCIe to USB
                controller since the firmware isn't loaded. This precaution is necessary to prevent
                any adverse impact on the bootup duration.

    diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
    index 2665832..c3d488f 100644
    --- a/drivers/usb/host/pci-quirks.c
    +++ b/drivers/usb/host/pci-quirks.c
    @@ -1260,6 +1260,11 @@
     			return;
     	}
     
    +	/* Skip handoff for Renesas PCI USB controller on QCOM SOC */
    +	if ((pdev->vendor == PCI_VENDOR_ID_RENESAS) &&
    +		(pcie_find_root_port(pdev)->vendor == PCI_VENDOR_ID_QCOM))
    +		return;
    +
     	if (pdev->class != PCI_CLASS_SERIAL_USB_UHCI &&
     			pdev->class != PCI_CLASS_SERIAL_USB_OHCI &&
     			pdev->class != PCI_CLASS_SERIAL_USB_EHCI &&
    Copy to clipboard

### Download PCIe to USB controller firmware

To download the firmware from [https://www.renesas.com/us/en/products/interface/usb-switches-hubs/upd720201-usb-30-host-controller#design_development](https://www.renesas.com/us/en/products/interface/usb-switches-hubs/upd720201-usb-30-host-controller#design_development), register and log in to [https://www.renesas.com/](https://www.renesas.com/).

Note: To prevent command failures, update the software as
                described in the [Update software](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-253/set_up_the_device.html#update-software)section before updating
                the Renesas firmware.

1. Create the `usb_fw.img` image and copy the USB firmware by
                    running the following commands on the Linux host
                    machine.

        dd if=/dev/zero of=usb_fw.img bs=4k count=240Copy to clipboard

        mkfs -t ext4 usb_fw.imgCopy to clipboard

        mkdir usb_fwCopy to clipboard

        sudo mount -o loop usb_fw.img usb_fw/Copy to clipboard

        sudo cp -rf renesas_usb_fw.mem usb_fwCopy to clipboard

        sudo umount usb_fwCopy to clipboard
2. Start the device in the fastboot
                    mode.

        adb rootCopy to clipboard

        adb shellCopy to clipboard

        reboot bootloaderCopy to clipboard
3. Run the following command when the device is in the fastboot
                        mode.

        fastboot devicesCopy to clipboard

Sample
                        output:

        7dc85f5e         fastbootCopy to clipboard
4. Flash the `usb_fw.img` image to the
                        device.

        fastboot erase usb_fwCopy to clipboard

        fastboot flash usb_fw  usb_fw.imgCopy to clipboard

        fastboot rebootCopy to clipboard

Command
                        failure
                    sample:

        c:\>fastboot erase usb_fw
        Erasing 'usb_fw'                                   FAILED (remote: 'Check device console.')
        fastboot: error: Command failedCopy to clipboard
5. To verify if the firmware is successfully updated, run the following
                        command.

        dmesgCopy to clipboard

Sample log
                        after the firmware is successfully
                        updated.

        [    6.589462] usbcore: registered new device driver onboard-usb-hub
        [    6.653277] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
        [    7.013061] usb 2-1.1: new SuperSpeed USB device number 3 using xhci_hcd
        [    7.120657] 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, 3e:9e:5e:ff:d3:fb
        [    7.120767] usbcore: registered new interface driver ax88179_178a
        Copy to clipboard

### PCIe kernel driver logs for PCIe to USB device enumeration reference

You can run the following commands to view the device information:

- To display device information in USB, run the following
                        command.

        lsusbCopy to clipboard

The
                        following message is
                        displayed.

        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 hub
        Copy to clipboard
- To display device information in PCIe, run the following
                        command.

        lspciCopy to clipboard

The
                        following message is
                        displayed.

        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 0220
        Copy to clipboard

## Connect QPS615 switches in cascade

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

Connect the QPS615 switches in cascade to enable additional Ethernet, PCIe, and USB
            ports.

Note: This feature is supported only in QCS6490.

The following image shows the two QPS615 switches connected in cascade to PCIE1 and
            another QPS615 switch connected to PCIE2.

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export qps615-switches-cascade.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="13.21in" height="6.21167in" viewbox="0 0 951.12 447.24" xml:space="preserve" color-interpolation-filters="sRGB" class="st22"><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-5 .st1 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-5 .st2 { fill: #ffffff; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-5 .st3 { fill: #000000; font-family: Arial; font-size: 0.833336em }
.svg-5 .st4 { font-size: 1em }
.svg-5 .st5 { fill: #000000; font-family: Calibri; font-size: 0.583328em }
.svg-5 .st6 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-5 .st7 { fill: #000000; font-family: Arial; font-size: 0.75em }
.svg-5 .st8 { fill: #000000; font-family: Arial; font-size: 0.625008em }
.svg-5 .st9 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-5 .st10 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-5 .st11 { marker-end: url("#mrkr13-245"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-5 .st12 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.34246575342466 }
.svg-5 .st13 { marker-start: url("#mrkr13-251"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-5 .st14 { fill: #ffffff; stroke: none; stroke-linecap: butt; stroke-width: 7.2 }
.svg-5 .st15 { fill: #000000; font-family: Arial; font-size: 0.583328em }
.svg-5 .st16 { fill: #ffffff; stroke: none; stroke-linecap: butt }
.svg-5 .st17 { fill: #000000; font-family: Arial; font-size: 1.16666em }
.svg-5 .st18 { stroke: #000000; stroke-dasharray: 0.75, 1.5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-5 .st19 { fill: #000000; font-family: Arial; font-size: 0.75em; font-weight: bold }
.svg-5 .st20 { fill: #000000; font-family: Arial; font-size: 0.666664em }
.svg-5 .st21 { fill: #000000; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-5 .st22 { 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-245" class="st12" v:arrowtype="13" v:arrowsize="0" v:setback="8.76" refx="-8.76" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-2.92,-2.92) "></use>	</marker>	<marker id="mrkr13-251" class="st12" v:arrowtype="13" v:arrowsize="0" v:setback="8.28" refx="8.28" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(2.92) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Flowchart" v:index="0"></v:layer>	<v:layer v:name="Connector" v:index="1"></v:layer>	<g id="shape24-1" v:mid="24" v:groupcontext="shape" transform="translate(136.398,-19.12)">		<title>Rectangle.24</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="37.24" width="246.477" height="410" class="st1"></rect>	</g>	<g id="shape23-3" v:mid="23" v:groupcontext="shape" transform="translate(126.375,-27.12)">		<title>Rectangle.23</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="60.24" width="20.046" height="387" class="st2"></rect>	</g>	<g id="shape12-5" v:mid="12" v:groupcontext="shape" transform="translate(391.875,-18.12)">		<title>Rectangle.12</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="37.24" width="108" height="410" class="st1"></rect>	</g>	<g id="shape27-7" v:mid="27" v:groupcontext="shape" transform="translate(513.375,-18.12)">		<title>Rectangle.27</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="37.24" width="419.625" height="410" class="st1"></rect>	</g>	<g id="shape26-9" v:mid="26" v:groupcontext="shape" transform="translate(499.875,-27.12)">		<title>Rectangle.26</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="60.24" width="18" height="387" class="st2"></rect>	</g>	<g id="shape1-11" v:mid="1" v:groupcontext="shape" transform="translate(18.375,-18.12)">		<title>Rectangle</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="37.24" width="108" height="410" class="st1"></rect>	</g>	<g id="shape2-13" v:mid="2" v:groupcontext="shape" transform="translate(121.875,-391.62)">		<title>Square</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape3-15" v:mid="3" v:groupcontext="shape" transform="translate(121.875,-373.62)">		<title>Square.3</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape4-17" v:mid="4" v:groupcontext="shape" transform="translate(121.875,-324.12)">		<title>Square.4</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape5-19" v:mid="5" v:groupcontext="shape" transform="translate(121.875,-342.12)">		<title>Square.5</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape6-21" v:mid="6" v:groupcontext="shape" transform="translate(121.875,-306.12)">		<title>Square.6</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape7-23" v:mid="7" v:groupcontext="shape" transform="translate(121.875,-202.62)">		<title>Square.7</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape8-25" v:mid="8" v:groupcontext="shape" transform="translate(121.875,-157.12)">		<title>Square.8</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape9-27" v:mid="9" v:groupcontext="shape" transform="translate(121.875,-120.87)">		<title>Square.9</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape10-29" v:mid="10" v:groupcontext="shape" transform="translate(121.875,-87.3136)">		<title>Square.10</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape11-31" v:mid="11" v:groupcontext="shape" transform="translate(121.875,-33.87)">		<title>Square.11</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape13-33" v:mid="13" v:groupcontext="shape" transform="translate(495.375,-391.62)">		<title>Square.13</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape14-35" v:mid="14" v:groupcontext="shape" transform="translate(495.375,-373.62)">		<title>Square.14</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape16-37" v:mid="16" v:groupcontext="shape" transform="translate(495.375,-338.12)">		<title>Square.16</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape17-39" v:mid="17" v:groupcontext="shape" transform="translate(495.375,-306.12)">		<title>Square.17</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape18-41" v:mid="18" v:groupcontext="shape" transform="translate(495.375,-202.62)">		<title>Square.18</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape19-43" v:mid="19" v:groupcontext="shape" transform="translate(495.375,-154.12)">		<title>Square.19</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape20-45" v:mid="20" v:groupcontext="shape" transform="translate(495.375,-121.049)">		<title>Square.20</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape21-47" v:mid="21" v:groupcontext="shape" transform="translate(495.375,-90.135)">		<title>Square.21</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape22-49" v:mid="22" v:groupcontext="shape" transform="translate(495.375,-33.87)">		<title>Square.22</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape28-51" v:mid="28" v:groupcontext="shape" transform="translate(196.125,-234.12)">		<title>Rectangle.28</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="325.74" width="56" height="121.5" class="st1"></rect>	</g>	<g id="shape33-53" v:mid="33" v:groupcontext="shape" transform="translate(247.625,-301.852)">		<title>Square.33</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape34-55" v:mid="34" v:groupcontext="shape" transform="translate(247.625,-284.977)">		<title>Square.34</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape35-57" v:mid="35" v:groupcontext="shape" transform="translate(247.625,-257.745)">		<title>Square.35</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape36-59" v:mid="36" v:groupcontext="shape" transform="translate(247.625,-240.87)">		<title>Square.36</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape58-61" v:mid="58" v:groupcontext="shape" transform="translate(828.375,-369.12)">		<title>Rectangle.58</title>		<desc>Full size PCIe x4 #1</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="39.8125" cy="426.99" width="79.63" height="40.5"></v:textrect>		<rect x="0" y="406.74" width="79.625" height="40.5" class="st1"></rect>		<text x="8.97" y="423.99" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Full size PCIe <tspan x="27.58" dy="1.2em" class="st4">x4 #1</tspan></text>		</g>	<g id="shape59-65" v:mid="59" v:groupcontext="shape" transform="translate(828.375,-306.12)">		<title>Rectangle.59</title>		<desc>PCIe m.2 B key 5G</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="39.8125" cy="426.99" width="79.63" height="40.5"></v:textrect>		<rect x="0" y="406.74" width="79.625" height="40.5" class="st1"></rect>		<text x="18.97" y="423.84" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PCIe m.2 <v:lf></v:lf><tspan x="19.25" dy="1.223em" class="st4">B key 5G</tspan></text>		</g>	<g id="shape60-69" v:mid="60" v:groupcontext="shape" transform="translate(828.375,-243.12)">		<title>Rectangle.60</title>		<desc>PCIe m.2 B key NVMe</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="39.8125" cy="426.99" width="79.63" height="40.5"></v:textrect>		<rect x="0" y="406.74" width="79.625" height="40.5" class="st1"></rect>		<text x="18.97" y="423.84" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PCIe m.2 <v:lf></v:lf><tspan x="12.03" dy="1.223em" class="st4">B key NVMe</tspan></text>		</g>	<g id="shape64-73" v:mid="64" v:groupcontext="shape" transform="translate(828.375,-110)">		<title>Rectangle.64</title>		<desc>Full size PCIe x4 #2</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="39.8125" cy="426.99" width="79.63" height="40.5"></v:textrect>		<rect x="0" y="406.74" width="79.625" height="40.5" class="st1"></rect>		<text x="8.97" y="423.84" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Full size PCIe <tspan x="27.58" dy="1.223em" class="st4">x4 #2</tspan></text>		</g>	<g id="shape65-77" v:mid="65" v:groupcontext="shape" transform="translate(828.375,-45.12)">		<title>Rectangle.65</title>		<desc>PCIe m.2 E key Wi-Fi</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="39.8125" cy="426.99" width="79.63" height="40.5"></v:textrect>		<rect x="0" y="406.74" width="79.625" height="40.5" class="st1"></rect>		<text x="18.97" y="423.84" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PCIe m.2 <v:lf></v:lf><tspan x="14.26" dy="1.223em" class="st4">E key Wi</tspan>-Fi</text>		</g>	<g id="shape66-81" v:mid="66" v:groupcontext="shape" v:layermember="0" transform="translate(702.375,-338.745)">		<title>And gate</title>		<desc>AND</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langid="1033"></v:cp>			<v:cp v:nameu="Duration" v:lbl="Duration" v:type="2" v:langid="1033"></v:cp>			<v:cp v:nameu="Resources" v:lbl="Resources" v:langid="1033"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="9.14063" cy="439.928" width="18.29" height="14.625"></v:textrect>		<path d="M0 432.62 L0 447.24 L10.97 447.24 A7.31251 7.31251 -180 0 0 10.97 432.62 L0 432.62 Z" class="st2"></path>		<text x="2.7" y="442.03" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AND</text>		</g>	<g id="shape68-84" v:mid="68" v:groupcontext="shape" v:layermember="0" transform="translate(702.375,-256.807)">		<title>And gate.68</title>		<desc>AND</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langid="1033"></v:cp>			<v:cp v:nameu="Duration" v:lbl="Duration" v:type="2" v:langid="1033"></v:cp>			<v:cp v:nameu="Resources" v:lbl="Resources" v:langid="1033"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="9.14063" cy="439.928" width="18.29" height="14.625"></v:textrect>		<path d="M0 432.62 L0 447.24 L10.97 447.24 A7.31251 7.31251 -180 0 0 10.97 432.62 L0 432.62 Z" class="st2"></path>		<text x="2.7" y="442.33" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AND</text>		</g>	<g id="shape69-87" v:mid="69" v:groupcontext="shape" v:layermember="0" transform="translate(702.375,-153.531)">		<title>And gate.69</title>		<desc>AND</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langid="1033"></v:cp>			<v:cp v:nameu="Duration" v:lbl="Duration" v:type="2" v:langid="1033"></v:cp>			<v:cp v:nameu="Resources" v:lbl="Resources" v:langid="1033"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="9.14063" cy="439.928" width="18.29" height="14.625"></v:textrect>		<path d="M0 432.62 L0 447.24 L10.97 447.24 A7.31251 7.31251 -180 0 0 10.97 432.62 L0 432.62 Z" class="st2"></path>		<text x="2.7" y="442.33" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AND</text>		</g>	<g id="shape72-90" v:mid="72" v:groupcontext="shape" transform="translate(54.875,-389.37)">		<title>Sheet.72</title>		<desc>GPIO_116</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="20.97" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_116</text>		</g>	<g id="shape73-93" v:mid="73" v:groupcontext="shape" transform="translate(54.875,-370.12)">		<title>Sheet.73</title>		<desc>GPIO_124</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="20.97" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_124</text>		</g>	<g id="shape74-96" v:mid="74" v:groupcontext="shape" transform="translate(18.375,-338.62)">		<title>Sheet.74</title>		<desc>PM73250C GPIO_01</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="52.875" cy="440.49" width="105.75" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="105.75" height="13.5" class="st6"></rect>		<text x="16.7" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>PM73250C GPIO_01</text>		</g>	<g id="shape75-99" v:mid="75" v:groupcontext="shape" transform="translate(56.625,-321.34)">		<title>Sheet.75</title>		<desc>GPIO_02</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="25.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_02</text>		</g>	<g id="shape76-102" v:mid="76" v:groupcontext="shape" transform="translate(56.375,-304.06)">		<title>Sheet.76</title>		<desc>GPIO_79</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="25.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_79</text>		</g>	<g id="shape77-105" v:mid="77" v:groupcontext="shape" transform="translate(56.625,-199.37)">		<title>Sheet.77</title>		<desc>GPIO_03</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="25.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_03</text>		</g>	<g id="shape78-108" v:mid="78" v:groupcontext="shape" transform="translate(56.625,-155.37)">		<title>Sheet.78</title>		<desc>GPIO_78</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="25.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_78</text>		</g>	<g id="shape79-111" v:mid="79" v:groupcontext="shape" transform="translate(56.625,-119.12)">		<title>Sheet.79</title>		<desc>GPIO_87</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="25.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_87</text>		</g>	<g id="shape80-114" v:mid="80" v:groupcontext="shape" transform="translate(56.625,-86.2836)">		<title>Sheet.80</title>		<desc>GPIO_88</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="25.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_88</text>		</g>	<g id="shape81-117" v:mid="81" v:groupcontext="shape" transform="translate(56.625,-32.62)">		<title>Sheet.81</title>		<desc>GPIO_89</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="25.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_89</text>		</g>	<g id="shape82-120" v:mid="82" v:groupcontext="shape" transform="translate(200.375,-337.37)">		<title>Sheet.82</title>		<desc>RESX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="4" y="443.19" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>RESX</text>		</g>	<g id="shape83-123" v:mid="83" v:groupcontext="shape" transform="translate(200.375,-299.12)">		<title>Sheet.83</title>		<desc>GPIO_02</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="7.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_02</text>		</g>	<g id="shape84-126" v:mid="84" v:groupcontext="shape" transform="translate(194.125,-281.84)">		<title>Sheet.84</title>		<desc>CLK_REQ_B</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28" cy="440.49" width="56" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="56" height="13.5" class="st6"></rect>		<text x="7.81" y="442.74" class="st8" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>CLK_REQ_B</text>		</g>	<g id="shape85-129" v:mid="85" v:groupcontext="shape" transform="translate(200.054,-254.549)">		<title>Sheet.85</title>		<desc>GPIO_03</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="7.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_03</text>		</g>	<g id="shape86-132" v:mid="86" v:groupcontext="shape" transform="translate(196.125,-236.911)">		<title>Sheet.86</title>		<desc>CLK_REQ_C</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.375" cy="440.49" width="52.76" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="52.75" height="13.5" class="st6"></rect>		<text x="4.15" y="443.19" class="st8" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>CLK_REQ_C</text>		</g>	<g id="shape88-135" v:mid="88" v:groupcontext="shape" transform="translate(619.875,-232.62)">		<title>Rectangle.88</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="325.74" width="56" height="121.5" class="st1"></rect>	</g>	<g id="shape89-137" v:mid="89" v:groupcontext="shape" transform="translate(615.875,-338.62)">		<title>Square.89</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape90-139" v:mid="90" v:groupcontext="shape" transform="translate(671.375,-300.352)">		<title>Square.90</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape91-141" v:mid="91" v:groupcontext="shape" transform="translate(671.375,-283.477)">		<title>Square.91</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape92-143" v:mid="92" v:groupcontext="shape" transform="translate(671.375,-256.12)">		<title>Square.92</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape93-145" v:mid="93" v:groupcontext="shape" transform="translate(671.375,-239.37)">		<title>Square.93</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape94-147" v:mid="94" v:groupcontext="shape" transform="translate(624.125,-335.87)">		<title>Sheet.94</title>		<desc>RESX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="4" y="443.19" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>RESX</text>		</g>	<g id="shape95-150" v:mid="95" v:groupcontext="shape" transform="translate(624.125,-297.62)">		<title>Sheet.95</title>		<desc>GPIO_02</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="7.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_02</text>		</g>	<g id="shape96-153" v:mid="96" v:groupcontext="shape" transform="translate(617.875,-280.34)">		<title>Sheet.96</title>		<desc>CLK_REQ_B</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28" cy="440.49" width="56" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="56" height="13.5" class="st6"></rect>		<text x="7.81" y="442.74" class="st8" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>CLK_REQ_B</text>		</g>	<g id="shape97-156" v:mid="97" v:groupcontext="shape" transform="translate(623.804,-253.049)">		<title>Sheet.97</title>		<desc>GPIO_03</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="7.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_03</text>		</g>	<g id="shape98-159" v:mid="98" v:groupcontext="shape" transform="translate(619.875,-235.411)">		<title>Sheet.98</title>		<desc>CLK_REQ_C</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.375" cy="440.49" width="52.76" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="52.75" height="13.5" class="st6"></rect>		<text x="4.15" y="443.19" class="st8" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>CLK_REQ_C</text>		</g>	<g id="shape99-162" v:mid="99" v:groupcontext="shape" transform="translate(308.875,-233.62)">		<title>Rectangle.99</title>		<desc>uPD PCIe to USB</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="31.5" cy="428.34" width="63" height="37.8"></v:textrect>		<rect x="0" y="409.44" width="63" height="37.8" class="st1"></rect>		<text x="4.82" y="424.74" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>uPD PCIe <tspan x="12.49" dy="1.2em" class="st4">to USB</tspan></text>		</g>	<g id="shape101-166" v:mid="101" v:groupcontext="shape" transform="translate(546.125,-243.62)">		<title>Rectangle.101</title>		<desc>CLK buffer</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" cy="430.44" width="56.01" height="33.6"></v:textrect>		<rect x="0" y="413.64" width="56" height="33.6" class="st1"></rect>		<text x="16.33" y="426.84" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK <tspan x="12.66" dy="1.2em" class="st4">buffer</tspan></text>		</g>	<g id="shape102-170" v:mid="102" v:groupcontext="shape" transform="translate(547.875,-83.62)">		<title>Rectangle.102</title>		<desc>CLK buffer</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" cy="430.44" width="56" height="33.6"></v:textrect>		<rect x="0" y="413.64" width="56" height="33.6" class="st1"></rect>		<text x="16.33" y="426.84" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK <tspan x="12.66" dy="1.2em" class="st4">buffer</tspan></text>		</g>	<g id="shape103-174" v:mid="103" v:groupcontext="shape" transform="translate(428,-396.12)">		<title>Sheet.103</title>		<desc>GPIO_BBB</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="17.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_BBB</text>		</g>	<g id="shape104-177" v:mid="104" v:groupcontext="shape" transform="translate(428,-377.37)">		<title>Sheet.104</title>		<desc>GPIO_F</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="30.49" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_F</text>		</g>	<g id="shape105-180" v:mid="105" v:groupcontext="shape" transform="translate(400.625,-347.37)">		<title>Sheet.105</title>		<desc>PCIE1_RST_N GPIO_CC</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48.3125" cy="440.49" width="96.63" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="96.625" height="13.5" class="st6"></rect>		<text x="32.1" y="437.79" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>PCIE1_RST_N <tspan x="52.12" dy="1.2em" class="st4">GPIO_CC</tspan></text>		</g>	<g id="shape107-184" v:mid="107" v:groupcontext="shape" transform="translate(400.375,-315.62)">		<title>Sheet.107</title>		<desc>PCIE1_CLK_REQ_N GPIO_DD</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48.3125" cy="440.49" width="96.63" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="96.625" height="13.5" class="st6"></rect>		<text x="8.09" y="437.79" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>PCIE1_CLK_REQ_N <tspan x="52.12" dy="1.2em" class="st4">GPIO_DD</tspan></text>		</g>	<g id="shape108-188" v:mid="108" v:groupcontext="shape" transform="translate(416.375,-212.83)">		<title>Sheet.108</title>		<desc>PCIE1_WAKE_N GPIO_EE</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.4375" cy="440.49" width="80.88" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="80.875" height="13.5" class="st6"></rect>		<text x="7.85" y="437.79" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>PCIE1_WAKE_N <tspan x="37.36" dy="1.2em" class="st4">GPIO_EE</tspan></text>		</g>	<g id="shape109-192" v:mid="109" v:groupcontext="shape" transform="translate(429.75,-159.12)">		<title>Sheet.109</title>		<desc>GPIO_U</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="33.75" cy="440.49" width="67.5" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="67.5" height="13.5" class="st6"></rect>		<text x="29.49" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_U</text>		</g>	<g id="shape110-195" v:mid="110" v:groupcontext="shape" transform="translate(400.625,-128.263)">		<title>Sheet.110</title>		<desc>PCIE2_RST_N GPIO_FF</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48.3125" cy="440.49" width="96.63" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="96.625" height="13.5" class="st6"></rect>		<text x="32.1" y="437.79" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>PCIE2_RST_N <tspan x="54.12" dy="1.2em" class="st4">GPIO_FF</tspan></text>		</g>	<g id="shape111-199" v:mid="111" v:groupcontext="shape" transform="translate(400.625,-98.4564)">		<title>Sheet.111</title>		<desc>PCIE1_CLK_REQ_N GPIO_GG</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48.3125" cy="440.49" width="96.63" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="96.625" height="13.5" class="st6"></rect>		<text x="8.09" y="437.79" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>PCIE1_CLK_REQ_N <tspan x="51.11" dy="1.2em" class="st4">GPIO_GG</tspan></text>		</g>	<g id="shape112-203" v:mid="112" v:groupcontext="shape" transform="translate(400.625,-43.25)">		<title>Sheet.112</title>		<desc>PCIE2_WAKE_N GPIO_HH</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48.3125" cy="440.49" width="96.63" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="96.625" height="13.5" class="st6"></rect>		<text x="23.6" y="437.79" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>PCIE2_WAKE_N <tspan x="52.12" dy="1.2em" class="st4">GPIO_HH</tspan></text>		</g>	<g id="shape114-207" v:mid="114" v:groupcontext="shape" transform="translate(620.375,-68.62)">		<title>Rectangle.114</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="325.74" width="56" height="121.5" class="st1"></rect>	</g>	<g id="shape115-209" v:mid="115" v:groupcontext="shape" transform="translate(616.375,-174.62)">		<title>Square.115</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape116-211" v:mid="116" v:groupcontext="shape" transform="translate(671.875,-136.352)">		<title>Square.116</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape117-213" v:mid="117" v:groupcontext="shape" transform="translate(671.875,-119.477)">		<title>Square.117</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape118-215" v:mid="118" v:groupcontext="shape" transform="translate(671.875,-93.1021)">		<title>Square.118</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape119-217" v:mid="119" v:groupcontext="shape" transform="translate(671.875,-75.37)">		<title>Square.119</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape120-219" v:mid="120" v:groupcontext="shape" transform="translate(624.625,-171.87)">		<title>Sheet.120</title>		<desc>RESX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="4" y="443.19" class="st7" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>RESX</text>		</g>	<g id="shape121-222" v:mid="121" v:groupcontext="shape" transform="translate(624.625,-133.62)">		<title>Sheet.121</title>		<desc>GPIO_02</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="7.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_02</text>		</g>	<g id="shape122-225" v:mid="122" v:groupcontext="shape" transform="translate(618.375,-116.34)">		<title>Sheet.122</title>		<desc>CLK_REQ_B</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28" cy="440.49" width="56" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="56" height="13.5" class="st6"></rect>		<text x="7.81" y="442.74" class="st8" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>CLK_REQ_B</text>		</g>	<g id="shape123-228" v:mid="123" v:groupcontext="shape" transform="translate(624.304,-89.0486)">		<title>Sheet.123</title>		<desc>GPIO_03</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="24.75" cy="440.49" width="49.51" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="49.5" height="13.5" class="st6"></rect>		<text x="7.98" y="443.19" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>GPIO_03</text>		</g>	<g id="shape124-231" v:mid="124" v:groupcontext="shape" transform="translate(620.375,-71.4114)">		<title>Sheet.124</title>		<desc>CLK_REQ_C</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.375" cy="440.49" width="52.76" height="13.5"></v:textrect>		<rect x="0" y="433.74" width="52.75" height="13.5" class="st6"></rect>		<text x="4.15" y="443.19" class="st8" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>CLK_REQ_C</text>		</g>	<g id="shape125-234" v:mid="125" v:groupcontext="shape" transform="translate(146.421,-396.12)">		<title>Sheet.125</title>		<path d="M0 447.24 L234 447.24" class="st10"></path>	</g>	<g id="shape126-237" v:mid="126" v:groupcontext="shape" transform="translate(146.421,-376.92)">		<title>Sheet.126</title>		<path d="M0 447.24 L234 447.24" class="st10"></path>	</g>	<g id="shape130-240" v:mid="130" v:groupcontext="shape" transform="translate(146.421,-328.12)">		<title>Sheet.130</title>		<path d="M0 447.24 L42.63 447.24" class="st11"></path>	</g>	<g id="shape132-246" v:mid="132" v:groupcontext="shape" transform="translate(147.501,-310.119) rotate(0.138344)">		<title>Sheet.132</title>		<path d="M6.21 447.24 L6.57 447.24 L49.7 447.24" class="st13"></path>	</g>	<g id="shape133-252" v:mid="133" v:groupcontext="shape" transform="translate(256.625,-262.245)">		<title>Sheet.133</title>		<desc>RST_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.125" cy="447.24" width="52.26" height="0"></v:textrect>		<path d="M0 447.24 L45.68 447.24" class="st11"></path>		<rect v:rectcontext="textBkgnd" x="14.6511" y="440.04" width="22.948" height="14.4001" class="st14"></rect>		<text x="14.65" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST_N</text>		</g>	<g id="shape134-259" v:mid="134" v:groupcontext="shape" transform="translate(267.321,-245.242) rotate(1.37043)">		<title>Sheet.134</title>		<desc>CLK_REQ_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.1325" cy="447.24" width="52.27" height="0"></v:textrect>		<path d="M6.21 447.24 L6.57 447.24 L52.26 447.24" class="st13"></path>		<rect v:rectcontext="textBkgnd" x="5.31903" y="440.04" width="41.6269" height="14.4001" class="st14"></rect>		<text x="5.32" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ_N</text>		</g>	<g id="shape136-266" v:mid="136" v:groupcontext="shape" transform="translate(396.375,-396.12)">		<title>Sheet.136</title>		<path d="M0 447.24 L99 447.24" class="st10"></path>	</g>	<g id="shape138-269" v:mid="138" v:groupcontext="shape" transform="translate(495.375,516.36) rotate(180)">		<title>Sheet.138</title>		<path d="M0 447.24 L99 447.24" class="st10"></path>	</g>	<g id="shape140-272" v:mid="140" v:groupcontext="shape" transform="translate(306.375,-306.352)">		<title>Sheet.140</title>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<path d="M0 447.24 L65.43 447.24" class="st11"></path>	</g>	<g id="shape141-277" v:mid="141" v:groupcontext="shape" transform="translate(256.625,-289.477)">		<title>Sheet.141</title>		<desc>CLK_REQ_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="60.875" cy="447.24" width="121.76" height="0"></v:textrect>		<path d="M6.21 447.24 L6.57 447.24 L121.75 447.24" class="st13"></path>		<rect v:rectcontext="textBkgnd" x="40.0616" y="440.04" width="41.6269" height="14.4001" class="st14"></rect>		<text x="40.06" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ_N</text>		</g>	<g id="shape143-284" v:mid="143" v:groupcontext="shape" transform="translate(404.375,-306.12)">		<title>Sheet.143</title>		<path d="M84.79 410.74 L84.43 410.74 L0 410.74 L0 447.24" class="st13"></path>	</g>	<g id="shape147-289" v:mid="147" v:groupcontext="shape" transform="translate(400.368,-306.174) rotate(0.511529)">		<title>Sheet.147</title>		<path d="M0 447.24 L8 447.24" class="st10"></path>	</g>	<g id="shape148-292" v:mid="148" v:groupcontext="shape" transform="translate(390.559,-288.874) rotate(-0.745069)">		<title>Sheet.148</title>		<path d="M6.21 447.24 L6.57 447.24 L16.04 447.24" class="st13"></path>	</g>	<g id="shape149-297" v:mid="149" v:groupcontext="shape" transform="translate(495.375,583.86) rotate(180)">		<title>Sheet.149</title>		<path d="M0 447.24 L82.96 447.24" class="st10"></path>	</g>	<g id="shape151-300" v:mid="151" v:groupcontext="shape" transform="translate(859.652,136.62) rotate(90)">		<title>Sheet.151</title>		<path d="M0 447.24 L21.5 447.24" class="st10"></path>	</g>	<g id="shape152-303" v:mid="152" v:groupcontext="shape" transform="translate(380.421,688.102) rotate(180)">		<title>Sheet.152</title>		<desc>WAKE_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="117" cy="447.24" width="234.01" height="0" transform="rotate(180)"></v:textrect>		<path d="M0 447.24 L227.43 447.24" class="st11"></path>		<rect v:rectcontext="textBkgnd" x="-131.781" y="-451.44" width="29.5617" height="8.39987" transform="rotate(180)" class="st14"></rect>		<text x="-131.78" y="-445.14" transform="rotate(180)" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>WAKE_N</text>		</g>	<g id="shape153-310" v:mid="153" v:groupcontext="shape" transform="translate(495.375,687.36) rotate(180)">		<title>Sheet.153</title>		<path d="M0 447.24 L92.43 447.24" class="st11"></path>	</g>	<g id="shape154-315" v:mid="154" v:groupcontext="shape" transform="translate(828.375,687.779) rotate(180)">		<title>Sheet.154</title>		<desc>WAKE_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="155.25" cy="447.24" width="310.5" height="0" transform="rotate(180)"></v:textrect>		<path d="M0 447.24 L303.93 447.24" class="st11"></path>		<rect v:rectcontext="textBkgnd" x="-170.031" y="-454.44" width="29.5617" height="14.4001" transform="rotate(180)" class="st14"></rect>		<text x="-170.03" y="-443.64" transform="rotate(180)" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>WAKE_N</text>		</g>	<g id="shape155-322" v:mid="155" v:groupcontext="shape" transform="translate(146.421,-160.906)">		<title>Sheet.155</title>		<path d="M0 447.24 L234 447.24" class="st10"></path>	</g>	<g id="shape156-325" v:mid="156" v:groupcontext="shape" transform="translate(146.421,-126.049)">		<title>Sheet.156</title>		<desc>RST_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="117" cy="447.24" width="234.01" height="0"></v:textrect>		<path d="M0 447.24 L234 447.24" class="st10"></path>		<rect v:rectcontext="textBkgnd" x="105.526" y="440.04" width="22.948" height="14.4001" class="st14"></rect>		<text x="105.53" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST_N</text>		</g>	<g id="shape157-330" v:mid="157" v:groupcontext="shape" transform="translate(146.375,-94.12)">		<title>Sheet.157</title>		<desc>PCIE2_CLK_REQ_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="117" cy="447.054" width="234.01" height="0.372165"></v:textrect>		<path d="M2.05 447.24 L0 446.87 L234 446.87" class="st10"></path>		<rect v:rectcontext="textBkgnd" x="84.1248" y="439.854" width="65.7507" height="14.4001" class="st16"></rect>		<text x="84.12" y="450.65" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PCIE2_CLK_REQ_N</text>		</g>	<g id="shape158-335" v:mid="158" v:groupcontext="shape" transform="translate(144.375,-39.12)">		<title>Sheet.158</title>		<path d="M6.21 447.24 L6.57 447.24 L234 447.24" class="st13"></path>	</g>	<g id="shape159-340" v:mid="159" v:groupcontext="shape" transform="translate(398.634,-159.114) rotate(0.28937)">		<title>Sheet.159</title>		<path d="M0 447.24 L99 447.24" class="st10"></path>	</g>	<g id="shape160-343" v:mid="160" v:groupcontext="shape" transform="translate(398.634,-126.043) rotate(0.28937)">		<title>Sheet.160</title>		<path d="M0 447.24 L99 447.24" class="st10"></path>	</g>	<g id="shape162-346" v:mid="162" v:groupcontext="shape" transform="translate(395.73,-94.4917) rotate(-0.082678)">		<title>Sheet.162</title>		<path d="M0 447.24 L99 447.24" class="st10"></path>	</g>	<g id="shape163-349" v:mid="163" v:groupcontext="shape" transform="translate(399.763,-39.1072) rotate(0.434048)">		<title>Sheet.163</title>		<path d="M6.21 447.24 L6.57 447.24 L99 447.24" class="st13"></path>	</g>	<g id="shape164-354" v:mid="164" v:groupcontext="shape" transform="translate(517.875,-159.12)">		<title>Sheet.164</title>		<path d="M0 447.24 L82.5 447.24" class="st10"></path>	</g>	<g id="shape165-357" v:mid="165" v:groupcontext="shape" transform="translate(600.375,-159.12)">		<title>Sheet.165</title>		<path d="M9.79 427.24 L9.43 427.24 L0 427.24 L0 447.24" class="st13"></path>	</g>	<g id="shape166-362" v:mid="166" v:groupcontext="shape" transform="translate(517.875,-124.12)">		<title>Sheet.166</title>		<path d="M0 447.24 L10.5 447.24 L10.5 424.38 L90.5 424.38 L90.5 410.1 L95.93 410.1" class="st11"></path>	</g>	<g id="shape167-367" v:mid="167" v:groupcontext="shape" transform="translate(522.375,-93.5508)">		<title>Sheet.167</title>		<path d="M0 447.24 L13.66 447.24 L13.66 406.67 L98 406.67" class="st10"></path>	</g>	<g id="shape170-370" v:mid="170" v:groupcontext="shape" transform="translate(1039.24,313.12) rotate(90)">		<title>Sheet.170</title>		<path d="M0 447.24 L16.9 447.24" class="st10"></path>	</g>	<g id="shape171-373" v:mid="171" v:groupcontext="shape" transform="translate(584.851,-146.977)">		<title>Sheet.171</title>		<path d="M0 447.24 L0 400.1 L107.72 400.1 L107.72 430.1" class="st10"></path>	</g>	<g id="shape172-376" v:mid="172" v:groupcontext="shape" transform="translate(675.598,-163.816) rotate(-2.11374)">		<title>Sheet.172</title>		<path d="M0 447.24 L10.29 447.24" class="st10"></path>	</g>	<g id="shape173-379" v:mid="173" v:groupcontext="shape" transform="translate(692.281,-105.089)">		<title>Sheet.173</title>		<path d="M0 379.15 L0 447.15 L11.72 447.24" class="st10"></path>	</g>	<g id="shape178-382" v:mid="178" v:groupcontext="shape" transform="translate(699.742,796.983) rotate(-179.699)">		<title>Sheet.178</title>		<path d="M0 447.24 L21.22 447.24" class="st10"></path>	</g>	<g id="shape179-385" v:mid="179" v:groupcontext="shape" transform="translate(517.875,-378.12)">		<title>Sheet.179</title>		<path d="M0 447.24 L74.5 447.24" class="st10"></path>	</g>	<g id="shape180-388" v:mid="180" v:groupcontext="shape" transform="translate(592.375,-343.12)">		<title>Sheet.180</title>		<path d="M17.29 447.24 L16.93 447.24 L0 447.24 L0 412.24" class="st13"></path>	</g>	<g id="shape181-393" v:mid="181" v:groupcontext="shape" transform="translate(517.875,-324.12)">		<title>Sheet.181</title>		<desc>RST_N</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="2"></v:textblock>		<v:textrect cx="51" cy="437.24" width="102.01" height="20"></v:textrect>		<path d="M0 427.24 L66.5 427.24 L66.5 447.24 L95.43 447.24" class="st11"></path>		<rect v:rectcontext="textBkgnd" x="39.5261" y="420.44" width="22.948" height="22.7999" class="st14"></rect>		<text x="39.53" y="426.74" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST_N<v:newlinechar></v:newlinechar></text>		</g>	<g id="shape182-400" v:mid="182" v:groupcontext="shape" transform="translate(517.875,-310.12)">		<title>Sheet.182</title>		<desc>CLK_REQ_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="51" cy="447.24" width="102.01" height="0"></v:textrect>		<path d="M6.21 447.24 L6.57 447.24 L102 447.24" class="st13"></path>		<rect v:rectcontext="textBkgnd" x="30.1866" y="440.04" width="41.6269" height="14.4001" class="st14"></rect>		<text x="30.19" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ_N</text>		</g>	<g id="shape183-407" v:mid="183" v:groupcontext="shape" transform="translate(600.375,-324.12)">		<title>Sheet.183</title>		<path d="M0 447.24 L0 403.24 L94 403.24" class="st10"></path>	</g>	<g id="shape185-410" v:mid="185" v:groupcontext="shape" transform="translate(694.375,-349.714)">		<title>Sheet.185</title>		<path d="M8 447.24 L0 447.24 L0 428.83" class="st10"></path>	</g>	<g id="shape190-413" v:mid="190" v:groupcontext="shape" transform="translate(694.375,-268.12)">		<title>Sheet.190</title>		<path d="M0 361.24 L0 367.65 L0 447.24" class="st10"></path>	</g>	<g id="shape191-416" v:mid="191" v:groupcontext="shape" transform="translate(683.551,-260.609) rotate(0.406931)">		<title>Sheet.191</title>		<path d="M0 447.24 L22 447.24" class="st10"></path>	</g>	<g id="shape193-419" v:mid="193" v:groupcontext="shape" transform="translate(683.176,626.291) rotate(-177.54)">		<title>Sheet.193</title>		<path d="M0 447.24 L8.01 447.24" class="st10"></path>	</g>	<g id="shape194-422" v:mid="194" v:groupcontext="shape" transform="translate(680.375,-304.852)">		<title>Sheet.194</title>		<path d="M0 447.24 L6.29 447.24" class="st10"></path>	</g>	<g id="shape195-425" v:mid="195" v:groupcontext="shape" transform="translate(686.375,-304.852)">		<title>Sheet.195</title>		<path d="M16 409.69 L0 409.69 L0.29 447.24" class="st10"></path>	</g>	<g id="shape196-428" v:mid="196" v:groupcontext="shape" transform="translate(35.375,-412.691)">		<title>Sheet.196</title>		<desc>QPS6490</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="37" cy="441.24" width="74.01" height="12"></v:textrect>		<rect x="0" y="435.24" width="74" height="12" class="st6"></rect>		<text x="6.65" y="445.44" class="st17" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS6490</text>		</g>	<g id="shape197-431" v:mid="197" v:groupcontext="shape" transform="translate(222.125,-413.168)">		<title>Sheet.197</title>		<desc>Interposer</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="37" cy="441.24" width="74.01" height="12"></v:textrect>		<rect x="0" y="435.24" width="74" height="12" class="st6"></rect>		<text x="5.48" y="445.44" class="st17" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Interposer</text>		</g>	<g id="shape198-434" v:mid="198" v:groupcontext="shape" transform="translate(404.375,-413.168)">		<title>Sheet.198</title>		<desc>Mainboard</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="42.6875" cy="441.24" width="85.38" height="12"></v:textrect>		<rect x="0" y="435.24" width="85.375" height="12" class="st6"></rect>		<text x="9.61" y="445.44" class="st17" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Mainboard</text>		</g>	<g id="shape199-437" v:mid="199" v:groupcontext="shape" transform="translate(632.375,-412.215)">		<title>Sheet.199</title>		<desc>Industrial mezzanine</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="92" cy="441.24" width="184" height="12"></v:textrect>		<rect x="0" y="435.24" width="184" height="12" class="st6"></rect>		<text x="27.8" y="445.44" class="st17" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Industrial mezzanine</text>		</g>	<g id="shape200-440" v:mid="200" v:groupcontext="shape" transform="translate(184.375,-328.12)">		<title>Sheet.200</title>		<path d="M0 447.24 L0 409.24 L122 409.24" class="st10"></path>	</g>	<g id="shape202-443" v:mid="202" v:groupcontext="shape" transform="translate(753.615,81.12) rotate(90)">		<title>Sheet.202</title>		<path d="M0 447.24 L59.77 447.24" class="st10"></path>	</g>	<g id="shape205-446" v:mid="205" v:groupcontext="shape" transform="translate(256.911,-306.352)">		<title>Sheet.205</title>		<path d="M0 447.24 L49.75 447.24" class="st18"></path>	</g>	<g id="shape206-449" v:mid="206" v:groupcontext="shape" transform="translate(195.625,-318.12)">		<title>Sheet.206</title>		<desc>QPS615</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28" cy="439.24" width="56" height="16"></v:textrect>		<rect x="0" y="431.24" width="56" height="16" class="st6"></rect>		<text x="5.32" y="442.84" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS615</text>		</g>	<g id="shape209-452" v:mid="209" v:groupcontext="shape" transform="translate(619.875,-312.977)">		<title>Sheet.209</title>		<desc>QPS615 #1</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28" cy="436.365" width="56.01" height="21.75"></v:textrect>		<rect x="0" y="425.49" width="56" height="21.75" class="st6"></rect>		<text x="10.99" y="433.67" class="st19" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS615<v:lf></v:lf><tspan x="21.74" dy="1.2em" class="st4"> </tspan>#1</text>		</g>	<g id="shape213-456" v:mid="213" v:groupcontext="shape" transform="translate(620.375,-149.245)">		<title>Sheet.213</title>		<desc>QPS615 #2</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28" cy="436.365" width="56.01" height="21.75"></v:textrect>		<rect x="0" y="425.49" width="56" height="21.75" class="st6"></rect>		<text x="10.99" y="433.67" class="st19" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QPS615<v:lf></v:lf><tspan x="21.74" dy="1.2em" class="st4"> </tspan>#2</text>		</g>	<g id="shape216-460" v:mid="216" v:groupcontext="shape" transform="translate(517.875,-159.12)">		<title>Sheet.216</title>		<path d="M0 212.24 L16 212.24 L16 447.24" class="st10"></path>	</g>	<g id="shape25-463" v:mid="25" v:groupcontext="shape" transform="translate(378.375,-27.12)">		<title>Rectangle.25</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="60.24" width="18" height="387" class="st2"></rect>	</g>	<g id="shape224-465" v:mid="224" v:groupcontext="shape" transform="translate(720.656,-330)">		<title>Sheet.224</title>		<path d="M0 431.18 L79.34 431.18 L79.34 447.24 L101.15 447.24" class="st11"></path>	</g>	<g id="shape225-470" v:mid="225" v:groupcontext="shape" transform="translate(723.77,-264.109) rotate(0.398912)">		<title>Sheet.225</title>		<desc>RST2_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="53.8607" cy="447.24" width="107.73" height="0"></v:textrect>		<path d="M0 447.24 L101.15 447.24" class="st11"></path>		<rect v:rectcontext="textBkgnd" x="40.4401" y="440.04" width="26.841" height="14.4001" class="st14"></rect>		<text x="40.44" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST2_N</text>		</g>	<g id="shape226-477" v:mid="226" v:groupcontext="shape" transform="translate(720.656,-140)">		<title>Sheet.226</title>		<path d="M0 426.4 L79.34 426.4 L79.34 447.24 L101.15 447.24" class="st11"></path>	</g>	<g id="shape227-482" v:mid="227" v:groupcontext="shape" transform="translate(720.375,-70)">		<title>Sheet.227</title>		<path d="M0 416.09 L79.63 416.09 L79.62 447.24" class="st10"></path>	</g>	<g id="shape228-485" v:mid="228" v:groupcontext="shape" transform="translate(800,-70)">		<title>Sheet.228</title>		<path d="M0 447.24 L28.38 447.24" class="st10"></path>	</g>	<g id="shape229-488" v:mid="229" v:groupcontext="shape" transform="translate(517.875,-40)">		<title>Sheet.229</title>		<path d="M6.21 447.24 L6.57 447.24 L282.12 447.24 L282.12 430.1 L310.5 430.1" class="st13"></path>	</g>	<g id="shape230-493" v:mid="230" v:groupcontext="shape" transform="translate(805,-56.9018)">		<title>Sheet.230</title>		<path d="M0 447.24 L0 384.14 L23.38 384.14" class="st10"></path>	</g>	<g id="shape231-496" v:mid="231" v:groupcontext="shape" transform="translate(680.875,-79.87)">		<title>Sheet.231</title>		<desc>CLK_REQ2_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.75" cy="447.24" width="147.5" height="0"></v:textrect>		<path d="M6.21 447.24 L6.57 447.24 L147.5 447.24" class="st13"></path>		<rect v:rectcontext="textBkgnd" x="50.99" y="440.04" width="45.5199" height="14.4001" class="st14"></rect>		<text x="50.99" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ2_N</text>		</g>	<g id="shape232-503" v:mid="232" v:groupcontext="shape" transform="translate(680.875,-123.977)">		<title>Sheet.232</title>		<desc>CLK_REQ1_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.75" cy="447.24" width="147.5" height="0"></v:textrect>		<path d="M6.21 447.24 L6.57 447.24 L147.5 447.24" class="st13"></path>		<rect v:rectcontext="textBkgnd" x="50.99" y="440.04" width="45.5199" height="14.4001" class="st14"></rect>		<text x="50.99" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ1_N</text>		</g>	<g id="shape234-510" v:mid="234" v:groupcontext="shape" transform="translate(680.375,-245.268)">		<title>Sheet.234</title>		<desc>CLK_REQ2_N</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="74" cy="442.508" width="148" height="9.46332"></v:textrect>		<path d="M6.21 447.24 L6.57 447.24 L135.62 447.24 L135.62 437.78 L148 437.78" class="st13"></path>		<rect v:rectcontext="textBkgnd" x="51.24" y="441.777" width="45.5199" height="14.4001" class="st14"></rect>		<text x="51.24" y="452.58" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ2_N</text>		</g>	<g id="shape235-517" v:mid="235" v:groupcontext="shape" transform="translate(776,-346.058)">		<title>Sheet.235</title>		<path d="M0 447.24 L0 393.3 L45.8 393.3" class="st11"></path>	</g>	<g id="shape236-522" v:mid="236" v:groupcontext="shape" transform="translate(680.375,-287.977)">		<title>Sheet.236</title>		<desc>CLK_REQ1_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="59.8125" cy="447.24" width="119.63" height="0"></v:textrect>		<path d="M6.21 447.24 L6.57 447.24 L119.62 447.24" class="st13"></path>		<rect v:rectcontext="textBkgnd" x="37.0525" y="440.04" width="45.5199" height="14.4001" class="st14"></rect>		<text x="37.05" y="450.84" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ1_N</text>		</g>	<g id="shape238-529" v:mid="238" v:groupcontext="shape" transform="translate(800,-287.977)">		<title>Sheet.238</title>		<path d="M28.37 425.22 L0 425.22 L0 447.24" class="st10"></path>	</g>	<g id="shape239-532" v:mid="239" v:groupcontext="shape" transform="translate(784,-287.977)">		<title>Sheet.239</title>		<path d="M44.37 355.22 L0 355.22 L0 447.24" class="st10"></path>	</g>	<g id="shape240-535" v:mid="240" v:groupcontext="shape" transform="translate(808,-206.701)">		<title>Sheet.240</title>		<path d="M20.37 264.57 L0 264.57 L0 447.24" class="st10"></path>	</g>	<g id="shape29-538" v:mid="29" v:groupcontext="shape" transform="translate(192.125,-340.12)">		<title>Square.29</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="438.24" width="9" height="9" class="st2"></rect>	</g>	<g id="shape241-540" v:mid="241" v:groupcontext="shape" transform="translate(792,-206.701)">		<title>Sheet.241</title>		<path d="M36.37 333.94 L0 333.94 L0 447.24" class="st10"></path>	</g>	<g id="shape245-543" v:mid="245" v:groupcontext="shape" transform="translate(727.625,-340)">		<title>Sheet.245</title>		<desc>RST1_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18.1875" cy="440.24" width="36.38" height="14"></v:textrect>		<rect x="0" y="433.24" width="36.375" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="4.76697" y="436.04" width="26.841" height="8.39987" class="st14"></rect>		<text x="4.77" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST1_N</text>		</g>	<g id="shape246-547" v:mid="246" v:groupcontext="shape" transform="translate(739.625,-153.531)">		<title>Sheet.246</title>		<desc>RST1_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18.1875" cy="440.24" width="36.38" height="14"></v:textrect>		<rect x="0" y="433.24" width="36.375" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="4.76697" y="436.04" width="26.841" height="8.39987" class="st14"></rect>		<text x="4.77" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST1_N</text>		</g>	<g id="shape248-551" v:mid="248" v:groupcontext="shape" transform="translate(741.625,-93.8343)">		<title>Sheet.248</title>		<desc>RST2_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18.1875" cy="440.24" width="36.38" height="14"></v:textrect>		<rect x="0" y="433.24" width="36.375" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="4.76697" y="436.04" width="26.841" height="8.39987" class="st14"></rect>		<text x="4.77" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST2_N</text>		</g>	<g id="shape250-555" v:mid="250" v:groupcontext="shape" transform="translate(539.625,-143)">		<title>Sheet.250</title>		<desc>RST1_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18.1875" cy="440.24" width="36.38" height="14"></v:textrect>		<rect x="0" y="433.24" width="36.375" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="4.76697" y="436.04" width="26.841" height="8.39987" class="st14"></rect>		<text x="4.77" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST1_N</text>		</g>	<g id="shape251-559" v:mid="251" v:groupcontext="shape" transform="translate(536.687,-126)">		<title>Sheet.251</title>		<desc>CLK_REQ_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.375" cy="440.24" width="52.76" height="14"></v:textrect>		<rect x="0" y="433.24" width="52.75" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="5.56155" y="436.04" width="41.6269" height="8.39987" class="st14"></rect>		<text x="5.56" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ_N</text>		</g>	<g id="shape254-563" v:mid="254" v:groupcontext="shape" transform="translate(149.427,170.02) rotate(-90)">		<title>Sheet.254</title>		<path d="M6.21 447.24 L6.57 447.24 L32.9 447.24" class="st13"></path>	</g>	<g id="shape255-568" v:mid="255" v:groupcontext="shape" transform="translate(594.381,-225.714)">		<title>Sheet.255</title>		<path d="M0 435.54 L0 435.9 L0 447.24 L96 447.24 L96 384.98" class="st13"></path>	</g>	<g id="shape256-573" v:mid="256" v:groupcontext="shape" transform="translate(568,-220)">		<title>Sheet.256</title>		<path d="M0 429.83 L0 430.19 L0 447.24 L136 447.24 L136 421.97" class="st13"></path>	</g>	<g id="shape257-578" v:mid="257" v:groupcontext="shape" transform="translate(592.476,-62.8571)">		<title>Sheet.257</title>		<path d="M0 432.69 L0 433.05 L0 447.24 L96 447.24" class="st13"></path>	</g>	<g id="shape70-583" v:mid="70" v:groupcontext="shape" v:layermember="0" transform="translate(702.094,-93.8343)">		<title>And gate.70</title>		<desc>AND</desc>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langid="1033"></v:cp>			<v:cp v:nameu="Duration" v:lbl="Duration" v:type="2" v:langid="1033"></v:cp>			<v:cp v:nameu="Resources" v:lbl="Resources" v:langid="1033"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="9.14063" cy="439.928" width="18.29" height="14.625"></v:textrect>		<path d="M0 432.62 L0 447.24 L10.97 447.24 A7.31251 7.31251 -180 0 0 10.97 432.62 L0 432.62 Z" class="st2"></path>		<text x="2.7" y="442.33" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AND</text>		</g>	<g id="shape258-586" v:mid="258" v:groupcontext="shape" transform="translate(1136.19,323.263) rotate(90)">		<title>Sheet.258</title>		<path d="M0 447.24 L61.12 447.24" class="st10"></path>	</g>	<g id="shape259-589" v:mid="259" v:groupcontext="shape" transform="translate(568,-54.2857)">		<title>Sheet.259</title>		<path d="M0 424.12 L0 424.48 L0 447.24 L132 447.24 L132 421.66" class="st13"></path>	</g>	<g id="shape274-594" v:mid="274" v:groupcontext="shape" transform="translate(800,-214.952)">		<title>Sheet.274</title>		<path d="M22.17 447.24 L21.81 447.24 L16.19 447.24 L0 447.24 L0 398.62" class="st13"></path>	</g>	<g id="shape275-599" v:mid="275" v:groupcontext="shape" transform="translate(780.302,-190.745)">		<title>Sheet.275</title>		<path d="M0 392.24 L0 447.24 L51.77 447.24" class="st10"></path>	</g>	<g id="shape61-602" v:mid="61" v:groupcontext="shape" transform="translate(828.375,-171.12)">		<title>Rectangle.61</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="392.24" width="79.625" height="55" class="st1"></rect>	</g>	<g id="shape267-604" v:mid="267" v:groupcontext="shape" transform="translate(828.375,-208.571)">		<title>Sheet.267</title>		<desc>GPIO-CC PASSTHRU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.8125" cy="440.24" width="79.63" height="14"></v:textrect>		<rect x="0" y="433.24" width="79.625" height="14" class="st6"></rect>		<text x="4.81" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO-CC PASSTHRU</text>		</g>	<g id="shape268-607" v:mid="268" v:groupcontext="shape" transform="translate(828.375,-198.571)">		<title>Sheet.268</title>		<desc>GPIO-EE PASSTHRU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.8125" cy="440.24" width="79.63" height="14"></v:textrect>		<rect x="0" y="433.24" width="79.625" height="14" class="st6"></rect>		<text x="5.2" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO-EE PASSTHRU</text>		</g>	<g id="shape269-610" v:mid="269" v:groupcontext="shape" transform="translate(828.375,-186.19)">		<title>Sheet.269</title>		<desc>GPIO-DD PASSTHRU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.4375" cy="440.24" width="80.88" height="14"></v:textrect>		<rect x="0" y="433.24" width="80.875" height="14" class="st6"></rect>		<text x="5.43" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO-DD PASSTHRU</text>		</g>	<g id="shape272-613" v:mid="272" v:groupcontext="shape" transform="translate(827.899,-174.93)">		<title>Sheet.272</title>		<desc>HS PASSTHRU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="39.8125" cy="442.8" width="79.63" height="8.88"></v:textrect>		<rect x="0" y="438.36" width="79.625" height="8.88" class="st6"></rect>		<text x="11.36" y="445.2" class="st20" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>HS PASSTHRU</text>		</g>	<g id="shape129-616" v:mid="129" v:groupcontext="shape" transform="translate(192.742,549.86) rotate(180)">		<title>Sheet.129</title>		<path d="M6.21 447.24 L6.57 447.24 L46.32 447.24" class="st13"></path>	</g>	<g id="shape276-621" v:mid="276" v:groupcontext="shape" transform="translate(143.375,-296)">		<title>Sheet.276</title>		<desc>CLK_REQ_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.375" cy="440.24" width="52.76" height="14"></v:textrect>		<rect x="0" y="433.24" width="52.75" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="4.58926" y="436.04" width="43.5718" height="8.39987" class="st14"></rect>		<text x="6.53" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CLK_REQ_N</text>		</g>	<g id="shape279-625" v:mid="279" v:groupcontext="shape" transform="translate(322,-299.352)">		<title>Sheet.279</title>		<desc>RST_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18.1875" cy="440.24" width="36.38" height="14"></v:textrect>		<rect x="0" y="433.24" width="36.375" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="6.71347" y="436.04" width="22.948" height="8.39987" class="st14"></rect>		<text x="6.71" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST_N</text>		</g>	<g id="shape281-629" v:mid="281" v:groupcontext="shape" transform="translate(536.034,800.929) rotate(180)">		<title>Sheet.281</title>		<path d="M0 447.24 L11.59 447.24" class="st11"></path>	</g>	<g id="shape282-634" v:mid="282" v:groupcontext="shape" transform="translate(787.615,213.62) rotate(90)">		<title>Sheet.282</title>		<path d="M0 447.24 L25.34 447.24" class="st10"></path>	</g>	<g id="shape283-637" v:mid="283" v:groupcontext="shape" transform="translate(238.273,-33)">		<title>Sheet.283</title>		<desc>WAKE_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.375" cy="440.24" width="52.76" height="14"></v:textrect>		<rect x="0" y="433.24" width="52.75" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="11.5941" y="436.04" width="29.5617" height="8.39987" class="st14"></rect>		<text x="11.59" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>WAKE_N</text>		</g>	<g id="shape284-641" v:mid="284" v:groupcontext="shape" transform="translate(659.25,-30.9524)">		<title>Sheet.284</title>		<desc>WAKE_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.375" cy="440.24" width="52.76" height="14"></v:textrect>		<rect x="0" y="433.24" width="52.75" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="11.5941" y="436.04" width="29.5617" height="8.39987" class="st14"></rect>		<text x="11.59" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>WAKE_N</text>		</g>	<g id="shape288-645" v:mid="288" v:groupcontext="shape" transform="translate(531.494,-376.052)">		<title>Circle</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape289-647" v:mid="289" v:groupcontext="shape" transform="translate(338.375,-204.283)">		<title>Circle.289</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape290-649" v:mid="290" v:groupcontext="shape" transform="translate(304.476,-304.571)">		<title>Circle.290</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape291-651" v:mid="291" v:groupcontext="shape" transform="translate(182,-326)">		<title>Circle.291</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape292-653" v:mid="292" v:groupcontext="shape" transform="translate(582.476,-145.524)">		<title>Circle.292</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape293-655" v:mid="293" v:groupcontext="shape" transform="translate(590,-131.714)">		<title>Circle.293</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape294-657" v:mid="294" v:groupcontext="shape" transform="translate(531.518,-157.715)">		<title>Circle.294</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape295-659" v:mid="295" v:groupcontext="shape" transform="translate(698,-78)">		<title>Circle.295</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape296-661" v:mid="296" v:groupcontext="shape" transform="translate(680.875,-140.852)">		<title>Sheet.296</title>		<path d="M0 447.24 L5.79 447.24" class="st10"></path>	</g>	<g id="shape298-664" v:mid="298" v:groupcontext="shape" transform="translate(239.427,306.388) rotate(-90)">		<title>Sheet.298</title>		<path d="M0 447.24 L16.29 447.24" class="st10"></path>	</g>	<g id="shape299-667" v:mid="299" v:groupcontext="shape" transform="translate(703.631,737.291) rotate(179.839)">		<title>Sheet.299</title>		<path d="M0 447.24 L15.71 447.24" class="st10"></path>	</g>	<g id="shape300-670" v:mid="300" v:groupcontext="shape" transform="translate(690.476,-162.857)">		<title>Circle.300</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape302-672" v:mid="302" v:groupcontext="shape" transform="translate(790,-205.524)">		<title>Circle.302</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape303-674" v:mid="303" v:groupcontext="shape" transform="translate(806,-205.048)">		<title>Circle.303</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape304-676" v:mid="304" v:groupcontext="shape" transform="translate(798,-261.429)">		<title>Circle.304</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape305-678" v:mid="305" v:groupcontext="shape" transform="translate(782,-286.19)">		<title>Circle.305</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape306-680" v:mid="306" v:groupcontext="shape" transform="translate(774.667,-344.571)">		<title>Circle.306</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape307-682" v:mid="307" v:groupcontext="shape" transform="translate(804,-55.0476)">		<title>Circle.307</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape308-684" v:mid="308" v:groupcontext="shape" transform="translate(595.048,-307.143)">		<title>Circle.308</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape309-686" v:mid="309" v:groupcontext="shape" transform="translate(599.048,-322.286)">		<title>Circle.309</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape310-688" v:mid="310" v:groupcontext="shape" transform="translate(702,-241.714)">		<title>Circle.310</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape311-690" v:mid="311" v:groupcontext="shape" transform="translate(688,-285.619)">		<title>Circle.311</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 445.24 A2 2 0 0 1 4 445.24 A2 2 0 0 1 0 445.24 Z" class="st21"></path>	</g>	<g id="shape312-692" v:mid="312" v:groupcontext="shape" transform="translate(144,-321)">		<title>Sheet.312</title>		<desc>RST_N</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18.1875" cy="440.24" width="36.38" height="14"></v:textrect>		<rect x="0" y="433.24" width="36.375" height="14" class="st6"></rect>		<rect v:rectcontext="textBkgnd" x="6.71347" y="436.04" width="22.948" height="8.39987" class="st14"></rect>		<text x="6.71" y="442.34" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RST_N</text>		</g>	<g id="shape313-696" v:mid="313" v:groupcontext="shape" transform="translate(100,-154)">		<title>Sheet.313</title>		<desc>LGA pattern</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="37" cy="349.24" width="74.01" height="196" transform="rotate(-90)"></v:textrect>		<rect x="0" y="251.24" width="74" height="196" class="st6"></rect>		<text x="-381.59" y="40.6" transform="rotate(-90)" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>LGA pattern</text>		</g>	<g id="shape314-699" v:mid="314" v:groupcontext="shape" transform="translate(332.757,-160)">		<title>Sheet.314</title>		<desc>500 pin connector</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="53.8594" cy="349.24" width="107.72" height="196" transform="rotate(-90)"></v:textrect>		<rect x="0" y="251.24" width="107.719" height="196" class="st6"></rect>		<text x="-396.94" y="57.46" transform="rotate(-90)" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>500 pin connector</text>		</g>	<g id="shape315-702" v:mid="315" v:groupcontext="shape" transform="translate(456,-164)">		<title>Sheet.315</title>		<desc>HS/LS connectors</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="53.8594" cy="349.24" width="107.72" height="196" transform="rotate(-90)"></v:textrect>		<rect x="0" y="251.24" width="107.719" height="196" class="st6"></rect>		<text x="-397.6" y="57.46" transform="rotate(-90)" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>HS/LS connectors</text>		</g></g>
</svg>

To initiate the link training and enumeration for all endpoints, do the following:
1. To reset the QPS615 switch, toggle the RESX GPIOs for both QPS615 #1 and QPS615
                    #2.
2. To control the endpoint reset, trigger PERST. Both the switches share the
                    PERST.

The devices can be attached directly to the QPS615 switch. The PCIe RC0 is attached to
            the WLAN endpoint. The following differences are due to the PCIe node hierarchy.
- Switch-attached devices:
    - The QPS615 PCIe tree node hierarchy is statically fixed.
    - All nodes for switching USP and DSP ports are created during PCIe
                            initialization.
    - One of the switch DSP ports represents WLAN.
    - If you disable the WLAN node, it disables the WLAN device, but the PCIe
                            downstream port remains enabled and returns a default maximum link
                            width.
- Direct attach WLAN devices:
    - Disables only a single node.
    - Returns the <samp class="ph systemoutput">Invalid</samp> argument, when WLAN is
                            disabled.

## Enable NVMe over PCIe

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

This section describes how to enable NVMe over PCIe for storage expansion. To verify if
            NVMe is connected, do the following:

1. To display PCIe device information, run the following
                    command.

        lspciCopy to clipboard

Output:

        0000:00:00.0 PCI bridge: Qualcomm Device 01150000:01:00.0 Network controller: Qualcomm QCNFA765 Wireless Network Adapter (rev 01)0001:00:00.0 PCI bridge: Qualcomm Device 01150001:01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PROCopy to clipboard
2. Locate the PCIe
                    logs.

        dmesg | grep pcieCopy to clipboard

Output:

        [    0.000000] Kernel command line:  root=/dev/disk/by-partlabel/system rw rootwait console=ttyMSM0,115200n8 
        pcie_pme=nomsi net.ifnames=0 pci=noaer kpti=off kasan=off kasan.stacktrace=off swiotlb=128 earlycon reboot=panic_warm page_owner=on qcom_scm.download_mode=1 slub_debug=FZP,
        zs_handle,zspage;FZPU mitigations=auto kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 no-steal-acc vfio_iommu_type1.allow_unsafe_interrupts=1 fw_devlink.strict=1[    3.842071] qcom-pcie 1c00000.pci: supply vdda not found, using dummy regulator[    3.845339] qcom-pcie 1c10000.pci: supply vdda not found, using dummy regulator[    3.845428] qcom-pcie 1c10000.pci: supply vddpe-3v3 not found, using dummy regulator[    3.845508] qcom-pcie 1c10000.pci: host bridge /pci@1c10000 ranges:[    3.845519] qcom-pcie 1c10000.pci:       IO 0x0060200000..0x00602fffff -> 0x0000000000[    3.845526] qcom-pcie 1c10000.pci:      MEM 0x0060300000..0x007fffffff -> 0x0060300000[    3.848154] qcom-pcie 1c00000.pci: supply vddpe-3v3 not found, using dummy regulator[    3.854556] qcom-pcie 1c00000.pci: host bridge /pci@1c00000 ranges:[    3.860574] qcom-pcie 1c00000.pci:       IO 0x0040200000..0x00402fffff -> 0x0000000000[    3.867362] qcom-pcie 1c00000.pci:      MEM 0x0040300000..0x005fffffff -> 0x0040300000[    3.963275] qcom-pcie 1c10000.pci: iATU: unroll T, 32 ob, 8 ib, align 4K, limit 1024G[    3.990385] qcom-pcie 1c00000.pci: iATU: unroll T, 32 ob, 8 ib, align 4K, limit 1024G[    4.072091] qcom-pcie 1c10000.pci: PCIe Gen.4 x2 link up[    4.080241] qcom-pcie 1c10000.pci: PCI host bridge to bus 0001:00[    4.291824] pcieport 0001:00:00.0: Adding to iommu group 9[    4.551677] pcieport 0001:00:00.0: PME: Signaling with IRQ 256[    4.572484] WARNING: CPU: 3 PID: 89 at drivers/pci/controller/dwc/pcie-qcom.c:1430 qcom_pcie_icc_update+0xf8/0x144[    4.595291] pc : qcom_pcie_icc_update+0xf8/0x144[    4.595293] lr : qcom_pcie_icc_update+0x9c/0x144[    4.640742]  qcom_pcie_icc_update+0xf8/0x144[    4.640745]  qcom_pcie_probe+0x234/0x30c[    4.988519] qcom-pcie 1c00000.pci: Phy link never came up[    5.302179] qcom-pcie 1c00000.pci: PCI host bridge to bus 0000:00[    5.372008] pcieport 0000:00:00.0: Adding to iommu group 10[    5.378905] pcieport 0000:00:00.0: PME: Signaling with IRQ 257[   11.564590] pcieport 0000:00:00.0: BAR 14: assigned [mem 0x40400000-0x405fffff]Copy to clipboard
3. To locate the NVMe directories, run the following
                    command.

        ls -lh /dev/nvme*Copy to clipboard

Output:

        crw-------. 1 root root 508,  0 Jan  1 00:00 /dev/nvme0brw-rw----. 1 root disk 259, 30 Jan  1 00:00 /dev/nvme0n1Copy to clipboard

## PCIe client driver sample

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

The client driver defines the `device-id` table and
                `pci_driver` structures, and registers with the PCIe framework. The
            following are a few PCIe client driver samples for reference.

- Sample data structure to hold client-specific private
                data.

        struct sample_driver_data {
            int driver_data;
        };Copy to clipboard
- Sample driver: You can provide data according to your driver-specific data
                structure.

        struct sample_driver_data info = {};Copy to clipboard
- Sample device ID table with the driver-specific data. The client driver registers
                with the `0x306` device
                    ID.

        static const struct pci_device_id sample_pci_id_table[] = {
            { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0306, PCI_VENDOR_ID_QCOM, 0x010c),
                .driver_data = (kernel_ulong_t) &info },
            {  } 
        };
        MODULE_DEVICE_TABLE(pci, sample_pci_id_table);Copy to clipboard

Note: `MODULE_DEVICE_TABLE(pci,
                        sample_pci_id_table);` is mandatory.
- Sample `pci_driver` data structure with client driver name,
                    `pci-id` table, and callbacks. The pointer to this structure is
                passed while registering with the PCI frame
                work.

        static struct pci_driver sample_pci_driver = {
              .name           = "Sample-PCI-Client-driver",        /* Give the name that suites your driver description */
              .id_table       = sample_pci_id_table,               /* pci core driver will compare from ids's supplied in this table with the enumerated endpoints */
              .probe          = sample_pci_probe,                  /* probe function is invoked by the PCI f/w when id matches with the endpoint id's */
              .remove         = sample_pci_remove,                 /* Remove function is invoked by PCI f/w when senses the attached endpoint/function is detached or down */
              .driver.pm      = &sample_pci_pm_ops                 /* pm ops that will be called from the pci core driver*/
        };Copy to clipboard
- To register with PCI firmware, call
                    `pci_register_driver(&sample_pci_driver)` from
                    `module_init()`.

        module_pci_driver(sample_pci_driver);Copy to clipboard

## PCIe bringup

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

For information about PCIe bringup, see [PCIe-related configurations](https://docs.qualcomm.com/doc/80-70018-8/topic/pcie.html#pcie-software-support-feature-for-qps615__section_xbl_hhd_l1c) and [QPS615 switch support](https://docs.qualcomm.com/doc/80-70018-8/topic/pcie.html#pcie-software-support-feature-for-qps615__section_nmw_5jd_l1c).

## PCIe power optimization

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

PCIe defines two types of power management methods.
- Power management software that determines the power management capability of
                    each device and manages each device individually
- System that doesn't require software intervention such as active state power
                    management (ASPM)

During a time period when no packet is transmitted over the link, a device places the
            link into a power-saving state.

### PCIe L0 link states

PCIe power management defines the following L0 link states:
- L0: active state where all PCIe transactions and other operations are
                        enabled
- L0s: ASPM state with low-resume latency (energy saving standby state)

### PCIe device states

PCIe power management defines the following
                    device states:

- D0 (mandatory): The device is in full ON state, where there are two
                        substates
    - D0<sub class="ph sub">uninitialized</sub>: The function is present in the
                                D0<sub class="ph sub">uninitialized</sub> state after the device comes out of
                            reset, waiting to be enumerated and configured.
    - D0<sub class="ph sub">active</sub>
        - The function is present in the D0<sub class="ph sub">active</sub> state
                                    following the completion of the enumeration and configuration
                                    process.
        - The function enters the D0<sub class="ph sub">active</sub> state when the
                                    system software enables one or more (in any combination)
                                    function parameters, such as memory space enable, I/O space
                                    enable, or BME bits.
- D1 (optional): light-sleep state
    - The function can't initiate a TLP except for the PME message
    - The function can't act as the target of transactions other than for
                            configuration transactions.
    - The function issues a software command to enter the D1 state by
                            programming the PM control and status register.
- D2 (optional): deep-sleep state
    - The function can't initiate a TLP except for the PME message
    - The function can't act as the target of transactions other than
                            configuration transactions.
    - The function issues a software command to enter the D2 state by
                            programming the PM control and status register.
- D3 (mandatory): device is the lowest power state, where the function must
                    support both the D3 states
- D3<sub class="ph sub">hot</sub>
    - The function can't initiate a TLP except for the PME message.
    - The function can't act as the target of transactions other than
                            configuration transactions.
    - The function issues a software command to enter the D3<sub class="ph sub">hot</sub>
                            state by programming the power state field.
- D3<sub class="ph sub">cold</sub>: device enters the D3<sub class="ph sub">cold</sub> state and power is
                    removed; when power is restored, the device enters the
                        D0<sub class="ph sub">uninitialized</sub> state.

## PCIe verification

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

For information about PCIe verification, see [PCIe-related configurations](https://docs.qualcomm.com/doc/80-70018-8/topic/pcie.html#pcie-software-support-feature-for-qps615__section_xbl_hhd_l1c) and [QPS615 switch support](https://docs.qualcomm.com/doc/80-70018-8/topic/pcie.html#pcie-software-support-feature-for-qps615__section_nmw_5jd_l1c).

## Debug PCIe issues

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

The `lspci` and `setpci` commands are native to Linux
            distributions. These commands have various levels of output. These commands also provide
            a useful point-in-time look at the capabilities and status of the different components
            trained on the PCI bus. Most of these capabilities are reflections of the configuration
            space registers required by the PCIe base specification. For more details, see [https://pcisig.com/specifications](https://pcisig.com/specifications). To view
            the usage instructions, run the following command.

    lspci --helpCopy to clipboard

The following features are useful in troubleshooting PCIe issues.
- Display device information

        lspciCopy to clipboard

The following message is
                        displayed.

        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
- Display PCIe device and vendor IDs in the device control
                        register.

        lspci -nvmmCopy to clipboard

The
                        following message is displayed.

        Slot:   0001:00:00.0
        Class:  0604
        Vendor: 17cb
        Device: 010b
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0
        IOMMUGroup:     33
         
        Slot:   0001:01:00.0
        Class:  0604
        Vendor: 1179
        Device: 0623
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0/pcie1_bus1_dev0_fn0
        IOMMUGroup:     33
         
        Slot:   0001:02:01.0
        Class:  0604
        Vendor: 1179
        Device: 0623
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0/pcie1_bus1_dev0_fn0/pcie1_bus2_dev1_fn0
        IOMMUGroup:     33
         
        Slot:   0001:02:02.0
        Class:  0604
        Vendor: 1179
        Device: 0623
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0/pcie1_bus1_dev0_fn0/pcie1_bus2_dev2_fn0
        IOMMUGroup:     33
         
        Slot:   0001:02:03.0
        Class:  0604
        Vendor: 1179
        Device: 0623
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0/pcie1_bus1_dev0_fn0/pcie1_bus2_dev3_fn0
        IOMMUGroup:     33
         
        Slot:   0001:04:00.0
        Class:  0c03
        Vendor: 1912
        Device: 0014
        Rev:    03
        ProgIf: 30
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0/pcie1_bus1_dev0_fn0/pcie1_bus2_dev2_fn0/pcie1_bus4_dev0_fn0
        IOMMUGroup:     33
         
        Slot:   0001:05:00.0
        Class:  0200
        Vendor: 1179
        Device: 0220
        SVendor:        1179
        SDevice:        0001
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0/pcie1_bus1_dev0_fn0/pcie1_bus2_dev3_fn0/qps615_eth0,qps615_eth0@pcie1_rp
        IOMMUGroup:     33
         
        Slot:   0001:05:00.1
        Class:  0200
        Vendor: 1179
        Device: 0220
        SVendor:        1179
        SDevice:        0001
        DTNode: /sys/firmware/devicetree/base/soc@0/pci@1c08000/pcie@0/pcie1_bus1_dev0_fn0/pcie1_bus2_dev3_fn0/qps615_eth1,qps615_eth1@pcie1_rp
        IOMMUGroup:     33Copy to clipboard

For more info on PCIe debugging, see [https://www.kernel.org/doc/html/v4.17/driver-api/pci.html](https://www.kernel.org/doc/html/v4.17/driver-api/pci.html).

## PCIe examples

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

For information about the upstream device tree reference, see the following files.
- QCS6490 and QCS5430: [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)
- QCS9075: [https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sa8775p.dtsi](https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sa8775p.dtsi)
- [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)

For information about device-tree node for the Qualcomm Linux hardware SoCs, see the
            following DTSI files.
- QCS6490 and QCS5430: [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)
- QCS9075: [https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sa8775p.dtsi](https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sa8775p.dtsi)

### Client and PCI driver operation flow example

The following figure shows the sequence that the PCIe client driver follows to
                configure the PCIe driver for a client.
![](data:image/png;base64,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)

### Client and PCI driver high-level call flow example

The following figure shows the high-level call flow and call details between the PCIe
                client driver and PCIe driver.
![](data:image/png;base64,UklGRuh5AABXRUJQVlA4TNt5AAAv8QGvAFUL47ZtJFn9tz2zuz72HxGK3LZtolP2aF+hj7BGps7VZBJht/gilivSIfYMk4W6f8PDv3tGQjDKUSdgsoOsYqcN8fVXU+jXeRpr0pWHtQOyqj6+S+EvBU6feRv+jXgx2/bqktzml+N/+MNH/+E6XIfrcB0u53W4fOR1ZKzD5bwO1+E6XM7rcB2uw3W4DpfzOlyH63AdLvhoHS7ndfaj/n/9/95V3ereP5gmlCNDt3NoVDnOODfTMAzVitst1IgYqJ09bq3tMCOncupRnAHYxK5RN/eoAQaFv1BMDQblHLsGjA7MoaZnYDTgVMpqEsicTcw42wqzMdrKOYyVUxNpBj4TMeppOuxiasZWYC6lZs4EZnpIbIMjF3ML7rFyYkA7Moyn6UAMCTEUMK0cWxjmUMrjRlvOcezarimimTPQlFM7t+BWzgz/NiYoZ2msEj3KmZldxs8cHJpEz7QZSqHHsak0yjMuYsBMYtDMmXydSlmMCgxVzkN0K4upMGq6mTMJsxhGQimrgFbOqTaInNXOiSisUVY5MpOgqxngcfaMssZ0aOWctnLOUo9zKeecA7WpZdsmSZJ0x1ia1jJWxspYG/muNtbOxrUHDJjaEzacnzKwtCdMmNpDLIb5YX52P6usmTWz0mqtVcsAQI4k6U6wifeepAmhCdkNdsE2ZS/ZpXzBgg0bLvx+yjEtHNiwYYnlIeXHcmVjZeNYrGysbCzrPyVEkiRJkhj44knl4LUdfUVXZf6xSNv2SLqcgQc2bNiwYcOCBQs2bFiwYcGGBRsWLNiwYcGCDQsmLJiwYcNmHZP5fV9W99/d9X0T//w1js9soBYw0LJk49nwjOoxdEaOJpO3VP1HyqKhI6hSCAu3fC5B2kAKe2kcO7uQ3cZfYkIHy+dZgrxXQVkmZFPeC4qm3BgoajOE3GHCc1IeeYOTSVQb6ITDhX4kLy3Ae4OEfC1i4B8qUe9FSy+SN9iloF2By4izB3kpxbUDlxEHCgu5jJJBB4n5lF+C+DCFuJCg9+asQY62pG77HLbNx3Jsx3IsB49VUNDQMNAwf15hoaGgoMYENSaoMQ1N5rbPgSR9WHZlG5uyDQZjFxwcXNw/63DxcHCwMRgMZqzO6qyw/7IQ2w7b6BwwSNjF5d2ngrIb/acA2iMpWD/G3/hLP+vvy0+2/dOf8M//2s/z3/4MypMU7B/5H9NP82d/K/W/AeDnx//3E739e/af/WOoeOTnoP+Cvf3Ln+XfDQBIwX/7cf7BP/8Jvv/Nny//BKbKEvvNX2ICCErG2Y03h4LRRQYxAMJCg3Ycyzg1m/saLCVZ2E8I9WslOhtTFJtykF8vubiUBJt8H0Ep+BK7keg99QMA/EvJHMqpU99S8I3cMw7KZCES8pSiIZuCoAGZQsNJ6g9yspeYi0OJydaPfwIAKfguNpdSilNpYr/5+6n/BBYbQqEdypljc3iOMM20aQfFAdqc+QGgwO4Ly+YGgVvgw+q3R9UuPrhos5OSOKAULZLVJIA2MsVxknUmoJAkPrUIYH1ebfxZ7Vi6GCAail9dIheProjxp4LNRmLZ6ydTd1ubPtS/JGepBuCszqKpVcn6lPr2Q+pPzMmqTLYUp0Y+lFuQ5lIyHG3b9fMFADRxnIDAhsG++zcnL8A3lEOl9uSDmAZ0Hanv4L5uGsgJsmTjDG3aaBv8mz/OAmQl77L7gFAqpxBi8r0DgClrN9OpbSaLHf8gbu9ENC9fwX31pBU3j9QHAKTgj/32KPUHvdirQHupSx8BUbYn8e3CVk99A86Mf7ZgccniBurZDJ0xoqdntCtefPv+pVhz9n7osuPSvYGy7WTdnHCM0jo+GroTKNYiyiKZtCpM3cKCZdqJBHMqALTjJbBtClP9C5Bq2qkA/sUQI2uyrjvOdfeKWpxQPxrw269UNMlmstBe8vSJEAstIbhH6/OFFvMjM++ZbW1tC+wyxH7z1zgHgoFJdbJwsSDjZHrzRCmXQLN/j1nAfbWkVA6m7DgincQBIFTa1E/HTQXBnH6OIF1XHMqaH9PNF8ScneA0hx0j156NVROfY9q4MBfAUMYR1CET+F8OmHr1YFxm3ERZourM4qUndiCTRmIUwrMDmF8uzMVJSjeKGhZHTZqDO6GoTUJvLoyh2BUHZJI4iARJrZF5r+Lo492G2G9+8U7wAH148V6KEifOW2MA1xdSdy/AA/ALAFLwe/JrEdmHZLFpJ4mMJc2DK3NaK6d2/8eJed6hM8hkS0j3BjQ3e5hTu5J1f7uDo+cVL5RnjzK8DHRLZUpzsw8AYH+aWEouDfT2pAF67k+zeaf24ubBG//eIrvOACAFP3RxVEyYrALIFTrabqazZG9LCh5gFBUBDN04guCkIMjJXu0Mr4ppzhYP0Io6BnRn1JnR1o9gUYKMnSJhIJxZQLMrBkBM7ehh0LI3P0AFOo2pXU+qBqDANyMSlAIFSndOH5Z1MYEDVEA3EGARrJHoKHAlqbJptmIEiN9rvBcnLHnnAXrh2o5diJ/1L/3FEgCAzWEANM1S3TQabIqmJqsoAgAHs6nJSSwYhKO7WIVRtYHQZAD5CQ6GXQQOlpUEDmWTBRQBuBRNT7SYU+S9pFlYDG0sOwhWb7ITI3AxmpoMwL/MorKDp1aFV2uARADQYmE2Ldmxi5VYOcjEamoaHfhgmUAWlBevLqZZHMEqJxv5kAbCrgHWaGq69m+tWb4HMLgt/7lUHAZ741fBYPFLCxJ9UcbGKoOqLoG/68NBERYhVFxqIgsAEK3Cro9TgTp4rsrYuABey39a/nNiJ8LB7WfQpMEQCn0rj1Fu/qVG5eBfYHD7P7/mKPfzqQSAllEVMPtlT26q5IssJQ9DpbSUcw6VanTGCIlbqVymUZNLNrs1BZy3jcmtJqBOFFhbKhgDoSG+tgjoBLuUemCOpcS3YJ20lKiaRfTWazl00YCiCz5z2Lv81BzML5PIszEH7yVE4CFlnKtqWIsBYAm80UoAdYpwMTiKiHVgALgFaUjFC/86M9gCWR5V8tuvs9e13CoPjG59ac4P8qTKjIGI3mvK93XDLYxUm/Jj5OC8TYLbnaqymZCiLsaFzGNR0HDaYNygbN0pU/98AbDJxKRyzewCgsxhTi6/KgcwgtxxsTpmWwLvfUgFD0A5/BckyV5zpVUQzW4/FNUJBLJKWwKy2P+GYaHV/QkC7TEGT5xxuO7IkMeRaVcvUONNYg2XllQqbFw5CXhg6CI4RZYYGc33F+fNEnKYFfxT94BpoEF88B4Q7S8bxxRnq0wjqfvxUs1FegUc7XMHgD18ILDECcbhjEsDwJdPEJEBewRFXQ1NwRdGxKvXPTAgpe0yqzWC+7oYag0Wbwa0aIrxUxzaHDfZLhQLK1SOtnduMK2BEuqjRQAurpdFALEcRJ6p798V2zghASnNZvLG/JypQLetR8X6H1J/BA7ZDQ4XZverBN1EAYZsHZQh9M/62UZQtp+1OAMXamchGuP7EdVTv/3jDz8QmaC5hAKlWD6cXNy3nRZVnEjAEZ9nTHlkPjO7dCQ7ukXp5eCQ80GpH984jr4WbwFbtKUxXHscQ6Ck4CtlNMaH4AHGSOrKFADwXpJmdsebxsCJWeOjrlN4HDbZ64BMQfRwnbwXownGBHRjk/zapGHfgJZfv3eL0Ex/NoDulLXUrwALUJa2C/AYEw1eFPfUb8EMiitAgSOfRdMnF81LVDRvpZ0oU9ipDYZNNO41UOB6Hl4obXsRBw2r3te/BKNuR6F7bDAXRsMpj/U/pP7oO72VcbbQEDLJBNfUB9hsGNxqAjS7uHGWLL5wpmAJf41KizYfHAoU+pRQsiXej3bW4Atm8jCyqa72D+q7cF8XVs3zV+OnZxwgATCUHK2WJ7OTZDPJW1o1ITsOtzeR5rytmOHQoWiou1AW3yMAhHvWj2FA6bbFozGdnPPDWq8DspotZcQUh6KJqy5BGK0UUEXJThQMHao+epD55VqkEQRDc7FiqdDSn0OitJwBQOK0JgkNZE5riARmO6cFm4GJ9qkGupON951uDJoxwKFDscA5lP4uzi6251bdV1vci8CaOOMDgKoWZxg6NAF3owzhTBYaQw6un8r3pTxHjiaU1BIEcQRmaKYxdHG/nO3Y7IjE0KET1AemLtYfUTY+UGog2NKWuq+T4uYHAKTgC2HIFQiFfQNr6DOLY7i0k3Y+zCKk0YoAEACWLMJvaoafhu8quDRmiO9HULAAgCBbXQLdNRAb7QNV8VzmFAAIKDC7m6cCGGLSAKZ1B40e40WOBoB5pUgODou3+BBOcaY0ScKYnK3AbrnVgrAZkeePQKt5/goAC9CaGPfPseTiqT/6Ru11eKGqbJDxriWAYKPaxY6jZMozUPAufT3cDOFoQzbnHArk2pAWwbZ0P9pxKVjAmabQ9y2nzfiWDDkp+Y0ZGr9iMuftpNjFdguiBUqAAnBLUj++cxbDUEDJNdqSG0VtNiyJhzexiu4X4eo5aGIY1TB6yuigubFrSKulfvzg2hKXQprDOyHEBu+hDA4nKTUMBdJmSx9eA1MYNswcPwcsSuZ4GIDxuKQy+tzEvoXVSwDgcOAYxtn9iyFbSbND2ktEqaTnyAIuWmIjFFQBJ+j0szTdCOMwsmgl4HRxR4+WXPzxP3yy4TDx7BsTdaIFw+h5NAZ4WHS7jkqZeFJpIWsLreHPYsWHYajCwPCHcryGMZO9em0n1GQf1bBp7hu/OWbo86CmdLEPYH+6KOwNq3NA/gKYEuQlykNhKixVWABHNyiCRRlKpoABkFyKUwY21VTb/WzWoAaqzQF77+7qVpAyHQaqj5ui6pgeYoLaFXUF7aEV0zXZCyN7RWSvhex10NLS0iOdAQMGjE1ny1vu37//2muvPfPMMy+++MiRI2eYoV+/PxrNQjsH5nBomu12ezTq9/uyHAhalqUIhmFoC6qqqkaijqgmGou6sTIDzQxDQl/alKhO1MNMcLuYLmaMqCEGPpBjg8siszByLI2ZFw8ujuDqCC6PhRfOvTYCKyPHugguiqwVEXh6PXv2DDxtT1AXTAV9UcMwjuE9iaX60GTwI7HESKMhhqI2pooaSes0oPRraYTuRCeQ5CWYywcyT3YmBdOcndpgYCohrq3qTegWQ2w9anlGVnxg6ccMD/nJTI0eeQbQK98RW2dNuTDbO7OkmOFQOYVROaTgy6ZWAYAq1hwft8ayWOwYypvI+yyVAdtJisXkVFNSH1AuBm89qRIACvS+8OxDyi00KNXQUllWZoeGpbRnxv0+2IVQMhdPwTZrVR4DZjy/OMi+ZXM8jpqMKsZCXhBX3aNDjli00nmUXLSP09r6IQ765Yq0PVuF+1B1x6liANjqV3CacYJksr7EvwBDwfKFJh04wPjpamUetalV5iIIMAEsT16CmKdMhsVRc6hJrJPXbba2qmefm7KQHOLSnIFUn9JUuNKE2gMzDGLzBIg1WG4rXmokIJriODwMAYYshsUZxJijix3/cCpoD2VqCr6iDfTFZy6vZsvEgJwgsT+ZJdeEBFsuhoaXkC42TxTVddRl49H8BMIWM0fwK8nuYgonb8kVE1plrgSjOjXkm+PzZqIlGW/7gMnqZsY+7POnW0ggm4tIC2zJSgsgG2hToO57UnOldJYB87PG0BkvuPckhnV+BJDVsnG/HGB9XjFCLHH4Uz4QvV2rWDrx4pXacbEIXVghVeenSpP7I1H4tTGsOA5/AGGmTYUAzWa9PX9aJF1QYDs47XhxDfHeOXP+GDrvp0Ek4Fhb107uyb8fsESi82bhb6ckKndjGdA4PEdd5871KITyCUIHKaeBSQV9KkBIb487RQDUs6UA2pnUcaeJhB3S1/XZhxj2JFy8QICWbKauemvoK4ntlCX1/Qe/rQQcw/drsiW5+ecLwNwZiY1nT7sGy5AsZgtwCXYNL0swI5YsLtV4O7kUJN0E8hcUipwsqhsdtLiU6CW2Y9FmEZYhh47R9ZkkFqL56ZQCm7i47JKD9xK0LMpJCMDUs6S+w65iDPjS0dWsLtplcR7YzUorEN3kpVDzNaFar59MM3i7zZXQ0twc1Q6GQDwEvwAgbG5udtj+mm/XTNpWpg4aDOOaR0HY3AyDmpsHw7hKCKaqefC42rA5gkGDIWweDJmxmqNxowA4u4Sh8CBn6eP52WYasuNQDEhHLypCMIeKY4jBKuTfMDuUI1UG1oABA/40OxHaI2fw3EYX4izcnWX2ATY0i6Ncb5zRAdIxgIo5Fl5LiwkUlYd/AQsyM55d1D7G7X8IJ7m6lcX/h2PLf1r+0/Kflv8cSs2qbq6pAdZgQhvLo6ALFbuMyT2HhRh1AP4FnIRyzhZajO1zQ+sqE+qVFXNZ006K2kt3gziqyOjFbNCJ89ZYlqX0bLfnj2ANhrKT4gwK5SzZNsMG9vDqFVQNxQXKY4HYz2M2qT22mlMKfiNb8xK+Y++cuv3N5VEtOIwqnwLTcd9lG88yrmR/2rcfAYAhdr6bVDmOIQe1PdlxlO/WH72YTTx/DRiYtE81AKDopbtEFRN710crUHtcOABInHu+wZvocQynQhHMUuC6vhSeojfUNjdXAoRXKzkPBhDJXt2gShhUCbWVADCoeXDgWs5B45oHA0DY3FzbzpDMdM3NUeghjmuuDQ02Mak5AqjddmaQUeNGwbjm5qj6QM3NoyBrWACojWBcJQza2POzhzQPBqhqbo7gI9YGn8m4Wr1d3BwdAVpUCal0cG1lWDuouRLC5mbVnu+hFBy6tra5OWxujgL/Gzz0xK0duBLGNY8amLS779VchEGV4UdsDl5w2r8mXQxCsU/pPsoGT3J+cfuszBYBwIvq7WEJFCMZgPsEGE9LkIkC9JL3smnhIQf9bYAze10tvMB3BnDJWaqRHMolCAJcAcWljpb68TXDYb/dkcoUADAk2MKRsvMj/DNDuP7YYB1W6sRoDm211I8/olsTCjgILtXFYCSIQh5kCBSYjaSFHAEhaJ6yMnGqAKEvXoNhHNnvdVWzFRI4i0WFevFqsVFEHBRVtCoAQChamUO6Mz0vPOS2S3sK00tYzFFhJPbkdU7mB2WejRjIYRLQxgAsgly7Acmw4SEHAjhUipIsUlwV2drZHA62SkLfDuPH3ei6yRIOkGZ7Dw4aBThSHQIAsiVX/JwIYjHrw2HC5iEuhQg+kkT6zgp73JhN2bUlziCM/IJfM2FNjGIxWNcGuT20obMSKHvdjuBaVGQxSNuZoV9EF6xDiHonlu2Aam5MIm7TGAoBNhmPGu2E8dYIYMiWQwCk/i6dPTJsc9X8MtpEW+RDCRBeIoDSnspsMG5jDlBk2oXnLfX9a4YpK5n3GgAACc1yhuYU/Jah2UM6W9SNR3wJ2NbdIB+ShXSTNiMlAUCB2dA4W2S0ScTNpo3N03cAWaa2FLZLe/My+agrrmKbaU/ljJyTQtWmeD+CX+H4Z3cp1HSKbx4E2oc/6vnd9rb57Sk9h2ZTeB6Rhwvr45vFfm72kpBp05iS0dX46eLniABAk5BLwwOW5ucWNSyKWHMWUk29E0O5Xe/BkJmMTzWQIUeLFFvCc1Sq7WLOc2Oj4aDifaTg98TX5s43ENrDWAoelMOWsPv2/YtTmo5zGs6HH+ChMQReJmPmxIfXmPd2SBV0FzRvBcqS+cx3GKpnK1DX+dsEGbIQwuHDs5wKstGcsC0ByuSlBQshLiyOWhGA3973A9D9xogEjBKre+rb10Cj24Uhid5SHwDA47aDAQLE/o4GDh8uBL+EFYZUiZlZltw3zIrx3cb9ORuB12uPMD8d/cjThw+qPNud4AnDh993gPtqRA0rwayi99QqhKNlDmv2lB5dagsNGj78rI839vOYDSSd5SEMgjrk1uyFhLRnmjms2fXaVymlaa6g2vxIsGN6nC4EpT78XoT7kdaL2tYGwcO8rIlpBJ+NVQK4l8DaVIIlW8UxxjSB+xo0oRpchBEFz0+UGgDYfFGlnUNF2V8vL6q3Q5sBqQSAAEM3f44IqnhGjrcziOso59osAKj9EqYWLXKNDF2fUt9A6c8ssBMye+qPAEAQn73KLAg0eruY1f18AVgiSAjKYLbizyP18UPs6z3YstNkW/JS0MXY1TxIBvw4vJcgte6Wa3URALAQi70GoMDsW5xkJmvtSSebi4N0nbjfGwFS8DWn1UplcCZSHY2nzk01Tz9kV0SOx8/lnMX7KDCbXVhd4ivZ8ycQ2lNZGpnoNnpufxi+iZIw9jRQBOEBE1itrUi1+5/KeTsi2WtdFgBAUYsztHJLI56jdyg1iyO00s8OABsqzqFgdRwAoWJGrKPR0PnKvfUKAP4FGFmtRJ6p79++WiuzAJfb94r/3K1FjG7l6ILs1jjw7gDAIcco4kCi99SP38jWZ+LbYwMQbbU+JuftJRC9DakSKzuPIDkS0F1/SxcZrBWfR439yYhxb4TVP1cr4TSmWokg99UqjQZ1yK1aW9VHd94sibfUbwMA/Jd40EqvEUfpXFgyTXoOUPp7a+s+/uXE1zYb/GsZ6N671mHd6GfPUFLDA2qjzS9Mhjr0puu7rxZvgISqtLkxVLla48D6EABQNLVQ0HQq9w6aTWacLnqiQQsNcfSw+w86ezUhq5Wfw8WN2L0GBJmOk9yeB5qV5LOxSgQfLdlqbc2PeorOdn66CABeIJQ3zSZArQUA7ZVgU+6lLkuYU2DKHvvTwnHMFP5pvSudEU6KoH0yxQEXsXJKrzsnGyvos9jr+oLFd3ePD8TFnLG9fxzQuUYDgMW5Zdffpizmv8wowOKyk9rzBxiTcHRFlsmbA82ljuNygnJbTlo9AqijLGxngF6n+kcPmSKtoS7MRWuT9x4kmU+fi/V58qHFMvkX4IydSSabGBJg2lKXRhVNPMGBjvZ6oIuFYAF2rHIAo9ABKLlQlaEDNcEthOoJE4oAUP3CwaWccP9poY1BWuihpcVsBBsw8jAsgAkNoUM1aQs20GIT9hkBQJctTOgIj300E/YZdVkQqva57QetnuAkdZlgF0fwWid8/GLV0f2NZ96y/IQFC6o45/Txi1VbmDAaChbBx1dtZRS28PFFjelhsQl2QfFYFoSWeaocIBh0hhM6gkM5wQKKQptqgpMUMO5BYbEJb3gx2Ra/dJaWX2PCFiqQ6r7mRGwWFxcKIptYIGBek4ebZrriagbId9jSGEOdK+wvFbqVtIGYeFyCHyUAtT3kZ1+HbHUHt4wjzAFVCicmKYZeASP791eLbXRCWErg2VjvfiZxcy5FwsQU+YT+NNZEgMJfKACdoFBaOeK3laBoQHehLltIBUuMXIcfyQhIk0RMoohFkSCTquflvPmrvlVa/Rgc3ijr/7NHg1MsFBG4ZD+Ct6CClAIvi92CTxbRqepDdH3QJf800TJD1cf5/tOYkbLUvxijIBVwlNsw7MllK9pkn8mWxdBRUmTyhQeQQTez2lcnNe/W5sUE9d9jsEgpPgTP+dXVQguDVaNCZjckOKD+RnJU4VEDd8sovP+cDSav15OC32htDd5LPjnfgafobdNiUSu3NCa9d5eCH7pdbwTqGM2VMgyd/PsRbOro5jsLBTQ3KRTb1o8BdWR3eyFxW9b8CJLOU4drMyYDzEXR0dhFSPAKJdyWcwtnsGwQZc0/Xwr0vs3RgNt+Vc8m9Yd6dEjBP3sHPwLVe+obAED357+jzUiTwHkzYp01wPWHNQG56Zyg9pWWgq9b21m60fslzRY5FGLAAgxVZ7mZ5G2uc0x9fEH31hWqXoRx/gI3T9Oh84XUvQayeOjfwS0C0NslzR7Ny4dWhBrP2yr2Z6/XWwnT7utElFbr9882KBrKFNmmPhW25AbQfW0AoLQLW8wA9BOShmSodpWhwHU3nr9A4ZlZi56jPX6CU95jgPX5QoCZgn6Cs1/QTng/HyXLMy0w+7LOj3BQ9VRumwv16yelOLTTdAmmikZAsGVYspFkJqEfW2BlJbe2fuCw92KJ3jOU/sSSH7WfvBgETnMh3eJTzHWOHiyk9a6Qgm/U7mRwv35StdQHaLpJgsVLQfDvMphMyhWnVUmSFMX79+Gl4tiUjp/XHHPtybkuQjG6gQDgsLOrcOUVYUtjhHbJq0U6ucEb8+HFKwBkWLpQH30NvbDCHECxSZ+30s1jKK5DLv5l4ipjACDgtbFLQkkNX2e2r/lVKD8bAZy3nXZ5K1TjSjvaDD8YFkWE5gToRdxcPVodequ0Ouwap74AstP0ls4/qQEAdDUGgsqjYa5zTH38TvQ0l/RShEW7uHGWAABsMdxvNVkg5GTNcWIPHAF4OGnRL0sbTqwo6uRjToPmqCSCIYZRDWOGRr3orbh1lEAiG1NNiQ17+ZFuc9gwJrUBQLN5a3DCw+SjSbImAvTiLNx4C6/BSwQQ+/swFHT9ArPvOUGRtQxIWisAgC6OMgxjl4xS0OYIZS3Txb8kq4ECcsDsGp+aVT3/At/3/uAd7Q0km8OG8dldNEqORjDEMS68gMLuTRxBW+KFq86ICgy76FVT8AXtgMKw0iRoEcArQQ1QOPUKLQUkdRRhmLgE3NcgMfWzwYw89tQH2GSowrCNAt+ew4a9fFWvYSjwBgChqOROtNiV5FfyWw0T1ij54ITFGR1w2DvfYBGi08R8fOfnEBqkBmujK1EzpDYdDyCTSYK6qOd5HIjWQNAVrIKgJug4TiSoqqpt24sQKooSNhvsKEi2b3UbtLm8mVRG5snO8pkFkWtF5FgS5VgT/dcOrAoeYPHFR44cyQLM0K9fv9u93U6dOi288PDhbW192oYPX3jhTp063W6/fn1ZDoLAssQIhbZtq6oaRZHjOJpgHMeu63YFE0HP83RBo7mghyMXm5WIAbncHrHamyk31ouoNq5KMNoKt5wjOebOGnhAjoUQWApZi6HnhGCWz2SeYCYF0pyV2kAqFI1m9zUVvKNeb9DrHRH6byT2nxwEFtaAWMmlKo6Xm1BrYp03o7FZK7yHfasfI7cYBjM/5gd9l71/kGbLDnvvA+jhSPOZe+fH1mSXtVEhVUOftQHwDdZmB9uL2jc3jlEuAodlOXmAZVo00eqXzrZEstEeYVHESj9aRthcWaZxo8p6xzVBzr8f2dxXizWQRovKmPBqhSWBqdV24UM7VvRZYklEc6hDxkPRVTzWDUbtAdi2hNFAMUOye+s1oxsqZjx/KRNjizt7GfxLypj60HIrbPxzvyQBcUx+QNUdp9OfL6asYawjZSHM4YH9VvUIA5m4kvll0kAE1N09c+xaCAACuv6ib4udhHFe9KogqU3GCq0lIOumRgt5M/p5RGtNxkMnsu3aerJICOXbfpm4hHkwYbXZappdfXZQ7JpMD1XtSkAlColqXrzC3LSlNgExmGzPn+ArT0bg5nsyltK9B+l2TWa80k558uTz4ruR1fou8b2/MRSYfePIgifOaC8GVq/JOzxAR5uDYJ9CfuoRpk6rdusshi/cncoJRTNiHo0QSlSuIyz5zZklXza5l7TU+OmZKN5sgW2O5KcrELaNpFqViVb04uNNXvOBtfbEncfI7Um5FnUxBMeLZWRLzz432YJ5nmtaU9KlwOwLCbGcF0B6aUNdSoJNvg9DNoKwtWnN2QJlBGGBOa+O3ZyMYfBKJC1rfd7qYNIi2PzAJIFxqK4zRnC0y6EpKwn7Z8qbJitZtIzWH4RLZwAw2V8lhFJ/EKG/EbWvA5wG0Wz6NTnTSb45n5+F2taJXOxKaXQOb8Y8RvYXf/VsQPcHN/XNv8cx1SSbfO9gfZ7JRCMq3VwMs5jerhujC0gMfKqXaLIlZPijKNnKOfwLSLZjoHTxUgH7aAw6SsyPGoAswv0AoX/Ggzi1BIyuMHcWTff1z7nkN5eGEHskQHoRHMRip+KZH4i6XtzqWRecqkNvQeVZetQDOLjihmTiaEr8Ux9xZo61NWe03AOdw5vn8IRA90vwlua9FCUuPQaYX1bafQPTH5y3SyOyDwGA15amnB1qW1g15j6y1AUoalgcNWHE6gwS7gMu7W+XdCagu/4WVmeZNkGSJg1ltoXnWQMAgj3pgFjDFwpBBfK67qtR6fMA7yXRxVgCADY7ynCC9JKGltqKONkMyTP1R5CFDBIhEqaGS1qomMdkSFGEghDdRX9bdJIIGW9ygw5vElJI7P9tKlU1PLpfcFf8o/uXlCD7UwTyodWkOjfFSDqmfTQCa4sOPm1E6jK74VqCk1RpT5F1k85KcUMavmDmRCPJ+1U/JBcsEOpOWdYkZbOTTzCpIY1m8SbIhaT02BvGpZJxdIWs7BgjeKksO+7aUbDNJPWXgL3AEaRGDHCxSNX1pCviD9F1J1DXzyIPtRBswGh1p6ASqiwCC2D/UcsZTkqPAQ7VhAlOIYi2mLOFQnN8nY3VE+zCIjgEExbc8EIjeJAtvGEHYDRsOMFJAA8rPV0af+9bsACL4FJaAPvftoPlJkIga0zYp0O5IEwzYcLRRYNsLCcpyrGwf40JXsHtReNsqAkff1R4ixM6gmBLWK0iblGUQx49yj5c3hRI29ODKTvBYg2BcifrcI61ZFGZAOksCB0oKfhCKzrBFXGhIaGBBnRXCCaWf29IJRwNVSrXHO2lSmOwFufQolGOTcdKrijt9TWX3d1DxO1B9l/K0uXXKpbpQ/wmZf1YimGI95FtYFxRmS3KwfxyIU69y/xZhbgtKloDwNKxTa8ToGBRkj31ofusQ7eQpwLALhLC9WoF34V7jFmAvyzGt9RvQZZpE8zO+FCWFlrWL16G1VWs3uW0qJLYucyfXzWNb1PM0kvmIqSEIUbgDlTOrxNwZjn2vaz1X7RN3ado3Tw8qwRVKz8VTvMLY7u1bhek/mglT039+C22QQwgGWhMAfhBrUh0zwPtVp9IPNBhM5OSnNpgxGBZhwMnV56jcEet7Klye9TX49m9eIV1MMv3EVdo3SUoNlvj8Omb4S3FxwjafSvlkMbZbE0WOovuiMg2ZLeIqFmGEPVuoXW3svMovYHWVu1oEAi/faayNShttnLvlbH0f44znSDjUqTakpem4AevFkcgnJ71Gc73pMTDUDYhb4blmfr2XVZxY6OMy7gUuLryOE7zlTmTpbZicHcyUEzpHDbnbIGyzqFfr4vxbtKlQO0Ti+YEeWgX/EIdDoxdefTzQKNvX9NyFwXKOmgraooXhX41OrqmM5ny6lbWHbGWwWancaSvp9mMIypThe26gCFCfzBLdbmQ4qXk/qCW2rTP0Fp0PZS3jgaZRjsGvIFhEwF62OB1N27vtSUJzaWGPmOsaVCQLPcFQLXZzZKJgY5RdMdRzjzHlMXyT6ds/EvRssVHB9DbhS39TfxLUhbc+ymZY37WqHbFoE/k2kwm4dDPIiAFP04kDowX25MDqDhS3yFAebS7Yu4DoCWL9OjA7b8+L6ZttHpfWCcoVGzFsK8/MK6oTEKvkQBqQynJJS4E0kGbRO5TXN3hdYbWysQtOR+lFPwYFQPCC3DIizQnZ5H0QhJXDTQAABlye6zeMd387J+XfgZtc1dXHrmINi2seJYRpKX4PoK8BA+DELvMgBa3sDstzr4fhtifHLCtm5lulbWURxfUqOOIuvgFrz9IeLZaZn+no0v2RLO58VblYGYVXVcc9bRt2XHBA90RmUcDAPA2P2RcaYNZz9BaQF4XG73URdX5nziLASCLJvPG3sZuY11z0tokXEZP+6zP/Oxnln86bU8b4igJVyCAvG3GgkpiEJhiz18D7CieikUgAzewxM+Qd5wI3ktJ4BwUAaSdOj+mxTqZgWlVjNnxcQgnrDyGTZZswiW8NM9Rkr2QVNyQRixksWImmuuaFDuTyJCYAVnWJHVSwUIGYqnMZrM9JFvIAWjBkS47zoX5MdOsZ2gtNsW+3YmJyU7li6KDRoqFQ7LcM8X2rAQHVCCn+QkGNmGjCNCZ/5uUXCmNuh8b5wHUQm1z5nEeILQ0R4OaBwM0N1cCVDUPDkw1aBRAbfPgcYE77kBL82BIe+XZt+IZV4RABjWPGhe4G1AtpOBH82AIm6PAmFXNzc1RcLBRmdkGVWYbVJuZo3ksfOzLPjs/2DQhMVUJx3Fegl8Km7BzC0fwfhp/K8GMnkcpL7L32fdAeoeaRBXieGWzumRT1DVjQW4pNKyN6Qbm47u7h+K/lv+0/KflPy3/OXEHoSHQZBZFZeI13SYrMWsqi6Ahw6boCJLBuU0hZHFjyggLMJJ4LZPzUuxNTQZgR4DuBsKCENpcTU0GcKlCzuItlKiQhOJ0ZeFi5RdlZMDF7i8gBd/wqxwsg2+PDaY4x2IAVeb25t+lWiCQSyERGDYJR7E0KnDb4oYMoMzVqVEFvZHbpT56GQ4y16pVAwAIxfZsjUPfkSA7hhAHkrxFvcg9t96qnUOyEjFa8amjQbarNQ7NHgQAe1Yq4iq3f/KoeSs7j9Ju/6FW7Wj+Bbjtc+uNvhv31eOtzwacPfc4F43yNY/+ByahPujr8i/FqffEgiYGvMbDKK6zjIuLJB5t8I4rJKqeMIOJo7QWl1RZYLf93s+4WLgc9dHB+Omi8iwBqO0hLkLZE4BqFoKJBc4RiuZxAiTIXNwig/N6tX4fuT1a+aNF/iWI626Nw/lSFiXgZGnRTyU32wBUNTEaXVKQDUQsBqRrGa59lj1uuvp0CaC/4x9W4byVTFmE31If33IUyWLzYef/z2K/+9JOyThS3wFAMbuvmgJxdXNKgTNfhtt+VWeD8DyE8yhZMlHuTkYQjs0N8i/5nK5vdcvR4smXVmoakksO2/uAEx+DVFoxBV9ZAjcpDU+VClhOKRo45BQ0P4oxsE8uXA4zpb+Avgyk7carV9WuS+j45kRXh41F9hOm4UNaOLLNVpMC2l3Hv8ENeEv10UCzSdThQMRb2yj8u5K3SBBfgTKnbQILijdj11Eic/5ZMX79pAXAmRnPXxS1DzUMhYrhH84nd6Ppkp/tDJKMw75wjD6lfhvS/gzwXnasI1owDC3UljqUFG8UTn8l3dA+f4I6cos/LuhmS9VcVkcAqT3vdBiCwJ2ajbcrAaUfA6zP88kPG0YscpLSqOxWgYHJFPkOqproDVRd/P0oXI54Np0dqe76W8Zhg6mbhx7di5CqtysBNOwLU6e2iBVuYHfa9JnWYbcyhlAi/vkC/mUje/+s8fZpNZhGKHgJlMkQumQrRTB1IvnpimrKhSRuOfOJ5WrXTMEPse3tnoG0NALohV95axlcey6Toev67XchBkcAELBA8ianDQAAUn9wZ+esjKPBbpEudmZ809Ne/UVldPkAnasW1GytEQHkKGoVimwtcV8XpsehAgSbERSzP4oTwwrbcKgYn96EdCNuD/EcUS42LxZ7ESDbbTPGzklgycJo/EZpVe9WoiWOEdElhiaT0I8C2qyH/si3A5L8ywuaf9SPBHLHm0vJiTMF/QQfGxHbIkP0EABQdJJFGwRUC2xMQr9LKQWEmtjv1Y9LdByE7v0IFutki52i6vccXlfq4zu/7+fFFjPgGS2KOJVEI2lTXHKWq1+/W8l12BJnAN0oUYMi7CcGeYVpSMmj9hNDPjxF7AVCgd2XNNuLOCYY+FCeYy4+BKf1eP2UxdnMs+2CEOr3v637idNC2XYM5Szz7n2AtYh5a8y3hYLFDUPeXRyEhnx8d/eQO6RUYQ2Ym7QCtpoy92AdatCfAoNiMQj6EqYEeSDp4SYEu4guZoyobU5H2oisihpOQltv2iAZINaeWHFipQlVJhUTL5stGIahIrgAllUAwXmQ+4KjUbvdHo1G4jvIshyIWoKKaChqI6qIEaaDqhGNSbqSdlETkh5BXcKUqO/7WjDQjaZCrNp4/ckBQBIwQhLQNs3hcHgkOByapolkgpAILA5YFrAYEOpPqDihxqS6YnX0fUNwN5vzrLDpTKfk1iJ0FEEDE5q2muox92MGi+/8tPzn+DE0dj5a6gPKSbV5Dg0AIMnWnctQJXL+0rmM4KkuokNZqJ8dJEiqZ8sniGq4H6lvUE7C9vldDgEAqk9ptTKMOE7ulyPnAiIojr5DvVFKahaH++l+Q6RuNRV+z9J0UiT7W0vAewmJQALqanEqpaWA7hJD/1uBbmqoTtF/GaiTBPo/ZtQLL91U/6+TYXD2lwvdxCAXQ8aSsAjKvUK3/v0dZ5tCQmnsfoGXr3ItAybv/pozuBQyVH8zKGgxY5Em3v8ZGBT9e0NB4eyvgJYssU0qUBKgHfBfn46TVPXL3SUYNjdtL6noC8Xm8ymTOdtIdieLaEmvbmDQdcpsWJw1AABVvDp9DIOjz+FpOjctD5F1oUFOwEUawZruZPIz6HXuqvPbpad0vPZVbFlEsVH0HrmhQZyszevkSc29dsM51NEk3UesQSa5rPPjTuNU10lYCPfDkI2Qa1MlWV/vwEercWBEcwbMm342ySRlCtcuPNgNvCO6up37NPQlSn9HQvRFnM5k9fNmxZijdyHF1GPAjAlBfWrFH+ZnjaEzXiBHPeI2AWS1IA+D4C2dzYDEetLj1Hi+p9msz2vT1pQ1mjTyuODe0o2pK4lt4rWvIvZ3IthIkMk+Uk1GCr4kO5uT081B4tyNBSr71rVJmCT/GBedzPuRExZvhG+Oz1sjuGhJI22ijolRKI8RFKfbaqpd8eqz/ZdIkpEZM9i8AUDaFFZT2jvpPOTp00Mq50XrcLMwTesUWCR+RWW2KC+gZOW0Bi7GTR071gjRdGbcH8nGLZHI44wBaOl6176KsL3jQVc5VktKfUBAsnGGJjvOTXEYO3a9y8Gi0xTyY4xohzfPOF5p4dix11cGvTImwC4ZO/aJ8g4xgosQ2o7DcCLf89PywQi7ZzeMOft+1NZGAVpWAks/VdcrkbC3XomU65Tag1ySbiyZWIqTVFsJgRA2pdFtsqTGXm12FMMYvbYWTrk+BmNH7VyYrut/dBbrOvXRKdnq0WtroQz2QuI2mRh+QS1cc5Yj/1zaMWDgle8NKvwwHwIFC7AvcN5sBhZ4NkNCTA0+xH0NDmqGGTaYZk99nTfnAJ1gTdcMQvDZLXXCSpCIwRUsBbLYKwxVihlmUJyDLA4OSyiQCdSzgSFrhhlYkL51bANpcWV3ifMVp+D7xmeQp8Aa25nh8XYWMA2HrcYU40qGHOqZjlmAVZjh2S9lypKSGlZRnCKTQ6i2MUb8jcBhbvoZ5AOHn3h6khf9SKk/+iH09Wx8f6nwUzToOBpzOHifdKhqQ9qP2B+Z0Zh5ltqHzRtj6NOnDw64KpQz34KAMiYxVoeXj+/uHmJbijjjvXEK1IURM0bLzYfNIB853erc8iGyOhWjgwg52fRjlBMtWx8t93DC9qRdGgS7/rX8xdXqi0SNkeYQGM8xXNfODMngPoB/AUXyrjjiXXsYAudIJbU07uxG6gVySLXAMLFapDSngq5r5HV9joJoNfKHTY9RoIvFwiEAACM4gW9zQ6lvP/7dkde1a/h3R44caTvLFM+gIFuNvK6JVTKn5XDbe+pal/yawhrRGWDZG/MV4ePHEbRDhLYS1Z0ozJKZh4NGwD3HXl+rNTX143d8d9GbXzNpYk0+EWaJV4E1o57dRb/gF+pQYOwXvpkEiTOJ7/tJGbAf6R9VmPwoVu3l1kKG+2qxDmRwZ4cMUXEHKmJYHm4mLugM5HWzZ/OwPol2dE0spqc/SjZ7e84C0uKV/4HIrbh5uGhxg/2AxZaUlvoV2kNesJ8vBQT287Nxvxww69XzzmMxcWUics1LiQTbQcqjC+YPpiTwYnHAD/SZuCnPMNNkuTXQdKLBYwWORzIX/Lle4KflV0vjbXGHwqEmsbSTe/LvR+GOiDwt3he5UXDIr2Xf+Q01qmwJBmlxU5ObcVM5odGNgKYmP8FkkDkQ5LeR28ExFx2wyQB0oDB1IgFPNFzSBJ15lDiiMuROkRxOFmHxjm0ISm8L5ZKCb+RmfOjyTsEorj/oYLvir/1WXQjdR6uIxwUu3JCdZDYWL390mqTmdE4Y48FENers81Rm64YqWxOXdwoPnyj++Mu7hWm62K3bE0R1FE7fI8AFOwp1tAp643tb9QmOArH2quC++toiUNf3raQEHhJqXA8JsC2RYW2paL1qmXJtluNbhQ8sIihACoG1JNQ01l77d/QrZa61jSBwKCWsqxySMbcoYDtDaHCuvbYSYpEPFwA5CiJlPZVyjiqVa20R+IqrLsGYEo5US1MfvyO3EFaPDnJtpQoz3SW8QQW2wyc4gu1vBe0fpU1qatEQe9YHgzIi9Xd6ccPb5WaDCrO0BrDFahJc9lIOulqndLiUITmp4uLQ8qi+vE6dOlFAf182H1Jg7/S/Gc5QFh+MEXkmvOZS+fju7iGO1o0gM8+fpyR63dLta/akgvrSM0nUKD7MWG/fORehPemhleUzDUtuzY9TEE73y825WpOGFwWGzUSxvXjgZzYX0zN+2ggWO43FJH1yaosYEZGojTb+ZDpJp4aauvJkVkNKRymSSRRo1xwcCqFYo9mJ81EC2a5O0tk8jL8zyCYTQiWanxgktk677wuC7E77gSUphk5sjUZDJ5fUebsM6BXLEjIEXWAttj/tThS01B/BiL+3kzAlaAQn+R3UEOvzRqiSwbvvq9izEwWys0VpkL+Cc2Ftxwn+S8VVaDNZt4cJiW7KVKof+BdgxYRnd7HMxHTpzpg+U5sNoXzvYtsxwIsIlmqaLQEwdKh07wDTIOz0uFm0E1Ta2eR2JYqc9UFq79vZnXH8EmDITlBy40h9gLQ9KOchTH8KS42fnvjiMZq4DRFvII6e+vElfkNxNaU9MGcn2NCFQPMWsjZ3fv72J0sQKM9mf9rCY3Dm7GN4L0FIfKSAg8T58GdtMlM0W8qzp+AbsSc9zrVaaW8N6dKL3IIatxJwOoXRqJ5Qko2kiIlWcqaZZm2e8ki22jEGf3j8spppEMaDjU+2unmyJTluJXA4sj3SnCn4HfnqeIpYcJyXbothmFygXE2XtXVrfgShP9klij2ChNng4P+jO9/AhyJ1/boiFCZ5OI0ZFltSi3XRgjLm/ot/RVwdrbuN1jodpKVfUg/wm1w53d8yaB5WJzs0zaUk2W7YZL+XXDwshm3y5MnSc2SRDn3HZemF3TYd3UmYZ0FYTLa5RaW8LHtPq6JkSWebZ54Fg6v4tT/HBI/zb6fA98DW+XfR3fIJLQq4VnhcwpC5cSt5kZVAif1/ClqSM0DTSTrpQMVcBeGgVpfR0MDj0HUmWTRHGbcRmAtoNsmCq7kHJ1G3p+wkyz47KwvvwSzVyxGTdY8fS7gVTiYamrHobysOUank2SV16mw6QMuYAFVBSVLQMW6rfVpyaJNgga5Dq/olA6oJDXmyXUDtQax7IzA2xdno/uJQqghX4yWChTnAdrIpBugJGoMTZFOqoCXoolGpQA05G33BANMZQl1ywP0O0rHceAtYQwP04wXgnAaogFZRQeMaYDuD+xoDBpjBEZzTADuwaZRF8RcCdBugAjd6L9VjwICJAADQXUP40+xEcKk0rN/8aAb8aSaUXlL9QcdAaFINsJLEdiXr6NoLb6FOpSg8DXaWgQayEzZnUgkdJh5C4MLkUK4c/1WYU+ZCUA5MUaTJjsPFEAi75uCD3zYHMHLkjU/sQN+jJPGR6RguUbkUXrieYvGWk4ssvrt7/CthbQdgsv3J++7wLLFHtM6PuTFqu9s7sXRUHvGKyhjdV2t/DgVP+DmmaHMhJHO46KiifUqeQVfHqTAgzQVEyY+MKWDQzz8Xm/0pKXz1odfRCG++zy/ukF/2nAGmGOuN5+toQ152HypppTpKvc90MOPL6EPV2ajZRQe7SaZsEvSKBU0RHC/cjvV59cFgrOa9BGHQZ3s5FJht98HgSP0RWLIxuElgfYQ5Skp/ECF9V6fEP1J+wUNDjO1Ju0BR/fXC6U7m+WJfMHM/I/AwWfY+ffrcN4DFhlC8OIt2gko7VWwTSV5Vbk8tEBEMNtOe85fbSPqdbEyfm5f7O7l4iKLwNf95efTUj6/JK2yotPezG2PIRKptn9WJ5LGapZZAuDX7k0lHuyvuMdb5JReIgsyhfDPE76lv34hr0PMweMUA5NktXckiazG7v1PZG6qYFu8zyisYbSaAmITfK0G0tb9IeLYC2wMf90bIzmb+xIM9RqLBzRMtlyrBGtkSJHPWJb8GWsIW/LbMqTZPlIouVLzpMut3CW+eXZpFHA0U23Fs64OHRegiglkoRIoct1KQMYXUwKawADgblk0jq9+l87YTQvslbouJo1Tgun/gxrzC+8dSnCQAyFJ9ZPX19UefRXkKuWdZeuG3xcYoBS5KghSp6GXRdaYNomTfcK7Dy1IW3PsJAIau/ESMuuIw9rlRVkLQWLW4VHa5lz/8ANhiy8WQ9ZmlJKn8VHOBbiTUVY59ItXeP/fl00ucKqo55XrHqKjpbH/aGNT/8zHR1IyFSLZf80trQ2T1pzl27BxZrFMPErNDCRhrpGwmw5gibO9XPMS/FK3B34/84R9ysXr27DlksZ49raLIwXKSwKGyiqOcjbGo5ywQ/js9ZxlkATQEdDERiwA2Zs+eTlEKvpsEPb1E8F6yZ0+7OILfqqebYCGmPsDBdBMBXMqeJlCpykTo2bNzwCALyqvX0GTo2fPMu/QsVp2LV6j3J7FoTDXJpj173rPzE2ggO1UWwYR0RnWgL1Y2VmbEjpA7S/xhO1zrn/Am5kHWUBD65uBDSAz9+/c/nzEdhg+pUGZGnAhlROewgh0KPSnKx3d3DxG255VI3FuHMDexhXQfAADh0YzOZZCNGAHAyvXL5sT2J+ctyocsJBXM0iGskmR2z7fA75YriM+Ri8E7pkfqVyiHbng2P6BiK5TMxQGJnSRvPjhmPpTMsxEonUOHskMC6rDuQ7fqvFkS2z+cIECrdwXarqFota6gqD1lBHrXJRI7DKXmLbDLtw5uyc2jZPx0kc6d2fYYmoDurrdcBj66MQTodg1FCqwpdbQ4zXGJr1yz59Ch5vHzOlgr2SGhkKyuQSCUeKLrbyDIHvoA9uIU/EYKMmZDmSmVqhpaR834m0kAKUsPuvV4IZXNyyL2PTQB99VWTkK7W2K2RK/6ZMGBgn7Toc9tZ9bnhZUylEOvu+SQPRdvYEV3ry8BfFH+xdHd5r0ktOfuxO2d9e6iXcu6AdeMO4/RBGyyOAK3mov+h0qrqXptkIKvyWtJq1tyIci9j6UH0ks8+8kne04TAUCB3+a1u47k9bpoTdZG6z4Fv0bqA2AdWqFTJwpIC4lgYEJQH0xfL8pliGrXJXgZ6Obs2WDaBPLBtnujVsCXoVZ3wWMbMK5fFtnzUa3PW3ON2Pbkly4d7yiN5lCgWsahom7maKFsO4aHN0EHTpdQMd/l+ORW4jEs3dsQl1ZmF2PKXgjvftRMdHRTVrzo9t3XeSJzrHEm5qkVXZifNSvHCLCkhZNU00j9M+vNRfuPn0GAwxuVIArE1W22ntP1wq7GeXPYSQYSKsF1KWJ//x/ceIP5H/ESSlfLxQj85/0nkQzP16TNtigpQEIlOJk4clzUIk2bkNiAH6Pk4kK4uSvQrbQpoWQWIyYT1owX6Au/jPQYC8R+hqON6H5N04vRWBih5KbcQNKkd/WRHTFvmzsaWOIJLTxJnpJpDnVhEirOwM3Dkr3z44Bs+qLNJYvJApTjW0ybTHoGS6dHJHlrx6j4WvIfekIAkPr7pidfcXDtVBfl9kASDcie2qk+BLa7uCjxFX7R1Mfv2G6XotkDS14ptNmTXNrRcrwNGd+cgorX8FZit2LGmfr4hl9X2njUavJkBEh2jdL0gcjX5OYoOTTPxvXc3O8Fqu44nf58ARifjdt/paP5CXx7tpNoYk72MI5MP7qg+/8CDyHSZMfk9GatsI8RREvhffgXR64VMG2aS/CgK9fvF78mM44SgPllBR3ZE1Z8peC7bAsnFgq+ix0obBcRslexcJYAXZ8sMs3GLLXIe5LJLGWCu7WQ2w0P+a6Y1KV46JQkmygAGMWvFy/Z68xzQCCSzRgC9zyP6KNjLt/1TMooe+uGcXFFFJuyxIdIcyneDRMy8+d2K7Lp+kCZ+SqSgnO5gXgnOvCpEsCu06cl1tiIasUHHOcn9QPWIxfLRbwaMYQjJGAHOOQ/WHCwHel94Xmzadcva8p8GXzizFqKaSvAofi4zskV3NPGPShAuJVJk/zyxNcSZnMLOJv8VAAIjFG0P1kcQRs66UGhatKkZg8Qxk160CicNGlS1n7+oEmjggPlXK+TipCevRK2MgrAw5o06UFrtzI43Mpg6DI43Mqk5ualr8hwmtQMuliCj/NvyQw/aJJXMGjSg3pQg1smVUL4IJNcDLTlrbUExx5cNakydBErrxWhtv0K8j80/snzU3qQugSnHulowKnvAABvt+d0UHZcqtPv0aOHXtQRpoAsfUW9AcAlxyTUc0Tle7sNH60RyojULnZqZUV5H2ChHj3u4UNkaEAZq/foXJ6/6ehQaXrhFCIF33TC0QAQGgJmcgQdJBaFXZSP7+4eX4pgPl+ZV4ZtMTE7l5/3kkbB6Fz8SxIa6+p6Ea6j8zK/lV4claUal6Udvfw+XTJw3VwOE092g/bwMqwp+ZNQbC6cjHXfuvzokS0rrpAAsYZmXck/FNtOFBDObqB/ScZiKOpsObP9EUN4TDqPwO6ObjMBN7YsjsXOTrfsyXkv2eR3MJSO1mDwjisMff0YZQzgMY2j7wTDHEoPKc7LLYhfSXDltncyuh8v6Tua51OSJZes2IqXGFGIpDRG9R8hiwVVH9llOgRugmKTWlqUdFOre5WZErDzhzzMRPG6fyua6gTpZJ192IiyPYnuz5vvZSGdWLowtqWzdfkg0uOY95GsISn4Hbs5u0bJvxSjzj9GebDNaR0vNUGZ624dBaHtu8ZT7EXM9tg0CpDEQtfhReawxTnNL9ebcpx2m9TmLDoDlACF+h+twTqvBMOwvaWbOrRZsnBYAot9P+fFctQscDf8HFEVa87ej3zKC9qEZutU9SyE8sOFFnGWKrcKKLuks0l2MVOKANW47jI5yxIb6VM8tKSxNcgmGERer/MwZScT1wXKtjIUANLqkFtya5SqWHXuPvIpSAoDiXEKoz9JyTbmzAAq2bP4kIIEA0BWmYsdcgqKBuynTq5izYhgKVspN2cV05xIoohQEmugZE4jomK3X03YJhM/pyZGJPbr9znTQnZ/UNEbvJeixJTnyK8amMLzVggnL16rz+Tr5Wksjv7pKMDF3NeYkqn69++vJLpF7ct7sZexrikTh+YF5lH7AIv9b1EO1RZAOm84yqnLFiZMmGAXjIL2zT17CdX7zMd3dw/Ffy3/aflPy39a/nNCG56nInJa6qvYV9wdRweJ2ke1XZjh0r4ifvHonLOaVCpoCaBKIzCLozU+6IAhBU3gQoD1R3zChdhpW9+9CaYZU0G3pNdfn5E6bzZ7XaVeqkBLrNA+TDYpOWOn7P2MIJfVTwaF2i+AJRsLoPFIfXwltpKDdQiJNPXxJXFDvt8A9r7tFErJ5nmbgN8+62ermOPimtM+m1WS7DXfCiQzZWl4mggBljA7aLJRLLzq77nOeR8VTN3EPFPffxi27zSJIJ9j26rtS0SgmWFrXwVWrStMg2p8StZ5Eqdr8sczlwJvD0rw+r31CqtTIkZd/OqlAtdQD7/Z545cwXIBSMGXjKeZ+PRfL54/pSFPNSmV71I41gT5jc/Hm2MGk3dTNMTklUhHyfXRuACUSl/MOVR6L4EbO4OllvospEESeb+ixYXcqTzVIXv/k2+tou2CvCTfmD1Vkjvlh1pSlpPkvSyGZPSx8Mk74Dgdp20RBkF3yxR3Hf++/kWi0b5zFP6XIxS2Ka5RsmUzRaPZdmlLANL8M1iuMXsQEm1eN1v6kP0WXymHdzssHc/iGOOSzfM6ix7GlCrBXH/2DengvnDN/NTiHgKkthk/Gy2ZeI2Z0kVqT3m1CCrYOsXM2Qc3lB5UWq2miWfva/z0fMwHSCCQp/qwSOUhVYxhkAWOUiQB3moc67XYbP86vcQrzFaHXXOb4F9AQHOTeL0OHOCfIGq+Lk23stpcN1sCD0prkwz2wrNdA16/wBCI8z6Hzvfoyn1sKA0BuOZbgyxPCIskr71r2ip/3recrYJtr6SnPUv+8+zU+pCqclpqsJDmva0+r584BXAwb/79axK5JB9V8VXsrbMcO1sfPGe+lxsAAHQWkldqe97FWVA2+D9/XpXSx+fnke/G4fy8+e98/IN+1hpx3/Czf7k6DwnOZ0HGJXnXTtHyPADA+IL8lkfj9Uwn29xNCPMo7Q7D0Xc57WgAoLUn7Uepwv0Q4fKzj3w7Kf6xOMtBMTwnmIvdxuXYOXIOzZp+FK+eNckh85LZ+rW+cinOb5g5Kr94F3NulXN581nJuV2fRATq5nO+zYyVlWFjnJNzec/f97HAvC0zK7E82jpbgoqtjEq1tCvmTEzzdhh7j5RbzO+YTnVzN8GGkAQYyV8SGXZhQOoSya6FcaJlozxjH0AYwHY0vIknzL0PcAh+wD+Ebem4Yj6+u3tIY6Qpe+ONIp+9B04RtJQVMRB91BSRB1QPkQPEGnS7VVCCi1P6wjg25lgChPLjte+6orGgJugIRoKqqtqCixCGiuACWFYQBLIs9/v90WjUbpumORweHfV6vcHgYsHBoNc7OhoOh6bZbrdHo36/L8tyEASWZSmKEoahLaiK9j/Iay4YhG7yEoJdRBczRouKl9WJEFXhesxUCdokQ8SZg8l8tLM+3ljBI0RHUEOMRVzUrmiC6iHqmCmij2sgwtaqR2HcbAZppKoShXQ0YiljFxcNX0LQI6hLm0rpN6zRmDBVE9+2Ep+xb+m6LL7zcyImUvBdaCVneypcAy0lmrKo4xXtoO1KwaPyEAXStjI09+JIfi0yz9T3L7GvyHsvWyg2S9TRdQph2kST53Bo378zKQ8RiuKGc4egaTDQZmp/nzbG99RvQ9lrmNmfZOgQD4uULT97vqCO2EFxpCXJItMZPIzLGy67RJzu2w/qxnDiiHTSgbOswlASBVzIFcNro6RG3UnQsyKgeY43wblyFNIxqnkNAmhTpNYGAZZssqA3KGr80FCXIKnIwo8C3SV1AkFYsi1EKwZMBt1vd0F8OFVkBoMqLjpzapKLS8FwEIDyas8yuRc3R+oDqm6TPM9SnmCB2M+w6WEfjxitxNm+imFYNN+BtEs6W3A1KWbDhh0JGrfUt98DPDSkRbJw2JHQ5+FC4OxIAgrFPEeQZCsG3V3IbmsbCKDwGJLuOCJagEDGAPSzBTzGp3qJO6DaFIZuK6HwRRGEOKhz8nkc6VElUYwVSa0Y0P9gOFH7telhCBTqzV8volmM8IsKTsf8v4uZNA8XLKEljBGFfPM43FfLGzAx/IIPGaeR+vUbbls6W62FWMoCDoWIxUGhksnqnmeAblcy+XBDQS1G95uMqzwLH9JMzgUpXbGS1UWfvWjI2k1QyG0XNcWmnWRaV2nPu/5MDOY5b5XRTZ9jlMXVVTKP8e38nTeLCQizV5psCSH7lNu7t+2HctsoApN0brbYo983hELzGH7KH9DR/QRZZzJ76rd/3B939o0pTNnFvxRnTh3H+1g/i2EzkTx7FauWqJuV+7Mc3rHIrrkg1bsCq5MYw084SBaweSWkcXThwW68ae1CXC0nD6C5lpWNj2P0yINJ5jE+vPnqksUasN5HvZ+YtH/79t55DYSLsW0jSVZWwirPKHf66PFCfirIvM+5nvA2E2mXNFqAfwFRPU6184/3yv+J3yPDB6fMd1O/RXVo9cPd5c6FZ8sFqdEVrjbJtY3J9VmqCbN6bh0ll5zQiEPFAGLQnPFB1UA465FUd75dbYLrNo1J/LaTmPWb5qaW0nqRex4Qo6JcLh7Zk/FR8i91V3nEYSaaWWUAdoRBJpZR4CSCRXnmEIiHtf8lLSgDaJQhYBXtwGC4AHjs/d/DyRZhMQNrydEQiEOpI496+WZhEaq+XJPGll1CG0tH6AzgUDXpADpQg38Bi6rpZKNBN7dkx6oLnvHaO8KGZlEU2pwG1JKdQ3Z/EiF9qwk15dkhb3DdpVy/MGD7rk8nWaOcv+nXYdvOzITW6AvZMXXvRlqAkGdG+RuhQ+QO0GJ7kc07oc2ZlC8oiA30lCjXEIqECJCOBNJQzgFlzcxMcklDDmv+wmaiRJUZxQzqMM9OEnSCbPbHKubj+/kt/zmhDrURm/FQJeNuDo8ZhXczxxa8WsXzQoqF852RHAwqpUlVee69BgO6jtR3yPnSCJZrlgz31Qi91eRWSa/H4DdjEtUMsz8AAABCse3X0h5ULcMly6w0dz8te8rq+LjlbNqDq8D9DgbZ3Z5ECvc1SOTZLNniY8AtZ4/DjxsAAMBB/ozB4OtgJSY3j9QHgKqOEmCFryuqGPrKry64qKS+5ZuzqU2BxUwAE9ArhMVMhJ6zlhysog95oT3dAoN2Ug7LsdjlQnu6hbCYA9mzI3QRbPFHt4GiaXr2LMI0NsKsRQgdgGgrWzERrMKSi0E3k2fbJziYPU2gYsEisgDspK14VSbieZgMRfgQHQs24RZ6LjiClxRDLOBBF9rTTYRQ3B7a0VLwBdlx1eWEOaKD72y5+wa5XXz0aMOeMxahZZ9R1a9VDP+dJ/n9Nibrph/9lHyIV24k97SBIoBw19KpAHJ7zvmDqHHbiNLnDA1VWuWoCiIkmSk4zNQfQTkIOvUpvS7vfEQMKQUk2lIhx/FJZxJou0GKPIWisXaiwva0VSc/QeItFkqYfHJRlsU6ju0Me2DMmKFG0S1QyJvateiteCVc8k03wOp78h0UjS+uQFGCr9jiJJrzS5t/II28KUbCmJKC35CukqMeoqg/BSXRSY9/xX2BoHv2/xYzlQtfpLDYffU/iwvWSt4PHzrWDoLxyKbefE1T+4OZ4iUCpKl6idEuiW4kJyrADeBfkhF259uiZ2aeWpf8SpYD2k5v5nrk0fREv4LYjC9RIN5lZ4CBFMtoAIAftJQHntjHtVckDxf4vqhxlvGi04M73fa22rOB/WmeY8mlFBbuh5UaYtPmqUVbGnMlymwRDET0XrM00dqQKgHg7GTxPQIAKHYp91Gg92WdH2F7DFXgbh0ZiqYaCppO7n0ULsc8foblXjE4tDlqfi2ityGg2NZGg0WCDsOvF+8lSdbUr7DaDYZi29wvBwBMy70fkAaS2V0K9wHL1defNKTgj+9rIgCEQl/HZkho6dIa9qd1OF75fZ7/jv+6QMNT9Ab4y+k4Skqb9fXW/PiDlnLIEnhP/TZUKB/ivO0kf6qRvPCvTSJMNL9cKDJbwAJIi3dAi4mFrMQNwpbGeFgiOya0wyfYQ433Mt82UzjD7r3AbL2Iq7fTnUfPzZTF3Y+0wl7I4BlmUFNuoGyUahoUxOY0gDqkipO6zgCoI7bQpi533+NJc2MpWBwsJxU6BmBX5LrpBW7GS5XY9Gcbn4NEmfbWCFEvEQrkdaW56Anr3nitMAo1RW9BKPbFPk8PIxd5F6mBZFtZzb9MksULBFiCsmYWTCimATyafPSBSRtdFyAV5gCAbKHQH/w4SqZdTEhDmbRnh0dj/SgBLB1Ud+n60IEo4+z/Lao60WZ/cyVZ/QcCgCEmDnEphYRimuNA7GdNL7ovc0q60XXx2SqhDr+avQRgbuwa4mIvUZInVf1dZZDHrZStwKmJowVtROxX+rCWWUE8bLPhCH24s4H3EtnEy5HYz7/XXcEhl5JAE8cI+vBLfEhOvE8f3rUok7lZ9GZ9MDhTfwQgtCcZun2LneDsw0z2CjX2+83QbDUC8Hb1waB1BUnmRADwLykVzaRJ6ikwv/RoYH/aGKDkEomy+rwgOdqVMq01gKa+LMD0GMPoh1nhvyUbk1V48eFCNxKTriFI9iFSbGeTTQSNIAVfyY6uv51ynz7p07RToYtYZZNhAn2k5wAAUO0SQou6mOACIygbj1+HXYFxPnKuhRtvoFDNAQAFZqs+fZh5pL6DofvuSiDq6oMXakujCvA+wJf/aEUPkwXyF8AUn3QDOSLaXDfP2etjdNXftToVpmzCfHw//5DZZKwBe6PPQwV85h4Ykez6zD09aawEMGBSHgM5dKnhg342ec7PwA7DkaUoSmPH/LQNQwCapvZIHJQkYUpSJ+vhEo/8kTz0B1XbnA7RBk73kTjXBzvVRzQI8GxIHrKkKJs47SeO41jiqJ+jJEnCrud5XiPn/PTsP/MEmKqlx5pkM6lIyRo9vgormBwgJcOLpohvaaOilY8IOrialHEjkk7/2cT5P5s4+2eT5/1s48Hya295Qi1M9SL1EqG6hJoiRSRUjj6m/S33Wz7fPi3tCVAuOpcd1AHpHGYwAIy43lXzIa84eTIJj/3Y1dIBggzZv+d8zKGgqVE+GlPwNfkV5uMeHQAY9t6iLck1iFHfYbm9XXlp0F8knw0AFsUwzPPn/KiU89+p/b3xB7jeL9piF0YADu0fvAHouven6sb98COpHux5lnZsr5/A1ItM8RIFu4TVCiaBgXAPbqLDgWmKzmNWb2lxivwLfHyLwiy6WifAQPIgDcRRLsUpbfuCTQQdwC4aQak9qzkA/AvcnA7AsL2z6i3oBBdgEJz5zY3xL7V/L14dyhajsOMgu0pnsJOifMZibC5ZwcBZ3IUA/x7nzUWjBDptbd4X5FRgnNsEgAJ9vfjVUx/wvF7i0okuUhAntvlumITg7ASK5sIUiYKE5nlRHMIkA5DrGw9VS64VJZ6o9Yte4mfg3bkUiY0M/Rspse9rOQPsgSzugct+ZxYtRFQNtLOwlsrRaPULXwthcQb+DmoARyFNddFwKbHESs5n3PIrd9iFkjCGArDb44Ej7yUIDuP4Zd4X5JSjUvb5EwA4bxZruC9IQ0Vm0XXRLpUnbUyu/iSJgqEJOL1VpKQ5NPMadOdtBeAt9aUf/gs5i3ib4moAINv819LN1yKyVa7zcl+NbOsDK2T06A7OmOHQofzZXLS34jrlNc1+Nvt1HgvJ9Y8C6HphqCsGHC+hIZxnZLOtKLaNj3tjDq/wOr2XOjftaABdgg4HFZpD6o92sJ67c3gTSO9RsJ2h2GKmAqMzi837X7g2Zem2MJLtA+Q7oOIbpZrMR0t9AEBBUkMQJseh++fLvC8o9e2Hi/bGJ7OHLkaJa88DcriEJKJ2Nl02kjCZXN3LCgoZW0iBOIom+c/xZijCSYizRQavKxfvA8ChIMgn01XyakEp+EbsC3GxnarYFpMny1PzDVukzU4Vp74DtF/qDn2z7b0PkH9xMc1CaE8FnctNzMdfe3OI6lz1uQTfMx1aDFZR1MG4r7ET4X50EFVH0jnI+GkizkvlEMrbRbs6aIjguhV9Fu+YDf8EAADoRVzzY9V0MFUaVu8OwiFDKV5N1sJUC0fnMP7NyKOlfnyn+xan5gEk3dKE2A1iINYpqlpMIAZAnOIVAgDUkZofs55cMlrRjcaomTdOenGUhX5ArMOXNhwx3vW7zHodCKT+PwDs/URj0G1HwiJYxv+hXEKMz9SvP0SzGEEieXYwZCcosYSr4t5PTXecdc4d17/QOmzf9TH4lPptmDFmsMmLYnXWxwDfd5ThvE0EeaknRRUkMA9P11lPLiL75sawZMcLzCEgtfX58wFItu0LzZG4/wPZpe4ExKGDCPUDZcHWcTvoVoSrF4XdNhOjBCNeyAwzsIBGMMCuEkR7dF/97AmNbLsZYsnEQN1ATQ3L/rbrX7FDjkoEGYOobtQ6Ux/f1uGWsm39Yu9eAw2ULOz2+Zl6gQ4HxnV4lliS8/Q1mXFgZ30AXRYevcQAUOcIpbbvLfXb33LY3O9VRclWzpGFez/rsGuy4yhx+690tAbIjtyeycJVYUSOctggt8cW+6BYMTy8seJN7UEjSPYg1RHlTCb1SVJQ0Qy2uABWoB4tN3Z7Z70VuyWZ9j3+y5y+oteb2hmYvBAcNawAtXsZ5v3FXrSs9j/mNB7X6tMHA1JdAQy9koAPm4LvNlVOH4BwGQ3gg6MG5uA1CfZ7PEiC2BkfNNv1+iS8BX8cEYQ20Ub+9ntzwstic6Bcr9QlQzRPX9UrDm02mBaFni9I/fYPta1EqTjZL8jFZkcZ2QAWMgFarjKCNaOCNq4V5bSfk2ESZpCWhIIuMonFQKju0UVDelLBHOWJnroh6/7f8gy6s9SLDcAZhDX8Cqo5uVgLjnLxsDhdhDOLmZA6fVNWvGADUHTSQyv8+wCVAFHgvNpKCMS/AEAIENZCLYQRtEQQRpAztbXQEmVNGJwjAqj1MC7rHqGlFmoBWmprA8NBWJs9KYQAALVrfpnTL/332qnA28UPzSN2fro/17HpTIQOkRadcmw6VhLkSvowlCMu5dh0btoPgKykD6c+vrP7ZLx5Ze9Zc80jVL3fnul07iBCGzMzoVOUe+3ZULOUR5fMdCbgqBzPy8JykmDEKXWxAEbl47u7h/jXQnriKAAA6E63ONfGXPfBxqz0Q/keMfy0WnAelcBObh+3QIQ+r3yM3i9synoAABBaBE8U5aCpfaR3dc8GcOoDAgb+9/JsUXtwMV6GPTg/0a1Tckc21IHENp8co/vHrnq7lyiedGI7ZLZ3ZklRtEU9G8yLQr0Rwdu2BfM3QiYaGEmsi5y8v8Brldge52qjIdQ52Jc+iBO7RO4UjMk78fjoo4ey7TjePU+ipTwQMYhRsxYx6jGEq5CPFjDt2ZCbfTxx9KumLc419f07s++PdBTxVs8e4UKgyWgoJJ48pvqTPMU8RULEPKU71Z0e5xGR18V41+T6u53Fmj0TKEEeGqpoTbbZF3gWhG7l0AdxCzMlG0IprKNk2PM3GaPJjPHYEWdLOFsAdQ4/E7867aeLO7tMm2A52DtMUHMXZBFm82DHNhKXpn78/p5/L/9Svxx/P/IUT8pfsBBGGS8cGsciQ9m2k9W7zvU0gnYXExw6NIZgHF00O1I02FpcBvP8GfjtMxHsxeu1vsAdfak3FCC8jwJ1XWSeLuwcUOg10yaRLy7LrS3yxtWpQNpSZqtizdn3I28xN9mcPY4IQGnPZKnjvKvr3yHX3w91Y6d06B7uv/rAAFU2YurHN3wzcTWjXdiSMpw47uwG/VcxGTvidL7VHN5LbMPcnEl0C3R9+gepZjkx5tz9yFuE3eKbkAUkgOLttZI2L5pLT5DssNsqZBUHSY3WIphd9MIkdH/V114Yx1rqWHBxotBeP+XkvQTFThSwK+5nR8dHnz2HT8VuEy1ST83FmaybbZJKYsly8bAo3q8m/zkt3UD7J91osm/R95cO9dL1/8gakqcx2QWAdJ5TQ04OOSalPVtO4wWCzGCuv5WLIfOh/YD8R8ukUeXhITgA6biAUY7ZHMQo3ErH3MO+9sxgxXIZ9CTz8d3dQ/Ff61fWEL2X8iWLPCPiVA+wg7jWf75H+0jB19jPuEsIxbbl+4D2UqD3tc1yWu6X7iC+60mfkaYoyGoUUx7+bSzxJlSfz4qBZFO9wBy0NtnjKEEHIek8BlA4baf28N52CSNY4tVymp+v3ij0z/rZOpD77jCy9YuqMGWyoxdByg3eR3/gkNXaYTXLjgPwqUWHXFQczha/fyRIdK5UZLeRhQcGhdcLIUtNyG/H62w7Dp6tbdkMQa826Tlg5bY27WiwY3Uyw9bmLBKbIZhooTGaSnlcXTj2tjZpCEAvwYDlIutMffvOd2ujvaW+Ayh2tR1lDSjtahNmpTlkYiIoaF5itVjox8vcjPJN3TG7GZtkkfOryxJJDjRRWVIliLcxSV68VvFsbVyOUpqyEBcgQLvC+2nDoXUFwa42dh6lHbfhwKcNK7dRoZx+zlgE79B2d6WBAiqL8azXBQCHt0REQVGBc4DF/gQ40K3AQjRmm7QEvJfMR6QFCaqi8A1PeNiU5FJtY2k4KWvSTUwPAoe5+Foxar4D7P7CQG9POnqDKfufK9I21Slgyb5Ee/604zjwqVufJ17aF0Bpz29eErtZFTjIbOMTPT+nZhcW7Mab2h50HiVJ5x5B4lxBVxOrRwKtienJsV6zw0GEZwvFvhdYQzslFNu6TIcNg3M1XWeMYJegqimhIHL9ig4VLWGd6rAz3o6cIjfOBtbnRY1bKV0MmXy1SslCXWLq5qCXAoWOo1Ho7+LqLm2hRumahTVMW/Q8GmEnBPTVdor7+Q8SG1jnR+fNEYq07SEb3m0vatvaUOdtoShzWLJo4AYASyeR4ia9Hz60wFE6ixzKEy6JErN3p4V3dLWlZnuFdDL1i66QHgNWn1fG7EkkIPpmEo9IcPaqqD6ZwJEPpS61afPUorTCXk4euvBZXqHAcyLslL93GJiwT4+/BNbJjTfoRVx9mwC6bOkUAHH7fGs7Fh8DDoeS1hDwDqVoO+DYMxiLlULegkoaSXOS43Y3Nz7ysvhfjn9XOjXT1JEt7MWgqN+nTSZJSY9D0/htqwWHUVn4/vjyHACNIS51yVmujR842Lg0GW7Fqx1JiV+3i3G4bOG+piUTRh5RzLqZdZQ1gWZ+Yp2NoNsWsju8rrCxmof0EgEsXRyM0hpC4L+BGeyeRUCpp34FhjdTyEERHPoxBK2fpK2B3C7h/YBXzGT9QKmLtbi2Enh99q6trQwCfvt88lD9sssQ/HY/bRq3/5qx9NMNUtvV2srPUQoSGmy2trZ2Wu7ZahW76qcNsD5PZh4lsNn4QxWdjlfi9umPspxzkex6gtraWqi1ZeFEKwXYMhlopi68Tj9Ab8/rLrVYuuPQtUppUG1t7Sc+zaAZyXk2wu4F72njBIggh1x02B7H1bm2Fm5517W1kWiwMoy2mB9jURLmIxZn//SJBN9uEgMAUGXzSWNv2k3MYui6L6VAJJNCfHgpA2h2USUn913tSopJcZAxCOKd5aTLlBLHaomjA8AQZ4LGju1tiLHBYynLeoeDEFIcJPKkhD2F6/vbAcxNdOEC/Shmd86xcxalPRjXJ/rKbNFYBfDG5h+rgLPUGqBA70ZXG0taPO5af+TJcXKxORyMsf8iQXe3gmbc41gF9Elw5sKSJ02Qp42gLcRgBZLG6j1rbqHAfoNjteSSrCE4jb3pvhvmV4kK5pn2TVVAXd0950P3VpRTJDqc5hUAIOYk3BXku6/3gABr4vxUgJu4r3YIPHEI13sl2FtRG+/XVA4BOjVLtz4LrGq47pPAF9wD7HOqY17ju+GOVyjFszSLW1ZfHgWgU5c8hM7Pu+5Fe5/tcvAswKu7/IKz4CVmd/s5gE5d4zPGq+ocOo75zRi+nNtlfHJFOLdzZdd9jy9w3bcH6Lw7D+45484t3Pqmjt4e+W1c95wP/XKXW3LF1SkAcPLb3IvgJCc67rzeNQHWfuXLwDr5ZXCP3+bWto73aqT7aqfjmuLq3CpjWt/5Ocjn9aXeku3yrNCYnO2lVlh1r+/B3zhc2nqKxffzT+yBZ7A3tpWy9yDpRz2DoTGMNfD9tALTEOhNCMPfrZPQoH5Dpqku6HlekiQ16LqCVYg1TXOcKIpU1bbDsAiKZQWB3O+P2m1zODzq9Qa9o+HQbLdHj90Lmg6+Zsc7Oyx4GNA46B4aiCTpYplAQ4GnQlRFjTahimgjhojI20ZR5DiaYBy7gt1uF/kFPc9DfuNU0Bc1DMMg3BwNEqPZ0O1p/jZae9G4YD1MamFiBweBLPdHo7ZpDo+OsO7t92U5CCxLUciRcKQj4eGR0FOCvqSGlHDM9UPFaza3GF1L7npIO+P93HUxY1QN1XEcB+9btGMVZAVGktMfCfb7hLiQGzmOCVlBk4LlwzBgNzR0AZoN+shUxS6WNkab2u0SV1zP04mdLdXMTewRaD4AxLJrAM3YlIA0smOfsQFItYjFP8E57oba9p0qKp/AHXFro3yNoQuBton2Q9oljV5O3ksQZmSITH6R2qn5Gg/LAipOISyxRzRHq5owOr/C2cqhs+lMS+ZrG2WxJ4UwIMmbgwvh5i20JAioPpSTkxxgcxBADE/W+Q2ysj5dktJY2kUU75Ok0IZuW5ONMGJw4LiCWmRdaCEZaDk55CRFHzxw9i4UpQgbgyKHLEjriiHgwf9/3GA//9TLxSBjAOySBgBIwXd+W0g1J+qlcN6oLdA8Ti9+BcFlb9xzmGJxJG0iJiEeQxe7013mH/dZ42q5/tfop1DqwnkMMpAdWGezCcaWONS/FKMmPEYQyqmcfdv8Nj/7w8jbg1riQBgh0aNRLg46YvAq10HNghwylNEeXO1k0tviVivOi2b3onC1+14T53iKO33EbbqvFjf48Nx2cePwcMc6LgsAAEsimkRVDIY7yKEZNyQqEe+bUNtKFOGY9Dw28gfcKEb1zaM85B5MdTvT6v8fpls7BoBD62y8FWi3+vp65n4EoQz7rkNvVV9fTyzxIrFt19dTztMmA9fNbgyZT8tzhBR8id3oUqINn7Y3C9cwhnovsTflMQL2I/Z3Ik+b9jZ2CYHIbdbL9wEgtGf9C4C6lxKD7p2QvqoC4s11hLzDhFeu2vW/xhxCqcmPEZpEmSKOBgDZwnQBEPsDy37F/PZY2QFLGOUqKPPb8LCcLGrf6YJBf/cBwcLsE3fup54NAraFauBQm9yvxTPeEMf8lO5AuVuiBMMkzuEliLaRYJSKHkcp7zBp5a+mJf9ilKGGJOGAsmv6sMn+Atra9NmygYdB6cQA24TQw4936sNkUcWfVmyOIGJ4MGBBVYIZVkAFWk42Oc6OFxCJK3TJSepzi21t1pLA262oPdA6Ti++Fx1CWFBz2GjnR5ViFOI5zuBIxYkou3oOVVYcyTwlD2lgGzgesZIfPWT299Mslv+0vEcdpzAyHculPOo4g5HpbFA+IzhZN39ESUWxkIcaOXIkX7xeHqRjNPiP5yIAKOdAleWevrZ224HXCeTj+/mH0GnQ0UXl5VK6BVH7Wn15N/G1ewX55V9wuP3XlT+tpKEnt5cUfOf2SaT88V9RXC0v0+IBROX+otNch+0mrNZeUvA1/hWk2aNxo/Io3XAiWpLApFbzEg3xJAsFKLk6sNI7P2RBJyrg3AMk258/FM2QPN7VpcZLJEhy0kMqzl/l5kX1BCdaxK/hVpCtqASE9TVGAABVmliS5Dsoq7ngT+8lYYTiUq+StOAXU1xxEX2KyH6iWJIxhW7Xht5LLENVJbhI740Zz6uz6fwN2am6XgiK7cj0dS/cNvFodiXaQl5M7k7kcGqfdUilNbYgyeoMstg/pHYIJSadR62FlEa3JQ2tYtX4xwiYFsHuLxBwJxpaQ9ju9PNUxeLUnZPgq6x85OkimRFzbESxlajxOTIcDoxDPcag/Uuyn2tppwlEfXJP5jmeBHk1ys/U9y+vSJo92uKGX5DK1vGU5NUAACBkzLAEBGHdAmmOFSSYnoH3slEJDOolb9+lK2FwtJl+vwF7fIIjH4rLCv4FB+v7KhCAyfyjB6x5h3/JlfHtKRxKcJrHz6panM7zz8Lr3vnkydfv+lvGNAj7iQFwOrlDwXmzj6ed3JN/Pwp3ROQZZMt8UCsTb6kvhUA02QlKNE/fARTdMQZqHA0hr6v+sKOQsVlfKWPMFiSEzUNMsSTjdmi1Iy7oxOnC2hJGg6xUMd3ZgzgSzSaWepQ1QZ+W7PMlwpvDYtRAMGtimh+woEiTZWM1agzdCdTfLCfdnhiwUCAXNwAAQB3egImKKypTxuNSdFWcSV1q8cQoKYz1n4EhT4SRRJ/Y/c5sAUJMqCUAhNl8eLHUriIJNP/hn80mbHaMcr75tLNDIIpdO3/5jxDb4fND0BBVV4KAGud/ju/1APOR89YY+G5h2E4kJIFfqIeBt3qABDRrkA+R027fznxHqrgGqO0dC3GC+HYRo/H9nQgeQ/cHPTF5KyoOP3fsimwQYsnN4dC+RJLXHDPnJzgAEN4EE734kojZ2uc0pmEBqkGndMyp5SWJZWYSs6c+oHwMmYgyVUBASQtPJjOXNTQf3909FP/lwIO2Y03oHU2twQ7VVSkeDXaoadTyn5b/sB8+VHP+o3A/UpBbNKVRrQcAgKJLilbRF4rmSYT55kMLV5Vg4fx57Mfm5lHKwZKFr3O9yg5AaVt0DRC29xfanhxKzgGgF93tbeSkqH3lKhHQdayAl1C3RfitkcxB9ppvdUA3V5eChdnDKCr2MhkNqPUlNepoZmFxmh493CR4bRM0oCfpJFrsPU7RouzhBAOAS+k46lRnXmVg9bASoyqDqkePXbtY7xIuuIdRbFFR7RKWOIHhBfcwAIuDbCydwCyOoPqZGpR2YmhS9jCAivC+e6xfhKvt0YNbAGDpIuF2GkZK1P2oiin4fk4elAlsYlrOizlApjgNqATOUtAEtLeGkxVFO5eaGfEn/NsgCchm8z+vY9QKWIl1U/Ab0lRxzLDZSSQ1UGZjSoaw2/tT2qSNQUGqjhI7kSgulsTxGH0BDJ1YkJJ05pq4ENSDRXScDAmhqAeNvoKmLlUbyJC81wBLjAN6rxzVCi46rqQ6pFmyiSgl6E5N3ef7XllOc4nDJqD0+B1WSMEXWlAtFNipUyAU+tSPPj7Zhrdej58AshcvQZnYaAiL7LiUJiFXS3umim3OtYL/2Z1/ZLFXisZi5yZDWbLXVWl1FacklmH3z9qUSQaZAG1pyloDmLK49wOk/lSfHYCjPQfXHxuAQy6cDOOT7Z76bVgkcYN9pfG/HACcTXPRJFFLc1XMjiG85VnamZUktpOKwG+fpwPJLnXqJI1NdnHRBIQiAFiy+XsH4Prnx52ksUul8CCTRPXp9f4UZ4/SjfPmGI7VCuR1TSc111fooXq/hDlc2ojea6CdKgHQXTiCaN0dkJbzq/zdFvMqfI9VZEzNiGy6S5kyn5kfaq1boK7PX3NxHtAICgpvIu2Ry6NAtcUmLs4D7XoUVSxAPjmv8IDvGQxOjoINGZLGtwcdvPjihnMOhWNmghY/66uxxRnExUmu6dX+DDigNAXAsCcfTSpxICREZlv7HZjNe4m/gQ+wrPP2y+nkheVitMyMBKEbbzB+JlOvn1IDALl/5nykT8kqml1Y3mtmJIhWKk/hbd0+AMg6jUXzdIQ08C8b2VvX5ZSjg9KWsDQCyFWk/riUCEDuD3H1iGlzevvTRYF49arYIk8FibI3wPao5tLRqndE4FmThRFyJqXgG7Wl9mgAAFCNVborLbOUXuXRx3DBXOQDk9gvHPvmAACLvs0cUpn2NEWvh1C3/cQAy3GZJt9v8F/3Dd+51BUumItxHxu8Z0+eFuCpy3cHuMf3NnPYQ1Rt5TTN2SmvUXOvbHs00zwbzs8Z37C3aG4+wdOvyVkSRL6gXCrA+oOiHzOH3uyh8uFmcZXqMijbMZeqLU3ZL1isTQGAD1jpZa/kXikNfjPv4xmhZl7dBlU/OaFa6i1zJ6ZZa6WYw5xbtjqFkXZ+DubyujkspV3uDbZM7uu1MPvGX1hwr4/TNRF80Nwop1l8P/84NNaBwVE1g70HapCy97RnRR5z32JwYEVrsEtiNG8MXJ9giqpjeoJHSZIUwU3Qb/URrYKgJug4TiSoqqpt22GoKNY8HAW7I7qaNo/cYFnBMpIkCRqOOMZzoapYJqwgsCxFMAxDW1QVjAg6RHuOE8lq5DiapsVx7Ap2u91E1BPUEZF8akqUNsrf9vOU+yZhcFrB5RmMLTSdAcBU44NHP/HAcExv1wqOGBskM2Ji0LyIacHDEshyf9Rum8OjXm8wBY998aDXOxqa7faoL8tijMQIqRGSkDgW0yEmAwmF7xvGdhz4oeUDNMiXf95K+X3L2fR4xhwUscctB61NbAFTWgRgt3c82opTfr4bRsd6MSYtwqT1V2w7bO0lLLxIx0oa4aqitmgohkixLEtsfTQsahThjU1qa8/DOtoXNAxjF5j2NcUFaJiTcznf+UNhxTcfAjvBqNmRLFc/Oej9EJRkknq2bpRQPyppZ2uxTiIaRcFN5SEflx+9mEbOg09wgsHUSeLJJ61oczAE/egix2kNroqXeCjeiUcnKfh5pj6+q+okUz8CxFk0I076V6qHsJwTqx7i2bYFuhKlks2cYu2M9DOpoSPkb6SiWGhLj9om0sV9WcaW5RBdkrFAaejKG7vY2tvtJoTl19MxU1SfoIG7K98Sxj5sAuA1nzCzC9fsO0nU1TTd8miPzToHy+9nTAZNl/B+rMUO9urVYYvZ7WN7LxvpNFsaNW+K7Psu0Bv8JTzSigr77KCqKYeuwQc22GKE9004vON62JlktU2Eynbxq+8Ok8NzBEHzBl1KIevUdqAGF7fF3KBrMmEhDpCmRnua2NJYQ6PRMAz62t2t25oweyKxLe3ovOB5hbJZH3FpsZ2QU0cL+vQRH2OtWwL31eLtU+qPYJHTWTWNHme3JB9WuDCk6k2uyNlCAPv0+aVt9m8PzptTc9QsGW/dqKTWqAFLJwvDoY3pvQYs3uIQk00Ehe3AOrih7fn+MepmyqLadITHSFpz55slGyvhHEcD+BAcRGdZ7fZBtFSmAkAZNiL0J5H0utJktekBINvvghPPWeD2Kc2+u7R1CGW6ct0py0O6oxgAAGiXwjdsvccXCin4hl837z0yeMcV4oDSbJHFlpTk34867Fqtrcp9lCH1AUtjxk5Q2oj9tbaqZ8+2M4dX91bu/YhmTAOpPdDsXac0p/m27a4DLX9mVyD3tSxMcQmlPvnziKZM+wBRSsvMmqDTXy9ToBFEQ/uUvGR3FwAApsx7fYeoWbVd2D5sArew3D9p6gx+vuRh1hRSGmFJlmgIOGQPbMGWkstpHRZzODfFL5AMzs1FE4CLuVQJIqsFLYFu6MSHXKvuofWheRL/EmSjpwJGe6LOpgvosm+4m5TkEDiARQgdhHk6goewsXlG+RfIDABQxWiuC4YsY7R2wmYITDKoeR63IHIxCGvOgI4AUD2PVzvNxZpnC9t2ECMY5wFWF6HLPAsGxmMbQrkt6T4K1O58ohwa8grfuRuFJDDQDMohoWL+j18QVe2KxeZ06hdbT5HFAV7QkxsNcC5s9CIApMvpFlU2PmtmPshPUMW4oJlv13DV2VBmcYEZDOC+Bi4gJAhgKONjmLrZqpkv2/ZEt9oARJvq1OWmW5RiOlMO6uz2zCbzmN/gSdhm+nkheffSSToscNGpSqjq3E1MjnY60atkS95V+LG0o4lta8eIFsE27Qoip7UYQOkPYY4oi1/BWK5UxSmdl6KphIJi+wP5l3y6qV8BAFSbRxw9AtrRCSRu63OCpianfhVx9NSPL6fjrA/LTSe3p/LsULUmk/ow4bNeuWvzJ5TMYnT/J0j2YwvFvo7QRo8JaKNN9ajD9lAqxWcfwaA47m+y2E1Khm9BrXG3JCWV0KmTObij8fwFBiYakYWdmGTHCUBrT8576gOyPE+k1wE7USBnd5pqKGxGOltAKLV1bLDE2k5A4uckkjpRQF99IEOkyeLOI/UByxmn8NtSnx3A4SCgqIJOne5KCyyESspH38HrY1crTvWcprQnUWJNLnDdmQRlNQg4clrKOj8ChGkp+J3o2RsAAEaQWr3BFNsgwy/49XsDQBBl7J5vAKDrxOJeo+kTRXSCmf1dmS0CAJE3JvhKoV1R20X6LfUdDJ1WICmwNQBouqTgG7mHcEDCxBqsqSOc83ExUh9gcxAUSSgqZIhLQVAiVa8pwxJDMLcJSn8nnYdM9XBxYdxcRzB0IYCvHCw2ORmct2B8NC6abDDffNZQqdm/AnAsmMR8xGInCAAsdoxiPmrIKEXLcL5qEbG4Bs4+Hxb6HlVNLQWmVU4B1eZJyatHmQv/KIPZ5q6/Aa1zPqRIWwpPnchRk7maz18+HznPxiWTBvPN92BNGMzbil8NFVzXQ0OV7MkmxnrVmNadi7aY2ULOdgzvabruBDVvvoL1+YmlrJef7vwcnKTGrWR+uWKAD4BA3eMLNdgQgZOIAxlD6PbkZws2mu44n+cPztuFJc+Sv3prCNP9AtRtTptSjVqe+pVwp4aCWca/m6DhjxewPs8zd5LyVyn4LpjjSJ3YEC+AN//aFCZKfOq7ILLoArYijrc0S3aS4LXAiX+LIRUWzclFES716MDun+noDXm1ArsZuZoDHuugzRZNjao2AioAe31d5hm0fBGmaoRis8mTEbil/ghyfiek9x34O8wISsdqUwJrcJPylN3dwjdUngOk/mDnUfIvaRA0OUlQ+H5NBuCCDvnogsHQ5AZZZIh2Y+GCoUnVZCdFI+zCm3OTXmuTWTgKAGzKJrM46v6GLciJVSZBk50IAFVuwSpNbqKD0TQG0nO6geBQLnhzTV69FkzmX6PJAo7Cc2qyiiL4NZp0zHzGo/Hj2IHQllCsgFMkQxR7PHuJHKXxpbjt87KaXVzKWNv5DSHS1IVnrtqDD1IgKQbH2fjpIhcrCXagCKkUaIleIYD9yXY1lpKwJs+KkciBvTVxruRp3tdsAGsyEJsSKchEcaHIgXu/YsVCAvoXcex9pf6koo3l1QQfqY8viatKQWMZBCfIUOOSxrJYlvPJMwwnx3HSh05d8wGiHPwL1ALUQm3lVI14Qav46DAwYZ/8BbUib2sBcV37WgLbet92Ds7M4y8D7yUwO84/BV/jX5uzuFaxrU79y4U5omqK0T2xFgCgtlaypzybw4vks7HldI+rVrHr2NKESbAO2s7zX+C97RJqfbDfcGtP/9VACn4jjL1w5Nq7gmCpT+b6w5xS++bk0t13iaa2Gw9mrDXnRJtCKSkFP6jMvvC8NVpy3asbQG1bWG0qp6xDaBpD7U/7PLmEkUKik0jvT86ZE+f9KP17y4Iim2RUh3oY7YyP78wkjeQAl0qDbt+VRrKdAWw2BpMrINgzqlh2JnHkSHNILv+o3Pxv4yBjBhmL/C8Zkqa+iNouOmjkjRshSrumxlVZhKMOiMaoyZb6/p28TSZGSdW1YuVUTqO3i/bjecZvvAHAAomvp+UwoQHSwNDJvp/Hgpm64y0F3/CbaWcDgAwAUXJdAGF7l47Ri9x3RsirHwgAcjGdsM7O+DBjnGprTx+P3lezB1Xje8evrE2toyWXEttTWi0COEw2pSjroo7WIkiZU6YucXamjK3ZYgmsx/YvFruSuBi5FuPwme1ViJHhcTPxIiLBWqzLRogwTPoxTuPV7ON7PyNp9MjijVB7V1Mtp0nNDg968ZJjPNy4QRsd6ARKbWOFbU/BCZba40UJ3dpw6KuBahdRtG4dZdH25ntbn+d2o2pGrI1LbQBYBG/QJgK+yifgaKQ+ANahtNrarPMjQLXsBN5LXvLj1+FXeOWGrjYqmNX9yp++eBKugIN+jkWSt8ZVtsmrRYM48TYc2HBpESTa5MnyohaRa5mpS9+ZCZcf4yAkFuOHzfsTWBOQW9GreYke+sv6VunisCGch+e97ONTpjDb2oeDO8bwisEhRwX/7amqfYAZ43x7VyDJflyYghK4sjoskm7KzNSlDf4XznV512HOwBuLspL1KfXt9zm4eZSCpk1QxgDqtyFNbcemXW8MBYcSk3wqU1k7P1J/1Nez8yhV0EAt5iPRqa4XrRvX/Eh1QZpsNEemZA5nl3x0d/fpYlegpowSdMZQtpalG0aFF/ZW20ISMYA2a1L6cOwrBA5XTDQt92evV3508TGmBur2nBHjB/9f6hXYGjDAgI3/MDYAANDyn5b/XDom8iKEoeqzNX6apj5sLTzsUDnYEmjVZAF2rM5WwJ62/Id1qEEgqAGD2/Kflv+0IAUAAA==)

Last Published: Mar 26, 2025

[Previous Topic
I3C](https://docs.qualcomm.com/bundle/publicresource/80-70018-8/topics/i3c.md) [Next Topic
USB](https://docs.qualcomm.com/bundle/publicresource/80-70018-8/topics/usb.md)